mirror of
https://github.com/MiSTer-devel/Main_MiSTer.git
synced 2026-04-12 03:04:02 +00:00
* increase allowed autofire rates from 5 to 30. add autofire_on_directions option to mister.ini (defaults to 0/off) * simd rewrite of scaler memcopy * optimize screenshots / scaler copies * optimize screenshots; simd memcopy for scaler_read, add frame timer callback handler * tweaks * restore .png save functionality. * screenshot optimizations * fix double free, guard against NULL * fixing merge * add mister.ini for screenshot_image_format * correct file extension handling. * slightly tweak bmp routine * consolide screenshot code back into scaler.cpp, remove custom resize/bmp code.
162 lines
4.3 KiB
C
162 lines
4.3 KiB
C
|
|
#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
|