O Linux detecta a tecla do joypad pressionada mesmo que não haja nenhuma tecla pressionada

O Linux detecta a tecla do joypad pressionada mesmo que não haja nenhuma tecla pressionada

Estou tendo um problema muito estranho na minha máquina Arch Linux. Bem, já o tenho há alguns anos, mas como não uso joypads com muita frequência, simplesmente ignorei-o na primeira vez. É um problema muito estranho, então leia com atenção.

Há algum tempo tentei usar meu controle do Xbox 360 para jogar alguns jogos PSX antigos em emuladores (não se preocupe, eram discos originais). Quando tentei configurar o pad (usando o módulo do kernel xpad), o emulador (PCSX rodando nativamente) continuou me dizendo que o gatilho certo foi mantido pressionado, impossibilitando a configuração das outras teclas (já que todas as teclas que tentei configurar continuavam sendo atribuído ao gatilho certo).

Tentei outro emulador, ePSXe rodando no Wine (e depois nativo do ePSXe), e tive o mesmo problema. Nesse ponto eu já estava extremamente desconfiado, estou usando um controle com fio do Xbox 360 original e funcionando perfeitamente e um xpad que é usado por todo mundo, por que não funcionaria? Mesmo assim, não desisti e tentei soluções alternativas, como o driver xboxdrv userspace. Sem sorte. Então desisti, pois não queria perder o sono por causa disso.

Recentemente, comprei um adaptador USB para controladores PS2. Liguei, tentei configurar no emus e... o quê? Eles ficam me dizendo que o botão R2 (que está na mesma posição do gatilho direito do controlador X360) está sendo pressionado! Quais são as chances de dois controladores totalmente funcionais apresentarem o mesmo problema ao usar drivers e softwares diferentes? Pelo menos agora está claro que não é o software do pad X360, nem do xpad, nem do emulador.

Tendo excluído todos esses suspeitos, há apenas uma explicação que eu poderia apresentar, que seria que o módulo joypad do kernel está bagunçado. Mas nunca toquei em nenhum arquivo de configuração relativo aos joypads e meu kernel é o kernel padrão dos repositórios do Arch Linux. Você pode me ajudar com meu problema? Investi muito tempo e dinheiro nesta questão específica.

Por que ele detecta sempre a mesma chave (o gatilho/R2 correto), mesmo que essas chaves sejam teclas tecnicamente diferentes provenientes de joypads diferentes usando drivers diferentes (embora eu ache que o xpad apenas "traduz" a entrada para o módulo joypad do kernel)? Lembre-se de que as outras teclas funcionam corretamente, uma vez consegui atribuí-las manualmente e cada uma delas funcionou, desde que não atribuísse o gatilho/R2 correto a nenhuma função.

Por que isso não funcionaria para mim se não estou usando um kernel modificado e nunca toquei em um arquivo de configuração relacionado ao joypad? Alguem mais achou este problema? Eu nem sei o que digitar no mecanismo de busca. Muito obrigado por ler.

Responder1

Parece que pode haver um problema com os módulos xpad, mas apenas porque ele pode não reconhecer seu (s) controlador (es), fazendo com que ele caia no modo 'pad desconhecido'.

Você pode modificar a operação do módulo com três parâmetros:
+dpad_to_buttons: Mapeie o D-PAD para botões em vez de eixos para pads desconhecidos
+triggers_to_buttons: Mapeie gatilhos para botões em vez de eixos para pads desconhecidos
+stick_to_null: Não mapeie sticks para pads desconhecidos

Adicionando/alterando uma linha em um arquivo em/etc/modprobe.d, você pode definir/redefinir esses parâmetros.

Crie um arquivo em/etc/modprobe.d, DEVE terminar com '.conf', caso contrário não será reconhecido como um arquivo de configuração.

Neste arquivo, coloque esta linha:

options xpad {option} [{option}...]

Adicione ou remova opções conforme desejado. Eu recomendaria comentar (#) a linha se não houver opções listadas ou apenas exclua o arquivo completamente.

Você provavelmente terá quermodoxpadmódulo, entãomodprobepara recarregá-lo com as novas opções.

Se as opções não parecerem reconhecidas, talvez seja necessário executardepmod-apara reconstruir as tabelas de dependência do módulo.

Você pode ver quais parâmetros são válidos para um módulo com omodinfocomando.

informação relacionada