普通にgetch()
すると、リターン入力までが
まとめて実行され、cbreak()
してからgetch()
する
と、1字ずつ即時に値が返されることを調べよう。
#include <curses.h>
#include <unistd.h> /* for sleep() */
int main()
{
int ch;
initscr();
noecho();
nocbreak(); /* まずはcbreakなしで入力 */
addstr("アルファベットを適当に叩いてリターンを押してね\n");
refresh();
while ('\n' != (ch=getch())) {
/* リターンが入力されるまで繰り返す */
printw("%cがタイプされました\n", ch);
refresh();
}
addstr("cbreak無し、完了です。続けてどうぞ。\n");
refresh();
cbreak(); /* ここで cbreak()!! */
while ('\n' != (ch=getch())) {
/* リターンが入力されるまで繰り返す */
printw("%cがタイプされました\n", ch);
refresh();
}
addstr("cbreakあり、完了です\n");
refresh();
sleep(3);
endwin();
}