term.h - iomenu - interactive terminal-based selection menu
(HTM) git clone git://bitreich.org/iomenu git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/iomenu
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) Tags
(DIR) README
(DIR) LICENSE
---
term.h (949B)
---
1 #ifndef TERM_H
2 #define TERM_H
3
4 #include <stdint.h>
5 #include <stdio.h>
6 #include <sys/ioctl.h>
7 #include <termios.h>
8 #include <unistd.h>
9
10 #define TERM_KEY_CTRL(c) ((c) & ~0x40)
11 #define TERM_KEY_ALT(c) (0x100 + (c))
12 #define TERM_KEY_CSI(c, i) (0x100 + (c) * 0x100 + (i))
13
14 enum term_key {
15 TERM_KEY_ESC = 0x1b,
16 TERM_KEY_DELETE = 127,
17 TERM_KEY_BACKSPACE = TERM_KEY_CTRL('H'),
18 TERM_KEY_TAB = TERM_KEY_CTRL('I'),
19 TERM_KEY_ENTER = TERM_KEY_CTRL('J'),
20 TERM_KEY_ARROW_UP = TERM_KEY_CSI('A', 0),
21 TERM_KEY_ARROW_DOWN = TERM_KEY_CSI('B', 0),
22 TERM_KEY_PAGE_UP = TERM_KEY_CSI('~', 5),
23 TERM_KEY_PAGE_DOWN = TERM_KEY_CSI('~', 6),
24 };
25
26 struct term {
27 struct winsize winsize;
28 struct termios termios;
29 };
30
31 extern struct term term;
32
33 int term_width_at_pos(uint32_t codepoint, int pos);
34 int term_at_width(char const *s, int width, int pos);
35 int term_raw_on(int fd);
36 int term_raw_off(int fd);
37 int term_get_key(FILE *fp);
38
39 #endif