It is a GPIO expander, it is a keypad matrix controller... it is the Adafruit TCA8418 Keypad Matrix and GPIO Expander Breakout - a cute and powerful I2C GPIO expander and keypad matrix controller! This chip is pretty great because it works as an I2C multi-tool for handling keypads, buttons, or LEDs.
The chip has a total of 18 I/O pins, 10 columns and 8 rows. You can of course arrange them as a button matrix with a total of 80 switches. Or you can use any subset as individual GPIO inputs or outputs. The nicest feature of the keypad controller is that it has a 10-element event queue, so even if you don't service the interrupt immediately, key presses and releases are recorded for you. Because it is I2C, it's very easy to use with any microcontroller or computer.
GPIO expanders work like this: you have a board with a certain number of GPIOs but they aren't enough for your project – maybe you need more buttons or LEDs. You can upgrade to a board with a huge number of GPIOs, like the Grand Central, or you can add one of these boards. Hook it up over I2C, and then you can send/receive I2C commands to control the GPIO pins for writing and reading. It is slower than direct GPIO access, but that might not matter if it takes milliseconds instead of microseconds. You only need two I2C pins, and you can even share the I2C bus with other sensors and devices. You can even add more expanders for massive I/O control!
For GPIO expansion any of the 18 pins can be used as an input or an output. For inputs you can also enable an optional pull-up function and an interrupt output on the INT pin for rising or falling signals. There is also a debouncer which can add a bit of low-pass filtering for noisy tactile switches. Outputs can be set high or low, suitable for basic LED driving.
The keypad matrix controller even supports 10 columns and 8 rows. A row cannot be changed into a column or vice versa. Pull-ups and matrix scanning are handled for you, and key presses and releases are stored in a 10-element FIFO queue. You can of course set the interrupt output for key press or release so you don't have to poll repeatedly.
To help you get up and running quickly, we've developed a custom PCB in the STEMMA QT form factor to make connections easier. It has a built-in 3.3V regulator and level shifting on the I2C lines, so you can use it with 3V or 5V microcontrollers.