1 /* 2 * Clutter. 3 * 4 * An OpenGL based 'interactive canvas' library. 5 * 6 * Copyright (C) 2016 Red Hat inc. 7 * 8 * This library is free software; you can redistribute it and/or 9 * modify it under the terms of the GNU Lesser General Public 10 * License as published by the Free Software Foundation; either 11 * version 2 of the License, or (at your option) any later version. 12 * 13 * This library is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16 * Lesser General Public License for more details. 17 * 18 * You should have received a copy of the GNU Lesser General Public 19 * License along with this library. If not, see <http://www.gnu.org/licenses/>. 20 * 21 * Author: Jonas Ådahl <jadahl@gmail.com> 22 */ 23 24 #ifndef __CLUTTER_VIRTUAL_INPUT_DEVICE_H__ 25 #define __CLUTTER_VIRTUAL_INPUT_DEVICE_H__ 26 27 #include <glib-object.h> 28 #include <stdint.h> 29 30 #include "clutter-seat.h" 31 32 #define CLUTTER_TYPE_VIRTUAL_INPUT_DEVICE (clutter_virtual_input_device_get_type ()) 33 34 #define CLUTTER_VIRTUAL_INPUT_DEVICE_MAX_TOUCH_SLOTS 32u 35 36 CLUTTER_EXPORT 37 G_DECLARE_DERIVABLE_TYPE (ClutterVirtualInputDevice, 38 clutter_virtual_input_device, 39 CLUTTER, VIRTUAL_INPUT_DEVICE, 40 GObject) 41 42 typedef enum _ClutterButtonState 43 { 44 CLUTTER_BUTTON_STATE_RELEASED, 45 CLUTTER_BUTTON_STATE_PRESSED 46 } ClutterButtonState; 47 48 typedef enum _ClutterKeyState 49 { 50 CLUTTER_KEY_STATE_RELEASED, 51 CLUTTER_KEY_STATE_PRESSED 52 } ClutterKeyState; 53 54 struct _ClutterVirtualInputDeviceClass 55 { 56 GObjectClass parent_class; 57 58 void (*notify_relative_motion) (ClutterVirtualInputDevice *virtual_device, 59 uint64_t time_us, 60 double dx, 61 double dy); 62 63 void (*notify_absolute_motion) (ClutterVirtualInputDevice *virtual_device, 64 uint64_t time_us, 65 double x, 66 double y); 67 68 void (*notify_button) (ClutterVirtualInputDevice *virtual_device, 69 uint64_t time_us, 70 uint32_t button, 71 ClutterButtonState button_state); 72 73 void (*notify_key) (ClutterVirtualInputDevice *virtual_device, 74 uint64_t time_us, 75 uint32_t key, 76 ClutterKeyState key_state); 77 void (*notify_keyval) (ClutterVirtualInputDevice *virtual_device, 78 uint64_t time_us, 79 uint32_t keyval, 80 ClutterKeyState key_state); 81 82 void (*notify_discrete_scroll) (ClutterVirtualInputDevice *virtual_device, 83 uint64_t time_us, 84 ClutterScrollDirection direction, 85 ClutterScrollSource scroll_source); 86 87 void (*notify_scroll_continuous) (ClutterVirtualInputDevice *virtual_device, 88 uint64_t time_us, 89 double dx, 90 double dy, 91 ClutterScrollSource scroll_source, 92 ClutterScrollFinishFlags finish_flags); 93 94 void (*notify_touch_down) (ClutterVirtualInputDevice *virtual_device, 95 uint64_t time_us, 96 int slot, 97 double x, 98 double y); 99 100 void (*notify_touch_motion) (ClutterVirtualInputDevice *virtual_device, 101 uint64_t time_us, 102 int slot, 103 double x, 104 double y); 105 106 void (*notify_touch_up) (ClutterVirtualInputDevice *virtual_device, 107 uint64_t time_us, 108 int slot); 109 }; 110 111 CLUTTER_EXPORT 112 void clutter_virtual_input_device_notify_relative_motion (ClutterVirtualInputDevice *virtual_device, 113 uint64_t time_us, 114 double dx, 115 double dy); 116 117 CLUTTER_EXPORT 118 void clutter_virtual_input_device_notify_absolute_motion (ClutterVirtualInputDevice *virtual_device, 119 uint64_t time_us, 120 double x, 121 double y); 122 123 CLUTTER_EXPORT 124 void clutter_virtual_input_device_notify_button (ClutterVirtualInputDevice *virtual_device, 125 uint64_t time_us, 126 uint32_t button, 127 ClutterButtonState button_state); 128 129 CLUTTER_EXPORT 130 void clutter_virtual_input_device_notify_key (ClutterVirtualInputDevice *virtual_device, 131 uint64_t time_us, 132 uint32_t key, 133 ClutterKeyState key_state); 134 135 CLUTTER_EXPORT 136 void clutter_virtual_input_device_notify_keyval (ClutterVirtualInputDevice *virtual_device, 137 uint64_t time_us, 138 uint32_t keyval, 139 ClutterKeyState key_state); 140 141 CLUTTER_EXPORT 142 void clutter_virtual_input_device_notify_discrete_scroll (ClutterVirtualInputDevice *virtual_device, 143 uint64_t time_us, 144 ClutterScrollDirection direction, 145 ClutterScrollSource scroll_source); 146 147 CLUTTER_EXPORT 148 void clutter_virtual_input_device_notify_scroll_continuous (ClutterVirtualInputDevice *virtual_device, 149 uint64_t time_us, 150 double dx, 151 double dy, 152 ClutterScrollSource scroll_source, 153 ClutterScrollFinishFlags finish_flags); 154 155 CLUTTER_EXPORT 156 void clutter_virtual_input_device_notify_touch_down (ClutterVirtualInputDevice *virtual_device, 157 uint64_t time_us, 158 int slot, 159 double x, 160 double y); 161 162 CLUTTER_EXPORT 163 void clutter_virtual_input_device_notify_touch_motion (ClutterVirtualInputDevice *virtual_device, 164 uint64_t time_us, 165 int slot, 166 double x, 167 double y); 168 169 CLUTTER_EXPORT 170 void clutter_virtual_input_device_notify_touch_up (ClutterVirtualInputDevice *virtual_device, 171 uint64_t time_us, 172 int slot); 173 174 CLUTTER_EXPORT 175 int clutter_virtual_input_device_get_device_type (ClutterVirtualInputDevice *virtual_device); 176 177 #endif /* __CLUTTER_VIRTUAL_INPUT_DEVICE_H__ */ 178