Advanced Settings Panel
[pierogi] / keysets / pioneer.cpp
1 #include "pioneer.h"
2 #include "protocols/pioneerprotocol.h"
3 #include "protocols/lircprotocol.h"
4
5 PioneerTV1::PioneerTV1(
6   unsigned int index)
7   : PIRKeysetMetaData(
8       "TV Keyset 1",
9       Pioneer_Make,
10       index)
11 {
12 }
13
14
15 void PioneerTV1::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 PioneerProtocol(guiObject, index);
25
26   addNECKey("0", Zero_Key, 0xAA, 0x00);
27   addNECKey("1", One_Key, 0xAA, 0x01);
28   addNECKey("2", Two_Key, 0xAA, 0x02);
29   addNECKey("3", Three_Key, 0xAA, 0x03);
30   addNECKey("4", Four_Key, 0xAA, 0x04);
31   addNECKey("5", Five_Key, 0xAA, 0x05);
32   addNECKey("6", Six_Key, 0xAA, 0x06);
33   addNECKey("7", Seven_Key, 0xAA, 0x07);
34   addNECKey("8", Eight_Key, 0xAA, 0x08);
35   addNECKey("9", Nine_Key, 0xAA, 0x09);
36   addNECKey("VOL_PLUS", VolumeUp_Key, 0xAA, 0x0A);
37   addNECKey("VOL_MINUS", VolumeDown_Key, 0xAA, 0x0B);
38
39   addNECKey("CH_PLUS", ChannelUp_Key, 0xAA, 0x10);
40   addNECKey("CH_MINUS", ChannelDown_Key, 0xAA, 0x11);
41   addNECKey("POWER_ON_OFF", Power_Key, 0xAA, 0x1C);
42   addNECKey("RIGHT", Right_Key, 0xAA, 0x24);
43   addNECKey("LEFT", Left_Key, 0xAA, 0x25);
44   addNECKey("UP", Up_Key, 0xAA, 0x26);
45   addNECKey("DOWN", Down_Key, 0xAA, 0x27);
46   addNECKey("ENTER", Enter_Key, 0xAA, 0x28);
47   addNECKey("REC", Record_Key, 0xAA, 0x38);
48   addNECKey("INPUT_ANT", AntennaInput_Key, 0xAA, 0x45);
49   addNECKey("MUTING", Mute_Key, 0xAA, 0x49);
50   addNECKey("DISPLAY", Unmapped_Key, 0xAA, 0x4A);
51
52   addPioneerKey("CH_ENTER", Enter_Key, 0xAA, 0x5A, 0xAF, 0x61);
53   addPioneerKey("CH_RETURN", PrevChannel_Key, 0xAA, 0x5A, 0xAF, 0x62);
54   addPioneerKey("DOT", Unmapped_Key, 0xAA, 0x5A, 0xAF, 0x64);
55   addPioneerKey("INPUT_PC", PCInput_Key, 0xAA, 0x5A, 0xAF, 0x74);
56   addPioneerKey("INPUT1", Unmapped_Key, 0xAA, 0x5A, 0xAF, 0x7A);
57   addPioneerKey("INPUT2", Unmapped_Key, 0xAA, 0x5A, 0xAF, 0x7B);
58   addPioneerKey("INPUT3", Unmapped_Key, 0xAA, 0x5A, 0xAF, 0x7C);
59   addPioneerKey("INPUT4", Unmapped_Key, 0xAA, 0x5A, 0xAF, 0x7D);
60   addPioneerKey("HDMI5", HDMIInput_Key, 0xAA, 0x5A, 0xAF, 0x7E);
61   addPioneerKey("HDMI6", HDMI2Input_Key, 0xAA, 0x5A, 0xAF, 0x7F);
62
63   addPioneerKey("HOME_MENU", Unmapped_Key, 0xAA, 0x5B, 0xAF, 0x20);
64   addPioneerKey("RETURN", Exit_Key, 0xAA, 0x5B, 0xAF, 0x22);
65   addPioneerKey("TV_GUIDE", Guide_Key, 0xAA, 0x5B, 0xAF, 0x24);
66   addPioneerKey("INFO", Info_Key, 0xAA, 0x5B, 0xAF, 0x25);
67   addPioneerKey("MENU", Menu_Key, 0xAA, 0x5B, 0xAF, 0x27);
68   addPioneerKey("DAY_PLUS", Unmapped_Key, 0xAA, 0x5B, 0xAF, 0x2A);
69   addPioneerKey("DAY_MINUS", Unmapped_Key, 0xAA, 0x5B, 0xAF, 0x2B);
70   addPioneerKey("RED_B", Red_Key, 0xAA, 0x5B, 0xAF, 0x2C);
71   addPioneerKey("GREEN_C", Green_Key, 0xAA, 0x5B, 0xAF, 0x2D);
72   addPioneerKey("YELLOW_D", Yellow_Key, 0xAA, 0x5B, 0xAF, 0x2E);
73   addPioneerKey("BLUE_A", Blue_Key, 0xAA, 0x5B, 0xAF, 0x2F);
74   addPioneerKey("PAGE_PLUS", PageUp_Key, 0xAA, 0x5B, 0xAF, 0x33);
75   addPioneerKey("PAGE_MINUS", PageDown_Key, 0xAA, 0x5B, 0xAF, 0x34);
76
77   addNECKey("AV_SELECTION", Input_Key, 0xAA, 0x5E); // is this right?
78   addPioneerKey("SCREEN_SIZE", AspectRatio_Key, 0xAA, 0x5E, 0xAF, 0x3A);
79   addPioneerKey("SLEEP", Sleep_Key, 0xAA, 0x5E, 0xAF, 0x70);
80 }
81
82
83 PioneerTV2::PioneerTV2(
84   unsigned int index)
85   : PIRKeysetMetaData(
86       "TV (STB) Keyset 2",
87       Pioneer_Make,
88       index)
89 {
90 }
91
92
93 void PioneerTV2::populateProtocol(
94   QObject *guiObject)
95 {
96   if (threadableProtocol)
97   {
98     // If the pointer is not null, the keyset must already be populated.
99     return;
100   }
101
102   threadableProtocol = new PioneerProtocol(guiObject, index);
103
104   // I'm not sure this keyset even needs the "0xAA" keys at all...
105   addNECKey("tv-dengen", Unmapped_Key, 0xAA, 0x1C);
106   addNECKey("tv-nyuuryoku-kirikae", Unmapped_Key, 0xAA, 0x13);
107   addNECKey("tv-channel-up", Unmapped_Key, 0xAA, 0x10);
108   addNECKey("tv-channel-down", Unmapped_Key, 0xAA, 0x11);
109   addNECKey("dengen", Power_Key, 0xAC, 0x1C);
110   addNECKey("sleep", Sleep_Key, 0xAC, 0x48);
111   addNECKey("1", One_Key, 0xAC, 0x01);
112   addNECKey("2", Two_Key, 0xAC, 0x02);
113   addNECKey("3", Three_Key, 0xAC, 0x03);
114   addNECKey("4", Four_Key, 0xAC, 0x04);
115   addNECKey("5", Five_Key, 0xAC, 0x05);
116   addNECKey("6", Six_Key, 0xAC, 0x06);
117   addNECKey("7", Seven_Key, 0xAC, 0x07);
118   addNECKey("8", Eight_Key, 0xAC, 0x08);
119   addNECKey("9", Nine_Key, 0xAC, 0x09);
120   addNECKey("10-0", Zero_Key, 0xAC, 0x00);
121   addNECKey("channel-up", ChannelUp_Key, 0xAC, 0x10);
122   addNECKey("channel-down", ChannelDown_Key, 0xAC, 0x11);
123   addNECKey("mute", Mute_Key, 0xAA, 0x49);
124   addNECKey("volume-up", VolumeUp_Key, 0xAA, 0x0A);
125   addNECKey("volume-down", VolumeDown_Key, 0xAA, 0x0B);
126   addNECKey("ff-left", Unmapped_Key, 0xAC, 0x4B);
127   addNECKey("ff-right", Unmapped_Key, 0xAC, 0x13);
128   addNECKey("ff-down", Unmapped_Key, 0xAC, 0x4F);
129   addNECKey("ff-up", Unmapped_Key, 0xAC, 0x4E);
130   addNECKey("up", Up_Key, 0xAC, 0x58);
131   addNECKey("down", Down_Key, 0xAC, 0x59);
132   addNECKey("left", Left_Key, 0xAC, 0x57);
133   addNECKey("right", Right_Key, 0xAC, 0x56);
134   addNECKey("kettei", Unmapped_Key, 0xAC, 0x4C);
135   addNECKey("guide", Guide_Key, 0xAC, 0x50);
136   addNECKey("shousai", Unmapped_Key, 0xAC, 0x54);
137   addNECKey("modoru", Unmapped_Key, 0xAC, 0x53);
138   addNECKey("navi", Unmapped_Key, 0xAC, 0x18);
139   addNECKey("okonomi", Unmapped_Key, 0xAC, 0x44);
140   addNECKey("channel-hyouji", Unmapped_Key, 0xAC, 0x4A);
141   addNECKey("channel-ichiran", Unmapped_Key, 0xAC, 0x5B);
142   addNECKey("channel-return", Unmapped_Key, 0xAC, 0x5C);
143   addNECKey("onsei", Unmapped_Key, 0xAC, 0x1E);
144 //  addNECKey(, Unmapped_Key, 0xAC, 0x33); //"catv", "data", "aoi", "akai", "midori", "kiiroi", "vod", "browser", "genre-kensaku", "gazou"
145   addPioneerKey("chijo", Unmapped_Key, 0xAC, 0x33, 0xAF, 0x3B);
146   addPioneerKey("bscs", Unmapped_Key, 0xAC, 0x33, 0xAF, 0x3D);
147   addPioneerKey("ch", Unmapped_Key, 0xAC, 0x33, 0xAF, 0x3C);
148   addPioneerKey("11", Unmapped_Key, 0xAC, 0x33, 0xAF, 0x39);
149   addPioneerKey("12", Unmapped_Key, 0xAC, 0x33, 0xAF, 0x38);
150   addPioneerKey("jimaku", Unmapped_Key, 0xAC, 0x33, 0xAF, 0x31);
151 }
152
153
154 PioneerTV3::PioneerTV3(
155   unsigned int index)
156   : PIRKeysetMetaData(
157       "TV (STB) Keyset 3",
158       Pioneer_Make,
159       index)
160 {
161 }
162
163
164 void PioneerTV3::populateProtocol(
165   QObject *guiObject)
166 {
167   if (threadableProtocol)
168   {
169     // If the pointer is not null, the keyset must already be populated.
170     return;
171   }
172
173   threadableProtocol = new PioneerProtocol(guiObject, index);
174
175   addNECKey("KEY_VOLUMEUP", VolumeUp_Key, 0xAA, 0x0A);
176   addNECKey("KEY_VOLUMEDOWN", VolumeDown_Key, 0xAA, 0x0B);
177   addNECKey("KEY_CHANNELUP", ChannelUp_Key, 0xAA, 0x10);
178   addNECKey("KEY_CHANNELDOWN", ChannelDown_Key, 0xAA, 0x11);
179   addNECKey("KEY_VCR", Unmapped_Key, 0xAA, 0x13);
180   addNECKey("KEY_POWER3", Unmapped_Key, 0xAA, 0x1C);
181   addNECKey("KEY_MUTE", Mute_Key, 0xAA, 0x49);
182   addNECKey("KEY_UP", Up_Key, 0xAA, 0xE9);
183   addNECKey("KEY_DOWN", Down_Key, 0xAA, 0xEA);
184   addNECKey("KEY_RIGHT", Right_Key, 0xAA, 0xEB);
185   addNECKey("KEY_LEFT", Left_Key, 0xAA, 0xEC);
186   addNECKey("KEY_OK", Select_Key, 0xAA, 0xED);
187
188   addPioneerKey("KEY_0", Zero_Key, 0xAA, 0xEE, 0xAF, 0x20);
189   addPioneerKey("KEY_1", One_Key, 0xAA, 0xEE, 0xAF, 0x21);
190   addPioneerKey("KEY_2", Two_Key, 0xAA, 0xEE, 0xAF, 0x22);
191   addPioneerKey("KEY_3", Three_Key, 0xAA, 0xEE, 0xAF, 0x23);
192   addPioneerKey("KEY_4", Four_Key, 0xAA, 0xEE, 0xAF, 0x24);
193   addPioneerKey("KEY_5", Five_Key, 0xAA, 0xEE, 0xAF, 0x25);
194   addPioneerKey("KEY_6", Six_Key, 0xAA, 0xEE, 0xAF, 0x26);
195   addPioneerKey("KEY_7", Seven_Key, 0xAA, 0xEE, 0xAF, 0x27);
196   addPioneerKey("KEY_8", Eight_Key, 0xAA, 0xEE, 0xAF, 0x28);
197   addPioneerKey("KEY_9", Nine_Key, 0xAA, 0xEE, 0xAF, 0x29);
198   addPioneerKey("KEY_POWER", Power_Key, 0xAA, 0xEE, 0xAF, 0x2A);
199   addPioneerKey("KEY_PROGRAM", Program_Key, 0xAA, 0xEE, 0xAF, 0x2D);
200   addPioneerKey("KEY_PERSO", Unmapped_Key, 0xAA, 0xEE, 0xAF, 0x30);
201   addPioneerKey("KEY_A", Unmapped_Key, 0xAA, 0xEE, 0xAF, 0x31);
202   addPioneerKey("KEY_B", Unmapped_Key, 0xAA, 0xEE, 0xAF, 0x32);
203   addPioneerKey("KEY_C", Unmapped_Key, 0xAA, 0xEE, 0xAF, 0x33);
204   addPioneerKey("KEY_D", Unmapped_Key, 0xAA, 0xEE, 0xAF, 0x34);
205   addPioneerKey("KEY_E", Unmapped_Key, 0xAA, 0xEE, 0xAF, 0x35);
206   addPioneerKey("KEY_SAT", Unmapped_Key, 0xAA, 0xEE, 0xAF, 0x37);
207   addPioneerKey("KEY_EPG", Guide_Key, 0xAA, 0xEE, 0xAF, 0x38);
208   addPioneerKey("KEY_FAVORITES", Favorites_Key, 0xAA, 0xEE, 0xAF, 0x39);
209   addPioneerKey("KEY_ESC", Exit_Key, 0xAA, 0xEE, 0xAF, 0x3A);
210   addPioneerKey("KEY_SERVICE", Unmapped_Key, 0xAA, 0xEE, 0xAF, 0x3B);
211   addPioneerKey("KEY_PLUS", Unmapped_Key, 0xAA, 0xEE, 0xAF, 0x3C);
212   addPioneerKey("KEY_AUDIO", Audio_Key, 0xAA, 0xEE, 0xAF, 0x60);
213   addPioneerKey("KEY_FREEZE", Pause_Key, 0xAA, 0xEE, 0xAF, 0x61);
214
215   addNECKey("KEY_FORWARD", FastForward_Key, 0xAB, 0x10);
216   addNECKey("KEY_REWIND", Rewind_Key, 0xAB, 0x11);
217   addNECKey("KEY_RECORD", Record_Key, 0xAB, 0x14);
218   addNECKey("KEY_STOP", Stop_Key, 0xAB, 0x16);
219   addNECKey("KEY_PLAY", Play_Key, 0xAB, 0x17);
220   addNECKey("KEY_PAUSE", Pause_Key, 0xAB, 0x18);
221   addNECKey("KEY_POWER2", Unmapped_Key, 0xAB, 0x1C);
222 }
223
224
225 PioneerAudio1::PioneerAudio1(
226   unsigned int index)
227   : PIRKeysetMetaData(
228       "Audio Keyset 1",
229       Pioneer_Make,
230       index)
231 {
232   addControlledDevice(Pioneer_Make, "XC-L11 (Radio/CD)", Audio_Device);
233   addControlledDevice(Pioneer_Make, "Hi-Fi DU-L7", Audio_Device);
234   addControlledDevice(Pioneer_Make, "CU-XR015", Audio_Device);
235   addControlledDevice(Pioneer_Make, "A880", Audio_Device);
236 }
237
238
239 void PioneerAudio1::populateProtocol(
240   QObject *guiObject)
241 {
242   if (threadableProtocol)
243   {
244     // If the pointer is not null, the keyset must already be populated.
245     return;
246   }
247
248   threadableProtocol = new PioneerProtocol(guiObject, index);
249
250   addNECKey("TAPE2_FWD", Unmapped_Key, 0xA1, 0x10);
251   addNECKey("TAPE2_RWD", Unmapped_Key, 0xA1, 0x11);
252   addNECKey("TAPE2_STOP", Unmapped_Key, 0xA1, 0x16);
253   addNECKey("tape_fforw", Unmapped_Key, 0xA1, 0x56);
254   addNECKey("tape_fback", Unmapped_Key, 0xA1, 0x57);
255   addNECKey("tape_back", Unmapped_Key, 0xA1, 0x5B);
256   addNECKey("tape_stop", Unmapped_Key, 0xA1, 0x5C);
257   addNECKey("tape_forw", Unmapped_Key, 0xA1, 0x5D);
258
259   // Might want subclass for CD?
260   addNECKey("REPEAT", Repeat_Key, 0xA2, 0x0C);
261   addNECKey("PGM", Program_Key, 0xA2, 0x0D);
262   addNECKey("cd_forw", Unmapped_Key, 0xA2, 0x10);
263   addNECKey("cd_back", Unmapped_Key, 0xA2, 0x11);
264   addNECKey("cd_stop", Unmapped_Key, 0xA2, 0x16);
265   addNECKey("cd_play", Unmapped_Key, 0xA2, 0x17);
266   addNECKey("cd_pause", Unmapped_Key, 0xA2, 0x18);
267   addNECKey("DISC_CHANGE", NextDisc_Key, 0xA2, 0x1D);
268   addNECKey("disc1", Unmapped_Key, 0xA2, 0x1E);
269   addNECKey("disc2", Unmapped_Key, 0xA2, 0x1F);
270   addNECKey("clear", Unmapped_Key, 0xA2, 0x45);
271   addNECKey("cd_rnd", Random_Key, 0xA2, 0x4A); // "random"
272   addNECKey("disc3", Unmapped_Key, 0xA2, 0x50);
273   addNECKey("OPEN", Eject_Key, 0xA2, 0x51);
274
275   addNECKey("station+", ChannelUp_Key, 0xA4, 0x10);
276   addNECKey("station-", ChannelDown_Key, 0xA4, 0x11);
277   addNECKey("mono", FMMode_Key, 0xA4, 0x1E);
278
279   addNECKey("1", One_Key, 0xA6, 0x00);
280   addNECKey("2", Two_Key, 0xA6, 0x01);
281   addNECKey("3", Three_Key, 0xA6, 0x02);
282   addNECKey("4", Four_Key, 0xA6, 0x03);
283   addNECKey("5", Five_Key, 0xA6, 0x04);
284   addNECKey("6", Six_Key, 0xA6, 0x05);
285   addNECKey("7", Seven_Key, 0xA6, 0x06);
286   addNECKey("8", Eight_Key, 0xA6, 0x07);
287   addNECKey("9", Nine_Key, 0xA6, 0x08);
288   addNECKey("10/0", Zero_Key, 0xA6, 0x09);
289   addNECKey("volume-up", VolumeUp_Key, 0xA6, 0x0A);
290   addNECKey("volume-down", VolumeDown_Key, 0xA6, 0x0B);
291   addNECKey("tape", TapeInput_Key, 0xA6, 0x17); // "TAPE2_PLAY"
292   addNECKey("sleep", Sleep_Key, 0xA6, 0x19);
293   addNECKey("standby", Power_Key, 0xA6, 0x1C); // "POWER"
294   addNECKey("11/>10", DoubleDigit_Key, 0xA6, 0x40);
295   addNECKey("12/CLR", Clear_Key, 0xA6, 0x41);
296   addNECKey("cd", CDInput_Key, 0xA6, 0x44); // "CD_PLAY"
297   addNECKey("scan", Scan_Key, 0xA6, 0x48);
298   addNECKey("FM/AM", TunerInput_Key, 0xA6, 0x49); // "BAND"
299   addNECKey("aux", AuxInput_Key, 0xA6, 0x4C);
300   addNECKey("TAPE1_PLAY", Unmapped_Key, 0xA6, 0x5A);
301   addNECKey("KARAOKE", Unmapped_Key, 0xA6, 0x69);
302   addNECKey("menu", Menu_Key, 0xA6, 0x72); // "LEVEL"
303   addNECKey("cancel", Exit_Key, 0xA6, 0x73); // probably not "exit"
304   addNECKey("set", Select_Key, 0xA6, 0x74);
305   addNECKey("play/pause", Play_Key, 0xA6, 0x75);
306   addNECKey("play/pause", Pause_Key, 0xA6, 0x75);
307   addNECKey("stop", Stop_Key, 0xA6, 0x90);
308   addNECKey("next", Next_Key, 0xA6, 0x91);
309   addNECKey("previous", Previous_Key, 0xA6, 0x92);
310   addNECKey("forward", FastForward_Key, 0xA6, 0x93);
311   addNECKey("rewind", Rewind_Key, 0xA6, 0x94);
312   addNECKey("func", Unmapped_Key, 0xA6, 0x99);
313   addNECKey("disp", Info_Key, 0xA6, 0x9D); // "DISPLAY"
314 //  addNECKey("am", TunerBand_Key, 0xA6, 0xA0); // "fm", messed up
315 //  addNECKey("minus", Left_Key, 0xA6, 0xA0); // "plus", messed up
316   addNECKey("md", MDInput_Key, 0xA6, 0xA2);
317   addNECKey("smart_ope", Unmapped_Key, 0xA6, 0xCA);
318   addNECKey("snooze", Unmapped_Key, 0xA6, 0xCD);
319   addNECKey("timer", Timer_Key, 0xA6, 0xCE);
320   addNECKey("PRO_LOGIC", Unmapped_Key, 0xA6, 0xD4);
321   addNECKey("TONE_TEST", Unmapped_Key, 0xA6, 0xD5);
322   addNECKey("soundmorph+", Unmapped_Key, 0xA6, 0xD7); // "TURN_CW"
323   addNECKey("soundmorph-", Unmapped_Key, 0xA6, 0xD8); // "TURN_ACW"
324   addNECKey("sound", Audio_Key, 0xA6, 0xDA); // "SFC", "MORPHING"
325   addNECKey("sfc_preset", Unmapped_Key, 0xA6, 0xDC);
326   addNECKey("pbass", EnhancedBass_Key, 0xA6, 0xDD);
327 }
328
329
330 PioneerAudio1a::PioneerAudio1a(
331   unsigned int index)
332   : PioneerAudio1(index)
333 {
334   setKeysetName("Audio Keyset 1a");
335 }
336
337
338 void PioneerAudio1a::populateProtocol(
339   QObject *guiObject)
340 {
341   if (threadableProtocol)
342   {
343     // If the pointer is not null, the keyset must already be populated.
344     return;
345   }
346
347   PioneerAudio1::populateProtocol(guiObject);
348
349   addNECKey("cd", CDInput_Key, 0xA6, 0x0E);
350   addNECKey("tape", TapeInput_Key, 0xA6, 0x0F);
351 }
352
353
354 PioneerAudio2::PioneerAudio2(
355   unsigned int index)
356   : PIRKeysetMetaData(
357       "Audio Keyset 2",
358       Pioneer_Make,
359       index)
360 {
361 }
362
363
364 void PioneerAudio2::populateProtocol(
365   QObject *guiObject)
366 {
367   if (threadableProtocol)
368   {
369     // If the pointer is not null, the keyset must already be populated.
370     return;
371   }
372
373   threadableProtocol = new PioneerProtocol(guiObject, index);
374
375   addNECKey("VOL+", VolumeUp_Key, 0xA5, 0x0A);
376   addNECKey("VOL-", VolumeDown_Key, 0xA5, 0x0B);
377   addNECKey("Mute", Mute_Key, 0xA5, 0x12);
378
379   addNECKey("Stop", Stop_Key, 0xAB, 0x20);
380   addNECKey("RecordStop", RecordStop_Key, 0xAB, 0x21);
381   addNECKey("Play", Play_Key, 0xAB, 0x22);
382   addNECKey("Pause", Pause_Key, 0xAB, 0x23);
383   addNECKey("SkipForw", Advance_Key, 0xAB, 0x24);
384   addNECKey("SkipBack", Replay_Key, 0xAB, 0x25);
385   addNECKey("TrackNext", Next_Key, 0xAB, 0x26);
386   addNECKey("TrackPrev", Previous_Key, 0xAB, 0x27);
387   addNECKey("Record", Record_Key, 0xAB, 0x28);
388
389   addPioneerKey("CH+", ChannelUp_Key, 0xAB, 0x2A, 0xAF, 0x6E);
390   addPioneerKey("CH-", ChannelDown_Key, 0xAB, 0x2A, 0xAF, 0x6F);
391
392   addPioneerKey("Subtitle", Captions_Key, 0xAB, 0x2C, 0xAF, 0x36);
393   addPioneerKey("Left", Left_Key, 0xAB, 0x2C, 0xAF, 0x63);
394   addPioneerKey("Right", Right_Key, 0xAB, 0x2C, 0xAF, 0x64);
395   addPioneerKey("Dot", Unmapped_Key, 0xAB, 0x2C, 0xAF, 0x66);
396   addPioneerKey("0", Zero_Key, 0xAB, 0x2C, 0xAF, 0xA0);
397   addPioneerKey("1", One_Key, 0xAB, 0x2C, 0xAF, 0xA1);
398   addPioneerKey("2", Two_Key, 0xAB, 0x2C, 0xAF, 0xA2);
399   addPioneerKey("3", Three_Key, 0xAB, 0x2C, 0xAF, 0xA3);
400   addPioneerKey("4", Four_Key, 0xAB, 0x2C, 0xAF, 0xA4);
401   addPioneerKey("5", Five_Key, 0xAB, 0x2C, 0xAF, 0xA5);
402   addPioneerKey("6", Six_Key, 0xAB, 0x2C, 0xAF, 0xA6);
403   addPioneerKey("7", Seven_Key, 0xAB, 0x2C, 0xAF, 0xA7);
404   addPioneerKey("8", Eight_Key, 0xAB, 0x2C, 0xAF, 0xA8);
405   addPioneerKey("9", Nine_Key, 0xAB, 0x2C, 0xAF, 0xA9);
406   addPioneerKey("Guide", Guide_Key, 0xAB, 0x2C, 0xAF, 0xB0);
407   addPioneerKey("TopMenu", DiscTitle_Key, 0xAB, 0x2C, 0xAF, 0xB4);
408   addPioneerKey("Menu", DiscMenu_Key, 0xAB, 0x2C, 0xAF, 0xB9);
409   addPioneerKey("Audio", Audio_Key, 0xAB, 0x2C, 0xAF, 0xBE);
410   addPioneerKey("Enter", Enter_Key, 0xAB, 0x2C, 0xAF, 0xE5);
411   addPioneerKey("OK", Select_Key, 0xAB, 0x2C, 0xAF, 0xEF);
412   addPioneerKey("Up", Up_Key, 0xAB, 0x2C, 0xAF, 0xF2);
413   addPioneerKey("Down", Down_Key, 0xAB, 0x2C, 0xAF, 0xF3);
414   addPioneerKey("Return", Exit_Key, 0xAB, 0x2C, 0xAF, 0xF4);
415
416   addNECKey("Green", Green_Key, 0xAF, 0x63);
417   addNECKey("HDD", HDDInput_Key, 0xAF, 0x64);
418   addNECKey("DVD", DVDInput_Key, 0xAF, 0x65);
419 }
420
421
422 PioneerAudio3::PioneerAudio3(
423   unsigned int index)
424   : PIRKeysetMetaData(
425       "Audio Keyset 3",
426       Pioneer_Make,
427       index)
428 {
429   addControlledDevice(Pioneer_Make, "A-207R", Audio_Device);
430   addControlledDevice(Pioneer_Make, "SX-302", Audio_Device);
431   addControlledDevice(Pioneer_Make, "VSX-9300", Audio_Device);
432 }
433
434
435 void PioneerAudio3::populateProtocol(
436   QObject *guiObject)
437 {
438   if (threadableProtocol)
439   {
440     // If the pointer is not null, the keyset must already be populated.
441     return;
442   }
443
444   threadableProtocol = new PioneerProtocol(guiObject, index);
445
446   addNECKey("tape_deck1", Unmapped_Key, 0xA1, 0x0C);
447   addNECKey("tape_deck2", Unmapped_Key, 0xA1, 0x0D);
448   addNECKey("tape_ff", Unmapped_Key, 0xA1, 0x10);
449   addNECKey("tape_rew", Unmapped_Key, 0xA1, 0x11);
450   addNECKey("TAPE_REC_LEFT", Unmapped_Key, 0xA1, 0x12);
451   addNECKey("tape_rec", Unmapped_Key, 0xA1, 0x14); // "TAPE_REC_RIGHT"
452   addNECKey("tape_reverse", Unmapped_Key, 0xA1, 0x15); //"TAPE_PLAY_LEFT"
453   addNECKey("tape_stop", Unmapped_Key, 0xA1, 0x16);
454   addNECKey("tape_play", Unmapped_Key, 0xA1, 0x17); //"TAPE_PLAY_RIGHT"
455   addNECKey("tape_pause", Unmapped_Key, 0xA1, 0x18);
456   addNECKey("POWER_TAPE", Unmapped_Key, 0xA1, 0x1C);
457   addNECKey("tape_tapeselect", Unmapped_Key, 0xA1, 0x4C);
458   addNECKey("DISK1_TAPE_NEXT", Unmapped_Key, 0xA1, 0x56);
459   addNECKey("DISK1_TAPE_PREV", Unmapped_Key, 0xA1, 0x57);
460   addNECKey("DISK1_TAPE_PLAY_LEFT", Unmapped_Key, 0xA1, 0x5B);
461   addNECKey("DISK1_TAPE_STOP", Unmapped_Key, 0xA1, 0x5C);
462   addNECKey("DISK1_TAPE_PLAY_RIGHT", Unmapped_Key, 0xA1, 0x5D);
463
464   addNECKey("CD_PGM", Program_Key, 0xA2, 0x0D);
465   addNECKey("cd_next", Next_Key, 0xA2, 0x10);
466   addNECKey("cd_previous", Previous_Key, 0xA2, 0x11);
467   addNECKey("cd_stop", Stop_Key, 0xA2, 0x16);
468   addNECKey("cd_play", Play_Key, 0xA2, 0x17);
469   addNECKey("cd_pause", Pause_Key, 0xA2, 0x18);
470   addNECKey("cd_power", Unmapped_Key, 0xA2, 0x1C);
471   addNECKey("cd_discsel", NextDisc_Key, 0xA2, 0x1D); // "disc+"
472   addNECKey("CD_TIME", Unmapped_Key, 0xA2, 0x43);
473   addNECKey("CD_RND", Random_Key, 0xA2, 0x4A);
474   addNECKey("CD_EDIT", Unmapped_Key, 0xA2, 0x4B);
475   addNECKey("disc-", PrevDisc_Key, 0xA2, 0xC1);
476   addNECKey("cdbest", Unmapped_Key, 0xA2, 0xC2);
477
478   addNECKey("0", Zero_Key, 0xA4, 0x00);
479   addNECKey("1", One_Key, 0xA4, 0x01);
480   addNECKey("2", Two_Key, 0xA4, 0x02);
481   addNECKey("3", Three_Key, 0xA4, 0x03);
482   addNECKey("4", Four_Key, 0xA4, 0x04);
483   addNECKey("5", Five_Key, 0xA4, 0x05);
484   addNECKey("6", Six_Key, 0xA4, 0x06);
485   addNECKey("7", Seven_Key, 0xA4, 0x07);
486   addNECKey("8", Eight_Key, 0xA4, 0x08);
487   addNECKey("9", Nine_Key, 0xA4, 0x09);
488   addNECKey("fm", Unmapped_Key, 0xA4, 0x0D);
489   addNECKey("am", Unmapped_Key, 0xA4, 0x0E);
490   addNECKey("tuner_station+", NextPreset_Key, 0xA4, 0x10);
491   addNECKey("tuner_station-", PrevPreset_Key, 0xA4, 0x11);
492   addNECKey("tuner_band", AM_Key, 0xA4, 0x13); // This is a hack
493   addNECKey("tuner_band", FM_Key, 0xA4, 0x13); // This too
494   addNECKey("tuner_power", Unmapped_Key, 0xA4, 0x1C);
495   addNECKey("mpx", Unmapped_Key, 0xA4, 0x1E); // Toggle mono FM
496   addNECKey("tunerclass", Unmapped_Key, 0xA4, 0x40); // class A, B, C
497   addNECKey("tunersearch", Unmapped_Key, 0xA4, 0x42);
498   addNECKey("directaccess", Enter_Key, 0xA4, 0x43); // use to type in frequency values
499   addNECKey("tunerdisplaymode", Info_Key, 0xA4, 0x4A);
500   addNECKey("memory-scan", Scan_Key, 0xA4, 0x4D);
501   addNECKey("hits", Unmapped_Key, 0xA4, 0x4E);
502   addNECKey("freq-plus", ChannelUp_Key, 0xA4, 0x56);
503   addNECKey("freq-minus", ChannelDown_Key, 0xA4, 0x57);
504
505   addPioneerKey("effect/chsel-", Unmapped_Key, 0xA5, 0x07, 0xA5, 0x41);
506   addPioneerKey("effect/chsel+", Unmapped_Key, 0xA5, 0x07, 0xA5, 0x42);
507   addPioneerKey("digitalnr", Unmapped_Key, 0xA5, 0x07, 0xA5, 0x59);// noise reduction
508   addPioneerKey("inputatt", Unmapped_Key, 0xA5, 0x07, 0xA5, 0x5E); // analog input attenuation
509
510   addPioneerKey("direct", Unmapped_Key, 0xA5, 0x08, 0xA5, 0x5D); // DSP processing
511   addPioneerKey("standard", Unmapped_Key, 0xA5, 0x08, 0xA5, 0x5E); // DD/DTS standard
512
513   addNECKey("volume+", VolumeUp_Key, 0xA5, 0x0A);
514   addNECKey("volume-", VolumeDown_Key, 0xA5, 0x0B);
515   addNECKey("tv/sat", SatInput_Key, 0xA5, 0x0C);
516   addNECKey("ld", LDInput_Key, 0xA5, 0x0D); // "VDP"
517   addNECKey("vcr2", Unmapped_Key, 0xA5, 0x0E);
518   addNECKey("vcr-line", VCRInput_Key, 0xA5, 0x0F);
519   addNECKey("md/tape1", TapeInput_Key, 0xA5, 0x11);
520   addNECKey("muting", Mute_Key, 0xA5, 0x12);
521   addNECKey("video", Unmapped_Key, 0xA5, 0x16);
522   addNECKey("poweron", PowerOn_Key, 0xA5, 0x1A);
523   addNECKey("poweroff", PowerOff_Key, 0xA5, 0x1B);
524   addNECKey("amp_power", Power_Key, 0xA5, 0x1C);
525   addNECKey("tape2", Unmapped_Key, 0xA5, 0x1D);
526   addNECKey("dsp", Unmapped_Key, 0xA5, 0x40); // cycle hall, jazz, dance, theater
527   addNECKey("loudness", Unmapped_Key, 0xA5, 0x44);
528   addNECKey("tuner", TunerInput_Key, 0xA5, 0x47);
529   addNECKey("sleep", Sleep_Key, 0xA5, 0x48);
530   addNECKey("cd", CDInput_Key, 0xA5, 0x4C);
531   addNECKey("phono", PhonoInput_Key, 0xA5, 0x4D);
532   addNECKey("dat/tape1", TapeInput_Key, 0xA5, 0x4E);
533   addNECKey("line", LineInput_Key, 0xA5, 0x4F);
534   addNECKey("muteon", Unmapped_Key, 0xA5, 0x51);
535   addNECKey("muteoff", Unmapped_Key, 0xA5, 0x52);
536   addNECKey("VSEL", Unmapped_Key, 0xAf, 0x54);
537   addNECKey("input", Input_Key, 0xA5, 0x55); // cycle through all inputs!
538
539   addPioneerKey("speakers", Unmapped_Key, 0xA5, 0x56, 0xA5, 0x00);
540   addPioneerKey("signalselect", Unmapped_Key, 0xA5, 0x56, 0xA5, 0x03);
541   addPioneerKey("effect/chsel", Unmapped_Key, 0xA5, 0x56, 0xA5, 0x04);
542   addPioneerKey("dimmer", Unmapped_Key, 0xA5, 0x56, 0xA5, 0x06);
543
544   addPioneerKey("bass+", BassUp_Key, 0xA5, 0x57, 0xA5, 0x00);
545   addPioneerKey("bass-", BassDown_Key, 0xA5, 0x57, 0xA5, 0x01);
546   addPioneerKey("treble+", TrebleUp_Key, 0xA5, 0x57, 0xA5, 0x02);
547   addPioneerKey("treble-", TrebleDown_Key, 0xA5, 0x57, 0xA5, 0x03);
548
549   addNECKey("up", Up_Key, 0xA5, 0x80);
550   addNECKey("down", Down_Key, 0xA5, 0x81);
551   addNECKey("right", Right_Key, 0xA5, 0x82);
552   addNECKey("left", Left_Key, 0xA5, 0x83);
553   addNECKey("enter", Select_Key, 0xA5, 0x84);
554   addNECKey("dvd/ld", Unmapped_Key, 0xA5, 0x85);
555
556   addPioneerKey("setup", Menu_Key, 0xA5, 0x9B, 0xA5, 0xD6);
557
558   addPioneerKey("stereo", Unmapped_Key, 0xA5, 0x9F, 0xA5, 0xC0);
559   addPioneerKey("midnight", Unmapped_Key, 0xA5, 0x9F, 0xA5, 0xCB);
560   addPioneerKey("thx", Unmapped_Key, 0xA5, 0x9F, 0xA5, 0xD1);
561   addPioneerKey("advanced", Unmapped_Key, 0xA5, 0x9F, 0xA5, 0xD3); // DD/DTS advanced
562
563   addNECKey("ld_stop", Unmapped_Key, 0xA8, 0x16);
564   addNECKey("ld_play", Unmapped_Key, 0xA8, 0x17);
565   addNECKey("ld_pause", Unmapped_Key, 0xA8, 0x18);
566   addNECKey("ld_power", Unmapped_Key, 0xA8, 0x1C);
567   addNECKey("ld_display", Unmapped_Key, 0xA8, 0x43);
568   addNECKey("ld_next", Unmapped_Key, 0xA8, 0x52);
569   addNECKey("ld_previous", Unmapped_Key, 0xA8, 0x53);
570
571   addNECKey("tv_channel+", Unmapped_Key, 0xAA, 0x10);
572   addNECKey("tv_channel-", Unmapped_Key, 0xAA, 0x11);
573   addNECKey("tv_func", Unmapped_Key, 0xAA, 0x13);
574   addNECKey("tv_power", Unmapped_Key, 0xAA, 0x1C);
575
576   addNECKey("vcr_tv-vcr", Unmapped_Key, 0xAB, 0x0F);
577   addNECKey("vcr_ff", Unmapped_Key, 0xAB, 0x10);
578   addNECKey("vcr_rew", Unmapped_Key, 0xAB, 0x11);
579   addNECKey("vcr_stop", Unmapped_Key, 0xAB, 0x16);
580   addNECKey("vcr_play", Unmapped_Key, 0xAB, 0x17);
581   addNECKey("vcr_pause", Unmapped_Key, 0xAB, 0x18);
582   addNECKey("vcr_channel+", Unmapped_Key, 0xAB, 0x52);
583   addNECKey("vcr_channel-", Unmapped_Key, 0xAB, 0x53);
584 }
585
586
587 PioneerAudio4::PioneerAudio4(
588   unsigned int index)
589   : PIRKeysetMetaData(
590       "Audio Keyset 4",
591       Pioneer_Make,
592       index)
593 {
594 }
595
596
597 void PioneerAudio4::populateProtocol(
598   QObject *guiObject)
599 {
600   if (threadableProtocol)
601   {
602     // If the pointer is not null, the keyset must already be populated.
603     return;
604   }
605
606   threadableProtocol = new PioneerProtocol(guiObject, index);
607
608   addNECKey("tapesel", Unmapped_Key, 0xA1, 0x4C);
609   addNECKey(">>", FastForward_Key, 0xA1, 0x56);
610   addNECKey("<<", Rewind_Key, 0xA1, 0x57);
611   addNECKey("<", Unmapped_Key, 0xA1, 0x5B);
612   addNECKey("square", Unmapped_Key, 0xA1, 0x5C);
613   addNECKey(">", Unmapped_Key, 0xA1, 0x5D);
614
615   addNECKey(">>|", Next_Key, 0xA2, 0x10);
616   addNECKey("|<<", Previous_Key, 0xA2, 0x11);
617   addNECKey("squarecd", Stop_Key, 0xA2, 0x16);
618   addNECKey(">cd", Play_Key, 0xA2, 0x17);
619   addNECKey("cdpower", Unmapped_Key, 0xA2, 0x1C);
620   addNECKey("discsel", NextDisc_Key, 0xA2, 0x65);
621
622   addNECKey("tuner+", ChannelUp_Key, 0xA4, 0x10);
623   addNECKey("tuner-", ChannelDown_Key, 0xA4, 0x11);
624   addNECKey("tunerpower", Unmapped_Key, 0xA4, 0x1C);
625
626   addNECKey("vol+", VolumeUp_Key, 0xA5, 0x0A);
627   addNECKey("vol-", VolumeDown_Key, 0xA5, 0x0B);
628   addNECKey("amppower", Power_Key, 0xA5, 0x1C);
629   addNECKey("tape2", Unmapped_Key, 0xA5, 0x1D);
630   addNECKey("function", Unmapped_Key, 0xA5, 0x55);
631 }
632
633
634 PioneerAudio5::PioneerAudio5(
635   unsigned int index)
636   : PIRKeysetMetaData(
637       "Audio Keyset 5",
638       Pioneer_Make,
639       index)
640 {
641   addControlledDevice(Pioneer_Make, "XR-P240C", Audio_Device);
642 }
643
644
645 void PioneerAudio5::populateProtocol(
646   QObject *guiObject)
647 {
648   if (threadableProtocol)
649   {
650     // If the pointer is not null, the keyset must already be populated.
651     return;
652   }
653
654   LIRCProtocol *lp = new LIRCProtocol(
655     guiObject,
656     index,
657     560, 560,
658     560, 1680,
659     110000, true);
660
661   threadableProtocol = lp;
662
663   lp->setHeaderPair(9000, 4500);
664   lp->setTrailerPulse(560);
665   lp->setRepeatPair(9000, 4500);
666
667   setPreData(0x10217EF, 26);
668
669   addKey("POWER", Power_Key, 0x9867, 16);
670   addKey("MONO", FMMode_Key, 0x48B7, 16);
671   addKey("MEM_SCAN", Unmapped_Key, 0x8877, 16);
672   addKey("TUNER_BAND", AM_Key, 0x18E7, 16);  // This is a hack
673   addKey("TUNER_BAND", FM_Key, 0x18E7, 16);  // This too
674   addKey("1", One_Key, 0x00FF, 16);
675   addKey("2", Two_Key, 0x807F, 16);
676   addKey("3", Three_Key, 0x40BF, 16);
677   addKey("4", Four_Key, 0xC03F, 16);
678   addKey("5", Five_Key, 0x20DF, 16);
679   addKey("6", Six_Key, 0xA05F, 16);
680   addKey("7", Seven_Key, 0x609F, 16);
681   addKey("8", Eight_Key, 0xE01F, 16);
682   addKey("SCAN", Scan_Key, 0xB44B, 16);
683   addKey("REPEAT", Repeat_Key, 0x847B, 16);
684   addKey("DISC", NextDisc_Key, 0xE41B, 16);
685   addKey("CLEAR", Clear_Key, 0x34CB, 16);
686   addKey("PROGRAM", Program_Key, 0x44BB, 16);
687   addKey("CD_PREV", Previous_Key, 0x2CD3, 16);
688   addKey("CD_NEXT", Next_Key, 0x6C93, 16);
689   addKey("TIME", Unmapped_Key, 0x04FB, 16);
690   addKey("RANDOM", Random_Key, 0xC43B, 16);
691   addKey("CD_STOP", Stop_Key, 0xF40B, 16);
692   addKey("CD_PLAY_PAUSE", Play_Key, 0xD42B, 16);
693   addKey("CD_PLAY_PAUSE", Pause_Key, 0xD42B, 16);
694   addKey("VOLUME_PLUS", VolumeUp_Key, 0x708F, 16);
695   addKey("VOLUME_MINUS", VolumeDown_Key, 0xF00F, 16);
696   addKey("POWER_BASS", EnhancedBass_Key, 0xD02F, 16);
697   addKey("MUTE", Mute_Key, 0xE817, 16);
698   addKey("TAPE", TapeInput_Key, 0x7887, 16);
699   addKey("AUX_VIDEO", AuxInput_Key, 0xF807, 16);
700   addKey("TUNER", TunerInput_Key, 0xD827, 16);
701   addKey("CD", CDInput_Key, 0x38C7, 16);
702 }
703
704
705 PioneerCD1::PioneerCD1(
706   unsigned int index)
707   : PIRKeysetMetaData(
708       "CD Keyset 1",
709       Pioneer_Make,
710       index)
711 {
712   addControlledDevice(Pioneer_Make, "PD-106", Audio_Device);
713   addControlledDevice(Pioneer_Make, "PD-202", Audio_Device);
714   addControlledDevice(Pioneer_Make, "PD-4550", Audio_Device);
715   addControlledDevice(Pioneer_Make, "PD-F957", Audio_Device);
716   addControlledDevice(Pioneer_Make, "PD-M107", Audio_Device);
717   addControlledDevice(Pioneer_Make, "PD-S503", Audio_Device);
718   addControlledDevice(Pioneer_Make, "PD-F1007", Audio_Device);
719 }
720
721
722 void PioneerCD1::populateProtocol(
723   QObject *guiObject)
724 {
725   if (threadableProtocol)
726   {
727     // If the pointer is not null, the keyset must already be populated.
728     return;
729   }
730
731   threadableProtocol = new PioneerProtocol(guiObject, index);
732
733   addNECKey("0", Zero_Key, 0xA2, 0x00);
734   addNECKey("1", One_Key, 0xA2, 0x01);
735   addNECKey("2", Two_Key, 0xA2, 0x02);
736   addNECKey("3", Three_Key, 0xA2, 0x03);
737   addNECKey("4", Four_Key, 0xA2, 0x04);
738   addNECKey("5", Five_Key, 0xA2, 0x05);
739   addNECKey("6", Six_Key, 0xA2, 0x06);
740   addNECKey("7", Seven_Key, 0xA2, 0x07);
741   addNECKey("8", Eight_Key, 0xA2, 0x08);
742   addNECKey("9", Nine_Key, 0xA2, 0x09);
743   addNECKey("VOL+", VolumeUp_Key, 0xA2, 0x0A);
744   addNECKey("VOL-", VolumeDown_Key, 0xA2, 0x0B);
745   addNECKey("REPEAT", Repeat_Key, 0xA2, 0x0C);
746   addNECKey("PROGRAMMEMORY", Program_Key, 0xA2, 0x0D); // "PROG"
747   addNECKey("forw", FastForward_Key, 0xA2, 0x0E); // "FF"
748   addNECKey("back", Rewind_Key, 0xA2, 0x0F); // "REW"
749
750   addNECKey("skip_forw", Next_Key, 0xA2, 0x10);
751   addNECKey("skip_back", Previous_Key, 0xA2, 0x11);
752   addNECKey("stop", Stop_Key, 0xA2, 0x16);
753   addNECKey("play", Play_Key, 0xA2, 0x17);
754   addNECKey("pause", Pause_Key, 0xA2, 0x18);
755   addNECKey("power", Power_Key, 0xA2, 0x1C);
756   addNECKey("disc+", NextDisc_Key, 0xA2, 0x1D);
757   addNECKey("disc_1", Unmapped_Key, 0xA2, 0x1E);
758   addNECKey("disc_2", Unmapped_Key, 0xA2, 0x1F);
759
760   addNECKey("set_track", Unmapped_Key, 0xA2, 0x40);
761   addNECKey("menu", Menu_Key, 0xA2, 0x41);  // "set_disc"
762   addNECKey("TIME", Unmapped_Key, 0xA2, 0x43);
763   addNECKey("CLEAR", Clear_Key, 0xA2, 0x45);
764   addNECKey("check", Unmapped_Key, 0xA2, 0x49);
765   addNECKey("RANDOM", Random_Key, 0xA2, 0x4A);
766   addNECKey("AUTOPGM", Unmapped_Key, 0xA2, 0x4B); // "EDIT"
767   addNECKey("MUSICWINDOW", Unmapped_Key, 0xA2, 0x4D);
768   addNECKey("FADEIN", Unmapped_Key, 0xA2, 0x4E);
769   addNECKey("FADEOUT", Unmapped_Key, 0xA2, 0x4F);
770   addNECKey("disc_3", Unmapped_Key, 0xA2, 0x50);
771   addNECKey("OPEN/CLOSE", Eject_Key, 0xA2, 0x51);
772   addNECKey("+10", Unmapped_Key, 0xA2, 0x52);
773   addNECKey("disc_4", Unmapped_Key, 0xA2, 0x53);
774   addNECKey("NEXTINDEX", Unmapped_Key, 0xA2, 0x54);
775   addNECKey("PREVINDEX", Unmapped_Key, 0xA2, 0x55);
776   addNECKey(">=20", DoubleDigit_Key, 0xA2, 0x56);
777   addNECKey("disc_5", Unmapped_Key, 0xA2, 0x57);
778   addNECKey("TIMEFADE", Unmapped_Key, 0xA2, 0x5A);
779   addNECKey("disc_6", Unmapped_Key, 0xA2, 0x5B);
780   addNECKey("delete", Unmapped_Key, 0xA2, 0x5D);
781   addNECKey("HI-LITE", Unmapped_Key, 0xA2, 0x5E); // "hi-lite_scan"
782
783   addPioneerKey("20", Unmapped_Key, 0xA2, 0xC0, 0xA2, 0x80);
784   addPioneerKey("11", Unmapped_Key, 0xA2, 0xC0, 0xA2, 0x81);
785   addPioneerKey("12", Unmapped_Key, 0xA2, 0xC0, 0xA2, 0x82);
786   addPioneerKey("13", Unmapped_Key, 0xA2, 0xC0, 0xA2, 0x83);
787   addPioneerKey("14", Unmapped_Key, 0xA2, 0xC0, 0xA2, 0x84);
788   addPioneerKey("15", Unmapped_Key, 0xA2, 0xC0, 0xA2, 0x85);
789   addPioneerKey("16", Unmapped_Key, 0xA2, 0xC0, 0xA2, 0x86);
790   addPioneerKey("17", Unmapped_Key, 0xA2, 0xC0, 0xA2, 0x87);
791   addPioneerKey("18", Unmapped_Key, 0xA2, 0xC0, 0xA2, 0x88);
792   addPioneerKey("19", Unmapped_Key, 0xA2, 0xC0, 0xA2, 0x89);
793
794   addPioneerKey("disc-", PrevDisc_Key, 0xA2, 0xC1, 0xA2, 0x93);
795   addPioneerKey("TITLE_INPUT", Unmapped_Key, 0xA2, 0xC1, 0xA2, 0x95);
796   addPioneerKey("mode", Unmapped_Key, 0xA2, 0xC1, 0xA2, 0x9C);
797
798   addPioneerKey("TITLE_DISPLAY", Info_Key, 0xA2, 0xC2, 0xA2, 0x94);
799   addPioneerKey("search", Unmapped_Key, 0xA2, 0xC2, 0xA2, 0x95);
800   addPioneerKey("BEST", Unmapped_Key, 0xA2, 0xC2, 0xA2, 0x9B);
801
802   addPioneerKey("previous", Unmapped_Key, 0xA2, 0xC6, 0xA2, 0x93);
803   addPioneerKey("CURSOR_right", Right_Key, 0xA2, 0xC6, 0xA2, 0x9B);
804   addPioneerKey("CURSOR_left", Left_Key, 0xA2, 0xC6, 0xA2, 0x9C);
805 }
806
807
808 PioneerLaserDisc1::PioneerLaserDisc1(
809   unsigned int index)
810   : PIRKeysetMetaData(
811       "LD Keyset 1",
812       Pioneer_Make,
813       index)
814 {
815   addControlledDevice(Pioneer_Make, "CLD-D925", Other_Device);
816 }
817
818
819 void PioneerLaserDisc1::populateProtocol(
820   QObject *guiObject)
821 {
822   if (threadableProtocol)
823   {
824     // If the pointer is not null, the keyset must already be populated.
825     return;
826   }
827
828   threadableProtocol = new PioneerProtocol(guiObject, index);
829
830   addNECKey("0", Zero_Key, 0xA8, 0x00);
831   addNECKey("1", One_Key, 0xA8, 0x01);
832   addNECKey("2", Two_Key, 0xA8, 0x02);
833   addNECKey("3", Three_Key, 0xA8, 0x03);
834   addNECKey("4", Four_Key, 0xA8, 0x04);
835   addNECKey("5", Five_Key, 0xA8, 0x05);
836   addNECKey("6", Six_Key, 0xA8, 0x06);
837   addNECKey("7", Seven_Key, 0xA8, 0x07);
838   addNECKey("8", Eight_Key, 0xA8, 0x08);
839   addNECKey("9", Nine_Key, 0xA8, 0x09);
840
841   addNECKey("dacx", Unmapped_Key, 0xA8, 0x0C);
842   addNECKey("ff", FastForward_Key, 0xA8, 0x10);
843   addNECKey("rew", Rewind_Key, 0xA8, 0x11); // "scan-"
844   addNECKey("chp/tm", Unmapped_Key, 0xA8, 0x13);
845 //  addNECKey("eject", Eject_Key, 0xA8, 0x16); // ?
846   addNECKey("stop", Stop_Key, 0xA8, 0x16);
847   addNECKey("play", Play_Key, 0xA8, 0x17);
848   addNECKey("pause", Pause_Key, 0xA8, 0x18);
849   addNECKey("memory", Memory_Key, 0xA8, 0x19);
850   addNECKey("power", Power_Key, 0xA8, 0x1C);
851   addNECKey("audio", Audio_Key, 0xA8, 0x1E); // "Audio_D/A"
852   addNECKey("+10", DoubleDigit_Key, 0xA8, 0x1F);
853   addNECKey("Jog_slow->", Unmapped_Key, 0xA8, 0x20);
854   addNECKey("Jog_slow<-", Unmapped_Key, 0xA8, 0x22);
855   addNECKey("Jog_Forward", Unmapped_Key, 0xA8, 0x2B);
856   addNECKey("Jog_Reverse", Unmapped_Key, 0xA8, 0x2F);
857   addNECKey("ctrl", Unmapped_Key, 0xA8, 0x37);
858   addNECKey("display", Info_Key, 0xA8, 0x43);
859   addNECKey("repeat", Repeat_Key, 0xA8, 0x44);
860   addNECKey("clear", Clear_Key, 0xA8, 0x45);
861   addNECKey("-", Unmapped_Key, 0xA8, 0x46);
862   addNECKey("+", Unmapped_Key, 0xA8, 0x47);
863   addNECKey("repeatab", RepeatAB_Key, 0xA8, 0x48);
864   addNECKey("pgm", Program_Key, 0xA8, 0x4C);
865   addNECKey("Disc_Side_A", Unmapped_Key, 0xA8, 0x4D);
866   addNECKey("Disc_Side_B", Unmapped_Key, 0xA8, 0x4E);
867   addNECKey("step-", StepBack_Key, 0xA8, 0x50);
868   addNECKey("skip+", Next_Key, 0xA8, 0x52);  // "seek+"
869   addNECKey("skip-", Previous_Key, 0xA8, 0x53); // "seek-"
870   addNECKey("step+", StepForward_Key, 0xA8, 0x54);
871   addNECKey("speed-", SlowMinus_Key, 0xA8, 0x55);
872   addNECKey("speed+", SlowPlus_Key, 0xA8, 0x58);
873   addNECKey("intro", Unmapped_Key, 0xA8, 0x5A);
874   addNECKey("random", Random_Key, 0xA8, 0x5E);
875 }
876
877
878 PioneerDVD1::PioneerDVD1(
879   unsigned int index)
880   : PIRKeysetMetaData(
881       "DVD Keyset 1",
882       Pioneer_Make,
883       index)
884 {
885   addControlledDevice(Pioneer_Make, "VXX2702", DVD_Device);
886   addControlledDevice(Pioneer_Make, "VXX2801", DVD_Device);
887 }
888
889
890 void PioneerDVD1::populateProtocol(
891   QObject *guiObject)
892 {
893   if (threadableProtocol)
894   {
895     // If the pointer is not null, the keyset must already be populated.
896     return;
897   }
898
899   threadableProtocol = new PioneerProtocol(guiObject, index);
900
901   addNECKey("STOP", Stop_Key, 0xA3, 0x98);
902   addNECKey("NEXT", Next_Key, 0xA3, 0x9C);
903   addNECKey("PREV", Previous_Key, 0xA3, 0x9D);
904   addNECKey("PLAY", Play_Key, 0xA3, 0x9E);
905   addNECKey("PAUSE", Pause_Key, 0xA3, 0x9F);
906
907   addPioneerKey("SUBTITLE", Captions_Key, 0xA3, 0x99, 0xAF, 0x36);
908   addPioneerKey("ZOOM", Zoom_Key, 0xA3, 0x99, 0xAF, 0x37);
909   addPioneerKey("SURROUND", Surround_Key, 0xA3, 0x99, 0xAF, 0x61);
910   addPioneerKey("LEFT", Left_Key, 0xA3, 0x99, 0xAF, 0x63);
911   addPioneerKey("RIGHT", Right_Key, 0xA3, 0x99, 0xAF, 0x64);
912   addPioneerKey("PLAY_MODE", Unmapped_Key, 0xA3, 0x99, 0xAF, 0x7F);
913   addPioneerKey("0", Zero_Key, 0xA3, 0x99, 0xAF, 0xA0);
914   addPioneerKey("1", One_Key, 0xA3, 0x99, 0xAF, 0xA1);
915   addPioneerKey("2", Two_Key, 0xA3, 0x99, 0xAF, 0xA2);
916   addPioneerKey("3", Three_Key, 0xA3, 0x99, 0xAF, 0xA3);
917   addPioneerKey("4", Four_Key, 0xA3, 0x99, 0xAF, 0xA4);
918   addPioneerKey("5", Five_Key, 0xA3, 0x99, 0xAF, 0xA5);
919   addPioneerKey("6", Six_Key, 0xA3, 0x99, 0xAF, 0xA6);
920   addPioneerKey("7", Seven_Key, 0xA3, 0x99, 0xAF, 0xA7);
921   addPioneerKey("8", Eight_Key, 0xA3, 0x99, 0xAF, 0xA8);
922   addPioneerKey("9", Nine_Key, 0xA3, 0x99, 0xAF, 0xA9);
923   addPioneerKey("SETUP", Menu_Key, 0xA3, 0x99, 0xAF, 0xB0);
924   addPioneerKey("TOP_MENU", DiscTitle_Key, 0xA3, 0x99, 0xAF, 0xB4);
925   addPioneerKey("ANGLE", Angle_Key, 0xA3, 0x99, 0xAF, 0xB5);
926   addPioneerKey("OPEN/CLOSE", Eject_Key, 0xA3, 0x99, 0xAF, 0xB6);
927   addPioneerKey("MENU", DiscMenu_Key, 0xA3, 0x99, 0xAF, 0xB9);
928   addPioneerKey("AUDIO", Audio_Key, 0xA3, 0x99, 0xAF, 0xBE);
929   addPioneerKey("STANDBY/ON", Power_Key, 0xA3, 0x99, 0xAF, 0xBC);
930   addPioneerKey("DISPLAY", Info_Key, 0xA3, 0x99, 0xAF, 0xE3);
931   addPioneerKey("CLEAR", Clear_Key, 0xA3, 0x99, 0xAF, 0xE5);
932   addPioneerKey("FWD", FastForward_Key, 0xA3, 0x99, 0xAF, 0xE9);
933   addPioneerKey("BWD", Rewind_Key, 0xA3, 0x99, 0xAF, 0xEA);
934   addPioneerKey("ENTER", Enter_Key, 0xA3, 0x99, 0xAF, 0xEF);
935   addPioneerKey("ENTER", Select_Key, 0xA3, 0x99, 0xAF, 0xEF);
936   addPioneerKey("UP", Up_Key, 0xA3, 0x99, 0xAF, 0xF2);
937   addPioneerKey("DOWN", Down_Key, 0xA3, 0x99, 0xAF, 0xF3);
938   addPioneerKey("RETURN", Exit_Key, 0xA3, 0x99, 0xAF, 0xF4);
939 }
940
941
942 PioneerCarStereo1::PioneerCarStereo1(
943   unsigned int index)
944   : PIRKeysetMetaData(
945       "Car Stereo Keyset 1",
946       Pioneer_Make,
947       index)
948 {
949 }
950
951
952 void PioneerCarStereo1::populateProtocol(
953   QObject *guiObject)
954 {
955   if (threadableProtocol)
956   {
957     // Keyset already populated.
958     return;
959   }
960
961   threadableProtocol = new PioneerProtocol(guiObject, index);
962
963   addNECKey("VOL+", VolumeUp_Key, 0xAD, 0x0A);
964   addNECKey("VOL-", VolumeDown_Key, 0xAD, 0x0B);
965   addNECKey("ATT", Mute_Key, 0xAD, 0x0C);
966   addNECKey("Audio", SoundMode_Key, 0xAD, 0x0D);
967   addNECKey("Band/Escape", FM_Key, 0xAD, 0x12);
968   addNECKey("Band/Escape", Exit_Key, 0xAD, 0x12);
969   addNECKey("Source", Input_Key, 0xAD, 0x1A);
970   addNECKey("Radio", TunerInput_Key, 0xAD, 0x1C);
971   addNECKey("CD/iPod", CDInput_Key, 0xAD, 0x1E);
972   addNECKey("Arrow Up", Up_Key, 0xAD, 0x40);
973   addNECKey("Arrow Down", Down_Key, 0xAD, 0x41);
974   addNECKey("Arrow Left", Left_Key, 0xAD, 0x42);
975   addNECKey("Arrow Right", Right_Key, 0xAD, 0x43);
976   addNECKey("Pause", Pause_Key, 0xAD, 0x58);
977
978   addPioneerKey("Entertainment", Unmapped_Key, 0xAD, 0x19, 0xAF, 0x2B);
979   addPioneerKey("List/Enter", Menu_Key, 0xAD, 0x19, 0xAF, 0x2C);
980   addPioneerKey("List/Enter", Select_Key, 0xAD, 0x19, 0xAF, 0x2C);
981   addPioneerKey("Function", Unmapped_Key, 0xAD, 0x19, 0xAF, 0x67);
982   addPioneerKey("PGM", Unmapped_Key, 0xAD, 0x19, 0xAF, 0x68);
983   addPioneerKey("Disp (Scroll)", Info_Key, 0xAD, 0x19, 0xAF, 0x6D);
984   addPioneerKey("Clear", Clear_Key, 0xAD, 0x19, 0xAF, 0xE0);
985   addPioneerKey("Direct", Unmapped_Key, 0xAD, 0x19, 0xAF, 0xE1);
986   addPioneerKey("0", Zero_Key, 0xAD, 0x19, 0xAF, 0xF0);
987   addPioneerKey("1", One_Key, 0xAD, 0x19, 0xAF, 0xF1);
988   addPioneerKey("2", Two_Key, 0xAD, 0x19, 0xAF, 0xF2);
989   addPioneerKey("3", Three_Key, 0xAD, 0x19, 0xAF, 0xF3);
990   addPioneerKey("4", Four_Key, 0xAD, 0x19, 0xAF, 0xF4);
991   addPioneerKey("5", Five_Key, 0xAD, 0x19, 0xAF, 0xF5);
992   addPioneerKey("6", Six_Key, 0xAD, 0x19, 0xAF, 0xF6);
993   addPioneerKey("7", Seven_Key, 0xAD, 0x19, 0xAF, 0xF7);
994   addPioneerKey("8", Eight_Key, 0xAD, 0x19, 0xAF, 0xF8);
995   addPioneerKey("9", Nine_Key, 0xAD, 0x19, 0xAF, 0xF9);
996 }