#ifndef SC_INPUTMANAGER_H #define SC_INPUTMANAGER_H #include "common.h" #include #include #include "controller.h" #include "file_pusher.h" #include "fps_counter.h" #include "options.h" #include "trait/key_processor.h" #include "trait/mouse_processor.h" struct sc_input_manager { struct sc_controller *controller; struct sc_file_pusher *fp; struct sc_screen *screen; struct sc_key_processor *kp; struct sc_mouse_processor *mp; bool forward_all_clicks; bool legacy_paste; bool clipboard_autosync; struct { unsigned data[SC_MAX_SHORTCUT_MODS]; unsigned count; } sdl_shortcut_mods; bool vfinger_down; bool vfinger_invert_x; bool vfinger_invert_y; // Tracks the number of identical consecutive shortcut key down events. // Not to be confused with event->repeat, which counts the number of // system-generated repeated key presses. unsigned key_repeat; SDL_Keycode last_keycode; uint16_t last_mod; uint64_t next_sequence; // used for request acknowledgements }; struct sc_input_manager_params { struct sc_controller *controller; struct sc_file_pusher *fp; struct sc_screen *screen; struct sc_key_processor *kp; struct sc_mouse_processor *mp; bool forward_all_clicks; bool legacy_paste; bool clipboard_autosync; const struct sc_shortcut_mods *shortcut_mods; }; void sc_input_manager_init(struct sc_input_manager *im, const struct sc_input_manager_params *params); void sc_input_manager_handle_event(struct sc_input_manager *im, const SDL_Event *event); #endif