Teste de Controle
Teste botões, sticks, gatilhos, D-pad e vibração do controle no navegador
Stick esquerdo
Stick direito
Gatilhos
Teste de vibração
Histórico de eventos
O que é o Teste de Controle?
Um teste de controle lê os sinais que o controlador envia ao navegador por meio da Gamepad API do W3C e os mostra em tempo real: cada pressionamento de botão, posição do stick analógico, profundidade do gatilho, direção do D-pad e motor de vibração. É a forma mais rápida de confirmar se um controle funciona antes de um jogo, diagnosticar um botão facial travado, detectar drift do stick num controle antigo ou verificar se ambos os motores de vibração disparam. A página destaca cada entrada num layout ao estilo Xbox na tela, apresenta os valores brutos dos eixos e gatilhos e mantém um breve registro de eventos. Como a Gamepad API só expõe um controlador depois que você pressiona um botão nele, a página pede que você pressione qualquer botão primeiro - é uma regra de segurança do navegador, não um defeito do controle. Tudo roda localmente no navegador; nenhum dado de entrada sai do seu dispositivo.
Como usar
Como usar
- Conecte o controle por USB ou Bluetooth
- Pressione qualquer botão do controle para ativá-lo
- Observe o layout na tela acender ao pressionar botões ou mover os sticks
- Utilize os botões de vibração para testar os motores
- Consulte o histórico de eventos para confirmar que cada pressionamento foi registrado
Dicas
- O destaque verde significa que a entrada está chegando ao navegador corretamente
- Um controlador só aparece depois que você pressiona um botão nele - é uma regra de segurança do navegador
- O suporte a vibração depende do navegador e do controle; o Firefox tem o suporte mais amplo
- Se um stick apresentar um valor diferente de zero em repouso, o aviso de drift alerta sobre o drift do stick
- Vários controles conectados podem ser alternados pelos chips de slot
Casos de uso
Princípio técnico
O navegador expõe controles por meio da Gamepad API do W3C. Um controlador é representado por um objeto Gamepad obtido de navigator.getGamepads(), que retorna até quatro slots. Cada controle carrega uma string id (fabricante e produto), um campo mapping ('standard' para dispositivos com layout Xbox, vazio caso contrário), um array buttons e um array axes.
No mapeamento padrão, buttons tem 17 entradas: quatro botões faciais (A/B/X/Y), dois bumpers (LB/RB), dois gatilhos analógicos (LT/RT), Select/Start, dois cliques de stick (L3/R3), quatro direções do D-pad e o botão Home/Guide. Cada botão expõe .pressed (booleano) e .value (0 a 1 - gatilhos são analógicos, botões digitais são 0 ou 1). O array axes guarda quatro valores no intervalo -1 a 1: X/Y do stick esquerdo, depois X/Y do stick direito.
A API é baseada em polling, não em eventos, então a página roda um ciclo requestAnimationFrame e lê um snapshot novo a cada frame. Para evitar re-renderizações inúteis com o controle em repouso, o estado só é atualizado quando gamepad.timestamp muda - esse timestamp avança a cada novo relatório de entrada. A conexão e desconexão chegam como eventos gamepadconnected e gamepaddisconnected da window.
Por segurança, um objeto gamepad permanece null até o usuário pressionar um botão nele, então a página não consegue ler silenciosamente um controle recém-conectado. A vibração é opcional: se existir gamepad.vibrationActuator, chamar playEffect('dual-rumble', { duration, weakMagnitude, strongMagnitude }) aciona os dois motores; o Safari e algumas builds Chromium não a implementam, então a página faz detecção de recursos e desativa os botões caso contrário.
- navigator.getGamepads() retorna até quatro slots; um controle só fica não null depois de pressionar um botão nele.
- Mapeamento padrão: buttons[0-3] faciais, [4-5] bumpers, [6-7] gatilhos analógicos, [8-9] Select/Start, [10-11] L3/R3, [12-15] D-pad, [16] Home.
- axes[0-1] é o stick esquerdo (X, Y), axes[2-3] o stick direito, cada um no intervalo -1 a 1.
- Modelo de polling: um ciclo requestAnimationFrame lê snapshots; gamepad.timestamp controla as atualizações para que frames em repouso não façam nada.
- Vibração via gamepad.vibrationActuator.playEffect('dual-rumble', ...) - com detecção de recursos, nem todos os navegadores suportam.
- Eventos gamepadconnected / gamepaddisconnected sinalizam conexão e desconexão; o .index do controle identifica o slot.
Exemplos
Pressionar um botão facial
Pressionar A -> buttons[0].pressed = true, value = 1.0Empurrar o stick esquerdo
Stick esquerdo para cima-direita -> axes[0] = 0.71, axes[1] = -0.68Pressionar um gatilho
Carregar RT até meio -> buttons[7].value = 0.50, pressed = false (abaixo do limite)Perguntas frequentes
Por que meu controle não aparece depois de conectá-lo?
A Gamepad API mantém um controlador oculto até você pressionar um botão nele, para impedir que as páginas façam fingerprinting silencioso dos dispositivos conectados. Conecte o controle por USB ou Bluetooth, foque nesta aba e pressione qualquer botão - o painel de status muda para Conectado. Este passo de ativação é uma regra de segurança do navegador, não um defeito.
Que controladores são suportados?
Qualquer controlador que o navegador exponha com o mapeamento padrão: controles Xbox One/Series, DualShock 4 e DualSense (que a maioria dos sistemas mapeia como padrão) e a maioria dos controles USB genéricos. Por Bluetooth ou USB, o navegador os normaliza para o mesmo layout de 17 botões e 4 eixos. Controles não padrão ainda funcionam, mas a ordem dos botões pode não corresponder aos rótulos na tela.
Por que a vibração não funciona?
O suporte a vibração varia. O Firefox tem o suporte mais amplo; o Chrome e o Edge oferecem suporte em versões recentes; o Safari não implementa. O próprio controle também precisa expor gamepad.vibrationActuator. A página detecta isso e mostra um aviso explícito de 'não suportado' em vez de falhar silenciosamente, então uma vibração ausente é um limite do navegador ou do hardware, não um bug aqui.
Meu stick mostra um valor quando não o toco - está com defeito?
Um valor pequeno perto de 0 é ruído normal da zona morta. Se um stick repousa acima de cerca de 0.12 em qualquer eixo, o aviso de drift fica laranja - é drift clássico do stick, causado por módulos de potenciômetro gastos. É um problema de hardware que costuma piorar com o tempo; a ferramenta permite confirmá-lo antes de culpar o jogo.
Algum dado é enviado para um servidor?
Não. A Gamepad API é lida inteiramente no seu navegador. Pressionamentos de botões, posições dos sticks e comandos de vibração nunca saem do seu dispositivo. Nada é registrado ou transmitido.
Dá para testar os gatilhos adaptativos do DualSense, o touchpad ou o giroscópio?
Não. A Gamepad API padrão só expõe botões, eixos e vibração básica. Os gatilhos adaptativos do DualSense, o touchpad capacitivo e os sensores de movimento não fazem parte do padrão web (alguns estão em extensões experimentais com suporte fraco nos navegadores), então não podem ser testados de forma confiável a partir do navegador.
Ferramentas relacionadas
Teste de Mouse
Ferramenta de teste de mouse online gratuita para verificar botões, rolagem e clique duplo. Posição do mouse em tempo real e contador de cliques, suporte a histórico de eventos, proteção de privacidade no navegador.
Teste de Taxa de Atualização
Ferramenta de teste de taxa de atualização de tela online gratuita. Detecte a taxa de atualização real do monitor através de taxa de quadros de animação, suporta 60Hz, 120Hz, 144Hz e superior.
Teste de Teclado
Ferramenta de teste de teclado online gratuita com detecção de teclas em tempo real e exibição de código de tecla. Visualização de teclado virtual, suporte a histórico de teclas, proteção de privacidade baseada em navegador.
Teste de Câmera
Ferramenta de teste de câmera online gratuita com visualização em tempo real e captura de foto. Suporte a detecção de resolução, visualização de informações do dispositivo, proteção de privacidade baseada em navegador.
Teste de Microfone
Ferramenta de teste de microfone online gratuita com forma de onda de volume em tempo real e análise de espectro. Suporte a reprodução de gravação, detecção de informações do dispositivo, proteção de privacidade baseada em navegador.
Ferramenta de Verificação do Sistema
Ferramenta gratuita de verificação do sistema online. Detecte seu SO, navegador, resolução da tela, configuração de hardware e status da rede. Processamento local privado.
