From 4c6f02143981ce9ee775627c4d00fd92ef22cdf7 Mon Sep 17 00:00:00 2001 From: Fabio Manganiello Date: Tue, 8 Feb 2022 23:55:41 +0100 Subject: [PATCH] Ensure that the touchscreen is also turned on/off together with the screen --- bin/cutiepi-button-handler | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/bin/cutiepi-button-handler b/bin/cutiepi-button-handler index dcaeaa9..f8c1849 100755 --- a/bin/cutiepi-button-handler +++ b/bin/cutiepi-button-handler @@ -9,6 +9,7 @@ from dbus import SessionBus from dbus.mainloop.glib import DBusGMainLoop previous_xrandr = 'xrandr --output DSI-1 --auto' +xinput_regex = re.compile(r'.*Capacitive TouchScreen\s+id=(\d+).*') def get_current_xrandr() -> str: @@ -16,6 +17,15 @@ def get_current_xrandr() -> str: return proc.communicate()[0].decode().strip() +def get_touchscreen_id() -> int: + proc = subprocess.Popen(['xinput'], stdout=subprocess.PIPE) + for line in proc.communicate()[0].decode().split('\n'): + if m := xinput_regex.match(line): + return int(m.group(1)) + + assert 'Touchscreen device not found' + + def is_display_on() -> bool: proc = subprocess.Popen(['xrandr', '-q'], stdout=subprocess.PIPE) out = proc.communicate()[0].decode().strip() @@ -35,11 +45,15 @@ def signal_handler(name, _): return is_on = is_display_on() + touchscreen_id = get_touchscreen_id() + if is_on: previous_xrandr = get_current_xrandr() os.system('xrandr --output DSI-1 --off') + os.system(f'xinput disable {touchscreen_id}') else: os.system(previous_xrandr) + os.system(f'xinput enable {touchscreen_id}') def main():