Python 2.7
Опитвам се да уловя натискания на клавиши в приложение, което пиша, използвайки функцията getch() в модула msvcrt. Някои са лесни, enter е 13, backspace е 8, .> е 46 и т.н. Някои клавиши, като Home, не мога да разбера.
От docstring за 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