Skip to content

Commit 4f84d2b

Browse files
committed
md errors corrected
1 parent 127a3e6 commit 4f84d2b

File tree

3 files changed

+29
-10
lines changed

3 files changed

+29
-10
lines changed

.markdownlint.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Disable MD060 (table-column-style) - tables have variable content that conflicts with aligned/compact rules
22
MD060: false
3-
# Allow longer lines - reference docs and tables often exceed 80 chars
3+
# Allow longer lines - reference docs, links, and tables often exceed 180 chars
44
MD013:
5-
line_length: 180
5+
line_length: 300

CHANGELOG.md

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,13 @@ First release of **EDForceFeedbackXinput**. Changes since the original [EDForceF
1010

1111
### Added
1212

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.
1520
- **EDForceFeedbackSettingsEditor** – GUI editor for rumble strength, duration, and pulse settings. Edits `settings.json` in place.
1621
- **TestForceFeedback** – Test harness to verify rumble without running Elite Dangerous. Simulates events via key presses.
1722
- **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
2025
- **Pulse mode** – Option to pulse vibration on/off for events (e.g. Overheating).
2126
- **Event categories** – Settings grouped by Docking, Combat, Travel, etc.
2227
- **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.
2330

2431
### Changed
2532

@@ -28,10 +35,11 @@ First release of **EDForceFeedbackXinput**. Changes since the original [EDForceF
2835
- **Force file naming** – Event-specific names (e.g. `Status_Gear_True.ffe`) for granular rumble control.
2936
- **Console-only** – Removed WinForms GUI; main app is a console executable.
3037
- **Centralized versioning** – Single `Version` in `Directory.Build.props` for all projects.
38+
- **Project branding** – EDForceFeedbackXinput as the fork name across documentation.
3139

3240
### Removed
3341

34-
- **EDForceFeedbackConsole** – Legacy project; replaced by EDForceFeedbackXinput (SDK-style).
42+
- **EDForceFeedbackConsole** – Legacy project; replaced by EDForceFeedback (main app, SDK-style).
3543
- **Form1** – WinForms GUI; Settings Editor is the preferred way to configure.
3644
- **Resume stack** – Disabled to prevent indefinite rumble when rapid events fire.
3745
- **Duplicate event handling** – OnAllJson no longer double-fires Journal events.
@@ -42,9 +50,12 @@ First release of **EDForceFeedbackXinput**. Changes since the original [EDForceF
4250
- Duplicate rumble for Journal events (FSDJump, HullDamage, etc.) from redundant OnAllJson handlers.
4351
- TestForceFeedback firing both True and False effects when simulating transitions; now uses single `TriggerEvent` per key.
4452
- Emergency stop (key `s`) added to TestForceFeedback when rumble gets stuck.
53+
- MSB3270 processor architecture warning – ForceFeedbackGameInput targets x64 to match GameInputWrapper.
54+
- Debug build failure – BasicRuntimeChecks set to Default for C++/CLI (avoids /RTC1 and /clr incompatibility).
4555

4656
### Technical
4757

48-
- XInput backends: `XInputWinGamingBackend` (Windows 10+), `XInputSharpDXBackend` (fallback).
58+
- Rumble backends: `Microsoft.GameInput` (C++/CLI, preferred), `XInputHidBackend` (Raw HID, Xbox), `XInputSharpDXBackend` (fallback).
4959
- Event flow: Journal → typed handlers + OnAll; Status.json → EmitStatusEventsFromJson → EmitChangedStatusFlags.
5060
- Suppressed events (Docked, Undocked, Touchdown, Liftoff, Status, HeatWarning, HeatDamage, ShieldState) avoid duplicate vibrations.
61+
- Build: x64 platform; Visual Studio with C++ desktop workload required for GameInputWrapper.

README.md

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22

33
**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.).
44

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.
67

78
## Description
89

@@ -24,7 +25,8 @@ EDForceFeedbackXinput runs during an Elite Dangerous session (executable: `EDFor
2425
3. Extract the zip(s) to a folder of your choice (e.g. your Desktop or a dedicated game tools folder).
2526
4. Run `EDForceFeedback.exe` or `TestForceFeedback.exe` from the extracted folder.
2627

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.
2830

2931
Both programs include `settings.json` and the Settings Editor.
3032

@@ -52,7 +54,9 @@ You can also edit `settings.json` manually. See [Configuration](#configuration)
5254

5355
## Gamepad Rumble (Xbox & PlayStation)
5456

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.
5660

5761
### Connection Scenarios
5862

@@ -104,6 +108,7 @@ Run the program as usual. Rumble is sent to the physical controller, which Elite
104108
---
105109

106110
**Backend details:**
111+
107112
- **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)).
108113
- **Raw HID (fallback):** Xbox controllers only; bypasses XInput/DirectInput when the controller exposes HID and Elite is not locking it (e.g. wired/Bluetooth).
109114
- **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:
199204

200205
**Version:** Bump `Version` in `Directory.Build.props` for releases. See [CHANGELOG.md](CHANGELOG.md) for change history.
201206

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`).
203211

204212
1. Install [.NET SDK](https://dotnet.microsoft.com/download) 6.0 or later.
205213
2. Restore and build:

0 commit comments

Comments
 (0)