ncurses5에서 실행 중이지만 최근에 새로운 환경 (putty/xterm/virtualbox)에서 curses6으로 컴파일 된 ncurses 프로그램을 테스트 중이며 모든 기능 키를 인식 할 수 없습니다. 화살표 키는 제대로 작동하지만 이스케이프 시퀀스를 사용하는 키만 실패하는 것처럼 보입니다.ncurses 기능 키만 이스케이프를 반환합니다.
chtype c;
initscr();
start_color();
noecho();
cbreak();
intrflush(stdscr, TRUE);
keypad(stdscr, TRUE);
c=getch();
printf("c=%d\n", (int)c);
F1을 누르면 "c = 27"이 반환됩니다. 나는 퍼티를 사용 중이며 TERM이 xterm으로 설정된 다양한 설정을 시도했다. 저주 외부에서 F1은 예상대로 \ EOP를 반환하고 termcap에 함수 키를 적절하게 정의하는 것으로 보이는 TERM = xterm을 사용하고 있습니다. Keypad() 루틴은 getch/wgetch 루틴이 265 KEY_F (1)에 해당하는 숫자 키를 리턴한다고 가정하지만 break, raw, notimeout 등의 다양한 조합으로 27 개를 얻을 수는 없다는 것을 이해합니다.
예, xterm 설정을 확인하고 기능 키가 올바른 이스케이프 시퀀스를 반환하는지 확인했습니다. TERM은 퍼티에서도 xterm으로 설정됩니다. 문제는 wgetchar()에 실제 escape 시퀀스 대신 265의 숫자 값을 반환한다고 알려주는 keypad() 루틴을 사용하더라도 ncurses가 첫 번째 char (ESC) 만 읽는 것입니다. . – AJJ
아마도 ncurses의 버그는 아니지만 S/O는 대화 상자에 적합하지 않습니다. [bug-ncurses] (https://invisible-island.net/ncurses/ncurses.faq.html#how_to_report)를 시도하십시오. –