/* keypad test
* file name: keypadtest.c
* cmd: $gcc keypadtest.c -lcurses
* author: yilonglucky#gmail.com
* description: update with arrow keys if not 'q'
*/
#include <curses.h>
#define MAX(a, b) (a > b ? a: b)
#define MIN(a, b) (a < b ? a: b)
int main()
{
int x = 10;
int y = 10;
char ch = 'A';
chtype input;
initscr();
crmode();
noecho();
clear();
keypad(stdscr, TRUE);
mvaddch(y, x, ch);
while((input = getch()) && (input != ERR) && (input != 'q'))
{
if((input >= 'A' && input <= 'Z') || (input >= 'a') && (input <= 'z'))
{
ch = input;
}
else
{
switch(input)
{
case KEY_LEFT:
x = MAX(x-1, 0);
break;
case KEY_RIGHT:
x = MIN(x+1, COLS);
break;
case KEY_UP:
y = MAX(y-1, 0);
break;
case KEY_DOWN:
y = MIN(y+1, LINES);
break;
}
}
clear();
mvaddch(y, x, ch);
refresh();
}
endwin();
return 0;
}
curses库keypad函数样例
最新推荐文章于 2024-05-30 09:49:20 发布