mirror of
https://github.com/Droid-Deck/DroidDeck.git
synced 2026-10-14 11:17:16 -04:00
Fix the QAM button doing nothing when the pad is an Xbox or PlayStation controller (#631)
This commit is contained in:
1 parent
e4c84e6e24
commit
2fe6ba36c4
2 files changed
+24
-5
No files matched your search
@@ -566,6 +566,16 @@ public class FakeInputWriter {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Whether the pad, as the Steam client now sees it, has a Quick Access button: a Deck's or a
|
||||
* Steam Controller's does, an Xbox or PlayStation pad's does not (libfakeinput drops the bit).
|
||||
* Unset is the Deck, libfakeinput's default.
|
||||
*/
|
||||
public static boolean padHasQam() {
|
||||
int type = padType;
|
||||
return type < 0 || type == PAD_TYPE_DECK || type == PAD_TYPE_STEAM;
|
||||
}
|
||||
|
||||
/**
|
||||
* Switches what the pad is to the Steam client while the session runs ([PAD_TYPE_DECK],
|
||||
* [PAD_TYPE_STEAM] or [PAD_TYPE_XBOX]); libfakeinput unplugs the old device and plugs in the new.
|
||||
|
||||
@@ -400,8 +400,8 @@ public final class PadBridge {
|
||||
boolean qamStarted = qamPressed && !systemQamPressed;
|
||||
systemGuidePressed = guidePressed;
|
||||
systemQamPressed = qamPressed;
|
||||
// A Deck controller's QAM button is held for as long as the touch one is.
|
||||
if (qamStarted && !SessionState.getDeckPad()) startQamChord();
|
||||
// A Deck or Steam Controller's QAM button is held for as long as the touch one is.
|
||||
if (qamStarted && !nativeQam()) startQamChord();
|
||||
else publish();
|
||||
}
|
||||
|
||||
@@ -426,9 +426,18 @@ public final class PadBridge {
|
||||
}
|
||||
}
|
||||
|
||||
/** Opens the client's Quick Access menu: a tap of the Deck's button, or the Guide-then-A chord. */
|
||||
/**
|
||||
* Whether the client's pad has its own QAM button to press. The Deck's sysfs being up is not
|
||||
* enough: the drawer can make the pad an Xbox or PlayStation one, which has none, and a press
|
||||
* of it never reaches the client.
|
||||
*/
|
||||
private static boolean nativeQam() {
|
||||
return SessionState.getDeckPad() && FakeInputWriter.padHasQam();
|
||||
}
|
||||
|
||||
/** Opens the client's Quick Access menu: a tap of the pad's button, or the Guide-then-A chord. */
|
||||
public synchronized void triggerQam() {
|
||||
if (!SessionState.getDeckPad()) {
|
||||
if (!nativeQam()) {
|
||||
startQamChord();
|
||||
return;
|
||||
}
|
||||
@@ -571,7 +580,7 @@ public final class PadBridge {
|
||||
return;
|
||||
}
|
||||
boolean guide = systemGuidePressed || qamChordActive;
|
||||
boolean qam = SessionState.getDeckPad() && (systemQamPressed || qamTapPressed);
|
||||
boolean qam = nativeQam() && (systemQamPressed || qamTapPressed);
|
||||
if (!guide && !qam) {
|
||||
writer.writePad(state);
|
||||
return;
|
||||
|
||||
Reference in new issue
Block a user