Experimental input probe for the original M5Stack Faces GameBoy/Gamepad panel on an M5Stack Core Gray. This repository is not yet a reusable or published package.
M5Stack's published Gamepad source contains a complete active-low bitmask mode,
but hardware testing found an older factory protocol on this particular Face.
It emits one ASCII button code only after release: U, D, L, R, A,
B, s (Select), or S (Start). The probe recognizes that legacy protocol
without suppressing repeated presses, while retaining bitmask diagnostics for
hardware that returns full states.
The same firmware also reports press and release transitions from the Core
Gray's three front buttons as core_a, core_b, and core_c. Their names are
kept distinct from the Gamepad Face's A and B buttons.
PlatformIO Core 6.2 or newer is required by the current pioarduino platform.
pio run
pio run --target upload
pio device monitorTest each Face button separately, including two consecutive presses of the same
button. On the validated legacy firmware, each release should produce a named
protocol=legacy_release event. Also test the three Core Gray front buttons,
which provide both press and release through M5Unified.
No musical contract is introduced in this baseline. The legacy Face firmware does not provide the press edge or held combinations needed for direct musical Note On/Off. It remains useful for commands and discrete triggers.