Skip to main content

How it works

Two programs​

Input.Observer is two programs that work together.

  • The engine runs in the background, with its icon in the notification area of the taskbar. It watches the mouse and the keyboard, draws the gesture trail and the hint, recognizes gestures, hotkeys and typed codes, and runs your actions. It also has the diagnostic console. The engine works on its own: it needs nothing else running.
  • The configuration window is where you change what the engine does. It is a separate program that you open from the tray icon and close whenever you like; closing it changes nothing in the engine. It can only run while the engine runs: started on its own, it says that Input.Observer isn't running and closes. When the engine exits, the configuration window closes too.

Plugins are further separate programs that the engine starts and stops. The bundled Styles plugin draws animated trails, themed hints and messages, and plays sounds, when you choose a style for them. See Plugins.

The engine watches the mouse only while something you configured needs it: at least one draw button, a global mouse or wheel event, or text expansion. While the engine is paused from the tray it watches neither the mouse nor the keyboard.

Where your settings are kept​

  • The configuration file. Everything you set up — gestures, actions, app groups, settings — is in one file, config.toml, in the Input.Observer folder of your roaming application data (%APPDATA%\Input.Observer). If a config.toml sits in the same folder as the engine's program file, that one is used instead, which lets you run Input.Observer from a folder you carry with you. The tray menu's Open Config Folder opens the folder in use.
  • Who writes it. The engine reads the file when it starts. The configuration window gets the settings from the engine and hands your changes back when you apply them; the engine writes the file and starts using the changes at once. If you edit the file by hand, choose Reload Config from the tray menu to use your edits.
  • Next to it are your license, the console's settings, the active profile, your macro recordings, and a Backup folder with up to 10 earlier versions of the file.
  • The configuration window's own preferences — its size and position, Simple or Advanced mode, the page you last had open, and the sandbox layouts — are kept for this computer only, in %LOCALAPPDATA%\Input.Observer. The theme and the language are in the configuration file, because the engine uses them too.

The configuration file can be protected with a password. See The configuration file and Security.

From a button press to an action​

This is what happens when you draw a gesture with the default settings.

  1. You press the right mouse button. At once, before anything else, the engine decides whether this press is a possible gesture. It isn't, and the press goes to the program untouched with no delay, when:

    • an ignored modifier key (Ctrl by default) is held,
    • the pointer is in an exclusion zone,
    • the window under the pointer belongs to an ignore group, or
    • neither the window's app group nor Global has gestures to offer there.

    The window that counts is the top-level window under the pointer. Ignore groups are checked first, then app groups in their list order; a window no group claims belongs to Global. See Scope and fallback rules.

  2. The press is held back while you draw. Once the pointer moves 5 pixels, the press is a gesture and the trail appears. If you let go before that, the program gets an ordinary click. If the pointer stays still for half a second, the gesture is cancelled and the program gets the press. A gesture can last at most 10 seconds. While you draw, keys you press and other mouse buttons go to the gesture, not to the program. See Drawing a gesture.

  3. The stroke is compared as you draw. It is scored against the gestures that the window's app group and Global use. The hint shows what it matches so far. See How a stroke is matched.

  4. You let go, and the action is chosen. The best-scoring gesture counts only if its score reaches the match threshold (75 by default). Among the app group's actions, the first one in the list whose trigger fits — gesture, draw button, held modifiers, region and profile — is chosen. If the app group has none, Global's actions are tried, unless the group's Fall back to Global is off.

  5. The action runs. The window you started drawing over comes to the front, then any actions set to run before it, the action itself, and any set to run after it. See Before and after actions.

If nothing matches, nothing runs, and the press doesn't reach the program. The Nothing matched global event can run an action for that case. See Global events.

Hotkeys and text expansion follow the same app-group rules, but the window that counts is the window in front, not the window under the pointer. See Hotkeys and Text expansion.

Simple and Advanced mode​

The configuration window has two modes. Simple shows what most people need. Advanced adds pages and settings for finer control, such as modifier timing, regions, profiles, the code behind steps, global events, exclusion zones, plugins and the console. The mode changes only what the window shows. Every setting works the same in both modes, and settings you changed in Advanced mode stay in effect in Simple mode. See The configuration window.