Repository metrics
- Stars
- (9,264 stars)
- PR merge metrics
- (Avg merge 6d 5h) (292 merged PRs in 30d)
Description
Is your feature request related to a problem? Please describe.
We have a major issue with keyboard/hotkey usage, one that merits several issues and a project of its own. However, any discussion of optimizing keyboard layout runs afoul of different people having different usage needs. For example, on the US keyboard, it would be well worth considering reserving the ' " key for movement functions and remapping the current ' binding to another key. However, on non-US board layouts this usually won't work out as intended, and instead is a pointless interference with someone's motor memory. Many other layouts that are reasonable on US boards are bizarre elsewhere. Further, some keybindings are useful on particular setups such as laptops, but become at least a waste of valuable space on a full sized keyboard.
Solution you would like.
We should have the ability to save separate keybinding sets and cycle through them in the keybindings menu like we can with tilesets.
As a default I would suggest we have the following:
- Old-school CDDA layout, ie. exactly what we have right now
- US Keyboard - a new default setting that remaps several old hotkeys from the original layout in order to improve useability. How exactly to lay this out is worth its own issue - see https://github.com/CleverRaven/Cataclysm-DDA/discussions/59678 for discussion and idea bouncing
- Vimkeys - a layout for laptops that uses the letter keys as directional arrows (as we currently do in the default layout) and probably migrates some of the hotkey functions that can be quickly accessed on a larger keyboard into submenus
Later we can have people add their own regional keyboards as well, and we could consider alternate keybinding sets if there is a strong incentive to include them, but there has to be a rationale for it.
Maintenance considerations: My main concern with these is that someone is going to add their own custom keybinding layout, and then it won't be maintained and important new keybindings won't be mapped to it. I recommend that a phase 2 addition to this issue would be adding a list of "Core" keybindings, and a CI test that ensures that these core keybindings are present in every keybinding set that ships with mainline.
Easy export: It would be very nice if you could simply press a button to save your current keybindings as a keymap of your own, to upload and share or transfer to other savegames or whatever.
Describe alternatives you have considered.
We can currently save and migrate keysets, so in a way we have this, but there is no easy in game manager.
Additional context
I think having this would free us up to completely reinvent keybindings without really pissing everyone off, and I think this game desperately needs that. I will post more on the subject soon.