我把啤酒洒在我的机械键盘上,因为每当我按下它时它往往会重复“ a ”键(是的,我已经清洁过几次,使用过酒精等)。我尝试使用“弹跳键”来缓解此问题,但此功能会在按下所有键后暂时禁用它们。换句话说,“弹跳键”会干扰我在需要键入带有重复字母的单词(< 就像单词“letter”中的“t”)或重复aaa快速按退格键时快速键入的能力。
(好的,我不会在其余文本中留下重复,但你可以看到它以 m a a denning 频率发生)
如果有帮助,我使用 xev 来准确确定操作系统正在接收的命令序列,看起来每次“a”重复时都是因为键盘多次发送所需的序列(KeyPress 后跟 KeyRelease,然后 KeyPress其次是 KeyRelease 再次)。换句话说,键没有停留在“KeyPress”状态。它在重复自己,好像我多次按下并释放它一样。
我见过其他人问同样的问题,但解决方案实际上并不是我正在寻找的。例如,在这个问题的第一个答案中提出的解决方案禁用自动重复,但这对我不起作用,因为“a”没有陷入“按下”状态。同一问题中的第二个答案也不起作用,因为在按下问题键后它会禁用整个键盘。我只想暂时禁用“a”键,并且只禁用“a”键一段很短的时间(~50ms)。
幸运的是,我在打字时很少需要重复字母“a”,所以即使是使用自动更正之类的解决方案也对我有用。最好,我想使用一个使用 xbindkeys 的解决方案,因为我已经在使用该包来重新映射我的鼠标按钮。
编辑:针对下面的评论,以下是“xinput list”和“xev”的输出:
$ xinput list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ SINOWEALTH Game Mouse id=9 [slave pointer (2)]
⎜ ↳ EST Gaming keyboard id=12 [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)]
↳ Power Button id=7 [slave keyboard (3)]
↳ SINOWEALTH Game Mouse Keyboard id=10 [slave keyboard (3)]
↳ EST Gaming keyboard id=11 [slave keyboard (3)]
↳ EST Gaming keyboard id=13 [slave keyboard (3)]
↳ Eee PC WMI hotkeys id=15 [slave keyboard (3)]
↳ EST Gaming keyboard id=16 [slave keyboard (3)]
$ xev
KeyPress event, serial 37, synthetic NO, window 0x7c00001,
root 0x4e5, subw 0x0, time 188722500, (165,-16), root:(4636,676),
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
KeyRelease event, serial 37, synthetic NO, window 0x7c00001,
root 0x4e5, subw 0x0, time 188722576, (165,-16), root:(4636,676),
state 0x10, keycode 38 (keysym 0x61, a), same_screen YES,
XLookupString gives 1 bytes: (61) "a"
XFilterEvent returns: False
在尝试实施@Raffa 的建议时,我使用“3”作为键盘 ID,并将键码保留为 38。但是,键仍然重复。
bash
在脚本文件中试试这个:将数字更改
11
为xinput test 11
您的键盘设备编号。你可以通过运行找到这个号码xinput list
。您可能需要检查该id
数字是否适合您的键盘。为此,请选择前面的键盘id
编号,然后通过运行检查终端并按键盘上的 。如果您得到这样的输出,那么这是您当前键盘的正确数字,如果没有输出,请继续测试其他数字,直到看到输出。slave keyboard
id
xinput test id_number
akey press 38
id
id
将 nuber
38
in"key press 38"
和xmodmap -e 'keycode 38 = ';
and更改xmodmap -e 'keycode 38 = a A';
为密钥的密钥代码a。xev
您可以通过运行并按a键找到此号码。将数字更改为所需的秒数,以禁用该
0.5
键。sleep 0.5;
a创建和使用脚本文件的步骤:
将上述代码(修改后)复制并粘贴到编辑器中。
按Ctrl+保存脚本文件并退出编辑器,X然后按Y。
通过在终端中运行以下命令使脚本文件可执行: