我把啤酒洒在了我的机械键盘上,从那以后,每当我按下它时,它就会重复“a”键(是的,我已经清理过好几次了,用过氨基酸酒精等)。我尝试使用“弹跳键”来缓解此问题,但此功能暂时禁用所有键在他们之后氨基酸换句话说,“弹跳键”妨碍了我快速打字的能力,无论何时我需要输入一个带有重复字母的单词(例如单词“letter”中的“t”)或重复AAA特莱莉快速按下退格键。
(好吧,我不会在剩余的文本中留下重复,但你可以看到它出现在 m氨基酸频率)
如果有帮助的话,我使用 xev 来确定操作系统正在接收的命令序列,看起来每次“a”重复都是因为键盘多次发送所需的序列(KeyPress 后跟 KeyRelease,然后 KeyPress 后跟 KeyRelease)。换句话说,按键没有停留在“KeyPress”状态。它正在重复仿佛我按下并释放它多次。
我看到其他人问过同样的问题,但解决方案实际上并不是我想要的。例如,第一个答案中提出的解决方案这个问题禁用自动重复,但这对我来说不起作用,因为“a”不会卡在“按下”状态。同一问题中的第二个答案也不起作用,因为它会在按下问题键后禁用整个键盘。我只是想暂时禁用“a”键,并且仅在很短的时间内(~50ms)禁用“a”键。
幸运的是,我很少需要在打字时重复字母“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。但是,键仍然重复。
答案1
在脚本文件中尝试此操作bash
:
#!/bin/bash
xinput test 11 |
while read pkc
do
if [[ "$pkc" =~ "key press 38" ]]
then
xmodmap -e 'keycode 38 = ';
sleep 0.5;
xmodmap -e 'keycode 38 = a A';
fi
done
11
将中的数字更改xinput test 11
为您的键盘设备编号。您可以通过运行 找到此数字xinput list
。您可能需要检查该id
数字是否适合您的键盘。为此,选择前面带有 的键盘id
数字,然后通过运行检查终端中的并按下键盘上的 。如果您得到类似的输出,那么这是您当前键盘的正确数字,如果没有输出,继续测试其他数字,直到看到输出。slave keyboard
id
xinput test id_number
akey press 38
id
id
将和
38
中的数字改为按键的按键代码。您可以通过运行并按下按键来找到这个数字。"key press 38"
xmodmap -e 'keycode 38 = ';
xmodmap -e 'keycode 38 = a A';
axev
a0.5
将中的数字更改为要禁用sleep 0.5;
该键的所需时间(以秒为单位)。a
创建和使用脚本文件的步骤:
- 通过在终端中运行以下命令在编辑器中创建并打开文件:
nano ~/no_aa.sh
复制并粘贴上述代码(修改后)进入编辑器。
保存脚本文件并按Ctrl+X然后按退出编辑器Y。
通过在终端中运行以下命令使脚本文件可执行:
chmod +x ~/no_aa.sh
- 通过在终端中运行以下命令来运行脚本:
bash ~/no_aa.sh
- 保持终端打开并a在其他应用程序中测试密钥,例如在 LibreOffice Writer 中写作。