Есть программа xkbevd. Ее можно запустить просто как программу, и она будет выводить в консоль события клавиатуры:
$ xkbevd
Temporarily disabling the audible bell
XkbControlsNotify event, serial 9, synthetic no, device 3, time 42035297,
changed= 0x80000000, enabled= 0x1121, enabledChanges= 0x200
num_groups= 2
request -109/7 (NON-XKB)
XkbBellNotify event, serial 12, synthetic no, device 3, time 42035297,
bell class= 0, id= 0
percent= 50, pitch= 400, duration= 100
name= "ImAlive"
window= 0x0, event_only
XkbStateNotify event, serial 13, synthetic no, device 3, time 42037087,
keycode 50, eventType KeyPress,
group= 0, base= 0, latched= 0, locked= 0,
mods= 0x01*, base= 0x01*, latched= 0x00, locked= 0x00
grab mods= 0x01*, compat grab mods= 0x01*
lookup mods= 0x01*, compat lookup mods= 0x01*
compatState = 0x01*, ptr_buttons= 0x0000
Эту программу можно запустить в виде демона:
$ xkbevd -bg
Кстати, еще для слеженими за событиями клавиатуры, можно парсить вывод файла:
cat /dev/input/event0
Для конфигурировани программы используется файл ~/.xkb/xkbevd.cf или $(LIBDIR)/xkb/xkbevd.cf. Его формат слабо описан в странице man.
Примерное содержимое конфигурирующего файла может быть таким:
// See directory /usr/share/sounds contents or example.cf for example on
// how to used sounds
soundDirectory = "/usr/share/sounds"
Bell() printEvent
AccessX() printEvent
Message() printEvent
Или таким:
soundDirectory = ""
soundCmd = "aplay -q"
Bell() "~/etc/beep.wav"
Bell(ImAlive) "/usr/share/sounds/purple/login.wav"
Или таким:
soundDirectory="/usr/share/sounds/"
soundCmd="ogg123 -q"
Bell() "ubuntu/stereo/bell.ogg"
Или таким:
Bell() shell "xrefresh -solid white"
Bell() shell "thinkalert 1"