fjFlowは、Windows環境においてテキスト入力時のキャレット(入力カーソル)追従表示やスマートシフトロック, ズーム, 行ハイライト, ウィンドウ強調枠表示などをシームレスに行うための常駐型デスクトップユーティリティ(AutoHotkey v2で実装)です。
システムと対話し、各種テキストエディタやブラウザ、およびOfficeなどの入力エリアを監視するために、Windows OSが提供する特定のAPIや権限を利用しています。fjFlowは、アクセシビリティ標準および「必要最小限の権限(Least Privilege)」の設計思想に基づき、外部通信を一切行わないスタンドアロンなセキュア設計を採用しています。
1. 使用するWindows OSの仕組みと権限
「左右のShiftキーの単発押し(300ms未満)」によるシフトロック制御、「左右のCtrlキーのダブルタップ」による動作の一時停止/再開、およびホットキー(F8/F9)などを安全にフックして処理するために使用します。取得したキー入力情報はメモリ内でのトリガー検知にのみ利用され、キーロガーのようにファイルへログ保存したり、外部へ送信することは絶対にありません。
ChromeやEdgeなどのブラウザ、VSCodeやメモ帳などの主要エディタ上で、文字入力が行われているテキストエリア内の「キャレット(入力カーソル)の絶対画面座標」をリアルタイム(低遅延)に取得するためにWindows標準のアクセシビリティAPIを利用しています。
FirefoxおよびGoogleドキュメントのようなCanvas描画式エディタを検出した際、一時的に Ctrl+Alt+Z メッセージ(スクリーンリーダーモード起動)を自動的に送信することで、アクセシビリティツリーを構築させ、IAccessible2を介してキャレット位置の座標を取得できるようにします。
通常、fjFlowは一般ユーザー権限で動作しますが、タスクマネージャーや管理者権限で実行されているエディタ、開発者用コンソール(PowerShell等)などの「特権ウィンドウ」がアクティブな場合、それらの上ではインジケーター表示やホットキーがWindows OSのセキュリティ制限(UAC)によりブロックされます。これらのウィンドウ上でも追従させたい場合は、本アプリを「管理者として実行」する必要があります。
設定画面(GUI)でユーザーが調整したカラー、テキスト、サイズ、透明度などの各種パラメータは、実行ファイルと同一フォルダ内の fjFlow.ini にローカル保存されます。クラウドとの自動同期やテレメトリー送信機能はなく、設定情報の漏洩はありません。
モニターごとに異なるDPI(125%、150%など)が設定されているマルチモニター環境下でも、拡大表示やインジケーター位置が正しく描画されるよう、Windows APIの SetThreadDpiAwarenessContext を用いて動的に表示位置座標を補正しています。
2. 完全オフライン・プライバシー保護設計
fjFlowはインターネット通信を一切行いません。中継サーバーは存在せず、キー入力やアプリケーション情報、設定内容がインターネット上へ流出する懸念は全くありません。完全にローカルPC上でのみ動作が自己完結する、安心のオープンソースセキュリティ仕様となっています。