285 lines
9.1 KiB
Plaintext
Executable File
285 lines
9.1 KiB
Plaintext
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_xbox_CEMU = "/home/arthur/.var/app/info.cemu.Cemu/config/Cemu/controllerProfiles/xbox.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"
|
|
|
|
|
|
#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_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(535)
|
|
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_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
|
|
else:
|
|
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
|
|
|
|
else:
|
|
print("FLUJO XBOX ELSE ***" )
|
|
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_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
|
|
|
|
|
|
|
|
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(["hyprctl", "dispatch", "killactive"])
|
|
subprocess.run(["killall", "Ryujinx"])
|
|
subprocess.run(["killall", "pcsx2-qt"])
|
|
|
|
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"])
|
|
|
|
|
|
|
|
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()
|