1 module keyboard;
2 
3 // Key constants. See also struct Event's key field.
4 enum Key {
5      
6     /* These are a safe subset of terminfo keys, which exist on all popular
7      * terminals. Termbox uses only them to stay truly portable.
8      */
9     f1             = 0xffff-0,
10     f2             = 0xffff-1,
11     f3             = 0xffff-2,
12     f4             = 0xffff-3,
13     f5             = 0xffff-4,
14     f6             = 0xffff-5,
15     f7             = 0xffff-6,
16     f8             = 0xffff-7,
17     f9             = 0xffff-8,
18     f10            = 0xffff-9,
19     f11            = 0xffff-10,
20     f12            = 0xffff-11,
21     insert         = 0xffff-12,
22     delete_        = 0xffff-13,
23     home           = 0xffff-14,
24     end            = 0xffff-15,
25     pgup           = 0xffff-16,
26     pgdn           = 0xffff-17,
27     arrowUp        = 0xffff-18,
28     arrowDown      = 0xffff-19,
29     arrowLeft      = 0xffff-20,
30     arrowRight     = 0xffff-21,
31     mouseLeft      = 0xffff-22,
32     mouseRight     = 0xffff-23,
33     mouseMiddle    = 0xffff-24,
34     mouseRelease   = 0xffff-25,
35     mouseWheelUp   = 0xffff-26,
36     mouseWheelDown = 0xffff-27,
37 
38     /* These are all ASCII code points below SPACE character and a BACKSPACE key. */
39     ctrl_tilde      = 0x00,
40     ctrl_2          = 0x00, /* clash with 'ctrl_tilde' */
41     ctrl_a          = 0x01,
42     ctrl_b          = 0x02,
43     ctrl_c          = 0x03,
44     ctrl_d          = 0x04,
45     ctrl_e          = 0x05,
46     ctrl_f          = 0x06,
47     ctrl_g          = 0x07,
48     backspace       = 0x08,
49     ctrl_h          = 0x08, /* clash with 'ctrl_backspace' */
50     tab             = 0x09,
51     ctrl_i          = 0x09, /* clash with 'tab' */
52     ctrl_j          = 0x0a,
53     ctrl_k          = 0x0b,
54     ctrl_l          = 0x0c,
55     enter           = 0x0d,
56     ctrl_m          = 0x0d, /* clash with 'enter' */
57     ctrl_n          = 0x0e,
58     ctrl_o          = 0x0f,
59     ctrl_p          = 0x10,
60     ctrl_q          = 0x11,
61     ctrl_r          = 0x12,
62     ctrl_s          = 0x13,
63     ctrl_t          = 0x14,
64     ctrl_u          = 0x15,
65     ctrl_v          = 0x16,
66     ctrl_w          = 0x17,
67     ctrl_x          = 0x18,
68     ctrl_y          = 0x19,
69     ctrl_z          = 0x1a,
70     esc             = 0x1b,
71     ctrl_lsqBracket = 0x1b, /* clash with 'esc' */
72     ctrl_3          = 0x1b, /* clash with 'esc' */
73     ctrl_4          = 0x1c,
74     ctrl_backslash  = 0x1c, /* clash with 'ctrl_4' */
75     ctrl_5          = 0x1d,
76     ctrl_rsqBracket = 0x1d, /* clash with 'ctrl_5' */
77     ctrl_6          = 0x1e,
78     ctrl_7          = 0x1f,
79     ctrl_slash      = 0x1f, /* clash with 'ctrl_7' */
80     ctrl_underscore = 0x1f, /* clash with 'ctrl_7' */
81     space           = 0x20,
82     backspace2      = 0x7f,
83     ctrl_8          = 0x7f /* clash with 'backspace2' */
84 }
85 
86 /* Currently there is only one modifier. See also struct Event's mod
87  * field.
88  */
89 enum Mod {
90     alt = 0x01
91 }