Я пролил пиво в своей механической клавиатуре и с тех пор, как это имеет тенденцию повторять "a" ключ каждый раз, когда я нажимаю его (да, я несколько раз чистил его, использовал алкоголь, и т.д.). Я пытался смягчить эту проблему с помощью "ключи возврата", но эта функция временно отключает все ключи после того, как они нажатый Ааре. Другими словами, "ключи возврата" вмешиваются в мою способность ввести быстро каждый раз, когда я должен ввести слово с повторной буквой (<как "t" в слове "буква") или неоднократно нажимать клавишу Backspace быстро.
(хорошо я не оставлю повторения в оставшемся тексте, но Вы видите, что он происходит с maadenning частотой),
В случае, если это помогает, я использовал xev для определения точно, какую последовательность команд ОС получает, и похоже, что каждый раз "a" повторяется, это - потому что клавиатура отправляет желаемую последовательность многократно (KeyPress, сопровождаемый KeyRelease, затем KeyPress, сопровождаемым KeyRelease снова). Другими словами, ключ не всовывает состояние "Нажатия клавиши". Это повторяется, как будто я нажал и выпустил его многократно.
Я видел, что другие люди задают этот тот же вопрос, но решениями не является на самом деле то, которое я ищу. Например, решение, предложенное в первом ответе на этот вопрос, отключает автоповтор, но это не будет работать на меня, потому что "a" не становится всунутым "Нажатое" состояние. Второй ответ в том же самом вопросе не работает также, потому что он отключает всю клавиатуру после того, как проблемная клавиша нажата. Я просто хочу временно отключить "a" ключ и только "a" ключ в течение очень краткого промежутка времени (~50ms).
К счастью, я редко должен повторять букву "a" при вводе, поэтому даже решение, которое использует что-то как автозамена, работало бы на меня. Предпочтительно, я хотел бы использовать решение, которое использует xbindkeys хотя, потому что я уже использую тот пакет для переотображения моих кнопок мыши.
Править: В ответ на комментарий ниже, вот выводы 'xinput список' и '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" для идентификатора клавиатуры, и я оставил код клавиши как 38. Однако ключ все еще копирует.
Попробуйте это в a 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
и нажмите на Вашей клавиатуре. Если Вы получаете вывод как key press 38
затем это - корректное id
число для Вашей текущей клавиатуры и если никакой вывод, продолжите тестировать другой id
числа, пока Вы не видите вывода.
Измените nuber 38
в "key press 38"
и xmodmap -e 'keycode 38 = ';
и xmodmap -e 'keycode 38 = a A';
к коду клавиши ключ. Можно найти это число путем выполнения xev
и нажатие ключ.
Измените число 0.5
в sleep 0.5;
к желаемому периоду в секундах для ключ, который будет отключен.
Шаги к созданию и использованию файла сценария:
nano ~/no_aa.sh
Скопируйте и вставьте вышеупомянутый код (после изменения его) в редактора.
Сохраните файл сценария и выйдите, редактор путем нажатия Ctrl + X затем нажимают Y.
Сделайте исполняемый файл файла сценария путем выполнения следующей команды в терминале:
chmod +x ~/no_aa.sh
bash ~/no_aa.sh