mirror of
https://github.com/ddeverill/SteamlessController.git
synced 2026-10-23 07:02:16 -05:00
Actuate the DS4 touchpad at the same force as everything else (#96)
The DS4 touchpad press was the last thing still reading the firmware's click bit, which reports fewer than half of a thumb's presses and wants more force the more heavily the pad is already being rested on. That is what "having to press pretty hard to activate the trackpad" is, and why it reproduces for one person and not another: the threshold is force based, so thumb size and resting weight decide how hard is hard enough. It now takes the same resolved press every other binding uses, so every press in the app actuates at one threshold rather than the touchpad keeping its own, much heavier one. No sensitivity setting, which is what the report asked for. The pad already actuates about as lightly as it can without a resting thumb tripping it, so there would be nothing useful to turn down. If it still reads heavy after this, that is evidence kPadPressArea itself is too high for everyone rather than a reason to add a knob most people would never find. Also fixes a second reader of the same bit, found while checking for others: TapState asked it whether a contact had become a press, so a gentle press the firmware missed left the contact looking like a tap and fired the tap binding on lift, on top of the direction the press had already sent. With a tap bound to a mouse button that is a stray click on every soft press. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
10f3315877
commit
71a50df221
2 files changed
+19
-9
No files matched your search
@@ -1112,12 +1112,16 @@ void ControllerManager::ReadLoop(Slot* slot) {
|
||||
slot->rightPad.Directions(),
|
||||
slot->leftPad.ClickInCentre(),
|
||||
slot->rightPad.ClickInCentre(),
|
||||
// A tap is a contact that never became a press, and "became a
|
||||
// press" has to mean the same thing here as everywhere else. Asked
|
||||
// of the firmware's click bit instead, a gentle press it failed to
|
||||
// report would leave the contact looking like a tap, and firing
|
||||
// the tap binding on lift on top of the direction the press had
|
||||
// already sent.
|
||||
slot->leftTap.Update((tb3 & SteamController::BTN_TP_LT) != 0,
|
||||
(tb3 & SteamController::BTN_TP_LT_CLICK) != 0,
|
||||
tlx, tly),
|
||||
slot->leftPress.pressed, tlx, tly),
|
||||
slot->rightTap.Update((tb2 & SteamController::BTN_TP_RT) != 0,
|
||||
(tb2 & SteamController::BTN_TP_RT_CLICK) != 0,
|
||||
trx, try_),
|
||||
slot->rightPress.pressed, trx, try_),
|
||||
slot->leftPress.pressed,
|
||||
slot->rightPress.pressed,
|
||||
};
|
||||
|
||||
Reference in new issue
Block a user