1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
#ifndef __LIBTERM_TERM_H
#define __LIBTERM_TERM_H
#include <termios.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#include <unistd.h>
#include "screen_modes.h"
#include "debug.h"
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 */
QMARK = 63, /* ? */
BACKSPACE = 127 /* Backspace */
};
#define TK_ENTER 13
#define TK_ESC 27
#define TK_BACKSPACE 8
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
|