ncurses에서 function key 입력에 대한 문제
글쓴이: sepiro2000 / 작성시간: 수, 2008/10/22 - 4:51오후
keypad() 를 TRUE로 설정하고 getch() 를 통해 입력을 받았습니다.
그런데 F1~F4는 인식이 안되고, F5~F12만 인식이 됩니다.
콘솔에서 직접하면 문제가 없지만 putty 같은 것을 이용해서 SSH 접속을 해서 하면 위와 같은 문제가 발생합니다.
왜 이런 문제가 발생하는 것일까요??
참고로 putty로 접속한 후 LinM을 실행시키면 여기서는 또 모든 기능키가 인식이 됩니다.
제 프로그램에 문제가 있는 것 같은데요. 왜 그런걸까요?
Forums:
키가 다르기 때문입니다.
LinM 에선 keyset을 여러개 설정해서 사용합니다.
키셋이 한가지만 존재 하는게 아니라,
각 콘솔 마다 다 입력되는 키가 다르기 때문이거든요.
LinM의 /etc/linm/keyset.cfg 파일을 보고 내용을 보면,
키값이 10진수로 265도 될수 있고, 다른 콘솔에선 한번 누르면 4개가
한꺼번에(27, 91, 49, 49) 들어오는 것도 있습니다.
따라서 여러개의 키를 다양하게 인식 시켜야 가능합니다.
답변이 되었는지 모르겠네요.
https://github.com/la9527
어떻게 인식시키죠?
답변 감사합니다. (__)
4개가 한꺼번에 들어온다면 어떤 방법으로 인식시켜야 하는 건가요?
지금 저는 switch(key) 와 case 문 으로 인식시키고 있거든요..
linM 도 ncurses
linM 도 ncurses 사용하나요 ? 그런데도 뭔 keyset 을 따로 정의한다면 굉장한 삽질을 하는 ...
putty 로 접속한 후 echo -e "\005" 와 echo $TERM 의 결과가 일치하는 지 확인해보세요.
(대소문자는 상관없습니다)
putty 라는 terminal type 에 대한 정의는 이미 /etc/termcap 에 되어 있습니다.
ncurses 에서 제공하는 demo_termcap.c 정도만 응용하셔도 ...
fedora8 에서 ncurses-devel 을 설치하고 테스트한 결과입니다.
k1 ~ k; 는 F1 ~ F10 을 지칭하는 예약어입니다.
\E 는 0x1B 에 해당하는 문자입니다. ESC 말입니다.
추가.
혹시 오해하실 것 같아 덧붙이는데요,
저걸 파싱해서 뭘 어떻게 하라는 게 아니라... 코드는 터미널에 따라 틀리다는 것을 말씀드리려한거고
ncurses 는 이미 wrapping 을 해서 투명한 처리를 하고 있습니다.
demo_keyok.c 를 보시면 됩니다.
OTL
ncurses를 좀더
ncurses를 좀더 공부해야겠네요.
좋은 방법이네요. LinM 도 참고 삼아야 겠습니다.
답변 감사합니다.
https://github.com/la9527
댓글 달기