Joy Control

Joy Control – precise gamepad control for simulators

⬇ JoyControl.rar (15 MB)

⬇ JoyControl-EN.pdf (720 KB)

ENGI Live JoyControl is a Windows program that acts as an intermediary between your controller and the game. It reads input from DualShock 4, DualSense, Xbox (XInput) controllers, steering wheels, joysticks (HID/DirectInput), and keyboards. The program processes the input signal and sends it to the game as a virtual Xbox 360 gamepad via the ViGEmBus driver.

The program is invisible to the game. The game sees a standard, regular controller, so the settings work in any simulator. No mods are required, and there's no need for developer support, as the game files are not modified.

The core idea of the program is simple. The trigger on a gamepad has a travel distance of about 2 cm, while the accelerator pedal in a car has a travel distance of about 10 cm. The joystick deflects by 1.5 cm, and the steering wheel rotates by half a revolution. This is precisely why it's so difficult to precisely control the throttle and brakes on a gamepad: the finger travels the entire range from 0 to 100% in 50-80 milliseconds, causing the car to either spin out of control or lock up the wheels. Joy Control restores the proper travel distance to the controls. The program achieves this not through visual representations, but through actual timing and response curves.

How signal processing works:

Each value goes through a processing pipeline, and the output is a customized controller:

  • Dead Zone. The program sets all raw values below the threshold to zero, which means that jitter and wear and tear are not reflected in the gameplay.
  • Trigger interaction. One trigger is subtracted from another, multiplied by a factor.
  • Sensitivity curve. It defines the shape of the response: a gradual start or a sharp one.
  • Threshold and output limit. Any value below "Min" is set to zero, while the remaining range is stretched to the full available range; "Max" limits the output from above.
  • Smoothing segments. These define the rate of change in milliseconds per unit, separately for the press and release actions.
  • Macros and Action Mappings. One control element affects another.
  • Virtual Xbox 360 gamepad. The processed input is sent directly to the game.

The controller is polled at a frequency of approximately 120-125 Hz. All delays are calculated using a high-precision timer with time accumulation, so a step of 0.1 milliseconds per unit is processed correctly even between polling frames.

Features of the program:

  • Supports any input devices. PS4 and PS5 consoles are automatically recognized. Xbox controllers connect via XInput. Steering wheels and joysticks work with HID and DirectInput. A keyboard can be used as a substitute for a gamepad. You can connect as many joysticks as you like: each one has a unique ID and its own settings, so even two identical gamepads can be configured separately.
  • Independent trigger adjustment. The brake and accelerator are adjusted separately, not with a single slider controlling both.
  • Up to 10 smoothing segments. These segments are defined within a range of 0 to 255, separately for the "pressed" state and the "released" state, and the delay for each segment ranges from 0.1 to 1000 milliseconds per unit.
  • Sensitivity Curves. For the triggers, the sensitivity curve can be adjusted from -20 to +20. For each axis of the analog sticks, the sensitivity curve can be adjusted from -10 to +10.
  • Full stick configuration. This allows you to adjust the internal and external dead zones, limit the range of movement along the X and Y axes, set the full travel range, and enforce a maximum value for the axis.
  • Macros. The modes "Follow," "Hold," "Impulse," "Toggle," "Turbo," "Off," and "Sequence" are available. "Sequence" allows for a chain of up to 16 steps with customizable timing. Each rule can have up to four conditions: buttons, triggers, and analog sticks with defined ranges, so a combination like "L1 pressed and L2 partially depressed" can be defined by a single rule. Features include reverse functionality, priority settings, delays in microseconds, and combination methods—"Larger of the two," replacement, or addition—including combinations with other macros. Linking allows the result of one rule to trigger another.
  • Action mappings. Any input can be linked to any output, and you can specify a trigger threshold, a hold requirement, and delays before and after the action.
  • Real-time oscilloscope. The graph shows the raw data from the controller in gray for the last 3 seconds, while the colored line represents the data being sent to the game. This allows for clear visualization and eliminates guesswork during setup.
  • Interactive image of a gamepad. Clicking on a trigger, stick, button, or touchpad opens a window with its settings.
  • Profiles. The settings are stored in a local SQLite database. Each profile has a unique 16-digit code, and data exchange with files is done using the JSON format. It's convenient to create a separate profile for each game. The settings for each joystick are saved in a separate file, which can be loaded into any joystick for any profile.
  • Supports 14 interface languages. The program consists of a single executable file and does not require installation.
  • Autosave. Any changes are applied and saved immediately, so you can adjust settings without leaving the game.

