Cheguei ao ponto em que meu controlador foi reconhecido, mas não respondia a pressionamentos de botão. Talvez o seu controlador responda, se você seguir meus passos, mas talvez não.
xpad e xboxdrv não são a mesma coisa, são duas abordagens diferentes. Parece que o xboxdrv funciona melhor, mas não está atualizado no Ubuntu.
Você precisa fazer o download , modificar e, em seguida, compilar a versão mais recente do xboxdrv.
Download
Do github, link
pressione o botão verde Clone or Download
e, em seguida, Download ZIP
.
Extraia o arquivo baixado para uma pasta vazia.
Modificar
Aqui vem a parte complicada. Na pasta extraída, localize o arquivo [...]/src/xpad_device.cpp
. Abra e você encontrará uma longa lista de entradas como
{ GAMEPAD_XBOX, 0x0d2f, 0x0002, "Andamiro Pump It Up pad" },
Você deseja adicionar seu próprio controlador a essa lista. Deve estar no formulário
{ GAMEPAD_XBOXONE, 0x????, 0x????, "Your product description" },
E você precisa encontrar os dois códigos que o identificam.
Em um Terminal , digite
watch lsusb
Conecte seu controlador e anote a linha que aparece na lista. Este é seu controlador. O meu foi chamado
Bus 002 Device 013: ID 0e6f:02b2 Logic3
Em xpad_device.cpp
, verifique se o ID do seu controlador ainda não está entre os controladores do xbox one. Se for, você pode pular o restante desta etapa.
Adicione sua entrada à lista, adicionando a primeira e a segunda parte do ID do dispositivo do seu controlador ao primeiro e segundo código da entrada. Lembre-se de que cada entrada é separada por vírgula, e a última entrada não tem vírgula depois dela.
A minha torna-se
{ GAMEPAD_XBOXONE, 0x0e6f, 0x02b2, "@Play - Wired Controller for Xbox One" },
Salve o arquivo e feche-o.
Compile
De um terminal, navegue para a pasta extraída. Primeiro cole
sudo apt-get install \
scons \
g++ \
libboost-dev \
scons \
pkg-config \
libusb-1.0-0-dev \
git-core \
libx11-dev \
libudev-dev \
x11proto-core-dev \
libdbus-glib-1-dev
para instalar dependências. A compilação real pode demorar um pouco. Digite
scons
então
make install
Executar
De um terminal
sudo xboxdrv
Veja se funciona. Para jogos reais, corra
sudo xboxdrv --silent
Portanto, não desperdiçará a impressão da CPU de todos os eventos de entrada para o terminal.
Para facilitar, tente adicioná-lo como um atalho com Alacarte .