Trying to use they keypad by mark stanley (3.1.1) with the nano 33 iot

I might have solved my problem with the first post, but a sanity check would be appreciated.

I’m using a standard 3x4 membrane keypad with the nano 33 iot. I’m trying to use the example that comes with the plugin (files, examples, hello keypad. I’ll include the code below) so this isn’t my code. I’m wiring the keypad up to pins 2-8 by just snapping the nano 33 right onto the lead of the keypad (trying to eliminate variables). Now diagrams for the code I’ve seen do not include a pull up or pull down resistor.

What I’m seeing on he serial monitor is just a stream of “1” and occasionally “4”, “7”, or “*” if I push anything in their respective rows. I can’t seem to get the expected output of waiting for a signal and responding when I push a button. It also seems to only be reading the first column of buttons.

I’ve refreshed myself with the led blink and switch demos from the code so I’m sure I have a working nano 33 IOT. My best guess is the keypad library doesn’t work with the nano 33. Am I off my nut, or is there another library that I should use? I’m using a keypad similar to these:

/* @file HelloKeypad.pde
|| @version 1.0
|| @author Alexander Brevig
|| @contact
|| @description
|| | Demonstrates the simplest use of the matrix Keypad library.
|| #
#include <Keypad.h>

const byte ROWS = 4; //four rows
const byte COLS = 3; //three columns
char keys[ROWS][COLS] = {
byte rowPins[ROWS] = {5, 4, 3, 2}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {8, 7, 6}; //connect to the column pinouts of the keypad

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

void setup(){
void loop(){
  char key = keypad.getKey();
  if (key){

Just a quick follow up. I've had a chance to implement the exact same circuit with my Arduino uno. Works perfectly. It looks like I've found a bug between the keypad.h library and the nano 33 iot.