# Description
Plasma is one of the most powerful desktop environments in terms of GUI settings and it allows to e.g. configure not only one but two sets of keyboard shortcuts per action.
However, such configurability depends heavily on organization and discoverability in order to improve User Experience; hence why System Settings required a redesign. Add to that the fact Plasma closely follows the paradigm of always showing keyboard shortcuts on its menus, thus making them discoverable, as mentioned before by @ngraham in his blog posts about UI design.
This redesign should also be done with keyboard shortcuts, which are numerous and whose defaults have been criticized in the past.
I propose an extensive re-evaluation of keyboard shortcuts used in Plasma by i) following RSI-preventive measures as much as possible, ii) using canon keyboard shortcuts whenever they make sense and iii) comparing keyboard shortcuts between applications, DEs and OSes, possibly creating a toggle to enable Windows, OSX, GNOME and i3 keyboard shortcuts quickly on Plasma.
One thing of note, however, is that while this proposed redesign takes heavily into account what users do and their experience with Plasma, this should **NOT** hinder the freedom of developers with regard to keyboard shortcuts. As is the nature of open source, such choices should be **proposed**, **justified** and **decided in a colaborative manner**, especially since developers are oftentimes also users of their own software.
# How we know we succeeded
* Users no longer complain about default keyboard shortcuts
* Keyboard shortcuts are encouraged but not enforced and they are easy to find
* It is easy to transition to Plasma in terms of keyboard shortcuts
* RSI-prevention has been optimized
* Keyboard shortcuts are consistent among KDE applications
# Initial Guidelines
I believe academic reference materials have more prestige/authority for following RSI prevention, and one I'm particularly fond of (despite being relatively old) is this material provided by the University of Nebraska-Lincoln: http://rsi.unl.edu/
As such, I have devised some initial guidelines to follow in order to standardize keyboard shortcuts, as follows:
* Using both hands to do a keyboard shortcut is preferable as it prevents RSI
* Using only one hand is okay, but it **shouldn't** lead to excessive strain
* The key combo should fit the position/format of the hand
* If it's possible to make a combo with one hand, the maximum distance between keys should be no longer than between the pinky and the index OR no longer than between middle finger and thumb
* The combo should be preferably a standardized one (Ctrl+C = copy);
* If not standardized, it should have a semantic association (in Windows for instance, Win+E = **Win**dows **E**xplorer) or be semantically similar to other combos (Meta+Up and Meta+Down)
* If not standardized or semantically pertinent, it must be physically close (Alt+Tab, Alt+' );
* If not any of the above, it should at least be easy to memorize.
* Arbitrary keyboard shortcuts with no reasoning behind them whatsoever should be avoided whenever possible.
* The combo should preferably have two keystrokes to optimize the number of key presses while also not being accidentally activated
* F1, F2, F3 and others can of course be used with one keystroke as they are physically distant from the "home row"
* A modifier key like Meta can of course be used with one keystroke as well since it became standardized like so
* If the key combo is used extensively in the desktop environment, it should follow the aforementioned combo rules (a good example is Alt+Space = krunner, which is one of the most powerful applications in KDE that is really easy and quick to get used to; in GNOME, for instance, setting Alt+Space for the command run dialog is not adequate because of how GNOME encourages usage of GNOME Overview)
* If the key combo is barely used, it should have three or more keystrokes OR be physically distant, so only intermediate/advanced users would know about and access it
* However, **avoid** three or more keystrokes whenever possible
* Semantically, Ctrl should indicate control/management, Shift should indicate transfer/movement, Alt should indicate mode change/alternation
* It is possible to establish semantic relations with the use of the physical placement/format of keys on the keyboard
* It is impossible to completely avoid arbitrary combos, but it is possible to minimize their use
# Tasks to be done in order to achieve this
I'll create a blog page elaborating on the use of various desktop environments and their correspondence to their respective keyboard shortcuts.
1) Comparing different desktop environment standards
— Explanation of workspace dimensions: https://rabbiticlinux.wordpress.com/2019/10/13/fantastic-workspace-dimensions-and-their-limits/
This is relevant for the contextual analysis of keyboard shortcuts in each DE later on!
- [ ] GNOME (done!) https://rabbitictranslator.com/wordpress/index.php/2019/10/14/analyzing-gnome-keyboard-shortcuts/
- [ ] XFCE (done!) https://rabbitictranslator.com/wordpress/index.php/2019/11/10/analyzing-xfce-keyboard-shortcuts/
- [ ] MATE (done!) https://rabbitictranslator.com/wordpress/index.php/2019/12/02/analyzing-mate-keyboard-shortcuts/
- [ ] Cinnamon
- [ ] Unity
- [ ] Pantheon
- [ ] LXDE
- [ ] LXQt
- [ ] i3
- [ ] Sway
- [ ] Windows 10
- [ ] OSX
2) Take into account the individuality and independence of developers with regard to how they want to implement keyboard shortcuts
3) Decision-making regarding standards
- [ ] Meta should have its semantics assigned to system/shell/global shortcuts, as decided by the [VDG](https://phabricator.kde.org/D24033). Which currently existing key combos should be changed?
* The vast majority of KWin keyboard shortcuts is actually not Alt, but Ctrl. Most notably those with the F1, F2 etc. keys. This is due to the high number of actions being activated with these keys, but maybe they could all be used with Meta?
* ksmserver uses the standard combo Ctrl+Alt+key that is used in other DEs, such as Ctrl+Alt+L for locking the session. Should those be kept? I'd say yes.
* Standardizing several KWin combos to Meta frees Ctrl+Alt+key combos, which can then be assigned to applications by users. Windows for instance allows for the creation of keyboard shortcuts to open applications, but the only combination that is safe to not conflict with Windows combos is Ctrl+Alt+key. On the other hand, some users prefer Meta for opening applications, such as Windows-based Meta+E and i3-based Meta+Return. I've also seen Reddit users switching Ctrl+Alt+T to Meta+T., including @jensreuterberg 's. Already standardized combos I believe should not be changed, but new ones can be added (as was the case of Meta+E). See [this reddit post](https://www.reddit.com/r/kde/comments/b8kjbb/which_keyboard_shortcuts_do_you_use/) and [this one](https://www.reddit.com/r/kde/comments/98211z/which_kind_of_easytoremember_logic_you_usually/) for interesting usages. **I've confirmed that Meta+first letter of application functionality is a standard in Xubuntu, which provides a consistent set of keyboard shortcuts.**
* Are tray combos (Alt+D,S for instance) considered shell shortcuts?
* GNOME's plans also include setting Meta as a system keyboard shortcut. It's in their HIG, more specifically those of Florian Müllner in the comment section.
- [ ] Should tray combos (e.g. Alt+D,S) be changed/removed?
* These combos are broken and not immediately clear to average users. It seems to work in a sort of emacs-ish way as well, which does not occur anywhere else in Plasma.
* There's is currently no way to navigate between panel and tray widgets. This is possible on GNOME via Ctrl+Alt+Tab (terrible combo, great functionality IMO). If there were a way to navigate through them (e.g. a single combo activates the first widget in the tray, the rest can be navigated with mouse or Tab), there is no need for keyboard shortcuts for each widget. If this cannot be implemented, then having functional combos for tray widgets would be the solution. Otherwise, these Alt+key+key combos can be removed altogether, as they do not work correctly or are unneeded given users themselves can set global shortcuts for them.
- [ ] Set of functionalities to consider in-full: window tiling, window navigation, window movement, virtual desktop movement, window-to-virtual-desktop movement
* Should all of them use arrow keys? If not, should some?
* Semantic role of Ctrl, Shift, Alt and Meta should be discussed first.
ARROW MODIFIERS
| ACTION | META | META+CTRL | META+SHIFT | META+ALT | META+CTRL+ALT | META+CTRL+SHIFT |
| Snap Windows | META | | | | | |
| Switch to VD | | META+CTRL | | | | |
| ACTION | | | META+SHIFT | META+ALT | META+CTRL+ALT | META+CTRL+SHIFT |
| ACTION | | | META+SHIFT | META+ALT | META+CTRL+ALT | META+CTRL+SHIFT |
| ACTION | | | META+SHIFT | META+ALT | META+CTRL+ALT | META+CTRL+SHIFT |
| ACTION | | | META+SHIFT | META+ALT | META+CTRL+ALT | META+CTRL+SHIFT |
| ACTION | | | META+SHIFT | META+ALT | META+CTRL+ALT | META+CTRL+SHIFT |
| ACTION | | | META+SHIFT | META+ALT | META+CTRL+ALT | META+CTRL+SHIFT |
PAGEUP/PAGEDOWN MODIFIERS
| ACTION | META | META+CTRL | META+SHIFT | META+ALT | META+CTRL+ALT | META+CTRL+SHIFT |
| ACTION | META | META+CTRL | META+SHIFT | META+ALT | META+CTRL+ALT | META+CTRL+SHIFT |
| ACTION | META | META+CTRL | META+SHIFT | META+ALT | META+CTRL+ALT | META+CTRL+SHIFT |
| ACTION | META | META+CTRL | META+SHIFT | META+ALT | META+CTRL+ALT | META+CTRL+SHIFT |
| ACTION | META | META+CTRL | META+SHIFT | META+ALT | META+CTRL+ALT | META+CTRL+SHIFT |
| ACTION | META | META+CTRL | META+SHIFT | META+ALT | META+CTRL+ALT | META+CTRL+SHIFT |
| ACTION | META | META+CTRL | META+SHIFT | META+ALT | META+CTRL+ALT | META+CTRL+SHIFT |
| ACTION | META | META+CTRL | META+SHIFT | META+ALT | META+CTRL+ALT | META+CTRL+SHIFT |
CHARACTER MODIFIERS
| CHARACTER | ACTION | META | CTRL+ALT |
| E | Dolphin | META | |
| . | Emoji | META | |
| T | Konsole | | CTRL+ALT |
| P | KScreen2 | META | |
| D | Show Desktop | META | |
| Q | Activity Switcher | META | |
| CHARACTER | ACTION | META | CTRL+ALT |
| CHARACTER | ACTION | META | CTRL+ALT |
| CHARACTER | ACTION | META | CTRL+ALT |
| CHARACTER | ACTION | META | CTRL+ALT |
- [ ] Set of functionalities to consider in-full: accessibility
* Should a specific modifier key or combo be associated with accessibility options? For instance, GNOME uses Meta+Alt for all its accessibility features.
- [ ] Could window snapping in the corners (upper left, bottom left, upper right, bottom right) be bound to some modifier plus Home, End, PageUp and PageDown?
- [ ] (placeholder)
4) Evaluating each application
- [ ] (placeholder)
- [ ] (placeholder)
- [ ] (placeholder)
- [ ] (placeholder)
5) Applying such changes
# Relevant links
http://rsi.unl.edu/
http://www.tifaq.org/articles/keyboard_retraining-junjul99-kahan&griffin.html
https://pointieststick.com/2018/12/18/on-headerbars/
https://pointieststick.com/2019/03/06/more-on-headerbars-rebuttals/
https://wiki.gnome.org/Design/OS/KeyboardShortcuts
6) After full evaluation, propose a partial or complete set of standards to XDG
- [ ] Meta for system shortcuts? (requires task 1 to be fully done)
- [ ] Alt+F1 to F4?
I am willing to put work into this
* Thiago Masato Costa Sueto ( @thiagosueto )
* Roman Gilg ( @romangg )
* Christian Hempfling ( @chempfling )
I am interested
add your name