Nejrychleji otestovat by to šlo asi takhle:
$ xev | grep 'state 0x4, keycode 46 (keysym 0x6c, l)'
a v okně, které otevře xev, stisknout CTRL-l. Při každém stisku by se měly objevit dva řádky:
state 0x4, keycode 46 (keysym 0x6c, l), same_screen YES,
state 0x4, keycode 46 (keysym 0x6c, l), same_screen YES,
Pokud je to tak, tak to globální zkratka není.
Normálně dostane okno při stisku klávesy událost typu KeyPress a při uvolnění KeyRelease (viz man 3 XKeyEvent). Tyhle události by tedy mělo okno dostat při stisku CTRL+l čtyřikrát. Stisknutí CTRL, stisknutí l, uvolnění l a uvolnění CTRL.:
KeyPress event, serial 30, synthetic NO, window 0x1400001,
root 0xac, subw 0x0, time 25450119, (95,-15), root:(96,520),
state 0x0, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyPress event, serial 33, synthetic NO, window 0x1400001,
root 0xac, subw 0x0, time 25450862, (95,-15), root:(96,520),
state 0x4, keycode 46 (keysym 0x6c, l), same_screen YES,
XLookupString gives 1 bytes: (0c) "
"
XmbLookupString gives 1 bytes: (0c) "
"
XFilterEvent returns: False
KeyRelease event, serial 33, synthetic NO, window 0x1400001,
root 0xac, subw 0x0, time 25450932, (95,-15), root:(96,520),
state 0x4, keycode 46 (keysym 0x6c, l), same_screen YES,
XLookupString gives 1 bytes: (0c) "
"
XFilterEvent returns: False
KeyRelease event, serial 33, synthetic NO, window 0x1400001,
root 0xac, subw 0x0, time 25451283, (95,-15), root:(96,520),
state 0x4, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
Pokud je CTRL+l globální zkratka, tedy tu klávesu odchytí kořenové okno, tak naše xev okno obdrží:
1) Při stisknutí CTRL dostane událost KeyPress.
2) Při stisknutí "l" ztratí okno zaměření (událost FocusOut s mode=NotifyGrab a detail=NotifyAncestor - tj. zaměření si vzalo nadřazené okno, nejspíš kořenové, viz. man 3 XFocusChangeEvent )
3) Při uvolnění "l" dostane zpátky zaměření a KeymapNotify (viz man 3 XKeymapEvent)
4) Případně obdrží při uvolnění CTRL událost KeyRelease, pokud nebylo uvolněno dříve než "l".
Tedy nedostane události pro stisknutí a uvolnění klávesy "l", ani z události KeymapNotify při navrácení zaměření nezjistí, že bylo stisknuto "l".
Pokud by jsi sledoval i události kořenového okna (xev -root), tak mezi body 2 a 3:
2.1) Kořenové okno dostane zaměření a událost KeymapNotify s bitmapou stisknutých kláves (ctrl a l)
2.2) Při uvolnění "l" zaměření ztratí (vrátí ho oknu xev).
U obou případů bude v detail=NotifyInferior, tj. zaměření získá od a předá podřadnému oknu (naše okno s xev). To dostane zpět zaměření (bod 3) a událost KeymapNotify s bitmapou stisknutých kláves (ale bez "l", které již bylo uvolněno). KeymapNotify událost je generována vždy po získání zaměření.
Klidně sem pošli výstup pro xev...