Add insert/delete and document keys, and documentation.
[gpxe.git] / src / include / gpxe / keys.h
1 #ifndef _GPXE_KEYS_H
2 #define _GPXE_KEYS_H
3
4 /** @file
5  *
6  * Key definitions
7  *
8  */
9
10 /*
11  * Symbolic names for some standard ASCII characters
12  *
13  */
14
15 #define NUL             0x00
16 #define CTRL_A          0x01
17 #define CTRL_B          0x02
18 #define CTRL_C          0x03
19 #define CTRL_D          0x04
20 #define CTRL_E          0x05
21 #define CTRL_F          0x06
22 #define CTRL_G          0x07
23 #define CTRL_H          0x08
24 #define CTRL_I          0x09
25 #define CTRL_J          0x0a
26 #define CTRL_K          0x0b
27 #define CTRL_L          0x0c
28 #define CTRL_M          0x0d
29 #define CTRL_N          0x0e
30 #define CTRL_O          0x0f
31 #define CTRL_P          0x10
32 #define CTRL_Q          0x11
33 #define CTRL_R          0x12
34 #define CTRL_S          0x13
35 #define CTRL_T          0x14
36 #define CTRL_U          0x15
37 #define CTRL_V          0x16
38 #define CTRL_W          0x17
39 #define CTRL_X          0x18
40 #define CTRL_Y          0x19
41 #define CTRL_Z          0x1a
42
43 #define BACKSPACE       CTRL_H
44 #define TAB             CTRL_I
45 #define LF              CTRL_J
46 #define CR              CTRL_M
47 #define ESC             0x1b
48
49 /*
50  * Special keys outside the normal ASCII range 
51  *
52  *
53  * The names are chosen to match those used by curses.  The values are
54  * chosen to facilitate easy conversion from a received ANSI escape
55  * sequence to a KEY_XXX constant.  The KEY_XXX constant is simply
56  * 0x100 plus the first byte following CSI in the ANSI escape
57  * sequence.  For example, KEY_LEFT is 0x144, since a left cursor key
58  * is transmitted as the ANSI sequence "^[[D".
59  */
60
61 #define KEY_ANSI( character ) ( 0x100 + (character) )
62
63 #define KEY_MIN         0x101
64 #define KEY_UP          KEY_ANSI ( 'A' )        /**< Up arrow */
65 #define KEY_DOWN        KEY_ANSI ( 'B' )        /**< Down arrow */
66 #define KEY_RIGHT       KEY_ANSI ( 'C' )        /**< Right arrow */
67 #define KEY_LEFT        KEY_ANSI ( 'D' )        /**< Left arrow */
68 #define KEY_END         KEY_ANSI ( 'E' )        /**< End */
69 #define KEY_HOME        KEY_ANSI ( 'H' )        /**< Home */
70 #define KEY_IC          KEY_ANSI ( '2' )        /**< Insert */
71 #define KEY_DC          KEY_ANSI ( '3' )        /**< Delete */
72 #define KEY_PPAGE       KEY_ANSI ( '5' )        /**< Page up */
73 #define KEY_NPAGE       KEY_ANSI ( '6' )        /**< Page down */
74 #define KEY_MAX         0x1ff
75
76 /* Not in the [KEY_MIN,KEY_MAX] range; terminals seem to send these as
77  * normal ASCII values.
78  */
79 #define KEY_BACKSPACE   BACKSPACE
80 #define KEY_ENTER       LF
81
82 #endif /* _GPXE_KEYS_H */