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に設定してさまざまな設定を試みました。 cursesの外でF1は\ EOPを期待どおりに返しますが、私はTERM = xtermを使用しています。これはtermcapでファンクションキーを適切に定義するようです。私はkeypad()ルーチンがgetch/wgetchルーチンに265 KEY_F(1)に相当する数字キーを返すと仮定していると理解していますが、break、raw、notimeoutなどのさまざまな組み合わせで27を得ることはできません。
はい、xterm設定をチェックアウトして、ファンクションキーが正しいエスケープシーケンスを返していることを確認しました。 TERMはパテでもxtermに設定されています。問題は、実際のエスケープシーケンスの代わりに265の数値を返すようにwgetchar()に指示すると思われるkeypad()ルーチンを使用していても、ncursesは最初のchar(ESC) 。 – AJJ
おそらくncursesのバグではありませんが、S/Oはダイアログにうまく対応していません。 [bug-ncurses](https://invisible-island.net/ncurses/ncurses.faq.html#how_to_report)を試してください。 –