This site describes 18+ software.

TIGHC connects to and controls adult haptic/sex toy devices based on your keyboard and mouse input while gaming. It's intended only for adults aged 18 or older.

By continuing, you agree to our Terms and Ethics of Use.

Leave

Using the engine

Engine v3.8.0 Windows · Linux · Steam Deck · macOS

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. 1

    Clone the repo

    git clone https://github.com/TIGHC/Engine.git
    cd Engine
  2. 2

    Install dependencies

    pip install -r requirements.txt
  3. 3

    Launch

    python gui.py

    Prefer not to install Python at all? Grab a standalone executable instead from the Releases page.

    If python doesn't work, try py instead, 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.