У меня всегда по одному шаблону сделано. Заряжаю таймер на 10 мс и в прерывании таймера для каждой кнопки вставляю код
В случае нажатия кнопок значение передаю глобальной переменной, которую анализирую в основном цикле программы. Если переменная отлична от нуля, то обнуляю переменную и выполняю действия, привязанные к полученному значению.