À propos du projet

Ce projet transforme le stylo vocal Hanwang PV60 (Ai Pointer) d'un simple pointeur de présentation en périphérique de saisie. Le fabricant réel de l'appareil est Shenzhen Shuanghou Technology (dosmono), Hanwang n'étant qu'un OEM. Fonctions principales : appui court sur haut/bas pour tourner les pages ou faire défiler ; appui long sur haut pour Entrée, appui long sur bas pour Retour arrière ; une pression sur la touche vocale ouvre le microphone et déclenche le raccourci vocal de la méthode de saisie (Alt droit), une seconde pression termine ; maintenir la touche vocale active le mode souris aérienne (curseur contrôlé par gyroscope) ; la zone de notification affiche le pourcentage de batterie, l'état de connexion et le mode d'interception. Le matériel est un périphérique composite USB (VID_0611 / PID_3001), comprenant un microphone USB Audio, un clavier HID, une souris HID et un canal d'échange de 33 octets sur la page constructeur 0xFF00 ; toutes les touches et configurations passent par la page constructeur. La documentation consigne les codes de touches et le format des trames de batterie (millivolts en petit-boutiste, formule officielle du pourcentage) et précise que le stylo ne rapporte la batterie qu'une fois toutes les 10 secondes en état de veille. L'implémentation repose sur le pilote de filtrage clavier Interception pour intercepter proprement les touches du stylo. Le README avertit explicitement que ce pilote peut être jugé suspect par les systèmes anti-triche de jeux en ligne (ACE, Vanguard, VAC/EAC/BattlEye, etc.) ; il est conseillé de désinstaller le pilote et de redémarrer avant de jouer. Après désinstallation, le programme bascule en mode dégradé via un hook clavier de bas niveau : les fonctions restent disponibles mais l'appui long laisse échapper des caractères. Le README consigne également plusieurs constats issus de tests réels : le comportement d'appui long est occupé par une macro du firmware et ne peut être intercepté proprement par un hook en espace utilisateur ; la DLL constructeur (kwma_x64.dll) corrompt le tas du processus, nécessitant son isolation dans un sous-processus dédié avec surveillance et redémarrage ; le SDK rapporte faussement un succès pour un stylo en veille, imposant de renvoyer les commandes et de sonder l'activité via des requêtes en lecture seule ; certaines méthodes de saisie ignorent les événements SendInput portant une marque d'injection, exigeant l'envoi des touches au niveau du pilote, et la conversion des codes de touche virtuelle en code de scan doit utiliser MAPVK_VK_TO_VSC_EX ; les macros du firmware ne peuvent être modifiées par configuration, et l'écriture de configuration est volatile. Le dépôt contient le programme principal, le sous-processus hôte audio, plusieurs outils d'investigation逆向 (capture de paquets, comparaison A/B, énumération de commandes, test de charge par sondage d'activité, etc.) ainsi que la documentation de conception. La compilation nécessite le SDK .NET 8 et permet une publication en fichier unique autonome. Les composants tiers (DLL constructeur et Interception) ne sont pas distribués avec le dépôt et doivent être fournis séparément ; en l'absence de la DLL constructeur, la fonction vocale est inopérante, les autres fonctions restant normales. Les chemins sont actuellement codés en dur sur D:\pen-hack\, et la configuration prend effet à chaud après sauvegarde. La licence est GNU GPL v3, couvrant uniquement le code propre au projet.