comparison libmlk-core/mlk/core/gamepad.h @ 443:dfc65293d984

core: initial gamepad support
author David Demelier <markand@malikania.fr>
date Sat, 21 Jan 2023 20:20:34 +0100
parents
children 773a082f0b91
comparison
equal deleted inserted replaced
442:9c3b3935f0aa 443:dfc65293d984
1 /*
2 * gamepad.h -- game controller support
3 *
4 * Copyright (c) 2020-2022 David Demelier <markand@malikania.fr>
5 *
6 * Permission to use, copy, modify, and/or distribute this software for any
7 * purpose with or without fee is hereby granted, provided that the above
8 * copyright notice and this permission notice appear in all copies.
9 *
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 */
18
19 #ifndef MLK_CORE_GAMEPAD_H
20 #define MLK_CORE_GAMEPAD_H
21
22 #include "core.h"
23
24 CORE_BEGIN_DECLS
25
26 enum mlk_gamepad_button {
27 MLK_GAMEPAD_BUTTON_UNKNOWN,
28 MLK_GAMEPAD_BUTTON_A,
29 MLK_GAMEPAD_BUTTON_B,
30 MLK_GAMEPAD_BUTTON_X,
31 MLK_GAMEPAD_BUTTON_Y,
32 MLK_GAMEPAD_BUTTON_BACK,
33 MLK_GAMEPAD_BUTTON_LOGO,
34 MLK_GAMEPAD_BUTTON_START,
35 MLK_GAMEPAD_BUTTON_LTHUMB,
36 MLK_GAMEPAD_BUTTON_RTHUMB,
37 MLK_GAMEPAD_BUTTON_LSHOULDER,
38 MLK_GAMEPAD_BUTTON_RSHOULDER,
39 MLK_GAMEPAD_BUTTON_UP,
40 MLK_GAMEPAD_BUTTON_DOWN,
41 MLK_GAMEPAD_BUTTON_LEFT,
42 MLK_GAMEPAD_BUTTON_RIGHT
43 };
44
45 enum mlk_gamepad_axis {
46 MLK_GAMEPAD_AXIS_UNKNOWN,
47 MLK_GAMEPAD_AXIS_LX,
48 MLK_GAMEPAD_AXIS_LY,
49 MLK_GAMEPAD_AXIS_RX,
50 MLK_GAMEPAD_AXIS_RY,
51 MLK_GAMEPAD_AXIS_LTRIGGER,
52 MLK_GAMEPAD_AXIS_RTRIGGER
53 };
54
55 struct mlk_gamepad {
56 const char *name;
57 void *handle;
58 };
59
60 struct mlk_gamepad_iter {
61 const char *name;
62 int idx;
63 int end;
64 };
65
66 int
67 mlk_gamepad_open(struct mlk_gamepad *pad, int idx);
68
69 void
70 mlk_gamepad_finish(struct mlk_gamepad *pad);
71
72 int
73 mlk_gamepad_iter_begin(struct mlk_gamepad_iter *);
74
75 int
76 mlk_gamepad_iter_next(struct mlk_gamepad_iter *);
77
78 CORE_END_DECLS
79
80 #endif /* !MLK_CORE_GAMEPAD_H */