Confusão do gamepad compatível com Windows HID

3

Estou com um problema em conseguir que um gamepad funcione corretamente. O sistema de dispositivos de entrada do Windows sempre me confundiu, mas depois de algumas pesquisas eu juntei o seguinte:

  • XInput é a API mais recente / mais usada no DirectX para entrada de gamepad
  • O DirectInput é uma API mais antiga que não é tão popular / usada (graças ao XInput sendo mais fácil e rápido de configurar)
  • XInput APENAS suporta os controladores Xbox (Xbox 360 e provavelmente Xbox One também)
  • O DirectInput suporta todos os tipos de dispositivos de entrada, incluindo gamepads genéricos compatíveis com HID e controladores Xbox (embora com menos recursos do que através de XInput, como suporte a fone de ouvido)

Meu problema envolve obter um gamepad Bluetooth ( Amazon Fire TV Game Controller ) para funcionar em jogos no Windows. Obviamente, uma vez que não é um controlador do Xbox 360, fazê-lo funcionar em um jogo somente com XInput exigirá uma solução alternativa. Este projeto parece funcionar quase perfeitamente, pois permite que todos os dispositivos de entrada emulem a entrada do Xbox360 e, portanto, os tornem compatíveis com XInput.

No entanto, encontrei algumas dificuldades e não sei dizer quem é a culpa ou como corrigi-las. Um problema é que os gatilhos L / R não são detectados. Entrar no menu "Dispositivos e Impressoras" e clicar em "Configurações do controlador de jogos" para o meu controlador me permite testar as entradas através desta tela familiar:

Pressionar os gatilhos não faz nada. Além disso, se você notar, existem 15 botões de entrada. Isso está correto, já que o controlador que estou testando tem 15 botões, no entanto, 4 desses botões são botões de mídia que controlam o SO sozinhos. Por exemplo, pressionar o botão home no controlador abrirá meu navegador de internet e me levará para minha página inicial. Pressionar os outros botões de mídia aparentemente não faz nada.

Minhas perguntas são:

  1. Como faço para que os gatilhos funcionem? Isso é um problema de driver? Eu pensei que os dispositivos compatíveis com HID deveriam funcionar. Se o Windows detectou todos os 15 botões, dois analógicos e um D-Pad, por que não detectou os dois gatilhos? Os gamepads compatíveis com HID não suportam disparadores analógicos, ou isso é um bug / problema com o controlador em si ou com o driver do gamepad do Windows?

  2. Como posso controlar os quatro botões de mídia no dispositivo? Ter um botão em um gamepad que me leve ao meu navegador de internet é bastante inútil e chato.

  3. Se um driver personalizado for absolutamente necessário para isso, seria possível escrever um, não tendo nenhuma conexão ou ajuda do fabricante?

Obrigado!

    
por AlexRamallo 26.12.2014 / 02:20

1 resposta

2

Você está correto sobre o que o directInput é versus o Xinput, embora se possa argumentar que o directInput api permite controles mais diversos. Se você tiver um controlador que se registre como um dispositivo de entrada direta e tiver um jogo que aceite apenas Xinput, sugiro que x360ce (@ link ). Isso converte directInput em Xinput para o jogo enquanto mascara a entrada real dos controladores. Simplesmente execute x360ce.exe dentro do diretório do jogo e siga as instruções do site x360ce. Infelizmente não é compatível com todos os jogos e também pode não ser compatível com o seu controlador. Vale a pena tentar, apenas deixe comentários para os desenvolvedores do x360ce depois. Espero que isso ajude!

    
por 18.03.2016 / 03:17