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