https://forum.arduino.cc/index.php?topic=113921.0 #include const byte ROWS = 4; //four rows const byte COLS = 3; //three columns char keys[ROWS][COLS] = { {'<','^','>'}, {'4','5','6'}, {'7','8','9'}, {'*','0','#'} }; 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 ); char holdKey; unsigned long t_hold; void setup(){ Serial.begin(9600); } void loop(){ char key = keypad.getKey(); if (key){ holdKey = key; Serial.println(key); } if (keypad.getState() == HOLD) { if ((millis() - t_hold) > 100 ) { switch (holdKey) { case '<': Serial.println("Move Left"); break; case '^': Serial.println("Move Up"); break; case '>': Serial.println("Move Right"); } t_hold = millis(); } } }