Mercurial > molko
annotate libmlk-core/mlk/core/gamepad.h @ 545:27303e9402de
core: introduce mlk_alloc_expand
author | David Demelier <markand@malikania.fr> |
---|---|
date | Sun, 05 Mar 2023 22:14:02 +0100 |
parents | 81f7a432082f |
children | f76cada0bbb2 |
rev | line source |
---|---|
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 /* |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
2 * gamepad.h -- game controller support |
dfc65293d984
core: initial gamepad support
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> |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
5 * |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 * Permission to use, copy, modify, and/or distribute this software for any |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 * purpose with or without fee is hereby granted, provided that the above |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
8 * copyright notice and this permission notice appear in all copies. |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
9 * |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 */ |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
19 #ifndef MLK_CORE_GAMEPAD_H |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
20 #define MLK_CORE_GAMEPAD_H |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
21 |
523
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
22 /** |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
23 * \file mlk/core/gamepad.h |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
24 * \brief Game controller support |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
25 * |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
26 * This module abstract the gamepad support using a predefined gamepad layout |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
27 * similar to the XBox 360 controller. |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
28 * |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
29 * Once a gamepad is opened, it will automatically generate events depending on |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
30 * the device. |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
31 */ |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
32 |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
33 /** |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
34 * \enum mlk_gamepad_button |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
35 * \brief Describe a gamepad button |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
36 */ |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
37 enum mlk_gamepad_button { |
523
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
38 /** |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
39 * Unknown button. |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
40 */ |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
41 MLK_GAMEPAD_BUTTON_UNKNOWN, |
523
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
42 |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
43 /** |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
44 * Button A. |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
45 */ |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
46 MLK_GAMEPAD_BUTTON_A, |
523
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
47 |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
48 /** |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
49 * Button B. |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
50 */ |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
51 MLK_GAMEPAD_BUTTON_B, |
523
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
52 |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
53 /** |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
54 * Button X. |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
55 */ |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
56 MLK_GAMEPAD_BUTTON_X, |
523
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
57 |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
58 /** |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
59 * Button Y. |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
60 */ |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
61 MLK_GAMEPAD_BUTTON_Y, |
523
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
62 |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
63 /** |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
64 * Button back/select depending on the gamepad. |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
65 */ |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
66 MLK_GAMEPAD_BUTTON_BACK, |
523
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
67 |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
68 /** |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
69 * Button logo/brand or usually in the middle of the gamepad. |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
70 */ |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
71 MLK_GAMEPAD_BUTTON_LOGO, |
523
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
72 |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
73 /** |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
74 * Button start. |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
75 */ |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
76 MLK_GAMEPAD_BUTTON_START, |
523
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
77 |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
78 /** |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
79 * Left thumb click. |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
80 */ |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
81 MLK_GAMEPAD_BUTTON_LTHUMB, |
523
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
82 |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
83 /** |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
84 * Right thumb click. |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
85 */ |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
86 MLK_GAMEPAD_BUTTON_RTHUMB, |
523
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
87 |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
88 /** |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
89 * Left shoulder. |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
90 */ |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
91 MLK_GAMEPAD_BUTTON_LSHOULDER, |
523
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
92 |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
93 /** |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
94 * Right shoulder. |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
95 */ |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
96 MLK_GAMEPAD_BUTTON_RSHOULDER, |
523
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
97 |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
98 /** |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
99 * D-Pad up. |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
100 */ |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
101 MLK_GAMEPAD_BUTTON_UP, |
523
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
102 |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
103 /** |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
104 * D-Pad down. |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
105 */ |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
106 MLK_GAMEPAD_BUTTON_DOWN, |
523
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
107 |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
108 /** |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
109 * D-Pad left. |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
110 */ |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
111 MLK_GAMEPAD_BUTTON_LEFT, |
523
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
112 |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
113 /** |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
114 * D-Pad right. |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
115 */ |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
116 MLK_GAMEPAD_BUTTON_RIGHT |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
117 }; |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
118 |
523
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
119 /** |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
120 * \enum mlk_gamepad_axis |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
121 * \brief Describe a joystick axis. |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
122 */ |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
123 enum mlk_gamepad_axis { |
523
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
124 /** |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
125 * Unknown axis. |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
126 */ |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
127 MLK_GAMEPAD_AXIS_UNKNOWN, |
523
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
128 |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
129 /** |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
130 * Left thumb horizontal axis. |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
131 */ |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
132 MLK_GAMEPAD_AXIS_LX, |
523
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
133 |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
134 /** |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
135 * Left thumb vertical axis. |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
136 */ |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
137 MLK_GAMEPAD_AXIS_LY, |
523
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
138 |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
139 /** |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
140 * Right thumb horizontal axis. |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
141 */ |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
142 MLK_GAMEPAD_AXIS_RX, |
523
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
143 |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
144 /** |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
145 * Right thumb vertical axis. |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
146 */ |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
147 MLK_GAMEPAD_AXIS_RY, |
523
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
148 |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
149 /** |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
150 * Left shoulder axis. |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
151 */ |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
152 MLK_GAMEPAD_AXIS_LTRIGGER, |
523
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
153 |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
154 /** |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
155 * Right shoulder axis. |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
156 */ |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
157 MLK_GAMEPAD_AXIS_RTRIGGER |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
158 }; |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
159 |
523
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
160 /** |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
161 * \struct mlk_gamepad |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
162 * \brief Gamepad structure |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
163 */ |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
164 struct mlk_gamepad { |
523
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
165 /** |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
166 * (read-only, borrowed) |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
167 * |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
168 * Gamepad name. |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
169 */ |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
170 const char *name; |
523
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
171 |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
172 /** \cond MLK_PRIVATE_DECLS */ |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
173 void *handle; |
523
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
174 /** \endcond MLK_PRIVATE_DECLS */ |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
175 }; |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
176 |
523
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
177 /** |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
178 * \struct mlk_gamepad_iter |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
179 * \brief Iterate over all plugged gamepads. |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
180 */ |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
181 struct mlk_gamepad_iter { |
523
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
182 /** |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
183 * (read-only, borrowed) |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
184 * |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
185 * Gamepad name. |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
186 */ |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
187 const char *name; |
523
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
188 |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
189 /** |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
190 * (read-only) |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
191 * |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
192 * Device index on the system, can be used to open a device using |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
193 * ::mlk_gamepad_open. |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
194 */ |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
195 int index; |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
196 |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
197 /** \cond MLK_PRIVATE_DECLS */ |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
198 int end; |
523
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
199 /** \endcond MLK_PRIVATE_DECLS */ |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
200 }; |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
201 |
517
6e8f6640e05b
misc: use extern C manually
David Demelier <markand@malikania.fr>
parents:
462
diff
changeset
|
202 #if defined(__cplusplus) |
6e8f6640e05b
misc: use extern C manually
David Demelier <markand@malikania.fr>
parents:
462
diff
changeset
|
203 extern "C" { |
6e8f6640e05b
misc: use extern C manually
David Demelier <markand@malikania.fr>
parents:
462
diff
changeset
|
204 #endif |
6e8f6640e05b
misc: use extern C manually
David Demelier <markand@malikania.fr>
parents:
462
diff
changeset
|
205 |
523
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
206 /** |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
207 * Open the gamepad at the given device index. |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
208 * |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
209 * \pre pad != NULL |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
210 * \param pad the gamepad to initialize |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
211 * \param index the device index |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
212 * \return 0 on success or any error code instead |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
213 */ |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
214 int |
523
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
215 mlk_gamepad_open(struct mlk_gamepad *pad, int index); |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
216 |
523
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
217 /** |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
218 * Close this gamepad. |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
219 * |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
220 * \pre pad != NULL |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
221 * \param pad the gamepad |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
222 */ |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
223 void |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
224 mlk_gamepad_finish(struct mlk_gamepad *pad); |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
225 |
523
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
226 /** |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
227 * Start iterating gamepad devices. |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
228 * |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
229 * On success, call ::mlk_gamepad_iter_next to retrieve the next device |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
230 * (including the first one) in a loop. |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
231 * |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
232 * \pre iter the iter to start |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
233 * \return 0 on success or any error code instead |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
234 */ |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
235 int |
523
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
236 mlk_gamepad_iter_begin(struct mlk_gamepad_iter *iter); |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
237 |
523
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
238 /** |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
239 * Retrieve the next device. |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
240 * |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
241 * This function should be called in a loop to retrieve all devices available |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
242 * on the system. |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
243 * |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
244 * \pre iter the iter to start |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
245 * \return 1 if there are still devices available |
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
246 */ |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
247 int |
523
81f7a432082f
core: doxygenize gamepad
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
248 mlk_gamepad_iter_next(struct mlk_gamepad_iter *iter); |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
249 |
517
6e8f6640e05b
misc: use extern C manually
David Demelier <markand@malikania.fr>
parents:
462
diff
changeset
|
250 #if defined(__cplusplus) |
6e8f6640e05b
misc: use extern C manually
David Demelier <markand@malikania.fr>
parents:
462
diff
changeset
|
251 } |
6e8f6640e05b
misc: use extern C manually
David Demelier <markand@malikania.fr>
parents:
462
diff
changeset
|
252 #endif |
443
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
253 |
dfc65293d984
core: initial gamepad support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
254 #endif /* !MLK_CORE_GAMEPAD_H */ |