diff --git a/src/evdev-tablet-pad.c b/src/evdev-tablet-pad.c index 53849c43..ff2d85e5 100644 --- a/src/evdev-tablet-pad.c +++ b/src/evdev-tablet-pad.c @@ -836,52 +836,6 @@ pad_init(struct pad_dispatch *pad, struct evdev_device *device) return rc; } -static uint32_t -pad_sendevents_get_modes(struct libinput_device *device) -{ - return LIBINPUT_CONFIG_SEND_EVENTS_DISABLED; -} - -static enum libinput_config_status -pad_sendevents_set_mode(struct libinput_device *device, - enum libinput_config_send_events_mode mode) -{ - struct evdev_device *evdev = evdev_device(device); - struct pad_dispatch *pad = (struct pad_dispatch*)evdev->dispatch; - - if (mode == pad->sendevents.current_mode) - return LIBINPUT_CONFIG_STATUS_SUCCESS; - - switch(mode) { - case LIBINPUT_CONFIG_SEND_EVENTS_ENABLED: - break; - case LIBINPUT_CONFIG_SEND_EVENTS_DISABLED: - pad_suspend(evdev->dispatch, evdev); - break; - default: - return LIBINPUT_CONFIG_STATUS_UNSUPPORTED; - } - - pad->sendevents.current_mode = mode; - - return LIBINPUT_CONFIG_STATUS_SUCCESS; -} - -static enum libinput_config_send_events_mode -pad_sendevents_get_mode(struct libinput_device *device) -{ - struct evdev_device *evdev = evdev_device(device); - struct pad_dispatch *dispatch = (struct pad_dispatch*)evdev->dispatch; - - return dispatch->sendevents.current_mode; -} - -static enum libinput_config_send_events_mode -pad_sendevents_get_default_mode(struct libinput_device *device) -{ - return LIBINPUT_CONFIG_SEND_EVENTS_ENABLED; -} - struct evdev_dispatch * evdev_tablet_pad_create(struct evdev_device *device) { @@ -894,12 +848,7 @@ evdev_tablet_pad_create(struct evdev_device *device) return NULL; } - device->base.config.sendevents = &pad->sendevents.config; - pad->sendevents.current_mode = LIBINPUT_CONFIG_SEND_EVENTS_ENABLED; - pad->sendevents.config.get_modes = pad_sendevents_get_modes; - pad->sendevents.config.set_mode = pad_sendevents_set_mode; - pad->sendevents.config.get_mode = pad_sendevents_get_mode; - pad->sendevents.config.get_default_mode = pad_sendevents_get_default_mode; + evdev_init_sendevents(device, &pad->base); return &pad->base; } diff --git a/src/evdev-tablet-pad.h b/src/evdev-tablet-pad.h index 2b767f58..133c46fa 100644 --- a/src/evdev-tablet-pad.h +++ b/src/evdev-tablet-pad.h @@ -85,11 +85,6 @@ struct pad_dispatch { double dial2; } dials; - struct { - struct libinput_device_config_send_events config; - enum libinput_config_send_events_mode current_mode; - } sendevents; - struct { struct list mode_group_list; } modes; diff --git a/test/test-pad.c b/test/test-pad.c index ab587089..dd2a7522 100644 --- a/test/test-pad.c +++ b/test/test-pad.c @@ -1145,6 +1145,40 @@ START_TEST(pad_keys) } END_TEST +START_TEST(pad_send_events_disabled) +{ + struct litest_device *dev = litest_current_device(); + struct libinput *li = dev->libinput; + enum libinput_config_status status; + + litest_drain_events(li); + + status = libinput_device_config_send_events_set_mode( + dev->libinput_device, + LIBINPUT_CONFIG_SEND_EVENTS_DISABLED); + litest_assert_enum_eq(status, LIBINPUT_CONFIG_STATUS_SUCCESS); + + litest_pad_strip_start(dev, 10); + litest_assert_empty_queue(li); + litest_pad_strip_change(dev, 100); + litest_assert_empty_queue(li); + litest_pad_strip_end(dev); + litest_assert_empty_queue(li); + + litest_pad_ring_start(dev, 10); + litest_assert_empty_queue(li); + litest_pad_ring_change(dev, 100); + litest_assert_empty_queue(li); + litest_pad_ring_end(dev); + litest_assert_empty_queue(li); + + pad_key_down(dev, KEY_BUTTONCONFIG); + litest_assert_empty_queue(li); + pad_key_up(dev, KEY_BUTTONCONFIG); + litest_assert_empty_queue(li); +} +END_TEST + TEST_COLLECTION(pad) { litest_add(pad_cap, LITEST_TABLET_PAD, LITEST_ANY); @@ -1187,4 +1221,6 @@ TEST_COLLECTION(pad) litest_add(pad_mode_group_has_no_toggle, LITEST_TABLET_PAD, LITEST_ANY); litest_add(pad_keys, LITEST_TABLET_PAD, LITEST_ANY); + + litest_add(pad_send_events_disabled, LITEST_TABLET_PAD, LITEST_ANY); }