AutoHotKey v2 で 令和の ThumbSense

本記事は、 Windows Advent Calendar 2024 18日目 の記事だ。
思いっきり遅刻してしまって申し訳ない。

突然だが、 ThumbSense を覚えているだろうか?
2002年に SONY が発表した、ノートPCのタッチパッドを用いて、手をホームポジションから動かさずに、マウス操作や様々なショートカットを起動するユーティリティツールだ。
(本家, 窓の杜の紹介記事)

当時はその革新的な操作体験で大いに注目されていたと記憶している 1 し、 ThumbRemap や NewtonPad などのインスパイアされたツールがいくつも登場していた。

しかし、当時のこれらの実装は Synaptic または ALPS 製のタッチパッドのドライバーをフックして実装されていた。このため、令和となった現代、 Windows 10 や Windows 11 が入っているような PC では動かない。

現在流通しているノートPCのタッチパッドは、Windows 8.1 で追加され Windows 10 で強化された、 USB 等の HID プロファイルに基づいた実装になっている。

先日の記事 の通り、 RawInput で HID の情報を拾えばかなり細かくタッチパッドの状況がとれる。
AutoHotKey 使えば、 ThumbSense のような実装もそこまで難しくないのでは…?

…と思って AutoHotKey v2 で実装してみたのが、本日の記事になる。

ThumbReSense のインストール

GitHub の advanceboy/ThumbReSense-ahk のリリースページ から、最新の exe ファイルをダウンロードして、起動するだけ。

SmartScreen の警告が出る場合は、 exe ファイルを右クリックして、セキュリティのブロック (ZoneId) を解除しよう。

また、 AutoHotKey v2 用のソースもリポジトリにあるので、こちらをダウンロードしてインストール済みの AutoHotKey v2 で起動しても OK だ。

常用するなら、 Windows のスタートアップフォルダにでも突っ込んでおけば PC 起動時に自動で起動するようになる。

AutoHotKey の制限として、通常タスクマネージャなどの管理者特権で動くソフト上では機能しないのだが、 ThumbReSense の実行ファイル (またはスクリプトを起動する AutoHotKey) 自体を管理者権限として実行すればこの制限を回避できる。
自動起動させたい場合、タスクスケジューラを使って、ログオン時に管理者権限として起動する設定にしておくと良いだろう。

残念ながら、 Windows Sandbox やリモートデスクトップでは、ホットキーを機能させる方法がなさそうだ。

使い方

続きを読む

Rust と Win32 API RawInput で HID の TouchPad を深堀り

本記事は、 Rust Advent Calendar 2024 シリーズ1 の 17日目 の記事だ。
ついでに、 Windows Advent Calendar 2024 17日目 の記事としても登録させてもらっている。

Win32 API の RawInput を、先日紹介した Rust + windows-rs を使って呼び出し、 USB/Bluetooth HID の生入力情報を読み取っていきたい。

PC にはキーボードやマウス以外にも、スタイラスやタッチパッド等々の多くの入力デバイスが繋がるが、通常 Windows アプリにはひとつの「マウス」または「キーボード」と抽象化された状態で情報(ウィンドウメッセージ)が届く。

生入力… もとい RawInput を使うと、複数のマウス・キーボードや、任意のヒューマンインターフェイスデバイス (HID) などの、より低レベルなメッセージを受け取れるようになる。

受け取れる情報は以下の3種類。

  • マウスからの RawInput
  • キーボードからの RawInput
  • マウスやキーボード以外の、任意の HID からの RawInput

マウスやキーボードの RawInput は Windows 側で使いやすく整形された情報を取得できる。
ゲームなどでよく使われる事もあり、サンプルも数多く見つかるだろう。

本記事では、このうち最後の「任意の HID からの RawInput 情報の取得」について、高精度タッチパッドを例に簡単に説明していく。

Rust 書き始めてまだ数週間なので、あまり Rust らしい書き方になってないかもだが、その点はご容赦を。

HID プロトコルとは

続きを読む