Lines Matching +full:- +full:- +full:include

10 #include "../../indev/lv_indev_private.h"
11 #include "lv_libinput_private.h"
15 #include "../../display/lv_display_private.h"
17 #include <stdio.h>
18 #include <unistd.h>
19 #include <linux/limits.h>
20 #include <fcntl.h>
21 #include <errno.h>
22 #include <stdbool.h>
23 #include <dirent.h>
24 #include <libinput.h>
25 #include <pthread.h>
26 #include <string.h>
29 #include <dev/evdev/input.h>
31 #include <linux/input.h>
140 dsc->libinput_context = libinput_path_create_context(&interface, NULL); in lv_libinput_create()
141 if(!dsc->libinput_context) { in lv_libinput_create()
147 dsc->libinput_device = libinput_path_add_device(dsc->libinput_context, dev_path); in lv_libinput_create()
148 if(!dsc->libinput_device) { in lv_libinput_create()
153 dsc->libinput_device = libinput_device_ref(dsc->libinput_device); in lv_libinput_create()
154 if(!dsc->libinput_device) { in lv_libinput_create()
159 dsc->fd = libinput_get_fd(dsc->libinput_context); in lv_libinput_create()
162 dsc->fds[0].fd = dsc->fd; in lv_libinput_create()
163 dsc->fds[0].events = POLLIN; in lv_libinput_create()
164 dsc->fds[0].revents = 0; in lv_libinput_create()
168 lv_xkb_init(&(dsc->xkb), names); in lv_libinput_create()
182 pthread_mutex_init(&dsc->event_lock, NULL); in lv_libinput_create()
183 pthread_create(&dsc->worker_thread, NULL, _poll_thread, dsc); in lv_libinput_create()
216 if(strncmp(ent->d_name, "event", 5) != 0) { in _rescan_devices()
221 char * path = malloc((11 + strlen(ent->d_name) + 1) * sizeof(char)); in _rescan_devices()
229 strcat(path, ent->d_name); in _rescan_devices()
315 rc = poll(dsc->fds, nfds, timeout); in _poll_thread()
317 case -1: in _poll_thread()
321 if(dsc->deinit) { in _poll_thread()
322 dsc->deinit = false; /* Signal that we're done */ in _poll_thread()
329 libinput_dispatch(dsc->libinput_context); in _poll_thread()
330 pthread_mutex_lock(&dsc->event_lock); in _poll_thread()
331 while((event = libinput_get_event(dsc->libinput_context)) != NULL) { in _poll_thread()
336 pthread_mutex_unlock(&dsc->event_lock); in _poll_thread()
345 if(dsc->start == dsc->end) { in _get_event()
349 lv_libinput_event_t * evt = &dsc->points[dsc->start]; in _get_event()
351 if(++dsc->start == LV_LIBINPUT_MAX_EVENTS) in _get_event()
352 dsc->start = 0; in _get_event()
359 return dsc->start != dsc->end; in _event_pending()
364 lv_libinput_event_t * evt = &dsc->points[dsc->end]; in _create_event()
366 if(++dsc->end == LV_LIBINPUT_MAX_EVENTS) in _create_event()
367 dsc->end = 0; in _create_event()
372 if(dsc->end == dsc->start) { in _create_event()
374 if(++dsc->start == LV_LIBINPUT_MAX_EVENTS) in _create_event()
375 dsc->start = 0; in _create_event()
388 pthread_mutex_lock(&dsc->event_lock); in _read()
393 evt = &dsc->last_event; /* indev expects us to report the most recent state */ in _read()
395 data->point = evt->point; in _read()
396 data->state = evt->pressed; in _read()
397 data->key = evt->key_val; in _read()
398 data->continue_reading = _event_pending(dsc); in _read()
400 dsc->last_event = *evt; /* Remember the last event for the next call */ in _read()
402 pthread_mutex_unlock(&dsc->event_lock); in _read()
405 …("libinput_read: (%04d, %04d): %d continue_reading? %d", data->point.x, data->point.y, data->state, in _read()
406 data->continue_reading); in _read()
442 const int32_t hor_res = disp->physical_hor_res > 0 ? disp->physical_hor_res : disp->hor_res; in _read_pointer()
443 const int32_t ver_res = disp->physical_ver_res > 0 ? disp->physical_ver_res : disp->ver_res; in _read_pointer()
449 …)LV_CLAMP(INT32_MIN, libinput_event_touch_get_x_transformed(touch_event, hor_res) - disp->offset_x, in _read_pointer()
451 …)LV_CLAMP(INT32_MIN, libinput_event_touch_get_y_transformed(touch_event, ver_res) - disp->offset_y, in _read_pointer()
453 … if(point.x < 0 || point.x > disp->hor_res || point.y < 0 || point.y > disp->ver_res) { in _read_pointer()
456 evt->point = point; in _read_pointer()
457 evt->pressed = LV_INDEV_STATE_PRESSED; in _read_pointer()
458 dsc->slots[slot].point = evt->point; in _read_pointer()
459 dsc->slots[slot].pressed = evt->pressed; in _read_pointer()
474 if(slot == 0 && dsc->slots[1].pressed == LV_INDEV_STATE_PRESSED) { in _read_pointer()
481 synth_evt->pressed = LV_INDEV_STATE_PRESSED; in _read_pointer()
482 synth_evt->point = dsc->slots[0].point; in _read_pointer()
486 evt->pressed = LV_INDEV_STATE_RELEASED; in _read_pointer()
487 evt->point = dsc->slots[0].point; in _read_pointer()
491 synth_evt->pressed = LV_INDEV_STATE_PRESSED; in _read_pointer()
492 synth_evt->point = dsc->slots[1].point; in _read_pointer()
494 else if(slot == 1 && dsc->slots[0].pressed == LV_INDEV_STATE_PRESSED) { in _read_pointer()
500 evt->pressed = LV_INDEV_STATE_RELEASED; in _read_pointer()
501 evt->point = dsc->slots[1].point; in _read_pointer()
505 synth_evt->pressed = LV_INDEV_STATE_PRESSED; in _read_pointer()
506 synth_evt->point = dsc->slots[0].point; in _read_pointer()
509 evt->pressed = LV_INDEV_STATE_RELEASED; in _read_pointer()
510 evt->point = dsc->slots[slot].point; in _read_pointer()
513 dsc->slots[slot].pressed = evt->pressed; in _read_pointer()
516 …dsc->pointer_position.x = (int32_t)LV_CLAMP(0, dsc->pointer_position.x + libinput_event_pointer_ge… in _read_pointer()
517 disp->hor_res - 1); in _read_pointer()
518 …dsc->pointer_position.y = (int32_t)LV_CLAMP(0, dsc->pointer_position.y + libinput_event_pointer_ge… in _read_pointer()
519 disp->ver_res - 1); in _read_pointer()
520 evt->point.x = dsc->pointer_position.x; in _read_pointer()
521 evt->point.y = dsc->pointer_position.y; in _read_pointer()
522 evt->pressed = dsc->pointer_button_down; in _read_pointer()
527 … hor_res) - disp->offset_x, INT32_MAX); in _read_pointer()
529 … ver_res) - disp->offset_y, INT32_MAX); in _read_pointer()
530 … if(point.x < 0 || point.x > disp->hor_res || point.y < 0 || point.y > disp->ver_res) { in _read_pointer()
533 evt->point = point; in _read_pointer()
534 evt->pressed = dsc->pointer_button_down; in _read_pointer()
539 …dsc->pointer_button_down = button_state == LIBINPUT_BUTTON_STATE_RELEASED ? LV_INDEV_STATE_RELEASE… in _read_pointer()
541 evt->point.x = dsc->pointer_position.x; in _read_pointer()
542 evt->point.y = dsc->pointer_position.y; in _read_pointer()
543 evt->pressed = dsc->pointer_button_down; in _read_pointer()
562 … evt->key_val = lv_xkb_process_key(&(dsc->xkb), code, key_state == LIBINPUT_KEY_STATE_PRESSED); in _read_keypad()
566 evt->key_val = LV_KEY_BACKSPACE; in _read_keypad()
569 evt->key_val = LV_KEY_ENTER; in _read_keypad()
572 evt->key_val = LV_KEY_PREV; in _read_keypad()
575 evt->key_val = LV_KEY_NEXT; in _read_keypad()
578 evt->key_val = LV_KEY_UP; in _read_keypad()
581 evt->key_val = LV_KEY_LEFT; in _read_keypad()
584 evt->key_val = LV_KEY_RIGHT; in _read_keypad()
587 evt->key_val = LV_KEY_DOWN; in _read_keypad()
590 evt->key_val = LV_KEY_NEXT; in _read_keypad()
593 evt->key_val = LV_KEY_HOME; in _read_keypad()
596 evt->key_val = LV_KEY_END; in _read_keypad()
599 evt->key_val = LV_KEY_ESC; in _read_keypad()
602 evt->key_val = 0; in _read_keypad()
606 if(evt->key_val != 0) { in _read_keypad()
608 …evt->pressed = (key_state == LIBINPUT_KEY_STATE_RELEASED) ? LV_INDEV_STATE_RELEASED : LV_INDEV_STA… in _read_keypad()
612 if(evt->key_val != LV_KEY_BACKSPACE && in _read_keypad()
613 evt->key_val != LV_KEY_UP && in _read_keypad()
614 evt->key_val != LV_KEY_LEFT && in _read_keypad()
615 evt->key_val != LV_KEY_RIGHT && in _read_keypad()
616 evt->key_val != LV_KEY_DOWN && in _read_keypad()
619 release_evt->pressed = LV_INDEV_STATE_RELEASED; in _read_keypad()
620 release_evt->key_val = evt->key_val; in _read_keypad()
633 return fd < 0 ? -errno : fd; in _open_restricted()
644 if(dsc->fd) in _delete()
645 dsc->deinit = true; in _delete()
649 if(!dsc->deinit) in _delete()
654 if(dsc->deinit) { in _delete()
656 pthread_cancel(dsc->worker_thread); in _delete()
659 if(dsc->libinput_device) { in _delete()
660 libinput_path_remove_device(dsc->libinput_device); in _delete()
661 libinput_device_unref(dsc->libinput_device); in _delete()
664 if(dsc->libinput_context) { in _delete()
665 libinput_unref(dsc->libinput_context); in _delete()
669 lv_xkb_deinit(&(dsc->xkb)); in _delete()