You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+15-4Lines changed: 15 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,8 +10,13 @@ First release of **EDForceFeedbackXinput**. Changes since the original [EDForceF
10
10
11
11
### Added
12
12
13
-
-**Xbox controller rumble (XInput)** – Native support for Xbox One, Elite Series 1/2, and Series X/S controllers. No custom drivers required.
14
-
-**Raw HID (HidSharp)** – Prefers raw HID output reports to bypass XInput/DirectInput; enables background rumble while Elite has the controller. Falls back to SharpDX XInput when HID is unavailable.
13
+
-**Microsoft.GameInput (preferred backend)** – C++/CLI wrapper (`GameInputWrapper`) for native GameInput API. Rumbles all connected gamepad devices. Supports Xbox and PlayStation (DualSense, DualShock 4). Requires Microsoft GameInput Redistributable.
14
+
-**Xbox controller rumble** – Native support for Xbox One, Elite Series 1/2, and Series X/S. No custom drivers required. Backend order: GameInput → Raw HID → SharpDX XInput.
15
+
-**PlayStation controller support** – DualSense and DualShock 4 via GameInput (native) or XInput emulation (DS4Windows, DualSenseX, Steam Input).
16
+
-**Raw HID (HidSharp)** – Fallback when GameInput unavailable. Bypasses XInput/DirectInput for Xbox controllers; enables background rumble while Elite has the controller via DirectInput.
17
+
-**SharpDX XInput** – Last-resort fallback for Xbox or PlayStation (when emulated as XInput).
18
+
-**AcquireExclusiveRawDeviceAccess** – Attempted at startup per device (v0 IGameInputDevice). Returns false on Windows—not yet implemented by Microsoft; future runtime updates may enable it.
19
+
-**Console diagnostics** – Startup log shows which backend is used (Microsoft.GameInput, Raw HID, or SharpDX XInput) and AcquireExclusiveRawDeviceAccess result for GameInput.
15
20
-**EDForceFeedbackSettingsEditor** – GUI editor for rumble strength, duration, and pulse settings. Edits `settings.json` in place.
16
21
-**TestForceFeedback** – Test harness to verify rumble without running Elite Dangerous. Simulates events via key presses.
17
22
-**Status.json handling** – Reads Elite's Status.json and emits events for flag changes (Gear, Hardpoints, Overheating, etc.).
@@ -20,6 +25,8 @@ First release of **EDForceFeedbackXinput**. Changes since the original [EDForceF
20
25
-**Pulse mode** – Option to pulse vibration on/off for events (e.g. Overheating).
21
26
-**Event categories** – Settings grouped by Docking, Combat, Travel, etc.
22
27
-**EVENT_REFERENCE.md** – Documentation of all event keys and sources.
28
+
-**Connection scenarios documentation** – Wired/Bluetooth vs Xbox Wireless Adapter; ReWASD + HidHide workaround for wireless adapter users.
29
+
-**GameInput Redistributable** – Automatically copied to output `redist\` folder in Release builds for distribution.
23
30
24
31
### Changed
25
32
@@ -28,10 +35,11 @@ First release of **EDForceFeedbackXinput**. Changes since the original [EDForceF
Copy file name to clipboardExpand all lines: README.md
+12-4Lines changed: 12 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,8 @@
2
2
3
3
**EDForceFeedbackXinput** is a fork of EDForceFeedback that adds Xbox and PlayStation controller rumble support. Elite Dangerous Force Feedback with gamepad rumble (Xbox, PlayStation via GameInput or XInput emulation) and DirectInput joysticks (MSFFB2, Saitek Cyborg, etc.).
4
4
5
-
This fork adds **native Xbox controller rumble** via GameInput, raw HID, or XInput (no custom drivers). Elite Dangerous locks the controller with DirectInput, so rumble only works reliably with **wired or Bluetooth** connections, or with a **workaround** when using the Xbox Wireless Adapter. Uses **EliteAPI v5.0.8** for journal and Status.json parsing.
5
+
This fork adds **native Xbox controller rumble** via GameInput, raw HID, or XInput (no custom drivers). Elite Dangerous locks the controller with DirectInput, so rumble only works reliably with **wired or Bluetooth** connections, or with a **workaround** when using the Xbox Wireless Adapter.
6
+
Uses **EliteAPI v5.0.8** for journal and Status.json parsing.
6
7
7
8
## Description
8
9
@@ -24,7 +25,8 @@ EDForceFeedbackXinput runs during an Elite Dangerous session (executable: `EDFor
24
25
3. Extract the zip(s) to a folder of your choice (e.g. your Desktop or a dedicated game tools folder).
25
26
4. Run `EDForceFeedback.exe` or `TestForceFeedback.exe` from the extracted folder.
26
27
27
-
5.**Xbox controller rumble not working?** First check [Xbox Controller Support](#xbox-controller-support-xinput)—rumble depends on your connection (wired/Bluetooth vs wireless adapter). If using GameInput, run `GameInputRedist.msi` from the `redist` folder (if included) to install or update the Microsoft GameInput runtime, then restart the program.
28
+
5.**Xbox controller rumble not working?** First check [Gamepad Rumble](#gamepad-rumble-xbox--playstation)—rumble depends on your connection (wired/Bluetooth vs wireless adapter).
29
+
If using GameInput, run `GameInputRedist.msi` from the `redist` folder (if included) to install or update the Microsoft GameInput runtime, then restart the program.
28
30
29
31
Both programs include `settings.json` and the Settings Editor.
30
32
@@ -52,7 +54,9 @@ You can also edit `settings.json` manually. See [Configuration](#configuration)
52
54
53
55
## Gamepad Rumble (Xbox & PlayStation)
54
56
55
-
EDForceFeedbackXinput simulates rumble using GameInput, raw HID, or XInput—no special drivers required. **Xbox controllers** work via all three backends; **PlayStation controllers** (DualSense, DualShock 4) work via GameInput (native) or XInput emulation (DS4Windows, DualSenseX, Steam Input). However, **Elite Dangerous locks the controller via DirectInput**, which blocks rumble from reaching the controller in most setups. Whether rumble works depends on how you connect the controller.
57
+
EDForceFeedbackXinput simulates rumble using GameInput, raw HID, or XInput—no special drivers required. **Xbox controllers** work via all three backends; **PlayStation controllers** (DualSense, DualShock 4) work via GameInput (native) or XInput emulation (DS4Windows, DualSenseX, Steam Input).
58
+
59
+
However, **Elite Dangerous locks the controller via DirectInput**, which blocks rumble from reaching the controller in most setups. Whether rumble works depends on how you connect the controller.
56
60
57
61
### Connection Scenarios
58
62
@@ -104,6 +108,7 @@ Run the program as usual. Rumble is sent to the physical controller, which Elite
104
108
---
105
109
106
110
**Backend details:**
111
+
107
112
-**Microsoft.GameInput (preferred):** Native GameInput API via a C++/CLI wrapper. Supports Xbox and PlayStation controllers (e.g. DualSense). Requires the [GameInput Redistributable](https://aka.ms/gameinput) (see [Deployment](#deployment)).
108
113
-**Raw HID (fallback):** Xbox controllers only; bypasses XInput/DirectInput when the controller exposes HID and Elite is not locking it (e.g. wired/Bluetooth).
109
114
-**SharpDX XInput (last resort):** Xbox controllers or PlayStation controllers emulated as XInput (DS4Windows, DualSenseX, Steam Input). May be blocked when Elite has exclusive DirectInput access.
@@ -199,7 +204,10 @@ For developers who want to build from the repository:
199
204
200
205
**Version:** Bump `Version` in `Directory.Build.props` for releases. See [CHANGELOG.md](CHANGELOG.md) for change history.
201
206
202
-
**Version check on startup:** EDForceFeedbackXinput and TestForceFeedback query the GitHub Releases API at startup. If a newer release exists, a message box suggests downloading it. The check compares the **release tag** (e.g. `v1.0.0`) against the built assembly version. **Zip filenames do not need to match** – use any names you like (e.g. `EDForceFeedback-v1.0.0.zip`). Only the tag on the GitHub release matters. When creating a release, set the tag to match `Version` in `Directory.Build.props` (e.g. `v1.0.0`).
207
+
**Version check on startup:** EDForceFeedbackXinput and TestForceFeedback query the GitHub Releases API at startup.
208
+
If a newer release exists, a message box suggests downloading it. The check compares the **release tag** (e.g. `v1.0.0`) against the built assembly version.
209
+
**Zip filenames do not need to match** – use any names you like (e.g. `EDForceFeedback-v1.0.0.zip`). Only the tag on the GitHub release matters.
210
+
When creating a release, set the tag to match `Version` in `Directory.Build.props` (e.g. `v1.0.0`).
203
211
204
212
1. Install [.NET SDK](https://dotnet.microsoft.com/download) 6.0 or later.
0 commit comments