first commit
This commit is contained in:
75
pyprojs/xbox_control.py
Executable file
75
pyprojs/xbox_control.py
Executable file
@@ -0,0 +1,75 @@
|
||||
import pyudev
|
||||
import subprocess
|
||||
|
||||
def procesar_dispositivo_conectado(device, inicial=False):
|
||||
vendor_id = device.get('ID_VENDOR_ID', '')
|
||||
model_id = device.get('ID_MODEL_ID', '')
|
||||
name = device.get('NAME', '')
|
||||
device_str = f"{vendor_id}:{model_id} - {name}"
|
||||
|
||||
|
||||
if "Xbox" in name:
|
||||
print(f"{'🔍' if inicial else '🎮'} Xbox detectado: {device_str}")
|
||||
if not inicial:
|
||||
subprocess.run(["hyprctl", "dispatch", "dpms", "off", "HDMI-A-1"])
|
||||
subprocess.run(["hyprctl", "dispatch", "dpms", "on", "DP-1"])
|
||||
subprocess.run(["hyprctl", "dispatch", "dpms", "on", "DP-2"])
|
||||
|
||||
elif vendor_id.lower() == '2dc8':
|
||||
print(f"{'🔍' if inicial else '🎮'} 8BitDo detectado: {device_str}")
|
||||
if not inicial:
|
||||
subprocess.run(["hyprctl", "dispatch", "dpms", "on", "HDMI-A-1"])
|
||||
subprocess.run(["hyprctl", "dispatch", "dpms", "off", "DP-1"])
|
||||
subprocess.run(["hyprctl", "dispatch", "dpms", "off", "DP-2"])
|
||||
if not vendor_id:
|
||||
return # Ignorar dispositivos sin vendor_id
|
||||
|
||||
def evento_callback(device):
|
||||
if device.subsystem != 'input':
|
||||
return
|
||||
if device.action == 'add':
|
||||
procesar_dispositivo_conectado(device)
|
||||
elif device.action == 'remove':
|
||||
print(f"❌ Dispositivo desconectado: {device.device_path}")
|
||||
|
||||
# --------------------------
|
||||
# 🔍 Detectar dispositivos ya conectados
|
||||
# --------------------------
|
||||
context = pyudev.Context()
|
||||
print(context.list_devices)
|
||||
print("🔍 Buscando controles ya conectados...")
|
||||
|
||||
subprocess.run(["hyprctl", "dispatch", "dpms", "off", "HDMI-A-1"])
|
||||
subprocess.run(["hyprctl", "dispatch", "dpms", "on", "DP-1"])
|
||||
subprocess.run(["hyprctl", "dispatch", "dpms", "on", "DP-2"])
|
||||
for device in context.list_devices(subsystem='input'):
|
||||
|
||||
vendor_id = device.get('ID_VENDOR_ID', '')
|
||||
model_id = device.get('ID_MODEL_ID', '')
|
||||
name = device.get('NAME', '')
|
||||
device_str = f"{vendor_id}:{model_id} - {name}"
|
||||
print(device_str)
|
||||
if "8Bit" in name:
|
||||
print("LOGRE DETECTAR EL CONTROL DE 8BIT")
|
||||
positivo_conectado(device, inicial = False)
|
||||
|
||||
|
||||
if "Xbox" in name:
|
||||
print("LOGRE DETECTAR EL CONTROL DE XBOX")
|
||||
procesar_dispositivo_conectado(device, inicial=True)
|
||||
|
||||
|
||||
|
||||
|
||||
# --------------------------
|
||||
# 👂 Escuchar nuevos eventos
|
||||
# --------------------------
|
||||
monitor = pyudev.Monitor.from_netlink(context)
|
||||
monitor.filter_by(subsystem='input')
|
||||
observer = pyudev.MonitorObserver(monitor, callback=evento_callback)
|
||||
observer.start()
|
||||
|
||||
print("👀 Escuchando eventos de controles...")
|
||||
import signal
|
||||
signal.pause()
|
||||
|
||||
Reference in New Issue
Block a user