Skip to content

fix(overlay): remove extra Guide shortcut handlers - #564

Open
morheddsb wants to merge 4 commits into
ShadowBlip:mainfrom
morheddsb:fix/overlay-guide-shortcut-cleanup
Open

morheddsb wants to merge 4 commits into
ShadowBlip:mainfrom
morheddsb:fix/overlay-guide-shortcut-cleanup

Conversation

@morheddsb

@morheddsb morheddsb commented Oct 6, 2026 •

Copy link
Copy Markdown

Summary

Simplify overlay-mode Guide shortcuts for passthrough testing while retaining Guide+B and QAM2 as the OpenGamepadUI quick-bar shortcuts.

  • Remove the Guide+A, Guide+X, Guide+Y capture placeholder, and Guide+RB handlers, plus the associated screenshot forwarding path.
  • Release the synthetic quick-bar action when the Guide-combo marker ends, including when Guide is released before B.
  • Replace the default overlay profile's LeftTop/RightTop shortcut aliases with ordinary LeftPaddle1/RightPaddle1 mappings, matching InputPlumber's stock profile.
  • Keep QAM2's existing Guide+East/B mapping, dedicated Steam QAM/Keyboard forwarding, and input capture/menu navigation while the overlay is open.
  • Correct the Guide+B documentation example and remove the profile's trailing JSON comma.

Why

Refs ShadowBlip/OpenGamepadUI#549 — Guide shortcuts not working on Xbox Ally X in game mode.

The issue reports that Guide combinations, including Guide+right-stick cursor movement, fail in Bazzite game mode while working in desktop mode. Switching InputPlumber interception to NONE restores those shortcuts but disables OpenGamepadUI's Guide+B opener.

See related pr in input plumber: ShadowBlip/InputPlumber#747
Cleanup for this issue: #549

Test

This is tested and verified on a ROG ally xbox x (the only hardware I own to verify with)
Using Bazzite-deck:Stable F44.20260929

@pastaq

pastaq commented Oct 7, 2026 •

Copy link
Copy Markdown
Collaborator

To mark an issue in github you can use a Fixes: or Closes: tag.

I.e.
Closes: #549

Remove the Guide+A, Guide+X, Guide+Y capture placeholder, and Guide+RB handlers, plus the associated screenshot forwarding path.

This is the wrong direction. As I stated in ShadowBlip/InputPlumber#747 PASS mode needs to always forward all input. OpenGamepadUI is not the only consumer FWIW, but what we really need is a refactor of the overlay mode input manager that returns all input that OpenGamepadUI Doesn't use back to InputPlumber over dbus. That will require detecting when a chord other than guide +b is pressed and matching that to the generic capabilities. I.e. Guide + A -> not used, send Guide + A DOWN chord. On release, send UP chord.

It gets a little complex as IIRC the deamon currently expects to do the full down/up on a timer. We'll need to handle that differently in IP.

Release the synthetic quick-bar action when the Guide-combo marker ends, including when Guide is released before B.

Makes sense, good change.

Replace the default overlay profile's LeftTop/RightTop shortcut aliases with ordinary LeftPaddle1/RightPaddle1 mappings, matching InputPlumber's stock profile.

This will break opening the OpenGamepadUI Quick Bar for devices that have LC/RC and no dedicated second QAM button.

Keep QAM2's existing Guide+East/B mapping, dedicated Steam QAM/Keyboard forwarding, and input capture/menu navigation while the overlay is open.

Correct the Guide+B documentation example and remove the profile's trailing JSON comma.

Also fine.

@pastaq pastaq linked an issue Oct 7, 2026 that may be closed by this pull request
@morheddsb

Copy link
Copy Markdown
Author

@pastaq
While reverting the other changes, I noticed two pre-existing issues in
core/systems/input/overlay_mode_input_manager.gd:

  • Guide-action release handling — _input(), around lines 120–145: The outer
    condition checks for an ogui_guide_action release, then the nested conditions
    check whether the same event releases ogui_north_ov, ogui_south_ov, etc. A
    D-Bus-generated InputEventAction has only one action name, so those nested
    cleanup branches cannot match.

  • Screenshot release handling — _input(), around lines 196–198: Inside the
    event.is_released() branch, the RB condition uses
    is_action_pressed("ogui_rb_ov"). It should check is_action_released(...);
    otherwise an RB-release event won’t clear ogui_sc_ov through this path.

Is this something you would like included?

@pastaq

pastaq commented Oct 7, 2026

Copy link
Copy Markdown
Collaborator

Sure

Morten Hedengran added 2 commits October 7, 2026 09:59
Undo the prototype's shortcut-handler removals and paddle remappings. Retain only the accepted quick-bar release cleanup, Guide+B documentation correction, and valid JSON. No InputPlumber changes or dependency.
Replace unreachable cross-action release checks with cleanup of active synthetic actions. Correct the RB release predicate and cover both bugs with three focused Godot regression tests. Existing shortcuts and InputPlumber remain unchanged.
@morheddsb

Copy link
Copy Markdown
Author

What changed and why:

  • Removed unreachable release checks that required one event to match two different action names.
  • Replaced them with a small loop that clears active shortcut actions when the Guide-combo marker ends, preventing stuck action state.
  • Fixed the screenshot cleanup to check for RB release, rather than press.
  • Added 3 focused Godot regression tests covering active-action cleanup, ignoring inactive actions, and screenshot release. All fail before the fixes and pass afterward.

Existing shortcuts and controller mappings are preserved. No new production state, APIs, or InputPlumber changes.

@pastaq added the 2 fixes. Also the changes you denied have been removed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Guide shortcuts not working on xbox ally x in gamemode

2 participants