Improved to "half-way usable" (version 0.5)
[pierogi] / keysets / denon.cpp
1 #include "denon.h"
2 #include "sharpprotocol.h"
3 #include "necprotocol.h"
4
5 // This whole set of Denon keysets is a mess.  Need to clean it up!!!
6
7 DenonDVD1::DenonDVD1(
8   QObject *guiObject,
9   unsigned int index)
10   : PIRKeysetMetaData(
11       "DVD Keyset 1",
12       Denon_Make,
13       index)
14 {
15   addControlledDevice(Denon_Make, "DVD-1930", DVD_Device);
16
17   threadableProtocol = new SharpProtocol(guiObject, index, false);
18
19   addSharpKey("SEARCH_MODE", Unmapped_Key, 0x04, 0x9E);
20   addSharpKey("ZOOM", Zoom_Key, 0x04, 0x9F);
21
22   addSharpKey("POWER_OFF", PowerOff_Key, 0x06, 0xC0);
23   addSharpKey("PAGE-", PageDown_Key, 0x06, 0xFD);
24   addSharpKey("PAGE+", PageUp_Key, 0x06, 0xFE);
25   addSharpKey("GROUP", Unmapped_Key, 0x06, 0xFF);
26
27   addSharpKey("SACD_SETUP", Unmapped_Key, 0x08, 0x7E);
28   addSharpKey("0", Zero_Key, 0x08, 0x81);
29   addSharpKey("1", One_Key, 0x08, 0x82);
30   addSharpKey("2", Two_Key, 0x08, 0x83);
31   addSharpKey("3", Three_Key, 0x08, 0x84);
32   addSharpKey("4", Four_Key, 0x08, 0x85);
33   addSharpKey("5", Five_Key, 0x08, 0x86);
34   addSharpKey("6", Six_Key, 0x08, 0x87);
35   addSharpKey("7", Seven_Key, 0x08, 0x88);
36   addSharpKey("8", Eight_Key, 0x08, 0x89);
37   addSharpKey("9", Nine_Key, 0x08, 0x8A);
38   addSharpKey("10+", DoubleDigit_Key, 0x08, 0x8C);
39   addSharpKey("SUBTITLE", Captions_Key, 0x08, 0x8D);
40   addSharpKey("AUDIO", Audio_Key, 0x08, 0x8E);
41   addSharpKey("ANGLE", Angle_Key, 0x08, 0x8F);
42   addSharpKey("OPEN_CLOSE", Eject_Key, 0x08, 0x90);
43   addSharpKey("MENU", DiscMenu_Key, 0x08, 0x91);
44   addSharpKey("RETURN", Exit_Key, 0x08, 0x92);
45   addSharpKey("REPEAT", Repeat_Key, 0x08, 0x94);
46   addSharpKey("SKIP_UP", Previous_Key, 0x08, 0x98);
47   addSharpKey("SKIP_DOWN", Next_Key, 0x08, 0x99);
48   addSharpKey("FAST_FORWARD", FastForward_Key, 0x08, 0x9A);
49   addSharpKey("FAST_REVERSE", Rewind_Key, 0x08, 0x9B);
50   addSharpKey("MODE", Unmapped_Key, 0x08, 0x9C);
51   addSharpKey("PAUSE", Pause_Key, 0x08, 0x9D);
52   addSharpKey("PLAY", Play_Key, 0x08, 0xA0);
53   addSharpKey("STOP", Stop_Key, 0x08, 0xA1);
54   addSharpKey("CLEAR", Clear_Key, 0x08, 0xA3);
55   addSharpKey("DISPLAY", Info_Key, 0x08, 0xA7);
56   addSharpKey("RANDOM", Random_Key, 0x08, 0xAA);
57   addSharpKey("UP", Up_Key, 0x08, 0xAC);
58   addSharpKey("DOWN", Down_Key, 0x08, 0xAD);
59   addSharpKey("RIGHT", Right_Key, 0x08, 0xAE);
60   addSharpKey("LEFT", Left_Key, 0x08, 0xAF);
61   addSharpKey("POWER_ON", PowerOn_Key, 0x08, 0xB2);
62   addSharpKey("A_B_REPEAT", RepeatAB_Key, 0x08, 0xBA);
63   addSharpKey("ENTER", Select_Key, 0x08, 0xBB);
64   addSharpKey("SETUP", Menu_Key, 0x08, 0xBC);
65   addSharpKey("TOP_MENU", DiscTitle_Key, 0x08, 0xBD);
66 }
67
68
69 DenonDVD2::DenonDVD2(
70   QObject *guiObject,
71   unsigned int index)
72   : PIRKeysetMetaData(
73       "DVD Keyset 2",
74       Denon_Make,
75       index)
76 {
77   addControlledDevice(Denon_Make, "DVD-2500", DVD_Device);
78
79   NECProtocol *np = new NECProtocol(
80     guiObject,
81     index,
82     400, 500,
83     400, 1400,
84     43000, false,
85     LIRC_NEC);
86
87   threadableProtocol = np;
88
89   np->setHeaderPair(3500, 1800);
90   np->setTrailerPulse(400);
91
92   setPreData(0x40040D00, 32);
93
94   addKey("Power", Power_Key, 0xBCB1, 16);
95   addKey("Open/Close", Eject_Key, 0x808D, 16);
96   addKey("Stop", Stop_Key, 0x000D, 16);
97   addKey("Pause", Pause_Key, 0x606D, 16);
98   addKey("Play", Play_Key, 0x505D, 16);
99   addKey("SkipBack", Previous_Key, 0x929F, 16);
100   addKey("SkipFwd", Next_Key, 0x525F, 16);
101   addKey("Rev", Rewind_Key, 0x202D, 16);
102   addKey("Fwd", FastForward_Key, 0xA0AD, 16);
103   addKey("Title", DiscTitle_Key, 0xD9D4, 16);
104   addKey("Menu", DiscMenu_Key, 0x010C, 16);
105   addKey("Display", Info_Key, 0x4944, 16);
106   addKey("Return", Exit_Key, 0x818C, 16);
107   addKey("Up", Up_Key, 0xA1AC, 16);
108   addKey("Down", Down_Key, 0x616C, 16);
109   addKey("Right", Right_Key, 0x111C, 16);
110   addKey("Left", Left_Key, 0xE1EC, 16);
111   addKey("Select", Select_Key, 0x414C, 16);
112   addKey("Subtitle", Captions_Key, 0x8984, 16);
113   addKey("Audio", Audio_Key, 0xCCC1, 16);
114   addKey("Angle", Angle_Key, 0x0904, 16);
115   addKey("Marker", Unmapped_Key, 0x717C, 16);
116   addKey("PlayMode", Unmapped_Key, 0xB1BC, 16);
117   addKey("RepeatMode", Repeat_Key, 0x313C, 16);
118   addKey("A-B_Repeat", RepeatAB_Key, 0x121F, 16);
119   addKey("Setup", Menu_Key, 0x2924, 16);
120   addKey("Clear", Clear_Key, 0xC1CC, 16);
121   addKey("VSS", Unmapped_Key, 0x7974, 16);
122   addKey("1", One_Key, 0x0805, 16);
123   addKey("2", Two_Key, 0x8885, 16);
124   addKey("3", Three_Key, 0x4845, 16);
125   addKey("4", Four_Key, 0xC8C5, 16);
126   addKey("5", Five_Key, 0x2825, 16);
127   addKey("6", Six_Key, 0xA8A5, 16);
128   addKey("7", Seven_Key, 0x6865, 16);
129   addKey("8", Eight_Key, 0xE8E5, 16);
130   addKey("9", Nine_Key, 0x1815, 16);
131   addKey("0", Zero_Key, 0x9895, 16);
132   addKey(">=10", DoubleDigit_Key, 0x919C, 16);
133 }
134
135
136 DenonDVD3::DenonDVD3(
137   QObject *guiObject,
138   unsigned int index)
139   : PIRKeysetMetaData(
140       "DVD Keyset 3",
141       Denon_Make,
142       index)
143 {
144   addControlledDevice(Denon_Make, "dvd-1000", DVD_Device);
145
146   threadableProtocol = new SharpProtocol(guiObject, index, false);
147
148   addSharpKey("0", Zero_Key, 0x01, 0x81);
149   addSharpKey("1", One_Key, 0x01, 0x82);
150   addSharpKey("2", Two_Key, 0x01, 0x83);
151   addSharpKey("3", Three_Key, 0x01, 0x84);
152   addSharpKey("4", Four_Key, 0x01, 0x85);
153   addSharpKey("5", Five_Key, 0x01, 0x86);
154   addSharpKey("6", Six_Key, 0x01, 0x87);
155   addSharpKey("7", Seven_Key, 0x01, 0x88);
156   addSharpKey("8", Eight_Key, 0x01, 0x89);
157   addSharpKey("9", Nine_Key, 0x01, 0x8A);
158   addSharpKey("10", Unmapped_Key, 0x01, 0x8C);
159   addSharpKey("subtitle", Captions_Key, 0x01, 0x8D);
160   addSharpKey("audio", Audio_Key, 0x01, 0x8E);
161   addSharpKey("angle", Angle_Key, 0x01, 0x8F);
162   addSharpKey("open-close", Eject_Key, 0x01, 0x90);
163   addSharpKey("menu", DiscMenu_Key, 0x01, 0x91);
164   addSharpKey("return", Exit_Key, 0x01, 0x92);
165   addSharpKey("repeat", Repeat_Key, 0x01, 0x97);
166   addSharpKey("skip+", Next_Key, 0x01, 0x98);
167   addSharpKey("skip-", Previous_Key, 0x01, 0x99);
168   addSharpKey("slow+", SlowPlus_Key, 0x01, 0x9A);
169   addSharpKey("slow-", SlowMinus_Key, 0x01, 0x9B);
170   addSharpKey("pause", Pause_Key, 0x01, 0x9D);
171   addSharpKey("play", Play_Key, 0x01, 0xA0);
172   addSharpKey("stop", Stop_Key, 0x01, 0xA1);
173   addSharpKey("program", Program_Key, 0x01, 0xA2);
174   addSharpKey("clear", Clear_Key, 0x01, 0xA3);
175   addSharpKey("display", Info_Key, 0x01, 0xA4);
176   addSharpKey("random", Random_Key, 0x01, 0xAA);
177   addSharpKey("arrow-up", Up_Key, 0x01, 0xAC);
178   addSharpKey("arrow-down", Down_Key, 0x01, 0xAD);
179   addSharpKey("arrow-right", Right_Key, 0x01, 0xAE);
180   addSharpKey("arrow-left", Left_Key, 0x01, 0xAF);
181   addSharpKey("ntsc-pal", Unmapped_Key, 0x01, 0xB7);
182   addSharpKey("power", Power_Key, 0x01, 0xB1);
183   addSharpKey("repeat-ab", RepeatAB_Key, 0x01, 0xBA);
184   addSharpKey("select", Select_Key, 0x01, 0xBB);
185   addSharpKey("setup", Menu_Key, 0x01, 0xBC);
186   addSharpKey("title", DiscTitle_Key, 0x01, 0xBD);
187   addSharpKey("call", Unmapped_Key, 0x01, 0xBE);
188 }
189
190
191 // This one is messed up:
192 DenonReceiver1::DenonReceiver1(
193   QObject *guiObject,
194   unsigned int index)
195   : PIRKeysetMetaData(
196       "Receiver Keyset 1",
197       Denon_Make,
198       index)
199 {
200   addControlledDevice(Denon_Make, "avr-1708", Audio_Device);
201
202   NECProtocol *np = new NECProtocol(
203     guiObject,
204     index,
205     400, 700,
206     400, 1700,
207     67000, true,
208     LIRC_NEC);
209
210   threadableProtocol = np;
211
212   np->setElevenBitToggle(true);
213
214   np->setTrailerPulse(400);
215
216   addKey("On", PowerOn_Key, 0x221C, 15);
217   addKey("Off", PowerOff_Key, 0x211C, 15);
218   addKey("DVD_HDP", Unmapped_Key, 0x231C, 15); // "SRC_DVD"
219   addKey("TV_CBL", Unmapped_Key, 0x224C, 15);
220   addKey("VCR", Unmapped_Key, 0x22CC, 15);
221   addKey("Play", Play_Key, 0x10E8, 15);
222   addKey("Stop", Stop_Key, 0x11E8, 15);
223   addKey("Skip_Favorite", Favorites_Key, 0x13A8, 15);
224   addKey("Pause", Pause_Key, 0x1328, 15);
225   addKey("Volume_up", VolumeUp_Key, 0x223C, 15);
226   addKey("Volume_down", VolumeDown_Key, 0x213C, 15);
227   addKey("Rewind", Rewind_Key, 0x1368, 15);
228   addKey("Forward", FastForward_Key, 0x1168, 15);
229   addKey("Setup", Menu_Key, 0x206C, 15);
230   addKey("Mute", Mute_Key, 0x203C, 15);
231   addKey("Night_Audio", Unmapped_Key, 0x1064, 15);
232   addKey("Display", Info_Key, 0x23EC, 15); // "onscreen"
233   addKey("Enter", Select_Key, 0x201C, 15);
234   addKey("Left", Left_Key, 0x1BF8, 15);
235   addKey("Up", Up_Key, 0x1B14, 15);
236   addKey("Right", Right_Key, 0x22EC, 15);
237   addKey("Down", Down_Key, 0x1894, 15);
238   addKey("Return", Exit_Key, 0x21EC, 15);
239   addKey("Dimmer", Unmapped_Key, 0x1BEC, 15);
240 }
241
242
243 DenonReceiver1a::DenonReceiver1a(
244   QObject *guiObject,
245   unsigned int index)
246   : DenonReceiver1(guiObject, index)
247 {
248   setKeysetName("Receiver Keyset 1a");
249
250   addControlledDevice(Denon_Make, "AVR-1610", Audio_Device);
251
252   // This keyset may need work, see denon/RC-1120
253   addKey("SRC_TV", Unmapped_Key, 0x21B3, 15);
254   addKey("SRC_TUNNER", Unmapped_Key, 0x228C, 15);
255   addKey("SRC_VAUX", Unmapped_Key, 0x20CC, 15);
256   addKey("SRC_HDP", Unmapped_Key, 0x214C, 15);
257   addKey("SRC_DVR", Unmapped_Key, 0x2233, 15);
258   addKey("SRC_VCR", Unmapped_Key, 0x2133, 15);
259   addKey("SRC_SATCBL", Unmapped_Key, 0x204C, 15);
260   addKey("BTN_VSEL", Unmapped_Key, 0x2393, 15);
261   addKey("BTN_INPUT_MODE", Unmapped_Key, 0x19B4, 15);
262   addKey("BTN_MULTEQ", Unmapped_Key, 0x111B, 15);
263   addKey("BTN_HDMI_CONTROL", Unmapped_Key, 0x182B, 15);
264   addKey("BTN_UP", Up_Key, 0x18EB, 15);
265   addKey("BTN_DOWN", Down_Key, 0x1894, 15);
266   addKey("BTN_SKIP", Unmapped_Key, 0x18CC, 15);
267   addKey("BTN_STOP", Stop_Key, 0x1BAC, 15);
268   addKey("BTN_PAUSE", Pause_Key, 0x1ACC, 15);
269   addKey("BTN_PLAY", Play_Key, 0x186C, 15);
270   addKey("FAST_REVERSE", Rewind_Key, 0x1A93, 15);
271   addKey("FAST_FORWARD", FastForward_Key, 0x1A6C, 15);
272   addKey("BTN_PREV", Previous_Key, 0x1AAC, 15);
273   addKey("BTN_NEXT", Next_Key, 0x19AC, 15);
274   addKey("BTN_STD", Unmapped_Key, 0x2363, 15);
275   addKey("PAGE_DN", PageDown_Key, 0x1813, 15);
276   addKey("PAGE_UP", PageUp_Key, 0x21EC, 15);
277   addKey("BTN_STD_CINEMA", Unmapped_Key, 0x115B, 15);
278   addKey("BTN_STD_MUSIC", Unmapped_Key, 0x125B, 15);
279   addKey("BTN_SIMU", Unmapped_Key, 0x219C, 15);
280 }
281
282
283 DenonReceiver1b::DenonReceiver1b(
284   QObject *guiObject,
285   unsigned int index)
286   : DenonReceiver1(guiObject, index)
287 {
288   setKeysetName("Receiver Keyset 1b");
289
290   addControlledDevice(Denon_Make, "avr-3300", Audio_Device);
291
292   addKey("vol+", VolumeUp_Key, 0x21C3, 15);
293   addKey("channel+", ChannelUp_Key, 0x19AC, 15);
294   addKey("channel-", ChannelDown_Key, 0x1AAC, 15);
295   addKey("setup", Menu_Key, 0x1814, 15);
296   addKey("params", Unmapped_Key, 0x1A14, 15);
297   addKey("input-mode", Unmapped_Key, 0x19B4, 15);
298   addKey("analog", Unmapped_Key, 0x20EC, 15);
299   addKey("ext.in", Unmapped_Key, 0x1AB4, 15);
300   addKey("output", Unmapped_Key, 0x1A94, 15);
301   addKey("multi", Unmapped_Key, 0x236C, 15);
302 }
303
304
305 DenonReceiver1c::DenonReceiver1c(
306   QObject *guiObject,
307   unsigned int index)
308   : DenonReceiver1(guiObject, index)
309 {
310   setKeysetName("Receiver Keyset 1c");
311
312   addControlledDevice(Denon_Make, "AVR-1602", Audio_Device);
313   addControlledDevice(Denon_Make, "AVR-1802", Audio_Device);
314   addControlledDevice(Denon_Make, "AVR-1803", Audio_Device);
315
316   addKey("ONE", One_Key, 0x230C, 15);
317   addKey("TWO", Two_Key, 0x208C, 15);
318   addKey("THREE", Three_Key, 0x231C, 15);
319   addKey("FOUR", Four_Key, 0x20CC, 15);
320   addKey("FIVE", Five_Key, 0x22CC, 15);
321   addKey("SIX", Six_Key, 0x21CC, 15);
322   addKey("SEVEN", Seven_Key, 0x224C, 15);
323   addKey("EIGHT", Eight_Key, 0x19B4, 15);
324   addKey("NINE", Nine_Key, 0x212C, 15);
325   addKey("ZERO", Zero_Key, 0x228C, 15);
326   addKey("RCVR_SURROUND_MODE", Unmapped_Key, 0x219C, 15);
327   addKey("RCVR_CHANNEL+", ChannelUp_Key, 0x19AC, 15);
328   addKey("RCVR_CHANNEL-", ChannelDown_Key, 0x1AAC, 15);
329   addKey("VIDEO_SELECT", Unmapped_Key, 0x206C, 15);
330   addKey("CD_DISC_SKIP", Unmapped_Key, 0x0B58, 15);
331   addKey("CD_PLAY", Unmapped_Key, 0x08E8, 15);
332   addKey("CD_PAUSE", Unmapped_Key, 0x0AE8, 15);
333   addKey("CD_NEXT", Unmapped_Key, 0x0868, 15);
334   addKey("CD_PREV", Unmapped_Key, 0x0A68, 15);
335   addKey("CD_STOP", Unmapped_Key, 0x09E8, 15);
336   addKey("CD_REW", Unmapped_Key, 0x0B68, 15);
337   addKey("CD_FFW", Unmapped_Key, 0x0968, 15);
338   addKey("SYSTEM", Menu_Key, 0x1814, 15);
339   addKey("RCVR_SURROUND", Surround_Key, 0x1A14, 15);
340 //  addKey("RCVR_CH_SELECT", Select_Key, 0x201C, 15);
341   addKey("RCVR_T_TONE", Unmapped_Key, 0x215C, 15);
342   addKey("RCVR_STATUS", Info_Key, 0x21EC, 15);
343 }
344
345
346 DenonReceiver2::DenonReceiver2(
347   QObject *guiObject,
348   unsigned int index)
349   : PIRKeysetMetaData(
350       "Receiver Keyset 2",
351       Denon_Make,
352       index)
353 {
354   threadableProtocol = new SharpProtocol(guiObject, index, false);
355
356   addSharpKey("tun_1", One_Key, 0x13, 0x42);
357   addSharpKey("tun_2", Two_Key, 0x13, 0x43);
358   addSharpKey("tun_3", Three_Key, 0x13, 0x44);
359   addSharpKey("tun_4", Four_Key, 0x13, 0x45);
360   addSharpKey("tun_5", Five_Key, 0x13, 0x46);
361   addSharpKey("tun_6", Six_Key, 0x13, 0x47);
362   addSharpKey("tun_7", Seven_Key, 0x13, 0x48);
363   addSharpKey("tun_8", Eight_Key, 0x13, 0x49);
364   addSharpKey("tun_shift", TunerBand_Key, 0x13, 0x4A);
365   addSharpKey("amp_vol-down", VolumeDown_Key, 0x13, 0x4C);
366   addSharpKey("amp_vol-up", VolumeUp_Key, 0x13, 0x4D);
367   addSharpKey("amp_power", Power_Key, 0x13, 0x50);
368   addSharpKey("amp_phono", Unmapped_Key, 0x13, 0x58);
369   addSharpKey("amp_tuner", Unmapped_Key, 0x13, 0x59);
370   addSharpKey("amp_aux/video", Unmapped_Key, 0x13, 0x5B);
371   addSharpKey("amp_cd", Unmapped_Key, 0x13, 0x5A);
372   addSharpKey("amp_tape", Unmapped_Key, 0x13, 0x5D);
373   addSharpKey("TUN_CH_DOWN", ChannelDown_Key, 0x13, 0xD5);
374   addSharpKey("TUN_CH_UP", ChannelUp_Key, 0x13, 0xD6);
375
376   addSharpKey("CD_REPEAT", Repeat_Key, 0x17, 0x54);
377   addSharpKey("cd_next", Next_Key, 0x17, 0x58);
378   addSharpKey("cd_prev", Previous_Key, 0x17, 0x59);
379   addSharpKey("cd_ff", FastForward_Key, 0x17, 0x5A);
380   addSharpKey("cd_rew", Rewind_Key, 0x17, 0x5B);
381   addSharpKey("cd_play", Play_Key, 0x17, 0x5C);
382   addSharpKey("cd_pause", Pause_Key, 0x17, 0x5D);
383   addSharpKey("cd_stop", Stop_Key, 0x17, 0x5E);
384   addSharpKey("CD_RANDOM", Random_Key, 0x17, 0x6A);
385   addSharpKey("CD_SKIP", Unmapped_Key, 0x17, 0x6B);
386
387   addSharpKey("tape_a/b", Unmapped_Key, 0x1B, 0x53);
388   addSharpKey("tape_playrev", Unmapped_Key, 0x1B, 0x57);
389   addSharpKey("tape_ff", Unmapped_Key, 0x1B, 0x5A);
390   addSharpKey("tape_rew", Unmapped_Key, 0x1B, 0x5B);
391   addSharpKey("tape_play", Unmapped_Key, 0x1B, 0x5C);
392   addSharpKey("tape_pause", Unmapped_Key, 0x1B, 0x5D);
393   addSharpKey("tape_stop", Unmapped_Key, 0x1B, 0x5E);
394   addSharpKey("tape_rec", Unmapped_Key, 0x1B, 0x5F);
395 }
396
397
398 DenonReceiver2a::DenonReceiver2a(
399   QObject *guiObject,
400   unsigned int index)
401   : DenonReceiver2(guiObject, index)
402 {
403   setKeysetName("Receiver Keyset 2a");
404
405   addControlledDevice(Denon_Make, "PMA-425R", Audio_Device);
406
407   addSharpKey("AMP_TAPE2", Unmapped_Key, 0x1D, 0x9A);
408   addSharpKey("AMP_TAPE1", Unmapped_Key, 0x1D, 0x99);
409   addSharpKey("AMP_AUX", Unmapped_Key, 0x1D, 0x84);
410   addSharpKey("AMP_TUNER", Unmapped_Key, 0x1D, 0x73);
411   addSharpKey("AMP_CD", Unmapped_Key, 0x1D, 0x82);
412   addSharpKey("AMP_PHONO", Unmapped_Key, 0x1D, 0x81);
413   addSharpKey("AMP_VOL_UP", VolumeUp_Key, 0x1D, 0x8D);
414   addSharpKey("AMP_VOL_DOWN", VolumeDown_Key, 0x1D, 0x8C);
415   addSharpKey("AMP_POWER", Power_Key, 0x1D, 0x90);
416   addSharpKey("AMP_MUTE", Mute_Key, 0x1D, 0x8B);
417 }
418
419
420 DenonReceiver3::DenonReceiver3(
421   QObject *guiObject,
422   unsigned int index)
423   : PIRKeysetMetaData(
424       "Receiver Keyset 3",
425       Denon_Make,
426       index)
427 {
428   addControlledDevice(Denon_Make, "PMA-480R", Audio_Device);
429
430   threadableProtocol = new SharpProtocol(guiObject, index, false);
431
432   addSharpKey("AMP_PHONO", Unmapped_Key, 0x02, 0x81);
433   addSharpKey("AMP_TUNER", Unmapped_Key, 0x02, 0x83);
434   addSharpKey("AMP_AUX", Unmapped_Key, 0x02, 0x84);
435   addSharpKey("AMP_MUTING", Mute_Key, 0x02, 0x8B);
436   addSharpKey("AMP_VOL_DOWN", VolumeDown_Key, 0x02, 0x8C);
437   addSharpKey("AMP_VOL_UP", VolumeUp_Key, 0x02, 0x8D);
438   addSharpKey("AMP_POWER", Power_Key, 0x02, 0x90);
439   addSharpKey("AMP_CD", Unmapped_Key, 0x02, 0x92);
440   addSharpKey("AMP_TAPE-1", Unmapped_Key, 0x02, 0x99);
441   addSharpKey("AMP_TAPE-2", Unmapped_Key, 0x02, 0x9A);
442
443   addSharpKey("TAPE_A/B", Unmapped_Key, 0x04, 0x53);
444   addSharpKey("TAPE_PLAY_REV", Unmapped_Key, 0x04, 0x57);
445   addSharpKey("TAPE_FF", Unmapped_Key, 0x04, 0x5A);
446   addSharpKey("TAPE_REW", Unmapped_Key, 0x04, 0x5B);
447   addSharpKey("TAPE_PLAY", Unmapped_Key, 0x04, 0x5C);
448   addSharpKey("TAPE_PAUSE", Unmapped_Key, 0x04, 0x5D);
449   addSharpKey("TAPE_STOP", Unmapped_Key, 0x04, 0x5E);
450   addSharpKey("TAPE_REC", Unmapped_Key, 0x04, 0x5F);
451   addSharpKey("DECK", Unmapped_Key, 0x04, 0x75);
452
453   addSharpKey("REPEAT", Repeat_Key, 0x08, 0x54);
454   addSharpKey("CD_NEXT", Next_Key, 0x08, 0x58);
455   addSharpKey("CD_BACK", Previous_Key, 0x08, 0x59);
456   addSharpKey("CD_FF", FastForward_Key, 0x08, 0x5A);
457   addSharpKey("CD_REW", Rewind_Key, 0x08, 0x5B);
458   addSharpKey("CD_PLAY", Play_Key, 0x08, 0x5C);
459   addSharpKey("CD_PAUSE", Pause_Key, 0x08, 0x5D);
460   addSharpKey("CD_STOP", Stop_Key, 0x08, 0x5E);
461   addSharpKey("DISC1", One_Key, 0x08, 0x64);
462   addSharpKey("DISC2", Two_Key, 0x08, 0x65);
463   addSharpKey("DISC3", Three_Key, 0x08, 0x66);
464   addSharpKey("DISC4", Four_Key, 0x08, 0x67);
465   addSharpKey("DISC5", Five_Key, 0x08, 0x68);
466   addSharpKey("DISC6", Six_Key, 0x08, 0x69);
467   addSharpKey("random", Random_Key, 0x08, 0x6A);
468   addSharpKey("CD", Unmapped_Key, 0x08, 0x73);
469   addSharpKey("disksk", DiscSelect_Key, 0x08, 0x6B);
470
471   addSharpKey("panel", Info_Key, 0x0C, 0x7E);
472   addSharpKey("TUNER_UP", ChannelUp_Key, 0x0C, 0xD5);
473   addSharpKey("TUNER_DOWN", ChannelDown_Key, 0x0C, 0xD6);
474   addSharpKey("TUNER", Unmapped_Key, 0x0C, 0xDD);
475 }
476
477
478 DenonReceiver3a::DenonReceiver3a(
479   QObject *guiObject,
480   unsigned int index)
481   : DenonReceiver3(guiObject, index)
482 {
483   setKeysetName("Receiver Keyset 3a");
484
485   addControlledDevice(Denon_Make, "DRA-385RD", Audio_Device);
486
487   addSharpKey("voldwn", VolumeDown_Key, 0x0C, 0x4C);
488   addSharpKey("volup", VolumeUp_Key, 0x0C, 0x4D);
489   addSharpKey("preset+", Unmapped_Key, 0x0C, 0x4E);
490   addSharpKey("preset-", Unmapped_Key, 0x0C, 0x4F);
491   addSharpKey("tape2", Unmapped_Key, 0x0C, 0x5E);
492   addSharpKey("video", Unmapped_Key, 0x0C, 0x53);
493   addSharpKey("phono", Unmapped_Key, 0x0C, 0x58);
494   addSharpKey("tuner", Unmapped_Key, 0x0C, 0x59);
495   addSharpKey("cd", Unmapped_Key, 0x0C, 0x5A);
496   addSharpKey("tape_mon", Unmapped_Key, 0x0C, 0x5C);
497   addSharpKey("tape1", Unmapped_Key, 0x0C, 0x5D);
498 }
499
500
501 DenonReceiver4::DenonReceiver4(
502   QObject *guiObject,
503   unsigned int index)
504   : PIRKeysetMetaData(
505       "Receiver Keyset 4",
506       Denon_Make,
507       index)
508 {
509   addControlledDevice(Denon_Make, "AVR-600 RD", Audio_Device);
510
511   NECProtocol *np = new NECProtocol(
512     guiObject,
513     index,
514     561, 489,
515     561, 1543,
516     67329, true,
517     LIRC_NEC);
518
519   threadableProtocol = np;
520
521   np->setTrailerPulse(561);
522
523   addKey("POWER", Power_Key, 0xA20C, 16);
524   addKey("UP", Up_Key, 0x99AC, 16);
525   addKey("DOWN", Down_Key, 0x9AAC, 16);
526   addKey("TUNER", Unmapped_Key, 0xA28C, 16);
527   addKey("CD", Unmapped_Key, 0xA08C, 16);
528   addKey("PHONO", Unmapped_Key, 0xA30C, 16);
529   addKey("VCR", Unmapped_Key, 0xA2CC, 16);
530   addKey("TV", Unmapped_Key, 0xA14C, 16);
531   addKey("TAPE", Unmapped_Key, 0xA12C, 16);
532   addKey("STEREO", Unmapped_Key, 0xA39C, 16);
533   addKey("MODE", Unmapped_Key, 0xA19C, 16);
534   addKey("TESTTONE", Unmapped_Key, 0xA15C, 16);
535   addKey("DELAY", Unmapped_Key, 0xA25C, 16);
536   addKey("MUTE", Mute_Key, 0xA03C, 16);
537   addKey("PANEL", Info_Key, 0xA1EC, 16);
538   addKey("CENTER_UP", Unmapped_Key, 0xA2BC, 16);
539   addKey("CENTER_DOWN", Unmapped_Key, 0xA1BC, 16);
540   addKey("REAR_UP", Unmapped_Key, 0xA33C, 16);
541   addKey("REAR_DOWN", Unmapped_Key, 0xA0BC, 16);
542   addKey("VOL_UP", VolumeUp_Key, 0xA23C, 16);
543   addKey("VOL_DOWN", VolumeDown_Key, 0xA13C, 16);
544 }
545
546
547 DenonReceiver5::DenonReceiver5(
548   QObject *guiObject,
549   unsigned int index)
550   : PIRKeysetMetaData(
551       "Receiver Keyset 5",
552       Denon_Make,
553       index)
554 {
555   addControlledDevice(Denon_Make, "AVR-700RD", Audio_Device);
556   addControlledDevice(Denon_Make, "RC-841", Audio_Device);
557
558   threadableProtocol = new SharpProtocol(guiObject, index, false);
559
560   addSharpKey("Power", Power_Key, 0x02, 0xC1);
561   addSharpKey("Phono", Unmapped_Key, 0x02, 0xC3);
562   addSharpKey("CD", Unmapped_Key, 0x02, 0xC4);
563   addSharpKey("Tuner", Unmapped_Key, 0x02, 0xC5);
564   addSharpKey("DVD_TV", Unmapped_Key, 0x02, 0xCA);
565   addSharpKey("NoName1", Unmapped_Key, 0x02, 0xCC);
566   addSharpKey("VCR", Unmapped_Key, 0x02, 0xCD);
567   addSharpKey("DAT_Tape", Unmapped_Key, 0x02, 0xD2);
568   addSharpKey("Panel", Info_Key, 0x02, 0xDE);
569   addSharpKey("NoName2", Unmapped_Key, 0x02, 0xDF);
570   addSharpKey("Mode", Unmapped_Key, 0x02, 0xE6);
571   addSharpKey("Stereo", Unmapped_Key, 0x02, 0xE7);
572   addSharpKey("Delay", Unmapped_Key, 0x02, 0xE9);
573   addSharpKey("Test_Tone", Unmapped_Key, 0x02, 0xEA);
574   addSharpKey("Muting", Mute_Key, 0x02, 0xF0);
575   addSharpKey("MasterVolumeUp", VolumeUp_Key, 0x02, 0xF1);
576   addSharpKey("MasterVolumeDown", VolumeDown_Key, 0x02, 0xF2);
577   addSharpKey("RearVolumeUp", Unmapped_Key, 0x02, 0xF3);
578   addSharpKey("RearVolumeDown", Unmapped_Key, 0x02, 0xF4);
579   addSharpKey("CenterVolumeUp", Unmapped_Key, 0x02, 0xF5);
580   addSharpKey("CenterVolumeDown", Unmapped_Key, 0x02, 0xF6);
581
582   addSharpKey("Deck_A_B", Unmapped_Key, 0x04, 0x53);
583   addSharpKey("Deck_PlayLeft", Unmapped_Key, 0x04, 0x57);
584   addSharpKey("Deck_FastForward", Unmapped_Key, 0x04, 0x5A);
585   addSharpKey("Deck_Rewind", Unmapped_Key, 0x04, 0x5B);
586   addSharpKey("Deck_PlayRight", Unmapped_Key, 0x04, 0x5C);
587   addSharpKey("Deck_Stop", Unmapped_Key, 0x04, 0x5E);
588
589   addSharpKey("CD_Next", Next_Key, 0x08, 0x58);
590   addSharpKey("CD_Prev", Previous_Key, 0x08, 0x59);
591   addSharpKey("CD_Pause", Pause_Key, 0x08, 0x5B);
592   addSharpKey("CD_Play", Play_Key, 0x08, 0x5C);
593   addSharpKey("CD_Stop", Stop_Key, 0x08, 0x5E);
594   addSharpKey("CD_Disc_Skip_Plus", DiscSelect_Key, 0x08, 0x6B);
595
596   addSharpKey("Preset_Down", ChannelDown_Key, 0x0C, 0xB5);
597   addSharpKey("Preset_Up", ChannelUp_Key, 0x0C, 0xB6);
598   addSharpKey("Shift", TunerBand_Key, 0x0C, 0xCD);
599 }
600
601
602 DenonAudio1::DenonAudio1(
603   QObject *guiObject,
604   unsigned int index)
605   : PIRKeysetMetaData(
606       "Audio Keyset 1",
607       Denon_Make,
608       index)
609 {
610   addControlledDevice(Denon_Make, "HiFi 110", Audio_Device);
611   addControlledDevice(Denon_Make, "DRM-550", Audio_Device);
612   addControlledDevice(Denon_Make, "DCD-335", Audio_Device);
613   addControlledDevice(Denon_Make, "DRA-275RD", Audio_Device);
614   addControlledDevice(Denon_Make, "UD-M30", Audio_Device);
615
616   threadableProtocol = new SharpProtocol(guiObject, index, false);
617
618   addSharpKey("reset", Reset_Key, 0x04, 0x54);
619   addSharpKey("TAPE REW", Unmapped_Key, 0x04, 0x57); // "TAPE_PLAY_REV"
620   addSharpKey("TAPE FAST FWD", Unmapped_Key, 0x04, 0x5A); // "TAPE_FORW"
621   addSharpKey("TAPE FAST REW", Unmapped_Key, 0x04, 0x5B); // "TAPE_REW"
622   addSharpKey("TAPE FWD", Unmapped_Key, 0x04, 0x5C); // "TAPE_PLAY_FORW"
623   addSharpKey("TAPE STOP", Unmapped_Key, 0x04, 0x5E);
624   addSharpKey("tapesize", Unmapped_Key, 0x04, 0x60);
625   addSharpKey("revmode", Unmapped_Key, 0x04, 0x62);
626   addSharpKey("TAPE_AB", Unmapped_Key, 0x04, 0x63);
627   addSharpKey("TAPE 2 REW", Unmapped_Key, 0x04, 0x67);
628   addSharpKey("TAPE 2 FAST FWD", Unmapped_Key, 0x04, 0x6A);
629   addSharpKey("TAPE 2 FAST REW", Unmapped_Key, 0x04, 0x6B);
630   addSharpKey("TAPE 2 FWD", Unmapped_Key, 0x04, 0x6C);
631   addSharpKey("TAPE_PAUSE", Unmapped_Key, 0x04, 0x6D);
632   addSharpKey("TAPE 2 STOP", Unmapped_Key, 0x04, 0x6E);
633   addSharpKey("KEY_RECORD", Record_Key, 0x04, 0x6F);
634   addSharpKey("remain", Unmapped_Key, 0x04, 0x74);
635
636   addSharpKey("KEY_1", One_Key, 0x08, 0x42);
637   addSharpKey("KEY_2", Two_Key, 0x08, 0x43);
638   addSharpKey("KEY_3", Three_Key, 0x08, 0x44);
639   addSharpKey("KEY_4", Four_Key, 0x08, 0x45);
640   addSharpKey("KEY_5", Five_Key, 0x08, 0x46);
641   addSharpKey("KEY_6", Six_Key, 0x08, 0x47);
642   addSharpKey("KEY_7", Seven_Key, 0x08, 0x48);
643   addSharpKey("KEY_8", Eight_Key, 0x08, 0x49);
644   addSharpKey("KEY_9", Nine_Key, 0x08, 0x4A);
645   addSharpKey("10", Zero_Key, 0x08, 0x4B);
646   addSharpKey("+10", DoubleDigit_Key, 0x08, 0x4C);
647   addSharpKey("KEY_PROGRAM", Program_Key, 0x08, 0x4D);
648   addSharpKey("open_close", Eject_Key, 0x08, 0x50);
649   addSharpKey("KEY_CANCEL", Clear_Key, 0x08, 0x51); // "cancel", "CD_CANCEL"
650   addSharpKey("time", Unmapped_Key, 0x08, 0x53); // "CD_TIME"
651   addSharpKey("repeat", Repeat_Key, 0x08, 0x54); // "CD_REPEAT"
652   addSharpKey("DIRECT", Unmapped_Key, 0x08, 0x57); // "direct"
653   addSharpKey("KEY_NEXT", Next_Key, 0x08, 0x58); // "cdfwd", "cdnexttrack"
654   addSharpKey("KEY_PREVIOUS", Previous_Key, 0x08, 0x59); // "cdrew", "cdprevtrack"
655   addSharpKey("KEY_FORWARD", FastForward_Key, 0x08, 0x5A); // "cdffwd"
656   addSharpKey("KEY_REWIND", Rewind_Key, 0x08, 0x5B); // "cdfrew"
657   addSharpKey("KEY_PLAY", Play_Key, 0x08, 0x5C); // "cdplay"
658   addSharpKey("KEY_PAUSE", Pause_Key, 0x08, 0x5D); // "cdpause"
659   addSharpKey("KEY_STOP", Stop_Key, 0x08, 0x5E); // "CD_STOP"
660   addSharpKey("auto_space", Unmapped_Key, 0x08, 0x61);
661   addSharpKey("auto_edit", Unmapped_Key, 0x08, 0x63);
662   addSharpKey("random", Random_Key, 0x08, 0x6A); // "CD_RANDOM"
663   addSharpKey("cdskip", Unmapped_Key, 0x08, 0x6B);
664   addSharpKey("DISC_SKIP+", DiscSelect_Key, 0x08, 0x6B); // "cdskip"
665   addSharpKey("DISC_SKIP-", Unmapped_Key, 0x08, 0x6E);
666   addSharpKey("peak", Unmapped_Key, 0x08, 0x6F);
667   addSharpKey("edit", Unmapped_Key, 0x08, 0x70); // "CD_EDIT"
668   addSharpKey("fader", Unmapped_Key, 0x08, 0x76);
669   addSharpKey("pitch+", Unmapped_Key, 0x08, 0x77);
670   addSharpKey("pitch-", Unmapped_Key, 0x08, 0x78);
671   addSharpKey("SDB", Unmapped_Key, 0x08, 0xEA);
672
673   addSharpKey("KEY_VOLUMEDOWN", VolumeDown_Key, 0x0C, 0x4C);
674   addSharpKey("KEY_VOLUMEUP", VolumeUp_Key, 0x0C, 0x4D);
675   addSharpKey("PRESET UP", Up_Key, 0x0C, 0x4E); // "up"
676   addSharpKey("PRESET DOWN", Down_Key, 0x0C, 0x4F); // "dwn"
677   addSharpKey("KEY_POWER", Power_Key, 0x0C, 0x50); // "aus"
678   addSharpKey("RCVR_VIDEO", Unmapped_Key, 0x0C, 0x53);
679   addSharpKey("RCVR_PHONO", Unmapped_Key, 0x0C, 0x58);
680   addSharpKey("tuner", Unmapped_Key, 0x0C, 0x59); // "RCVR_TUNER"
681   addSharpKey("RCVR_TAPE_MON", Unmapped_Key, 0x0C, 0x5C);
682   addSharpKey("RCVR_TAPE1", Unmapped_Key, 0x0C, 0x5D);
683   addSharpKey("RCVR_TAPE2", Unmapped_Key, 0x0C, 0x5E);
684   addSharpKey("KEY_FN", Unmapped_Key, 0x0C, 0x5F); // "func"
685   addSharpKey("RCVR_CD", Unmapped_Key, 0x0C, 0x6A);
686   addSharpKey("KEY_SLEEP", Sleep_Key, 0x0C, 0x72);
687 //  addSharpKey("RCVR_PANEL", Info_Key, 0x0C, 0x7E);  // Either 0x7E or 0xDE here
688   addSharpKey("memo", Unmapped_Key, 0x0C, 0xD1);
689   addSharpKey("RDS", Unmapped_Key, 0x0C, 0xD2); // "TUNER_RDS"
690   addSharpKey("CT", Unmapped_Key, 0x0C, 0xD3); // "TUNER_CT"
691   addSharpKey("pty", Unmapped_Key, 0x0C, 0xD4); // "TUNER_PTY"
692   addSharpKey("TUNER BAND", Unmapped_Key, 0x0C, 0xD7);
693   addSharpKey("TUNER KEY_UP", ChannelUp_Key, 0x0C, 0xD9);
694   addSharpKey("TUNER KEY_DOWN", ChannelDown_Key, 0x0C, 0xDA);
695   addSharpKey("panel", Info_Key, 0x0C, 0xDE);
696   addSharpKey("eon", Unmapped_Key, 0x0C, 0xFE);
697 }
698
699
700 DenonAudio1a::DenonAudio1a(
701   QObject *guiObject,
702   unsigned int index)
703   : DenonAudio1(guiObject, index)
704 {
705   setKeysetName("Audio Keyset 1a");
706
707   addControlledDevice(Denon_Make, "UCD-F07", Audio_Device);
708   addControlledDevice(Denon_Make, "UDR-F07", Audio_Device);
709   addControlledDevice(Denon_Make, "UDRA-F07", Audio_Device);
710
711   addSharpKey("rec", Record_Key, 0x04, 0x5F);
712   addSharpKey("side_a/b", Unmapped_Key, 0x08, 0x53);
713 }
714
715
716 DenonAudio1b::DenonAudio1b(
717   QObject *guiObject,
718   unsigned int index)
719   : DenonAudio1(guiObject, index)
720 {
721   setKeysetName("Audio Keyset 1b");
722
723   addControlledDevice(Denon_Make, "DCD-1015", Audio_Device);
724   addControlledDevice(Denon_Make, "DCD-655", Audio_Device);
725
726   addSharpKey("vol_up", VolumeUp_Key, 0x08, 0x4E);
727   addSharpKey("vol_down", VolumeDown_Key, 0x08, 0x4F);
728   addSharpKey("display", Info_Key, 0x08, 0x75);
729 }
730
731
732 DenonAudio1c::DenonAudio1c(
733   QObject *guiObject,
734   unsigned int index)
735   : DenonAudio1b(guiObject, index)
736 {
737   setKeysetName("Audio Keyset 1c");
738
739   addControlledDevice(Denon_Make, "DCM-260", Audio_Device);
740
741   addSharpKey("DISC_SELECT", DiscSelect_Key, 0x08, 0x62);
742 }
743
744
745 DenonAudio1d::DenonAudio1d(
746   QObject *guiObject,
747   unsigned int index)
748   : DenonAudio1(guiObject, index)
749 {
750   setKeysetName("Audio Keyset 1d");
751
752   addControlledDevice(Denon_Make, "UDRA-M7", Audio_Device);
753   addControlledDevice(Denon_Make, "UPA-F88", Audio_Device);
754   addControlledDevice(Denon_Make, "UCD-F88", Audio_Device);
755   addControlledDevice(Denon_Make, "UDR-F88", Audio_Device);
756   addControlledDevice(Denon_Make, "UTU-F88", Audio_Device);
757   addControlledDevice(Denon_Make, "RC-846", Audio_Device);
758
759   addSharpKey("TAPE_REC", Record_Key, 0x04, 0x5F);
760
761   addSharpKey("MD_STOP", Unmapped_Key, 0x06, 0xE1);
762   addSharpKey("MD_PLAY", Unmapped_Key, 0x06, 0xE2);
763   addSharpKey("MD_REC", Unmapped_Key, 0x06, 0xE5);
764   addSharpKey("MD_SEARCH_NEXT", Unmapped_Key, 0x06, 0xE9);
765   addSharpKey("MD_SEARCH_PREVIOUS", Unmapped_Key, 0x06, 0xEA);
766 }
767
768
769 DenonAudio2::DenonAudio2(
770   QObject *guiObject,
771   unsigned int index)
772   : PIRKeysetMetaData(
773       "Audio Keyset 2",
774       Denon_Make,
775       index)
776 {
777   addControlledDevice(Denon_Make, "D-C30", Audio_Device);
778
779   threadableProtocol = new NECProtocol(guiObject, index, Standard_NEC);
780
781 //  setPreData(0xDA25, 16);
782   setPreData(0x5B, 8);
783
784   addKey("Power", Power_Key, 0x00, 8);
785   addKey("Volume_Up", VolumeUp_Key, 0x01, 8);
786   addKey("Volume_Down", VolumeDown_Key, 0x02, 8);
787   addKey("Remain", Unmapped_Key, 0x03, 8);
788   addKey("A.Edit", Unmapped_Key, 0x04, 8);
789   addKey("Tuner_Band", TunerBand_Key, 0x07, 8);
790   addKey("Tape_1/2", Unmapped_Key, 0x09, 8);
791   addKey("P.Mode", Unmapped_Key, 0x0B, 8);
792   addKey("EQ_Pattern", Unmapped_Key, 0x11, 8);
793   addKey("CD_Play", Play_Key, 0x12, 8);
794   addKey("CD_Stop", Stop_Key, 0x13, 8);
795   addKey("Skip_Forward", Next_Key, 0x14, 8);
796   addKey("Skip_Backward", Previous_Key, 0x15, 8);
797   addKey("Prog", Program_Key, 0x16, 8);
798   addKey("Repeat", Repeat_Key, 0x17, 8);
799   addKey("Open/Close", Eject_Key, 0x18, 8);
800   addKey("Fast_Forward", FastForward_Key, 0x1B, 8);
801   addKey("Fast_Rewind", Rewind_Key, 0x1C, 8);
802   addKey("Stop", Unmapped_Key, 0x1D, 8);
803   addKey("Play_Forward", Unmapped_Key, 0x19, 8);
804   addKey("Record_Pause", Unmapped_Key, 0x1F, 8);
805   addKey("1", One_Key, 0x4D, 8);
806   addKey("2", Two_Key, 0x4E, 8);
807   addKey("3", Three_Key, 0x4F, 8);
808   addKey("4", Four_Key, 0x50, 8);
809   addKey("5", Five_Key, 0x51, 8);
810   addKey("6", Six_Key, 0x52, 8);
811   addKey("7", Seven_Key, 0x53, 8);
812   addKey("8", Eight_Key, 0x54, 8);
813   addKey("9", Nine_Key, 0x55, 8);
814   addKey("10", Unmapped_Key, 0x56, 8);
815   addKey("10+/12", DoubleDigit_Key, 0x57, 8);
816   addKey("Random", Random_Key, 0x5A, 8);
817   addKey("0/11", Zero_Key, 0x5B, 8);
818   addKey("Disc", Unmapped_Key, 0x5E, 8);
819   addKey("Play_Backward", Unmapped_Key, 0xD2, 8);
820 }
821
822
823 DenonAudio3::DenonAudio3(
824   QObject *guiObject,
825   unsigned int index)
826   : PIRKeysetMetaData(
827       "Audio Keyset 3",
828       Denon_Make,
829       index)
830 {
831   NECProtocol *np = new NECProtocol(
832     guiObject,
833     index,
834     336, 717,
835     336, 1773,
836     67458, true,
837     LIRC_NEC);
838
839   threadableProtocol = np;
840
841   np->setElevenBitToggle(true);
842
843   np->setTrailerPulse(336);
844
845   addKey("open_close", Eject_Key, 0x8828, 15);
846   addKey("call", Unmapped_Key, 0x8928, 15);
847   addKey("prog", Program_Key, 0x8B08, 15);
848   addKey("direct", Unmapped_Key, 0x8BA8, 15);
849   addKey("1", One_Key, 0x8908, 15);
850   addKey("2", Two_Key, 0x8B08, 15);
851   addKey("3", Three_Key, 0x8888, 15);
852   addKey("4", Four_Key, 0x8A88, 15);
853   addKey("5", Five_Key, 0x8988, 15);
854   addKey("6", Six_Key, 0x8B88, 15);
855   addKey("7", Seven_Key, 0x8848, 15);
856   addKey("8", Eight_Key, 0x8A48, 15);
857   addKey("9", Nine_Key, 0x8948, 15);
858   addKey("10", Zero_Key, 0x8B48, 15);
859   addKey("+10", DoubleDigit_Key, 0x88C8, 15);
860   addKey("play", Play_Key, 0x88E8, 15);
861   addKey("vol_up", VolumeUp_Key, 0x89C8, 15);
862   addKey("vol_down", VolumeDown_Key, 0x8BC8, 15);
863   addKey("pause", Pause_Key, 0x8AE8, 15);
864   addKey("stop", Stop_Key, 0x89E8, 15);
865   addKey("a_space", Unmapped_Key, 0x8A18, 15);
866   addKey("all", Unmapped_Key, 0x88A8, 15);
867   addKey("a-b", Unmapped_Key, 0x8AA8, 15);
868   addKey("rewind", Rewind_Key, 0x8B68, 15);
869   addKey("wind", FastForward_Key, 0x8968, 15);
870   addKey("prev", Previous_Key, 0x8A68, 15);
871   addKey("next", Next_Key, 0x8868, 15);
872 }
873
874
875 DenonAudio4::DenonAudio4(
876   QObject *guiObject,
877   unsigned int index)
878   : PIRKeysetMetaData(
879       "Audio Keyset 4",
880       Denon_Make,
881       index)
882 {
883   addControlledDevice(Denon_Make, "DMD-800", Audio_Device);
884
885   NECProtocol *np = new NECProtocol(
886     guiObject,
887     index,
888     275, 775,
889     275, 1900,
890     43000, false,
891     LIRC_NEC);
892
893   threadableProtocol = np;
894
895   np->setElevenBitToggle(true);
896
897   np->setTrailerPulse(275);
898
899   addKey("EJECT", Eject_Key, 0x319C, 15);
900   addKey("POWER", Power_Key, 0x301C, 15);
901   addKey("PLAY", Play_Key, 0x311C, 15);
902   addKey("PAUSE", Pause_Key, 0x331C, 15);
903   addKey("STOP", Stop_Key, 0x321C, 15);
904   addKey("REC", Record_Key, 0x329C, 15);
905   addKey("1", One_Key, 0x320C, 15);
906   addKey("2", Two_Key, 0x310C, 15);
907   addKey("3", Three_Key, 0x330C, 15);
908   addKey("4", Four_Key, 0x308C, 15);
909   addKey("5", Five_Key, 0x328C, 15);
910   addKey("6", Six_Key, 0x318C, 15);
911   addKey("7", Seven_Key, 0x338C, 15);
912   addKey("8", Eight_Key, 0x304C, 15);
913   addKey("9", Nine_Key, 0x324C, 15);
914   addKey("10", Zero_Key, 0x314C, 15);
915   addKey("+10", DoubleDigit_Key, 0x305C, 15);
916   addKey("CALL", Unmapped_Key, 0x31BC, 15);
917   addKey("PREV_TRACK", Previous_Key, 0x315C, 15);
918   addKey("NEXT_TRACK", Next_Key, 0x325C, 15);
919   addKey("BACK", Replay_Key, 0x30DC, 15);
920   addKey("FORWARD", Advance_Key, 0x335C, 15);
921   addKey("CLEAR", Clear_Key, 0x33EC, 15);
922   addKey("PROG", Program_Key, 0x303C, 15);
923   addKey("REPEAT", Repeat_Key, 0x323C, 15);
924   addKey("RANDOM", Random_Key, 0x333C, 15);
925   addKey("EDIT", Unmapped_Key, 0x33DC, 15);
926   addKey("ENTER", Select_Key, 0x31EC, 15);
927   addKey("TIME", Unmapped_Key, 0x30BC, 15);
928   addKey("CHAR", Unmapped_Key, 0x32EC, 15);
929   addKey("TITLE", Unmapped_Key, 0x32BC, 15);
930 }
931
932
933 DenonAudio5::DenonAudio5(
934   QObject *guiObject,
935   unsigned int index)
936   : PIRKeysetMetaData(
937       "Audio Keyset 5",
938       Denon_Make,
939       index)
940 {
941   addControlledDevice(Denon_Make, "D-G1MD", Audio_Device);
942
943   threadableProtocol = new NECProtocol(guiObject, index, Extended_NEC);
944
945 //  setPreData(0x4040, 16);
946   setPreData(0x0202, 16);
947
948   addKey("fm/am", Unmapped_Key, 0x00, 8);
949   addKey("rds", Unmapped_Key, 0x01, 8);
950   addKey("1", One_Key, 0x02, 8);
951   addKey("6", Six_Key, 0x03, 8);
952   addKey("+10", DoubleDigit_Key, 0x04, 8);
953   addKey("mdrec", Unmapped_Key, 0x05, 8);
954   addKey("recmute", Unmapped_Key, 0x06, 8);
955   addKey("edit", Unmapped_Key, 0x07, 8);
956   addKey("tape", Unmapped_Key, 0x08, 8);
957   addKey("pty", Unmapped_Key, 0x09, 8);
958   addKey("2", Two_Key, 0x0A, 8);
959   addKey("7", Seven_Key, 0x0B, 8);
960   addKey("+100", PlusOneHundred_Key, 0x0C, 8);
961   addKey("pickrec", Unmapped_Key, 0x0D, 8);
962   addKey("revmode", Unmapped_Key, 0x0E, 8);
963   addKey("editcancel", Unmapped_Key, 0x0F, 8);
964   addKey("cd", Unmapped_Key, 0x10, 8);
965   addKey("ct", Unmapped_Key, 0x11, 8);
966   addKey("3", Three_Key, 0x12, 8);
967   addKey("8", Eight_Key, 0x13, 8);
968   addKey("clock", Unmapped_Key, 0x14, 8);
969   addKey("checkspace", Unmapped_Key, 0x15, 8);
970   addKey("dolby", Unmapped_Key, 0x16, 8);
971   addKey("prog", Program_Key, 0x17, 8);
972   addKey("aux", Unmapped_Key, 0x18, 8);
973   addKey("rt", Unmapped_Key, 0x19, 8);
974   addKey("4", Four_Key, 0x1A, 8);
975   addKey("9", Nine_Key, 0x1B, 8);
976   addKey("timer", Timer_Key, 0x1C, 8);
977   addKey("clear", Clear_Key, 0x1D, 8);
978   addKey("titleinput", Unmapped_Key, 0x1E, 8);
979   addKey("vol-", VolumeDown_Key, 0x1F, 8);
980   addKey("md", Unmapped_Key, 0x40, 8);
981   addKey("fmmode", Unmapped_Key, 0x41, 8);
982   addKey("5", Five_Key, 0x42, 8);
983   addKey("0", Zero_Key, 0x43, 8);
984   addKey("sleep", Sleep_Key, 0x44, 8);
985   addKey("set", Unmapped_Key, 0x45, 8);
986   addKey("enter", Enter_Key, 0x46, 8);
987   addKey("5modesrs", Surround_Key, 0x47, 8);
988   addKey("titlesearch", Unmapped_Key, 0x48, 8);
989   addKey("vol+", VolumeUp_Key, 0x49, 8);
990   addKey("repeat", Repeat_Key, 0x4A, 8);
991   addKey("random", Random_Key, 0x4B, 8);
992   addKey("power", Power_Key, 0x4C, 8);
993   addKey("timedisp", Info_Key, 0x4D, 8);
994   addKey("eqmode", Unmapped_Key, 0x4E, 8);
995   addKey("mute", Mute_Key, 0x4F, 8);
996   addKey("bass", Unmapped_Key, 0x50, 8);
997   addKey("forward", FastForward_Key, 0x51, 8);
998   addKey("prev", Previous_Key, 0x52, 8);
999   addKey("next", Next_Key, 0x53, 8);
1000   addKey("backward", Rewind_Key, 0x56, 8);
1001   addKey("stop", Stop_Key, 0x57, 8);
1002 }