[PATCH, RFC] Add support for keyboard hotkeys

Danny Milosavljevic danny.milo at gmx.net
Tue Feb 7 15:16:50 PST 2006


Hi,

Am Mittwoch, den 01.02.2006, 08:34 +0000 schrieb Matthew Garrett:
> On Tue, Jan 31, 2006 at 09:58:27PM -0500, David Zeuthen wrote:
> 
> >  1. In addition to putting the key-type in the detail of the
> >     ButtonPressed condition should we change the property
> >     button.type to be a strlist so applications know a'priori
> >     what buttons it can expect? It's breaking ABI but all our
> >     button handling is rather recent so I'm not uncomfortable
> >     doing this since we're pre 1.0... Obviously if button.has_state
> >     is TRUE it'll only make sense to have a single element.. no
> >     big deal I think..
> 
> While that would be nice, there's no real way of doing this with PS/2 
> keyboards - the kernel claims that they support every key. USB ones 
> would be easy enough, I'm not sure what the ADB situation is.
> 
> >     We can actually match the 2nd HID interface by using fdi-files,
> >     how about merging e.g. a strlist property with 
> > 
> >       button_listener_keycodes = {"sleep", "0x42",
> >                                   "power", "0x43", ... }
> > 
> >     and invoke your add-on that will read these codes? Suggestions
> >     for a better name than button_listener_keycodes welcome :-)
> 
> So just export the buttons that we actually care about? Yeah, that would 
> be easy enough.
> 
> >     Also, can we do this for PS/2 keyboards where we can't match
> >     e.g. USB vendor ID / product ID. 
> 
> We'd just export them all the time for PS/2.
> 
> >     Is it even reliable to do so for USB keyboards (e.g. consider a
> >     multimedia keyboard with a Danish, English and Russian layout..
> >     vid/pid may be similar but are the keycodes for "sleep" similar? 
> >     I think they are.. I even think the USB HID protocol might tell you
> >     the layout.. should we merge what layout it is?)
> 
> USB should have standardised codes.
> 
> >  3. Should we restrict the merged keys in 2. to "power mgmt" related
> >     stuff.. E.g. should we merge "web browser -> 0x44", "volume up
> >     -> 0x45" and so on?
> 
> It would be a possibility, yes (though the list might start getting 
> large - as I said, for PS/2 machines we'd have to export it all the 
> time)
> 
> >  4. If we do merge e.g. "web browser", "volume up" should we emit
> >     ButtonPressed events? I probably think so.. these are hot-keys,
> >     sorta, at least that's what we're trying to abstract... [1]
> 
> Sure, that seems reasonable.
> 
> >  5. We could let e.g. gnome-settings-daemon use the bits discussed
> >     in 3. and 4. to automatically configure key shortcuts, e.g.
> >     personally I'm pretty annoyed that I have to go to the "Keyboard
> >     Shortcuts" preferences applet in GNOME to configure "play", "pause",
> >     "volume up" etc. etc.
> 
> The biggest problem here is that in the PS/2 world, there's no standard 
> for what scancodes these keys actually produce. The de-facto one is what 
> Microsoft use, and even they've overloaded that between different 
> keyboards (Office and media keyboards can use the same scancodes for 
> different functions). That's much less of a problem with the power keys, 
> which tend to be much more consistent.
> 
> This is easy enough to fix - the kernel allows new mappings to be 
> loaded. However, that's orthogonal to X's keymap settings. Hal would end 
> up using the kernel's keymap rather than X's, which may cause user 

Something strange: What was the use of X having it's own keymap /
keyboard driver again ?

> confusion. For now, I'd be tempted to keep the PS/2 situation simple and 
> look into a more Utopian keyboard setup solution in the long run (eg, 
> allow unprivileged users to set the kernel keymap through Hal and then 
> have Gnome or whatever use that when setting the X keymap. Slightly 
> awkward, in that we'd need some way of letting the system know when 
> users are being switched between)
> 

cheers,
  Danny




More information about the hal mailing list