3ae1695f3edb9af72cda44ebf52f38d825c7fe57
[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", TunerBand_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", TunerBand_Key, 0xA4, 0x13);
493   addNECKey("tuner_power", Unmapped_Key, 0xA4, 0x1C);
494   addNECKey("mpx", Unmapped_Key, 0xA4, 0x1E); // Toggle mono FM
495   addNECKey("tunerclass", Unmapped_Key, 0xA4, 0x40); // class A, B, C
496   addNECKey("tunersearch", Unmapped_Key, 0xA4, 0x42);
497   addNECKey("directaccess", Enter_Key, 0xA4, 0x43); // use to type in frequency values
498   addNECKey("tunerdisplaymode", Info_Key, 0xA4, 0x4A);
499   addNECKey("memory-scan", Scan_Key, 0xA4, 0x4D);
500   addNECKey("hits", Unmapped_Key, 0xA4, 0x4E);
501   addNECKey("freq-plus", ChannelUp_Key, 0xA4, 0x56);
502   addNECKey("freq-minus", ChannelDown_Key, 0xA4, 0x57);
503
504   addPioneerKey("effect/chsel-", Unmapped_Key, 0xA5, 0x07, 0xA5, 0x41);
505   addPioneerKey("effect/chsel+", Unmapped_Key, 0xA5, 0x07, 0xA5, 0x42);
506   addPioneerKey("digitalnr", Unmapped_Key, 0xA5, 0x07, 0xA5, 0x59);// noise reduction
507   addPioneerKey("inputatt", Unmapped_Key, 0xA5, 0x07, 0xA5, 0x5E); // analog input attenuation
508
509   addPioneerKey("direct", Unmapped_Key, 0xA5, 0x08, 0xA5, 0x5D); // DSP processing
510   addPioneerKey("standard", Unmapped_Key, 0xA5, 0x08, 0xA5, 0x5E); // DD/DTS standard
511
512   addNECKey("volume+", VolumeUp_Key, 0xA5, 0x0A);
513   addNECKey("volume-", VolumeDown_Key, 0xA5, 0x0B);
514   addNECKey("tv/sat", SatInput_Key, 0xA5, 0x0C);
515   addNECKey("ld", LDInput_Key, 0xA5, 0x0D); // "VDP"
516   addNECKey("vcr2", Unmapped_Key, 0xA5, 0x0E);
517   addNECKey("vcr-line", VCRInput_Key, 0xA5, 0x0F);
518   addNECKey("md/tape1", TapeInput_Key, 0xA5, 0x11);
519   addNECKey("muting", Mute_Key, 0xA5, 0x12);
520   addNECKey("video", Unmapped_Key, 0xA5, 0x16);
521   addNECKey("poweron", PowerOn_Key, 0xA5, 0x1A);
522   addNECKey("poweroff", PowerOff_Key, 0xA5, 0x1B);
523   addNECKey("amp_power", Power_Key, 0xA5, 0x1C);
524   addNECKey("tape2", Unmapped_Key, 0xA5, 0x1D);
525   addNECKey("dsp", Unmapped_Key, 0xA5, 0x40); // cycle hall, jazz, dance, theater
526   addNECKey("loudness", Unmapped_Key, 0xA5, 0x44);
527   addNECKey("tuner", TunerInput_Key, 0xA5, 0x47);
528   addNECKey("sleep", Sleep_Key, 0xA5, 0x48);
529   addNECKey("cd", CDInput_Key, 0xA5, 0x4C);
530   addNECKey("phono", PhonoInput_Key, 0xA5, 0x4D);
531   addNECKey("dat/tape1", TapeInput_Key, 0xA5, 0x4E);
532   addNECKey("line", LineInput_Key, 0xA5, 0x4F);
533   addNECKey("muteon", Unmapped_Key, 0xA5, 0x51);
534   addNECKey("muteoff", Unmapped_Key, 0xA5, 0x52);
535   addNECKey("VSEL", Unmapped_Key, 0xAf, 0x54);
536   addNECKey("input", Input_Key, 0xA5, 0x55); // cycle through all inputs!
537
538   addPioneerKey("speakers", Unmapped_Key, 0xA5, 0x56, 0xA5, 0x00);
539   addPioneerKey("signalselect", Unmapped_Key, 0xA5, 0x56, 0xA5, 0x03);
540   addPioneerKey("effect/chsel", Unmapped_Key, 0xA5, 0x56, 0xA5, 0x04);
541   addPioneerKey("dimmer", Unmapped_Key, 0xA5, 0x56, 0xA5, 0x06);
542
543   addPioneerKey("bass+", BassUp_Key, 0xA5, 0x57, 0xA5, 0x00);
544   addPioneerKey("bass-", BassDown_Key, 0xA5, 0x57, 0xA5, 0x01);
545   addPioneerKey("treble+", TrebleUp_Key, 0xA5, 0x57, 0xA5, 0x02);
546   addPioneerKey("treble-", TrebleDown_Key, 0xA5, 0x57, 0xA5, 0x03);
547
548   addNECKey("up", Up_Key, 0xA5, 0x80);
549   addNECKey("down", Down_Key, 0xA5, 0x81);
550   addNECKey("right", Right_Key, 0xA5, 0x82);
551   addNECKey("left", Left_Key, 0xA5, 0x83);
552   addNECKey("enter", Select_Key, 0xA5, 0x84);
553   addNECKey("dvd/ld", Unmapped_Key, 0xA5, 0x85);
554
555   addPioneerKey("setup", Menu_Key, 0xA5, 0x9B, 0xA5, 0xD6);
556
557   addPioneerKey("stereo", Unmapped_Key, 0xA5, 0x9F, 0xA5, 0xC0);
558   addPioneerKey("midnight", Unmapped_Key, 0xA5, 0x9F, 0xA5, 0xCB);
559   addPioneerKey("thx", Unmapped_Key, 0xA5, 0x9F, 0xA5, 0xD1);
560   addPioneerKey("advanced", Unmapped_Key, 0xA5, 0x9F, 0xA5, 0xD3); // DD/DTS advanced
561
562   addNECKey("ld_stop", Unmapped_Key, 0xA8, 0x16);
563   addNECKey("ld_play", Unmapped_Key, 0xA8, 0x17);
564   addNECKey("ld_pause", Unmapped_Key, 0xA8, 0x18);
565   addNECKey("ld_power", Unmapped_Key, 0xA8, 0x1C);
566   addNECKey("ld_display", Unmapped_Key, 0xA8, 0x43);
567   addNECKey("ld_next", Unmapped_Key, 0xA8, 0x52);
568   addNECKey("ld_previous", Unmapped_Key, 0xA8, 0x53);
569
570   addNECKey("tv_channel+", Unmapped_Key, 0xAA, 0x10);
571   addNECKey("tv_channel-", Unmapped_Key, 0xAA, 0x11);
572   addNECKey("tv_func", Unmapped_Key, 0xAA, 0x13);
573   addNECKey("tv_power", Unmapped_Key, 0xAA, 0x1C);
574
575   addNECKey("vcr_tv-vcr", Unmapped_Key, 0xAB, 0x0F);
576   addNECKey("vcr_ff", Unmapped_Key, 0xAB, 0x10);
577   addNECKey("vcr_rew", Unmapped_Key, 0xAB, 0x11);
578   addNECKey("vcr_stop", Unmapped_Key, 0xAB, 0x16);
579   addNECKey("vcr_play", Unmapped_Key, 0xAB, 0x17);
580   addNECKey("vcr_pause", Unmapped_Key, 0xAB, 0x18);
581   addNECKey("vcr_channel+", Unmapped_Key, 0xAB, 0x52);
582   addNECKey("vcr_channel-", Unmapped_Key, 0xAB, 0x53);
583 }
584
585
586 PioneerAudio4::PioneerAudio4(
587   unsigned int index)
588   : PIRKeysetMetaData(
589       "Audio Keyset 4",
590       Pioneer_Make,
591       index)
592 {
593 }
594
595
596 void PioneerAudio4::populateProtocol(
597   QObject *guiObject)
598 {
599   if (threadableProtocol)
600   {
601     // If the pointer is not null, the keyset must already be populated.
602     return;
603   }
604
605   threadableProtocol = new PioneerProtocol(guiObject, index);
606
607   addNECKey("tapesel", Unmapped_Key, 0xA1, 0x4C);
608   addNECKey(">>", FastForward_Key, 0xA1, 0x56);
609   addNECKey("<<", Rewind_Key, 0xA1, 0x57);
610   addNECKey("<", Unmapped_Key, 0xA1, 0x5B);
611   addNECKey("square", Unmapped_Key, 0xA1, 0x5C);
612   addNECKey(">", Unmapped_Key, 0xA1, 0x5D);
613
614   addNECKey(">>|", Next_Key, 0xA2, 0x10);
615   addNECKey("|<<", Previous_Key, 0xA2, 0x11);
616   addNECKey("squarecd", Stop_Key, 0xA2, 0x16);
617   addNECKey(">cd", Play_Key, 0xA2, 0x17);
618   addNECKey("cdpower", Unmapped_Key, 0xA2, 0x1C);
619   addNECKey("discsel", NextDisc_Key, 0xA2, 0x65);
620
621   addNECKey("tuner+", ChannelUp_Key, 0xA4, 0x10);
622   addNECKey("tuner-", ChannelDown_Key, 0xA4, 0x11);
623   addNECKey("tunerpower", Unmapped_Key, 0xA4, 0x1C);
624
625   addNECKey("vol+", VolumeUp_Key, 0xA5, 0x0A);
626   addNECKey("vol-", VolumeDown_Key, 0xA5, 0x0B);
627   addNECKey("amppower", Power_Key, 0xA5, 0x1C);
628   addNECKey("tape2", Unmapped_Key, 0xA5, 0x1D);
629   addNECKey("function", Unmapped_Key, 0xA5, 0x55);
630 }
631
632
633 PioneerAudio5::PioneerAudio5(
634   unsigned int index)
635   : PIRKeysetMetaData(
636       "Audio Keyset 5",
637       Pioneer_Make,
638       index)
639 {
640   addControlledDevice(Pioneer_Make, "XR-P240C", Audio_Device);
641 }
642
643
644 void PioneerAudio5::populateProtocol(
645   QObject *guiObject)
646 {
647   if (threadableProtocol)
648   {
649     // If the pointer is not null, the keyset must already be populated.
650     return;
651   }
652
653   LIRCProtocol *lp = new LIRCProtocol(
654     guiObject,
655     index,
656     560, 560,
657     560, 1680,
658     110000, true);
659
660   threadableProtocol = lp;
661
662   lp->setHeaderPair(9000, 4500);
663   lp->setTrailerPulse(560);
664   lp->setRepeatPair(9000, 4500);
665
666   setPreData(0x10217EF, 26);
667
668   addKey("POWER", Power_Key, 0x9867, 16);
669   addKey("MONO", FMMode_Key, 0x48B7, 16);
670   addKey("MEM_SCAN", Unmapped_Key, 0x8877, 16);
671   addKey("TUNER_BAND", TunerBand_Key, 0x18E7, 16);
672   addKey("1", One_Key, 0x00FF, 16);
673   addKey("2", Two_Key, 0x807F, 16);
674   addKey("3", Three_Key, 0x40BF, 16);
675   addKey("4", Four_Key, 0xC03F, 16);
676   addKey("5", Five_Key, 0x20DF, 16);
677   addKey("6", Six_Key, 0xA05F, 16);
678   addKey("7", Seven_Key, 0x609F, 16);
679   addKey("8", Eight_Key, 0xE01F, 16);
680   addKey("SCAN", Scan_Key, 0xB44B, 16);
681   addKey("REPEAT", Repeat_Key, 0x847B, 16);
682   addKey("DISC", NextDisc_Key, 0xE41B, 16);
683   addKey("CLEAR", Clear_Key, 0x34CB, 16);
684   addKey("PROGRAM", Program_Key, 0x44BB, 16);
685   addKey("CD_PREV", Previous_Key, 0x2CD3, 16);
686   addKey("CD_NEXT", Next_Key, 0x6C93, 16);
687   addKey("TIME", Unmapped_Key, 0x04FB, 16);
688   addKey("RANDOM", Random_Key, 0xC43B, 16);
689   addKey("CD_STOP", Stop_Key, 0xF40B, 16);
690   addKey("CD_PLAY_PAUSE", Play_Key, 0xD42B, 16);
691   addKey("CD_PLAY_PAUSE", Pause_Key, 0xD42B, 16);
692   addKey("VOLUME_PLUS", VolumeUp_Key, 0x708F, 16);
693   addKey("VOLUME_MINUS", VolumeDown_Key, 0xF00F, 16);
694   addKey("POWER_BASS", EnhancedBass_Key, 0xD02F, 16);
695   addKey("MUTE", Mute_Key, 0xE817, 16);
696   addKey("TAPE", TapeInput_Key, 0x7887, 16);
697   addKey("AUX_VIDEO", AuxInput_Key, 0xF807, 16);
698   addKey("TUNER", TunerInput_Key, 0xD827, 16);
699   addKey("CD", CDInput_Key, 0x38C7, 16);
700 }
701
702
703 PioneerCD1::PioneerCD1(
704   unsigned int index)
705   : PIRKeysetMetaData(
706       "CD Keyset 1",
707       Pioneer_Make,
708       index)
709 {
710   addControlledDevice(Pioneer_Make, "PD-106", Audio_Device);
711   addControlledDevice(Pioneer_Make, "PD-202", Audio_Device);
712   addControlledDevice(Pioneer_Make, "PD-4550", Audio_Device);
713   addControlledDevice(Pioneer_Make, "PD-F957", Audio_Device);
714   addControlledDevice(Pioneer_Make, "PD-M107", Audio_Device);
715   addControlledDevice(Pioneer_Make, "PD-S503", Audio_Device);
716   addControlledDevice(Pioneer_Make, "PD-F1007", Audio_Device);
717 }
718
719
720 void PioneerCD1::populateProtocol(
721   QObject *guiObject)
722 {
723   if (threadableProtocol)
724   {
725     // If the pointer is not null, the keyset must already be populated.
726     return;
727   }
728
729   threadableProtocol = new PioneerProtocol(guiObject, index);
730
731   addNECKey("0", Zero_Key, 0xA2, 0x00);
732   addNECKey("1", One_Key, 0xA2, 0x01);
733   addNECKey("2", Two_Key, 0xA2, 0x02);
734   addNECKey("3", Three_Key, 0xA2, 0x03);
735   addNECKey("4", Four_Key, 0xA2, 0x04);
736   addNECKey("5", Five_Key, 0xA2, 0x05);
737   addNECKey("6", Six_Key, 0xA2, 0x06);
738   addNECKey("7", Seven_Key, 0xA2, 0x07);
739   addNECKey("8", Eight_Key, 0xA2, 0x08);
740   addNECKey("9", Nine_Key, 0xA2, 0x09);
741   addNECKey("VOL+", VolumeUp_Key, 0xA2, 0x0A);
742   addNECKey("VOL-", VolumeDown_Key, 0xA2, 0x0B);
743   addNECKey("REPEAT", Repeat_Key, 0xA2, 0x0C);
744   addNECKey("PROGRAMMEMORY", Program_Key, 0xA2, 0x0D); // "PROG"
745   addNECKey("forw", FastForward_Key, 0xA2, 0x0E); // "FF"
746   addNECKey("back", Rewind_Key, 0xA2, 0x0F); // "REW"
747
748   addNECKey("skip_forw", Next_Key, 0xA2, 0x10);
749   addNECKey("skip_back", Previous_Key, 0xA2, 0x11);
750   addNECKey("stop", Stop_Key, 0xA2, 0x16);
751   addNECKey("play", Play_Key, 0xA2, 0x17);
752   addNECKey("pause", Pause_Key, 0xA2, 0x18);
753   addNECKey("power", Power_Key, 0xA2, 0x1C);
754   addNECKey("disc+", NextDisc_Key, 0xA2, 0x1D);
755   addNECKey("disc_1", Unmapped_Key, 0xA2, 0x1E);
756   addNECKey("disc_2", Unmapped_Key, 0xA2, 0x1F);
757
758   addNECKey("set_track", Unmapped_Key, 0xA2, 0x40);
759   addNECKey("menu", Menu_Key, 0xA2, 0x41);  // "set_disc"
760   addNECKey("TIME", Unmapped_Key, 0xA2, 0x43);
761   addNECKey("CLEAR", Clear_Key, 0xA2, 0x45);
762   addNECKey("check", Unmapped_Key, 0xA2, 0x49);
763   addNECKey("RANDOM", Random_Key, 0xA2, 0x4A);
764   addNECKey("AUTOPGM", Unmapped_Key, 0xA2, 0x4B); // "EDIT"
765   addNECKey("MUSICWINDOW", Unmapped_Key, 0xA2, 0x4D);
766   addNECKey("FADEIN", Unmapped_Key, 0xA2, 0x4E);
767   addNECKey("FADEOUT", Unmapped_Key, 0xA2, 0x4F);
768   addNECKey("disc_3", Unmapped_Key, 0xA2, 0x50);
769   addNECKey("OPEN/CLOSE", Eject_Key, 0xA2, 0x51);
770   addNECKey("+10", Unmapped_Key, 0xA2, 0x52);
771   addNECKey("disc_4", Unmapped_Key, 0xA2, 0x53);
772   addNECKey("NEXTINDEX", Unmapped_Key, 0xA2, 0x54);
773   addNECKey("PREVINDEX", Unmapped_Key, 0xA2, 0x55);
774   addNECKey(">=20", DoubleDigit_Key, 0xA2, 0x56);
775   addNECKey("disc_5", Unmapped_Key, 0xA2, 0x57);
776   addNECKey("TIMEFADE", Unmapped_Key, 0xA2, 0x5A);
777   addNECKey("disc_6", Unmapped_Key, 0xA2, 0x5B);
778   addNECKey("delete", Unmapped_Key, 0xA2, 0x5D);
779   addNECKey("HI-LITE", Unmapped_Key, 0xA2, 0x5E); // "hi-lite_scan"
780
781   addPioneerKey("20", Unmapped_Key, 0xA2, 0xC0, 0xA2, 0x80);
782   addPioneerKey("11", Unmapped_Key, 0xA2, 0xC0, 0xA2, 0x81);
783   addPioneerKey("12", Unmapped_Key, 0xA2, 0xC0, 0xA2, 0x82);
784   addPioneerKey("13", Unmapped_Key, 0xA2, 0xC0, 0xA2, 0x83);
785   addPioneerKey("14", Unmapped_Key, 0xA2, 0xC0, 0xA2, 0x84);
786   addPioneerKey("15", Unmapped_Key, 0xA2, 0xC0, 0xA2, 0x85);
787   addPioneerKey("16", Unmapped_Key, 0xA2, 0xC0, 0xA2, 0x86);
788   addPioneerKey("17", Unmapped_Key, 0xA2, 0xC0, 0xA2, 0x87);
789   addPioneerKey("18", Unmapped_Key, 0xA2, 0xC0, 0xA2, 0x88);
790   addPioneerKey("19", Unmapped_Key, 0xA2, 0xC0, 0xA2, 0x89);
791
792   addPioneerKey("disc-", PrevDisc_Key, 0xA2, 0xC1, 0xA2, 0x93);
793   addPioneerKey("TITLE_INPUT", Unmapped_Key, 0xA2, 0xC1, 0xA2, 0x95);
794   addPioneerKey("mode", Unmapped_Key, 0xA2, 0xC1, 0xA2, 0x9C);
795
796   addPioneerKey("TITLE_DISPLAY", Info_Key, 0xA2, 0xC2, 0xA2, 0x94);
797   addPioneerKey("search", Unmapped_Key, 0xA2, 0xC2, 0xA2, 0x95);
798   addPioneerKey("BEST", Unmapped_Key, 0xA2, 0xC2, 0xA2, 0x9B);
799
800   addPioneerKey("previous", Unmapped_Key, 0xA2, 0xC6, 0xA2, 0x93);
801   addPioneerKey("CURSOR_right", Right_Key, 0xA2, 0xC6, 0xA2, 0x9B);
802   addPioneerKey("CURSOR_left", Left_Key, 0xA2, 0xC6, 0xA2, 0x9C);
803 }
804
805
806 PioneerLaserDisc1::PioneerLaserDisc1(
807   unsigned int index)
808   : PIRKeysetMetaData(
809       "LD Keyset 1",
810       Pioneer_Make,
811       index)
812 {
813   addControlledDevice(Pioneer_Make, "CLD-D925", Other_Device);
814 }
815
816
817 void PioneerLaserDisc1::populateProtocol(
818   QObject *guiObject)
819 {
820   if (threadableProtocol)
821   {
822     // If the pointer is not null, the keyset must already be populated.
823     return;
824   }
825
826   threadableProtocol = new PioneerProtocol(guiObject, index);
827
828   addNECKey("0", Zero_Key, 0xA8, 0x00);
829   addNECKey("1", One_Key, 0xA8, 0x01);
830   addNECKey("2", Two_Key, 0xA8, 0x02);
831   addNECKey("3", Three_Key, 0xA8, 0x03);
832   addNECKey("4", Four_Key, 0xA8, 0x04);
833   addNECKey("5", Five_Key, 0xA8, 0x05);
834   addNECKey("6", Six_Key, 0xA8, 0x06);
835   addNECKey("7", Seven_Key, 0xA8, 0x07);
836   addNECKey("8", Eight_Key, 0xA8, 0x08);
837   addNECKey("9", Nine_Key, 0xA8, 0x09);
838
839   addNECKey("dacx", Unmapped_Key, 0xA8, 0x0C);
840   addNECKey("ff", FastForward_Key, 0xA8, 0x10);
841   addNECKey("rew", Rewind_Key, 0xA8, 0x11); // "scan-"
842   addNECKey("chp/tm", Unmapped_Key, 0xA8, 0x13);
843 //  addNECKey("eject", Eject_Key, 0xA8, 0x16); // ?
844   addNECKey("stop", Stop_Key, 0xA8, 0x16);
845   addNECKey("play", Play_Key, 0xA8, 0x17);
846   addNECKey("pause", Pause_Key, 0xA8, 0x18);
847   addNECKey("memory", Memory_Key, 0xA8, 0x19);
848   addNECKey("power", Power_Key, 0xA8, 0x1C);
849   addNECKey("audio", Audio_Key, 0xA8, 0x1E); // "Audio_D/A"
850   addNECKey("+10", DoubleDigit_Key, 0xA8, 0x1F);
851   addNECKey("Jog_slow->", Unmapped_Key, 0xA8, 0x20);
852   addNECKey("Jog_slow<-", Unmapped_Key, 0xA8, 0x22);
853   addNECKey("Jog_Forward", Unmapped_Key, 0xA8, 0x2B);
854   addNECKey("Jog_Reverse", Unmapped_Key, 0xA8, 0x2F);
855   addNECKey("ctrl", Unmapped_Key, 0xA8, 0x37);
856   addNECKey("display", Info_Key, 0xA8, 0x43);
857   addNECKey("repeat", Repeat_Key, 0xA8, 0x44);
858   addNECKey("clear", Clear_Key, 0xA8, 0x45);
859   addNECKey("-", Unmapped_Key, 0xA8, 0x46);
860   addNECKey("+", Unmapped_Key, 0xA8, 0x47);
861   addNECKey("repeatab", RepeatAB_Key, 0xA8, 0x48);
862   addNECKey("pgm", Program_Key, 0xA8, 0x4C);
863   addNECKey("Disc_Side_A", Unmapped_Key, 0xA8, 0x4D);
864   addNECKey("Disc_Side_B", Unmapped_Key, 0xA8, 0x4E);
865   addNECKey("step-", StepBack_Key, 0xA8, 0x50);
866   addNECKey("skip+", Next_Key, 0xA8, 0x52);  // "seek+"
867   addNECKey("skip-", Previous_Key, 0xA8, 0x53); // "seek-"
868   addNECKey("step+", StepForward_Key, 0xA8, 0x54);
869   addNECKey("speed-", SlowMinus_Key, 0xA8, 0x55);
870   addNECKey("speed+", SlowPlus_Key, 0xA8, 0x58);
871   addNECKey("intro", Unmapped_Key, 0xA8, 0x5A);
872   addNECKey("random", Random_Key, 0xA8, 0x5E);
873 }
874
875
876 PioneerDVD1::PioneerDVD1(
877   unsigned int index)
878   : PIRKeysetMetaData(
879       "DVD Keyset 1",
880       Pioneer_Make,
881       index)
882 {
883   addControlledDevice(Pioneer_Make, "VXX2702", DVD_Device);
884   addControlledDevice(Pioneer_Make, "VXX2801", DVD_Device);
885 }
886
887
888 void PioneerDVD1::populateProtocol(
889   QObject *guiObject)
890 {
891   if (threadableProtocol)
892   {
893     // If the pointer is not null, the keyset must already be populated.
894     return;
895   }
896
897   threadableProtocol = new PioneerProtocol(guiObject, index);
898
899   addNECKey("STOP", Stop_Key, 0xA3, 0x98);
900   addNECKey("NEXT", Next_Key, 0xA3, 0x9C);
901   addNECKey("PREV", Previous_Key, 0xA3, 0x9D);
902   addNECKey("PLAY", Play_Key, 0xA3, 0x9E);
903   addNECKey("PAUSE", Pause_Key, 0xA3, 0x9F);
904
905   addPioneerKey("SUBTITLE", Captions_Key, 0xA3, 0x99, 0xAF, 0x36);
906   addPioneerKey("ZOOM", Zoom_Key, 0xA3, 0x99, 0xAF, 0x37);
907   addPioneerKey("SURROUND", Surround_Key, 0xA3, 0x99, 0xAF, 0x61);
908   addPioneerKey("LEFT", Left_Key, 0xA3, 0x99, 0xAF, 0x63);
909   addPioneerKey("RIGHT", Right_Key, 0xA3, 0x99, 0xAF, 0x64);
910   addPioneerKey("PLAY_MODE", Unmapped_Key, 0xA3, 0x99, 0xAF, 0x7F);
911   addPioneerKey("0", Zero_Key, 0xA3, 0x99, 0xAF, 0xA0);
912   addPioneerKey("1", One_Key, 0xA3, 0x99, 0xAF, 0xA1);
913   addPioneerKey("2", Two_Key, 0xA3, 0x99, 0xAF, 0xA2);
914   addPioneerKey("3", Three_Key, 0xA3, 0x99, 0xAF, 0xA3);
915   addPioneerKey("4", Four_Key, 0xA3, 0x99, 0xAF, 0xA4);
916   addPioneerKey("5", Five_Key, 0xA3, 0x99, 0xAF, 0xA5);
917   addPioneerKey("6", Six_Key, 0xA3, 0x99, 0xAF, 0xA6);
918   addPioneerKey("7", Seven_Key, 0xA3, 0x99, 0xAF, 0xA7);
919   addPioneerKey("8", Eight_Key, 0xA3, 0x99, 0xAF, 0xA8);
920   addPioneerKey("9", Nine_Key, 0xA3, 0x99, 0xAF, 0xA9);
921   addPioneerKey("SETUP", Menu_Key, 0xA3, 0x99, 0xAF, 0xB0);
922   addPioneerKey("TOP_MENU", DiscTitle_Key, 0xA3, 0x99, 0xAF, 0xB4);
923   addPioneerKey("ANGLE", Angle_Key, 0xA3, 0x99, 0xAF, 0xB5);
924   addPioneerKey("OPEN/CLOSE", Eject_Key, 0xA3, 0x99, 0xAF, 0xB6);
925   addPioneerKey("MENU", DiscMenu_Key, 0xA3, 0x99, 0xAF, 0xB9);
926   addPioneerKey("AUDIO", Audio_Key, 0xA3, 0x99, 0xAF, 0xBE);
927   addPioneerKey("STANDBY/ON", Power_Key, 0xA3, 0x99, 0xAF, 0xBC);
928   addPioneerKey("DISPLAY", Info_Key, 0xA3, 0x99, 0xAF, 0xE3);
929   addPioneerKey("CLEAR", Clear_Key, 0xA3, 0x99, 0xAF, 0xE5);
930   addPioneerKey("FWD", FastForward_Key, 0xA3, 0x99, 0xAF, 0xE9);
931   addPioneerKey("BWD", Rewind_Key, 0xA3, 0x99, 0xAF, 0xEA);
932   addPioneerKey("ENTER", Enter_Key, 0xA3, 0x99, 0xAF, 0xEF);
933   addPioneerKey("ENTER", Select_Key, 0xA3, 0x99, 0xAF, 0xEF);
934   addPioneerKey("UP", Up_Key, 0xA3, 0x99, 0xAF, 0xF2);
935   addPioneerKey("DOWN", Down_Key, 0xA3, 0x99, 0xAF, 0xF3);
936   addPioneerKey("RETURN", Exit_Key, 0xA3, 0x99, 0xAF, 0xF4);
937 }