仕組みと権限について

技術アーキテクチャ・安全性・オフライン動作ポリシー

fjFlow は、AutoHotkey v2 と Windows API(Win32 / UI Automation / MSAA / GDI)を組み合わせて実装された常駐型デスクトップユーティリティです。入力カーソル(キャレット)へのIME状態追従表示、Space Shiftによるホームポジション操作、UIヒントによるマウスレス操作、行ハイライトやウィンドウ強調枠表示などを軽快に処理します。

対応する各種テキストエディタ、ブラウザ、Officeアプリ等の入力位置を把握するために Windows OS 標準の API を利用しています。「必要最小限の権限(Least Privilege)」の設計思想に基づき、外部ネットワーク通信機能を持たないローカル完結設計を採用しています。

1. 使用するWindows OSの仕組みと権限

Keyboard & Mouse Hooks

キーボード・マウスフック

Space Shift によるホームポジション移動(Space + H/J/K/L)、ワンショット修飾キーロック、UIヒント展開(Space + m)、QuickDraft起動、およびスクロール・クリック同期を処理するために使用します。キー入力イベントは揮発性メモリ内での判定にのみ利用され、ファイルへのキーログ記録や外部送信は行いません。

UI Automation & MSAA

Windows アクセシビリティ API(主軸となるキャレット追跡)

Chrome・Edge・VS Code などのモダンアプリでは UI Automation (UIA)、メモ帳などの従来型 Win32 アプリでは Microsoft Active Accessibility (MSAA / oleacc) や標準の CaretGetPos API を優先使用し、低負荷で入力カーソルの画面座標を取得します。

IAccessible2 & Pixel Caret Engine

Canvasエディタ対応 & ピクセル差分解析フォールバック

Firefox や Google ドキュメント等の Canvas エディタでは IAccessible2 とアクセシビリティツリー自動復帰を併用します。さらに、標準のアクセシビリティ API がキャレット座標を返さないアプリやリモートデスクトップ環境では、画面の局所フレーム差分を GDI で解析して点滅カーソル位置を特定する Pixel Caret Engine が補完します。

Run as Administrator

管理者権限での実行(任意・UIPI制限への対応)

通常、fjFlow は一般ユーザー権限で動作します。ただし、タスクマネージャーや管理者権限で起動されたターミナル・エディタ等の「昇格ウィンドウ」上では、Windows のユーザーインターフェイス特権の分離(UIPI)により一般権限アプリからのフック操作が制限されます。これらのウィンドウ上でも操作したい場合は、fjFlow を「管理者として実行」してください。

Local JSON Storage

ローカル設定ファイル保存 (fjFlow.json)

Pro版において、設定画面(GUI)で調整したプリセット、カラー、サイズ、キー割り当て等は、実行ファイルと同じフォルダ内の fjFlow.json に保存されます。Windows レジストリを変更せず、クラウド同期やテレメトリー送信も行いません。

DPI Awareness

DPIスケーリング & マルチモニター制御

モニターごとに異なる拡大率(100%、125%、150%など)が混在するマルチモニター環境でもインジケーターやヒントの位置がズレないよう、Windows API の SetThreadDpiAwarenessContext を用いて物理スクリーン座標を動的に計算しています。

2. オフライン・プライバシー保護設計

fjFlow には外部ネットワーク通信機能が実装されていません。外部サーバーとの通信は行われず、入力内容や使用中のアプリケーション情報、設定データが外部へ送信されることはありません。