It uses libinput debug-events
to detect switches to normal and tablet mode,
and executes commands for switching into that mode, which are specified in
a config file. Generally you would put there commands to disable/enable a
keyboard/touchpad/trackpoint, show/hide an on-screen keyboard, toggle some desktop
environment panels, and the like.
All devices that have a tablet mode switch supported by libinput. As far as I understand this is a standard mechanism for this functionality nowadays. Tested devices:
If it works on your device, please tell me and I'll add it to the list (or just submit a pull request yourself).
To check if your device is supported, run stdbuf -oL libinput debug-events|grep switch
, flip your laptop between
normal and tablet mode, and see if it printed anything. If you don't see any switch events, your device will
not work with these scripts.
input
group (sudo gpasswd --add username input
) and relogin to apply group membership.watch_tablet
into any directory in your $PATH~/.config/watch_tablet.yml
watch_tablet
in a terminal and flipping your laptop to tablet and back. You should see commands from the config being executed. Press Ctrl+C to terminate it.watch_tablet &
to your ~/.xinitrc
If you have an Arch-based distribution, you can install it using this AUR package
input_device
is a path to the device that provides the tablet mode switch. To find it you
may run stdbuf -oL libinput debug-events|grep switch
and notice something like event4
in
the leftmost column. That would correspond to /dev/input/event4. Device numbers may be unstable
across reboots, so you may consider doing ls -lh /dev/input/by-path
and finding a symlink to
that device. For X1 Yoga Gen2 it's /dev/input/by-path/platform-thinkpad_acpi-event
.
modes.laptop
, modes.tablet
- this contain commands that will be executed when mode changes.
Most likely this will contain xinput enable
and xinput disable
commands to enable/disable
kb/touchpad/trackpoint (just run xinput
to look them up). You may use any other commands
to adjust your desktop environment (e.g. hide or show additional panels, increase button size,
hide/show onscreen keyboard etc.)
Example:
input_device: /dev/input/by-path/platform-thinkpad_acpi-event
modes:
laptop:
# - xinput enable "Wacom Pen and multitouch sensor Finger"
- xinput enable "AT Translated Set 2 keyboard"
- xinput enable "SynPS/2 Synaptics TouchPad"
- xinput enable "TPPS/2 IBM TrackPoint"
tablet:
# - xinput disable "Wacom Pen and multitouch sensor Finger"
- xinput disable "AT Translated Set 2 keyboard"
- xinput disable "SynPS/2 Synaptics TouchPad"
- xinput disable "TPPS/2 IBM TrackPoint"