Files
wallpaper-engine-caelestia/pyprojs/xbox_py_screen.py
2026-03-30 14:53:09 -06:00

348 lines
12 KiB
Python
Executable File

import pygame
import os
import pyautogui
import time
import subprocess
import math
import time
class Timer:
def __init__(self):
self.last_time = time.time()
def elapsed_time(self):
current_time = time.time()
elapsed = current_time - self.last_time
self.last_time = current_time
return elapsed
# Inicializa pygame
#variable que indica si ya se conecto el mando y ya se cambio de pantalla
pantalla_pp = False
pygame.init()
pygame.joystick.init()
hay_mando = False
# Inicializa el mando de Xbox
# Define los códigos de los botones que deseas detectar
BOTON_A = 0
BOTON_B = 1
BOTON_X = 3
BOTON_Y = 4
BOTON_START = 11
BOTON_SELECT = 10
BOTON_L1 = 6
BOTON_R1 = 7
BOTON_L3 = 13
BOTON_R3 = 14
HOME = 12
flag_display = True
#CEMU PATHS
path_8bitdo_CEMU = "/home/arthur/.var/app/info.cemu.Cemu/config/Cemu/controllerProfiles/8bit.xml"
path_Sunshine_CEMU = "/home/arthur/.var/app/info.cemu.Cemu/config/Cemu/controllerProfiles/sunshine.xml"
path_switch_CEMU = "/home/arthur/.var/app/info.cemu.Cemu/config/Cemu/controllerProfiles/switch.xml"
path_xbox_CEMU = "/home/arthur/.var/app/info.cemu.Cemu/config/Cemu/controllerProfiles/xbox.xml"
path_ps4_CEMU = "/home/arthur/.var/app/info.cemu.Cemu/config/Cemu/controllerProfiles/ps4.xml"
path_controller0 = "/home/arthur/.var/app/info.cemu.Cemu/config/Cemu/controllerProfiles/controller0.xml"
path_controller1 = "/home/arthur/.var/app/info.cemu.Cemu/config/Cemu/controllerProfiles/controller1.xml"
path_controller2 = "/home/arthur/.var/app/info.cemu.Cemu/config/Cemu/controllerProfiles/controller2.xml"
path_controller3 = "/home/arthur/.var/app/info.cemu.Cemu/config/Cemu/controllerProfiles/controller3.xml"
#RIUJINX PATHS
path_xbox_RYUJINX = "/home/arthur/.var/app/io.github.ryubing.Ryujinx/config/Ryujinx/xbox.json"
path_8bitdo_RYUJINX = "/home/arthur/.var/app/io.github.ryubing.Ryujinx/config/Ryujinx/8bit.json"
path_sunshine_RYUJINX = "/home/arthur/.var/app/io.github.ryubing.Ryujinx/config/Ryujinx/sunshine.json"
path_ps4_RYUJINX = "/home/arthur/.var/app/io.github.ryubing.Ryujinx/config/Ryujinx/ps4.json"
path_switch_RYUJINX = "/home/arthur/.var/app/io.github.ryubing.Ryujinx/config/Ryujinx/switch.json"
path_config_RYUJINX = "/home/arthur/.var/app/io.github.ryubing.Ryujinx/config/Ryujinx/Config.json"
# Función para cambiar al modo de pantalla principal
def salida():
return
def cambiar_ventana():
pyautogui.hotkey("alt", "tab")
def cambiar_ventana2():
pyautogui.keyDown("alt")
pyautogui.hotkey("tab", "tab","Enter")
pyautogui.keyUp("alt")
def ctrl_alt_sprm():
pyautogui.hotkey("ctrl","alt","del")
def f11():
pyautogui.hotkey("F11")
def WinLeft():
pyautogui.hotkey("win","shift","left")
def WinRight():
pyautogui.hotkey("win","shift","right")
def Up():
pyautogui.hotkey("up", "up")
def Down():
pyautogui.hotkey("down","down")
def Enter():
pyautogui.hotkey("enter")
def TAB():
pyautogui.hotkey("tab")
def Space():
pyautogui.hotkey("space")
def Kill():
pyautogui.hotkey("alt","F4")
def Esc():
#pyautogui.hotkey("win","shift","1")
subprocess.run(["xdotool", "key", "Super_L+Shift+1"])
def Insert():
pyautogui.hotkey("insert")
def NextDevice():
pyautogui.hotkey('ctrl','o')
def PrevDevice():
pyautogui.hotkey('ctrl','p')
def Click():
pyautogui.click()
def Minimize():
pyautogui.hotkey("win","m")
def SwitchScreens1():
print("switchScreen1")
#TurnScreen('Disable',1)
#T#urnScreen('Disable',2)
#TurnScreen('Enable',3)
def SwitchScreens2():
print("switchScreen2")
#TurnScreen('Enable',1)
#TurnScreen('Enable',2)
#TurnScreen('Disable',3)
def TurnScreen(mode,display):
print("TurnScreen")
#os.system(f'powershell {mode}-Display {display}')
def main():
timer = Timer()
# Función para detectar la conexión del mando de Xbox
while not hay_mando:
pygame.event.get()
pygame.time.delay(935)
num_joysticks = pygame.joystick.get_count()
num_joysticks_b = num_joysticks
if num_joysticks >= 1:
name_control = "-"
print(name_control)
try:
joystick = pygame.joystick.Joystick(0)
joystick.init()
name_control = joystick.get_name()
print("Mando detectado:", name_control)
except pygame.error as e:
print("Error al inicializar el joystick:", e)
joystick = None
indexi = name_control.find("8BitDo")
if indexi != -1:
print("FLUJO 8BITDO ***")
subprocess.run(["hyprctl", "dispatch", "dpms", "on", "HDMI-A-1"])
subprocess.run(["hyprctl", "dispatch", "dpms", "on", "DP-2"])
subprocess.run(["hyprctl", "dispatch", "dpms", "on", "DP-3"])
subprocess.run(["cp", path_8bitdo_CEMU, path_controller0])
subprocess.run(["cp", path_xbox_CEMU, path_controller1])
subprocess.run(["cp", path_ps4_CEMU, path_controller2])
subprocess.run(["cp", path_8bitdo_RYUJINX, path_config_RYUJINX])
# Define los códigos de los botones que deseas detectar
BOTON_A = 0
BOTON_B = 1
BOTON_X = 2
BOTON_Y = 3
BOTON_START = 7
BOTON_SELECT = 6
BOTON_L1 = 4
BOTON_R1 = 5
BOTON_L3 = 9
BOTON_R3 = 10
HOME = 8
indexi = name_control.find("One")
if indexi != -1:
print("FLUJO SUNSHINE ***")
subprocess.run(["hyprctl", "dispatch", "dpms", "on", "HDMI-A-1"])
subprocess.run(["hyprctl", "dispatch", "dpms", "off", "DP-2"])
subprocess.run(["hyprctl", "dispatch", "dpms", "off", "DP-3"])
subprocess.run(["cp", path_Sunshine_CEMU, path_controller0])
subprocess.run(["cp", path_sunshine_RYUJINX, path_config_RYUJINX])
# Define los códigos de los botones que deseas detectar
BOTON_A = 0
BOTON_B = 1
BOTON_X = 2
BOTON_Y = 3
BOTON_START = 7
BOTON_SELECT = 6
BOTON_L1 = 4
BOTON_R1 = 5
BOTON_L3 = 9
BOTON_R3 = 10
HOME = 8
indexi = name_control.find("Nintendo")
if indexi != -1:
print("FLUJO SUNSHINE N.SWITCH ***")
subprocess.run(["hyprctl", "dispatch", "dpms", "on", "HDMI-A-1"])
subprocess.run(["hyprctl", "dispatch", "dpms", "off", "DP-2"])
subprocess.run(["hyprctl", "dispatch", "dpms", "off", "DP-3"])
subprocess.run(["cp", path_switch_CEMU, path_controller0])
subprocess.run(["cp", path_switch_RYUJINX, path_config_RYUJINX])
# Define los códigos de los botones que deseas detectar
BOTON_A = 0
BOTON_B = 1
BOTON_X = 2
BOTON_Y = 3
BOTON_START = 10
BOTON_SELECT = 9
BOTON_L1 = 5
BOTON_R1 = 6
BOTON_L3 = 12
BOTON_R3 = 13
HOME = 11
indexi = name_control.find("Series")
if indexi != -1:
print("FLUJO XBOX ***" )
print(name_control)
subprocess.run(["hyprctl", "dispatch", "dpms", "on", "HDMI-A-1"])
subprocess.run(["hyprctl", "dispatch", "dpms", "off", "DP-2"])
subprocess.run(["hyprctl", "dispatch", "dpms", "off", "DP-3"])
subprocess.run(["cp", path_8bitdo_CEMU, path_controller1])
subprocess.run(["cp", path_xbox_CEMU, path_controller0])
subprocess.run(["cp", path_ps4_CEMU, path_controller2])
subprocess.run(["cp", path_xbox_RYUJINX, path_config_RYUJINX])
BOTON_A = 0
BOTON_B = 1
BOTON_X = 3
BOTON_Y = 4
BOTON_START = 11
BOTON_SELECT = 10
BOTON_L1 = 6
BOTON_R1 = 7
BOTON_L3 = 13
BOTON_R3 = 14
HOME = 12
indexi = name_control.find("PS4")
if indexi != -1:
print("FLUJO PS4 ***" )
print(name_control)
subprocess.run(["hyprctl", "dispatch", "dpms", "on", "HDMI-A-1"])
subprocess.run(["hyprctl", "dispatch", "dpms", "off", "DP-2"])
subprocess.run(["hyprctl", "dispatch", "dpms", "off", "DP-3"])
subprocess.run(["cp", path_8bitdo_CEMU, path_controller2])
subprocess.run(["cp", path_xbox_CEMU, path_controller1])
subprocess.run(["cp", path_ps4_CEMU, path_controller0])
subprocess.run(["cp", path_ps4_RYUJINX, path_config_RYUJINX])
BOTON_A = 0
BOTON_B = 1
BOTON_X = 2
BOTON_Y = 3
BOTON_START = 6
BOTON_SELECT = 4
BOTON_L1 = 9
BOTON_R1 = 10
BOTON_L3 = 7
BOTON_R3 = 8
HOME = 5
sensitivity = 10
elapsed_time = 0.0
elapsed_time_past = 0.0
while True:
#for event in pygame.event.get():
event = pygame.event.wait()
############ START BOTON ################
#PREVIOS VOLUME DEVICE
if (joystick.get_button(BOTON_START) and
joystick.get_button(BOTON_A)):
subprocess.run(["hyprctl", "dispatch", "movetoworkspace", "8"])
if (joystick.get_button(BOTON_START) and
joystick.get_button(BOTON_L1)):
subprocess.run(["killall", "pcsx2-qt"])
subprocess.run(["hyprctl", "dispatch", "killactive"])
if (joystick.get_button(BOTON_START) and
joystick.get_button(BOTON_R1)):
subprocess.run(["hyprctl", "dispatch", "togglefloating"])
if (joystick.get_button(BOTON_START) and
joystick.get_button(BOTON_X)):
subprocess.run(["hyprctl", "dispatch", "workspace", "8"])
if (joystick.get_button(BOTON_START) and
joystick.get_button(BOTON_B)):
subprocess.run(["sh", "/home/arthur/scripts/pulseaudio.sh"])
############ SELECT BOTON ################
if (joystick.get_button(BOTON_SELECT) and
joystick.get_button(BOTON_L1)):
subprocess.run(["hyprctl", "dispatch","fullscreen"])
if (joystick.get_button(BOTON_SELECT) and
joystick.get_button(BOTON_Y)):
subprocess.run(["wofi", "--show","drun"])
if (joystick.get_button(BOTON_SELECT) and
joystick.get_button(BOTON_X)):
subprocess.run(["hyprctl","dispatch","exec", "firefox","default-release", "http://192.168.1.131:3000", "&"])
num_joysticks = pygame.joystick.get_count()
if num_joysticks <=0:
print("discornected")
break
def is_joystick_disconnected(joystick):
# Verificar si el joystick está inicializado
return not joystick.get_init()
if __name__ == "__main__":
main()