const char *devname;
int fd;
struct {
- int min_x, max_x, min_y, max_y;
- int32_t x, y;
+ const struct input_absinfo *absinfo_x, *absinfo_y;
+ int fake_resolution;
+ int32_t x, y;
int32_t seat_slot;
int apply_calibration;
struct mtdev *mtdev;
struct {
- li_fixed_t dx, dy;
+ int dx, dy;
} rel;
enum evdev_event_type pending_event;
struct {
struct motion_filter *filter;
} pointer;
+
+ /* Bitmask of pressed keys used to ignore initial release events from
+ * the kernel. */
+ unsigned long key_mask[NLONGS(KEY_CNT)];
+ /* Key counter used for multiplexing button events internally in
+ * libinput. */
+ uint8_t key_count[KEY_CNT];
};
#define EVDEV_UNHANDLED_DEVICE ((struct evdev_device *) 1)
const char *
evdev_device_get_sysname(struct evdev_device *device);
+const char *
+evdev_device_get_name(struct evdev_device *device);
+
+unsigned int
+evdev_device_get_id_product(struct evdev_device *device);
+
+unsigned int
+evdev_device_get_id_vendor(struct evdev_device *device);
+
void
evdev_device_calibrate(struct evdev_device *device, float calibration[6]);
evdev_device_has_capability(struct evdev_device *device,
enum libinput_device_capability capability);
-li_fixed_t
+int
+evdev_device_get_size(struct evdev_device *device,
+ double *w,
+ double *h);
+
+double
evdev_device_transform_x(struct evdev_device *device,
- li_fixed_t x,
+ double x,
uint32_t width);
-li_fixed_t
+double
evdev_device_transform_y(struct evdev_device *device,
- li_fixed_t y,
+ double y,
uint32_t height);
void
+evdev_keyboard_notify_key(struct evdev_device *device,
+ uint32_t time,
+ int key,
+ enum libinput_key_state state);
+
+void
+evdev_pointer_notify_button(struct evdev_device *device,
+ uint32_t time,
+ int button,
+ enum libinput_button_state state);
+
+void
evdev_device_remove(struct evdev_device *device);
void
evdev_device_destroy(struct evdev_device *device);
+static inline double
+evdev_convert_to_mm(const struct input_absinfo *absinfo, double v)
+{
+ double value = v - absinfo->minimum;
+ return value/absinfo->resolution;
+}
+
#endif /* EVDEV_H */