blob: 0fca35e7037ac550871d41145bdda78d8173350f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
from evdev import InputDevice, list_devices, ecodes
from urllib.request import urlopen
SCANCODES = {0x11A: "up", 0x148: "down", 0x147: "left", 0x107: "right", 0x106: "ok", 0x141: "play/pause", 0x11c: "power", 0x103: "vol+", 0x142: "vol-"}
device = None
last = 0x00
def homelab_request(request: str):
with urlopen(f"http://192.168.1.96/automate/{request}") as resp:
print(f"homelab request {request} response {resp.status}")
def do_action(action: str):
if action == "ok":
homelab_request("hack_this_club") # /j
for path in list_devices():
candidate = InputDevice(path)
if candidate.name == "meson-ir":
device = candidate
break
if device is None:
raise RuntimeError("meson-ir input device not found")
print(f"Listening on {device.path}: {device.name}")
try:
for event in device.read_loop():
if event.type == ecodes.EV_MSC and event.code == ecodes.MSC_SCAN:
if (event.value != last):
print(f"scancode {event.value:#x}")
last = event.value
action = SCANCODES.get(event.value)
if action:
print(f"got action {action}")
do_action(action)
else:
print(f"repeat scancode {event.value:#x}")
last = 0x00
except KeyboardInterrupt:
print("\nExiting...")
finally:
device.close()
|