Adaptive triggers
Each trigger (L2 and R2) can run one effect at a time. You build the effect with a DS Make Trigger ... node, apply it with DS Set Trigger Effect and send it with DS Update Output.
DS Set Trigger Effect takes a Hand: Left Trigger, Right Trigger or Both Triggers. DS Stop Trigger removes the effect.
Units
All effects share the same units, so you can reason about them without knowing the HID format:
| Unit | Range | Meaning |
|---|---|---|
| Zone (position) | 0–9 | The trigger travel split into 10 zones. 0 is released, 9 is fully pressed. |
| Strength | 1–8 | Resistance force. 1 is barely there, 8 is the strongest the motor can push. |
| Amplitude | 1–8 | Vibration intensity. |
| Frequency | 1–255 | Vibration frequency in Hz. |
You can't send an invalid effect:
- Values out of range are clamped.
- If an
Endzone is not after itsStart, End becomesStart + 1. - A strength or amplitude of
0turns the effect off.
Effects
Feedback
Constant resistance from a zone to the end of the travel. The simplest "heavy trigger".
| Parameter | Range | Default |
|---|---|---|
| Position | 0–9 | 3 |
| Strength | 1–8 | 5 |
Feels like: a stiff spring that starts at Position. Use it for: a heavy lever, a brake pedal, a tense bowstring that never releases.
Weapon
Resistance between two zones that gives way with a click, like a real gun trigger.
| Parameter | Range | Default |
|---|---|---|
| Start | 2–7 | 4 |
| End | 3–8 | 7 |
| Strength | 1–8 | 8 |
Feels like: a wall between Start and End, then a snap. Use it for: single-shot weapons, a camera shutter. Fire the shot when the trigger axis passes the End zone, so it lands on the click.
Vibration
The trigger vibrates from a zone to the end of the travel.
| Parameter | Range | Default |
|---|---|---|
| Position | 0–9 | 0 |
| Amplitude | 1–8 | 5 |
| Frequency (Hz) | 1–255 | 30 |
Feels like: a buzz in the finger once you pass Position. Use it for: automatic weapons, a chainsaw, an engine at idle.
Slope Feedback
Resistance that ramps linearly from one strength to another between two zones, then stays at the end strength.
| Parameter | Range | Default |
|---|---|---|
| Start | 0–8 | 0 |
| End | 1–9 | 9 |
| Start Strength | 1–8 | 1 |
| End Strength | 1–8 | 8 |
Feels like: a trigger that gets harder the further you press (or softer, with Start Strength above End Strength). Use it for: a car brake, drawing a slingshot, pressure that builds.
Multiple Position Feedback
A separate resistance for each of the 10 zones.
| Parameter | Range |
|---|---|
| Zone Strengths | 10 values, 0–8 each (0 = no resistance in that zone) |
Feels like: steps or bumps along the travel. Use it for: gear notches, a ratchet, a multi-stage switch. Pass 10 values: missing ones count as 0 and extra ones are ignored.
Multiple Position Vibration
A separate vibration amplitude for each of the 10 zones, at one frequency.
| Parameter | Range |
|---|---|
| Frequency (Hz) | 1–255 |
| Zone Amplitudes | 10 values, 0–8 each (0 = no vibration in that zone) |
Feels like: a vibration that grows or changes as you press. Use it for: an engine revving with the throttle, a weapon that spins up.
Bow
Tension between two zones that snaps back when you let go, like a bow string.
| Parameter | Range | Default |
|---|---|---|
| Start | 0–7 | 1 |
| End | 1–8 | 6 |
| Strength | 1–8 | 6 |
| Snap Force | 1–8 | 8 |
Feels like: pulling a string, then a kick back towards you on release. Use it for: bows, slingshots, a spring-loaded lever. Fire on release.
Galloping
A two-beat pulse between two zones, like hooves or a heartbeat.
| Parameter | Range | Default |
|---|---|---|
| Start | 0–8 | 0 |
| End | 1–9 | 9 |
| First Foot | 0–6 | 2 |
| Second Foot | 1–7 | 5 |
| Frequency (Hz) | 1–255 | 3 |
First Foot and Second Foot place the two beats inside each cycle (the second after the first); Frequency is how many cycles per second.
Feels like: a "da-dum, da-dum" in the trigger. Use it for: riding, a heartbeat when low on health.
Machine
Vibration alternating between two amplitudes between two zones.
| Parameter | Range | Default |
|---|---|---|
| Start | 0–8 | 0 |
| End | 1–9 | 9 |
| Amplitude A | 0–7 | 3 |
| Amplitude B | 0–7 | 7 |
| Frequency (Hz) | 1–255 | 30 |
| Period | 0–255 (tenths of a second) | 5 |
Feels like: a motor that surges every Period. Use it for: heavy machinery, a jackhammer, a minigun.
Off
No effect: the trigger moves freely. DS Stop Trigger does the same as setting an Off effect.
Legacy effects
These exist so that v1 projects can keep their tuning. Their parameters use the raw 0–255 scale of v1.
| Node | Parameters | Notes |
|---|---|---|
| DS Make Trigger Continuous Resistance (Legacy) | Start, Force (0–255) | Same bytes as v1 Make Continuous Resistance. Prefer Feedback. |
| DS Make Trigger Section Resistance (Legacy) | Start, End, Force (0–255) | v1 never applied the force here; v2 does, so it feels stronger. Prefer Weapon or Slope Feedback. |
Effect Ex (Effect Type = Effect Ex (Legacy, Deprecated) on the struct) | Start, Keep Effect, Begin/Middle/End Force, Frequency | Deprecated. Use Vibration or Machine. |
Raw bytes
DS Make Trigger Raw sends a trigger block as you write it: a mode byte followed by up to 10 parameter bytes. Use it for modes the plugin does not wrap, or to reproduce bytes from another tool.
Weapon, start 4, end 7, strength 8: 25 90 00 07
The bytes are not validated. The format is the one documented by the community reverse engineering of the DualSense (Nielk1's TriggerEffectGenerator, MIT).
Building the struct directly
FDS5TriggerEffect is a normal Blueprint struct. Make FDS5TriggerEffect shows only the fields used by the selected Effect Type, which is handy when the effect comes from a data table or a variable. In C++ use the factories:
const FDS5TriggerEffect Weapon = FDS5TriggerEffect::MakeWeapon(4, 7, 8);
const FDS5TriggerEffect Engine = FDS5TriggerEffect::MakeMachine(0, 9, 3, 7, 30, 5);
Tips
- Change effects on events, not every frame. The plugin skips writes that change nothing, but there is no reason to rebuild the effect on Tick.
- Match the effect to the action. Put a Weapon effect on R2 only while a gun is equipped, and stop it in menus and cutscenes.
- Feel it on the hardware. Effects that look similar on paper feel very different. Tune them with a controller in hand, in the demo or in PIE.
- Force Feedback Effect assets can also drive trigger resistance on a timeline. See Force Feedback Effects.