I recently became aware of an issue with the MCP23017 I/O expander chip that may affect the ESPboy. Microchip Technology has acknowledged and documented the problem in their latest MCP23017 datasheet but it appears that it has always existed.
The datasheet now states that the GPA7 and GPB7 pins should only be used as outputs.
The datasheet doesn’t elaborate on the exact problem but comments found elsewhere say that a changing input on GPA7 or GPB7 can cause other inputs to read as high even though they are low.
GPA7 is used as an input on the ESPboy for the right side button. All other MCP23017 pins used as inputs on the ESPboy itself are for the other buttons, so one result of the issue would be that one or more other buttons would read as not pressed when they actually were pressed at the time that the right side button was pressed or released.
GPB7 is brought out to the expansion port along with other GPB pins. If GPB7 is used as an input from an expansion module output, and is toggled, then (as with GPA7) ESPboy buttons could appear to have been released or not pressed when they are actually being pressed. Also, other GPB pins used as inputs from expansion modules could read as high when they are actually low if either the right side button is toggled or GPB7 set as an input is toggled by an expansion module.
At this point, it would be difficult to change using GPA7 for the right side button but avoiding the use of GPB7 as an input on the expansion port should be considered.
Overall, this issue should be suspected for any case where an MCP23017 input reads high when it should be low at the time that the right side button (GPA7) is toggled or GPB7 set as an input for the expansion port is toggled.