Могу ли я включить 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.