Python3에서 십자 키를 입력한 판정을 받는 방법

7320 단어 keypressPythonPython3

입문


curses 모듈을 사용하면 키 판정을 할 수 있습니다.다음은 의존하지 않는 방법들입니다.
https://docs.python.org/ja/3/library/curses.html#constants

정면


자기가 쓴 노트야.우직한 설치입니다.
하고 싶은 일은 십자키 등 특수한 문자를 입력한 것을 검출하는 것이다.
Unicode 제어 문자를 알아야 합니다.
wikipedia

막힌 곳


getch는 모든 문자의 입력을 가져옵니다.그러나 화살표 키는 문자 입력이 세 번 있습니다.예를 들어, 위쪽 화살표는 27 91 65 라고 합니다.이렇게 되면 화살표 키 등 특수 키를 판정할 수 없을 뿐만 아니라 원하지 않는 입력도 받을 수 있다.따라서 다음과 같이 설치했습니다.

출처


getch 문자 입력 함수 수락
ord는 문자를 유니코드로 변환하는 함수입니다.
chr는 유니코드를 문자로 변환하는 함수입니다.
자기가 쓰는 디버깅도 겸하여 불필요한 코드가 되었다.
# inputの代わりに、1文字ずつ入力を受け取る関数を用意。
# try の中はWindows用、except 野中はLinux用
try:
    from msvcrt import getch
except ImportError:
    import sys
    import tty
    import termios
    def getch():

            fd = sys.stdin.fileno()
            old = termios.tcgetattr(fd)
            try:
                tty.setraw(fd)
                return sys.stdin.read(1)
            finally:
                termios.tcsetattr(fd, termios.TCSADRAIN, old)

# Unicode制御文字のエイリアス
EOT = 3
TAB = 9
ESC = 27

# メインループ
while True:
    key = ord(getch())
    if key == EOT:
        break
    elif key == TAB:
        print('keydown TAB')
    elif key == ESC:
        key = ord(getch())
        if key == ord('['):
            key = ord(getch())
            if key == ord('A'):
                print('keydown uparrow')
                continue
            elif key == ord('B'):
                print('keydown downarrow')
                continue
            elif key == ord('C'):
                print('keydown leftarrow')
                continue
            elif key == ord('D'):
                print('keydown rightarrow')
                continue
    else:
        message = f'keydown {chr(key)}'
        print(message)

실행 결과



나는 이미 좋은 판정을 받았다는 것을 안다.

끝날 때


이번에는 코드가 지루해서 실시하지 않았지만 특수 키를 입력할 때의 유니코드를 보고 조건 지점에서 모두 열거하면 판정할 수 있다.이 글의 유사한 코드는 자체 제작 응용 프로그램에서 유용할 수 있다.만약 좋은 작법을 아는 다른 사람이 있다면 저에게 알려주세요.

참고 자료

  • https://torina.top/detail/428/
  • https://stackoverflow.com/questions/12175964/python-method-for-reading-keypress
  • 좋은 웹페이지 즐겨찾기