Как предотвратить включение режима полета в Linux при нажатии клавиши XF86RFKill?

Как предотвратить включение режима полета в Linux при нажатии клавиши XF86RFKill?

Я использую 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показывает список всех сопоставлений клавиш.

Связанный контент