我试图找到我的本地系统分配给箭头键的值,特别是在 Python 中。我正在使用以下脚本来执行此操作:
import sys,tty,termios
class _Getch:
def __call__(self):
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
def get():
inkey = _Getch()
while(1):
k=inkey()
if k!='':break
print 'you pressed', ord(k)
def main():
for i in range(0,25):
get()
if __name__=='__main__':
main()
然后我运行脚本,然后点击 UP DOWN RIGHT LEFT,这给了我这个输出:
$ python getchar.py
you pressed 27
you pressed 91
you pressed 65
you pressed 27
you pressed 91
you pressed 66
you pressed 27
you pressed 91
you pressed 67
you pressed 27
you pressed 91
you pressed 68
这是异常的,因为它表明箭头键在我的系统上注册为某种形式的三元组 (27-91-6x),因为每次按下箭头键都会占用三个 get() 实例。相比之下,按 a、b、c 和 CTRL-C 会给出:
you pressed 97
you pressed 98
you pressed 99
you pressed 3
谁能向我解释为什么我的箭头键的值似乎存储为三元组?为什么会这样?这在所有平台上都一样吗?(我使用的是 Debian Linux。)如果没有,我应该如何存储箭头键的值?
这里的最终目标是我正在尝试编写一个程序,该程序需要正确识别箭头键并根据按下的箭头键执行功能。