• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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