我在我的 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
显示所有键盘映射的列表