Mercurial > molko
annotate libmlk-core/mlk/core/event.c @ 613:f76cada0bbb2
misc: switch to SDL3
author | David Demelier <markand@malikania.fr> |
---|---|
date | Sun, 20 Aug 2023 11:14:58 +0200 |
parents | 95792046d3d2 |
children | 281608524dd1 |
rev | line source |
---|---|
19
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 /* |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
2 * event.c -- event management |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 * |
445
773a082f0b91
misc: update copyright years
David Demelier <markand@malikania.fr>
parents:
443
diff
changeset
|
4 * Copyright (c) 2020-2023 David Demelier <markand@malikania.fr> |
19
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
5 * |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 * Permission to use, copy, modify, and/or distribute this software for any |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 * purpose with or without fee is hereby granted, provided that the above |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
8 * copyright notice and this permission notice appear in all copies. |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
9 * |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 */ |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 |
613 | 19 #include <string.h> |
20 | |
19
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
21 #include <SDL.h> |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
22 |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
23 #include "event.h" |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
24 |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
25 /* Maintain with enum key constants in key.h */ |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
26 static const struct { |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
27 SDL_Keycode key; |
450
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
28 enum mlk_key value; |
19
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
29 } keymap[] = { |
450
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
30 { SDLK_RETURN, MLK_KEY_ENTER }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
31 { SDLK_ESCAPE, MLK_KEY_ESCAPE }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
32 { SDLK_BACKSPACE, MLK_KEY_BACKSPACE }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
33 { SDLK_TAB, MLK_KEY_TAB }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
34 { SDLK_SPACE, MLK_KEY_SPACE }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
35 { SDLK_EXCLAIM, MLK_KEY_EXCLAIM }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
36 { SDLK_QUOTEDBL, MLK_KEY_DOUBLE_QUOTE }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
37 { SDLK_HASH, MLK_KEY_HASH }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
38 { SDLK_PERCENT, MLK_KEY_PERCENT }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
39 { SDLK_DOLLAR, MLK_KEY_DOLLAR }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
40 { SDLK_AMPERSAND, MLK_KEY_AMPERSAND }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
41 { SDLK_QUOTE, MLK_KEY_QUOTE }, |
528
95792046d3d2
core: doxygenize maths
David Demelier <markand@malikania.fr>
parents:
527
diff
changeset
|
42 { SDLK_LEFTPAREN, MLK_KEY_LPAREN }, |
95792046d3d2
core: doxygenize maths
David Demelier <markand@malikania.fr>
parents:
527
diff
changeset
|
43 { SDLK_RIGHTPAREN, MLK_KEY_RPAREN }, |
450
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
44 { SDLK_ASTERISK, MLK_KEY_ASTERISK }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
45 { SDLK_PLUS, MLK_KEY_PLUS }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
46 { SDLK_COMMA, MLK_KEY_COMMA }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
47 { SDLK_MINUS, MLK_KEY_MINUS }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
48 { SDLK_PERIOD, MLK_KEY_PERIOD }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
49 { SDLK_SLASH, MLK_KEY_SLASH }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
50 { SDLK_0, MLK_KEY_0 }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
51 { SDLK_1, MLK_KEY_1 }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
52 { SDLK_2, MLK_KEY_2 }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
53 { SDLK_3, MLK_KEY_3 }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
54 { SDLK_4, MLK_KEY_4 }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
55 { SDLK_5, MLK_KEY_5 }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
56 { SDLK_6, MLK_KEY_6 }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
57 { SDLK_7, MLK_KEY_7 }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
58 { SDLK_8, MLK_KEY_8 }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
59 { SDLK_9, MLK_KEY_9 }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
60 { SDLK_COLON, MLK_KEY_COLON }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
61 { SDLK_SEMICOLON, MLK_KEY_SEMICOLON }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
62 { SDLK_LESS, MLK_KEY_LESS }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
63 { SDLK_EQUALS, MLK_KEY_EQUALS }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
64 { SDLK_GREATER, MLK_KEY_GREATER }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
65 { SDLK_QUESTION, MLK_KEY_QUESTION }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
66 { SDLK_AT, MLK_KEY_AT }, |
528
95792046d3d2
core: doxygenize maths
David Demelier <markand@malikania.fr>
parents:
527
diff
changeset
|
67 { SDLK_LEFTBRACKET, MLK_KEY_LBRACKET }, |
450
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
68 { SDLK_BACKSLASH, MLK_KEY_BACKSLASH }, |
528
95792046d3d2
core: doxygenize maths
David Demelier <markand@malikania.fr>
parents:
527
diff
changeset
|
69 { SDLK_RIGHTBRACKET, MLK_KEY_RBRACKET }, |
450
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
70 { SDLK_CARET, MLK_KEY_CARET }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
71 { SDLK_UNDERSCORE, MLK_KEY_UNDERSCORE }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
72 { SDLK_BACKQUOTE, MLK_KEY_BACKQUOTE }, |
527 | 73 { SDLK_a, MLK_KEY_A }, |
74 { SDLK_b, MLK_KEY_B }, | |
75 { SDLK_c, MLK_KEY_C }, | |
76 { SDLK_d, MLK_KEY_D }, | |
77 { SDLK_e, MLK_KEY_E }, | |
78 { SDLK_f, MLK_KEY_F }, | |
79 { SDLK_g, MLK_KEY_G }, | |
80 { SDLK_h, MLK_KEY_H }, | |
81 { SDLK_i, MLK_KEY_I }, | |
82 { SDLK_j, MLK_KEY_J }, | |
83 { SDLK_k, MLK_KEY_K }, | |
84 { SDLK_l, MLK_KEY_L }, | |
85 { SDLK_m, MLK_KEY_M }, | |
86 { SDLK_n, MLK_KEY_N }, | |
87 { SDLK_o, MLK_KEY_O }, | |
88 { SDLK_p, MLK_KEY_P }, | |
89 { SDLK_q, MLK_KEY_Q }, | |
90 { SDLK_r, MLK_KEY_R }, | |
91 { SDLK_s, MLK_KEY_S }, | |
92 { SDLK_t, MLK_KEY_T }, | |
93 { SDLK_u, MLK_KEY_U }, | |
94 { SDLK_v, MLK_KEY_V }, | |
95 { SDLK_w, MLK_KEY_W }, | |
96 { SDLK_x, MLK_KEY_X }, | |
97 { SDLK_y, MLK_KEY_Y }, | |
98 { SDLK_z, MLK_KEY_Z }, | |
450
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
99 { SDLK_CAPSLOCK, MLK_KEY_CAPSLOCK }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
100 { SDLK_F1, MLK_KEY_F1 }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
101 { SDLK_F2, MLK_KEY_F2 }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
102 { SDLK_F3, MLK_KEY_F3 }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
103 { SDLK_F4, MLK_KEY_F4 }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
104 { SDLK_F5, MLK_KEY_F5 }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
105 { SDLK_F6, MLK_KEY_F6 }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
106 { SDLK_F7, MLK_KEY_F7 }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
107 { SDLK_F8, MLK_KEY_F8 }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
108 { SDLK_F9, MLK_KEY_F9 }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
109 { SDLK_F10, MLK_KEY_F10 }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
110 { SDLK_F11, MLK_KEY_F11 }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
111 { SDLK_F12, MLK_KEY_F12 }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
112 { SDLK_F13, MLK_KEY_F13 }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
113 { SDLK_F14, MLK_KEY_F14 }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
114 { SDLK_F15, MLK_KEY_F15 }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
115 { SDLK_F16, MLK_KEY_F16 }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
116 { SDLK_F17, MLK_KEY_F17 }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
117 { SDLK_F18, MLK_KEY_F18 }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
118 { SDLK_F19, MLK_KEY_F19 }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
119 { SDLK_F20, MLK_KEY_F20 }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
120 { SDLK_F21, MLK_KEY_F21 }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
121 { SDLK_F22, MLK_KEY_F22 }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
122 { SDLK_F23, MLK_KEY_F23 }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
123 { SDLK_F24, MLK_KEY_F24 }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
124 { SDLK_PRINTSCREEN, MLK_KEY_PRINTSCREEN }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
125 { SDLK_SCROLLLOCK, MLK_KEY_SCROLL_LOCK }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
126 { SDLK_PAUSE, MLK_KEY_PAUSE }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
127 { SDLK_INSERT, MLK_KEY_INSERT }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
128 { SDLK_HOME, MLK_KEY_HOME }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
129 { SDLK_PAGEUP, MLK_KEY_PAGEUP }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
130 { SDLK_DELETE, MLK_KEY_DELETE }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
131 { SDLK_END, MLK_KEY_END }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
132 { SDLK_PAGEDOWN, MLK_KEY_PAGEDOWN }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
133 { SDLK_RIGHT, MLK_KEY_RIGHT }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
134 { SDLK_LEFT, MLK_KEY_LEFT }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
135 { SDLK_DOWN, MLK_KEY_DOWN }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
136 { SDLK_UP, MLK_KEY_UP }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
137 { SDLK_KP_DIVIDE, MLK_KEY_KP_DIVIDE }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
138 { SDLK_KP_MULTIPLY, MLK_KEY_KP_MULTIPLY }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
139 { SDLK_KP_MINUS, MLK_KEY_KP_MINUS }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
140 { SDLK_KP_PLUS, MLK_KEY_KP_PLUS }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
141 { SDLK_KP_ENTER, MLK_KEY_KP_ENTER }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
142 { SDLK_KP_1, MLK_KEY_KP_1 }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
143 { SDLK_KP_2, MLK_KEY_KP_2 }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
144 { SDLK_KP_3, MLK_KEY_KP_3 }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
145 { SDLK_KP_4, MLK_KEY_KP_4 }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
146 { SDLK_KP_5, MLK_KEY_KP_5 }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
147 { SDLK_KP_6, MLK_KEY_KP_6 }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
148 { SDLK_KP_7, MLK_KEY_KP_7 }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
149 { SDLK_KP_8, MLK_KEY_KP_8 }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
150 { SDLK_KP_9, MLK_KEY_KP_9 }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
151 { SDLK_KP_0, MLK_KEY_KP_0 }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
152 { SDLK_KP_PERIOD, MLK_KEY_KP_PERIOD }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
153 { SDLK_KP_COMMA, MLK_KEY_KP_COMMA }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
154 { SDLK_MENU, MLK_KEY_MENU }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
155 { SDLK_MUTE, MLK_KEY_MUTE }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
156 { SDLK_VOLUMEUP, MLK_KEY_VOLUME_UP }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
157 { SDLK_VOLUMEDOWN, MLK_KEY_VOLUME_DOWN }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
158 { SDLK_LCTRL, MLK_KEY_LCTRL }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
159 { SDLK_LSHIFT, MLK_KEY_LSHIFT }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
160 { SDLK_LALT, MLK_KEY_LALT }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
161 { SDLK_LGUI, MLK_KEY_LSUPER }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
162 { SDLK_RCTRL, MLK_KEY_RCTRL }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
163 { SDLK_RSHIFT, MLK_KEY_RSHIFT }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
164 { SDLK_RALT, MLK_KEY_RALT }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
165 { SDLK_RGUI, MLK_KEY_RSUPER }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
166 { 0, -1 } |
19
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
167 }; |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
168 |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
169 /* Maintain with enum mouse_button constants in mouse.h */ |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
170 static const struct { |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
171 int key; |
450
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
172 enum mlk_mouse_button value; |
19
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
173 } buttons[] = { |
450
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
174 { SDL_BUTTON_LEFT, MLK_MOUSE_BUTTON_LEFT }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
175 { SDL_BUTTON_MIDDLE, MLK_MOUSE_BUTTON_MIDDLE }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
176 { SDL_BUTTON_RIGHT, MLK_MOUSE_BUTTON_RIGHT }, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
177 { -1, MLK_MOUSE_BUTTON_NONE } |
19
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
178 }; |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
179 |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
180 /* Maintain with enum mlk_gamepad_button in gamepad.h */ |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
181 static const struct { |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
182 int button; |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
183 enum mlk_gamepad_button value; |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
184 } pads[] = { |
613 | 185 { SDL_GAMEPAD_BUTTON_A, MLK_GAMEPAD_BUTTON_A }, |
186 { SDL_GAMEPAD_BUTTON_B, MLK_GAMEPAD_BUTTON_B }, | |
187 { SDL_GAMEPAD_BUTTON_X, MLK_GAMEPAD_BUTTON_X }, | |
188 { SDL_GAMEPAD_BUTTON_Y, MLK_GAMEPAD_BUTTON_Y }, | |
189 { SDL_GAMEPAD_BUTTON_BACK, MLK_GAMEPAD_BUTTON_BACK }, | |
190 { SDL_GAMEPAD_BUTTON_GUIDE, MLK_GAMEPAD_BUTTON_LOGO }, | |
191 { SDL_GAMEPAD_BUTTON_START, MLK_GAMEPAD_BUTTON_START }, | |
192 { SDL_GAMEPAD_BUTTON_LEFT_STICK, MLK_GAMEPAD_BUTTON_LTHUMB }, | |
193 { SDL_GAMEPAD_BUTTON_RIGHT_STICK, MLK_GAMEPAD_BUTTON_RTHUMB }, | |
194 { SDL_GAMEPAD_BUTTON_LEFT_SHOULDER, MLK_GAMEPAD_BUTTON_LSHOULDER }, | |
195 { SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER, MLK_GAMEPAD_BUTTON_RSHOULDER }, | |
196 { SDL_GAMEPAD_BUTTON_DPAD_UP, MLK_GAMEPAD_BUTTON_UP }, | |
197 { SDL_GAMEPAD_BUTTON_DPAD_DOWN, MLK_GAMEPAD_BUTTON_DOWN }, | |
198 { SDL_GAMEPAD_BUTTON_DPAD_LEFT, MLK_GAMEPAD_BUTTON_LEFT }, | |
199 { SDL_GAMEPAD_BUTTON_DPAD_RIGHT, MLK_GAMEPAD_BUTTON_RIGHT }, | |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
200 { -1, MLK_GAMEPAD_BUTTON_UNKNOWN } |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
201 }; |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
202 |
19
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
203 static void |
450
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
204 convert_key(const SDL_Event *event, union mlk_event *ev) |
19
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
205 { |
613 | 206 ev->type = event->type == SDL_EVENT_KEY_DOWN ? MLK_EVENT_KEYDOWN : MLK_EVENT_KEYUP; |
450
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
207 ev->key.key = MLK_KEY_UNKNOWN; |
19
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
208 |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
209 for (size_t i = 0; keymap[i].key != 0; ++i) { |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
210 if (keymap[i].key == event->key.keysym.sym) { |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
211 ev->key.key = keymap[i].value; |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
212 break; |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
213 } |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
214 } |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
215 } |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
216 |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
217 static void |
450
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
218 convert_mouse(const SDL_Event *event, union mlk_event *ev) |
19
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
219 { |
450
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
220 ev->type = MLK_EVENT_MOUSE; |
19
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
221 ev->mouse.buttons = 0; |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
222 ev->mouse.x = event->motion.x; |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
223 ev->mouse.y = event->motion.y; |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
224 |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
225 if (event->motion.state & SDL_BUTTON_LMASK) |
450
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
226 ev->mouse.buttons |= MLK_MOUSE_BUTTON_LEFT; |
19
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
227 if (event->motion.state & SDL_BUTTON_MMASK) |
450
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
228 ev->mouse.buttons |= MLK_MOUSE_BUTTON_MIDDLE; |
19
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
229 if (event->motion.state & SDL_BUTTON_RMASK) |
450
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
230 ev->mouse.buttons |= MLK_MOUSE_BUTTON_RIGHT; |
19
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
231 } |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
232 |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
233 static void |
450
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
234 convert_click(const SDL_Event *event, union mlk_event *ev) |
19
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
235 { |
613 | 236 ev->type = event->type == SDL_EVENT_MOUSE_BUTTON_DOWN ? MLK_EVENT_CLICKDOWN : MLK_EVENT_CLICKUP; |
450
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
237 ev->click.button = MLK_MOUSE_BUTTON_NONE; |
19
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
238 ev->click.x = event->button.x; |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
239 ev->click.y = event->button.y; |
281
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
253
diff
changeset
|
240 ev->click.clicks = event->button.clicks; |
19
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
241 |
450
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
242 for (size_t i = 0; buttons[i].value != MLK_MOUSE_BUTTON_NONE; ++i) { |
19
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
243 if (buttons[i].key == event->button.button) { |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
244 ev->click.button = buttons[i].value; |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
245 break; |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
246 } |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
247 } |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
248 } |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
249 |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
250 static void |
450
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
251 convert_pad(const SDL_Event *event, union mlk_event *ev) |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
252 { |
613 | 253 ev->type = event->type == SDL_EVENT_GAMEPAD_BUTTON_DOWN ? MLK_EVENT_PADDOWN : MLK_EVENT_PADUP; |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
254 |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
255 for (size_t i = 0; pads[i].value != MLK_GAMEPAD_BUTTON_UNKNOWN; ++i) { |
613 | 256 if (pads[i].button == event->gbutton.button) { |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
257 ev->pad.button = pads[i].value; |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
258 break; |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
259 } |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
260 } |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
261 } |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
262 |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
263 static const struct { |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
264 int axis; |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
265 enum mlk_gamepad_axis value; |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
266 } axises[] = { |
613 | 267 { SDL_GAMEPAD_AXIS_LEFTX, MLK_GAMEPAD_AXIS_LX }, |
268 { SDL_GAMEPAD_AXIS_LEFTY, MLK_GAMEPAD_AXIS_LY }, | |
269 { SDL_GAMEPAD_AXIS_RIGHTX, MLK_GAMEPAD_AXIS_RX }, | |
270 { SDL_GAMEPAD_AXIS_RIGHTY, MLK_GAMEPAD_AXIS_RY }, | |
271 { SDL_GAMEPAD_AXIS_LEFT_TRIGGER, MLK_GAMEPAD_AXIS_LTRIGGER }, | |
272 { SDL_GAMEPAD_AXIS_RIGHT_TRIGGER, MLK_GAMEPAD_AXIS_RTRIGGER }, | |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
273 { -1, MLK_GAMEPAD_AXIS_UNKNOWN } |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
274 }; |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
275 |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
276 static void |
450
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
277 convert_axis(const SDL_Event *event, union mlk_event *ev) |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
278 { |
450
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
279 ev->type = MLK_EVENT_AXIS; |
613 | 280 ev->axis.value = event->gaxis.value; |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
281 |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
282 for (size_t i = 0; axises[i].value != MLK_GAMEPAD_AXIS_UNKNOWN; ++i) { |
613 | 283 if (axises[i].axis == event->gaxis.axis) { |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
284 ev->axis.axis = axises[i].value; |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
285 break; |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
286 } |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
287 } |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
288 } |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
289 |
298
196264679079
misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents:
281
diff
changeset
|
290 int |
450
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
291 mlk_event_poll(union mlk_event *ev) |
19
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
292 { |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
293 SDL_Event event; |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
294 |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
295 memset(ev, 0, sizeof (*ev)); |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
296 |
19
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
297 /* |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
298 * Loop until we find an event we want to report, we skip unneeded |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
299 * ones. |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
300 */ |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
301 while (SDL_PollEvent(&event)) { |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
302 switch (event.type) { |
613 | 303 case SDL_EVENT_QUIT: |
450
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
304 ev->type = MLK_EVENT_QUIT; |
298
196264679079
misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents:
281
diff
changeset
|
305 return 1; |
613 | 306 case SDL_EVENT_KEY_DOWN: |
307 case SDL_EVENT_KEY_UP: | |
19
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
308 convert_key(&event, ev); |
298
196264679079
misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents:
281
diff
changeset
|
309 return 1; |
613 | 310 case SDL_EVENT_MOUSE_MOTION: |
19
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
311 convert_mouse(&event, ev); |
298
196264679079
misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents:
281
diff
changeset
|
312 return 1; |
613 | 313 case SDL_EVENT_MOUSE_BUTTON_DOWN: |
314 case SDL_EVENT_MOUSE_BUTTON_UP: | |
19
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
315 convert_click(&event, ev); |
298
196264679079
misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents:
281
diff
changeset
|
316 return 1; |
613 | 317 case SDL_EVENT_GAMEPAD_BUTTON_DOWN: |
318 case SDL_EVENT_GAMEPAD_BUTTON_UP: | |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
319 convert_pad(&event, ev); |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
320 return 1; |
613 | 321 case SDL_EVENT_GAMEPAD_AXIS_MOTION: |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
322 convert_axis(&event, ev); |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
323 return 1; |
19
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
324 default: |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
325 continue; |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
326 } |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
327 } |
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
328 |
298
196264679079
misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents:
281
diff
changeset
|
329 return 0; |
19
bc1fdff76775
core: implement most useful events, closes #2445
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
330 } |