]> git.tdb.fi Git - libs/gui.git/blob - source/input/keys.h
63d0926cf48565ea806faec7593819660a8d9bda
[libs/gui.git] / source / input / keys.h
1 #ifndef MSP_INPUT_KEYS_H_
2 #define MSP_INPUT_KEYS_H_
3
4 #include <msp/strings/lexicalcast.h>
5
6 namespace Msp {
7 namespace Input {
8
9 enum Key
10 {
11         KEY_NONE = 0x00,
12
13         // Codes 0x01-0x7E reserved for ASCII
14         KEY_BACKSPACE = 0x08,
15         KEY_TAB = 0x09,
16         KEY_ENTER = 0x0A,
17         KEY_ESC = 0x1B,
18         KEY_SPACE = 0x20,
19
20         KEY_APOSTROPHE = 0x27,
21         KEY_PLUS = 0x2B,
22         KEY_COMMA = 0x2C,
23         KEY_MINUS = 0x2D,
24         KEY_PERIOD = 0x2E,
25         KEY_SLASH = 0x2F,
26
27         KEY_0 = 0x30,
28         KEY_1,
29         KEY_2,
30         KEY_3,
31         KEY_4,
32         KEY_5,
33         KEY_6,
34         KEY_7,
35         KEY_8,
36         KEY_9,
37
38         KEY_SEMICOLON = 0x3B,
39         KEY_LESS = 0x3C,
40         KEY_EQUAL = 0x3D,
41
42         KEY_A = 0x41,
43         KEY_B,
44         KEY_C,
45         KEY_D,
46         KEY_E,
47         KEY_F,
48         KEY_G,
49         KEY_H,
50         KEY_I,
51         KEY_J,
52         KEY_K,
53         KEY_L,
54         KEY_M,
55         KEY_N,
56         KEY_O,
57         KEY_P,
58         KEY_Q,
59         KEY_R,
60         KEY_S,
61         KEY_T,
62         KEY_U,
63         KEY_V,
64         KEY_W,
65         KEY_X,
66         KEY_Y,
67         KEY_Z,
68
69         KEY_BRACKET_L = 0x5B,
70         KEY_BACKSLASH = 0x5C,
71         KEY_BRACKET_R = 0x5D,
72         KEY_GRAVE = 0x60,
73
74         // Various non-ASCII characters
75         KEY_ADIAERESIS = 0x80,
76         KEY_ODIAERESIS,
77         KEY_UDIAERESIS,
78         KEY_ARING,
79
80         // Arrow keys
81         KEY_LEFT = 0xA0,
82         KEY_RIGHT,
83         KEY_UP,
84         KEY_DOWN,
85
86         // The block above arrow keys
87         KEY_HOME = 0xA8,
88         KEY_END,
89         KEY_PGUP,
90         KEY_PGDN,
91         KEY_INSERT,
92         KEY_DELETE,
93
94         // Function keys
95         KEY_F1 = 0xB1,
96         KEY_F2,
97         KEY_F3,
98         KEY_F4,
99         KEY_F5,
100         KEY_F6,
101         KEY_F7,
102         KEY_F8,
103         KEY_F9,
104         KEY_F10,
105         KEY_F11,
106         KEY_F12,
107
108         // Modifier keys
109         KEY_SHIFT_L = 0xC0,
110         KEY_SHIFT_R,
111         KEY_CTRL_L,
112         KEY_CTRL_R,
113         KEY_ALT_L,
114         KEY_ALT_R,
115         KEY_SUPER_L,
116         KEY_SUPER_R,
117         KEY_CAPS_LOCK,
118         KEY_SCROLL_LOCK,
119         KEY_NUM_LOCK,
120
121         // Keypad
122         KEY_KP0 = 0xD0,
123         KEY_KP1,
124         KEY_KP2,
125         KEY_KP3,
126         KEY_KP4,
127         KEY_KP5,
128         KEY_KP6,
129         KEY_KP7,
130         KEY_KP8,
131         KEY_KP9,
132         KEY_KP_ADD,
133         KEY_KP_SUBTRACT,
134         KEY_KP_MULTIPLY,
135         KEY_KP_DIVIDE,
136         KEY_KP_SEPARATOR,
137
138         // Miscellaneous keys
139         KEY_PAUSE = 0xE0,
140         KEY_PRINT_SCREEN,
141         KEY_MENU,
142         KEY_BACK,
143         KEY_VOLUME_UP,
144         KEY_VOLUME_DOWN,
145
146         N_KEYS_ = 0x100
147 };
148
149 enum MouseAxis
150 {
151         MOUSE_X_AXIS = 0,
152         MOUSE_Y_AXIS,
153 };
154
155 enum MouseButton
156 {
157         MOUSE_LEFT = 1,
158         MOUSE_MIDDLE,
159         MOUSE_RIGHT,
160         MOUSE_WHEEL_UP,
161         MOUSE_WHEEL_DOWN
162 };
163
164 void operator>>(const LexicalConverter &, Key &);
165 void operator<<(LexicalConverter &, Key);
166 void operator>>(const LexicalConverter &, MouseAxis &);
167 void operator<<(LexicalConverter &, MouseAxis);
168 void operator>>(const LexicalConverter &, MouseButton &);
169 void operator<<(LexicalConverter &, MouseButton);
170
171 } // namespace Input
172 } // namespace Msp
173
174 #endif