/** * @file lv_libinput_private.h * */ #ifndef LV_LIBINPUT_PRIVATE_H #define LV_LIBINPUT_PRIVATE_H #ifdef __cplusplus extern "C" { #endif /********************* * INCLUDES *********************/ #include "lv_libinput.h" #if LV_USE_LIBINPUT #if LV_LIBINPUT_XKB #include "lv_xkb_private.h" #endif /********************* * DEFINES *********************/ /********************** * TYPEDEFS **********************/ struct _lv_libinput_event_t { lv_indev_state_t pressed; int key_val; lv_point_t point; }; struct _lv_libinput_t { int fd; struct pollfd fds[1]; /* The points array is implemented as a circular LIFO queue */ lv_libinput_event_t points[LV_LIBINPUT_MAX_EVENTS]; /* Event buffer */ lv_libinput_event_t slots[2]; /* Realtime state of up to 2 fingers to handle multitouch */ /* Pointer devices work a bit differently in libinput which requires us to store their last known state */ lv_point_t pointer_position; bool pointer_button_down; int start; /* Index of start of event queue */ int end; /* Index of end of queue*/ lv_libinput_event_t last_event; /* Report when no new events * to keep indev state consistent */ bool deinit; /* Tell worker thread to quit */ pthread_mutex_t event_lock; pthread_t worker_thread; struct libinput * libinput_context; struct libinput_device * libinput_device; #if LV_LIBINPUT_XKB lv_xkb_t xkb; #endif /* LV_LIBINPUT_XKB */ }; /********************** * GLOBAL PROTOTYPES **********************/ /********************** * MACROS **********************/ #endif /* LV_USE_LIBINPUT */ #ifdef __cplusplus } /*extern "C"*/ #endif #endif /*LV_LIBINPUT_PRIVATE_H*/