Why this is better for playing simulators

Standard button remapping programs only change the response curve, i.e., the shape of the input. Joy Control also changes the speed: the number of milliseconds it takes for the signal to reach its target value at each point in the range. This represents a fundamentally different level of control, and it's precisely this that solves common problems with simulator games using a gamepad.

  • The car doesn't break into a skid when you press the accelerator. The finger instantly pressed the trigger, and the power delivery increases smoothly, so the car accelerates as if you were gently pressing the pedal.
  • The braking force is precisely controlled, right at the threshold of locking. The first 30% of the braking distance is rapid, with an immediate response, while the last 30% is slower. At the very end of the braking process, it's possible to reach the point where the wheels are about to lock up, something that is physically impossible to achieve manually.
  • The release trigger is configured separately from the activation. This accelerator or brake pedal is not released at the same rate at which it is pressed. The smooth release of the brake when entering a turn, and the gentle easing off of the accelerator when climbing a hill, are each configured independently.
  • The smooth operation does not hinder emergency procedures. Individual switches disable the delay in the extreme positions: as soon as the trigger is fully released, the brake is instantly disengaged.
  • The steering wheel exhibits inertia. A sudden movement of the steering wheel doesn't result in an immediate turn of the wheels because the steering mechanism has its own built-in smoothing features for both steering input and return to the center position.
  • Steering becomes more precise. Limiting the range on the X-axis reduces the full range of motion of the stick to 60-70% of the turning angle, and the same distance traveled by the finger now provides twice the precision.
  • Everything works the same way in all games. The processing happens before the game starts, at the level of the virtual controller, so there's no need for any settings within the game itself, or for any mods.
  • The left foot remains on the brake. Subtracting one trigger from another with a multiplier replicates the behavior of systems where the accelerator and brake conflict, or, conversely, allows for gentle braking without releasing the accelerator.

Accelerator and Brake Settings

The left trigger (L2 / LT) is the brake, and the right trigger (R2 / RT) is the accelerator. Each is configured in its own window, and all parameters are independent.

ParameterWhat it does:How to Configure for a Simulator
Dead zoneA raw value below the threshold is considered zero.On a new gamepad, the dead zone is typically set between 3 and 8 units. On a worn trigger that tends to "creep" forward, the dead zone should be increased to 10-15 units.
Minimum and maximum"Min" is the entry threshold: below this value, the output is zero, and the remaining range is mapped to 0-255. "Max" limits the output from above."Min" settings (5-10) eliminate the rattling of a worn trigger without shortening the travel distance. For a rally car or a powerful rear-wheel-drive vehicle, the "Max" setting is set to 190-210 out of a possible 255, which effectively prevents full throttle.
Sensitivity curveThis setting defines the response curve within a range of -20 to +20. A negative value provides a smooth start and precision at the beginning of the travel, while a positive value provides a sharp transition to maximum output.For the accelerator pedal, the curve level is typically set between -6 and -10, while for the brake pedal, it's set between -3 and -6. Positive values are rarely needed, for example, for a button-operated handbrake.
Touch areasThis feature allows you to define up to 10 segments within a range of 0 to 255, with each segment having its own delay in milliseconds per unit. Outside of these segments, the value changes instantly, while at the segment boundaries, the delays are added together.As a guideline, 255 units at 1 millisecond each result in approximately 0.26 seconds for the entire travel. For the accelerator pedal, a setting of 0.3 to 2 milliseconds per unit is common, while for the brake pedal, a setting of 0.5 to 3 milliseconds is typical.
Release areasThis feature allows you to define a separate set of segments for the decreasing portion of the value.Typically, the release time is faster than the press time: from 0.5 to 1 millisecond per unit. To achieve smooth brake release during cornering, the delay is increased at higher values.
Instant zero and instant maximumThis feature disables the smoothing effect when the trigger is fully released or fully pressed.For the brake, it is enabled for emergency braking; for the accelerator, it is usually disabled.
Trigger subtraction and multiplierThe brake reduces the accelerator input, or vice versa, by a specified factor.A multiplier from 0.5 to 1.0 replicates the braking action of the left foot and allows for throttle control.

Pre-configured trigger settings:

