因此,当我输入正斜杠键时,整个系统会冻结几秒钟。这只发生在我的 Corsair K90 键盘上。
我目前得到的是:
- 使用另一个键盘(Logitech MK120),不会发生冻结现象。
- 使用 Ubuntu 和 Pop_os 时会发生冻结。Windows、Manjaro XFCE 和 Fedora 上不会发生这种情况。
- 使用不同的 USB,仍然会出现冻结的情况。
- 切换键盘布局,仍然会出现冻结的情况。
- 使用另一台计算机,冻结现象仍然发生。
- 两种键盘均采用 ABNT2 布局(巴西葡萄牙语)
因此,看起来冻结只发生在我的 Corsair K90 和基于 Ubuntu 的发行版上。
系统日志
Ubuntu
Apr 1 16:58:05 ubuntu gnome-shell[5525]: Window manager warning: Overwriting existing binding of keysym 31 with keysym 31 (keycode a).
Apr 1 16:58:05 ubuntu gnome-shell[5525]: Window manager warning: Overwriting existing binding of keysym 32 with keysym 32 (keycode b).
Apr 1 16:58:05 ubuntu gnome-shell[5525]: Window manager warning: Overwriting existing binding of keysym 33 with keysym 33 (keycode c).
Apr 1 16:58:05 ubuntu gnome-shell[5525]: Window manager warning: Overwriting existing binding of keysym 34 with keysym 34 (keycode d).
Apr 1 16:58:05 ubuntu gnome-shell[5525]: Window manager warning: Overwriting existing binding of keysym 35 with keysym 35 (keycode e).
Apr 1 16:58:05 ubuntu gnome-shell[5525]: Window manager warning: Overwriting existing binding of keysym 36 with keysym 36 (keycode f).
Apr 1 16:58:05 ubuntu gnome-shell[5525]: Window manager warning: Overwriting existing binding of keysym 38 with keysym 38 (keycode 11).
Apr 1 16:58:05 ubuntu gnome-shell[5525]: Window manager warning: Overwriting existing binding of keysym 39 with keysym 39 (keycode 12).
Apr 1 16:58:05 ubuntu gnome-shell[5525]: Window manager warning: Overwriting existing binding of keysym 37 with keysym 37 (keycode 10).
Pop_OS
Apr 1 14:39:37 pop-os gnome-shell[3511]: Window manager warning: Overwriting existing binding of keysym 71 with keysym 71 (keycode 18).
軍
输入/asd,我得到:
KeyRelease event, serial 38, synthetic NO, window 0x5c00001,
root 0x1e0, subw 0x0, time 1566707, (279,55), root:(2394,314),
state 0x10, keycode 97 (keysym 0x2f, slash), same_screen YES,
XLookupString gives 1 bytes: (2f) "/"
XFilterEvent returns: False
MappingNotify event, serial 40, synthetic NO, window 0x0,
request MappingKeyboard, first_keycode 8, count 248
KeyPress event, serial 40, synthetic NO, window 0x5c00001,
root 0x1e0, subw 0x0, time 1566746, (279,55), root:(2394,314),
state 0x10, keycode 39 (keysym 0x73, s), same_screen YES,
XLookupString gives 1 bytes: (73) "s"
XmbLookupString gives 1 bytes: (73) "s"
XFilterEvent returns: False
KeyRelease event, serial 41, synthetic NO, window 0x5c00001,
root 0x1e0, subw 0x0, time 1566790, (279,55), root:(2394,314),
state 0x10, keycode 38 (keysym 0x61, a), same_screen YES,
XLookupString gives 1 bytes: (61) "a"
XFilterEvent returns: False
KeyPress event, serial 41, synthetic NO, window 0x5c00001,
root 0x1e0, subw 0x0, time 1566822, (279,55), root:(2394,314),
state 0x10, keycode 40 (keysym 0x64, d), same_screen YES,
XLookupString gives 1 bytes: (64) "d"
XmbLookupString gives 1 bytes: (64) "d"
XFilterEvent returns: False
KeyRelease event, serial 41, synthetic NO, window 0x5c00001,
root 0x1e0, subw 0x0, time 1566840, (279,55), root:(2394,314),
state 0x10, keycode 39 (keysym 0x73, s), same_screen YES,
XLookupString gives 1 bytes: (73) "s"
XFilterEvent returns: False
KeyRelease event, serial 41, synthetic NO, window 0x5c00001,
root 0x1e0, subw 0x0, time 1566874, (279,55), root:(2394,314),
state 0x10, keycode 40 (keysym 0x64, d), same_screen YES,
XLookupString gives 1 bytes: (64) "d"
XFilterEvent returns: False
修改映射
使用我得到的命令xmodmap -pke | less
:
...
keycode 97 = slash question slash question degree questiondown degree questiondown slash question degree questiondown
...
我尝试使用命令删除一些重复xmodmap -e "keycode 97 = slash question degree"
,但没有帮助。
使用另一个键盘进行测试(Logitech MK120,无冻结)
軍
输入“/asd”。此键盘似乎不会发生“MappingNotify 事件”,也不会发生冻结。
KeyPress event, serial 37, synthetic NO, window 0x1e00001,
root 0x1e0, subw 0x0, time 1907488, (155,-8), root:(2120,101),
state 0x10, keycode 97 (keysym 0x2f, slash), same_screen YES,
XLookupString gives 1 bytes: (2f) "/"
XmbLookupString gives 1 bytes: (2f) "/"
XFilterEvent returns: False
KeyRelease event, serial 37, synthetic NO, window 0x1e00001,
root 0x1e0, subw 0x0, time 1907576, (155,-8), root:(2120,101),
state 0x10, keycode 97 (keysym 0x2f, slash), same_screen YES,
XLookupString gives 1 bytes: (2f) "/"
XFilterEvent returns: False
KeyPress event, serial 37, synthetic NO, window 0x1e00001,
root 0x1e0, subw 0x0, time 1907592, (155,-8), root:(2120,101),
state 0x10, keycode 38 (keysym 0x61, a), same_screen YES,
XLookupString gives 1 bytes: (61) "a"
XmbLookupString gives 1 bytes: (61) "a"
XFilterEvent returns: False
KeyPress event, serial 37, synthetic NO, window 0x1e00001,
root 0x1e0, subw 0x0, time 1907640, (155,-8), root:(2120,101),
state 0x10, keycode 39 (keysym 0x73, s), same_screen YES,
XLookupString gives 1 bytes: (73) "s"
XmbLookupString gives 1 bytes: (73) "s"
XFilterEvent returns: False
KeyPress event, serial 37, synthetic NO, window 0x1e00001,
root 0x1e0, subw 0x0, time 1907720, (155,-8), root:(2120,101),
state 0x10, keycode 40 (keysym 0x64, d), same_screen YES,
XLookupString gives 1 bytes: (64) "d"
XmbLookupString gives 1 bytes: (64) "d"
XFilterEvent returns: False
KeyRelease event, serial 37, synthetic NO, window 0x1e00001,
root 0x1e0, subw 0x0, time 1907728, (155,-8), root:(2120,101),
state 0x10, keycode 38 (keysym 0x61, a), same_screen YES,
XLookupString gives 1 bytes: (61) "a"
XFilterEvent returns: False
KeyRelease event, serial 37, synthetic NO, window 0x1e00001,
root 0x1e0, subw 0x0, time 1907784, (155,-8), root:(2120,101),
state 0x10, keycode 39 (keysym 0x73, s), same_screen YES,
XLookupString gives 1 bytes: (73) "s"
XFilterEvent returns: False
KeyRelease event, serial 37, synthetic NO, window 0x1e00001,
root 0x1e0, subw 0x0, time 1907824, (155,-8), root:(2120,101),
state 0x10, keycode 40 (keysym 0x64, d), same_screen YES,
XLookupString gives 1 bytes: (64) "d"
XFilterEvent returns: False
接下来我可以尝试什么来阻止 Corsair 键盘冻结?
答案1
引用 Corsair 论坛:https://forum.corsair.com/forums/topic/107444-unofficial-linux-osx-driver/
安装非官方驱动程序。(它可能会有帮助。)
答案2
我在 Fedora 37 上安装了瑞士布局 (QWERTZ) 的 Strix 键盘。反斜杠 (ALTGR+<) 也导致了类似的冻结。
禁用 NKRO(N 键翻转)解决了该问题(按 FN+PGUP 切换开/关)