mirror of
https://gitlab.freedesktop.org/libinput/libinput.git
synced 2025-12-20 04:30:06 +01:00
Merge branch '1.30-branch' into '1.30-branch'
1.30 backports See merge request libinput/libinput!1375
This commit is contained in:
commit
7f7a4cf524
9 changed files with 207 additions and 18 deletions
|
|
@ -27,6 +27,7 @@
|
|||
#define INPUT_PROP_TOPBUTTONPAD 0x04 /* softbuttons at top of pad */
|
||||
#define INPUT_PROP_POINTING_STICK 0x05 /* is a pointing stick */
|
||||
#define INPUT_PROP_ACCELEROMETER 0x06 /* has accelerometer */
|
||||
#define INPUT_PROP_PRESSUREPAD 0x07 /* pressure triggers clicks */
|
||||
|
||||
#define INPUT_PROP_MAX 0x1f
|
||||
#define INPUT_PROP_CNT (INPUT_PROP_MAX + 1)
|
||||
|
|
@ -278,7 +279,8 @@
|
|||
#define KEY_PAUSECD 201
|
||||
#define KEY_PROG3 202
|
||||
#define KEY_PROG4 203
|
||||
#define KEY_DASHBOARD 204 /* AL Dashboard */
|
||||
#define KEY_ALL_APPLICATIONS 204 /* AC Desktop Show All Applications */
|
||||
#define KEY_DASHBOARD KEY_ALL_APPLICATIONS
|
||||
#define KEY_SUSPEND 205
|
||||
#define KEY_CLOSE 206 /* AC Close */
|
||||
#define KEY_PLAY 207
|
||||
|
|
@ -515,6 +517,10 @@
|
|||
#define KEY_10CHANNELSUP 0x1b8 /* 10 channels up (10+) */
|
||||
#define KEY_10CHANNELSDOWN 0x1b9 /* 10 channels down (10-) */
|
||||
#define KEY_IMAGES 0x1ba /* AL Image Browser */
|
||||
#define KEY_NOTIFICATION_CENTER 0x1bc /* Show/hide the notification center */
|
||||
#define KEY_PICKUP_PHONE 0x1bd /* Answer incoming call */
|
||||
#define KEY_HANGUP_PHONE 0x1be /* Decline incoming call */
|
||||
#define KEY_LINK_PHONE 0x1bf /* AL Phone Syncing */
|
||||
|
||||
#define KEY_DEL_EOL 0x1c0
|
||||
#define KEY_DEL_EOS 0x1c1
|
||||
|
|
@ -542,6 +548,7 @@
|
|||
#define KEY_FN_F 0x1e2
|
||||
#define KEY_FN_S 0x1e3
|
||||
#define KEY_FN_B 0x1e4
|
||||
#define KEY_FN_RIGHT_SHIFT 0x1e5
|
||||
|
||||
#define KEY_BRL_DOT1 0x1f1
|
||||
#define KEY_BRL_DOT2 0x1f2
|
||||
|
|
@ -595,8 +602,14 @@
|
|||
#define BTN_DPAD_LEFT 0x222
|
||||
#define BTN_DPAD_RIGHT 0x223
|
||||
|
||||
#define BTN_GRIPL 0x224
|
||||
#define BTN_GRIPR 0x225
|
||||
#define BTN_GRIPL2 0x226
|
||||
#define BTN_GRIPR2 0x227
|
||||
|
||||
#define KEY_ALS_TOGGLE 0x230 /* Ambient light sensor */
|
||||
#define KEY_ROTATE_LOCK_TOGGLE 0x231 /* Display rotation lock */
|
||||
#define KEY_REFRESH_RATE_TOGGLE 0x232 /* Display refresh rate toggle */
|
||||
|
||||
#define KEY_BUTTONCONFIG 0x240 /* AL Button Configuration */
|
||||
#define KEY_TASKMANAGER 0x241 /* AL Task/Project Manager */
|
||||
|
|
@ -607,10 +620,29 @@
|
|||
#define KEY_VOICECOMMAND 0x246 /* Listening Voice Command */
|
||||
#define KEY_ASSISTANT 0x247 /* AL Context-aware desktop assistant */
|
||||
#define KEY_KBD_LAYOUT_NEXT 0x248 /* AC Next Keyboard Layout Select */
|
||||
#define KEY_EMOJI_PICKER 0x249 /* Show/hide emoji picker (HUTRR101) */
|
||||
#define KEY_DICTATE 0x24a /* Start or Stop Voice Dictation Session (HUTRR99) */
|
||||
#define KEY_CAMERA_ACCESS_ENABLE 0x24b /* Enables programmatic access to camera devices. (HUTRR72) */
|
||||
#define KEY_CAMERA_ACCESS_DISABLE 0x24c /* Disables programmatic access to camera devices. (HUTRR72) */
|
||||
#define KEY_CAMERA_ACCESS_TOGGLE 0x24d /* Toggles the current state of the camera access control. (HUTRR72) */
|
||||
#define KEY_ACCESSIBILITY 0x24e /* Toggles the system bound accessibility UI/command (HUTRR116) */
|
||||
#define KEY_DO_NOT_DISTURB 0x24f /* Toggles the system-wide "Do Not Disturb" control (HUTRR94)*/
|
||||
|
||||
#define KEY_BRIGHTNESS_MIN 0x250 /* Set Brightness to Minimum */
|
||||
#define KEY_BRIGHTNESS_MAX 0x251 /* Set Brightness to Maximum */
|
||||
|
||||
/*
|
||||
* Keycodes for hotkeys toggling the electronic privacy screen found on some
|
||||
* laptops on/off. Note when the embedded-controller turns on/off the eprivacy
|
||||
* screen itself then the state should be reported through drm connecter props:
|
||||
* https://www.kernel.org/doc/html/latest/gpu/drm-kms.html#standard-connector-properties
|
||||
* Except when implementing the drm connecter properties API is not possible
|
||||
* because e.g. the firmware does not allow querying the presence and/or status
|
||||
* of the eprivacy screen at boot.
|
||||
*/
|
||||
#define KEY_EPRIVACY_SCREEN_ON 0x252
|
||||
#define KEY_EPRIVACY_SCREEN_OFF 0x253
|
||||
|
||||
#define KEY_KBDINPUTASSIST_PREV 0x260
|
||||
#define KEY_KBDINPUTASSIST_NEXT 0x261
|
||||
#define KEY_KBDINPUTASSIST_PREVGROUP 0x262
|
||||
|
|
@ -655,6 +687,27 @@
|
|||
/* Select an area of screen to be copied */
|
||||
#define KEY_SELECTIVE_SCREENSHOT 0x27a
|
||||
|
||||
/* Move the focus to the next or previous user controllable element within a UI container */
|
||||
#define KEY_NEXT_ELEMENT 0x27b
|
||||
#define KEY_PREVIOUS_ELEMENT 0x27c
|
||||
|
||||
/* Toggle Autopilot engagement */
|
||||
#define KEY_AUTOPILOT_ENGAGE_TOGGLE 0x27d
|
||||
|
||||
/* Shortcut Keys */
|
||||
#define KEY_MARK_WAYPOINT 0x27e
|
||||
#define KEY_SOS 0x27f
|
||||
#define KEY_NAV_CHART 0x280
|
||||
#define KEY_FISHING_CHART 0x281
|
||||
#define KEY_SINGLE_RANGE_RADAR 0x282
|
||||
#define KEY_DUAL_RANGE_RADAR 0x283
|
||||
#define KEY_RADAR_OVERLAY 0x284
|
||||
#define KEY_TRADITIONAL_SONAR 0x285
|
||||
#define KEY_CLEARVU_SONAR 0x286
|
||||
#define KEY_SIDEVU_SONAR 0x287
|
||||
#define KEY_NAV_INFO 0x288
|
||||
#define KEY_BRIGHTNESS_MENU 0x289
|
||||
|
||||
/*
|
||||
* Some keyboards have keys which do not have a defined meaning, these keys
|
||||
* are intended to be programmed / bound to macros by the user. For most
|
||||
|
|
@ -730,6 +783,9 @@
|
|||
#define KEY_KBD_LCD_MENU4 0x2bb
|
||||
#define KEY_KBD_LCD_MENU5 0x2bc
|
||||
|
||||
/* Performance Boost key (Alienware)/G-Mode key (Dell) */
|
||||
#define KEY_PERFORMANCE 0x2bd
|
||||
|
||||
#define BTN_TRIGGER_HAPPY 0x2c0
|
||||
#define BTN_TRIGGER_HAPPY1 0x2c0
|
||||
#define BTN_TRIGGER_HAPPY2 0x2c1
|
||||
|
|
@ -834,6 +890,7 @@
|
|||
#define ABS_TOOL_WIDTH 0x1c
|
||||
|
||||
#define ABS_VOLUME 0x20
|
||||
#define ABS_PROFILE 0x21
|
||||
|
||||
#define ABS_MISC 0x28
|
||||
|
||||
|
|
@ -889,7 +946,8 @@
|
|||
#define SW_MUTE_DEVICE 0x0e /* set = device disabled */
|
||||
#define SW_PEN_INSERTED 0x0f /* set = pen inserted */
|
||||
#define SW_MACHINE_COVER 0x10 /* set = cover closed */
|
||||
#define SW_MAX 0x10
|
||||
#define SW_USB_INSERT 0x11 /* set = USB audio device connected */
|
||||
#define SW_MAX 0x11
|
||||
#define SW_CNT (SW_MAX+1)
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@
|
|||
#define INPUT_PROP_TOPBUTTONPAD 0x04 /* softbuttons at top of pad */
|
||||
#define INPUT_PROP_POINTING_STICK 0x05 /* is a pointing stick */
|
||||
#define INPUT_PROP_ACCELEROMETER 0x06 /* has accelerometer */
|
||||
#define INPUT_PROP_PRESSUREPAD 0x07 /* pressure triggers clicks */
|
||||
|
||||
#define INPUT_PROP_MAX 0x1f
|
||||
#define INPUT_PROP_CNT (INPUT_PROP_MAX + 1)
|
||||
|
|
@ -278,7 +279,8 @@
|
|||
#define KEY_PAUSECD 201
|
||||
#define KEY_PROG3 202
|
||||
#define KEY_PROG4 203
|
||||
#define KEY_DASHBOARD 204 /* AL Dashboard */
|
||||
#define KEY_ALL_APPLICATIONS 204 /* AC Desktop Show All Applications */
|
||||
#define KEY_DASHBOARD KEY_ALL_APPLICATIONS
|
||||
#define KEY_SUSPEND 205
|
||||
#define KEY_CLOSE 206 /* AC Close */
|
||||
#define KEY_PLAY 207
|
||||
|
|
@ -515,6 +517,10 @@
|
|||
#define KEY_10CHANNELSUP 0x1b8 /* 10 channels up (10+) */
|
||||
#define KEY_10CHANNELSDOWN 0x1b9 /* 10 channels down (10-) */
|
||||
#define KEY_IMAGES 0x1ba /* AL Image Browser */
|
||||
#define KEY_NOTIFICATION_CENTER 0x1bc /* Show/hide the notification center */
|
||||
#define KEY_PICKUP_PHONE 0x1bd /* Answer incoming call */
|
||||
#define KEY_HANGUP_PHONE 0x1be /* Decline incoming call */
|
||||
#define KEY_LINK_PHONE 0x1bf /* AL Phone Syncing */
|
||||
|
||||
#define KEY_DEL_EOL 0x1c0
|
||||
#define KEY_DEL_EOS 0x1c1
|
||||
|
|
@ -542,6 +548,7 @@
|
|||
#define KEY_FN_F 0x1e2
|
||||
#define KEY_FN_S 0x1e3
|
||||
#define KEY_FN_B 0x1e4
|
||||
#define KEY_FN_RIGHT_SHIFT 0x1e5
|
||||
|
||||
#define KEY_BRL_DOT1 0x1f1
|
||||
#define KEY_BRL_DOT2 0x1f2
|
||||
|
|
@ -595,8 +602,14 @@
|
|||
#define BTN_DPAD_LEFT 0x222
|
||||
#define BTN_DPAD_RIGHT 0x223
|
||||
|
||||
#define BTN_GRIPL 0x224
|
||||
#define BTN_GRIPR 0x225
|
||||
#define BTN_GRIPL2 0x226
|
||||
#define BTN_GRIPR2 0x227
|
||||
|
||||
#define KEY_ALS_TOGGLE 0x230 /* Ambient light sensor */
|
||||
#define KEY_ROTATE_LOCK_TOGGLE 0x231 /* Display rotation lock */
|
||||
#define KEY_REFRESH_RATE_TOGGLE 0x232 /* Display refresh rate toggle */
|
||||
|
||||
#define KEY_BUTTONCONFIG 0x240 /* AL Button Configuration */
|
||||
#define KEY_TASKMANAGER 0x241 /* AL Task/Project Manager */
|
||||
|
|
@ -607,10 +620,29 @@
|
|||
#define KEY_VOICECOMMAND 0x246 /* Listening Voice Command */
|
||||
#define KEY_ASSISTANT 0x247 /* AL Context-aware desktop assistant */
|
||||
#define KEY_KBD_LAYOUT_NEXT 0x248 /* AC Next Keyboard Layout Select */
|
||||
#define KEY_EMOJI_PICKER 0x249 /* Show/hide emoji picker (HUTRR101) */
|
||||
#define KEY_DICTATE 0x24a /* Start or Stop Voice Dictation Session (HUTRR99) */
|
||||
#define KEY_CAMERA_ACCESS_ENABLE 0x24b /* Enables programmatic access to camera devices. (HUTRR72) */
|
||||
#define KEY_CAMERA_ACCESS_DISABLE 0x24c /* Disables programmatic access to camera devices. (HUTRR72) */
|
||||
#define KEY_CAMERA_ACCESS_TOGGLE 0x24d /* Toggles the current state of the camera access control. (HUTRR72) */
|
||||
#define KEY_ACCESSIBILITY 0x24e /* Toggles the system bound accessibility UI/command (HUTRR116) */
|
||||
#define KEY_DO_NOT_DISTURB 0x24f /* Toggles the system-wide "Do Not Disturb" control (HUTRR94)*/
|
||||
|
||||
#define KEY_BRIGHTNESS_MIN 0x250 /* Set Brightness to Minimum */
|
||||
#define KEY_BRIGHTNESS_MAX 0x251 /* Set Brightness to Maximum */
|
||||
|
||||
/*
|
||||
* Keycodes for hotkeys toggling the electronic privacy screen found on some
|
||||
* laptops on/off. Note when the embedded-controller turns on/off the eprivacy
|
||||
* screen itself then the state should be reported through drm connecter props:
|
||||
* https://www.kernel.org/doc/html/latest/gpu/drm-kms.html#standard-connector-properties
|
||||
* Except when implementing the drm connecter properties API is not possible
|
||||
* because e.g. the firmware does not allow querying the presence and/or status
|
||||
* of the eprivacy screen at boot.
|
||||
*/
|
||||
#define KEY_EPRIVACY_SCREEN_ON 0x252
|
||||
#define KEY_EPRIVACY_SCREEN_OFF 0x253
|
||||
|
||||
#define KEY_KBDINPUTASSIST_PREV 0x260
|
||||
#define KEY_KBDINPUTASSIST_NEXT 0x261
|
||||
#define KEY_KBDINPUTASSIST_PREVGROUP 0x262
|
||||
|
|
@ -655,6 +687,27 @@
|
|||
/* Select an area of screen to be copied */
|
||||
#define KEY_SELECTIVE_SCREENSHOT 0x27a
|
||||
|
||||
/* Move the focus to the next or previous user controllable element within a UI container */
|
||||
#define KEY_NEXT_ELEMENT 0x27b
|
||||
#define KEY_PREVIOUS_ELEMENT 0x27c
|
||||
|
||||
/* Toggle Autopilot engagement */
|
||||
#define KEY_AUTOPILOT_ENGAGE_TOGGLE 0x27d
|
||||
|
||||
/* Shortcut Keys */
|
||||
#define KEY_MARK_WAYPOINT 0x27e
|
||||
#define KEY_SOS 0x27f
|
||||
#define KEY_NAV_CHART 0x280
|
||||
#define KEY_FISHING_CHART 0x281
|
||||
#define KEY_SINGLE_RANGE_RADAR 0x282
|
||||
#define KEY_DUAL_RANGE_RADAR 0x283
|
||||
#define KEY_RADAR_OVERLAY 0x284
|
||||
#define KEY_TRADITIONAL_SONAR 0x285
|
||||
#define KEY_CLEARVU_SONAR 0x286
|
||||
#define KEY_SIDEVU_SONAR 0x287
|
||||
#define KEY_NAV_INFO 0x288
|
||||
#define KEY_BRIGHTNESS_MENU 0x289
|
||||
|
||||
/*
|
||||
* Some keyboards have keys which do not have a defined meaning, these keys
|
||||
* are intended to be programmed / bound to macros by the user. For most
|
||||
|
|
@ -730,6 +783,9 @@
|
|||
#define KEY_KBD_LCD_MENU4 0x2bb
|
||||
#define KEY_KBD_LCD_MENU5 0x2bc
|
||||
|
||||
/* Performance Boost key (Alienware)/G-Mode key (Dell) */
|
||||
#define KEY_PERFORMANCE 0x2bd
|
||||
|
||||
#define BTN_TRIGGER_HAPPY 0x2c0
|
||||
#define BTN_TRIGGER_HAPPY1 0x2c0
|
||||
#define BTN_TRIGGER_HAPPY2 0x2c1
|
||||
|
|
@ -834,6 +890,7 @@
|
|||
#define ABS_TOOL_WIDTH 0x1c
|
||||
|
||||
#define ABS_VOLUME 0x20
|
||||
#define ABS_PROFILE 0x21
|
||||
|
||||
#define ABS_MISC 0x28
|
||||
|
||||
|
|
@ -889,7 +946,8 @@
|
|||
#define SW_MUTE_DEVICE 0x0e /* set = device disabled */
|
||||
#define SW_PEN_INSERTED 0x0f /* set = pen inserted */
|
||||
#define SW_MACHINE_COVER 0x10 /* set = cover closed */
|
||||
#define SW_MAX 0x10
|
||||
#define SW_USB_INSERT 0x11 /* set = USB audio device connected */
|
||||
#define SW_MAX 0x11
|
||||
#define SW_CNT (SW_MAX+1)
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -3622,7 +3622,8 @@ tp_init_pressurepad(struct tp_dispatch *tp, struct evdev_device *device)
|
|||
*
|
||||
* See also #562
|
||||
*/
|
||||
if (libevdev_get_abs_resolution(device->evdev, ABS_MT_PRESSURE) != 0 ||
|
||||
if (libevdev_has_property(device->evdev, INPUT_PROP_PRESSUREPAD) ||
|
||||
libevdev_get_abs_resolution(device->evdev, ABS_MT_PRESSURE) != 0 ||
|
||||
evdev_device_has_model_quirk(device, QUIRK_MODEL_PRESSURE_PAD)) {
|
||||
libevdev_disable_event_code(device->evdev, EV_ABS, ABS_MT_PRESSURE);
|
||||
libevdev_disable_event_code(device->evdev, EV_ABS, ABS_PRESSURE);
|
||||
|
|
|
|||
|
|
@ -1272,10 +1272,13 @@ static void
|
|||
eraser_button_toggle(struct libinput_tablet_tool *tool)
|
||||
{
|
||||
struct libinput_device *libinput_device = tool->last_device;
|
||||
struct evdev_device *device = evdev_device(libinput_device);
|
||||
struct tablet_dispatch *tablet = tablet_dispatch(device->dispatch);
|
||||
|
||||
tablet_tool_apply_eraser_button(tablet, tool);
|
||||
if (libinput_device) {
|
||||
struct evdev_device *device = evdev_device(libinput_device);
|
||||
struct tablet_dispatch *tablet = tablet_dispatch(device->dispatch);
|
||||
|
||||
tablet_tool_apply_eraser_button(tablet, tool);
|
||||
}
|
||||
}
|
||||
|
||||
static enum libinput_config_status
|
||||
|
|
@ -1296,7 +1299,7 @@ eraser_button_set_mode(struct libinput_tablet_tool *tool,
|
|||
static enum libinput_config_eraser_button_mode
|
||||
eraser_button_get_mode(struct libinput_tablet_tool *tool)
|
||||
{
|
||||
return tool->eraser_button.mode;
|
||||
return tool->eraser_button.want_mode;
|
||||
}
|
||||
|
||||
static enum libinput_config_eraser_button_mode
|
||||
|
|
@ -1330,7 +1333,7 @@ eraser_button_set_button(struct libinput_tablet_tool *tool, uint32_t button)
|
|||
static unsigned int
|
||||
eraser_button_get_button(struct libinput_tablet_tool *tool)
|
||||
{
|
||||
return tool->eraser_button.button;
|
||||
return tool->eraser_button.want_button;
|
||||
}
|
||||
|
||||
static unsigned int
|
||||
|
|
@ -2448,6 +2451,8 @@ tablet_destroy(struct evdev_dispatch *dispatch)
|
|||
struct libinput *li = tablet_libinput_context(tablet);
|
||||
|
||||
list_for_each_safe(tool, &tablet->tool_list, link) {
|
||||
list_remove(&tool->link);
|
||||
list_init(&tool->link); /* unref may list_remove() too */
|
||||
libinput_tablet_tool_unref(tool);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -54,6 +54,7 @@ struct plugin_device {
|
|||
struct libinput_device *device;
|
||||
bitmask_t tool_state;
|
||||
bool pen_forced_into_proximity;
|
||||
size_t pen_prox_out_events;
|
||||
};
|
||||
|
||||
struct plugin_data {
|
||||
|
|
@ -121,6 +122,23 @@ forced_tool_plugin_device_handle_frame(struct libinput_plugin *libinput_plugin,
|
|||
} else {
|
||||
bitmask_clear_bit(&device->tool_state, BTN_TOOL_PEN);
|
||||
device->pen_forced_into_proximity = false;
|
||||
|
||||
/* If we get three valid pen proximity out events, let's
|
||||
* assume this device works fine and disable our plugin
|
||||
*/
|
||||
if (++device->pen_prox_out_events > 2) {
|
||||
plugin_log_debug(
|
||||
libinput_plugin,
|
||||
"%s: forced tool handling unloaded\n",
|
||||
libinput_device_get_name(
|
||||
device->device));
|
||||
libinput_plugin_enable_device_event_frame(
|
||||
libinput_plugin,
|
||||
device->device,
|
||||
false);
|
||||
plugin_device_destroy(device);
|
||||
return;
|
||||
}
|
||||
}
|
||||
return; /* Nothing to do */
|
||||
case EVDEV_BTN_TOOL_RUBBER:
|
||||
|
|
|
|||
|
|
@ -6700,7 +6700,7 @@ libinput_device_config_dwt_set_enabled(struct libinput_device *device,
|
|||
/**
|
||||
* @ingroup config
|
||||
*
|
||||
* Check if the disable-while typing feature is currently enabled on this
|
||||
* Check if the disable-while-typing feature is currently enabled on this
|
||||
* device. If the device does not support disable-while-typing, this
|
||||
* function returns @ref LIBINPUT_CONFIG_DWT_DISABLED.
|
||||
*
|
||||
|
|
@ -6718,7 +6718,7 @@ libinput_device_config_dwt_get_enabled(struct libinput_device *device);
|
|||
/**
|
||||
* @ingroup config
|
||||
*
|
||||
* Check if the disable-while typing feature is enabled on this device by
|
||||
* Check if the disable-while-typing feature is enabled on this device by
|
||||
* default. If the device does not support disable-while-typing, this
|
||||
* function returns @ref LIBINPUT_CONFIG_DWT_DISABLED.
|
||||
*
|
||||
|
|
@ -6796,7 +6796,7 @@ libinput_device_config_dwtp_set_enabled(struct libinput_device *device,
|
|||
/**
|
||||
* @ingroup config
|
||||
*
|
||||
* Check if the disable-while trackpointing feature is currently enabled on
|
||||
* Check if the disable-while-trackpointing feature is currently enabled on
|
||||
* this device. If the device does not support disable-while-trackpointing,
|
||||
* this function returns @ref LIBINPUT_CONFIG_DWTP_DISABLED.
|
||||
*
|
||||
|
|
@ -6816,7 +6816,7 @@ libinput_device_config_dwtp_get_enabled(struct libinput_device *device);
|
|||
/**
|
||||
* @ingroup config
|
||||
*
|
||||
* Check if the disable-while trackpointing feature is enabled on this device
|
||||
* Check if the disable-while-trackpointing feature is enabled on this device
|
||||
* by default. If the device does not support disable-while-trackpointing, this
|
||||
* function returns @ref LIBINPUT_CONFIG_DWTP_DISABLED.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -123,7 +123,8 @@ static void
|
|||
close_pipes(int fds[_FD_LAST])
|
||||
{
|
||||
for (int i = 0; i < _FD_LAST; i++) {
|
||||
fsync(fds[i]);
|
||||
if (fds[i] != -1)
|
||||
fsync(fds[i]);
|
||||
xclose(&fds[i]);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7722,6 +7722,51 @@ START_TEST(tablet_eraser_button_disabled)
|
|||
}
|
||||
END_TEST
|
||||
|
||||
START_TEST(tablet_eraser_button_config_after_device_removal)
|
||||
{
|
||||
_litest_context_destroy_ struct libinput *li = litest_create_context();
|
||||
struct litest_device *tablet = litest_add_device(li, LITEST_ELAN_TABLET);
|
||||
struct axis_replacement axes[] = {
|
||||
{ ABS_DISTANCE, 10 },
|
||||
{ ABS_PRESSURE, 0 },
|
||||
{ -1, -1 },
|
||||
};
|
||||
|
||||
litest_drain_events(li);
|
||||
|
||||
litest_tablet_set_tool_type(tablet, BTN_TOOL_RUBBER);
|
||||
litest_tablet_proximity_in(tablet, 10, 10, axes);
|
||||
|
||||
litest_dispatch(li);
|
||||
auto event = libinput_get_event(li);
|
||||
auto tev = litest_is_tablet_event(event, LIBINPUT_EVENT_TABLET_TOOL_PROXIMITY);
|
||||
auto tool = libinput_event_tablet_tool_get_tool(tev);
|
||||
libinput_tablet_tool_ref(tool);
|
||||
libinput_event_destroy(event);
|
||||
|
||||
litest_device_destroy(tablet);
|
||||
litest_drain_events(li);
|
||||
|
||||
/* Tool isn't associated with a device but config should take effect anyway */
|
||||
auto status = libinput_tablet_tool_config_eraser_button_set_mode(
|
||||
tool,
|
||||
LIBINPUT_CONFIG_ERASER_BUTTON_BUTTON);
|
||||
litest_assert_enum_eq(status, LIBINPUT_CONFIG_STATUS_SUCCESS);
|
||||
status =
|
||||
libinput_tablet_tool_config_eraser_button_set_button(tool, BTN_STYLUS2);
|
||||
litest_assert_enum_eq(status, LIBINPUT_CONFIG_STATUS_SUCCESS);
|
||||
|
||||
litest_assert_enum_eq(libinput_tablet_tool_config_eraser_button_get_mode(tool),
|
||||
LIBINPUT_CONFIG_ERASER_BUTTON_BUTTON);
|
||||
litest_assert_int_eq(libinput_tablet_tool_config_eraser_button_get_button(tool),
|
||||
(unsigned)BTN_STYLUS2);
|
||||
|
||||
litest_drain_events(li);
|
||||
|
||||
libinput_tablet_tool_unref(tool);
|
||||
}
|
||||
END_TEST
|
||||
|
||||
TEST_COLLECTION(tablet)
|
||||
{
|
||||
/* clang-format off */
|
||||
|
|
@ -7886,6 +7931,8 @@ TEST_COLLECTION(tablet_eraser)
|
|||
"with-motion-events", 'b') {
|
||||
litest_add_parametrized(tablet_eraser_button_disabled, LITEST_TABLET, LITEST_TOTEM|LITEST_FORCED_PROXOUT, params);
|
||||
}
|
||||
|
||||
litest_add_no_device(tablet_eraser_button_config_after_device_removal);
|
||||
/* clang-format on */
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3651,7 +3651,7 @@ START_TEST(touchpad_state_after_syn_dropped_2fg_change)
|
|||
}
|
||||
END_TEST
|
||||
|
||||
START_TEST(touchpad_dwt)
|
||||
START_TEST(touchpad_dwt_single_key)
|
||||
{
|
||||
struct litest_device *touchpad = litest_current_device();
|
||||
struct litest_device *keyboard;
|
||||
|
|
@ -3674,7 +3674,7 @@ START_TEST(touchpad_dwt)
|
|||
|
||||
litest_assert_only_typed_events(li, LIBINPUT_EVENT_KEYBOARD_KEY);
|
||||
|
||||
litest_timeout_dwt_short(li);
|
||||
litest_timeout_dwt_long(li);
|
||||
|
||||
/* after timeout - motion events*/
|
||||
litest_touch_down(touchpad, 0, 50, 50);
|
||||
|
|
@ -7160,7 +7160,8 @@ TEST_COLLECTION(touchpad)
|
|||
TEST_COLLECTION(touchpad_dwt)
|
||||
{
|
||||
/* clang-format off */
|
||||
litest_add(touchpad_dwt, LITEST_TOUCHPAD, LITEST_ANY);
|
||||
litest_add(touchpad_dwt_single_key, LITEST_TOUCHPAD, LITEST_ANY);
|
||||
|
||||
litest_add_for_device(touchpad_dwt_ext_and_int_keyboard, LITEST_SYNAPTICS_I2C);
|
||||
litest_add(touchpad_dwt_enable_touch, LITEST_TOUCHPAD, LITEST_ANY);
|
||||
litest_add(touchpad_dwt_touch_hold, LITEST_TOUCHPAD, LITEST_ANY);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue