Я пытаюсь создать игру, где вы можете мгновенно передать вход пользователя на компьютер, вместо того чтобы нажимать enter
каждый раз. Я знаю, как это сделать, но я не могу найти номер юникода для клавиш со стрелками. Есть ли unicode для этого, или я просто собираюсь застрять с wasd?unicode для клавиш со стрелками?
class _GetchUnix:
def __init__(self):
import tty, sys
def __call__(self):
import sys, tty, termios
fd = sys.stdin.fileno()
old_settings = termios.tcgetattr(fd)
try:
tty.setraw(sys.stdin.fileno())
ch = sys.stdin.read(1)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
return ch
class _GetchWindows:
def __init__(self):
import msvcrt
def __call__(self):
import msvcrt
return msvcrt.getch()
class _Getch:
def __init__(self):
try:
self.impl = _GetchWindows()
except ImportError:
self.impl = _GetchUnix()
def __call__(self): return self.impl()
getch = Getch()
Я с использованием getch.impl()
в качестве входа проб или ошибок, как и в случае есть клавиша нажата, когда вызывается функция, она возвращает этот ключ, и движется дальше. Если клавиши не нажата, она просто включается.
Я использую Python 2.7.10
Если вы «Я пытаюсь обрабатывать события клавиатуры или состояния клавиш, то, что вы хотите, не является Unicode. Клавиатуры не работают. Проверьте документацию на все, что вы используете для обработки ввода с клавиатуры. Если вы используете что-то, что работает с символами вместо клавиш клавиатуры, вам нужно использовать что-то еще. – user2357112
«Я знаю, как это сделать» - можете ли вы рассказать нам, как вы это делаете? Как только мы узнаем, что вы сделали до сих пор, мы можем описать, что делать с клавишами со стрелками. –
Вы можете использовать глифы Юникода стрелки с кодовыми точками U + 2190 через U + 2193, которые соответствуют соответственно стрелкам влево, вверх, вправо и вниз (←, ↑, ↓, →). Однако ваш код с использованием 'msvcrt' неверен. См. Ответ @Terry Jan Reedy для деталей. – martineau