Мне нужно кое-что пояснить:
Когда я запускаю xev
в терминале и использую Super kbd>, я получаю следующий вывод. Что это значит?
KeymapNotify event, serial 36, synthetic NO, window 0x0,
keys: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
FocusIn event, serial 36, synthetic NO, window 0x2000001,
mode NotifyUngrab, detail NotifyNonlinear
KeymapNotify event, serial 36, synthetic NO, window 0x0,
keys: 93 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Таким образом, после исследования онлайн в течение некоторого времени, вот мое понимание значения вывода:
Смотрят на события KeyPress и KeyRelease от ключа буквы, как m
.
KeyRelease event, serial 28, synthetic NO, window 0x6e00001,
root 0x2c9, subw 0x0, time 17599679, (-746,426), root:(337,478),
state 0x10, keycode 58 (keysym 0x6d, m), same_screen YES,
XLookupString gives 1 bytes: (6d) "m"
XFilterEvent returns: False
Это имеет код клавиши и сообщает об идентификаторе окна, где клавиша была нажата.
Функциональные клавиши, как Fn + F6 , который на самом деле является ключом уменьшения яркости, не производят такой информации. Они идентификатор отчета 0x0 для окна и никакой код клавиши. Таким образом это означает, что эти ключи нельзя повторно присвоить и управляют программным обеспечением, как X-сервер или консоль; они зависят от среды, в которой они работают. Который также несколько объясняет, почему Супер ключ может или не может работать в конкретной настольной среде - это до разработчиков для включения функциональности того ключа в их настольную среду.
MappingNotify event, serial 28, synthetic NO, window 0x0,
request MappingKeyboard, first_keycode 8, count 248
KeymapNotify event, serial 29, synthetic NO, window 0x0,
keys: 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0