Użyj polecenia xev. Gdy naciśniesz Enter, uruchomi się xev. xev pobiera wszystkie dane wejściowe i zapisuje informacje o kluczu w wierszu polecenia. Polecam najechanie myszką na klawisz wyjścia okna xev, naciśnięcie klawisza Caps Lock (lub dowolnego innego klawisza, o którym chcesz się dowiedzieć) i natychmiastowe wyjście z Xev. Odpowiednie linie w moim systemie, dla Caps Lock, wyglądają mniej więcej tak:
KeyPress event, serial 36, synthetic NO, window 0x4400001,
root 0x27a, subw 0x0, time 19164277, (16,-9), root:(1156,46),
state 0x2, keycode 66 (keysym 0xffe5, Caps_Lock), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 36, synthetic NO, window 0x4400001,
root 0x27a, subw 0x0, time 19164397, (16,-9), root:(1156,46),
state 0x2, keycode 66 (keysym 0xffe5, Caps_Lock), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
Uwaga keycode
(66) i keysym
(0xffe5).
Teraz możesz również uzyskać dane dla innego klucza - takiego, którego tak naprawdę nie używasz, a który w kontekście, w którym chcesz użyć przycisku Caps Lock, nic nie robi. Jeśli więc chcesz, aby Caps Lock aktywował pole wyszukiwania Unity (jak zwykle robi to super), może na przykład użyj `. Na mojej maszynie:
keycode 49 (keysym 0x60, grave)
Powiąż funkcję nowego klawisza z przyciskiem Caps Lock, używając xmodmap. Jestem pewien, że chcesz użyć polecenia takiego jak:
xmodmap -e "keycode 66=0x60"
Teraz, jeśli naciśniesz fizyczny przycisk blokady wielkich liter w polu tekstowym, pojawi się poważny znak (`). Ale jeśli przypiszesz do niego klawisz skrótu, zrobi to coś innego. Jeśli chcesz móc używać go w polu tekstowym, być może zamień Caps Lock na lewy Shift, F10 lub coś innego, co nie wydaje się, że będzie kolidować z poleceniem, którego chcesz użyć.