https://github.com/alesya-h/linux_detect_tablet_mode
Detect if your laptop is in normal or tablet mode. Useful for Yoga laptops to disable keyboard/trackpoint/touchpad in a tablet mode
https://github.com/alesya-h/linux_detect_tablet_mode
2in1 laptop libinput linux tablet
Last synced: about 2 months ago
JSON representation
Detect if your laptop is in normal or tablet mode. Useful for Yoga laptops to disable keyboard/trackpoint/touchpad in a tablet mode
- Host: GitHub
- URL: https://github.com/alesya-h/linux_detect_tablet_mode
- Owner: alesya-h
- License: mit
- Created: 2017-11-01T01:06:34.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2024-12-03T02:44:44.000Z (over 1 year ago)
- Last Synced: 2024-12-03T03:32:10.884Z (over 1 year ago)
- Topics: 2in1, laptop, libinput, linux, tablet
- Language: Ruby
- Homepage:
- Size: 39.1 KB
- Stars: 138
- Watchers: 8
- Forks: 29
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Tablet mode detection and setup scripts for linux
## What it does
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.
## Supported devices
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:
- ThinkPad X1 Yoga Gen2 (it was developed for it)
- Thinkpad X1 Yoga Gen3
- Thinkpad X1 Yoga Gen4
- Thinkpad X1 Yoga Gen6
- Thinkpad Yoga 11e Gen6
- Thinkpad X370 Yoga
- Lenovo IdeaPad Flex 5i Gen 7
- Samsung Galaxy Book Flex2 5G
- Dell XPS 13 9310 2-in-1
- ASUS ZenBook 15 Flip OLED UP6502ZD
- ASUS TP200SA
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.
## Installation
1. Add your user to the `input` group (`sudo gpasswd --add username input`) and relogin to apply group membership.
2. Install ruby and stdbuf (most likely you already have them preinstalled)
3. Clone this repo somewhere, and optionally symlink `watch_tablet` into any directory in your $PATH
4. Copy a config file into `~/.config/watch_tablet.yml`
5. Adjust the config (see below)
6. Test it by running `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.
7. After you confirmed that everything works, add `watch_tablet &` to your `~/.xinitrc`
8. Restart your desktop session and enjoy
### Arch Linux
If you have an Arch-based distribution, you can install it using [this AUR package](https://aur.archlinux.org/packages/detect-tablet-mode-git/)
## Configuration
`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:
```yaml
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"
```