我已经尝试了很长一段时间将我的音频控件映射到相应的 XF86 键。然而,三个键:XF86AudioLowerVolume
、、XF86AudioRaiseVolume
&XF86AudioMute
拒绝正常工作。每次登录后,我都可以按这些键一次。之后,他们的输入会重复,直到我按下另一个键或发送另一个键信号。xev
还显示这些键的重复按键,并且showkey
仅显示按键事件,但不显示释放。澄清一下,输出如下所示:
keycode 113 press
keycode 114 press
keycode 115 press
keycode 57 press
keycode 57 release
您可以看到空格键(键码 57)按预期显示版本,但键码 113-115 没有显示。现在我在互联网上查遍了,但我还没有看到另一个帖子,其中只记录了按键按下,而不记录按键释放。我最近升级到ubuntu 19.10并重新安装xorg
但无济于事。有什么建议么?
编辑:
xev
对于所有这三个键,我只有在第一次按下时才会得到输出;密钥只是一遍又一遍地重复,如下所示:
KeyPress event, serial 34, synthetic NO, window 0x1e00001,
root 0x168, subw 0x0, time 35686, (441,184), root:(1725,204),
state 0x0, keycode 121 (keysym 0x1008ff12, XF86AudioMute), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 34, synthetic NO, window 0x1e00001,
root 0x168, subw 0x0, time 36347, (441,184), root:(1725,204),
state 0x0, keycode 121 (keysym 0x1008ff12, XF86AudioMute), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
........
让我惊讶的是那条线XLookupString gives 0 bytes:
,这不可能是对的吧?正常情况下,这里键入一个字节,对应于输出字符。其他 XF86 键给我的事件如下:
KeymapNotify event, serial 157, synthetic NO, window 0x0,
keys: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
此外,当我运行 .xev 时,显示在 xev 中的键码与正确的绑定相对应xmodmap -pke
。我倾向于相信问题不在于我的 X 服务器,因为用以下命令重新启动 X 服务器sudo systemctl restart display-manager
对我没有任何作用,重新登录也没有。
我也尝试过重新启动键盘
xinput disable 'AT Translated Set 2 keyboard';
xinput enable 'AT Translated Set 2 keyboard'
但无济于事。
我尝试使用诸如modprobe -r atkbd
仅接收消息之类的命令重新启动 atkbd 模块(键盘控制器) modprobe: FATAL: Module atkbd is builtin
。
到目前为止,按下(并且永远不会释放)这些键的唯一方法是重新启动。
也许重要的是要告诉我我运行的是双引导系统GRUB2
。在 Windows 中,这些按键可以正常工作。我想他们也在 BIOS 中这样做,尽管测试音量键有点困难。
编辑2:
我使用的是带有内置键盘的 Medion Erazer P6661 笔记本电脑。通过列出我的键盘xinput list-props 12
,我得到以下信息:
Device 'AT Translated Set 2 keyboard':
Device Enabled (167): 1
Coordinate Transformation Matrix (169): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
libinput Send Events Modes Available (289): 1, 0
libinput Send Events Mode Enabled (290): 0, 0
libinput Send Events Mode Enabled Default (291): 0, 0
Device Node (292): "/dev/input/event4"
Device Product ID (293): 1, 1