Added touchpad option.

This commit is contained in:
Richard Neumann 2019-03-23 15:22:09 +01:00
parent 5842c737cb
commit 4fcfc4c57f
2 changed files with 27 additions and 5 deletions

View file

@ -6,10 +6,11 @@ Allow users to toggle a convertible laptop between laptop and tablet mode.
The keyboard device to be deactivated in tablet mode must be specified in `/etc/tablet-mode.conf`: The keyboard device to be deactivated in tablet mode must be specified in `/etc/tablet-mode.conf`:
[Device] [Devices]
keyboard = /dev/input/by-path/platform-i8042-serio-0-event-kbd keyboard = /dev/input/by-path/platform-i8042-serio-0-event-kbd
touchpad = /dev/input/by-path/platform-i8042-serio-1-event-mouse
## Usage ## Usage
You must be a member of the group `tablet` to toggle between tablet and laptop mode. You must be a member of the group `tablet` to toggle between tablet and laptop mode.
You can toggle between tablet and laptop mode by running `toggle-tablet-mode` or use the desktop icon provided with this package. You can toggle between tablet and laptop mode by running `toggle-tablet-mode` or use the desktop icon provided with this package.

View file

@ -2,7 +2,9 @@
"""Grabs the respective device to discard any input from it.""" """Grabs the respective device to discard any input from it."""
from configparser import ConfigParser from configparser import ConfigParser
from contextlib import suppress
from subprocess import run from subprocess import run
from threading import Thread
CONFIG_FILE = '/etc/tablet-mode.conf' CONFIG_FILE = '/etc/tablet-mode.conf'
@ -15,13 +17,32 @@ def grab_device(device):
return run((EVTEST, '--grab', device)) return run((EVTEST, '--grab', device))
def get_device(): def get_devices():
"""Reads the device from the config file.""" """Reads the device from the config file."""
parser = ConfigParser() parser = ConfigParser()
parser.read(CONFIG_FILE) parser.read(CONFIG_FILE)
return parser['Device']['keyboard']
with suppress(KeyError):
yield parser['Devices']['keyboard']
with suppress(KeyError):
yield parser['Devices']['touchpad']
def disable_devices(devices):
"""Disables the given devices."""
threads = []
for device in devices:
thread = Thread(target=grab_device, args=[device])
threads.append(thread)
thread.start()
for thread in threads:
thread.join()
if __name__ == '__main__': if __name__ == '__main__':
grab_device(get_device()) disable_devices(get_devices())