linux/drivers
Samuel Thibault 41ab4396e1 Console keyboard events and accessibility
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: Samuel Thibault <samuel.thibault@ens-lyon.org>
Cc: Jiri Kosina <jkosina@suse.cz>
Cc: Dmitry Torokhov <dtor@mail.ru>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-10-19 11:53:33 -07:00
..
acorn/char unicode diacritics support 2007-10-17 08:42:52 -07:00
acpi Hibernation: Check if ACPI is enabled during restore in the right place 2007-10-18 14:37:20 -07:00
amba Driver core: change add_uevent_var to use a struct 2007-10-12 14:51:01 -07:00
ata Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev 2007-10-18 15:08:35 -07:00
atm Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild 2007-10-16 11:23:06 -07:00
auxdisplay
base sparse pointer use of zero as null 2007-10-18 14:37:31 -07:00
block Add missing newlines to some uses of dev_<level> messages 2007-10-18 14:37:28 -07:00
bluetooth
cdrom sysctl: remove broken cdrom binary sysctls 2007-10-18 14:37:23 -07:00
char Console keyboard events and accessibility 2007-10-19 11:53:33 -07:00
clocksource
connector [NET]: make netlink user -> kernel interface synchronious 2007-10-10 21:15:29 -07:00
cpufreq Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/driver-2.6 2007-10-12 15:49:37 -07:00
crypto [CRYPTO] sha: Add header file for SHA definitions 2007-10-10 16:55:50 -07:00
dca I/OAT: Add DCA services 2007-10-16 09:43:09 -07:00
dio
dma I/OAT: Add completion callback for async_tx interface use 2007-10-18 14:37:32 -07:00
edac Drivers: clean up direct setting of the name of a kset 2007-10-12 14:51:02 -07:00
eisa signedness: module_param_array nump argument 2007-10-14 12:41:52 -07:00
fc4 Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2007-10-15 08:19:33 -07:00
firewire firewire: fw-cdev: reorder wakeup vs. spinlock 2007-10-17 00:00:10 +02:00
firmware Driver core: rename ktype_edd and ktype_efivar 2007-10-12 14:51:12 -07:00
hid HID: fix HIDIOCGRDESC memory access in hidraw 2007-10-15 08:12:00 -07:00
hwmon Add missing newlines to some uses of dev_<level> messages 2007-10-18 14:37:28 -07:00
i2c Add missing newlines to some uses of dev_<level> messages 2007-10-18 14:37:28 -07:00
ide ide: set drive->autotune in ide_pci_setup_ports() 2007-10-19 00:30:12 +02:00
ieee1394 ieee1394: ieee1394_core.c: use DEFINE_SPINLOCK for spinlock definition 2007-10-16 23:59:59 +02:00
infiniband Add missing newlines to some uses of dev_<level> messages 2007-10-18 14:37:28 -07:00
input freezer: introduce freezer-friendly waiting macros 2007-10-18 14:37:19 -07:00
isdn Add missing newlines to some uses of dev_<level> messages 2007-10-18 14:37:28 -07:00
kvm sched: guest CPU accounting: maintain guest state in KVM 2007-10-15 17:00:19 +02:00
leds Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild 2007-10-16 11:23:06 -07:00
lguest Merge branch 'xen-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen 2007-10-17 11:10:11 -07:00
macintosh fix adbhid mismerge 2007-10-16 19:04:49 -07:00
mca
md md: make sure read errors are auto-corrected during a 'check' resync in raid1 2007-10-17 08:43:03 -07:00
media Replace __attribute_pure__ with __pure 2007-10-18 14:37:32 -07:00
message I2O: Fix "defined but not used" build warnings 2007-10-17 08:42:56 -07:00
mfd
misc Driver for the Atmel on-chip SSC on AT32AP and AT91 2007-10-17 08:42:47 -07:00
mmc mmc: at91_mci: cleanup: use MCI_ERRORS 2007-10-17 21:35:10 +02:00
mtd Add missing newlines to some uses of dev_<level> messages 2007-10-18 14:37:28 -07:00
net Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6 2007-10-18 19:31:54 -07:00
nubus
of [SPARC/64]: Consolidate of_register_driver 2007-10-17 21:17:42 -07:00
oprofile
parisc
parport sysctl: parport remove binary paths 2007-10-18 14:37:23 -07:00
pci Get rid of unused variable warning in drivers/pci/hotplug/pci_hotplug_core.c 2007-10-15 09:07:58 -07:00
pcmcia pcmcia: CompactFlash driver for PA Semi Electra boards 2007-10-17 08:42:48 -07:00
pnp PNP: add debug message for adding new device 2007-10-17 08:43:04 -07:00
power Add missing newlines to some uses of dev_<level> messages 2007-10-18 14:37:28 -07:00
ps3 Add missing newlines to some uses of dev_<level> messages 2007-10-18 14:37:28 -07:00
rapidio
rtc Add missing newlines to some uses of dev_<level> messages 2007-10-18 14:37:28 -07:00
s390 unicode diacritics support 2007-10-17 08:42:52 -07:00
sbus [SPARC] Videopix Frame Grabber: Convert device_lock_sem to mutex 2007-10-17 19:40:31 -07:00
scsi advansys: depends on VIRT_TO_BUS 2007-10-19 11:53:33 -07:00
serial serial: turn serial console suspend a boot rather than compile time option 2007-10-18 14:37:19 -07:00
sh
sn
spi Add missing newlines to some uses of dev_<level> messages 2007-10-18 14:37:28 -07:00
ssb [PATCH] ssb: fix build failure 2007-10-16 21:04:11 -04:00
tc lk201: remove obsolete driver 2007-10-17 08:42:57 -07:00
telephony kconfig: syntax cleanup - drop support for "depends/requires/def_boolean" 2007-10-12 21:20:32 +02:00
uio
usb Add missing newlines to some uses of dev_<level> messages 2007-10-18 14:37:28 -07:00
video Add missing newlines to some uses of dev_<level> messages 2007-10-18 14:37:28 -07:00
w1 Add missing newlines to some uses of dev_<level> messages 2007-10-18 14:37:28 -07:00
watchdog mv watchdog tree under drivers 2007-10-18 10:39:03 +00:00
xen Add missing newlines to some uses of dev_<level> messages 2007-10-18 14:37:28 -07:00
zorro
Kconfig mv watchdog tree under drivers 2007-10-18 10:39:03 +00:00
Makefile mv watchdog tree under drivers 2007-10-18 10:39:03 +00:00