1 #ifndef __VTERM_INPUT_H__
2 #define __VTERM_INPUT_H__
3 
4 typedef enum {
5   VTERM_MOD_NONE  = 0x00,
6   VTERM_MOD_SHIFT = 0x01,
7   VTERM_MOD_ALT   = 0x02,
8   VTERM_MOD_CTRL  = 0x04,
9 
10   VTERM_ALL_MODS_MASK = 0x07
11 } VTermModifier;
12 
13 // The order here must match keycodes[] in src/keyboard.c!
14 typedef enum {
15   VTERM_KEY_NONE,
16 
17   VTERM_KEY_ENTER,
18   VTERM_KEY_TAB,
19   VTERM_KEY_BACKSPACE,
20   VTERM_KEY_ESCAPE,
21 
22   VTERM_KEY_UP,
23   VTERM_KEY_DOWN,
24   VTERM_KEY_LEFT,
25   VTERM_KEY_RIGHT,
26 
27   VTERM_KEY_INS,
28   VTERM_KEY_DEL,
29   VTERM_KEY_HOME,
30   VTERM_KEY_END,
31   VTERM_KEY_PAGEUP,
32   VTERM_KEY_PAGEDOWN,
33 
34   // F1 is VTERM_KEY_FUNCTION(1), F2 VTERM_KEY_FUNCTION(2), etc.
35   VTERM_KEY_FUNCTION_0   = 256,
36   VTERM_KEY_FUNCTION_MAX = VTERM_KEY_FUNCTION_0 + 255,
37 
38   // keypad keys
39   VTERM_KEY_KP_0,
40   VTERM_KEY_KP_1,
41   VTERM_KEY_KP_2,
42   VTERM_KEY_KP_3,
43   VTERM_KEY_KP_4,
44   VTERM_KEY_KP_5,
45   VTERM_KEY_KP_6,
46   VTERM_KEY_KP_7,
47   VTERM_KEY_KP_8,
48   VTERM_KEY_KP_9,
49   VTERM_KEY_KP_MULT,
50   VTERM_KEY_KP_PLUS,
51   VTERM_KEY_KP_COMMA,
52   VTERM_KEY_KP_MINUS,
53   VTERM_KEY_KP_PERIOD,
54   VTERM_KEY_KP_DIVIDE,
55   VTERM_KEY_KP_ENTER,
56   VTERM_KEY_KP_EQUAL,
57 
58   VTERM_KEY_MAX, // Must be last
59   VTERM_N_KEYS = VTERM_KEY_MAX
60 } VTermKey;
61 
62 #define VTERM_KEY_FUNCTION(n) (VTERM_KEY_FUNCTION_0+(n))
63 
64 #endif
65