このプロジェクトについて

このプロジェクトは漢王PV60(Ai Pointer)音声ペンをプレゼン用ページャーから入力デバイスへ改造するものである。実際の製造元は深圳双猴科技(dosmono)であり、漢王はOEMブランドである。 主な機能:上/下キー短押しでページ送りまたはスクロール、上キー長押しでEnter、下キー長押しでBackspace、音声キーを1回押すとマイクが開きIME音声入力ホットキー(右Alt)をトリガー、もう1回押すと終了、音声キー長押しでエアマウスモード(ジャイロでカーソル制御)、トレイにバッテリー残量・接続状態・フック方式を表示。 ハードウェアはUSB複合デバイス(VID_0611 / PID_3001)で、USB Audioマイク、HIDキーボード、HIDマウス、およびベンダーページ0xFF00の33バイト送受信チャネルを備え、すべてのキーと設定はベンダーページを経由する。ドキュメントにはキーコードとバッテリー電文フォーマット(ミリボルト・リトルエンディアン、公式パーセンテージ計算式)が記録されており、ペンはウェイク状態でのみ10秒ごとにバッテリーを報告する。 実装はInterceptionキーボードフィルタードライバに依存してペンのキーをクリーンにフックする。READMEでは、このドライバがオンラインゲームのアンチチート(ACE、Vanguard、VAC/EAC/BattlEyeなど)に不審と判定される可能性があると明示しており、ゲーム前にドライバをアンインストールして再起動することを推奨している。アンインストール後は低レベルキーボードフックのフォールバックモードに移行し、機能は使えるが長押しで文字が漏れる。 READMEには実測の結論も記録されている:長押し動作はファームウェアマクロが占有しており、ユーザーモードフックではクリーンにフックできない。ベンダーDLL(kwma_x64.dll)はプロセスヒープを破壊するため、独立した子プロセスに隔離して監視・再起動する必要がある。SDKはスリープ中のペンに対して成功を偽って報告するため、コマンドを再送し読み取り専用リクエストで死活確認する必要がある。一部のIMEは注入フラグ付きSendInputイベントを無視するため、ドライバ層でキーを送信する必要があり、仮想キーからスキャンコードへの変換にはMAPVK_VK_TO_VSC_EXを使う。ファームウェアマクロは設定で変更できず、設定書き込みは揮発性である。 リポジトリにはメインプログラム、音声ホスト子プロセス、複数のリバースエンジニアリング調査ツール(パケットキャプチャ、A/B比較、コマンド列挙、死活監視ストレステストなど)、設計ドキュメントが含まれる。ビルドには.NET 8 SDKが必要で、自己完結型単一ファイルとして公開できる。サードパーティコンポーネント(ベンダーDLLとInterception)はリポジトリに同梱されず、各自で用意する必要がある。ベンダーDLLがない場合は音声機能が無効になるが、その他の機能は通常どおり動作する。パスは現在D:\pen-hack\にハードコードされており、設定保存後に即時反映される。ライセンスはGNU GPL v3で、自作コードのみが対象。