Preamble
This is quite a long post but I, like some others on the forum, feel that full keyboard support is important for the way we've been playing the game and would like to be able to do that in the future as well. Instead of arguing about the merits and demerits of mouse v.s keyboard control I'll instead propose a system for keyboard control that could work in a mouse-based environment. It's not a perfect system in any way but it's mainly for demonstration purposes to get us and Toady thinking about how full keyboard control could potentially work.
If you spot any gaps or find these suggestions unsatisfactory, I'd more than welcome any countersuggestions or modifications.
The cursor should really be the least problem when it comes to usability, just have it activate when you use the movement keys and deactivate when you click with your mouse. If you don't use the movement keys you won't even notice there's a cursor system in place.
I see menu/window navigation and control being trickier but it should be doable assuming menus are grid-based and directional movement not being too hard to implement.
'alt' mode
The 'alt' mode would decide what the movement keys control. If it's set to mouse control it would control map movement and if it's set to keyboard control it would act the way we are used to when in placement or designation mode or control movement in windows. The following suggestions will assume keyboard control is on.
There are several options for how the 'alt' modifier could work, either requiring it throughout the movement usage with a setting for which is the non-'alt' mode, or once initially together with a movement key to activate, or as a one-button toggle between the two modes (similar to factorio's toggle between showing and hiding outputs/contents).
Map navigation
Here the usage of movement keys would simply scroll you around as normal the same way it does in the current game where a fortress is unpaused and no menus are open. This would be what all movement keys controls when in the right 'alt' mode.
Mouse control
Clicking anywhere with the mouse during keyboard selection would pause and override keyboard control, the selection being remembered when reasonable.
Designation/placement
Using any of the movement keys in designation mode would activate the cursor with our beloved x or whatever other marker is decided on. Placement is fairly obvious, just move the item around.
Look/inspect
This would need to be worked into the game to have a cursor that functions like the mouse hover in the current state of the game. Either through a hotkey or through movement keys with the alt modifier while in map focus.
Window control
Open/close and focus
When you press a window hotkey, if the window isn't open you open that window and if it's open but not focused you would focus that window. There would be a discrete highlight on the border of the focused window to show which window is currently in focus. If it's already open and focused, I'd consider just removing focus from the window to the default map focus. Removing focus should also be possible with 'esc'. If you want it closed you could use 'shift' together with the hotkey for that specific window regardless of focus.
Window navigation
We start with the top left button of the focused window being marked without highlight and when we use the movement keys to navigate through the grid the highlight would appear. 'pgup', 'pgdown', 'home' and 'end' should also behave as expected.
Tab switching
'Tab' to scroll right through tabs, 'shift+tab' to scroll left, shouldn't be too many tabs to go through in most normal cases.
Sub-hotkeys
I'm assuming we'll still need a plethora of new hotkeys to remember for specific windows/menus but that's just part of the Urist way of life. Obvious examples are designations and buildings, and these are examples where using your mouse to navigate is in no way quicker or simpler than pressing 'dd' or 'bwc'.