Hotkeys and other things that impinge on client-side events ...
martyj19 at comcast.net
Tue Dec 14 10:23:32 PST 2010
"designed and implemented a lightweight window server for a major series of products" eh? You're a bit too modest about that particular accomplishment ...
Been there about deliberately take a couple of years off since retiring as a way to rest and recharge.
That was a nice writeup by Stefanos A on the pointer side of things. I feel like the keyboard could be the mirror image in a lot of ways; like coalescing all keyboards onto the "core keyboard" or not. For example I have a Logitech Access 600 and I found to my surprise that some of the multimedia/function keys are on a separate evdev device from the main keyboard keys. Also I have a USB headset and it has some controls that show up as a keyboard. Also things like the lid switch and the power buttons show up under evdev, which are events you must be getting if you are the power manager.
Also, I would rather see engineering expended in working toward having Wayland never crash, rather than on some elaborate scheme for reconnecting if it does. Before someone says "it's software, it will have bugs and crash", there is plenty of software that is expected never to crash, and almost never does crash, some of which I have worked on.
But on to our featured topic, and client side vs. server side event processing ...
I cannot see a design where there is not a central authority controlling signout of hotkeys. Right now this is done with passive grabs on the key. We cannot have three different applications thinking they are in charge of responding to the "dim the display" key, or the "lower the volume" key, or the "bring up email" key.
Then there is the matter of the "num lock" or "caps lock" keys, which are totally integral to how the event is presented in the first place and there is a single system-wide idea of whether caps lock is on. The idea that there is a "keyboard language" locked and that I can do a user action to change system-wide is fairly ingrained into people's idea of how the system behaves; I can have a US keyboard, or a Greek keyboard, or a Russian keyboard, at any given moment. So there is some unavoidable amount of system-wide key mapping state, it would seem.
Hotkeys (which we can define as key events that are swallowed at a level above having them delivered to the window with the input focus) are used for
- these function key things around the edges: volume up/down, backlight up/down, launch commands
- window managers often have key bindings that do things like launch commands or do window actions like fullscreen enter/leave
- things that are critically important to people with accessibility issues, such as "bring up the screen magnifier"
The whole idea that you can control the system with no pointer, which again is critically important for A11Y, is part client side, like how there are keyboard equivalents to menu items, and part system wide, like the examples above.
More information about the wayland-devel