52 time_t timeout = time(NULL) + Seconds;
68 bool result = WaitForTimeout ? k ==
kNone : k ==
kOk;
69 isyslog(
"%sconfirmed", result ?
"" :
"not ");
75 DisplayMenu->
SetItem(
tr(
"Phase 1: Detecting RC code type"), 2,
false,
false);
76 DisplayMenu->
SetItem(
tr(
"Press any key on the RC unit"), 4,
false,
false);
79 DisplayMenu->
SetItem(
tr(
"RC code detected!"), 4,
false,
false);
80 DisplayMenu->
SetItem(
tr(
"Do not press any key..."), 5,
false,
false);
83 DisplayMenu->
SetItem(
"", 4,
false,
false);
84 DisplayMenu->
SetItem(
"", 5,
false,
false);
86 DisplayMenu->
SetItem(
tr(
"Phase 2: Learning specific key codes"), 2,
false,
false);
88 while (NewKey !=
kNone) {
92 for (
eKeys k = NewKey; k == NewKey; ) {
96 case kUp:
if (NewKey >
kUp) {
97 NewKey =
eKeys(NewKey - 1);
99 if (last && last->
Key() == NewKey)
103 case kDown: DisplayMenu->
SetItem(
tr(
"Press 'Up' to confirm"), 4,
false,
false);
104 DisplayMenu->
SetItem(
tr(
"Press 'Down' to continue"), 5,
false,
false);
105 DisplayMenu->
SetItem(
"", 6,
false,
false);
106 DisplayMenu->
SetItem(
"", 7,
false,
false);
107 DisplayMenu->
SetItem(
"", 8,
false,
false);
108 DisplayMenu->
Flush();
112 DisplayMenu->
Clear();
115 else if (Key ==
kDown) {
116 DisplayMenu->
SetItem(
"", 5,
false,
false);
124 case kNone:
if (NewCode) {
127 NewKey =
eKeys(NewKey + 1);
135 DisplayMenu->
SetItem(
tr(
"(press 'Up' to go back)"), 6,
false,
false);
137 DisplayMenu->
SetItem(
"", 6,
false,
false);
139 DisplayMenu->
SetItem(
tr(
"(press 'Down' to end key definition)"), 7,
false,
false);
141 DisplayMenu->
SetItem(
"", 7,
false,
false);
143 DisplayMenu->
SetItem(
tr(
"(press 'Menu' to skip this key)"), 8,
false,
false);
145 DisplayMenu->
SetItem(
"", 8,
false,
false);
155 if (!Remote->Ready()) {
156 esyslog(
"ERROR: remote control %s not ready!", Remote->Name());
160 dsyslog(
"remote control %s - %s", Remote->Name(), known ?
"keys known" :
"learning keys");
164 snprintf(Headline,
sizeof(Headline),
tr(
"Learning Remote Control Keys"));
167 DisplayMenu->
SetItem(Remote->Name(), 0,
false,
false);
169 bool rc =
QueryKeys(Remote, DisplayMenu);
171 DisplayMenu->
Clear();
176 DisplayMenu->
SetItem(Remote->Name(), 0,
false,
false);
177 DisplayMenu->
SetItem(
tr(
"Phase 3: Saving key codes"), 2,
false,
false);
178 DisplayMenu->
SetItem(
tr(
"Press 'Up' to save, 'Down' to cancel"), 4,
false,
false);
186 else if (key ==
kDown) {