Euphoria
key.cc
Go to the documentation of this file.
1 #include "window/key.h"
2 
3 #include "assert/assert.h"
4 
5 namespace eu::window
6 {
8  to_key(SDL_Keysym key)
9  {
10  switch(key.sym)
11  {
12  case SDLK_RETURN: return core::Key::return_key;
13  case SDLK_ESCAPE: return core::Key::escape;
14  case SDLK_BACKSPACE: return core::Key::backspace;
15  case SDLK_TAB: return core::Key::tab;
16  case SDLK_SPACE: return core::Key::space;
17  case SDLK_EXCLAIM: return core::Key::exclaim;
18  case SDLK_QUOTEDBL: return core::Key::quotedbl;
19  case SDLK_HASH: return core::Key::hash;
20  case SDLK_PERCENT: return core::Key::percent;
21  case SDLK_DOLLAR: return core::Key::dollar;
22  case SDLK_AMPERSAND: return core::Key::ampersand;
23  case SDLK_QUOTE: return core::Key::quote;
24  case SDLK_LEFTPAREN: return core::Key::left_paren;
25  case SDLK_RIGHTPAREN: return core::Key::right_paren;
26  case SDLK_ASTERISK: return core::Key::asterix;
27  case SDLK_PLUS: return core::Key::plus;
28  case SDLK_COMMA: return core::Key::comma;
29  case SDLK_MINUS: return core::Key::minus;
30  case SDLK_PERIOD: return core::Key::period;
31  case SDLK_SLASH: return core::Key::slash;
32  case SDLK_0: return core::Key::num_0;
33  case SDLK_1: return core::Key::num_1;
34  case SDLK_2: return core::Key::num_2;
35  case SDLK_3: return core::Key::num_3;
36  case SDLK_4: return core::Key::num_4;
37  case SDLK_5: return core::Key::num_5;
38  case SDLK_6: return core::Key::num_6;
39  case SDLK_7: return core::Key::num_7;
40  case SDLK_8: return core::Key::num_8;
41  case SDLK_9: return core::Key::num_9;
42  case SDLK_COLON: return core::Key::colon;
43  case SDLK_SEMICOLON: return core::Key::semicolon;
44  case SDLK_LESS: return core::Key::less;
45  case SDLK_EQUALS: return core::Key::equals;
46  case SDLK_GREATER: return core::Key::greater;
47  case SDLK_QUESTION: return core::Key::question;
48  case SDLK_AT: return core::Key::at;
49  case SDLK_LEFTBRACKET: return core::Key::left_bracket;
50  case SDLK_BACKSLASH: return core::Key::backslash;
51  case SDLK_RIGHTBRACKET: return core::Key::right_bracket;
52  case SDLK_CARET: return core::Key::caret;
53  case SDLK_UNDERSCORE: return core::Key::underscore;
54  case SDLK_BACKQUOTE: return core::Key::backquote;
55  case SDLK_a: return core::Key::a;
56  case SDLK_b: return core::Key::b;
57  case SDLK_c: return core::Key::c;
58  case SDLK_d: return core::Key::d;
59  case SDLK_e: return core::Key::e;
60  case SDLK_f: return core::Key::f;
61  case SDLK_g: return core::Key::g;
62  case SDLK_h: return core::Key::h;
63  case SDLK_i: return core::Key::i;
64  case SDLK_j: return core::Key::j;
65  case SDLK_k: return core::Key::k;
66  case SDLK_l: return core::Key::l;
67  case SDLK_m: return core::Key::m;
68  case SDLK_n: return core::Key::n;
69  case SDLK_o: return core::Key::o;
70  case SDLK_p: return core::Key::p;
71  case SDLK_q: return core::Key::q;
72  case SDLK_r: return core::Key::r;
73  case SDLK_s: return core::Key::s;
74  case SDLK_t: return core::Key::t;
75  case SDLK_u: return core::Key::u;
76  case SDLK_v: return core::Key::v;
77  case SDLK_w: return core::Key::w;
78  case SDLK_x: return core::Key::x;
79  case SDLK_y: return core::Key::y;
80  case SDLK_z: return core::Key::z;
81  case SDLK_CAPSLOCK: return core::Key::capslock;
82  case SDLK_F1: return core::Key::f1;
83  case SDLK_F2: return core::Key::f2;
84  case SDLK_F3: return core::Key::f3;
85  case SDLK_F4: return core::Key::f4;
86  case SDLK_F5: return core::Key::f5;
87  case SDLK_F6: return core::Key::f6;
88  case SDLK_F7: return core::Key::f7;
89  case SDLK_F8: return core::Key::f8;
90  case SDLK_F9: return core::Key::f9;
91  case SDLK_F10: return core::Key::f10;
92  case SDLK_F11: return core::Key::f11;
93  case SDLK_F12: return core::Key::f12;
94  case SDLK_PRINTSCREEN: return core::Key::print_screen;
95  case SDLK_SCROLLLOCK: return core::Key::scroll_lock;
96  case SDLK_PAUSE: return core::Key::pause;
97  case SDLK_INSERT: return core::Key::insert;
98  case SDLK_HOME: return core::Key::home;
99  case SDLK_PAGEUP: return core::Key::page_up;
100  case SDLK_DELETE: return core::Key::delete_key;
101  case SDLK_END: return core::Key::end;
102  case SDLK_PAGEDOWN: return core::Key::page_down;
103  case SDLK_RIGHT: return core::Key::right;
104  case SDLK_LEFT: return core::Key::left;
105  case SDLK_DOWN: return core::Key::down;
106  case SDLK_UP: return core::Key::up;
107  case SDLK_NUMLOCKCLEAR: return core::Key::numlock_clear;
108  case SDLK_KP_DIVIDE: return core::Key::keypad_divide;
109  case SDLK_KP_MULTIPLY: return core::Key::keypad_multiply;
110  case SDLK_KP_MINUS: return core::Key::keypad_minus;
111  case SDLK_KP_PLUS: return core::Key::keypad_plus;
112  case SDLK_KP_ENTER: return core::Key::keypad_enter;
113  case SDLK_KP_1: return core::Key::keypad_1;
114  case SDLK_KP_2: return core::Key::keypad_2;
115  case SDLK_KP_3: return core::Key::keypad_3;
116  case SDLK_KP_4: return core::Key::keypad_4;
117  case SDLK_KP_5: return core::Key::keypad_5;
118  case SDLK_KP_6: return core::Key::keypad_6;
119  case SDLK_KP_7: return core::Key::keypad_7;
120  case SDLK_KP_8: return core::Key::keypad_8;
121  case SDLK_KP_9: return core::Key::keypad_9;
122  case SDLK_KP_0: return core::Key::keypad_0;
123  case SDLK_KP_PERIOD: return core::Key::keypad_period;
124  case SDLK_APPLICATION: return core::Key::application;
125  case SDLK_POWER: return core::Key::power;
126  case SDLK_KP_EQUALS: return core::Key::keypad_equals;
127  case SDLK_F13: return core::Key::f13;
128  case SDLK_F14: return core::Key::f14;
129  case SDLK_F15: return core::Key::f15;
130  case SDLK_F16: return core::Key::f16;
131  case SDLK_F17: return core::Key::f17;
132  case SDLK_F18: return core::Key::f18;
133  case SDLK_F19: return core::Key::f19;
134  case SDLK_F20: return core::Key::f20;
135  case SDLK_F21: return core::Key::f21;
136  case SDLK_F22: return core::Key::f22;
137  case SDLK_F23: return core::Key::f23;
138  case SDLK_F24: return core::Key::f24;
139  case SDLK_EXECUTE: return core::Key::execute;
140  case SDLK_HELP: return core::Key::help;
141  case SDLK_MENU: return core::Key::menu;
142  case SDLK_SELECT: return core::Key::select;
143  case SDLK_STOP: return core::Key::stop;
144  case SDLK_AGAIN: return core::Key::again;
145  case SDLK_UNDO: return core::Key::undo;
146  case SDLK_CUT: return core::Key::cut;
147  case SDLK_COPY: return core::Key::copy;
148  case SDLK_PASTE: return core::Key::paste;
149  case SDLK_FIND: return core::Key::find;
150  case SDLK_MUTE: return core::Key::mute;
151  case SDLK_VOLUMEUP: return core::Key::volume_up;
152  case SDLK_VOLUMEDOWN: return core::Key::volume_down;
153  case SDLK_KP_COMMA: return core::Key::keypad_comma;
154  case SDLK_KP_EQUALSAS400: return core::Key::keypad_equals_as_400;
155  case SDLK_ALTERASE: return core::Key::alt_erase;
156  case SDLK_SYSREQ: return core::Key::sysreq;
157  case SDLK_CANCEL: return core::Key::cancel;
158  case SDLK_CLEAR: return core::Key::clear;
159  case SDLK_PRIOR: return core::Key::prior;
160  case SDLK_RETURN2: return core::Key::second_return;
161  case SDLK_SEPARATOR: return core::Key::separator;
162  case SDLK_OUT: return core::Key::out;
163  case SDLK_OPER: return core::Key::oper;
164  case SDLK_CLEARAGAIN: return core::Key::clear_again;
165  case SDLK_CRSEL: return core::Key::crsel;
166  case SDLK_EXSEL: return core::Key::exsel;
167  case SDLK_KP_00: return core::Key::keypad_00;
168  case SDLK_KP_000: return core::Key::keypad_000;
169  case SDLK_THOUSANDSSEPARATOR: return core::Key::thousandseparator;
170  case SDLK_DECIMALSEPARATOR: return core::Key::decimalseparator;
171  case SDLK_CURRENCYUNIT: return core::Key::currency_unit;
172  case SDLK_CURRENCYSUBUNIT: return core::Key::currency_subunit;
173  case SDLK_KP_LEFTPAREN: return core::Key::keypad_leftparen;
174  case SDLK_KP_RIGHTPAREN: return core::Key::keypad_rightparen;
175  case SDLK_KP_LEFTBRACE: return core::Key::keypad_leftbrace;
176  case SDLK_KP_RIGHTBRACE: return core::Key::keypad_rightbrace;
177  case SDLK_KP_TAB: return core::Key::keypad_tab;
178  case SDLK_KP_BACKSPACE: return core::Key::keypad_backspace;
179  case SDLK_KP_A: return core::Key::keypad_a;
180  case SDLK_KP_B: return core::Key::keypad_b;
181  case SDLK_KP_C: return core::Key::keypad_c;
182  case SDLK_KP_D: return core::Key::keypad_d;
183  case SDLK_KP_E: return core::Key::keypad_e;
184  case SDLK_KP_F: return core::Key::keypad_f;
185  case SDLK_KP_XOR: return core::Key::keypad_xor;
186  case SDLK_KP_POWER: return core::Key::keypad_power;
187  case SDLK_KP_PERCENT: return core::Key::keypad_percent;
188  case SDLK_KP_LESS: return core::Key::keypad_less;
189  case SDLK_KP_GREATER: return core::Key::keypad_greater;
190  case SDLK_KP_AMPERSAND: return core::Key::keypad_ampersand;
191  case SDLK_KP_DBLAMPERSAND: return core::Key::keypad_double_ampersand;
192  case SDLK_KP_VERTICALBAR: return core::Key::keypad_vertical_bar;
193  case SDLK_KP_DBLVERTICALBAR: return core::Key::keypad_double_verticle_bar;
194  case SDLK_KP_COLON: return core::Key::keypad_colon;
195  case SDLK_KP_HASH: return core::Key::keypad_hash;
196  case SDLK_KP_SPACE: return core::Key::keypad_space;
197  case SDLK_KP_AT: return core::Key::keypad_at;
198  case SDLK_KP_EXCLAM: return core::Key::keypad_exclam;
199  case SDLK_KP_MEMSTORE: return core::Key::keypad_mem_store;
200  case SDLK_KP_MEMRECALL: return core::Key::keypad_mem_recall;
201  case SDLK_KP_MEMCLEAR: return core::Key::keypad_mem_clear;
202  case SDLK_KP_MEMADD: return core::Key::keypad_mem_add;
203  case SDLK_KP_MEMSUBTRACT: return core::Key::keypad_mem_subtract;
204  case SDLK_KP_MEMMULTIPLY: return core::Key::keypad_mem_multiply;
205  case SDLK_KP_MEMDIVIDE: return core::Key::keypad_mem_divide;
206  case SDLK_KP_PLUSMINUS: return core::Key::keypad_plus_minus;
207  case SDLK_KP_CLEAR: return core::Key::keypad_clear;
208  case SDLK_KP_CLEARENTRY: return core::Key::keypad_clear_entry;
209  case SDLK_KP_BINARY: return core::Key::keypad_binary;
210  case SDLK_KP_OCTAL: return core::Key::keypad_octal;
211  case SDLK_KP_DECIMAL: return core::Key::keypad_decimal;
212  case SDLK_KP_HEXADECIMAL: return core::Key::keypad_hexadecimal;
213  case SDLK_LCTRL: return core::Key::ctrl_left;
214  case SDLK_LSHIFT: return core::Key::shift_left;
215  case SDLK_LALT: return core::Key::alt_left;
216  case SDLK_LGUI: return core::Key::gui_left;
217  case SDLK_RCTRL: return core::Key::ctrl_right;
218  case SDLK_RSHIFT: return core::Key::shift_right;
219  case SDLK_RALT: return core::Key::alt_right;
220  case SDLK_RGUI: return core::Key::gui_right;
221  case SDLK_MODE: return core::Key::mode;
222  case SDLK_AUDIONEXT: return core::Key::audio_next;
223  case SDLK_AUDIOPREV: return core::Key::audio_prev;
224  case SDLK_AUDIOSTOP: return core::Key::audio_stop;
225  case SDLK_AUDIOPLAY: return core::Key::audio_play;
226  case SDLK_AUDIOMUTE: return core::Key::audio_mute;
227  case SDLK_MEDIASELECT: return core::Key::media_select;
228  case SDLK_WWW: return core::Key::www;
229  case SDLK_MAIL: return core::Key::mail;
230  case SDLK_CALCULATOR: return core::Key::calculator;
231  case SDLK_COMPUTER: return core::Key::computer;
232  case SDLK_AC_SEARCH: return core::Key::ac_search;
233  case SDLK_AC_HOME: return core::Key::ac_home;
234  case SDLK_AC_BACK: return core::Key::ac_back;
235  case SDLK_AC_FORWARD: return core::Key::ac_forward;
236  case SDLK_AC_STOP: return core::Key::ac_stop;
237  case SDLK_AC_REFRESH: return core::Key::ac_refresh;
238  case SDLK_AC_BOOKMARKS: return core::Key::ac_bookmarks;
239  case SDLK_BRIGHTNESSDOWN: return core::Key::brightness_down;
240  case SDLK_BRIGHTNESSUP: return core::Key::brightness_up;
241  case SDLK_DISPLAYSWITCH: return core::Key::displayswitch;
242  case SDLK_KBDILLUMTOGGLE: return core::Key::keyboard_illum_toggle;
243  case SDLK_KBDILLUMDOWN: return core::Key::keyboard_illum_down;
244  case SDLK_KBDILLUMUP: return core::Key::keyboard_illum_up;
245  case SDLK_EJECT: return core::Key::eject;
246  case SDLK_SLEEP: return core::Key::sleep;
247  default:
248  // todo(Gustav): die should have a x version too
249  DIEX("Invalid keyboard button", key.sym);
250  return core::Key::invalid;
251  }
252  }
253 
255  to_key(SDL_MouseButtonEvent mb)
256  {
257  switch(mb.button)
258  {
259  case SDL_BUTTON_LEFT: return core::MouseButton::left;
260  case SDL_BUTTON_MIDDLE: return core::MouseButton::middle;
261  case SDL_BUTTON_RIGHT: return core::MouseButton::right;
262  case SDL_BUTTON_X1: return core::MouseButton::x1;
263  case SDL_BUTTON_X2: return core::MouseButton::x2;
264  default:
265  DIEX("Invalid mouse button", mb.button);
267  }
268  }
269 
270 }
#define DIEX(message,...)
Definition: assert.h:76
Key
Definition: key.h:26
@ keypad_double_verticle_bar
MouseButton
Definition: key.h:8
core::Key to_key(SDL_Keysym key)
Definition: key.cc:8