在我的笔记本电脑上,打开自动重复(xset r on)不起作用.当检查xev的输出时,似乎autorepeat失败的原因是因为另一个键被间歇地按下(虽然我没有按任何东西),这取消了自动重复当前按下的键.当没有按下任何键时,将始终重复记录以下事件:
KeyPress event, serial 33, synthetic NO, window 0x1200001,
root 0x123, subw 0x0, time 1652400, (-509,794), root:(455,814),
state 0x0, keycode 221 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 33, synthetic NO, window 0x1200001,
root 0x123, subw 0x0, time 1652400, (-509,794), root:(455,814),
state 0x0, keycode 221 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
看起来正在按下具有键码221的键,即使它不是.
因此,是否可以完全禁用密钥代码,使得xorg根本不接收来自该密钥的按键信号?或者,无论是否按下其他键,是否可以在按住时自动重复键?
更新:
在运行sudo evtest之后,似乎隐藏的输出来自
/dev/input/event11 PEAQ WMI hotkeys
没有任何其他输入设备似乎在没有任何按下时发送事件.
在evtest中检查键盘事件时,自动重复可以正常工作.
当没有任何按下时,xev的完整输出运行几秒钟:
Outer window is 0x1200001, inner window is 0x1200002
PropertyNotify event, serial 8, synthetic NO, window 0x1200001,
atom 0x27 (WM_NAME), time 1651733, state PropertyNewValue
PropertyNotify event, serial 9, synthetic NO, window 0x1200001,
atom 0x22 (WM_COMMAND), time 1651733, state PropertyNewValue
PropertyNotify event, serial 10, synthetic NO, window 0x1200001,
atom 0x28 (WM_NORMAL_HINTS), time 1651733, state PropertyNewValue
CreateNotify event, serial 11, synthetic NO, window 0x1200001,
parent 0x1200001, window 0x1200002, (10,10), width 50, height 50
border_width 4, override NO
PropertyNotify event, serial 14, synthetic NO, window 0x1200001,
atom 0x15c (WM_PROTOCOLS), time 1651734, state PropertyNewValue
MapNotify event, serial 15, synthetic NO, window 0x1200001,
event 0x1200001, window 0x1200002, override NO
ReparentNotify event, serial 28, synthetic NO, window 0x1200001,
event 0x1200001, window 0x1200001, parent 0x4000d5,
(0,0), override NO
ConfigureNotify event, serial 28, synthetic NO, window 0x1200001,
event 0x1200001, window 0x1200001, (2,0), width 952, height 1033,
border_width 2, above 0x0, override NO
PropertyNotify event, serial 28, synthetic NO, window 0x1200001,
atom 0x15e (WM_STATE), time 1651735, state PropertyNewValue
MapNotify event, serial 28, synthetic NO, window 0x1200001,
event 0x1200001, window 0x1200001, override NO
VisibilityNotify event, serial 28, synthetic NO, window 0x1200001,
state VisibilityUnobscured
Expose event, serial 28, synthetic NO, window 0x1200001,
(0,0), width 952, height 10, count 3
Expose event, serial 28, synthetic NO, window 0x1200001,
(0,10), width 10, height 58, count 2
Expose event, serial 28, synthetic NO, window 0x1200001,
(68,10), width 884, height 58, count 1
Expose event, serial 28, synthetic NO, window 0x1200001,
(0,68), width 952, height 965, count 0
ConfigureNotify event, serial 28, synthetic YES, window 0x1200001,
event 0x1200001, window 0x1200001, (962,18), width 952, height 1033,
border_width 2, above 0x0, override NO
FocusIn event, serial 28, synthetic NO, window 0x1200001,
mode NotifyNormal, detail NotifyNonlinear
KeymapNotify event, serial 28, synthetic NO, window 0x0,
keys: 4294967236 0 0 0 16 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
PropertyNotify event, serial 28, synthetic NO, window 0x1200001,
atom 0x14f (_NET_WM_DESKTOP), time 1651736, state PropertyNewValue
KeyRelease event, serial 30, synthetic NO, window 0x1200001,
root 0x123, subw 0x0, time 1651775, (-509,794), root:(455,814),
state 0x0, keycode 36 (keysym 0xff0d, Return), same_screen YES,
XLookupString gives 1 bytes: (0d) "
"
XFilterEvent returns: False
MappingNotify event, serial 33, synthetic NO, window 0x0,
request MappingKeyboard, first_keycode 8, count 248
KeyPress event, serial 33, synthetic NO, window 0x1200001,
root 0x123, subw 0x0, time 1652400, (-509,794), root:(455,814),
state 0x0, keycode 221 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 33, synthetic NO, window 0x1200001,
root 0x123, subw 0x0, time 1652400, (-509,794), root:(455,814),
state 0x0, keycode 221 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
KeyPress event, serial 34, synthetic NO, window 0x1200001,
root 0x123, subw 0x0, time 1653200, (-509,794), root:(455,814),
state 0x0, keycode 221 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 34, synthetic NO, window 0x1200001,
root 0x123, subw 0x0, time 1653200, (-509,794), root:(455,814),
state 0x0, keycode 221 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
KeyPress event, serial 34, synthetic NO, window 0x1200001,
root 0x123, subw 0x0, time 1654000, (-509,794), root:(455,814),
state 0x0, keycode 221 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 34, synthetic NO, window 0x1200001,
root 0x123, subw 0x0, time 1654000, (-509,794), root:(455,814),
state 0x0, keycode 221 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
MappingNotify event, serial 34, synthetic NO, window 0x0,
request MappingKeyboard, first_keycode 8, count 248
KeyPress event, serial 34, synthetic NO, window 0x1200001,
root 0x123, subw 0x0, time 1654760, (-509,794), root:(455,814),
state 0x0, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
MappingNotify event, serial 35, synthetic NO, window 0x0,
request MappingKeyboard, first_keycode 8, count 248
KeyPress event, serial 35, synthetic NO, window 0x1200001,
root 0x123, subw 0x0, time 1654800, (-509,794), root:(455,814),
state 0x40, keycode 221 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 35, synthetic NO, window 0x1200001,
root 0x123, subw 0x0, time 1654800, (-509,794), root:(455,814),
state 0x40, keycode 221 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
MappingNotify event, serial 36, synthetic NO, window 0x0,
request MappingKeyboard, first_keycode 8, count 248
FocusOut event, serial 36, synthetic NO, window 0x1200001,
mode NotifyGrab, detail NotifyAncestor
ClientMessage event, serial 37, synthetic YES, window 0x1200001,
message_type 0x15c (WM_PROTOCOLS), format 32, message 0x15d (WM_DELETE_WINDOW)
解决方法:
根据Redhat bugzilla bug #1497861,这似乎是内核4.13引入的错误.
我发现卸载peaq_wmi模块也可以作为一种解决方法;似乎有人已经提交了一个补丁来解决这个问题.
(要卸载peaq_wmi模块,可以发出命令sudo modprobe -r peaq_wmi.)