Я использую Kubuntu 19.10(KDE + i3wm) на моем ASUS FX505DT.
Проблема
Я могу привязать XF86RFKill
клавишу с помощью i3wm, bindsym
но эта привязка, похоже, не отменяет встроенную привязку Linux, которая переключаетАвиа режим.
Поведение проблемы
Вот что xev
возвращается, когда я нажимаю Fn+ F12, что должно сработать XF86RFKill
:
MappingNotify event, serial 48, synthetic NO, window 0x0,
request MappingKeyboard, first_keycode 8, count 248
FocusOut event, serial 48, synthetic NO, window 0x7a00001,
mode NotifyGrab, detail NotifyAncestor
FocusOut event, serial 48, synthetic NO, window 0x7a00001,
mode NotifyUngrab, detail NotifyPointer
FocusIn event, serial 48, synthetic NO, window 0x7a00001,
mode NotifyUngrab, detail NotifyAncestor
KeymapNotify event, serial 48, 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
Пока я тестировал разные штуки, я обнаружил, что на моем ноутбуке для этой функциональной клавиши есть отдельное устройство ввода, как показано на рисунке xinput list
:
$ xinput list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ ELAN1200:00 04F3:30BA Mouse id=12 [slave pointer (2)]
⎜ ↳ ELAN1200:00 04F3:30BA Touchpad id=13 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Asus Wireless Radio Control id=7 [slave keyboard (3)]
↳ Video Bus id=8 [slave keyboard (3)]
↳ Power Button id=9 [slave keyboard (3)]
↳ Sleep Button id=10 [slave keyboard (3)]
↳ USB2.0 HD UVC WebCam: USB2.0 HD id=11 [slave keyboard (3)]
↳ Asus WMI hotkeys id=14 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=15 [slave keyboard (3)]
Я еще раз подтвердил это, нажав Fn+ F12во время xinput test 7
команды, которая была зарегистрирована правильно:
$ xinput test 7
key press 255
key release 255
key press 255
key release 255
Что я хочу
Я хочу сменить привязку клавиш Fn+ F12или XF86RFKill
с Linux на i3wm
. У меня есть скрипт для переключения режима полета, и я привязал его с помощью:
bindsym XF86RFKill exec --no-startup-id toggle-airplane
Привязка к i3 работает, но проблема в том, что **и Linux, и i3wm
режим полета переключаются при нажатии клавиши, в результате чего ничего не происходит из-за двух последовательных переключений.
Электрический токАвиа режим, реализованный KDE, на самом деле глючит, так как не запоминает выключенные устройства перед включениемАвиа режим, и, следовательно, включает все радиоустройства, даже если они были изначально выключены, после отключенияАвиа режим. Я написал bash-скрипт для достижения своей цели, отсюда и возникла мотивация привязать эту клавишу вручную.
Обновление 1:
Проведя некоторые исследования и изучив информацию, я обнаружил, чтоasus_wireless
За это поведение отвечает модуль ядра. Простое внесение модуля в черный список работает, но мой ноутбук больше не определяет нажатие клавиши. Можно ли как-то сохранить нажатие клавиши, отключив горячую клавишу?
решение1
Не эксперт в этой теме, но это сработало для меня. Может быть, это поможет и вам. Чтобы отключить ввод, который включает режим полета, выполните в терминале:
xmodmap -e 'keycode 255='
Источник:Как отключить клавишу клавиатуры в Linux (Ubuntu)?
Кроме того, команда xmodmap -pke
показывает список всех сопоставлений клавиш.