1 /*
2 * Copyright (c) 2024 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "libinput_interface.h"
17
18 namespace {
19 OHOS::MMI::LibinputInterface *g_instance = nullptr;
20 } // namespace
21
22 namespace OHOS {
23 namespace MMI {
24
LibinputInterface()25 LibinputInterface::LibinputInterface()
26 {
27 g_instance = this;
28 }
29 } // namespace MMI
30 } // namespace OHOS
31
32 extern "C" {
libinput_event_get_type(struct libinput_event * event)33 enum libinput_event_type libinput_event_get_type(struct libinput_event *event)
34 {
35 return g_instance->GetEventType(event);
36 }
37
libinput_event_tablet_tool_get_tip_state(struct libinput_event_tablet_tool * event)38 enum libinput_tablet_tool_tip_state libinput_event_tablet_tool_get_tip_state(struct libinput_event_tablet_tool *event)
39 {
40 return g_instance->TabletToolGetTipState(event);
41 }
42
libinput_event_tablet_tool_get_tilt_x(struct libinput_event_tablet_tool * event)43 double libinput_event_tablet_tool_get_tilt_x(struct libinput_event_tablet_tool *event)
44 {
45 return g_instance->TabletToolGetTiltX(event);
46 }
47
libinput_event_pointer_get_axis_source(struct libinput_event_pointer * event)48 enum libinput_pointer_axis_source libinput_event_pointer_get_axis_source(struct libinput_event_pointer *event)
49 {
50 return g_instance->GetAxisSource(event);
51 }
52
libinput_event_tablet_tool_get_tilt_y(struct libinput_event_tablet_tool * event)53 double libinput_event_tablet_tool_get_tilt_y(struct libinput_event_tablet_tool *event)
54 {
55 return g_instance->TabletToolGetTiltY(event);
56 }
57
libinput_event_tablet_tool_get_time_usec(struct libinput_event_tablet_tool * event)58 uint64_t libinput_event_tablet_tool_get_time_usec(struct libinput_event_tablet_tool *event)
59 {
60 return g_instance->TabletToolGetTimeUsec(event);
61 }
62
libinput_event_tablet_tool_get_pressure(struct libinput_event_tablet_tool * event)63 double libinput_event_tablet_tool_get_pressure(struct libinput_event_tablet_tool *event)
64 {
65 return g_instance->TabletToolGetPressure(event);
66 }
67
libinput_event_tablet_tool_get_tool_type(struct libinput_event_tablet_tool * event)68 int32_t libinput_event_tablet_tool_get_tool_type(struct libinput_event_tablet_tool *event)
69 {
70 return g_instance->TabletToolGetToolType(event);
71 }
72
libinput_tablet_tool_get_type(struct libinput_tablet_tool * tool)73 enum libinput_tablet_tool_type libinput_tablet_tool_get_type(struct libinput_tablet_tool *tool)
74 {
75 return g_instance->TabletToolGetType(tool);
76 }
77
libinput_event_tablet_tool_get_tool(struct libinput_event_tablet_tool * event)78 struct libinput_tablet_tool* libinput_event_tablet_tool_get_tool(struct libinput_event_tablet_tool *event)
79 {
80 return g_instance->TabletToolGetTool(event);
81 }
82
libinput_event_tablet_tool_get_twist(struct libinput_event_tablet_tool * event)83 int32_t libinput_event_tablet_tool_get_twist(struct libinput_event_tablet_tool *event)
84 {
85 return g_instance->TabletToolGetTwist(event);
86 }
87
libinput_event_get_device(struct libinput_event * event)88 struct libinput_device* libinput_event_get_device(struct libinput_event *event)
89 {
90 return g_instance->GetDevice(event);
91 }
92
libinput_event_get_hand_feature(struct libinput_event * event)93 int32_t libinput_event_get_hand_feature(struct libinput_event *event)
94 {
95 return g_instance->GetHandFeature(event);
96 }
97
libinput_event_get_sensortime(struct libinput_event * event)98 uint64_t libinput_event_get_sensortime(struct libinput_event *event)
99 {
100 return g_instance->GetSensorTime(event);
101 }
102
libinput_event_get_keyboard_event(struct libinput_event * event)103 struct libinput_event_keyboard* libinput_event_get_keyboard_event(struct libinput_event *event)
104 {
105 return g_instance->LibinputEventGetKeyboardEvent(event);
106 }
107
libinput_event_get_pointer_event(struct libinput_event * event)108 struct libinput_event_pointer* libinput_event_get_pointer_event(struct libinput_event *event)
109 {
110 return g_instance->LibinputGetPointerEvent(event);
111 }
112
libinput_event_get_touch_event(struct libinput_event * event)113 struct libinput_event_touch* libinput_event_get_touch_event(struct libinput_event *event)
114 {
115 return g_instance->GetTouchEvent(event);
116 }
117
libinput_event_get_touchpad_event(struct libinput_event * event)118 struct libinput_event_touch* libinput_event_get_touchpad_event(struct libinput_event *event)
119 {
120 return g_instance->GetTouchpadEvent(event);
121 }
122
libinput_event_get_gesture_event(struct libinput_event * event)123 struct libinput_event_gesture* libinput_event_get_gesture_event(struct libinput_event *event)
124 {
125 return g_instance->GetGestureEvent(event);
126 }
127
libinput_event_get_tablet_tool_event(struct libinput_event * event)128 struct libinput_event_tablet_tool* libinput_event_get_tablet_tool_event(struct libinput_event *event)
129 {
130 return g_instance->GetTabletToolEvent(event);
131 }
132
libinput_event_keyboard_get_time_usec(struct libinput_event_keyboard * event)133 uint64_t libinput_event_keyboard_get_time_usec(struct libinput_event_keyboard *event)
134 {
135 return (event != nullptr ? event->base.time : 0);
136 }
137
libinput_event_keyboard_get_key(struct libinput_event_keyboard * event)138 uint32_t libinput_event_keyboard_get_key(struct libinput_event_keyboard *event)
139 {
140 return g_instance->LibinputEventKeyboardGetKey(event);
141 }
142
libinput_device_keyboard_has_key(struct libinput_device * device,uint32_t code)143 int libinput_device_keyboard_has_key(struct libinput_device *device, uint32_t code)
144 {
145 return 0;
146 }
147
libinput_event_keyboard_get_key_state(struct libinput_event_keyboard * event)148 enum libinput_key_state libinput_event_keyboard_get_key_state(struct libinput_event_keyboard *event)
149 {
150 return g_instance->LibinputEventKeyboardGetKeyState(event);
151 }
152
libinput_event_pointer_get_button_state(struct libinput_event_pointer * event)153 enum libinput_button_state libinput_event_pointer_get_button_state(struct libinput_event_pointer *event)
154 {
155 return (event != nullptr ? event->buttonState : LIBINPUT_BUTTON_STATE_RELEASED);
156 }
157
libinput_event_touch_get_blob_id(struct libinput_event_touch * event)158 int32_t libinput_event_touch_get_blob_id(struct libinput_event_touch* event)
159 {
160 return g_instance->TouchEventGetBlobId(event);
161 }
162
libinput_event_touch_get_time_usec(struct libinput_event_touch * event)163 uint64_t libinput_event_touch_get_time_usec(struct libinput_event_touch *event)
164 {
165 return g_instance->TouchEventGetTime(event);
166 }
167
libinput_event_touch_get_seat_slot(struct libinput_event_touch * event)168 int32_t libinput_event_touch_get_seat_slot(struct libinput_event_touch *event)
169 {
170 return g_instance->TouchEventGetSeatSlot(event);
171 }
172
libinput_event_touch_get_pressure(struct libinput_event_touch * event)173 double libinput_event_touch_get_pressure(struct libinput_event_touch* event)
174 {
175 return g_instance->TouchEventGetPressure(event);
176 }
177
libinput_event_touch_get_move_flag(struct libinput_event_touch * event)178 int32_t libinput_event_touch_get_move_flag(struct libinput_event_touch* event)
179 {
180 return g_instance->TouchEventGetMoveFlag(event);
181 }
182
libinput_event_get_touch_contact_long_axis(struct libinput_event_touch * event)183 int32_t libinput_event_get_touch_contact_long_axis(struct libinput_event_touch *event)
184 {
185 return g_instance->TouchEventGetContactLongAxis(event);
186 }
187
libinput_event_get_touch_contact_short_axis(struct libinput_event_touch * event)188 int32_t libinput_event_get_touch_contact_short_axis(struct libinput_event_touch *event)
189 {
190 return g_instance->TouchEventGetContactShortAxis(event);
191 }
192
libinput_event_touch_get_tool_type(struct libinput_event_touch * event)193 int32_t libinput_event_touch_get_tool_type(struct libinput_event_touch *event)
194 {
195 return g_instance->TouchEventGetToolType(event);
196 }
197
libinput_device_touch_btn_tool_type_down(struct libinput_device * device,int32_t btnToolType)198 int libinput_device_touch_btn_tool_type_down(struct libinput_device *device, int32_t btnToolType)
199 {
200 return g_instance->TouchEventGetBtnToolTypeDown(device, btnToolType);
201 }
202
libinput_event_touch_get_x_transformed(struct libinput_event_touch * event,uint32_t width)203 double libinput_event_touch_get_x_transformed(struct libinput_event_touch *event, uint32_t width)
204 {
205 return -1.0;
206 }
207
libinput_event_touch_get_y_transformed(struct libinput_event_touch * event,uint32_t height)208 double libinput_event_touch_get_y_transformed(struct libinput_event_touch *event, uint32_t height)
209 {
210 return -1.0;
211 }
212
libinput_event_touch_get_tool_x_transformed(struct libinput_event_touch * event,uint32_t width)213 double libinput_event_touch_get_tool_x_transformed(struct libinput_event_touch *event, uint32_t width)
214 {
215 return -1.0;
216 }
217
libinput_event_touch_get_tool_y_transformed(struct libinput_event_touch * event,uint32_t height)218 double libinput_event_touch_get_tool_y_transformed(struct libinput_event_touch *event, uint32_t height)
219 {
220 return -1.0;
221 }
222
libinput_event_touch_get_tool_width_transformed(struct libinput_event_touch * event,uint32_t width)223 double libinput_event_touch_get_tool_width_transformed(struct libinput_event_touch *event, uint32_t width)
224 {
225 return -1.0;
226 }
227
libinput_event_touch_get_tool_height_transformed(struct libinput_event_touch * event,uint32_t height)228 double libinput_event_touch_get_tool_height_transformed(struct libinput_event_touch *event, uint32_t height)
229 {
230 return -1.0;
231 }
232
libinput_event_tablet_tool_get_x_transformed(struct libinput_event_tablet_tool * event,uint32_t width)233 double libinput_event_tablet_tool_get_x_transformed(struct libinput_event_tablet_tool *event, uint32_t width)
234 {
235 return -1.0;
236 }
237
libinput_event_tablet_tool_get_y_transformed(struct libinput_event_tablet_tool * event,uint32_t height)238 double libinput_event_tablet_tool_get_y_transformed(struct libinput_event_tablet_tool *event, uint32_t height)
239 {
240 return -1.0;
241 }
242
libinput_event_touchpad_get_time_usec(struct libinput_event_touch * event)243 uint64_t libinput_event_touchpad_get_time_usec(struct libinput_event_touch *event)
244 {
245 return (event != nullptr ? event->base.time : 0);
246 }
247
libinput_event_touchpad_get_seat_slot(struct libinput_event_touch * event)248 int32_t libinput_event_touchpad_get_seat_slot(struct libinput_event_touch *event)
249 {
250 return (event != nullptr ? event->seatSlot : 0);
251 }
252
libinput_event_touchpad_get_x(struct libinput_event_touch * event)253 double libinput_event_touchpad_get_x(struct libinput_event_touch *event)
254 {
255 return (event != nullptr ? event->x : 0.0);
256 }
257
libinput_event_touchpad_get_y(struct libinput_event_touch * event)258 double libinput_event_touchpad_get_y(struct libinput_event_touch *event)
259 {
260 return (event != nullptr ? event->y : 0.0);
261 }
262
libinput_event_touchpad_get_pressure(struct libinput_event_touch * event)263 double libinput_event_touchpad_get_pressure(struct libinput_event_touch *event)
264 {
265 return (event != nullptr ? event->pressure : 0.0);
266 }
267
libinput_event_touchpad_get_touch_contact_long_axis(struct libinput_event_touch * event)268 int32_t libinput_event_touchpad_get_touch_contact_long_axis(struct libinput_event_touch *event)
269 {
270 return (event != nullptr ? event->longAxis : 0);
271 }
272
libinput_event_touchpad_get_touch_contact_short_axis(struct libinput_event_touch * event)273 int32_t libinput_event_touchpad_get_touch_contact_short_axis(struct libinput_event_touch *event)
274 {
275 return (event != nullptr ? event->shortAxis : 0);
276 }
277
libinput_event_touchpad_get_tool_type(struct libinput_event_touch * event)278 int32_t libinput_event_touchpad_get_tool_type(struct libinput_event_touch *event)
279 {
280 return g_instance->TouchpadGetTool(event);
281 }
282
libinput_device_touchpad_btn_tool_type_down(struct libinput_device * device,int32_t btnToolType)283 int32_t libinput_device_touchpad_btn_tool_type_down(struct libinput_device *device, int32_t btnToolType)
284 {
285 return -1;
286 }
287
libinput_event_touchpad_get_tool_x(struct libinput_event_touch * event)288 double libinput_event_touchpad_get_tool_x(struct libinput_event_touch *event)
289 {
290 return (event != nullptr ? event->toolX : 0.0);
291 }
292
libinput_event_touchpad_get_tool_y(struct libinput_event_touch * event)293 double libinput_event_touchpad_get_tool_y(struct libinput_event_touch *event)
294 {
295 return (event != nullptr ? event->toolY : 0.0);
296 }
297
libinput_event_touchpad_get_tool_width(struct libinput_event_touch * event)298 double libinput_event_touchpad_get_tool_width(struct libinput_event_touch *event)
299 {
300 return (event != nullptr ? event->toolWidth : 0.0);
301 }
302
libinput_event_touchpad_get_tool_height(struct libinput_event_touch * event)303 double libinput_event_touchpad_get_tool_height(struct libinput_event_touch *event)
304 {
305 return (event != nullptr ? event->toolWidth : 0.0);
306 }
307
libinput_event_gesture_get_time(struct libinput_event_gesture * event)308 uint32_t libinput_event_gesture_get_time(struct libinput_event_gesture *event)
309 {
310 return g_instance->GestureEventGetTime(event);
311 }
312
libinput_event_gesture_get_finger_count(struct libinput_event_gesture * event)313 int libinput_event_gesture_get_finger_count(struct libinput_event_gesture *event)
314 {
315 return g_instance->GestureEventGetFingerCount(event);
316 }
317
libinput_event_gesture_get_scale(struct libinput_event_gesture * event)318 double libinput_event_gesture_get_scale(struct libinput_event_gesture *event)
319 {
320 return (event != nullptr ? static_cast<double>(event->scale) : 1.0);
321 }
322
libinput_event_gesture_get_angle_delta(struct libinput_event_gesture * event)323 double libinput_event_gesture_get_angle_delta(struct libinput_event_gesture *event)
324 {
325 return (event != nullptr ? static_cast<double>(event->angle) : 0.0);
326 }
327
libinput_event_gesture_get_device_coords_x(struct libinput_event_gesture * event,uint32_t idx)328 int libinput_event_gesture_get_device_coords_x(struct libinput_event_gesture *event, uint32_t idx)
329 {
330 return g_instance->GestureEventGetDevCoordsX(event, idx);
331 }
332
libinput_event_gesture_get_device_coords_y(struct libinput_event_gesture * event,uint32_t idx)333 int libinput_event_gesture_get_device_coords_y(struct libinput_event_gesture *event, uint32_t idx)
334 {
335 return g_instance->GestureEventGetDevCoordsY(event, idx);
336 }
337
libinput_has_event_led_type(struct libinput_device * device)338 int libinput_has_event_led_type(struct libinput_device *device)
339 {
340 return g_instance->HasEventLedType(device);
341 }
342
libinput_set_led_state(struct libinput_device * device,unsigned int code,unsigned int state)343 int libinput_set_led_state(struct libinput_device *device, unsigned int code, unsigned int state)
344 {
345 return 1;
346 }
347
libinput_device_get_name(struct libinput_device * device)348 const char* libinput_device_get_name(struct libinput_device *device)
349 {
350 return g_instance->DeviceGetName(device);
351 }
352
libinput_device_get_id_bustype(struct libinput_device * device)353 unsigned int libinput_device_get_id_bustype(struct libinput_device *device)
354 {
355 return (device != nullptr ? device->busType : 0);
356 }
357
libinput_device_get_id_version(struct libinput_device * device)358 unsigned int libinput_device_get_id_version(struct libinput_device *device)
359 {
360 return (device != nullptr ? device->version : 0);
361 }
362
libinput_device_get_id_product(struct libinput_device * device)363 unsigned int libinput_device_get_id_product(struct libinput_device *device)
364 {
365 return (device != nullptr ? device->product : 0);
366 }
367
libinput_device_get_id_vendor(struct libinput_device * device)368 unsigned int libinput_device_get_id_vendor(struct libinput_device *device)
369 {
370 return (device != nullptr ? device->vendor : 0);
371 }
372
libinput_device_get_phys(struct libinput_device * device)373 const char* libinput_device_get_phys(struct libinput_device* device)
374 {
375 return "";
376 }
377
libinput_device_get_uniq(struct libinput_device * device)378 const char* libinput_device_get_uniq(struct libinput_device* device)
379 {
380 return "";
381 }
382
libinput_device_get_sysname(struct libinput_device * device)383 const char* libinput_device_get_sysname(struct libinput_device *device)
384 {
385 return nullptr;
386 }
387
libinput_device_get_udev_device(struct libinput_device * device)388 struct udev_device* libinput_device_get_udev_device(struct libinput_device *device)
389 {
390 return nullptr;
391 }
392
libinput_device_get_tags(struct libinput_device * device)393 enum evdev_device_udev_tags libinput_device_get_tags(struct libinput_device* device)
394 {
395 if (device == nullptr) {
396 return EVDEV_UDEV_TAG_INPUT;
397 }
398 enum evdev_device_udev_tags tag = static_cast<enum evdev_device_udev_tags>(device->udevDev.tags);
399 return tag;
400 }
401
libinput_device_has_capability(struct libinput_device * device,enum libinput_device_capability capability)402 int libinput_device_has_capability(struct libinput_device *device, enum libinput_device_capability capability)
403 {
404 return 0;
405 }
406
libinput_device_has_key(struct libinput_device * device,int32_t keyCode)407 int32_t libinput_device_has_key(struct libinput_device* device, int32_t keyCode)
408 {
409 return 0;
410 }
411
libinput_device_get_axis_min(struct libinput_device * device,int32_t code)412 int32_t libinput_device_get_axis_min(struct libinput_device* device, int32_t code)
413 {
414 return -1;
415 }
416
libinput_device_get_axis_max(struct libinput_device * device,int32_t code)417 int32_t libinput_device_get_axis_max(struct libinput_device* device, int32_t code)
418 {
419 return -1;
420 }
421
libinput_device_get_axis_fuzz(struct libinput_device * device,int32_t code)422 int32_t libinput_device_get_axis_fuzz(struct libinput_device* device, int32_t code)
423 {
424 return -1;
425 }
426
libinput_device_get_axis_flat(struct libinput_device * device,int32_t code)427 int32_t libinput_device_get_axis_flat(struct libinput_device* device, int32_t code)
428 {
429 return -1;
430 }
431
libinput_device_get_axis_resolution(struct libinput_device * device,int32_t code)432 int32_t libinput_device_get_axis_resolution(struct libinput_device* device, int32_t code)
433 {
434 return -1;
435 }
436
libinput_device_get_size(struct libinput_device * device,double * width,double * height)437 int libinput_device_get_size(struct libinput_device *device, double *width, double *height)
438 {
439 return g_instance->DeviceGetSize(device, width, height);
440 }
441
libinput_get_funckey_state(struct libinput_device * device,unsigned int code)442 int libinput_get_funckey_state(struct libinput_device *device, unsigned int code)
443 {
444 return g_instance->GetFuncKeyState(device, code);
445 }
446
libinput_event_pointer_get_finger_count(struct libinput_event_pointer * event)447 uint32_t libinput_event_pointer_get_finger_count(struct libinput_event_pointer *event)
448 {
449 return g_instance->PointerEventGetFingerCount(event);
450 }
451
libinput_event_pointer_get_dx_unaccelerated(struct libinput_event_pointer * event)452 double libinput_event_pointer_get_dx_unaccelerated(struct libinput_event_pointer *event)
453 {
454 return g_instance->PointerGetDxUnaccelerated(event);
455 }
456
libinput_event_pointer_get_dy_unaccelerated(struct libinput_event_pointer * event)457 double libinput_event_pointer_get_dy_unaccelerated(struct libinput_event_pointer *event)
458 {
459 return g_instance->PointerGetDyUnaccelerated(event);
460 }
461
libinput_event_pointer_get_button(struct libinput_event_pointer * event)462 uint32_t libinput_event_pointer_get_button(struct libinput_event_pointer *event)
463 {
464 return g_instance->PointerGetButton(event);
465 }
466
libinput_event_pointer_has_axis(struct libinput_event_pointer * event,enum libinput_pointer_axis axis)467 int libinput_event_pointer_has_axis(struct libinput_event_pointer *event, enum libinput_pointer_axis axis)
468 {
469 return g_instance->PointerHasAxis(event, axis);
470 }
471
libinput_event_pointer_get_axis_value(struct libinput_event_pointer * event,enum libinput_pointer_axis axis)472 double libinput_event_pointer_get_axis_value(struct libinput_event_pointer *event, enum libinput_pointer_axis axis)
473 {
474 return g_instance->PointerGetAxisValue(event, axis);
475 }
476
libinput_event_pointer_get_button_area(struct libinput_event_pointer * event)477 uint32_t libinput_event_pointer_get_button_area(struct libinput_event_pointer *event)
478 {
479 return g_instance->PointerGetButtonArea(event);
480 }
481
libinput_touchpad_device_get_ppi(struct libinput_device * device)482 double libinput_touchpad_device_get_ppi(struct libinput_device *device)
483 {
484 return g_instance->TouchpadDeviceGetPpi(device);
485 }
486
libinput_touchpad_device_get_hypot_size(struct libinput_device * device)487 double libinput_touchpad_device_get_hypot_size(struct libinput_device *device)
488 {
489 return g_instance->TouchpadDeviceGetHypotSize(device);
490 }
491
libinput_touchpad_device_get_frequency(struct libinput_device * device)492 int32_t libinput_touchpad_device_get_frequency(struct libinput_device *device)
493 {
494 return g_instance->TouchpadDeviceGetFrequency(device);
495 }
496 } // extern "C"
497