Using the engine
Everything you need to install TIGHC, connect your devices, build profiles, and run haptics while you play.
Installation
TIGHC requires Python 3.10+ and Intiface Central running on your machine.
-
1
Clone the repo
git clone https://github.com/TIGHC/Engine.git cd Engine -
2
Install dependencies
pip install -r requirements.txt -
3
Launch
python gui.pyPrefer not to install Python at all? Grab a standalone executable instead from the Releases page.
If
pythondoesn't work, trypyinstead, or use the full path to your Python install.
The GUI
python gui.py opens a tabbed window. Each tab handles a
different part of the setup — work through them top to bottom the first
time, then you'll only need Run day-to-day.
Devices
Enter your Intiface Central
WebSocket URL (default ws://localhost:12345), then click
Connect + Scan. Every motor and capability your toy
exposes appears as a named channel. Give each one a friendly
nickname — that nickname is what profile keybinds use to target it,
and it sticks across reconnects.
Profiles
Browse, create, and edit game profiles. On first launch TIGHC downloads all profiles from TIGHC Profiles automatically. Use New profile... to start a new one from a template, Update profiles from GitHub to pull new community additions, or Restore from GitHub... to reset a profile to its original version.
Run
Start and stop the haptics engine. The log pane shows everything the engine is doing in real time — profile switches, binding activations, connection events. Use the Override profile dropdown to force a specific profile active regardless of which window has focus, or leave it on Auto (follow focus) to let TIGHC switch automatically as you alt-tab between games.
Test
Verify everything works without launching your game. Pin a profile as active to simulate its keybinds — trigger pulse bindings or hold continuous ones — exercising the exact same code path real input does. Use the per-channel sliders to drive a motor directly at any intensity. All test overrides clear automatically when you leave this tab.
Settings
Global options that apply across all games and profiles: WebSocket URL, the panic key (forces haptics off instantly — choose between suppressing for a timed duration or stopping the engine entirely), level smoothing, auto-reconnect on signal loss, and optional SteamGridDB cover art. Changes take effect immediately — no restart needed.
About
Current version, project summary, versioning scheme, and a link to the repository. The full changelog is a click away on the Changelogs page.
Profiles
Each game gets its own profile — a profile.json that tells
TIGHC which window title to match, which keys map to which channels, and
at what intensity.
Window matching
TIGHC watches the focused window's title and switches to the matching profile automatically. Matching is case-sensitive substring by default — Grounded matches any title containing that word. Enable exact matching in a profile to avoid collisions between games that share a prefix (e.g. Grounded vs Grounded 2).
Bindings
Each binding maps one or more keys or mouse buttons to a channel and
an intensity band. Continuous bindings vibrate for as
long as the key is held. Pulse bindings fire a single
buzz on press. The devices field targets specific channel
nicknames, or "all" to drive every connected channel.
Priority
When two bindings share a channel, the one higher in the
priority list wins. For example: set sprint above
movement so pressing Shift while walking immediately switches the
vibration to sprint's range. When sprint is released, movement
resumes automatically on the next pulse.
Linux & Steam Deck
TIGHC runs on Linux, including Steam Deck Desktop Mode, but requires an X11 session — focused-window detection and global input capture both need it. See the Linux guide for the full setup walkthrough: switching sessions, installing dependencies, getting Intiface Central running, and troubleshooting. Windows and macOS have their own guides too - see Guides.