An open API service indexing awesome lists of open source software.

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

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"
```