-
Notifications
You must be signed in to change notification settings - Fork 6
Touchpad
Per-slot touchpad tuning: continuous output modes (mouse, virtual analog stick, D-pad) and the gesture stack (swipes, taps, longpress, pinch, rotate, shape templates). One physical touchpad in two slots carries two independent configurations.

The Touchpad tab appears on any slot whose assigned device exposes a touchpad surface: DualSense, DualSense Edge, DualShock 4, a Web Controller client in DS4 or touchpad-only mode, the on-screen Touchpad Overlay, or a Windows Precision Touchpad enumerated through the Devices page.
Five cards, top to bottom:
- Stick / D-Pad Output. Turn a touchpad finger into a virtual analog stick (anchor-relative) and/or a wedge-thresholded D-pad.
- Mouse Output. Per-axis sensitivity and invert for touchpad-finger → mouse X/Y on a Keyboard / Mouse virtual controller.
- Gesture Detection. Master enable, recognize mode (in-box / custom / both), and cooldown between fires.
- In-Box Gestures. Swipes (4-way / 8-way), radial zones, taps, longpress, two-finger swipes, pinch / spread, rotate, three / four / five finger gestures, in-box shape templates.
- Custom Gestures. The profile's saved custom shape templates plus a recorder dialog to capture new ones.
The first two are continuous output modes you bind in the Button and Axis Mappings table. The last three drive a per-tick gesture engine whose fires you bind the same way.
Defaults are off. Every feature toggle starts disabled. Open the tab, flip the master switch, then enable each gesture or output you actually want. Numeric thresholds (cooldown, swipe distance, tap time window, longpress duration, deadzones) keep tuned defaults so a feature works correctly the moment it's turned on.
Anchors where your finger first lands. Current position relative to that anchor drives the virtual stick X/Y and (optionally) latched D-pad direction bools.
| Knob | Default | Effect |
|---|---|---|
| Enable Stick / D-Pad Output | off | Surfaces Touchpad N Stick X, Touchpad N Stick Y, and the four Touchpad N DPad{Up/Down/Left/Right} descriptors in the mapping picker. |
| Max Radius (0..1) | 0.30 | Distance from anchor at which stick output saturates to ±1. Smaller = twitchier; larger = more travel. 0.30 means half the pad sweep in either direction gives full deflection. |
| Inner Deadzone (0..1) | 0.02 | Magnitude below this maps stick output to (0, 0). Prevents sub-millimeter finger drift from registering as slow stick input. |
| D-Pad Mode | 4-Way |
Off skips D-pad output. 4-Way emits one cardinal at a time (90° wedges). 8-Way emits two cardinals on diagonals (matches physical D-pads reporting NE / NW / SE / SW). |
| D-Pad Activation (0..1) | 0.15 | Minimum distance from anchor for any D-pad direction to fire. Independent of the stick inner deadzone so the tactile D-pad snap dials separately from analog feel. |
Bind Touchpad N Stick X to a virtual stick X axis to use the surface as a thumbstick. Bind Touchpad N DPadUp to a face button to use it as a tap-pad.
Tunes cursor speed when a touchpad finger is mapped to mouse X/Y on a Keyboard + Mouse virtual controller.
| Knob | Default | Effect |
|---|---|---|
| Mouse Sensitivity X | 1.0 | Multiplier on horizontal touchpad → mouse delta. 1.0 is the calibrated baseline (a full horizontal pad sweep moves the cursor ~1920 pixels). Below 1.0 = slower cursor, above 1.0 = faster. Range 0.05..10.0. |
| Mouse Sensitivity Y | 1.0 | Same for vertical motion. |
| Invert Mouse X | off | Finger right moves the cursor left. |
| Invert Mouse Y | off | Finger down moves the cursor up. |
Bind Touchpad N Finger 0 X to KBM Mouse X (and Y to Mouse Y) to use the surface as a trackpad. The KBM virtual controller produces real Windows mouse input. The cursor moves in any focused app, not just games that read controller mouse axes.
Master controls for the per-tick gesture recognizer.
| Knob | Default | Effect |
|---|---|---|
| Enable Gestures | off | Master switch. Off skips the recognizer entirely for this slot. |
| Recognize | Both |
In-Box Only runs the built-in catalog (swipes / taps / longpress / pinch / rotate / in-box shapes). Custom Only runs only the profile's saved custom shape templates. Both runs everything. |
| Cooldown (ms) | 100 | Minimum time between consecutive gesture fires from this pad. Prevents bounce-fire when a quick reverse motion would otherwise re-fire the opposite-direction swipe immediately. |
Every toggle here is off by default. Flip the ones you want.
Tier 1 — single-finger fires. 4-way swipes (Up/Down/Left/Right) and 8-way diagonals (NE/NW/SE/SW). Radial zones (4 / 6 / 8 / 12 sectors with a configurable centre dead-zone). Tap, double-tap, triple-tap (with a configurable inter-tap gap). Long-press (configurable hold duration).
Tier 2 — multi-finger. Two-finger swipes (with angular-tolerance gate to distinguish from pinch / spread). Pinch / spread (relative-distance threshold). Rotate (degrees-of-rotation threshold). Three / four / five-finger gestures (devices that support multi-touch deep enough; Windows PTP carries all five).
Tier 3 — shape templates. Five built-in shapes (Circle, Square, Triangle, Z, Checkmark) detected by a $P-recognizer with an adjustable match threshold. Lower threshold = stricter matching (fewer false positives), higher = looser (more matches).
Each gesture surfaces a descriptor in the mapping picker. Bind Touchpad N SwipeUp to a button to fire on swipe, Touchpad N PinchAxis to an analog axis to read the continuous pinch magnitude, etc.
Profile-scoped: captured custom gestures travel with whichever profile is active when they're recorded. Each gesture has a name, finger count, and the recorded finger path(s).
Click Record New Gesture to open the recorder dialog. The dialog mirrors the live touchpad surface; trace your gesture, click Save, give it a name. The new gesture appears in the list and surfaces a Touchpad N CustomGesture <name> descriptor in the mapping picker.
A device whose CapType is Touchpad (PTP, web touchpad client, overlay) but isn't currently selected as the active mapping device still drives the recorder, so you can capture a gesture on the touchpad device while the slot's primary device is something else.
The same physical touchpad in two slots carries two independent gesture engines. PadForge keys the gesture context by (slot, device, padIdx), ticks the recognizer separately per slot with that slot's own settings, and exposes a separate FiredGesturesThisFrame set to each slot's mapping evaluation.
Practical consequence: if you assign a DualSense to slot 0 with "4-way swipes ON" and to slot 1 with "4-way swipes OFF," a horizontal swipe fires Touchpad 0 SwipeRight only on slot 0's mapping rows. Slot 1's toggle truly disables 4-way for slot 1. It doesn't accidentally inherit slot 0's behavior. The same per-slot scoping applies to every Stick / D-pad / Mouse setting on this tab.
PTP system touchpads (laptop trackpads enumerated via Raw Input) don't have a physical click button, so the Touchpad N Click descriptor is omitted from their picker entries and their auto-map. DualSense / DS4 / web touchpad / overlay devices all expose Click.
Every row carries a per-field Reset button (the small ✕ on the right). Each card carries a Reset All button in its header that restores the card's defaults in one click.
- Button and Axis Mappings for binding touchpad descriptors to virtual outputs.
- Virtual Controllers for which output types accept touchpad-finger-as-mouse / stick / D-pad.
- Web Controller for using a phone screen as a touchpad source.
- Dashboard for the Touchpad Overlay (transparent on-screen touchpad surface).