✅ Solução para Conflito entre Joystick e Teclado em Jogos com SDL
Usando HidHide + AutoHotkey v2
🧠 Problema identificado
Em jogos que usam SDL (Simple DirectMedia Layer), é comum ocorrer:
“Ao manter um botão do joystick pressionado, o jogo ignora as teclas pressionadas no teclado (mesmo hardware real)”
Esse comportamento não é culpa do AutoHotkey, e sim da forma como o jogo lida com entrada simultânea de joystick + teclado.
🎯 Objetivo da solução
- Bloquear o joystick físico do acesso direto pelo jogo
- Permitir o uso do AutoHotkey v2 (ou vJoy) para simular teclas/movimentos sem conflito
🛠️ Requisitos
🧰 Passo a passo com HidHide
1. Instale o HidHide
- Baixe em: GitHub do HidHide
- Execute o instalador
HidHide_Installer_v1.5.230.0_x64.exe
- Reinicie o sistema (recomendado)
2. Abra o “HidHide Configuration Client”
- Acesse: Menu Iniciar > HidHide Configuration Client
- Você verá:
- Devices – lista de dispositivos HID (joystick, etc.)
- Applications – programas autorizados a ver os dispositivos ocultos
3. Adicione o AutoHotkey como exceção
- Na aba Applications, clique em
+
- Adicione o executável do AutoHotkey v2, por exemplo:
C:\Program Files\AutoHotkey\v2\AutoHotkey64.exe
- Adicione também seu script ou compilado, se necessário
4. Oculte o joystick físico
- Na aba Devices, marque a caixa do seu joystick
- Habilite: “Enable device hiding”
Agora o jogo não verá mais o joystick físico, mas o AutoHotkey continuará vendo.
5. Use AutoHotkey v2 para simular teclas
; Exemplo com KeyInput.ahk incluído
#Include "KeyInput.ahk"
1Joy1:: keyPress("h") ; Pressiona H ao apertar botão 1
1Joy2:: keyPress("s") ; Pressiona S ao apertar botão 2
🧪 Resultado esperado
- O jogo ignora o joystick físico
- AutoHotkey simula teclas sem interferência
- As teclas voltam a funcionar mesmo com botão de joystick pressionado
📎 Dicas extras
- Você pode combinar com vJoy para simular botões ou direções virtuais
- Faça testes com o joystick físico desconectado para garantir que tudo está sendo controlado pelo script
Eae assistindo Marcelo Marins hoje em dia?
ResponderExcluir