diff --git a/src/evdev-fallback.c b/src/evdev-fallback.c index 32184f8a..196383d0 100644 --- a/src/evdev-fallback.c +++ b/src/evdev-fallback.c @@ -1174,6 +1174,9 @@ fallback_keyboard_pair_tablet_mode(struct evdev_device *keyboard, (EVDEV_TAG_TRACKPOINT|EVDEV_TAG_INTERNAL_KEYBOARD)) == 0) return; + if (keyboard->model_flags & EVDEV_MODEL_TABLET_MODE_NO_SUSPEND) + return; + if ((tablet_mode_switch->tags & EVDEV_TAG_TABLET_MODE_SWITCH) == 0) return; diff --git a/src/evdev.c b/src/evdev.c index 309ec7d2..2a4682c7 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -1284,6 +1284,7 @@ evdev_read_model_flags(struct evdev_device *device) MODEL(TABLET_NO_PROXIMITY_OUT), MODEL(MS_NANO_TRANSCEIVER), MODEL(TABLET_NO_TILT), + MODEL(TABLET_MODE_NO_SUSPEND), #undef MODEL { "ID_INPUT_TRACKBALL", EVDEV_MODEL_TRACKBALL }, { NULL, EVDEV_MODEL_DEFAULT }, diff --git a/src/evdev.h b/src/evdev.h index 18d33d45..5495e94d 100644 --- a/src/evdev.h +++ b/src/evdev.h @@ -128,6 +128,7 @@ enum evdev_device_model { EVDEV_MODEL_TABLET_NO_PROXIMITY_OUT = (1 << 27), EVDEV_MODEL_MS_NANO_TRANSCEIVER = (1 << 28), EVDEV_MODEL_TABLET_NO_TILT = (1 << 29), + EVDEV_MODEL_TABLET_MODE_NO_SUSPEND = (1 << 30), }; enum evdev_button_scroll_state { diff --git a/udev/90-libinput-model-quirks.hwdb b/udev/90-libinput-model-quirks.hwdb index 7fbccf13..602a9ff3 100644 --- a/udev/90-libinput-model-quirks.hwdb +++ b/udev/90-libinput-model-quirks.hwdb @@ -238,6 +238,11 @@ libinput:keyboard:input:b0003v17EFp6047* libinput:name:*ALPS TrackPoint*:svnLENOVO:*:pvrThinkPadX280:* LIBINPUT_ATTR_TRACKPOINT_RANGE=70 +# Lenovo Thinkpad X1 Yoga disables the keyboard anyway but has the same device +# use a windows key on the screen and volume rocker on the side (#103749) +libinput:name:AT Translated Set 2 keyboard:dmi:*svnLENOVO:*pvrThinkPadX1Yoga1st:* + LIBINPUT_MODEL_TABLET_MODE_NO_SUSPEND=1 + ########################################## # Logitech ##########################################