Питон 2.7
Я пытаюсь зафиксировать нажатия клавиш в приложении, которое пишу, используя функцию getch() в модуле msvcrt. Некоторые из них просты, Enter — 13, Backspace — 8, .> — 46 и т. д. Некоторые клавиши, такие как Home, я не могу отработать.
Из строки документации для getch():
«Если нажатая клавиша была специальной функциональной клавишей, она вернет «000» или «xe0»; следующий вызов вернет код клавиши».
Я пытался проверить возвращаемое значение «000» или «xe0», но оно не возвращается. Что происходит, я получаю 224, и при следующем вызове getch() я получаю другой код, поэтому для Home это 71. Другие специальные клавиши ведут себя так же, End — 224 79, Insert — 224 82, Page Up — 224 73. и т.д. Я не могу объяснить это поведение; Я пытался посмотреть, помогает ли сложение двух значений вместе, а затем снятие степени двойки (т.е. 224 + 73 - 256), но это не дает ничего полезного.
Кто-нибудь понимает это поведение и/или есть ли у кого-нибудь совет о том, как захватить эти ключи (я не хотел жестко кодировать значения шаблона 224 + x, поскольку я не уверен, что они согласуются с другими пользователями)?
Спасибо.
РЕДАКТИРОВАТЬ: код, если кто-то хочет попробовать
import msvcrt
while True:
key = msvcrt.getch()
print ord(key)
'xe0'
, это'\xe0'
(обратите внимание на обратную косую черту, указывающую на экранирующую последовательность) .224
— это просто десятичное значение этого байта:ord('\xe0') == 224
- person Lukas Graf   schedule 26.08.2014