Мне нужно проверить, нажаты ли клавиши со стрелками на ПК и что-то делать, пока он удерживается. Например, если:
если стрелка вверх удерживается, консоль будет печатать: вверх, вверх, вверх, вверх. -until. Как я могу это сделать? Я пробовал несколько библиотек, но каждый из них, кажется, регистрирует только щелчок, но не повторяется.
Спасибо!
Вы можете попробовать ysing библиотеку Pynput и прослушиватель клавиатуры.
Я сделал фрагмент для тестирования, надеюсь, что это поможет!
from pynput import keyboard
def keyPress(key):
if key == keyboard.Key.up:
print('Up pressed')
with keyboard.Listener(
on_press=keyPress) as kb:
kb.join()
И не забывайте
pip install pynput
РЕДАКТИРОВАТЬ:
Чтобы увидеть все нажатия клавиш, вы можете попробовать изменить обратный вызов:
try:
print('{0} pressed'.format(
key.char))
except :
print('key {0} pressed'.format(
key))
Блок исключений - это всего лишь способ обхода специальных клавиш
Не уверен в других платформах, но в Windows есть библиотека conio
которую вы можете использовать в C:
#include<stdio.h>
#include<conio.h>
int main() {
while (1) {
printf("%c", getch());
}
return 0;
}
и с Cython вы можете использовать эту getch()
таким же образом, если вы связываетесь с библиотекой conio
.
Это должно быть то, что пакет getch
делает для вас кросс-платформенным способом даже с помощью библиотеки termios
на платформах POSIX.
Если вы не хотите использовать нестандартную библиотеку, то в итоге вы получите код, зависящий от платформы, например, пакет getch
для вас:
import msvcrt
while True:
print(msvcrt.getch())