I started work on making a button board before the season started(with the Arduino Joystick Library) and got a button board that seemed to work. Just recently, we added all of the buttons in and I went to the DS to make sure all of the buttons work. A couple didn’t and I tried to figure out why for a while, but after opening up the joystick properties in Windows I found that the buttons do, in fact, work. The two buttons that don’t work have an index of over 16 and although the driver station adds more button indicators(in the joystick panel), they do not light up when the buttons are pressed, nor does the Arduino show a ** next to it such as when other buttons are pressed. I saw that someone had achieved using 32 buttons here but I didn’t know if they are supposed to show up in the DS or if this is typical.
The joystick button values are sent as a 16-bit bitmap in the driverstation to roborio communication packets, so you’ll never see more than 16 (working) button values for a single input device (joystick, xbox controller, or custom board). As Mark said, there are ways to make it work, but you need to use multiple input devices
Mark and Fletch are both correct. For certain input devices folks bypass the DriverStation joystick methods entirely (Such a 2714 and their work with the Novation Launchpad). YMMV.
I posted the linked source, and I achieved 32 buttons through one simulated joystick. I never checked how many the driver station displayed, but within the robot code on a RIO I could receive 32 buttons.