forked from MiSTer-devel/Main_MiSTer
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinput.h
More file actions
161 lines (132 loc) · 4.26 KB
/
input.h
File metadata and controls
161 lines (132 loc) · 4.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
#ifndef EVINPUT_H
#define EVINPUT_H
#include <linux/input.h>
#define HID_LED_NUM_LOCK 1
#define HID_LED_CAPS_LOCK 2
#define HID_LED_SCROLL_LOCK 4
#define HID_LED_MASK 7
#define NONE 0xFF
#define LCTRL 0x000100
#define LSHIFT 0x000200
#define LALT 0x000400
#define LGUI 0x000800
#define RCTRL 0x001000
#define RSHIFT 0x002000
#define RALT 0x004000
#define RGUI 0x008000
#define MODMASK 0x00FF00
#define OSD 0x010000 // to be used by OSD, not the core itself
#define OSD_OPEN 0x020000 // OSD key not forwarded to core, but queued in arm controller
#define CAPS_TOGGLE 0x040000 // caps lock toggle behaviour
#define EXT 0x080000
#define EMU_SWITCH_1 0x100000
#define EMU_SWITCH_2 0x200000
#define UPSTROKE 0x400000
#define NUMPLAYERS 6
#define NUMBUTTONS 32
#define BUTTON_DPAD_COUNT 12 // dpad + 8 buttons
#define SYS_BTN_RIGHT 0
#define SYS_BTN_LEFT 1
#define SYS_BTN_DOWN 2
#define SYS_BTN_UP 3
#define SYS_BTN_A 4
#define SYS_BTN_B 5
#define SYS_BTN_X 6
#define SYS_BTN_Y 7
#define SYS_BTN_L 8
#define SYS_BTN_R 9
#define SYS_BTN_SELECT 10
#define SYS_BTN_START 11
#define SYS_MS_RIGHT 12
#define SYS_MS_LEFT 13
#define SYS_MS_DOWN 14
#define SYS_MS_UP 15
#define SYS_MS_BTN_L 16
#define SYS_MS_BTN_R 17
#define SYS_MS_BTN_M 18
#define SYS_MS_BTN_EMU 19
#define SYS_BTN_OSD_KTGL 20 // 20 for keyboard, 21+22 for gamepad
#define SYS_BTN_MENU_FUNC 23
#define SYS_AXIS1_X 24
#define SYS_AXIS1_Y 25
#define SYS_AXIS2_X 26
#define SYS_AXIS2_Y 27
#define SYS_AXIS_X 28
#define SYS_AXIS_Y 29
#define SYS_AXIS_MX 30
#define SYS_AXIS_MY 31
#define SYS_BTN_CNT_OK 21
#define SYS_BTN_CNT_ESC 22
#define SPIN_LEFT 30
#define SPIN_RIGHT 31
#define KEY_EMU (KEY_MAX+1)
#define ADVANCED_MAP_MAX 32
typedef struct {
uint32_t button_mask;
uint16_t output_codes[4];
uint16_t input_codes[4];
int autofire_idx;
} advancedButtonMap;
typedef struct {
uint8_t input_state;
uint32_t input_btn_mask;
uint8_t pressed : 1;
uint8_t last_pressed : 1;
} advancedButtonState;
void set_kbdled(int mask, int state);
int get_kbdled(int mask);
int toggle_kbdled(int mask);
void sysled_enable(int en);
void input_notify_mode();
int input_poll(int getchar);
int is_key_pressed(int key);
void start_map_setting(int cnt, int set = 0, advancedButtonMap *code_store = NULL);
int get_map_set();
int get_map_button();
int get_map_type();
int get_map_clear();
int get_map_cancel();
int get_map_finish();
void finish_map_setting(int dismiss);
uint16_t get_map_vid();
uint16_t get_map_pid();
int get_map_dev();
advancedButtonMap *get_map_code_store();
int get_map_advance();
int get_map_count();
int has_default_map();
void send_map_cmd(int key);
void reset_players();
uint32_t get_key_mod();
uint32_t get_ps2_code(uint16_t key);
uint32_t get_amiga_code(uint16_t key);
uint32_t get_archie_code(uint16_t key);
int input_has_lightgun();
void input_lightgun_save(int idx, int32_t *cal);
void input_switch(int grab);
int input_state();
void input_uinp_destroy();
extern char joy_bnames[NUMBUTTONS][32];
extern int joy_bcount;
extern uint8_t ps2_kbd_scan_set;
void parse_buttons();
char *get_buttons(int type = 0);
void set_ovr_buttons(char *s, int type);
#define FOR_EACH_SET_BIT(mask, bit) \
for (uint32_t _m = (mask); _m; _m &= (_m - 1)) \
for (int bit = __builtin_ctz(_m), _once = 1; _once; _once = 0)
void start_code_capture(int dnum);
void end_code_capture();
uint16_t get_captured_code();
int code_capture_osd_count();
int get_last_input_dev();
int get_dev_num(int dev);
advancedButtonMap *get_advanced_map_defs(int devnum);
void get_button_name_for_code(uint16_t btn_code, int devnum, char *bname, size_t bname_sz);
void input_advanced_save(int dev_num, bool do_delete=false);
void input_advanced_load(int dev_num);
void input_advanced_save_entry(advancedButtonMap *abm_entry, int devnum);
void input_advanced_clear(int devnum);
void input_advanced_delete(advancedButtonMap *todel, int devnum);
void key_update_frames_held_cb(void);
#endif