5 handle_pointer_motion(struct libinput_event *event,
6 struct ds_pointer *pointer)
8 struct libinput_event_pointer *pevent;
9 double delta_x, delta_y;
10 struct ds_event_pointer_motion ds_event = { 0 };
12 pevent = libinput_event_get_pointer_event(event);
14 delta_x = libinput_event_pointer_get_dx(pevent);
15 delta_y = libinput_event_pointer_get_dy(pevent);
17 ds_log(DS_DBG, "pointer motion event delta_x:%f, delta_y:%f", delta_x, delta_y);
19 ds_event.device = NULL;
20 ds_event.time_msec = -1;
21 ds_event.delta_x = delta_x;
22 ds_event.delta_y = delta_y;
24 wl_signal_emit(&pointer->events.motion, &ds_event);
28 handle_pointer_motion_abs(struct libinput_event *event,
29 struct ds_pointer *pointer)
31 struct libinput_event_pointer *pevent;
33 struct ds_event_pointer_motion_absolute ds_event = { 0 };
35 pevent = libinput_event_get_pointer_event(event);
37 x = libinput_event_pointer_get_absolute_x_transformed(pevent, 1);
38 y = libinput_event_pointer_get_absolute_y_transformed(pevent, 1);
40 ds_log(DS_DBG, "Pointer(%p) motion abs event x:%f, y:%f", pointer, x, y);
42 ds_event.device = NULL;
43 ds_event.time_msec = -1;
47 wl_signal_emit(&pointer->events.motion_absolute, &ds_event);
50 handle_pointer_button(struct libinput_event *event,
51 struct ds_pointer *pointer)
53 struct libinput_event_pointer *pevent;
55 enum libinput_button_state li_state = LIBINPUT_BUTTON_STATE_PRESSED;
56 enum ds_button_state state = DS_BUTTON_PRESSED;
57 struct ds_event_pointer_button ds_event = { 0 };
59 pevent = libinput_event_get_pointer_event(event);
61 button = libinput_event_pointer_get_button(pevent);
62 button = ((button & 0x00F) + 1);
63 if (button == 3) button = 2;
64 else if (button == 2) button = 3;
66 li_state = libinput_event_pointer_get_button_state(pevent);
67 if (li_state == LIBINPUT_BUTTON_STATE_PRESSED) {
68 state = DS_BUTTON_PRESSED;
71 state = DS_BUTTON_RELEASED;
73 ds_log(DS_DBG, "Pointer(%p) button event button:%d state:%s",
75 (state == DS_BUTTON_PRESSED) ? "PRESSED" : "RELEASED");
77 ds_event.device = NULL;
78 ds_event.time_msec = -1;
79 ds_event.button = button;
80 ds_event.state = state;
82 wl_signal_emit(&pointer->events.button, &ds_event);
86 handle_pointer_axis(struct libinput_event *event,
87 struct ds_pointer *pointer)
89 ds_log(DS_DBG, "pointer(%p) axis event", pointer);
90 /* TODO: wl_signal_emit() */