Skip to content

Map Pocket EVO AYA SPACE, =, LC and RC buttons - #169

Open
jesherman wants to merge 1 commit into
virtudude:mainfrom
jesherman:feat/pocket-evo-gpio-buttons
Open

Map Pocket EVO AYA SPACE, =, LC and RC buttons#169
jesherman wants to merge 1 commit into
virtudude:mainfrom
jesherman:feat/pocket-evo-gpio-buttons

Conversation

@jesherman

Copy link
Copy Markdown
Contributor

These four buttons are wired to SoC GPIOs rather than to the controller MCU, so they never appear on the fake-Xbox-360 pad and were unmapped. They arrive instead on their own gpio-keys node, which the kernel only creates once the device tree declares it.

Kept out of the existing gpio-keys node deliberately: InputPlumber grabs the source devices it manages, so sharing that node would swallow volume up.

The device tree emits F13-F16 rather than AYANEO's stock KEY_A, KEY_EQUAL, KEY_LEFT and KEY_RIGHTSHIFT. Those type real characters, so any moment InputPlumber is not grabbing the node - desktop mode, a service restart - they would leak into whatever has focus.

Only AYA SPACE is bound to a fixed action, since QuickAccess is the one thing Steam Input cannot bind. The other three become paddles so they stay remappable per game.

Needs the matching aya-keys node in qcs8550-ayaneo-pocketevo.dts; until that lands nothing matches "aya-keys" and this config is inert.

Verified on hardware by patching the DTB in place and reading the emulated Steam Controller's HID reports: AYA SPACE opens QAM, and =, LC and RC report as L5, L4 and R4.

These four buttons are wired to SoC GPIOs rather than to the controller
MCU, so they never appear on the fake-Xbox-360 pad and were unmapped.
They arrive instead on their own gpio-keys node, which the kernel only
creates once the device tree declares it.

Kept out of the existing gpio-keys node deliberately: InputPlumber grabs
the source devices it manages, so sharing that node would swallow volume
up.

The device tree emits F13-F16 rather than AYANEO's stock KEY_A,
KEY_EQUAL, KEY_LEFT and KEY_RIGHTSHIFT. Those type real characters, so
any moment InputPlumber is not grabbing the node - desktop mode, a
service restart - they would leak into whatever has focus.

Only AYA SPACE is bound to a fixed action, since QuickAccess is the one
thing Steam Input cannot bind. The other three become paddles so they
stay remappable per game.

Needs the matching aya-keys node in qcs8550-ayaneo-pocketevo.dts; until
that lands nothing matches "aya-keys" and this config is inert.

Verified on hardware by patching the DTB in place and reading the
emulated Steam Controller's HID reports: AYA SPACE opens QAM, and =, LC
and RC report as L5, L4 and R4.
@jesherman

Copy link
Copy Markdown
Contributor Author

Kernel half is up: virtudude/armada-packages#14 — it adds the aya-keys gpio-keys node and its TLMM pinctrl state to kernel/dts/qcs8550-ayaneo-pocketevo.dts.

Merge order matters slightly: this PR is inert until that node exists, and that node is inert until KERNEL_PKG in the Containerfile is bumped to the rebuilt kernel image. So the sequence is armada-packages#14 → kernel image rebuild → KERNEL_PKG bump → this. Happy to send the digest bump once the image exists.

Both halves verified together on hardware: AYA SPACE opens QAM, and =, LC and RC report as L5, L4 and R4.

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.

1 participant