PresetActionDescriptionPurpose
Smooth braking0–80: 0,5 · 80–180: 1,5 · 180–255: 3,0120–255: 1,0 · 0–120: 0,5Ring racing and fine-tuning near the lock-up threshold.
Smooth gas0–60: 0,3 · 60–200: 1,0 · 200–255: 2,00–255: 0,8Rear-wheel drive and cornering without wheelspin.
How ABS works0–128: 0,2 · 128–255: 2,5InstantlyQuick braking initiation and gradual pressure increase.
How are you0–128: 2,5 · 128–255: 0,2InstantlySlow power delivery at the start and a wide, unrestricted upper range.

The numbers in the table represent the delay in milliseconds for each output unit. The preset serves as a starting point: from there, adjustments are made for specific vehicles, and the results are observed on an oscilloscope, where the gray line represents the input, and the colored line represents the output received by the game.

Joystick Configuration

In racing simulators, the left joystick functions as the steering wheel, while the right joystick controls the view or camera. Each joystick allows for configuration of geometry (dead zones, range, and curve), as well as smoothness across different sections, independently for the X and Y axes.

ParameterWhat it does:How to Configure for a Simulator
Internal dead zoneEliminates drift in the center.From 3% to 6% for a new joystick, and from 8% to 12% for a worn joystick. The lower the value, the more precisely the vehicle maintains a straight line.
Outer dead zoneCuts off the extreme end, so the maximum value is reached slightly before the physical limit.From 92% to 97%: This ensures a full rotation is achieved across the entire range, including diagonals.
Maximum range along the axesLimits the output angle along the X or Y axis.This is the primary setting for steering: from 60% to 75% along the X axis. The steering wheel stops turning fully, and precision increases significantly.
Full range of motionAfter trimming the edges, it stretches the signal back to its maximum.These are activated when a full range of motion is needed with a large dead zone.
Sensitivity along the axesThis sets the curve from -10 to +10. A negative value stretches the center and creates a smoother response, while a positive value makes the reaction more abrupt.For steering, the curve level along the X axis should be set between -4 and -7. For camera control with the right stick, a setting between +2 and +4 is recommended for quick head rotation.
Deviation areasThese settings control the smooth transition away from the center. The amplitude ranges from 0 to 255, representing the full range of motion from the center, and each segment has its own flags for the X and Y axes.For steering, a delay setting of 0-60 is suitable: 0.4 milliseconds for 0-60, 1.2 milliseconds for 60-160, and 2.5 milliseconds for 160-255 per unit. The stick responds quickly near the center but becomes sluggish at the extremes.
Return areasIt provides a smooth return to center.From 0.5 to 0.8 milliseconds per unit across the entire range, this simulates the self-centering of the wheels. For the camera, the return is faster than the deviation.
Maximum value along the axisFor any deviation along the axis, it outputs the maximum value within the range.Suitable for arcade steering and games that require digital rotation.
Complete disconnection of the joystickThe stick is not transmitted to the game, but its macros continue to function.It's convenient when the steering wheel is used for steering, and the stick is only needed as a source of macros.

The X and Y axes can be configured together or separately: each section has "X" and "Y" flags, and overlapping sections add the delays. An oscilloscope with a scale from -255 to +255 is available next to the settings, allowing you to see how much the output lags behind your finger movement.

Requirements:

  • Windows 10 or 11 (x64 architecture).
  • ViGEmBus driver version 1.22.0. The program checks for its presence and offers a one-click installation.
  • The controller can be connected via cable, adapter, or Bluetooth.

The program runs in trial mode for 20 minutes per session. Full functionality is unlocked with a perpetual engi.live license.

Illustrated guide: where to click what

Below is a step-by-step description of all program windows with screenshots. This guide can also be downloaded as a PDF – the button is located at the top of the page.

1. Drivers: ViGEmBus and HidHide

  • ViGEmBus is a virtual gamepad driver. Without it, the program will not create an Xbox controller. In the status bar at the bottom of the window, it should display ViGEmBus driver: OK. If it doesn't, an "Install" button will appear there.
  • HidHide is not a mandatory component. It is only needed if the game detects both a physical gamepad and a virtual one simultaneously, which can cause the character to appear twice. More details can be found in section 15.
Games that work through XInput (most modern games) do not detect the physical DualShock controller at all – only the virtual gamepad from JoyControl is recognized. HidHide is not needed for these.

2. Main Window

