Die Werte der Pfeiltasten in Python finden: Warum sind sie Tripel?

Ich versuche zu finden, die Werte, die meinem lokalen system weist Sie auf die Pfeil-Schlüssel, die speziell in Python. Ich benutze folgende script um dies zu tun:

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()

Dann lief ich das Skript, und drücken OBEN UNTEN RECHTS LINKS, die mir in dieser Ausgabe:

$ 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

Dies ist anomal, weil es suggeriert, dass die Tasten registriert werden, als eine Art triple (27-91-6x) auf meinem system, wie jedes drücken einer Taste dauert, bis Sie drei Instanzen von get(). Im Vergleich dazu werden durch drücken von a,b,c und CTRL-C gibt:

you pressed 97
you pressed 98
you pressed 99
you pressed 3

Kann jemand mir erklären, warum die Werte von meinem Pfeil-Tasten scheinen gespeichert zu werden als verdreifacht? Warum ist das so? Ist das die gleiche, die auf allen Plattformen? (Ich bin mit Debian Linux). Wenn nicht, wie gehe ich bei der Speicherung der Werte den Pfeil-Tasten?

Ziel hier ist, dass ich versuche, ein Programm zu schreiben, die Bedürfnisse richtig zu erkennen Pfeil-Tasten und eine Funktion ausführen, je nachdem, auf welchen Pfeil-Taste gedrückt wurde.

InformationsquelleAutor der Frage Newb | 2014-03-14

Schreibe einen Kommentar