Могу ли я включить Bounce Keys только для определенных клавиш?


8

На моем ноутбуке постоянно возникает проблема, когда нажатия клавиш на клавиатуре повторяются. Пройдя через несколько замен, а также попробовав несколько операционных систем, я решил, что проблема аппаратная, а не программная.

К счастью, я узнал, что в Ubuntu есть функция, известная как клавиши отказов, которая позволяет мне противодействовать этой проблеме, поскольку повторяющиеся нажатия клавиш будут отфильтровываться.

Однако включение решения для всех ключей иногда фильтрует ключи, которые я не хочу фильтровать. Например, когда я набираю «привет» , я часто нажимаю две l в быстрой последовательности, однако иногда одна из l s фильтруется, что может быть довольно раздражающим. Я знаю, что мне никогда не нужно будет нажимать клавишу пробела дважды в такой быстрой последовательности, и, поскольку у меня возникают проблемы только с пробелом, я хочу только включить клавиши отказов на клавиатуре.

Итак, возможно ли включить только клавиши отказов на пробел?


Повторяется сколько раз? Это случается каждый раз?
daltonfury42

Это происходит не каждый раз, но этого достаточно, чтобы быть довольно раздражающим. Я бы сказал, что это происходит примерно три раза в абзаце. Это может быть очень раздражающим, чтобы вернуться и отредактировать посторонние места.
Файз Салим

1
Пробел обычно повторяется около двух раз. Если вы видите источник моего первоначального поста, вы легко сможете увидеть повторяющиеся пробелы, поскольку я намеренно оставил их там.
Файз Салим

Я обновил свой ответ, но прежде чем читать его, прочитайте это .
daltonfury42

Спасибо, попробую позже - я просто был очень занят, поэтому у меня не было шанса.
Файз Салим

Ответы:


3

xset - утилита пользовательских настроек для X

r контролировать автоповтор.

xset -r 10

отключит автоповтор для клавиши «1».

Xset R 10

включит автоповтор для клавиши «1».

xset r [код ключа]

в моем случае код ключа для пробела 65 проверьте ваш код: xev | grep -A2 --line-buffered '^KeyRelease' | sed -n '/keycode /s/^.*keycode \([0-9]*\).* (.*, \(.*\)).*$/\1 \2/p'

Тем не менее, если вам нужно изменить скорость клавиш, вы также можете использовать параметр скорости к нему.

А также добавьте эту команду в файл сценария запуска сеанса.


Вы можете получить текущий список ключей, для которых включен автоповтор xset q. Это 256-битный массив, выгруженный в шестнадцатеричном формате, и его довольно сложно прочитать.
meuh

Я определенно обязательно попробую. Спасибо!
Файз Салим,

1
Работал нормально для меня. Наслаждайтесь +100 репутацией!
Файз Салим

4

Я нашел для вас решение, но оно не касается Bounce Keys. То, что я делаю здесь, это отключение клавиши пробела / клавиатуры на небольшое время при каждом нажатии клавиши пробела. Так что вот так:

Мы используем xbindkeysдля захвата пробел пресс (в данном случае релиз) и xdotoolдля вставки пробелов. Установите их, если у вас их нет в вашей системе:

sudo apt-get install xbindkeys xdotool

Конфигурационный файл xbindkeys должен был появиться в вашей домашней папке под именем, .xbindkeysrcсозданным так:

xbindkeys -d > ~/.xbindkeysrc

Скопируйте фрагмент и вставьте его в файл .xbindkeysrc.

"xdotool key KP_Space; xinput set-int-prop <kbd-id> "Device Enabled" 8 0; sleep .05 ; xinput set-int-prop <kbd-id> "Device Enabled" 8 1"
     m:0x0 + c:65 + Release
    space

Вот <kbd-id>идентификатор клавиатуры, который можно узнать по xinputкоманде. Теперь вы хотите настроить запуск xbindkeys при каждом запуске компьютера.

Откройте /etc/rc.localи добавьте строку xbindkeysраньше exit 0.

Вы сделали. Откройте терминал и введите, xbindkeysчтобы запустить его сейчас. Посмотрите, если это делает работу. Если после пропущенных пробелов двойные пробелы или символы не были обнаружены, измените значение delayв нашей команде ~/.xbindkeysrcсоответствующим образом и перезагрузите компьютер.

Ссылки:


У меня было несколько вопросов с этим ответом. Связанная команда xinput не отключает клавиатуру, она отключает сенсорный экран. Я попытался адаптировать команду для отключения клавиатуры, но это тоже не сработало. Правильная команда: xinput float 13 ; sleep .1 ; xinput reattach 13 3, которая делает работу. Однако само решение не работает. Когда я запускаю xbindkeys с помощью этой команды, пробел больше не входит в пробел. Он на короткое время отключает клавиатуру, как и должно быть, но пробел не вводится. Я делаю что-то неправильно?
Файз Салим,

Я также только что нашел способ отключить только пробел. Это зависит от xmodmap: xmodmap -e 'keycode 65=NoSymbol' ; sleep .1; xmodmap -e 'keycode 65=KP_Space
Файз Салим

@FaizSaleem, я сожалею о первой проблеме, это была моя ошибка. Я дал свой идентификатор клавиатуры, который равен 10. Вы можете найти свой, набрав xinput. Но нам это не нужно, вы нашли способ отключить пространство в одиночку.
daltonfury42

Что касается второго вопроса, я также тестировал только если клавиатура деактивируется. Я попытался вставить пробел вручную xdotool getactivewindow key KP_Space, но это не работает.
daltonfury42

xdotool key spaceтакже не работает, и любой другой метод, который я пытался вставить пробел, не удался.
Файз Салим,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.