• Samuel Thibault's avatar
    Console keyboard events and accessibility · 41ab4396
    Samuel Thibault authored
    Some blind people use a kernel engine called Speakup which uses hardware
    synthesis to speak what gets displayed on the screen.  They use the
    PC keyboard to control this engine (start/stop, accelerate, ...) and
    also need to get keyboard feedback (to make sure to know what they are
    typing, the caps lock status, etc.)
    
    Up to now, the way it was done was very ugly.  Below is a patch to add a
    notifier list for permitting a far better implementation, see ChangeLog
    above for details.
    
    You may wonder why this can't be done at the input layer.  The problem
    is that what people want to monitor is the console keyboard, i.e. all
    input keyboards that got attached to the console, and with the currently
    active keymap (i.e. keysyms, not only keycodes).
    
    This adds a keyboard notifier that such modules can use to get the keyboard
    events and possibly eat them, at several stages:
    
    - keycodes: even before translation into keysym.
    - unbound keycodes: when no keysym is bound.
    - unicode: when the keycode would get translated into a unicode character.
    - keysym: when the keycode would get translated into a keysym.
    - post_keysym: after the keysym got interpreted, so as to see the result
      (caps lock, etc.)
    
    This also provides access to k_handler so as to permit simulation of
    keypresses.
    
    [akpm@linux-foundation.org: various fixes]
    Signed-off-by: default avatarSamuel Thibault <samuel.thibault@ens-lyon.org>
    Cc: Jiri Kosina <jkosina@suse.cz>
    Cc: Dmitry Torokhov <dtor@mail.ru>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    41ab4396
keyboard.c 33.6 KB