summaryrefslogtreecommitdiff
path: root/libterm/term.h
blob: df3d7b1b7ecacc26b6a650169cd5fbd9d947c019 (plain) (blame)
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