Main window: At the top, you'll find the profile and general buttons. On the left are the joysticks, and on the right is an image of the gamepad.
  • The top panel includes options for selecting a profile, accessing the "Profiles..." menu, saving and loading entire profiles, managing action mappings, resetting to the default settings, and selecting the interface language.
  • On the left are the input devices. This section displays all the configured joysticks, their IDs, checkboxes, and options for group operations.
  • On the right is a diagram. It shows, in real-time, what data the game is receiving from the selected controller. You can click on the diagram: clicking on a trigger, stick, or button will open its corresponding settings.
  • Below the image are the macros for the selected joystick: each icon represents a rule, and clicking on it reveals its source.
The divider between the left and right sections can be moved with the mouse. The window size and the position of the divider are saved when you release the mouse button.

3. Multiple Joysticks and their IDs

The program supports any number of joysticks. Each joystick is assigned a unique ID: for Bluetooth controllers, this is their MAC address, so even two identical DualShock controllers will be recognized as distinct. Using this ID, the program automatically finds the joystick's settings upon connection, even if it's plugged into a different USB port.

Device list: ▶ – indicates the joystick that is currently being configured.
List itemWhat it does:
×Removes the joystick from the profile along with its settings.
First checkboxFunctionality: A virtual Xbox controller is created for the joystick.
Second checkboxSelected: Participates in group operations.
NameClick: configure this joystick. Double-click: rename.
IDClick: copy the ID to the clipboard.
Where to click: Click on the "Joystick ID" field. A green "copy" icon will briefly appear, indicating that the full ID has been copied to the clipboard.
Confirmation of ID copy.
Important. All of the settings menus apply to the selected (▶) joystick. If a joystick is disconnected, the "Configuring" line will turn orange with a warning "this joystick is not connected" – any changes you make will not affect the controller you are currently holding. Click on the name of the connected joystick.

Batch operations

  • Apply to selected — Copies all settings from the selected (▶) joystick to the joysticks that have the "selected" checkbox enabled.
  • Select all / Clear all — Quickly set or clear all checkboxes.
  • Joystick → file - Save the settings of a specific single joystick to a separate file with the extension .joy.json.
  • File → Joystick — Loads settings from a file, applying them only to the selected joystick. If other joysticks are selected, the program will ask if you want to apply the settings to all of them. This option also works with standard profile files: if the file contains settings for multiple joysticks, the program will prompt you to choose which joystick's settings to use.
Windows only allows games to recognize a maximum of four XInput gamepads. The program supports more, but the game will only detect the first four.

4. Profiles and Files

A profile is a complete set: all the joysticks and the settings for each. You can have as many profiles as you like, for example, for different games.

Where to click: Click on "Profiles…" in the top menu bar.
Profile window: for each profile, you can see the number of joysticks, and below are the joysticks selected for that profile, along with their IDs.
  • Activate, New, Duplicate, Rename, Delete — actions related to profiles.
  • Save to file… / Load from file… — Saves/loads the entire profile.
  • The "One joystick's settings" block allows you to save or load a specific joystick's configuration file into any profile, even an inactive one, and to remove it from the profile.
  • ●: The joystick has its own settings. ○: The joystick has not been configured and is using the default settings of the profile.
Each joystick has its own associated file, and when saving again, the program will suggest overwriting the same file.

5. L2 / R2 Triggers

Where to press: Click on the L2 / LT or R2 / RT button in the image.
Right Trigger Settings: All changes are applied and saved immediately.
ConfigurationHow it works
MinInput Threshold: Anything below this value is treated as zero, and the remaining range is stretched across the full 0-255 scale. Example: Setting Min = 10 eliminates noise, but the trigger still provides full throttle.
MaxOutput Limit: The game will never receive a value higher than this.
Dead zoneRaw values below the threshold are converted to 0 without scaling.
Curve-20: Provides a smooth start and precise control at the beginning of the trigger's movement. +20: Provides a more responsive and immediate reaction.
Instantly to 0 / to the maximumThe trigger, when fully released or fully pressed, activates without delay.
Subtract L2 from R2For racing: the brake reduces the throttle, and the multiplier determines the force. There is also a reverse option.
PRESS / RELEASESmoothing Segments: In the selected portion of the trigger's range, the value increases or decreases not instantaneously, but with a delay of milliseconds per unit. Up to 10 segments can be used, and overlapping segments are combined.
How to add segments: + Segment — adds a single segment; Split 0–255 into N — creates N equal segments immediately. The live graph at the top shows how the output lags behind the trigger.

6. Sticks and Drift

