Remapeando um eixo em um gamepad para um botão no Ubuntu

1

Estou tentando usar um Xbox 360 MadCatz FightPad no Ubuntu 13.04. O principal problema é que dois dos botões, correspondentes aos gatilhos esquerdo e direito no controle do Xbox, estão sendo registrados como joysticks analógicos. Enquanto os gatilhos são analógicos em um controlador Xbox tradicional, seu único objetivo real neste gamepad é atuar como botões.

Até agora, não consegui encontrar nenhum utilitário que me permitisse remapear o eixo para os botões do gamepad. O Qjoypad só pode ser usado para mapear os botões do controlador para seqüências de teclado ou mouse. Também não parece haver uma opção para fazer o mapeamento no jstest-gtk. xboxdrv tem a opção --trigger-as-button, mas não reconhece o controlador como um controlador do Xbox ou até mesmo como um controlador compatível (que, por si só, é estranho porque o controlador funciona bem no Xbox).

    
por Michael 06.10.2013 / 06:49

1 resposta

1

Depois de brincar com isso um pouco mais, finalmente pude fazê-lo funcionar. Em primeiro lugar, usando antimicro ou qjoypad funcionou bem para mapear o controlador para os comandos do teclado e usar o "teclado" de dentro do jogo. Como observação, isso nem sempre funcionou bem em termos de sensibilidade.

Eu finalmente consegui que funcionasse sem emular um teclado ou mouse com xboxdrv. Como observei acima, o xboxdrv não detecta o controlador como sendo um controlador do Xbox válido. Em vez disso, primeiro tive que determinar o ID do dispositivo USB manualmente, usando lsusb .

% lsusb
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 004: ID 10f1:1a34 Importek 
Bus 002 Device 042: ID 1bad:f02e Harmonix Music

Após uma pequena tentativa e erro, determinei que o último item da lista fosse o meu dispositivo. Eu então pude usar isso no seguinte comando:

xboxdrv --device-by-id 1bad:f02e --type xbox360 --trigger-as-button --detach-kernel-driver --no-extra-events
    
por 11.10.2013 / 00:59