Add Caps+1 TV power-off shortcut
This commit is contained in:
@@ -1021,6 +1021,7 @@
|
||||
l = "right";
|
||||
space = "capslock";
|
||||
grave = "f14";
|
||||
"1" = "f15";
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -1042,6 +1043,7 @@
|
||||
l = "right";
|
||||
space = "capslock";
|
||||
grave = "f14";
|
||||
"1" = "f15";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
+14
-8
@@ -1,17 +1,19 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
TV Power Toggle - Key Listener
|
||||
Listens for F14 on the keyd virtual keyboard and toggles TV power.
|
||||
F14 is triggered by Caps+grave (mapped in keyd nav layer).
|
||||
TV Power Key Listener
|
||||
Listens for F14/F15 on the keyd virtual keyboard.
|
||||
F14 is triggered by Caps+grave (power toggle).
|
||||
F15 is triggered by Caps+1 (power off).
|
||||
"""
|
||||
|
||||
import evdev
|
||||
import subprocess
|
||||
import time
|
||||
import os
|
||||
|
||||
KEYBOARD_PATH = "/dev/input/event19"
|
||||
SCRIPT_PATH = "/opt/roku-remote/toggle-power.sh"
|
||||
KEY_ACTIONS = {
|
||||
"KEY_F14": "/opt/roku-remote/toggle-power.sh",
|
||||
"KEY_F15": "/opt/roku-remote/power-off.sh",
|
||||
}
|
||||
|
||||
def find_keyd_keyboard():
|
||||
"""Find the keyd virtual keyboard device."""
|
||||
@@ -37,8 +39,12 @@ def main():
|
||||
for event in device.read_loop():
|
||||
if event.type == evdev.ecodes.EV_KEY:
|
||||
key_event = evdev.categorize(event)
|
||||
if key_event.keycode == "KEY_F14" and key_event.keystate == 1:
|
||||
subprocess.run([SCRIPT_PATH])
|
||||
if key_event.keystate != 1:
|
||||
continue
|
||||
|
||||
script_path = KEY_ACTIONS.get(key_event.keycode)
|
||||
if script_path:
|
||||
subprocess.run([script_path], check=False)
|
||||
except OSError as e:
|
||||
print(f"Device error: {e}, retrying...", flush=True)
|
||||
time.sleep(1)
|
||||
|
||||
Reference in New Issue
Block a user