-
-
Notifications
You must be signed in to change notification settings - Fork 10
๐ฎ HEX Mapping Reference: DualSense Triggers
Project: GamepadCore
Protocol: HID over USB/Bluetooth
Data Structure: 10-byte array per trigger
DualSense triggers accept a 10-byte buffer to configure resistance, vibration, and feedback effects. The first byte (Mode) determines the motor behavior.
Disables any resistance or vibration. Returns the trigger to its default state.
-
Structure:
[00 00 00 00 00 00 00 00 00 00]
Applies a constant resistance force starting from a specific position.
-
Structure:
[01] [StartPos] [Force] [00...00] -
Parameters:
-
StartPos: Initial resistance position (0-255). -
Force: Intensity of the resistance (0-255).
-
Simulates a mechanical "click" at the end of the trigger pull.
-
Fixed Structure:
[02 80 a0 ff 00 00 00 00 00 00]
Linear resistance between two points. Ideal for pedal simulators (gas/brake).
-
Hex Example:
21 fe 03 f8 ff ff 3f
Simulates the tension of a bowstring being pulled, with a "snap-back" point.
-
Structure:
[22] [Start_Zone] [Behavior] [Amplitude] -
Example:
22 82 00 3F(Strong bow from position 2 to 8).
A rhythmic effect that simulates horse steps.
-
Structure:
[23] [StartPos] [EndPos] [Footings] [Freq] -
Example:
23 02 02 1E 04
Simulates a firearm trigger with a clear "break point" before firing.
-
Example:
25 20 01 07
Continuous high-frequency vibration. Ideal for automatic weapons or power tools.
-
Structure:
[26] [StartPos] [Amplitude] [Frequency] ... -
Example:
26 f0 03 00 00 8f 3f 00 00 09
Complex rhythmic vibration with two amplitude levels and a configurable period.
-
Structure:
[27] [Start_Zone] [Behavior] [Amplitude] [Period] [Freq] -
Example:
27 02 02 3A 0A 05
To apply these effects via code using the IGamepadTrigger interface:
#include <vector>
#include <cstdint>
void ApplyMachineEffect(IGamepadTrigger* Trigger) {
if (!Trigger) return;
// Example: Machine Effect (0x27)
// The buffer must always be 10 bytes long
std::vector<std::uint8_t> Buffer = {
0x27, 0x02, 0x02, 0x3A, 0x0A, 0x05, 0x00, 0x00, 0x00, 0x00
};
Trigger->SetCustomTrigger(EDSGamepadHand::Right, Buffer);
}-
Start Zones: Values such as
0x82(Start),0x84(Middle),0x80(End) are commonly used to define where the effect begins. -
Padding: The buffer must always be 10 bytes. Fill with
0x00if the command is shorter. - Connectivity: Over Bluetooth, latency might affect the perception of high-frequency vibration effects (0x26/0x27). GamepadCore handles this automatically via connection-aware HID reports.
Documentation generated on 2026-01-05 for GamepadCore development support.