Как избежать автоматического повторного нажатия клавиши, если она нажата?
В настоящее время я пишу программу с библиотекой "клавиатура" в Python 3 на Debian.
Так что, если я удерживаю клавишу. Библиотека клавиатуры получает несколько KeyDownEvents вместо одного в KeyPress, но мне нужно только первое событие. Есть ли способ подавления автоповтора?
Я уже пробовал несколько команд терминала в python, которые должны остановить автоповтор клавиатуры, но это в основном работает только для печатных символов, но мне также нужно только 1 событие, если, например, нажата клавиша shift
Мой вывод заключается в том, что команды терминала вообще не влияют на библиотеку клавиатуры.
Есть идеи?
С наилучшими пожеланиями
2 ответа
Если вы согласны внести общесистемные изменения, вы можете отключить повтор клавиш с помощью:
import os
os.system('xset r off')
Вы можете изменить его обратно при выходе из программы с помощью:
os.system('xset r on')
if keyboard.is_pressed("b"):
while keyboard.is_pressed("b"):
print("")#something to do otherwise error occurs
Программа будет ждать, пока клавиша не будет отпущена, чтобы выполнить приведенный ниже код. Вы можете поэкспериментировать с многопоточностью, если вам нужно, чтобы ваша программа продолжала выполнять код, пока нажата клавиша. «b» используется в качестве ключа в коде, но вы можете изменить его на другую букву.