Могу ли я включить 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соответствующим образом и перезагрузите компьютер.

Ссылки:

daltonfury42
источник
У меня было несколько вопросов с этим ответом. Связанная команда 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также не работает, и любой другой метод, который я пытался вставить пробел, не удался.
Файз Салим,