34 lines
969 B
Python
34 lines
969 B
Python
import evdev
|
|
from evdev import InputDevice, categorize, ecodes, list_devices
|
|
|
|
print("Listing all input devices...\n")
|
|
|
|
devices = [InputDevice(path) for path in list_devices()]
|
|
|
|
if not devices:
|
|
print("❌ No input devices found!")
|
|
exit(1)
|
|
|
|
for device in devices:
|
|
print(f"🔌 Found device: {device.name} at {device.path}")
|
|
|
|
print("\nListening to all devices... Press Ctrl+C to stop.\n")
|
|
|
|
# Create a dictionary of InputDevice objects
|
|
device_map = {dev.fd: dev for dev in devices}
|
|
|
|
# Use a selector to monitor all devices
|
|
from select import select
|
|
|
|
try:
|
|
while True:
|
|
r, _, _ = select(device_map, [], [])
|
|
for fd in r:
|
|
device = device_map[fd]
|
|
for event in device.read():
|
|
if event.type == ecodes.EV_KEY:
|
|
key_event = categorize(event)
|
|
print(f"[{device.name}] {key_event.keycode} - value: {event.value}")
|
|
except KeyboardInterrupt:
|
|
print("\nStopped monitoring.")
|