Сдвиговые регистры можно как на вывод так и на ввод использовать. На вывод, понятно, задвинул по байты spi дал строб и параллельно всё "засветил". На ввод также задвигаем байты, все байты например 0xff и один бит 0, этот 0 подключает конкретную кнопку ко входу контроллера проверяем её состояние. 0 при каждом новом стробе сдвигается например циклически вправо, получается сканирование всех кнопок. Чтениее ввода медленней вывода в количество раз равное количеству бит в сдвиговых регистрах ввода -для кнопок не принципиально.
Можно i2c и т.п. расширители портов использовать, только по сравнению со сдвиговыми регистрами ценник на них не добрый.
Предложил бы рассмотреть использование сенсорного мультитач экрана от планшета. В теории, выкидываем всё из планшета, кроме сенсорного экрана, под него красивую бумажку с картинкой подкладываем, сенсорный экран планшета на шлейфу должен содержать мультитач контроллер, он по spi вроде до 1-2 МГц клок, подключается к контроллеру, дальше либо ищем протоко обмена, или разгадываем то что есть, вроде подобные решения существуют