1#ifndef MAUS_INPUT_H
2#define MAUS_INPUT_H
3
4#include <stdint.h>
5
6typedef enum {
7 MAUS_KEY_NONE = 0,
8
9 MAUS_KEY_TAB = '\t', MAUS_KEY_ENTER = '\n', MAUS_KEY_SPACE = ' ',
10 MAUS_KEY_APOSTROPHE = '\'', MAUS_KEY_COMMA = ',', MAUS_KEY_MINUS = '-',
11 MAUS_KEY_PERIOD = '.', MAUS_KEY_SLASH = '/', MAUS_KEY_SEMICOLON = ';',
12 MAUS_KEY_EQUAL = '=', MAUS_KEY_LEFT_BRACKET = '[', MAUS_KEY_BACKSLASH = '\\',
13 MAUS_KEY_RIGHT_BRACKET = ']', MAUS_KEY_GRAVE = '`',
14
15 /* numbers */
16 MAUS_KEY_0 = '0', MAUS_KEY_1, MAUS_KEY_2, MAUS_KEY_3, MAUS_KEY_4,
17 MAUS_KEY_5, MAUS_KEY_6, MAUS_KEY_7, MAUS_KEY_8, MAUS_KEY_9,
18
19 /* uppercase */
20 MAUS_KEY_A_UP = 'A', MAUS_KEY_B_UP, MAUS_KEY_C_UP, MAUS_KEY_D_UP, MAUS_KEY_E_UP,
21 MAUS_KEY_F_UP, MAUS_KEY_G_UP, MAUS_KEY_H_UP, MAUS_KEY_I_UP, MAUS_KEY_J_UP,
22 MAUS_KEY_K_UP, MAUS_KEY_L_UP, MAUS_KEY_M_UP, MAUS_KEY_N_UP, MAUS_KEY_O_UP,
23 MAUS_KEY_P_UP, MAUS_KEY_Q_UP, MAUS_KEY_R_UP, MAUS_KEY_S_UP, MAUS_KEY_T_UP,
24 MAUS_KEY_U_UP, MAUS_KEY_V_UP, MAUS_KEY_W_UP, MAUS_KEY_X_UP, MAUS_KEY_Y_UP,
25 MAUS_KEY_Z_UP,
26
27 /* lowercase */
28 MAUS_KEY_A = 'a', MAUS_KEY_B, MAUS_KEY_C, MAUS_KEY_D, MAUS_KEY_E,
29 MAUS_KEY_F, MAUS_KEY_G, MAUS_KEY_H, MAUS_KEY_I, MAUS_KEY_J,
30 MAUS_KEY_K, MAUS_KEY_L, MAUS_KEY_M, MAUS_KEY_N, MAUS_KEY_O,
31 MAUS_KEY_P, MAUS_KEY_Q, MAUS_KEY_R, MAUS_KEY_S, MAUS_KEY_T,
32 MAUS_KEY_U, MAUS_KEY_V, MAUS_KEY_W, MAUS_KEY_X, MAUS_KEY_Y,
33 MAUS_KEY_Z,
34
35 MAUS_KEY_BACKSPACE = 128, MAUS_KEY_ESCAPE, MAUS_KEY_DELETE,
36
37 /* navigation */
38 MAUS_KEY_LEFT, MAUS_KEY_RIGHT, MAUS_KEY_UP, MAUS_KEY_DOWN,
39 MAUS_KEY_HOME, MAUS_KEY_END, MAUS_KEY_PAGE_UP, MAUS_KEY_PAGE_DOWN,
40 MAUS_KEY_INSERT,
41
42 /* modifiers */
43 MAUS_KEY_SHIFT_L, MAUS_KEY_SHIFT_R, MAUS_KEY_CONTROL_L, MAUS_KEY_CONTROL_R,
44 MAUS_KEY_ALT_L, MAUS_KEY_ALT_R, MAUS_KEY_SUPER_L, MAUS_KEY_SUPER_R,
45 MAUS_KEY_CAPS_LOCK, MAUS_KEY_NUM_LOCK, MAUS_KEY_SCROLL_LOCK,
46
47 /* function */
48 MAUS_KEY_F1, MAUS_KEY_F2, MAUS_KEY_F3, MAUS_KEY_F4,
49 MAUS_KEY_F5, MAUS_KEY_F6, MAUS_KEY_F7, MAUS_KEY_F8,
50 MAUS_KEY_F9, MAUS_KEY_F10, MAUS_KEY_F11, MAUS_KEY_F12,
51
52 MAUS_KEY_PRINT_SCREEN, MAUS_KEY_PAUSE, MAUS_KEY_MENU,
53
54 /* keypad */
55 MAUS_KEY_KP_0, MAUS_KEY_KP_1, MAUS_KEY_KP_2, MAUS_KEY_KP_3,
56 MAUS_KEY_KP_4, MAUS_KEY_KP_5, MAUS_KEY_KP_6, MAUS_KEY_KP_7,
57 MAUS_KEY_KP_8, MAUS_KEY_KP_9,
58
59 MAUS_KEY_KP_DECIMAL, MAUS_KEY_KP_DIVIDE, MAUS_KEY_KP_MULTIPLY,
60 MAUS_KEY_KP_SUBTRACT, MAUS_KEY_KP_ADD, MAUS_KEY_KP_ENTER, MAUS_KEY_KP_EQUAL,
61
62 MAUS_KEY_LAST,
63} MausKey;
64
65typedef struct {
66 int32_t x;
67 int32_t y;
68} MausCursor;
69
70typedef enum {
71 MAUS_CURSOR_STATE_VISIBLE,
72 MAUS_CURSOR_STATE_HIDDEN,
73 MAUS_CURSOR_STATE_LOCKED,
74 MAUS_CURSOR_STATE_FREE,
75} MausCursorState;
76
77typedef enum {
78 MAUS_MOUSE_BUTTON_NONE = 0,
79 MAUS_MOUSE_BUTTON_LEFT,
80 MAUS_MOUSE_BUTTON_MIDDLE,
81 MAUS_MOUSE_BUTTON_RIGHT,
82 MAUS_MOUSE_BUTTON_SCROLL_UP,
83 MAUS_MOUSE_BUTTON_SCROLL_DOWN,
84 MAUS_MOUSE_BUTTON_LAST,
85} MausMouseButton;
86
87#endif /* MAUS_KEYS_H */
88