Поиск значений клавиш со стрелками в Python: почему они утраиваются?

Я пытаюсь найти значения, которые моя локальная система присваивает клавишам со стрелками, особенно в 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.) Если нет, то как мне хранить значения клавиш со стрелками?

Конечная цель здесь заключается в том, что я пытаюсь написать программу, которая должна правильно распознавать клавиши со стрелками и выполнять функцию в зависимости от того, какая клавиша со стрелкой была нажата.

Ответы на вопрос(2)

Ваш ответ на вопрос