84 lines
1.8 KiB
C
84 lines
1.8 KiB
C
/**
|
|
* @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*/
|