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.
Contents
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.
Abra Lançador de aplicações > Pesquisar > Controle de jogos
ou
Abra Lançador de aplicações > Configurações de sistema > Dispositivos de entrada > Controle de jogos
- Selecione seu controle no menu suspenso "Dispositivos"
- Clique no botão "Calibrar" no canto inferior esquerdo e siga as instruções na tela
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).
joystick fornece jstest, que irá ajudá-lo a monitorar /dev/input/js* (API mais antiga).
evtest fornece o comando evtest, que irá ajudá-lo a detectar os nomes das etiquetas dos dispositivos de controle, capturando seus eventos.
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-xpadConsulte 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.
