Skip to content

fix(profile): correct Stream Deck + XL keypad layout to 9x4#18

Merged
jack-arturo merged 1 commit intomainfrom
fix/plus-xl-keypad-layout
Apr 17, 2026
Merged

fix(profile): correct Stream Deck + XL keypad layout to 9x4#18
jack-arturo merged 1 commit intomainfrom
fix/plus-xl-keypad-layout

Conversation

@jack-arturo
Copy link
Copy Markdown
Member

Summary

  • Empirical hardware probe on a physical Stream Deck + XL showed the device has 9 keypad columns, not 8. Writing to position: 7,0 left the rightmost physical column unused; 8,0 lands at the true right edge.
  • MODEL_LAYOUTS["20GBX9901"] bumped from KEYPAD: (8, 4)(9, 4); comment updated from 32 → 36 keys.
  • Plus XL test fixture and layout assertions updated to 9×4.

How we confirmed

Wrote a probe page directly to the profile manifest with buttons 0..8 across the top row (col 8 colored red). On-device, the red "8" tile rendered at the rightmost physical column and "0" at the leftmost — confirming 9 columns.

Test plan

  • uv run pytest tests/ — 51 passed
  • uv run ruff check . — clean
  • Visually re-verify corners on-device after this lands (write corners at 0,0 / 8,0 / 0,3 / 8,3)

Out of scope

Touchstrip rendering (per-encoder TouchDisplay feedback) is still unhandled — deferred to the upcoming dynamic-icon-URL feature pass, where it's a natural fit.

🤖 Generated with Claude Code

Empirical hardware probe showed the device is 9 columns wide, not 8.
Writing to position 7,0 left the rightmost physical column unused;
position 8,0 lands at the true right edge.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings April 17, 2026 20:20
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates the known hardware layout for the Stream Deck “+ XL” model (20GBX9901) so the keypad is treated as 9×4 (36 keys), aligning profile read/write behavior with empirical on-device probing and keeping the test fixtures consistent.

Changes:

  • Update MODEL_LAYOUTS["20GBX9901"] keypad dimensions from (8, 4) to (9, 4) and adjust the inline documentation to 36 keys.
  • Update the “Plus XL” test fixture description and layout assertions to expect 9×4.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.

File Description
profile_manager.py Corrects the hardcoded model-to-layout mapping for 20GBX9901 to use a 9×4 keypad.
tests/test_profile_manager.py Updates the Plus XL fixture documentation and assertions to match the corrected 9×4 layout.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@jack-arturo jack-arturo merged commit d6da4b2 into main Apr 17, 2026
10 checks passed
jack-arturo added a commit to Braxhim/streamdeck-mcp that referenced this pull request Apr 17, 2026
Resolves conflicts in profile_manager.py introduced by verygoodplugins#18 (the 20GBX9901
"+ XL" keypad rewrite landing on main). MODEL_LAYOUTS now contains all
seven entries: Original (5x3), MK.2 (5x3), XL (8x4), XL rev2 (8x4),
+ XL (9x4 keypad + 6-dial encoder), Mini (3x2), Neo (4x2), plus the UI
Stream Deck emulator.

Resolution cherry-picked from copilot/fix-conflicts-in-streamdeck-mcp
(commit 02a928a) which the Copilot agent produced but couldn't push to
the PR source branch because it lives on a fork.

Co-Authored-By: Mini Brax <braxhim@users.noreply.github.com>
Co-Authored-By: copilot-swe-agent[bot] <noreply@github.com>
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.

2 participants