How it Works & Permissions

Architecture, Transparency & Offline Operations Policy

fjFlow is a lightweight Windows desktop utility implemented in AutoHotkey v2 with Windows APIs (Win32, UI Automation, MSAA, and GDI). It anchors an IME status indicator next to your text caret, enables Space Shift home-row navigation, provides mouseless UI hints, and highlights active windows and lines.

To interact with the OS and track input areas across supported text editors, browsers, and Office applications, fjFlow uses standard Windows APIs. Following the principle of Least Privilege, all processing occurs locally in memory with no external network communication implemented.

1. Windows OS Mechanisms & Permissions Used

Keyboard & Mouse Hooks

Keyboard & Mouse Event Hooks

Used to handle Space Shift home-row navigation (Space + H/J/K/L), one-shot modifier locks, UI Hint overlays (Space + m), QuickDraft triggers, and scroll/click synchronization. Key events are evaluated strictly in volatile memory to trigger actions and are never logged to disk or transmitted externally.

UI Automation & MSAA

Windows Accessibility APIs (Primary Caret Tracking)

fjFlow primarily uses Windows Accessibility APIs—UI Automation (UIA) for modern apps (Chrome, Edge, VS Code) and Microsoft Active Accessibility (MSAA / oleacc) or CaretGetPos for classic Win32 controls—to obtain screen coordinates of the text insertion caret with low CPU overhead.

IAccessible2 & Pixel Caret Engine

Canvas Editors & Pixel-Difference Fallback

For Firefox and Canvas-based editors (such as Google Docs), fjFlow utilizes IAccessible2 alongside automatic accessibility tree wake-up. When an application or Remote Desktop window does not expose caret coordinates through standard APIs, the built-in Pixel Caret Engine compares localized screen frames via GDI to detect the blinking caret position.

Run as Administrator

Administrator Privileges (Optional / UIPI Boundary)

By default, fjFlow runs with standard user privileges. However, when the active window belongs to an elevated process (e.g., Task Manager, elevated terminals, or installers), Windows User Interface Privilege Isolation (UIPI) blocks input hooks from standard-privilege apps. Running fjFlow "as Administrator" allows it to operate inside elevated windows.

Local JSON Storage

Local Configuration (fjFlow.json)

In the Pro Edition, customized settings (presets, colors, opacity, key mappings) are saved in a human-readable fjFlow.json file in the application folder. It does not modify the Windows Registry, and no cloud syncing or telemetry is implemented.

DPI Awareness

Per-Monitor DPI Scaling Support

To keep indicators and overlays accurately aligned across multi-monitor setups with mixed scaling (e.g., 100%, 125%, 150%), fjFlow calls the Windows API SetThreadDpiAwarenessContext to compute physical screen coordinates dynamically.

2. Complete Offline Privacy Policy

No external network communication is implemented in fjFlow. It does not open external sockets or communicate with remote servers, ensuring that your typing activity, window titles, and configuration data remain strictly on your local PC.