Na live do @Dio hoje alguém perguntou sobre o funcionamento de joystick xbox no linux, (não lembro o nome da pessoa), estava com dificultade de fazer funcionar os botões. Vou deixar esse tópico aqui, quem sabe ele venha consultar, ou se o @Dio repassar para a pessoa testar.
Aqui tenho um Joystick Xbox Clone e é chato pra funcionar no Linux, mas ai vai uma solução paleativa. Seguindo as dicas desse forum:
instale esse pacote:
sudo apt install -y xboxdrv
instale esse modulo python 3:
pip install pyusb
Agora vai precisar aplicar o script python “fix-controller” toda vez que for usar o joystick
Importante o controle deve estar plugado e ligado antes de executar o scprit “fix-controller”.
O script deve ser executado como sudo.
sudo ./fixcontroller
scprit “fix-controller”:
#!/usr/bin/env python3
import os
import sys
import time
import logging
import logging.handlers
my_logger = logging.getLogger('MyLogger')
my_logger.setLevel(logging.DEBUG)
handler = logging.handlers.SysLogHandler(address = '/dev/log')
handler.setFormatter(logging.Formatter('%(levelname)-8s %(pathname)-12s %(message)s'))
my_logger.addHandler(handler)
handler = logging.StreamHandler(sys.stdout)
my_logger.addHandler(handler)
print = my_logger.debug
try:
import usb.core
import usb.util
except ImportError:
print("First, install the pyusb module with PIP or your package manager.")
else:
if os.geteuid() != 0:
print("You need to run this script with sudo")
sys.exit()
for i in range(4000,0,-1):
if i%1000 ==0:
print("waiting for controller {}".format(i/1000))
dev = usb.core.find(idVendor=0x045e, idProduct=0x028e)
if dev is not None:
break
time.sleep(.001)
else:
my_logger.critical("Failed to detect controller")
sys.exit()
if dev is not None:
dev.ctrl_transfer(0xc1, 0x01, 0x0100, 0x00, 0x14)
print("success")
No meu caso o joystick é USB com cabo, não é Bluetooth como no forum, e mesmo assim funcionou.
Testado no Linux Mint 20.2 Cinnamon