Where to click: Click on either the left or right stick in the image.
Left Stick Settings: On the left, you'll find dead zones and range settings; on the right, you'll find smoothing segments and a live graph.
  • Enable remap / custom deadzones - This is the main checkbox. Without it, the dead zone settings will not be applied.
  • Inner dead zone – This setting eliminates stick drift in the center position. It is typically set between 8% and 15%.
  • Outer dead zone – the extreme end of the stroke path, where the stick is considered to be fully extended.
  • Max. X/Y range, Stretch, Always maximum - used to limit or expand the movement range along each axis.
  • X/Y Sensitivity - response curve.
  • OFFSET / RETURN — Smoothing segments, similar to those found in triggers; each segment has X and Y checkmarks indicating which axes it affects.
If the stick is drifting, and a macro is assigned to it, the drift will trigger the macro. Enable the remapping feature with the internal dead zone – when the stick is at rest, it should output a clean zero value.

7. Macros: The Basics

A macro is a rule that states: "If source is in a certain state, then perform action on another element." The source can be:

  • Trigger condition or trigger – the macro executes as long as the value within its specified range meets the condition.
  • Button — The macro runs as long as the button is pressed (section 11).

Macro for a trigger or switch

  1. Open the stick or trigger window and create a region.
  2. Click on the plot number1 +.
  3. An image will appear showing the target. Click on the target: this could be a button, a trigger, or a joystick. If it's a joystick, then select the direction.
Choosing the macro's target.
Below the selected cell, a row of macro options appeared: "Enabled ✓", "Target", "Mode", "Output Range", "Priority P", "⚙ - All Parameters", "× - Delete".

All rule parameters

Where to click: The button in the macro bar.
"Macro options" window.
ParameterMeaning
GoalWhich element is the macro acting upon?
ModeWhat exactly happens with the target – Section 8.
Stick directionFor the stick source: any, but only up/right or only down/left.
Output from / toWhat values are assigned to the target. Reverse — the source is increasing, the target is decreasing.
Combine with physicalLarger of the two; Replace physical; Add – this adds to the value you are physically pressing, and to other macros, with the same priority and the same "Add" mode.
PriorityIf multiple macros are acting on the same target, the macro with the higher priority wins. In case of a tie, "Disable" overrides all others.
DelaysActivation and release times in microseconds: 10,000 = 10 milliseconds. Activation means the source must remain within the specified range for that duration.

8. Macro Modes

ModeWhat it does:Example
FollowThe target replicates the source: its range is recalculated into the target's output range. This only applies to stick or trigger sources.The stick smoothly presses the accelerator.
HoldWhile the source is active, the target is pressed with the value "Output Delay."L1 holds L2 down.
ImpulseWhen entering a range, the target is pressed once for a specified duration.A short press triggers an action when the stick is moved rapidly.
SwitchEach input toggles the target on or off.One press crouches, another press stands up.
TurboWhile the source is active, the target is pressed and released with a specified period.Auto-fire.
DisableThe target is locked, even if physically pressed. This also applies to the entire stick.Disable the stick while L2 is held down.
SequenceSequence of actions: element, value, duration, pause – section 10.A combo attack with a single button.

9. Combinations: conditions

The conditions address the question of "what to do when two or more elements are selected." The macro will only execute if all the conditions are met. A condition can be:

  • button - it is pressed;
  • Trigger or stick — its value falls within a certain range, for example, "L2 button pressed more than halfway: 128–255".
  • Any of them with a checkmark indicating the opposite means that the button is not pressed or the value is outside the specified range.

One rule: up to four conditions.

Where to click: ⚙ In the macro settings, go to the CONDITIONS block → + Add condition → click on the element in the image. For analog inputs, specify a range.
The macro only functions while the L1 and buttons are pressed, and the L2 button is pressed more than halfway.
Two-button combo "L1 + R1 → action": open the R1 button macros (section 11), add a macro with the desired action and the L1 condition. For three buttons, add another condition.

10. Sequences

