Pinscape Pico Config Tool > Button Tester

Pinscape Button Tester

This window is designed to help set up a Pinscape Pico device's button inputs by letting you see the live button input status in detail. It shows:

The point of all of this information is to let you trace a signal from its origin in a physical pushbutton, into the Pico hardware, then through Pinscape software, the USB connection, and the Windows device drivers. If pushing a button isn't having the desired effect, you can look at each point along the way to isolate where the problem is occurring. Start with the physical input device where the button is attached, where you can check if pressing and releasing the button toggles the physical port state as expected. If that's working, you can check the logical button list to make sure that the logical button state is updated when you press the button. And if that's working, you can check that the Windows device where the button is mapped is showing the right effect.

Logical Buttons

The panel on the left shows the logical buttons. These are the buttons defined in your JSON configuration. These generally map physical input ports, where the physical buttons are wired in, to some kind of action on the PC, such as pressing a keyboard key or a gamepad button.

The list shows the following elements:

Shift State

This area shows the current shift state, which shows you which Shift buttons are currently engaged. A number in gray means that that shift is not currently pressed, and green means that it is pressed.

Keyboard, gamepad, XBox, OpenPinDev

This area shows you the current status of the system input devices on the Windows side, so that you can see which keys and buttons Windows believes are currently pressed. All of these inputs come from the Windows native interfaces, so they reflect the same information that other applications should also see when they read from the various input sources. This helps verify that the buttons are actually delivering the Windows inputs that you expect.

The keyboard status is system-wide, because Windows combines all keyboard input into a single virtual keyboard. Any key that's pressed on any one physical keyboard device counts as pressed on this virtual über keyboard. If you press a key on your regular keyboard, it'll show up as pressed here. Likewise, if you push a Pinscape button that's mapped to a keyboard key, you should see the result show up here as well.

The gamepad area shows the buttons for the Pinscape gamepad only. Unlike the keyboard, Windows doesn't merge gamepad inputs - it keeps each gamepad's input separate, since otherwise you couldn't play multi-player games via gamepads. This allows the Button Tester window to show you just the gamepad input coming from the selected Pinscape Pico, without any interference from other devices. Pressing a physical button on the Pinscape unit that's mapped to a gamepad button should show up here by lighting up the mapped button.

The XBox Controller image shows buttons mapped to the XInput interface on the Pico. Like the gamepad, this is a private display for the Pinscape XInput buttons only. It won't show input from any other XInput controllers you have attached. Pressing a button on the Pico that's mapped to an XInput button should show the button light up here.

The OpenPinDev buttons show the status of the buttons assigned to the Open Pinball Device interface, if enabled. There are two sets of these buttons: the "generic" buttons, which are numbered 1 to 32, and the "named" buttons, which have pre-assigned meanings that correspond to the standard functions found in most pinball simulators.

Physical Input Ports

The area at the lower right shows the physical input port status. This includes all of the Pico's GPIO ports, plus the ports for any input-capable I/O chips that you've configured. I/O chips are listed whether or not you've actually assigned buttons to any of them in the configuration.

All of the ports for all of the I/O devices, including all of the Pico's GPIO ports, are included, whether or not they're being used as button inputs.

The ports are all shown with their electronic logic level. Green means that the port is at "high" logic level (usually 3.3V), and gray means it's a "low" logical level (0V, or equivalently, DC ground). This is the physical logic level - it's not affected by "active high" or "active low" configuration settings on the logical ports. Remember that the usual button wiring is "active low", where the port is normally pulled up to the high logic level, and pressing the button pulls the port to ground.

The port levels shown in the window show what the Pico is reading from the ports. The first step in debugging a button problem is usually to check that the Pico is reading the correct high/low voltage level on the port the button is wired. If the display here doesn't match what you expect when you press and release the button, use a voltmeter to check the actual voltage on the port. If the voltmeter matches the logic level shown in the window (3.3V for green, 0V for gray), the problem must be in the wiring between the button and the port, or perhaps the button itself is simply defective. If the voltmeter reading conflicts with the port level shown here, though, the Pico is having trouble reading the port. If you're using an add-on chip (74HC165, PCA9555), the control wiring between the chip and the Pico could be the problem, or the JSON configuration for the chip could be wrong; check the Pinscape device log for startup error messages related to the chip.