Sobre o projeto
Este projeto transforma a caneta de voz Hanvon PV60 (Ai Pointer) de um apresentador de slides de demonstração em um dispositivo de entrada. O fabricante real do dispositivo é a Shenzhen Shuanghou Technology (dosmono), sendo Hanvon apenas OEM.
Principais funções: pressionar brevemente as teclas cima/baixo para virar páginas ou rolar; pressionar longamente a tecla cima para Enter, pressionar longamente a tecla baixo para Backspace; pressionar uma vez a tecla de voz para abrir o microfone e acionar o atalho de voz do IME (Alt direito), pressionar novamente para encerrar; manter pressionada a tecla de voz para entrar no modo air mouse (controle do cursor pelo giroscópio); a bandeja exibe a porcentagem de bateria, o estado de conexão e o modo de interceptação.
O hardware é um dispositivo composto USB (VID_0611 / PID_3001), contendo microfone USB Audio, teclado HID, mouse HID e um canal de envio/recepção de 33 bytes na página do fabricante 0xFF00; todas as teclas e configurações passam pela página do fabricante. A documentação registra os códigos de tecla e o formato da mensagem de bateria (milivolts em little-endian, fórmula oficial de porcentagem), e explica que a caneta só reporta a bateria uma vez a cada 10 segundos no estado desperto.
A implementação depende do driver de filtro de teclado Interception para interceptar de forma limpa as teclas da caneta. O README alerta explicitamente que esse driver pode ser considerado suspeito por sistemas anti-cheat de jogos online (ACE, Vanguard, VAC/EAC/BattlEye etc.), recomendando desinstalar o driver e reiniciar antes de jogar; após a desinstalação, o programa recua para o modo degradado de hook de teclado de baixo nível, no qual as funções continuam disponíveis, mas o pressionamento longo deixa vazar caracteres.
O README também registra várias conclusões de testes: o comportamento de pressionamento longo é ocupado por macros do firmware e hooks em espaço de usuário não conseguem interceptá-lo de forma limpa; a DLL do fabricante (kwma_x64.dll) corrompe o heap do processo, sendo necessário isolá-la em um subprocesso separado com supervisão e reinício; o SDK reporta falsamente sucesso para a caneta em suspensão, sendo necessário reenviar comandos e sondar atividade por meio de requisições somente leitura; alguns IMEs ignoram eventos SendInput com marca de injeção, sendo necessário enviar teclas na camada do driver, e a conversão de tecla virtual para scan code requer MAPVK_VK_TO_VSC_EX; as macros do firmware não podem ser modificadas por configuração, e a gravação de configuração é volátil.
O repositório contém o programa principal, o subprocesso hospedeiro de áudio, várias ferramentas de investigação reversa (captura de pacotes, comparação A/B, enumeração de comandos, teste de estresse de sondagem de atividade etc.) e documentos de design. A compilação requer o .NET 8 SDK e pode ser publicada como arquivo único autocontido. Componentes de terceiros (DLL do fabricante e Interception) não são distribuídos com o repositório e precisam ser obtidos separadamente; sem a DLL do fabricante, a função de voz deixa de funcionar, mas as demais funções operam normalmente. Os caminhos estão atualmente codificados de forma fixa como D:\pen-hack\, e as configurações passam a valer a quente após serem salvas. A licença é GNU GPL v3, cobrindo apenas o código próprio.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.