tty — 터미널 제어 함수
tty — 터미널 제어 함수
tty 모듈은 tty를 cbreak 모드와 raw 모드로 전환하기 위한 함수들을 정의해요.
가용성(Availability): Unix. termios 모듈이 필요하므로 Unix에서만 동작해요.
본문
tty 모듈은 다음 함수들을 정의해요:
tty.cfmakeraw(mode)
termios.tcgetattr()이 반환하는 것 같은 tty 속성 목록 mode를 raw 모드의 tty 속성 목록으로 변환해요. 버전 3.12에서 추가되었어요.
tty.cfmakecbreak(mode)
termios.tcgetattr()이 반환하는 것 같은 tty 속성 목록 mode를 cbreak 모드의 tty 속성 목록으로 변환해요. 이는 mode에서 ECHO와 ICANON 로컬 모드 플래그를 지우고 최소 입력을 지연 없이 1바이트로 설정해요. 버전 3.12에서 추가되었어요. 버전 3.12.2에서 변경: ICRNL 플래그는 더 이상 지워지지 않아요. 이는 Linux와 macOS의 stty cbreak 동작 및 setcbreak()이 역사적으로 해온 것과 일치해요.
tty.setraw(fd, when=termios.TCSAFLUSH)
파일 디스크립터 fd의 모드를 raw로 바꿔요. when이 생략되면 termios.TCSAFLUSH로 기본 설정되고, termios.tcsetattr()에 전달돼요. fd를 raw 모드로 설정하기 전에 termios.tcgetattr()의 반환값이 저장되며, 이 값이 반환돼요. 버전 3.12에서 변경: 반환값이 이제 None 대신 원래 tty 속성이에요.
tty.setcbreak(fd, when=termios.TCSAFLUSH)
파일 디스크립터 fd의 모드를 cbreak로 바꿔요. when이 생략되면 termios.TCSAFLUSH로 기본 설정되고 termios.tcsetattr()에 전달돼요. 이는 ECHO와 ICANON 로컬 모드 플래그를 지우고 최소 입력을 지연 없이 1바이트로 설정해요. 버전 3.12에서 변경: 반환값이 이제 None 대신 원래 tty 속성이에요. 버전 3.12.2에서 변경: ICRNL 플래그는 더 이상 지워지지 않아요. 이는 Python 3.11 이하의 동작을 되살리고, Linux, macOS, BSD가 stty(1) 매뉴얼 페이지에서 cbreak 모드에 대해 설명하는 것과 일치해요.
또한 termios 모듈은 저수준 터미널 제어 인터페이스를 제공해요.