카테고리 없음

Linux에서 getch() 구현하기

벅스바니 2010. 1. 19. 15:33
리눅스에서는 기본적으로 문자단위를 지원하지 않기 때문에,
getchar()를 하더라도 enter가 한번 들어가 줘야합니다.
당연하 도스의 getch()는 에러가 납니다.

때문에 한 글자만 받으려면 따로 함수를 만들어줘야합니다.
간단하게 구현된 함수입니다..

termios.h는 POSIX에서 규정하는 표준 Terminal I/O에 대한 설정입니다.

unistd.h 또한 POSIX에서 규정는 내용으로, Unicode/UTF-8 및 기타 표준 라이브러리가 들어있는 것으로
추정됩니다.(자세한 자료가 없어서리...)


#include <termios.h>
#include <unistd.h>

int getch(void)
{
struct termios oldt,newt;
int ch;

tcgetattr(STDIN_FILENO,&oldt);
newt=oldt;
newt.c_lflag&=~(ICANON|ECHO);
tcsetattr(STDIN_FILENO,TCSANOW,&newt);
ch=getchar();
tcsetattr(STDIN_FILENO,TCSANOW,&oldt);
return ch;
}