#ifndef __LIBTERM_TERM_H #define __LIBTERM_TERM_H #include #include #include #include #include #include #include #include #include #include #include #include #include "screen_modes.h" #include "debug.h" #define ASSERT assert enum TERM_KEY_ACTION { KEY_NULL = 0, /* NULL */ CTRL_A = 1, /* Ctrl+a */ CTRL_B = 2, /* Ctrl-b */ CTRL_C = 3, /* Ctrl-c */ CTRL_D = 4, /* Ctrl-d */ CTRL_E = 5, /* Ctrl-e */ CTRL_F = 6, /* Ctrl-f */ CTRL_H = 8, /* Ctrl-h */ TAB = 9, /* Tab */ CTRL_K = 11, /* Ctrl+k */ CTRL_L = 12, /* Ctrl+l */ ENTER = 13, /* Enter */ CTRL_N = 14, /* Ctrl-n */ CTRL_P = 16, /* Ctrl-p */ CTRL_T = 20, /* Ctrl-t */ CTRL_U = 21, /* Ctrl+u */ CTRL_W = 23, /* Ctrl+w */ ESC = 27, /* Escape */ BACKSPACE = 127 /* Backspace */ }; #define TK_ENTER 13 #define TK_ESC 27 #define TK_BACKSPACE 127 typedef struct term_screen { int ifd, ofd; struct termios orig_i, orig_o; struct termios raw_i, raw_o; screen_mode_e mode; } term_screen; int term_init( term_screen *ts ); int term_set_speed( term_screen *ts, speed_t speed); int term_get_maxcol( term_screen *ts ); int term_get_maxrow( term_screen *ts ); int term_cur_get_c( term_screen *ts ); int term_cur_get_r( term_screen *ts ); int term_cur_set_c( term_screen *ts, unsigned int pc ); int term_cur_set_r( term_screen *ts, unsigned int pr ); int term_cur_set_cr( term_screen *ts, unsigned int pc , unsigned int pr ); int term_clr_scr( term_screen *ts ); int term_set_raw_mode( term_screen *ts ); int term_mode_rows( term_screen *ts ); int term_mode_columns( term_screen *ts ); void term_set_orig_mode( term_screen *ts ); #endif