Т.е. кнопки могут быть и на экране (софтовые), и реальные (хардварные)? Какое кол-во хардварных может быть максимум?

С хардварными я бы поступил так: взял бы какой-нибудь ARM с USB, на нем бы замутил HID-device, чтобы комп думал, что это обычная клавиатура. На порты ARM'а можно нафигачить кнопок каких угодно и сколько надо.

С софтовыми кнопками непонятно. Сенсорный экран - он используется готовый, или для него тоже нужно контроллер делать?
Если готовый - задача непонятна, чем там управлять? Или нужно еще и программу-оболочку для компа писать?
Если для сенсорного экрана надо делать свой контроллер, то опять же берем микроконтроллер с USB и делаем на нем HID мышь.