Controles (joystick)

Esse artigo fala sobre a instalação de controles, ou joysticks. A instalação tem dois estágios, a instalação de driver e a configuração do dispositivo. Muitos dispositivos têm suporte integrado ao núcleo e funcionarão assim que estiverem conectados. Outros podem ser mais difíceis.

Configuração genérica

Dado que a maioria dos dispositivos tem seus drivers necessários embutidos, a única coisa que a maioria das pessoas precisa fazer é calibrar seu controlador. Muitos ambientes de área de trabalho têm módulos de configuração integrados para selecionar qualquer controle conectado e para calibrá-los.

KDE

O processo na área de trabalho KDE Plasma é documentado aqui, mas as instruções são quase universalmente aplicáveis.

ou

Gamepad/KDE_Gamepad_Configuration.png

Teste

Existem muitos jogos úteis nos repositórios Debian para verificar se o seu controle funciona como esperado, mas o supertuxkart é especialmente recomendado devido ao seu fantástico suporte a controles.

Dentro de um terminal, você também pode monitorar eventos de dispositivo de entrada, seja com a API joystick (mais antigo) ou a API evdev (mais recente).

Dispositivos específicos

Controles Xbox e PlayStation

Controles Xbox, Xbox 360 e Xbox One, incluindo muitos derivados, devem funcionar sem necessidade de configurações. Isso inclui ambos os controles com e sem fios, usando receptores sem fio oficiais ou através de Bluetooth. Isso também se aplica para controles DualShock 3 e DualShock 4, comumente usados pelos consoles PlayStation.

Em dezembro de 2020, a Sony publicou um driver oficial para Linux para o controlade "DualSense" que vem com o PlayStation 5. Deve trazer suporte análogo aos controles anteriores da Sony, mas o código permanece sob revisão.

Controle Steam

O suporte para o controlador Steam é fornecido através do pacote steam-devices. Por padrão, funciona no modo "área de trabalho", emulando a entrada do mouse. O controle atuará como um controle propriamente apenas para os jogos lançados através do Steam.

Há um projeto que desenvolve um driver de modo de usuário(a) para o controle Steam que permite emular um controlade Xbox em qualquer jogo sem necessidade do cliente Steam proprietário. No entanto, não é oficialmente suportado no Debian, e exigirá configuração extra de por sua própria conta: https://github.com/kozec/sc-controller

Controle Nintendo Switch Pro

Embora o suporte ainda não esteja integrado ao Debian, Steam implementa seu próprio driver, com regras udev disponíveis no não livre steam-devices . Patches de núcleo para um driver genérico da Nintendo está definido para ser incluído no Linux 5.16, e o driver provavelmente ficará disponível no Debian 12/Bookworm.

Solução de problemas

Controles Xbox via Bluetooth

Se você tiver problemas com a conexão de um controle Xbox One ou Xbox Series via Bluetooth, algumas manipulações podem ser necessárias.

ERTM e Bluez versão < 5.12

De acordo com este comentário, não é mais necessário desabilitar o ERTM desde a versão 5.12 do bluez.

Mas pode ser preciso desabilitar o ERTM. Isto pode ser feito uma única vez, executando:

# echo 1 > /sys/module/bluetooth/parameters/disable_ertm

Se isso corrigi-lo, você pode definir permanentemente para que não seja revertido na reinicialização. Para isso, crie um novo arquivo usando Nano (ou seu editor preferido):

# nano /etc/modprobe.d/bluetooth.conf

E adicione uma única linha para o novo arquivo:

options bluetooth disable_ertm=Y

Note que o ERTM é raramente usado por qualquer dispositivo que não seja um controle, e não deve interferir com qualquer outra funcionalidade Bluetooth ao ser desabilitado. Mas, se ocorrerem problemas com outros dispositivos Bluetooth após fazer esta mudança, pode ser útil revertê-la.

Conecte/Desconecte loops

O dispositivo pode ligar e desligar instantaneamente.

Algumas pessoas tiveram sucesso emparelhando o dispositivo com essas configurações do bluez, sob a seção [General]:

Privacy = device
JustWorksRepairing = always
Class = 0x000100
FastConnectable = true

Falhas em eventos de botões com Bluetooth LE

De acordo com o autor do xpadneo, isso afeta os controles Xbox Series S|X e é causado porque o joystick não anuncia sua frequência de trabalho ao usar o Bluetooth.

Definir esta frequência manualmente em /etc/bluetooth/main.conf afetará todos os dispositivos LE, evite se puder:

[LE]
MinConnectionInterval=7
MaxConnectionInterval=9
ConnectionLatency=0

Controles pouco comuns e motores de jogos específicos

Pode acontecer que seu gamepad funcione bem com a maioria dos jogos nativos do linux, mas pode não funcionar com alguns outros. Este problema acontece principalmente com motores de jogo proprietários (como Unity3D usando a API Rewired).

Alguns jogos podem verificar se seu joystick está entre os mais comuns, a fim de mapear automaticamente os botões com ações, mas pode não permitir que você reconfigure o mapeamento ou que haja bugs com controles menos comuns (ou seja, congelamento durante a verificação do controle, ao passo que funcionam normalmente quando os controles são desconectados).

xboxdrv é um driver de joystick de espaço de usuário(a) que pode emular um controle Xbox a partir de qualquer joystick (desde que tenha botões suficientes para suas necessidades).

Aqui está um exemplo que mapeia um controle Logitech Rumblepad 2 para parecer com um controle Xbox:

xboxdrv --evdev /dev/input/by-id/usb-Logitech_Logitech_RumblePad_2_USB-event-joystick \
        --evdev-absmap ABS_X=x1,ABS_Y=y1,ABS_HAT0X=dpad_x,ABS_HAT0Y=dpad_y,ABS_Z=y2,ABS_RZ=x2 \
        --evdev-keymap BTN_THUMB=a,BTN_THUMB2=b,BTN_TRIGGER=y,BTN_TOP=x,BTN_TOP2=lb,BTN_PINKIE=rb,BTN_BASE=lt,BTN_BASE2=rt,BTN_BASE3=Back,BTN_BASE4=Start \
        --axismap -Y1=Y1,-Y2=Y2 \
        --mimic-xpad

Consulte xboxdrv --help ou a manpage, e mais especificamente xboxdrv --help-* (ou xboxdrv --help-all) para listas de possíveis mapeamentos.

Mapeando joysticks para teclas do teclado

antimicrox é outra abordagem que ajuda você a traduzir eventos de joysticks para teclas de teclado, o que pode ser útil quando seu jogo não suporta seu controle, mas suporta teclado.


CategoryHardware | CategoryGame | CategoryGamepad