1c8b405b6SGerd Hoffmann #ifndef INPUT_H 2c8b405b6SGerd Hoffmann #define INPUT_H 3c8b405b6SGerd Hoffmann 49af23989SMarkus Armbruster #include "qapi/qapi-types-ui.h" 5ec150c7eSMarkus Armbruster #include "qemu/notify.h" 6c8b405b6SGerd Hoffmann 7c8b405b6SGerd Hoffmann #define INPUT_EVENT_MASK_KEY (1<<INPUT_EVENT_KIND_KEY) 8c8b405b6SGerd Hoffmann #define INPUT_EVENT_MASK_BTN (1<<INPUT_EVENT_KIND_BTN) 9c8b405b6SGerd Hoffmann #define INPUT_EVENT_MASK_REL (1<<INPUT_EVENT_KIND_REL) 10c8b405b6SGerd Hoffmann #define INPUT_EVENT_MASK_ABS (1<<INPUT_EVENT_KIND_ABS) 112bfb10dfSSergio Lopez #define INPUT_EVENT_MASK_MTT (1<<INPUT_EVENT_KIND_MTT) 12c8b405b6SGerd Hoffmann 139cfa7ab9SPhilippe Voinov #define INPUT_EVENT_ABS_MIN 0x0000 149cfa7ab9SPhilippe Voinov #define INPUT_EVENT_ABS_MAX 0x7FFF 152bfb10dfSSergio Lopez #define INPUT_EVENT_SLOTS_MIN 0x0 162bfb10dfSSergio Lopez #define INPUT_EVENT_SLOTS_MAX 0xa 1743579403SGerd Hoffmann 18c8b405b6SGerd Hoffmann typedef struct QemuInputHandler QemuInputHandler; 19c8b405b6SGerd Hoffmann typedef struct QemuInputHandlerState QemuInputHandlerState; 20c8b405b6SGerd Hoffmann 21c8b405b6SGerd Hoffmann typedef void (*QemuInputHandlerEvent)(DeviceState *dev, QemuConsole *src, 22c8b405b6SGerd Hoffmann InputEvent *evt); 23c8b405b6SGerd Hoffmann typedef void (*QemuInputHandlerSync)(DeviceState *dev); 24c8b405b6SGerd Hoffmann 25c8b405b6SGerd Hoffmann struct QemuInputHandler { 26c8b405b6SGerd Hoffmann const char *name; 27c8b405b6SGerd Hoffmann uint32_t mask; 28c8b405b6SGerd Hoffmann QemuInputHandlerEvent event; 29c8b405b6SGerd Hoffmann QemuInputHandlerSync sync; 30c8b405b6SGerd Hoffmann }; 31c8b405b6SGerd Hoffmann 32c8b405b6SGerd Hoffmann QemuInputHandlerState *qemu_input_handler_register(DeviceState *dev, 33*b1be65f6SPhilippe Mathieu-Daudé const QemuInputHandler *handler); 34c8b405b6SGerd Hoffmann void qemu_input_handler_activate(QemuInputHandlerState *s); 35528728fdSGerd Hoffmann void qemu_input_handler_deactivate(QemuInputHandlerState *s); 36c8b405b6SGerd Hoffmann void qemu_input_handler_unregister(QemuInputHandlerState *s); 376f5943cfSGerd Hoffmann void qemu_input_handler_bind(QemuInputHandlerState *s, 386f5943cfSGerd Hoffmann const char *device_id, int head, 396f5943cfSGerd Hoffmann Error **errp); 40c8b405b6SGerd Hoffmann void qemu_input_event_send(QemuConsole *src, InputEvent *evt); 41ee312992SPavel Dovgalyuk void qemu_input_event_send_impl(QemuConsole *src, InputEvent *evt); 42c8b405b6SGerd Hoffmann void qemu_input_event_sync(void); 43ee312992SPavel Dovgalyuk void qemu_input_event_sync_impl(void); 44c8b405b6SGerd Hoffmann 4565671475SGerd Hoffmann void qemu_input_event_send_key(QemuConsole *src, KeyValue *key, bool down); 4665671475SGerd Hoffmann void qemu_input_event_send_key_number(QemuConsole *src, int num, bool down); 4765671475SGerd Hoffmann void qemu_input_event_send_key_qcode(QemuConsole *src, QKeyCode q, bool down); 48be1a7176SGerd Hoffmann void qemu_input_event_send_key_delay(uint32_t delay_ms); 49bcd5ac9bSDaniel P. Berrange int qemu_input_key_number_to_qcode(unsigned int nr); 5002aa76c2SGerd Hoffmann int qemu_input_key_value_to_number(const KeyValue *value); 5102aa76c2SGerd Hoffmann int qemu_input_key_value_to_qcode(const KeyValue *value); 5202aa76c2SGerd Hoffmann int qemu_input_key_value_to_scancode(const KeyValue *value, bool down, 5302aa76c2SGerd Hoffmann int *codes); 54606eb0c6SGerd Hoffmann int qemu_input_linux_to_qcode(unsigned int lnx); 5565671475SGerd Hoffmann 5643579403SGerd Hoffmann void qemu_input_queue_btn(QemuConsole *src, InputButton btn, bool down); 5743579403SGerd Hoffmann void qemu_input_update_buttons(QemuConsole *src, uint32_t *button_map, 5843579403SGerd Hoffmann uint32_t button_old, uint32_t button_new); 5943579403SGerd Hoffmann 600337e412SAkihiko Odaki bool qemu_input_is_absolute(QemuConsole *con); 619cfa7ab9SPhilippe Voinov int qemu_input_scale_axis(int value, 629cfa7ab9SPhilippe Voinov int min_in, int max_in, 639cfa7ab9SPhilippe Voinov int min_out, int max_out); 6443579403SGerd Hoffmann void qemu_input_queue_rel(QemuConsole *src, InputAxis axis, int value); 659cfa7ab9SPhilippe Voinov void qemu_input_queue_abs(QemuConsole *src, InputAxis axis, int value, 669cfa7ab9SPhilippe Voinov int min_in, int max_in); 67f6157392SSergio Lopez void qemu_input_queue_mtt(QemuConsole *src, InputMultiTouchType type, int slot, 68f6157392SSergio Lopez int tracking_id); 69f6157392SSergio Lopez void qemu_input_queue_mtt_abs(QemuConsole *src, InputAxis axis, int value, 70f6157392SSergio Lopez int min_in, int max_in, 71f6157392SSergio Lopez int slot, int tracking_id); 7243579403SGerd Hoffmann 734a33f45eSGerd Hoffmann void qemu_input_check_mode_change(void); 744a33f45eSGerd Hoffmann void qemu_add_mouse_mode_change_notifier(Notifier *notify); 754a33f45eSGerd Hoffmann void qemu_remove_mouse_mode_change_notifier(Notifier *notify); 764a33f45eSGerd Hoffmann 772ec78706SDaniel P. Berrange extern const guint qemu_input_map_atset1_to_qcode_len; 782ec78706SDaniel P. Berrange extern const guint16 qemu_input_map_atset1_to_qcode[]; 792ec78706SDaniel P. Berrange 80bcd5ac9bSDaniel P. Berrange extern const guint qemu_input_map_linux_to_qcode_len; 81bcd5ac9bSDaniel P. Berrange extern const guint16 qemu_input_map_linux_to_qcode[]; 82bcd5ac9bSDaniel P. Berrange 83ab8f9d49SDaniel P. Berrange extern const guint qemu_input_map_qcode_to_atset1_len; 84ab8f9d49SDaniel P. Berrange extern const guint16 qemu_input_map_qcode_to_atset1[]; 85ab8f9d49SDaniel P. Berrange 86ab8f9d49SDaniel P. Berrange extern const guint qemu_input_map_qcode_to_atset2_len; 87ab8f9d49SDaniel P. Berrange extern const guint16 qemu_input_map_qcode_to_atset2[]; 88ab8f9d49SDaniel P. Berrange 89ab8f9d49SDaniel P. Berrange extern const guint qemu_input_map_qcode_to_atset3_len; 90ab8f9d49SDaniel P. Berrange extern const guint16 qemu_input_map_qcode_to_atset3[]; 91ab8f9d49SDaniel P. Berrange 925a15e6b1SDaniel P. Berrange extern const guint qemu_input_map_qcode_to_linux_len; 935a15e6b1SDaniel P. Berrange extern const guint16 qemu_input_map_qcode_to_linux[]; 945a15e6b1SDaniel P. Berrange 95bcd5ac9bSDaniel P. Berrange extern const guint qemu_input_map_qcode_to_qnum_len; 96bcd5ac9bSDaniel P. Berrange extern const guint16 qemu_input_map_qcode_to_qnum[]; 97bcd5ac9bSDaniel P. Berrange 98e709a61aSDaniel P. Berrange extern const guint qemu_input_map_qcode_to_sun_len; 99e709a61aSDaniel P. Berrange extern const guint16 qemu_input_map_qcode_to_sun[]; 100e709a61aSDaniel P. Berrange 101bcd5ac9bSDaniel P. Berrange extern const guint qemu_input_map_qnum_to_qcode_len; 102bcd5ac9bSDaniel P. Berrange extern const guint16 qemu_input_map_qnum_to_qcode[]; 103bcd5ac9bSDaniel P. Berrange 104ed7b2624SDaniel P. Berrange extern const guint qemu_input_map_usb_to_qcode_len; 105ed7b2624SDaniel P. Berrange extern const guint16 qemu_input_map_usb_to_qcode[]; 106ed7b2624SDaniel P. Berrange 1072ec78706SDaniel P. Berrange extern const guint qemu_input_map_win32_to_qcode_len; 1082ec78706SDaniel P. Berrange extern const guint16 qemu_input_map_win32_to_qcode[]; 1092ec78706SDaniel P. Berrange 1102ec78706SDaniel P. Berrange extern const guint qemu_input_map_x11_to_qcode_len; 1112ec78706SDaniel P. Berrange extern const guint16 qemu_input_map_x11_to_qcode[]; 1122ec78706SDaniel P. Berrange 1132ec78706SDaniel P. Berrange extern const guint qemu_input_map_xorgevdev_to_qcode_len; 1142ec78706SDaniel P. Berrange extern const guint16 qemu_input_map_xorgevdev_to_qcode[]; 1152ec78706SDaniel P. Berrange 1162ec78706SDaniel P. Berrange extern const guint qemu_input_map_xorgkbd_to_qcode_len; 1172ec78706SDaniel P. Berrange extern const guint16 qemu_input_map_xorgkbd_to_qcode[]; 1182ec78706SDaniel P. Berrange 1192ec78706SDaniel P. Berrange extern const guint qemu_input_map_xorgxquartz_to_qcode_len; 1202ec78706SDaniel P. Berrange extern const guint16 qemu_input_map_xorgxquartz_to_qcode[]; 1212ec78706SDaniel P. Berrange 1222ec78706SDaniel P. Berrange extern const guint qemu_input_map_xorgxwin_to_qcode_len; 1232ec78706SDaniel P. Berrange extern const guint16 qemu_input_map_xorgxwin_to_qcode[]; 1242ec78706SDaniel P. Berrange 125656282d2SKeno Fischer extern const guint qemu_input_map_osx_to_qcode_len; 126656282d2SKeno Fischer extern const guint16 qemu_input_map_osx_to_qcode[]; 127656282d2SKeno Fischer 128c8b405b6SGerd Hoffmann #endif /* INPUT_H */ 129