如何防止 XF86RFKill 按键启用 Linux 的飞行模式?

如何防止 XF86RFKill 按键启用 Linux 的飞行模式?

我在我的 ASUS FX505DT 上运行 Kubuntu 19.10(KDE + i3wm)。

问题

我可以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+进一步确认了这一点,它已正确注册:F12xinput 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显示所有键盘映射的列表

相关内容