Есть для Ардуины такой 'Arduino LCD Keypad Shield', его не делает только ленивый.
Там применено остроумное решение - клавиатура обслуживается только одним входом. Аналоговым.
Из клавиш выстроен составной резистор, а вход измеряет его значение. Решение остроумное, правда позволяет единомоментно нажимать только одну кнопку.
Для остального или сканируемая матрица или расширитель с кучей GPIO контактов.