Adding per-keyset editable data
[pierogi] / keysets / sharp.cpp
1 #include "sharp.h"
2 #include "protocols/sharpprotocol.h"
3 #include "protocols/necprotocol.h"
4
5 SharpTV1::SharpTV1(
6   unsigned int index)
7   : PIRKeysetMetaData(
8       "TV Keyset 1",
9       Sharp_Make,
10       index)
11 {
12 }
13
14
15 void SharpTV1::populateProtocol(
16   QObject *guiObject)
17 {
18   if (threadableProtocol)
19   {
20     // If the pointer is not null, the keyset must already be populated.
21     return;
22   }
23
24   threadableProtocol = new SharpProtocol(guiObject, index, true);
25
26   addSharpKey("1", One_Key, 0x01, 0x01);
27   addSharpKey("2", Two_Key, 0x01, 0x02);
28   addSharpKey("3", Three_Key, 0x01, 0x03);
29   addSharpKey("4", Four_Key, 0x01, 0x04);
30   addSharpKey("5", Five_Key, 0x01, 0x05);
31   addSharpKey("6", Six_Key, 0x01, 0x06);
32   addSharpKey("7", Seven_Key, 0x01, 0x07);
33   addSharpKey("8", Eight_Key, 0x01, 0x08);
34   addSharpKey("9", Nine_Key, 0x01, 0x09);
35   addSharpKey("0", Zero_Key, 0x01, 0x0A);
36   addSharpKey("100", PlusOneHundred_Key, 0x01, 0x0B);
37   addSharpKey("stereo", Unmapped_Key, 0x01, 0x0C); // "VpsPds"
38   addSharpKey("40+", Unmapped_Key, 0x01, 0x0F); // odd!
39
40   addSharpKey("NR", NoiseReduction_Key, 0x01, 0x10);
41   addSharpKey("CH_UP", ChannelUp_Key, 0x01, 0x11);
42   addSharpKey("CH_DOWN", ChannelDown_Key, 0x01, 0x12);
43   addSharpKey("TV/VIDEO", Input_Key, 0x01, 0x13);
44   addSharpKey("VOL_UP", VolumeUp_Key, 0x01, 0x14);
45   addSharpKey("VOL_DOWN", VolumeDown_Key, 0x01, 0x15);
46   addSharpKey("POWER", Power_Key, 0x01, 0x16);
47   addSharpKey("MUTE", Mute_Key, 0x01, 0x17); // "VOLUME_KILL"
48   addSharpKey("SOUND_MODE", Audio_Key, 0x01, 0x18); // I/II/I+II
49   addSharpKey("program_timer", Timer_Key, 0x01, 0x19); // "on_timer"
50   addSharpKey("TIMER", Sleep_Key, 0x01, 0x1A);
51   addSharpKey("INFO", Info_Key, 0x01, 0x1B); // "disp_del" "TEXT"
52   addSharpKey("TIME", TeletextTime_Key, 0x01, 0x1C);
53   addSharpKey("PROG", Program_Key, 0x01, 0x1D);
54
55   addSharpKey("PICTURE_NORMALIZE", Unmapped_Key, 0x01, 0x21);
56   addSharpKey("CONTRAST_UP", ContrastUp_Key, 0x01, 0x22);
57   addSharpKey("CONTRAST_DOWN", ContrastDown_Key, 0x01, 0x23);
58   addSharpKey("COLOR_UP", ColorUp_Key, 0x01, 0x24);
59   addSharpKey("COLOR_DOWN", ColorDown_Key, 0x01, 0x25);
60   addSharpKey("SOUND_NORMALIZE", Unmapped_Key, 0x01, 0x26);
61   addSharpKey("BRIGHTNESS_UP", BrightnessUp_Key, 0x01, 0x28);
62   addSharpKey("BRIGHTNESS_DOWN", BrightnessDown_Key, 0x01, 0x29);
63   addSharpKey("CH_SWAP", PrevChannel_Key, 0x01, 0x27); // "FLASHBACK", "ret"
64   addSharpKey("MONO", Unmapped_Key, 0x01, 0x2C);
65   addSharpKey("BROWSE", Unmapped_Key, 0x01, 0x2F);
66   addSharpKey("10+", Unmapped_Key, 0x01, 0x2F);
67
68   addSharpKey("20+", Unmapped_Key, 0x01, 0x30);
69   addSharpKey("30+", Unmapped_Key, 0x01, 0x31);
70   addSharpKey("PICTURE", Unmapped_Key, 0x01, 0x32);
71   addSharpKey("HOLD", TeletextHold_Key, 0x01, 0x33);
72   addSharpKey("TELETEXT", Teletext_Key, 0x01, 0x34);
73 //  addSharpKey("SINGLE_DOUBLE", DoubleDigit_Key, 0x01, 0x35);
74   addSharpKey("PROGRAM", Program_Key, 0x01, 0x36);
75   addSharpKey("TOP_BOTTOM_FULL", TeletextSize_Key, 0x01, 0x37);
76   addSharpKey("REVEAL", TeletextReveal_Key, 0x01, 0x38);
77   addSharpKey("message", Unmapped_Key, 0x01, 0x3B);
78   addSharpKey("./..", DoubleDigit_Key, 0x01, 0x3C);
79   addSharpKey("p/c", Unmapped_Key, 0x01, 0x3D);
80
81   addSharpKey("pr", Unmapped_Key, 0x01, 0x41);
82   addSharpKey("COLOR_RED", Red_Key, 0x01, 0x48);
83   addSharpKey("COLOR_GREEN", Green_Key, 0x01, 0x49);
84   addSharpKey("COLOR_YELLOW", Yellow_Key, 0x01, 0x4A);
85   addSharpKey("COLOR_BLUE", Blue_Key, 0x01, 0x4B);
86   addSharpKey("INDEX", TeletextIndex_Key, 0x01, 0x4C);
87   addSharpKey("MENU", Menu_Key, 0x01, 0x4D);
88   addSharpKey("LOCK", Unmapped_Key, 0x01, 0x51);
89   addSharpKey("RESET", Reset_Key, 0x01, 0x52);
90   addSharpKey("FUNCTIONS", Unmapped_Key, 0x01, 0x5F);
91
92   addSharpKey("PICTURE", PictureMode_Key, 0x01, 0x60);
93   addSharpKey("SOUND", SoundMode_Key, 0x01, 0x61);
94   addSharpKey("TREBLE_UP", TrebleUp_Key, 0x01, 0x62);
95   addSharpKey("TREBLE_DOWN", TrebleDown_Key, 0x01, 0x63);
96   addSharpKey("BASS_UP", BassUp_Key, 0x01, 0x64);
97   addSharpKey("BASS_DOWN", BassDown_Key, 0x01, 0x65);
98   addSharpKey("WOOFER_UP", Unmapped_Key, 0x01, 0x66);
99   addSharpKey("WOOFER_DOWN", Unmapped_Key, 0x01, 0x67);
100   addSharpKey("BALANCE_LEFT", BalanceLeft_Key, 0x01, 0x6B);
101   addSharpKey("BALANCE_RIGHT", BalanceRight_Key, 0x01, 0x6C);
102   addSharpKey("SURROUND", Surround_Key, 0x01, 0x6E);
103
104   addSharpKey("calendar", Unmapped_Key, 0x01, 0x76);
105   addSharpKey("language", Audio_Key, 0x01, 0x78);
106   addSharpKey("BT_END", Unmapped_Key, 0x01, 0xF5);
107   addSharpKey("AV_MODE", Unmapped_Key, 0x01, 0xF8);
108
109   addSharpKey("AV-", Unmapped_Key, 0x11, 0x73); // reverse-direction input 
110   addSharpKey("DTV", Unmapped_Key, 0x11, 0xA0);
111   addSharpKey("DTV_MENU", Unmapped_Key, 0x11, 0xA1);
112   addSharpKey("LIST", Unmapped_Key, 0x11, 0xA2);
113   addSharpKey("RADIO", Unmapped_Key, 0x11, 0xA4);
114   addSharpKey("ESG", Unmapped_Key, 0x11, 0xA7);
115   addSharpKey("WIDE_MODES", AspectRatio_Key, 0x11, 0xC8);
116   addSharpKey("TRUD", Unmapped_Key, 0x11, 0xDD);
117   addSharpKey("ACTION", Unmapped_Key, 0x11, 0xF9);
118
119   addSharpKey("BACKLIGHT", Unmapped_Key, 0x1E, 0x8B); // "OPC"
120   addSharpKey("ROTATE", Unmapped_Key, 0x1E, 0x8C);
121   addSharpKey("SUBTITLE", Captions_Key, 0x1E, 0x9F);
122   addSharpKey("SUBPAGE", Unmapped_Key, 0x1E, 0xCD);
123 }
124
125
126 SharpTV1a::SharpTV1a(
127   unsigned int index)
128   : SharpTV1(index)
129 {
130   setKeysetName("TV Keyset 1a");
131 }
132
133
134 void SharpTV1a::populateProtocol(
135   QObject *guiObject)
136 {
137   if (threadableProtocol)
138   {
139     // If the pointer is not null, the keyset must already be populated.
140     return;
141   }
142
143   SharpTV1::populateProtocol(guiObject);
144
145   addSharpKey("Key", Unmapped_Key, 0x01, 0x0D);
146   addSharpKey("Time", Sleep_Key, 0x01, 0x0E);
147   addSharpKey("Replay", Replay_Key, 0x01, 0x10);
148   addSharpKey("TapeSpeed", VHSSpeed_Key, 0x01, 0x1F);
149   addSharpKey("FF", FastForward_Key, 0x01, 0x21);
150   addSharpKey("Play", Play_Key, 0x01, 0x22);
151   addSharpKey("REW", Rewind_Key, 0x01, 0x23);
152   addSharpKey("Pause", Pause_Key, 0x01, 0x25);
153   addSharpKey("Stop", Stop_Key, 0x01, 0x27);
154   addSharpKey("REC", Record_Key, 0x01, 0x28);
155   addSharpKey("Slow", Slow_Key, 0x01, 0x29);
156   addSharpKey("DPSS+", SlowPlus_Key, 0x01, 0x2F);
157   addSharpKey("DPSS+", Next_Key, 0x01, 0x2F);
158
159   addSharpKey("DPSS-", SlowMinus_Key, 0x01, 0x30);
160   addSharpKey("DPSS-", Previous_Key, 0x01, 0x30);
161   addSharpKey("Input", Input_Key, 0x01, 0x34);
162   addSharpKey("ZeroBack", Unmapped_Key, 0x01, 0x83);
163   addSharpKey("SkipSearch", Advance_Key, 0x01, 0x90);
164 }
165
166
167 SharpTV1b::SharpTV1b(
168   unsigned int index)
169   : SharpTV1(index)
170 {
171   setKeysetName("TV Keyset 1b");
172 }
173
174
175 void SharpTV1b::populateProtocol(
176   QObject *guiObject)
177 {
178   if (threadableProtocol)
179   {
180     // If the pointer is not null, the keyset must already be populated.
181     return;
182   }
183
184   SharpTV1::populateProtocol(guiObject);
185
186   addSharpKey("FINE_TUNING", Unmapped_Key, 0x01, 0x0E);
187   addSharpKey("chScan", Scan_Key, 0x01, 0x1C);
188   addSharpKey("setup", Menu_Key, 0x01, 0x20);
189   addSharpKey("fback_clr", Unmapped_Key, 0x01, 0x2F);
190   addSharpKey("BLUE_BACK", Unmapped_Key, 0x01, 0x3B);
191   addSharpKey("SKIP", Unmapped_Key, 0x01, 0x47);
192   addSharpKey("video", Input_Key, 0x01, 0x49);
193   addSharpKey("plus", Up_Key, 0x01, 0x4F); // "UP"
194   addSharpKey("minus", Down_Key, 0x01, 0x50); // "DOWN"
195   addSharpKey("TIMER", Timer_Key, 0x01, 0x53);
196   addSharpKey("SYSTEM_SOUND", SoundMode_Key, 0x01, 0x6F);
197   addSharpKey("SYSTEM_COLOUR", PictureMode_Key, 0x01, 0x71);
198 }
199
200
201 SharpTV1c::SharpTV1c(
202   unsigned int index)
203   : SharpTV1(index)
204 {
205   setKeysetName("TV Keyset 1c");
206 }
207
208
209 void SharpTV1c::populateProtocol(
210   QObject *guiObject)
211 {
212   if (threadableProtocol)
213   {
214     // If the pointer is not null, the keyset must already be populated.
215     return;
216   }
217
218   SharpTV1::populateProtocol(guiObject);
219
220   addSharpKey("save_ch", Unmapped_Key, 0x01, 0x41);
221   addSharpKey("del_ch", Unmapped_Key, 0x01, 0x3D);
222 }
223
224
225 SharpTV1d::SharpTV1d(
226   unsigned int index)
227   : SharpTV1(index)
228 {
229   setKeysetName("TV Keyset 1d");
230 }
231
232
233 void SharpTV1d::populateProtocol(
234   QObject *guiObject)
235 {
236   if (threadableProtocol)
237   {
238     // If the pointer is not null, the keyset must already be populated.
239     return;
240   }
241
242   SharpTV1::populateProtocol(guiObject);
243
244   addSharpKey("P-MODE", PictureMode_Key, 0x01, 0x4D);
245   addSharpKey("S-MODE", SoundMode_Key, 0x01, 0x26);
246 }
247
248
249 SharpTV1e::SharpTV1e(
250   unsigned int index)
251   : SharpTV1(index)
252 {
253   setKeysetName("TV Keyset 1e");
254 }
255
256
257 void SharpTV1e::populateProtocol(
258   QObject *guiObject)
259 {
260   if (threadableProtocol)
261   {
262     // If the pointer is not null, the keyset must already be populated.
263     return;
264   }
265
266   SharpTV1::populateProtocol(guiObject);
267
268   addSharpKey("DOWN", Down_Key, 0x01, 0x20);
269   addSharpKey("OK", Select_Key, 0x01, 0x52);
270   addSharpKey("UP", Up_Key, 0x01, 0x57);
271   addSharpKey("LEFT", Left_Key, 0x01, 0xD7);
272   addSharpKey("RIGHT", Right_Key, 0x01, 0xD8);
273   addSharpKey("RETURN", Exit_Key, 0x01, 0xE4);
274
275   addSharpKey("MENU", Menu_Key, 0x11, 0xC6);
276 }
277
278
279 SharpVCR1::SharpVCR1(
280   unsigned int index)
281   : PIRKeysetMetaData(
282       "VCR Keyset 1",
283       Sharp_Make,
284       index)
285 {
286 }
287
288
289 void SharpVCR1::populateProtocol(
290   QObject *guiObject)
291 {
292   if (threadableProtocol)
293   {
294     // If the pointer is not null, the keyset must already be populated.
295     return;
296   }
297
298   threadableProtocol = new SharpProtocol(guiObject, index, true);
299
300   addSharpKey("1", One_Key, 0x03, 0x01);
301   addSharpKey("2", Two_Key, 0x03, 0x02);
302   addSharpKey("3", Three_Key, 0x03, 0x03);
303   addSharpKey("4", Four_Key, 0x03, 0x04);
304   addSharpKey("5", Five_Key, 0x03, 0x05);
305   addSharpKey("6", Six_Key, 0x03, 0x06);
306   addSharpKey("7", Seven_Key, 0x03, 0x07);
307   addSharpKey("8", Eight_Key, 0x03, 0x08);
308   addSharpKey("9", Nine_Key, 0x03, 0x09);
309   addSharpKey("0", Zero_Key, 0x03, 0x0A);
310   addSharpKey("./..", DoubleDigit_Key, 0x03, 0x0B);
311   addSharpKey("Display", Info_Key, 0x03, 0x0C); // "vps"
312   addSharpKey("Key", Unmapped_Key, 0x03, 0x0D);  // "C-LOCK", "tamper_proof"
313   addSharpKey("TIME", Unmapped_Key, 0x03, 0x0E);
314   addSharpKey("REC_TIME", Unmapped_Key, 0x03, 0x0F); // "TIME-0"
315   addSharpKey("repeat", Repeat_Key, 0x03, 0x10);
316   addSharpKey("ChnUp", ChannelUp_Key, 0x03, 0x11);
317   addSharpKey("ChnDn", ChannelDown_Key, 0x03, 0x12);
318   addSharpKey("TV/VCR", Unmapped_Key, 0x03, 0x13);
319   addSharpKey("Power", Power_Key, 0x03, 0x16);
320   addSharpKey("MUTE", Mute_Key, 0x03, 0x17);
321   addSharpKey("AudioOut", Surround_Key, 0x03, 0x18);
322   addSharpKey("TimerOn/Off", Unmapped_Key, 0x03, 0x19);
323   addSharpKey("osp", Unmapped_Key, 0x03, 0x1C);
324   addSharpKey("PROG", Program_Key, 0x03, 0x1D);
325   addSharpKey("TapeSpeed", VHSSpeed_Key, 0x03, 0x1F);
326   addSharpKey("Clear", Clear_Key, 0x03, 0x20);
327   addSharpKey("FF", FastForward_Key, 0x03, 0x21);
328   addSharpKey("Play", Play_Key, 0x03, 0x22);
329   addSharpKey("Rew", Rewind_Key, 0x03, 0x23);
330   addSharpKey("F.ADV", StepForward_Key, 0x03, 0x24);
331   addSharpKey("Pause", Pause_Key, 0x03, 0x25);
332   addSharpKey("Stop", Stop_Key, 0x03, 0x27);
333   addSharpKey("Rec", Record_Key, 0x03, 0x28);
334   addSharpKey("Slow", Slow_Key, 0x03, 0x29);
335   addSharpKey("CLOCK", Clock_Key, 0x03, 0x2C);
336   addSharpKey("DPSS+", SlowPlus_Key, 0x03, 0x2F); // "slow+"
337   addSharpKey("DPSS+", Next_Key, 0x03, 0x2F);
338   addSharpKey("DPSS-", SlowMinus_Key, 0x03, 0x30); // "slow-"
339   addSharpKey("DPSS-", Previous_Key, 0x03, 0x30); // "slow-"
340   addSharpKey("x2", PlayX2_Key, 0x03, 0x31);
341   addSharpKey("EJECT", Eject_Key, 0x03, 0x33);
342   addSharpKey("InputSelect", Input_Key, 0x03, 0x34); // "simul"
343   addSharpKey("SEARCH", IndexSearch_Key, 0x03, 0x37);
344   addSharpKey("ZeroBack", Unmapped_Key, 0x03, 0x83);  // "MEMORY"
345   addSharpKey("cancel", Unmapped_Key, 0x03, 0x84);  // could be exit key
346   addSharpKey("TRACKING_UP", TrackingPlus_Key, 0x03, 0x85);
347   addSharpKey("TRACKING_DOWN", TrackingMinus_Key, 0x03, 0x86);
348   addSharpKey("100", PlusOneHundred_Key, 0x03, 0x88);
349   addSharpKey("ModeOsd", Unmapped_Key, 0x03, 0x8D);
350   addSharpKey("SkipSearch", Unmapped_Key, 0x03, 0x90);
351   addSharpKey("Menu", Menu_Key, 0x03, 0x98);
352   addSharpKey("Up", Up_Key, 0x03, 0x99);
353   addSharpKey("Set", Select_Key, 0x03, 0x9A);
354   addSharpKey("Right", Right_Key, 0x03, 0x9B);
355   addSharpKey("Dn", Down_Key, 0x03, 0x9C);
356   addSharpKey("Left", Left_Key, 0x03, 0x9D);
357   addSharpKey("SHUTTLE+1", Unmapped_Key, 0x03, 0xA0);
358   addSharpKey("SHUTTLE+2", Unmapped_Key, 0x03, 0xA2);
359   addSharpKey("SHUTTLE+3", Unmapped_Key, 0x03, 0xA4);
360   addSharpKey("SHUTTLE+4", Unmapped_Key, 0x03, 0xA6);
361   addSharpKey("SHUTTLE+5", Unmapped_Key, 0x03, 0xA8);
362   addSharpKey("SHUTTLE-1", Unmapped_Key, 0x03, 0xA9);
363   addSharpKey("SHUTTLE+6", Unmapped_Key, 0x03, 0xAA);
364   addSharpKey("SHUTTLE-2", Unmapped_Key, 0x03, 0xAB);
365   addSharpKey("SHUTTLE0", Unmapped_Key, 0x03, 0xAE);
366   addSharpKey("SV/V+/Timer", Timer_Key, 0x03, 0xC0);
367 }
368
369
370 SharpReceiver1::SharpReceiver1(
371   unsigned int index)
372   : PIRKeysetMetaData(
373       "Receiver Keyset 1",
374       Sharp_Make,
375       index)
376 {
377 }
378
379
380 void SharpReceiver1::populateProtocol(
381   QObject *guiObject)
382 {
383   if (threadableProtocol)
384   {
385     // If the pointer is not null, the keyset must already be populated.
386     return;
387   }
388
389   threadableProtocol = new SharpProtocol(guiObject, index, true);
390
391   addSharpKey("PRESET+", ChannelUp_Key, 0x12, 0x11);
392   addSharpKey("PRESET-", ChannelDown_Key, 0x12, 0x12);
393   addSharpKey("VOL+", VolumeUp_Key, 0x12, 0x14);
394   addSharpKey("VOL-", VolumeDown_Key, 0x12, 0x15);
395   addSharpKey("POWER", Power_Key, 0x12, 0x16);
396   addSharpKey("TUNER", TunerInput_Key, 0x12, 0x19);
397   addSharpKey("TAPE", TapeInput_Key, 0x12, 0x1A);
398   addSharpKey("CD", CDInput_Key, 0x12, 0x1B);
399   addSharpKey("PHONO", PhonoInput_Key, 0x12, 0x1D);
400   addSharpKey("X-BASS", EnhancedBass_Key, 0x12, 0x2E);
401   addSharpKey("FM", Unmapped_Key, 0x12, 0x32);
402   addSharpKey("LW", Unmapped_Key, 0x12, 0x33);
403   addSharpKey("MW", Unmapped_Key, 0x12, 0x34);
404   addSharpKey("SW", Unmapped_Key, 0x12, 0xCA);
405
406   addSharpKey("1", One_Key, 0x14, 0x01);
407   addSharpKey("2", Two_Key, 0x14, 0x02);
408   addSharpKey("3", Three_Key, 0x14, 0x03);
409   addSharpKey("4", Four_Key, 0x14, 0x04);
410   addSharpKey("5", Five_Key, 0x14, 0x05);
411   addSharpKey("6", Six_Key, 0x14, 0x06);
412   addSharpKey("7", Seven_Key, 0x14, 0x07);
413   addSharpKey("8", Eight_Key, 0x14, 0x08);
414   addSharpKey("9", Nine_Key, 0x14, 0x09);
415   addSharpKey("0", Zero_Key, 0x14, 0x0A);
416   addSharpKey("CALL", Call_Key, 0x14, 0x11);
417   addSharpKey("CLEAR", Clear_Key, 0x14, 0x12);
418   addSharpKey("MEMORY", Program_Key, 0x14, 0x13);
419   addSharpKey("CUE", FastForward_Key, 0x14, 0x19);
420   addSharpKey("REVIEW", Rewind_Key, 0x14, 0x1A);
421   addSharpKey("TIME_DISPLAY", Info_Key, 0x14, 0x1B);
422   addSharpKey("RANDOM", Random_Key, 0x14, 0x1E);
423   addSharpKey("APSS+", Unmapped_Key, 0x14, 0x21);
424   addSharpKey("PLAY", Play_Key, 0x14, 0x22);
425   addSharpKey("APSS-", Unmapped_Key, 0x14, 0x23);
426   addSharpKey("PAUSE", Pause_Key, 0x14, 0x25);
427   addSharpKey("STOP", Stop_Key, 0x14, 0x27);
428   addSharpKey("REPEAT", Repeat_Key, 0x14, 0x36);
429   addSharpKey("+10", DoubleDigit_Key, 0x14, 0x38);
430 }
431
432
433 SharpAC1::SharpAC1(
434   unsigned int index)
435   : PIRKeysetMetaData(
436       "Air Conditioner 1",
437       Sharp_Make,
438       index)
439 {
440 }
441
442
443 void SharpAC1::populateProtocol(
444   QObject *guiObject)
445 {
446   if (threadableProtocol)
447   {
448     // If the pointer is not null, the keyset must already be populated.
449     return;
450   }
451
452   threadableProtocol = new NECProtocol(guiObject, index, false, true);
453
454   setPreData(0xF508, 16);
455
456   addKey("Fan Faster", FanFaster_Key, 0x01, 8);
457   addKey("Energy Save", EnergySave_Key, 0x02, 8);
458   addKey("Fan Slower", FanSlower_Key, 0x04, 8);
459   addKey("Timer", Timer_Key, 0x06, 8);
460   addKey("Fan", Fan_Key, 0x07, 8);
461   addKey("Cool", Cool_Key, 0x09, 8);
462   addKey("Temp/Timer-", TempDown_Key, 0x0D, 8);
463   addKey("Temp/Timer+", TempUp_Key, 0x0E, 8);
464   addKey("Auto/Cool", Mode_Key, 0x0F, 8);
465   addKey("power", Power_Key, 0x11, 8);
466 }