如何为python控制台应用程序捕获特殊密钥

2024-05-19 16:26:01 发布

您现在位置:Python中文网/ 问答频道 /正文

Python 2.7

我试图在使用msvcrt模块中的getch()函数编写的应用程序中捕捉按键。有些很简单,enter是13,backspace是8,.>;是46等等。有些键,比如Home,我无法计算。在

从getch()的docstring中:

如果按下的键是特殊功能键,则返回“000”或“xe0”;下一次调用将返回键码

我尝试过测试返回值“000”或“xe0”,但没有返回。结果是我得到了224个返回值,在下一次调用getch()时,我得到了另一个代码,所以对于Home,它是71。其他的特殊键也是这样的,End是22479,Insert是22482,Page Up是22473等等。我无法解释这种行为;我尝试过将这两个值相加,然后去掉两个值的幂函数(即224+73-256),但它没有产生任何有用的结果。在

有没有人了解这种行为和/或有人对如何捕获这些密钥有任何建议(我不想硬编码224+x模式值,因为我不确定这些值是否与其他用户一致)?在

谢谢。在

编辑: 如果有人想试试的话

import msvcrt

while True:
    key = msvcrt.getch()
    print ord(key)

Tags: 模块key函数gt应用程序home按键docstring
1条回答
网友
1楼 · 发布于 2024-05-19 16:26:01

getch()返回的上述值不是'xe0',而是'\xe0'-注意反斜杠表示escape sequence224是该字节的十进制值:

ord('\xe0') == 224

所以在你的情况下,这应该是有效的:

^{pr2}$

相关问题 更多 >