A single trigger initiates a sequence of actions performed over time. Each step includes: an element, a value (for a button, any value greater than zero indicates it's pressed), the duration, and a pause. Up to 16 steps can be defined. The loop checkbox enables the sequence to repeat as long as the source and conditions remain active.

Where to click: ⚙ on the macro → Mode: Sequence+ Add step → click on the element in the image. The arrows ↑ ↓ change the order, and × deletes the step.
"Sequence" mode: the common target and exit fields are hidden; each step has its own. The conditions continue to work.
Three steps: × → □ → △, each lasting 60ms with a 60ms pause.

11. Button macros

Where to click: Click on the button shown in the image (×, ○, □, △, L1, R1, D-pad, Share, Options, PS button, touchpad).
Button × / A: while pressed, L2 is held down for up to 255.
  • + Macro (select on controller) - Add a rule and choose a target.
  • Completely disable the button — The button is not assigned to any in-game function, but its macros continue to operate. This allows you to completely reassign the button.
  • All modes, conditions, and sequences work the same way as with the sticks and triggers.

12. All macros and linking

Where to click: Click the "Settings" button located below the image.
All macros for the selected controller are in one table.
  • Enable, priority, ⚙, and × are directly in the table. Clicking on the source opens its window.
  • Conflicts are highlighted in red: This indicates situations where two macros are targeting the same object with the same priority, and it is unclear which one will take precedence.
  • Delete all macros — start with a clean slate.
  • Link Macros: The result of one rule becomes the source for another. For example, "× → L2" and "L2 within range → R1" will work as a chain triggered by a single press of ×. By default, this feature is disabled, so existing profiles function as they did before. The depth is limited to three levels to prevent infinite loops.

The macros are displayed as shown in the image

  • The green lines indicate the path from the source to the destination. The sequence of lines leads to each element, and the labels #1, #2, and #3 represent the step numbers.
  • Stripes below the element — Scale from 0 to 255: The green stripe near the source indicates the activation range, while the orange stripe near the target indicates the output range.
  • Green dot - This element contains macros.

13. Action mappings

Simple remapping of "input → output" with a trigger threshold, hold duration, and timing – common to the profile.

To add a new action mapping, click on "Action mappings" in the top panel and then click "Add."
Input element, output element, and mode: can be triggered while held, for a set duration, or with a delay after release.
For most tasks, macros (sections 7-12) are more convenient: they offer more modes, conditions, sequences, and a more visual representation.

14. Pre-made recipes

Eliminate stick drift

Stick → Enable remapping / custom dead zones → Internal dead zone: 10-12%. Check using the live graph: when at rest, the output line should be at zero.

Eliminate trigger jitter without losing the full range of motion

Trigger → Min = 5-10. Any value below this will be set to zero, and the remaining range will extend up to 255.

Smooth acceleration for racing games

R2 → Split the range 0-255 into N = 3 segments within the "PRESS" block, with a delay of 1-3 ms per segment in the initial section. Use a curve of -5 to -10 for precise start of movement. Optionally, subtract L2 from R2.

Two-button combination: L1 + × → R2

Press the "X" button, then "+", then "Macro", and select "R2" as the target. Set the mode to "Hold". Then, go to the settings (⚙) and set the condition to "L1". Without pressing "L1", the "X" button will function normally.

One button triggers a series of actions

Button → Macro → ⚙ → Mode: Sequence → Steps: × → □ → △, with a duration of 60/60 milliseconds. For a continuous sequence, select loop.

Auto-fire

Pressing the R1 button triggers a macro that sets the target to R2, then activates Turbo mode with a duration of 80-120 milliseconds.

Two players using two controllers

Connect both devices – each will appear in the list with its ID. Configure the first one, check the box next to the second one to select it, and then click "Apply to selected." After that, each device can be configured individually.

Transfer settings to a new controller

Old joystick → Joystick → file. New joystick — click on the name → File → joystick.

15. Troubleshooting: If something isn't working

SymptomCause and solution
Edits are not workingMost likely, a disabled joystick is being configured – the "Configuring" line is orange. Click on the name of the connected joystick.
The trigger is firing on its ownCheck the macros assigned to this trigger on the joystick: joystick drift may be activating the macro. You need to adjust the joystick's dead zone (section 6) or set the source range for the macro to 10.
The character "duplicates" in the gameThe game recognizes both real and virtual controllers. To configure this, install HidHide: go to the Applications tab, click the "+", and add "JoyControl.exe"; then go to the Devices tab and check the box next to "Wireless Controller"; finally, reconnect the gamepad. The order is important: first, add the program to the whitelist, then enable the hiding feature.
The game does not detect the gamepadPlease check the ViGEmBus driver: OK status and ensure that the first checkbox indicating "working" is selected for the joystick.
The fifth joystick is not visible in the gameWindows limitation: XInput only allows games to recognize a maximum of four gamepads.
The second DualShock is not connecting via BluetoothDelete any old "Wireless Controller" entries in the Bluetooth settings. Reset the controller using a paperclip (there's a hole on the back near the L2 button) and put it into pairing mode by holding down the Share + PS buttons until the light flashes rapidly. Alternatively, simply connect it with a cable.