getch() を使用してプログラムからエスケープするために ESC を使用しようとしています。私の問題を示すために小さなプログラムを作成しました。
#include <ncurses.h>
int main(void) {
int key = 0;
initscr();
noecho();
keypad(stdscr, TRUE);
do {
key = getch();
clear();
mvprintw(0, 0, "Key = %d\n", key);
refresh();
} while (key != 27);
clear();
refresh();
endwin();
return 0;
}
ユーザーが矢印キーまたはキーパッド (どちらか便利な方) を使用できるようにしようとしています。
問題はキーパッドにあります (numlock がオンになっているかどうかに関係なく)。プログラムをコンパイルして実行し、この簡単なテストでテンキーを使用しようとすると、テンキーに触れるとすぐに終了します。while (key != 27) (esc being 27) 条件を削除すると、キーが読み取られ、その番号が表示されます。テンキーキーが登録されたときにループを終了するのはなぜですか
ENTER 343
UP 120
DOWN 114
LEFT 116
RIGHT 118
どんな助けでも大歓迎です!