|
|
static int c_interrupt_key (char ch) { return 0; } |
static void c_interactive_terminal (void) { fixterm (); } |
static void c_system_terminal (void) { resetterm (); } |
static int c_prepare_terminal (void) { initscr (); cbreak (); nonl (); noecho (); idlok (stdscr, TRUE); scrollok (stdscr, TRUE); meta (stdscr, TRUE); keypad (stdscr, TRUE); nodelay (stdscr, FALSE); saveterm (); refresh (); return 1; } |
static void
c_cleanup_terminal (void)
{
return; |
static void c_query_winsize (void) { |
static int
c_getvkey (void)
{
int c;
c = getch ();
if (c == -1)
return 0;
if (c < 0x100)
return c;
switch (c)
{
case KEY_F(1): return P4_KEY_k1;
case KEY_F(2): return P4_KEY_k2;
case KEY_F(3): return P4_KEY_k3;
case KEY_F(4): return P4_KEY_k4;
case KEY_F(5): return P4_KEY_k5;
case KEY_F(6): return P4_KEY_k6;
case KEY_F(7): return P4_KEY_k7;
case KEY_F(8): return P4_KEY_k8;
case KEY_F(9): return P4_KEY_k9;
case KEY_F(10): return P4_KEY_k0;
case KEY_LEFT: return P4_KEY_kl;
case KEY_RIGHT: return P4_KEY_kr;
case KEY_UP: return P4_KEY_ku;
case KEY_DOWN: return P4_KEY_kd;
case KEY_HOME: return P4_KEY_kh;
case KEY_END: return P4_KEY_kH;
case KEY_PPAGE: return P4_KEY_kP;
case KEY_NPAGE: return P4_KEY_kN;
case KEY_BACKSPACE: return |
static int c_keypressed (void) { int k; refresh (); nodelay (stdscr, TRUE); k = getch (); nodelay (stdscr, FALSE); return k != -1; } |
static int c_getkey (void) { int vkey; refresh (); if (PFE.wait_for_stdin) PFE.wait_for_stdin (); vkey = c_getvkey (); if (vkey > 0x100) return 0; else return vkey; } |
static void c_putc_noflush (char c) { addch (c); } |
static void c_put_flush () { refresh (); } |
static void c_putc (char c) { addch (c); refresh (); } |
static void c_puts (const char *s) { addstr ((char *)s); refresh (); } |
static void c_gotoxy (int x, int y) { move (y, x); } |
static void c_wherexy (int *x, int *y) { getyx (stdscr, *y, *x); } |
static void addxy (int x, int y) { int col, row; getyx (stdscr, row, col); move (row + y, col + x); } |
static void c_tput (int attr) { switch (attr) { case P4_TERM_GOLEFT: addxy (-1, 0); break; case P4_TERM_GORIGHT: addxy ( 1, 0); break; case P4_TERM_GOUP: addxy ( 0, -1); break; case P4_TERM_GODOWN: addxy ( 0, 1); break; case P4_TERM_CLRSCR: clear (); refresh (); break; case P4_TERM_HOME: move (0, 0); break; case P4_TERM_CLREOL: clrtoeol (); break; case P4_TERM_CLRDOWN: clrtobot (); break; case P4_TERM_BELL: beep (); break; case P4_TERM_NORMAL: attrset (A_NORMAL); break; case P4_TERM_BOLD_ON: standout (); break; case P4_TERM_BOLD_OFF: standend (); break; case P4_TERM_BRIGHT: attron (A_BOLD); break; case P4_TERM_REVERSE: attron (A_REVERSE); break; case P4_TERM_BLINKING: attron (A_BLINK); break; case P4_TERM_UNDERLINE_ON: attron (A_UNDERLINE); break; case P4_TERM_UNDERLINE_OFF: attroff (A_UNDERLINE); break; default: break; } } |
|
p4_term_struct p4_term_ios = { |