Смотрите функцию getAction(), точнее, её конец.
Там идут переназначения команд и отключение их части в разных режимах.
В частности, секция "Remap NEXT/PREV_INPUT actions to INPUT_X" - превращает эту команду в команду выбора конкретного входа, а секция "// Disable actions except POWERON, TESTMODE and TEMPMODE in standby mode" - отключает в ждущем режиме всё, кроме перечисленного. Нужно просто переделать на что-то вроде
// Disable actions except POWERON, TESTMODE and TEMPMODE in standby mode
Код: Выделить всё
if (dispMode == MODE_STANDBY) {
if (action != ACTION_EXIT_STANDBY && action != ACTION_TESTMODE && action != ACTION_TEMPMODE && action != CMD_RC_IN_0 && ...)
action = ACTION_NOACTION;
if (action == CMD_RC_IN_0 || action == CMD_RC_IN_1 ...)
action = ACTION_EXIT_STANDBY;
}
То есть, что-то вроде этого.
Но, в этом случае все эти четыре запараллеленные кнопки всё что будут делать - это включать устройство и, далее, переключать вход по кругу. Не очень, на мой взгляд.
Более интересным было бы, если бы были свободные ножки у МК, и на эти кнопки просто сразу вешать нужные действия CMD_RC_IN_0..CMD_RC_IN_1. Тогда их нажатие сразу бы включало нужный вход с выходом из ждущего режима.
P.S. В принципе, это возможно на ATmega32, если использовать 4 из тех 8 выводов, что отданы дисплею. Его работе это не помешает.
Вот
пример, как добавляются 4 кнопки и длительное нажатие на них приводит к тому, что требовалось. Кнопки просто так к линиям дисплея подключать нельзя (иначе получится КЗ, когда кнопка тянет линию к земле, а МК - к питанию), только через резисторы (500-1000 Ом).