xref: /qemu/include/ui/input.h (revision b1be65f6)
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,
33b1be65f6SPhilippe 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