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 = usec_to_msec(
21 libinput_event_pointer_get_time_usec(pevent));
22 ds_event.delta_x = delta_x;
23 ds_event.delta_y = delta_y;
25 wl_signal_emit(&pointer->events.motion, &ds_event);
29 handle_pointer_motion_abs(struct libinput_event *event,
30 struct ds_pointer *pointer)
32 struct libinput_event_pointer *pevent;
34 struct ds_event_pointer_motion_absolute ds_event = { 0 };
36 pevent = libinput_event_get_pointer_event(event);
38 x = libinput_event_pointer_get_absolute_x_transformed(pevent, 1);
39 y = libinput_event_pointer_get_absolute_y_transformed(pevent, 1);
41 ds_log(DS_DBG, "Pointer(%p) motion abs event x:%f, y:%f", pointer, x, y);
43 ds_event.device = NULL;
44 ds_event.time_msec = usec_to_msec(
45 libinput_event_pointer_get_time_usec(pevent));
49 wl_signal_emit(&pointer->events.motion_absolute, &ds_event);
52 handle_pointer_button(struct libinput_event *event,
53 struct ds_pointer *pointer)
55 struct libinput_event_pointer *pevent;
57 enum libinput_button_state li_state = LIBINPUT_BUTTON_STATE_PRESSED;
58 enum ds_button_state state = DS_BUTTON_PRESSED;
59 struct ds_event_pointer_button ds_event = { 0 };
61 pevent = libinput_event_get_pointer_event(event);
63 button = libinput_event_pointer_get_button(pevent);
64 button = ((button & 0x00F) + 1);
65 if (button == 3) button = 2;
66 else if (button == 2) button = 3;
68 li_state = libinput_event_pointer_get_button_state(pevent);
69 if (li_state == LIBINPUT_BUTTON_STATE_PRESSED) {
70 state = DS_BUTTON_PRESSED;
73 state = DS_BUTTON_RELEASED;
75 ds_log(DS_DBG, "Pointer(%p) button event button:%d state:%s",
77 (state == DS_BUTTON_PRESSED) ? "PRESSED" : "RELEASED");
79 ds_event.device = NULL;
80 ds_event.time_msec = usec_to_msec(
81 libinput_event_pointer_get_time_usec(pevent));
82 ds_event.button = button;
83 ds_event.state = state;
85 wl_signal_emit(&pointer->events.button, &ds_event);
89 handle_pointer_axis(struct libinput_event *event,
90 struct ds_pointer *pointer)
92 ds_log(DS_DBG, "pointer(%p) axis event", pointer);
93 /* TODO: wl_signal_emit() */