Website Update
[pierogi] / keysets / sony.cpp
1 #include "sony.h"
2 #include "protocols/sircprotocol.h"
3
4
5 SonyTV1::SonyTV1(
6   unsigned int index)
7   : PIRKeysetMetaData(
8       "TV Keyset 1",
9       Sony_Make,
10       index)
11 {
12   addControlledDevice(Sony_Make, "KV-M1420D", TV_Device);
13   addControlledDevice(Sony_Make, "KV-20FV10", TV_Device);
14   addControlledDevice(Sony_Make, "KV-2184MT", TV_Device);
15   addControlledDevice(Sony_Make, "KV-27FX210", TV_Device);
16   addControlledDevice(Sony_Make, "KV-32FS210", TV_Device);
17   addControlledDevice(Sony_Make, "KV-36FS210", TV_Device);
18   addControlledDevice(Sony_Make, "KV-36FS13", TV_Device);
19   addControlledDevice(Sony_Make, "KDL-23B4030", TV_Device);
20   addControlledDevice(Sony_Make, "KDL-52X2000", TV_Device);
21   addControlledDevice(Sony_Make, "KDL-46X2000", TV_Device);
22   addControlledDevice(Sony_Make, "KDL-40X2000", TV_Device);
23   addControlledDevice(Sony_Make, "KP-46WT520", TV_Device);
24 }
25
26
27 void SonyTV1::populateProtocol(
28   QObject *guiObject)
29 {
30   if (threadableProtocol)
31   {
32     // If the pointer is not null, the keyset must already be populated.
33     return;
34   }
35
36   threadableProtocol = new SIRCProtocol(guiObject, index);
37
38   addSIRC12Key("1", One_Key, 0x01, 0x00);
39   addSIRC12Key("2", Two_Key, 0x01, 0x01);
40   addSIRC12Key("3", Three_Key, 0x01, 0x02);
41   addSIRC12Key("4", Four_Key, 0x01, 0x03);
42   addSIRC12Key("5", Five_Key, 0x01, 0x04);
43   addSIRC12Key("6", Six_Key, 0x01, 0x05);
44   addSIRC12Key("7", Seven_Key, 0x01, 0x06);
45   addSIRC12Key("8", Eight_Key, 0x01, 0x07);
46   addSIRC12Key("9", Nine_Key, 0x01, 0x08);
47   addSIRC12Key("0", Zero_Key, 0x01, 0x09);
48   addSIRC12Key("enter", Enter_Key, 0x01, 0x0B);
49   addSIRC12Key("1-", Unmapped_Key, 0x01, 0x0C);
50   addSIRC12Key("2-", Unmapped_Key, 0x01, 0x0D);
51   addSIRC12Key("C", Clear_Key, 0x01, 0x0E); // "C00"
52   addSIRC12Key("CHANNEL/PAGE+", ChannelUp_Key, 0x01, 0x10);
53   addSIRC12Key("CHANNEL/PAGE-", ChannelDown_Key, 0x01, 0x11);
54   addSIRC12Key("VOLUME+", VolumeUp_Key, 0x01, 0x12);
55   addSIRC12Key("VOLUME-", VolumeDown_Key, 0x01, 0x13);
56   addSIRC12Key("MUTE", Mute_Key, 0x01, 0x14);
57   addSIRC12Key("POWER", Power_Key, 0x01, 0x15);
58   addSIRC12Key("normalise", Reset_Key, 0x01, 0x16); // "reset"
59   addSIRC12Key("a/b", Audio_Key, 0x01, 0x17); // "mts", "sap", "language"
60   addSIRC12Key("picture_up", ContrastUp_Key, 0x01, 0x18); // "Contrast Up"
61   addSIRC12Key("picture_down", ContrastDown_Key, 0x1, 0x19); // "Contrast Down"
62   addSIRC12Key("-/--", DoubleDigit_Key, 0x01, 0x1D);
63   addSIRC12Key("tv/video", Input_Key, 0x01, 0x25);
64   addSIRC12Key("bucket", Unmapped_Key, 0x01, 0x28);
65   addSIRC12Key("stereo", Surround_Key, 0x01, 0x29);
66   addSIRC12Key("ANT", AntennaInput_Key, 0x01, 0x2A);
67   addSIRC12Key("time", Clock_Key, 0x01, 0x2B);
68   addSIRC12Key("timer/block", Timer_Key, 0x01, 0x30);
69   addSIRC12Key("right", Right_Key, 0x01, 0x33);
70   addSIRC12Key("left", Left_Key, 0x01, 0x34);
71   addSIRC12Key("sleep", Sleep_Key, 0x01, 0x36);
72   addSIRC12Key("TV-RETURN", Unmapped_Key, 0x01, 0x38); // "analog"
73   addSIRC12Key("?/INFO", Info_Key, 0x01, 0x3A); // Teletext Index
74   addSIRC12Key("prev_ch", PrevChannel_Key, 0x01, 0x3B); // "jump"
75   addSIRC12Key("off/repeat", Repeat_Key, 0x01, 0x3C);
76   addSIRC12Key("TELETXT", Teletext_Key, 0x01, 0x3F);
77   addSIRC12Key("favourite", Unmapped_Key, 0x01, 0x4A); // separate keyset?
78   addSIRC12Key("cable", CableInput_Key, 0x01, 0x4E);
79   addSIRC12Key("Sat", SatInput_Key, 0x01, 0x51);
80   addSIRC12Key("pip_ch+", PIPChannelUp_Key, 0x01, 0x58);
81   addSIRC12Key("pip_ch-", PIPChannelDown_Key, 0x01, 0x59);
82   addSIRC12Key("piptv_video", PIPSource_Key, 0x01, 0x5A);
83   addSIRC12Key("PIP", PIP_Key, 0x01, 0x5B);
84   addSIRC12Key("pipfreeze", PIPPause_Key, 0x01, 0x5C);
85   addSIRC12Key("PIP_POSITION", PIPMove_Key, 0x01, 0x5E);
86   addSIRC12Key("PIP_SWAP", PIPSwap_Key, 0x01, 0x5F);
87   addSIRC12Key("MENU", Menu_Key, 0x01, 0x60);
88   addSIRC12Key("Settup_V", Unmapped_Key, 0x01, 0x61); // alternate pic mode
89   addSIRC12Key("Settup_A", Unmapped_Key, 0x01, 0x62); // alternate sound mode
90   addSIRC12Key("EXIT", Exit_Key, 0x01, 0x63);
91   addSIRC12Key("picturemode", PictureMode_Key, 0x01, 0x64);
92   addSIRC12Key("OK", Select_Key, 0x01, 0x65); // "return", "select", "enter"
93   addSIRC12Key("output", Unmapped_Key, 0x01, 0x66);
94   addSIRC12Key("PIP_SOURCE", Unmapped_Key, 0x01, 0x67); // separate keyset?
95   addSIRC12Key("asterisk", Unmapped_Key, 0x01, 0x68); // "TV System"
96   addSIRC12Key("auto_program", Unmapped_Key, 0x01, 0x6B);
97   addSIRC12Key("setup", Program_Key, 0x01, 0x6C);
98   addSIRC12Key("tune_down", Unmapped_Key, 0x01, 0x6F); // "search -"
99   addSIRC12Key("tune_up", Unmapped_Key, 0x01, 0x6E); // "search +"
100   addSIRC12Key("up", Up_Key, 0x01, 0x74);
101   addSIRC12Key("down", Down_Key, 0x01, 0x75);
102   addSIRC12Key("diamond", Unmapped_Key, 0x01, 0x78); // "add"
103   addSIRC12Key("erase", Unmapped_Key, 0x01, 0x79);
104   addSIRC12Key("select", Unmapped_Key, 0x01, 0x7C); // PictureMode_Key?
105
106   addSIRC12Key("vt_inf", TeletextIndex_Key, 0x03, 0x48); // "Teletext Home"
107   addSIRC12Key("expand", TeletextSize_Key, 0x03, 0x49);
108   addSIRC12Key("Teletext Hold", TeletextHold_Key, 0x03, 0x4A); // "shrink"
109   addSIRC12Key("subtitles", Unmapped_Key, 0x03, 0x4B); // Teletext subtitles
110   addSIRC12Key("LEFT/-/RED", Red_Key, 0x03, 0x4C);
111   addSIRC12Key("UP/GREEN", Green_Key, 0x03, 0x4D);
112   addSIRC12Key("RIGHT/+/YELLOW", Yellow_Key, 0x03, 0x4E);
113   addSIRC12Key("DOWN/BLUE", Blue_Key, 0x03, 0x4F);
114
115   addSIRC15Key("SYNC_MENU", Unmapped_Key, 0x1A, 0x58);
116   addSIRC15Key("SCENE", Unmapped_Key, 0x1A, 0x78);
117   addSIRC15Key("INTERNET_VIDEO", Unmapped_Key, 0x1A, 0x79);
118   addSIRC15Key("I-MANUAL", Unmapped_Key, 0x1A, 0x7B);
119
120   addSIRC15Key("DIGITAL_ANALOG", Unmapped_Key, 0x77, 0x0D);
121   addSIRC15Key("DIGITAL", Unmapped_Key, 0x77, 0x52);
122   addSIRC15Key("theatre", Unmapped_Key, 0x77, 0x60); // "Home Theater"
123   addSIRC15Key("FAVORITES", Favorites_Key, 0x77, 0x76);
124
125   addSIRC15Key("STOP", Stop_Key, 0x97, 0x18);
126   addSIRC15Key("PAUSE", Pause_Key, 0x97, 0x19);
127   addSIRC15Key("PLAY", Play_Key, 0x97, 0x1A);
128   addSIRC15Key("FBACKWARD", Rewind_Key, 0x97, 0x1B);
129   addSIRC15Key("FFORWARD", FastForward_Key, 0x97, 0x1C);
130   addSIRC15Key("DOT", Unmapped_Key, 0x97, 0x1D);
131   addSIRC15Key("RETURN", Unmapped_Key, 0x97, 0x23); // exit?
132   addSIRC15Key("TOOLS", Unmapped_Key, 0x97, 0x36); // "OPTIONS"
133   addSIRC15Key("PREVIOUS", Previous_Key, 0x97, 0x3C);
134   addSIRC15Key("NEXT", Next_Key, 0x97, 0x3D);
135   addSIRC15Key("REPLAY", Replay_Key, 0x97, 0x79);
136   addSIRC15Key("ADVANCE", Advance_Key, 0x97, 0x78);
137   addSIRC15Key("SOUND", Unmapped_Key, 0x97, 0x7B);
138
139   addSIRC15Key("Surround_Mode", Unmapped_Key, 0xA4, 0x1F); // "Music"
140   addSIRC15Key("16:9", AspectRatio_Key, 0xA4, 0x3D); // "WIDE"
141   addSIRC15Key("EPG", Guide_Key, 0xA4, 0x5B);
142   addSIRC15Key("PIP_Audio", Unmapped_Key, 0xA4, 0x7C);
143 }
144
145
146 SonyTV1a::SonyTV1a(
147   unsigned int index)
148   : SonyTV1(index)
149 {
150   setKeysetName("TV Keyset 1a");
151
152   addControlledDevice(Sony_Make, "KDW-25", TV_Device);
153 }
154
155
156 void SonyTV1a::populateProtocol(
157   QObject *guiObject)
158 {
159   if (threadableProtocol)
160   {
161     // If the pointer is not null, the keyset must already be populated.
162     return;
163   }
164
165   SonyTV1::populateProtocol(guiObject);
166
167   addSIRC12Key("LEFT/-/RED", Left_Key, 0x03, 0x4C);
168   addSIRC12Key("UP/GREEN", Up_Key, 0x03, 0x4D);
169   addSIRC12Key("RIGHT/+/YELLOW", Right_Key, 0x03, 0x4E);
170   addSIRC12Key("DOWN/BLUE", Down_Key, 0x03, 0x4F);
171 }
172
173
174 SonyTV1b::SonyTV1b(
175   unsigned int index)
176   : SonyTV1a(index)
177 {
178   setKeysetName("TV Keyset 1b");
179 }
180
181
182 void SonyTV1b::populateProtocol(
183   QObject *guiObject)
184 {
185   if (threadableProtocol)
186   {
187     // If the pointer is not null, the keyset must already be populated.
188     return;
189   }
190
191   SonyTV1a::populateProtocol(guiObject);
192
193   addSIRC12Key("clear", Unmapped_Key, 0x01, 0x34); // "Clock Clear"
194   addSIRC12Key("level_plus", Unmapped_Key, 0x01, 0x74);
195   addSIRC12Key("level_minus", Unmapped_Key, 0x01, 0x75);
196   addSIRC12Key("am/pm", Unmapped_Key, 0x01, 0x33);
197 }
198
199
200 // Not sure about these codes:
201 SonyTV1c::SonyTV1c(
202   unsigned int index)
203   : SonyTV1(index)
204 {
205   setKeysetName("TV Keyset 1c");
206 }
207
208
209 void SonyTV1c::populateProtocol(
210   QObject *guiObject)
211 {
212   if (threadableProtocol)
213   {
214     // If the pointer is not null, the keyset must already be populated.
215     return;
216   }
217
218   SonyTV1::populateProtocol(guiObject);
219
220   addSIRC12Key(">>", FastForward_Key, 0x01, 0x58);
221   addSIRC12Key("<<", Rewind_Key, 0x01, 0x59);
222   addSIRC12Key("rec", Record_Key, 0x01, 0x5A);
223   addSIRC12Key("pause", Pause_Key, 0x01, 0x5C);
224   addSIRC12Key("stop", Stop_Key, 0x01, 0x5E);
225   addSIRC12Key("play", Play_Key, 0x01, 0x5F);
226
227   addSIRC15Key("BLUE", Blue_Key, 0x97, 0x24);
228   addSIRC15Key("RED", Red_Key, 0x97, 0x25);
229   addSIRC15Key("GREEN", Green_Key, 0x97, 0x26);
230   addSIRC15Key("YELLOW", Yellow_Key, 0x97, 0x27);
231   addSIRC15Key("SUBTITLES", Captions_Key, 0x97, 0x28);
232 }
233
234
235 // These controls don't quite match other SIRC data.  (some do, some don't)
236 // This all taken from LIRC "AMPIR" config file.
237 SonyAmp1::SonyAmp1(
238   unsigned int index)
239   : PIRKeysetMetaData(
240       "Amp Keyset 1",
241       Sony_Make,
242       index)
243 {
244 }
245
246
247 void SonyAmp1::populateProtocol(
248   QObject *guiObject)
249 {
250   if (threadableProtocol)
251   {
252     // If the pointer is not null, the keyset must already be populated.
253     return;
254   }
255
256   threadableProtocol = new SIRCProtocol(guiObject, index);
257
258   addSIRC12Key("1", One_Key, 0x0C, 0x00);
259   addSIRC12Key("2", Two_Key, 0x0C, 0x01);
260   addSIRC12Key("3", Three_Key, 0x0C, 0x02);
261   addSIRC12Key("4", Four_Key, 0x0C, 0x03);
262   addSIRC12Key("5", Five_Key, 0x0C, 0x04);
263   addSIRC12Key("6", Six_Key, 0x0C, 0x05);
264   addSIRC12Key("7", Seven_Key, 0x0C, 0x06);
265   addSIRC12Key("8", Eight_Key, 0x0C, 0x07);
266   addSIRC12Key("9", Nine_Key, 0x0C, 0x08);
267   addSIRC12Key("0", Zero_Key, 0x0C, 0x09);
268   addSIRC12Key("ENTER", Enter_Key, 0x0C, 0x0B);
269   addSIRC12Key("DIGITAL", Unmapped_Key, 0x0C, 0x0C);
270   addSIRC12Key("VIDEO3", Unmapped_Key, 0x0C, 0x0A);
271   addSIRC12Key("VIDEO4", Unmapped_Key, 0x0C, 0x0B);
272   addSIRC12Key("VOL+", VolumeUp_Key, 0x0C, 0x12);
273   addSIRC12Key("VOL-", VolumeDown_Key, 0x0C, 0x13);
274   addSIRC12Key("MUTE", Mute_Key, 0x0C, 0x14);
275   addSIRC12Key("POWER", Power_Key, 0x0C, 0x15);
276   addSIRC12Key("LD", LDInput_Key, 0x0C, 0x19);
277   addSIRC12Key("TV", CableInput_Key, 0x0C, 0x18);
278   addSIRC12Key("VIDEO2", Unmapped_Key, 0x0C, 0x1E);
279   addSIRC12Key("PHONO", PhonoInput_Key, 0x0C, 0x20);
280   addSIRC12Key("TUNER", TunerInput_Key, 0x0C, 0x21);
281   addSIRC12Key("VIDEO1", Unmapped_Key, 0x0C, 0x22);
282   addSIRC12Key("TAPE", TapeInput_Key, 0x0C, 0x23);
283   addSIRC12Key("CD", CDInput_Key, 0x0C, 0x25);
284   addSIRC12Key("DAT", Unmapped_Key, 0x0C, 0x46);
285   addSIRC12Key("SLEEP", Sleep_Key, 0x0C, 0x60);
286   addSIRC12Key("MD", MDInput_Key, 0x0C, 0x69);
287   addSIRC12Key("TV2", Unmapped_Key, 0x0C, 0x6A);
288   addSIRC12Key("5.1CH", Unmapped_Key, 0x0C, 0x72);
289   addSIRC12Key("DVD", DVDInput_Key, 0x0C, 0x7D);
290 }
291
292
293 // These taken from LIRC config file "RM-AV2100T".
294 SonyAmp2::SonyAmp2(
295   unsigned int index)
296   : PIRKeysetMetaData(
297       "Amp Keyset 2",
298       Sony_Make,
299       index)
300 {
301 }
302
303
304 void SonyAmp2::populateProtocol(
305   QObject *guiObject)
306 {
307   if (threadableProtocol)
308   {
309     // If the pointer is not null, the keyset must already be populated.
310     return;
311   }
312
313   threadableProtocol = new SIRCProtocol(guiObject, index);
314
315   addSIRC12Key("up", Up_Key, 0x0C, 0x78);
316   addSIRC12Key("down", Down_Key, 0x0C, 0x79);
317   addSIRC12Key("left", Left_Key, 0x0C, 0x7A);
318   addSIRC12Key("right", Right_Key, 0x0C, 0x7B);
319
320   addSIRC12Key("program_+", ChannelUp_Key, 0x0D, 0x10);
321   addSIRC12Key("program_-", ChannelDown_Key, 0x0D, 0x11);
322   addSIRC12Key("shift", Unmapped_Key, 0x0D, 0x55);
323
324   addSIRC12Key("1", One_Key, 0x10, 0x00);
325   addSIRC12Key("2", Two_Key, 0x10, 0x01);
326   addSIRC12Key("3", Three_Key, 0x10, 0x02);
327   addSIRC12Key("4", Four_Key, 0x10, 0x03);
328   addSIRC12Key("5", Five_Key, 0x10, 0x04);
329   addSIRC12Key("6", Six_Key, 0x10, 0x05);
330   addSIRC12Key("7", Seven_Key, 0x10, 0x06);
331   addSIRC12Key("8", Eight_Key, 0x10, 0x07);
332   addSIRC12Key("9", Nine_Key, 0x10, 0x08);
333   addSIRC12Key("0", Zero_Key, 0x10, 0x09);
334   addSIRC12Key("enter", Enter_Key, 0x10, 0x0C);
335   addSIRC12Key("vol_+", VolumeUp_Key, 0x10, 0x12);
336   addSIRC12Key("vol_-", VolumeDown_Key, 0x10, 0x13);
337   addSIRC12Key("mute", Mute_Key, 0x10, 0x14);
338   addSIRC12Key("power", Power_Key, 0x10, 0x15);
339   addSIRC12Key("aux/vdp", AuxInput_Key, 0x10, 0x1D);
340   addSIRC12Key("video2", Unmapped_Key, 0x10, 0x1E);
341   addSIRC12Key("phono", PhonoInput_Key, 0x10, 0x20);
342   addSIRC12Key("tuner", TunerInput_Key, 0x10, 0x21);
343   addSIRC12Key("video1", Unmapped_Key, 0x10, 0x22);
344   addSIRC12Key("tape", TapeInput_Key, 0x10, 0x23);
345   addSIRC12Key("cd", CDInput_Key, 0x10, 0x25);
346   addSIRC12Key("power_on", PowerOn_Key, 0x10, 0x2E);
347   addSIRC12Key("video3", Unmapped_Key, 0x10, 0x42);
348   addSIRC12Key("tv", CableInput_Key, 0x10, 0x6A);
349   addSIRC12Key("dvd", DVDInput_Key, 0x10, 0x7D);
350
351   addSIRC15Key("md/dat", MDInput_Key, 0x10, 0x69);
352 }
353
354
355 SonyAudio1::SonyAudio1(
356   unsigned int index)
357   : PIRKeysetMetaData(
358       "Audio Keyset 1",
359       Sony_Make,
360       index)
361 {
362 }
363
364
365 void SonyAudio1::populateProtocol(
366   QObject *guiObject)
367 {
368   if (threadableProtocol)
369   {
370     // If the pointer is not null, the keyset must already be populated.
371     return;
372   }
373
374   threadableProtocol = new SIRCProtocol(guiObject, index);
375
376   addSIRC12Key("tv_video", Input_Key, 0x01, 0x25);
377
378   addSIRC12Key("DSG", Unmapped_Key, 0x0C, 0x31);
379
380   addSIRC12Key("MEMORY", Program_Key, 0x0D, 0x0E);
381   addSIRC12Key("TUNER-BAND", TunerBand_Key, 0x0D, 0x0F);
382   addSIRC12Key("TUNING_MODE", Unmapped_Key, 0x0D, 0x17);
383   addSIRC12Key("STEREO-MONO", FMMode_Key, 0x0D, 0x21);
384
385   addSIRC12Key("DIR_MODE", Unmapped_Key, 0x0E, 0x14);
386   addSIRC12Key("REC", Record_Key, 0x0E, 0x1E);
387   addSIRC12Key("TAPE", TapeInput_Key, 0x0E, 0x34);
388
389   addSIRC12Key("tuner", TunerInput_Key, 0x10, 0x0F); // "Tune Up"
390   addSIRC12Key("VOL+", VolumeUp_Key, 0x10, 0x12);
391   addSIRC12Key("VOL-", VolumeDown_Key, 0x10, 0x13);
392   addSIRC12Key("ON-OFF", Power_Key, 0x10, 0x15);
393   addSIRC12Key("effect_on_off", Unmapped_Key, 0x10, 0x1F);
394   addSIRC12Key("cd", CDInput_Key, 0x10, 0x25);
395   addSIRC12Key("DISPLAY", Info_Key, 0x10, 0x4B);
396   addSIRC12Key("dimmer", Unmapped_Key, 0x10, 0x4D);
397   addSIRC12Key("karaoke_mpx", Unmapped_Key, 0x10, 0x5F);
398   addSIRC12Key("SLEEP", Sleep_Key, 0x10, 0x60);
399   addSIRC12Key("TIMER_SELECT", Unmapped_Key, 0x10, 0x62); // "clock_select"
400   addSIRC12Key("TIMER_SET", Timer_Key, 0x10, 0x65);
401   addSIRC12Key("md", Unmapped_Key, 0x10, 0x69);
402   addSIRC12Key("game", Unmapped_Key, 0x10, 0x7C);
403
404   addSIRC12Key("CD_REPEAT", Repeat_Key, 0x11, 0x2C);
405   addSIRC12Key("CD", Unmapped_Key, 0x11, 0x32);
406   addSIRC12Key("PLAY_MODE", Unmapped_Key, 0x11, 0x6C);
407
408   addSIRC15Key("cinema_effect", Unmapped_Key, 0x90, 0x08);
409   addSIRC15Key("game_mixing", Unmapped_Key, 0x90, 0x33);
410   addSIRC15Key("spectrum", Unmapped_Key, 0x90, 0x34);
411   addSIRC15Key("p_file", Unmapped_Key, 0x90, 0x39);
412   addSIRC15Key("surround_speaker_mode", Surround_Key, 0x90, 0x5F);
413   addSIRC15Key("music_eq", Unmapped_Key, 0x90, 0x60);
414   addSIRC15Key("movie_eq", Unmapped_Key, 0x90, 0x61);
415   addSIRC15Key("game_eq", Unmapped_Key, 0x90, 0x62);
416
417   addSIRC20Key("return", Exit_Key, 0x31, 0x1A, 0x0E);
418   addSIRC20Key("prev_r", Unmapped_Key, 0x31, 0x1A, 0x36);
419   addSIRC20Key("next_r", Unmapped_Key, 0x31, 0x1A, 0x37);
420   addSIRC20Key("special_menu", Menu_Key, 0x31, 0x1A, 0x53);
421   addSIRC20Key("on_screen", Unmapped_Key, 0x31, 0x1A, 0x55);
422   addSIRC20Key("sharp", Unmapped_Key, 0x31, 0x1A, 0x6B);
423   addSIRC20Key("flat", Unmapped_Key, 0x31, 0x1A, 0x6C);
424   addSIRC20Key("album-", Unmapped_Key, 0x31, 0x1A, 0x6E);
425   addSIRC20Key("album+", Unmapped_Key, 0x31, 0x1A, 0x6F);
426
427   addSIRC20Key("1", One_Key, 0x39, 0x1A, 0x00);
428   addSIRC20Key("2", Two_Key, 0x39, 0x1A, 0x01);
429   addSIRC20Key("3", Three_Key, 0x39, 0x1A, 0x02);
430   addSIRC20Key("4", Four_Key, 0x39, 0x1A, 0x03);
431   addSIRC20Key("5", Five_Key, 0x39, 0x1A, 0x04);
432   addSIRC20Key("6", Six_Key, 0x39, 0x1A, 0x05);
433   addSIRC20Key("7", Seven_Key, 0x39, 0x1A, 0x06);
434   addSIRC20Key("8", Eight_Key, 0x39, 0x1A, 0x07);
435   addSIRC20Key("9", Nine_Key, 0x39, 0x1A, 0x08);
436   addSIRC20Key("0", Zero_Key, 0x39, 0x1A, 0x09);
437   addSIRC20Key("KEY_ENTER", Enter_Key, 0x39, 0x1A, 0x0C);
438   addSIRC20Key("gt_10", DoubleDigit_Key, 0x39, 0x1A, 0x0D);
439   addSIRC20Key("clear", Clear_Key, 0x39, 0x1A, 0x0F);
440   addSIRC20Key("repeat", Repeat_Key, 0x39, 0x1A, 0x2C);
441   addSIRC20Key("KEY_PREV_SONG", Previous_Key, 0x39, 0x1A, 0x30);
442   addSIRC20Key("KEY_NEXT_SONG", Next_Key, 0x39, 0x1A, 0x31);
443   addSIRC20Key("KEY_PREV", Rewind_Key, 0x39, 0x1A, 0x33); // "Rewind"
444   addSIRC20Key("KEY_NEXT", FastForward_Key, 0x39, 0x1A, 0x34); // "Fast Forward"
445   addSIRC20Key("KEY_STOP", Stop_Key, 0x39, 0x1A, 0x38);
446   addSIRC20Key("KEY_PAUSE", Pause_Key, 0x39, 0x1A, 0x39);
447   addSIRC20Key("d_skip", NextDisc_Key, 0x39, 0x1A, 0x3E);
448   addSIRC20Key("up", Up_Key, 0x39, 0x1A, 0x78);
449   addSIRC20Key("down", Down_Key, 0x39, 0x1A, 0x79);
450   addSIRC20Key("left", Left_Key, 0x39, 0x1A, 0x7A);
451   addSIRC20Key("right", Right_Key, 0x39, 0x1A, 0x7B);
452   addSIRC20Key("Select", Select_Key, 0x39, 0x1A, 0x7C);
453 }
454
455
456 SonyAudio1a::SonyAudio1a(
457   unsigned int index)
458   : SonyAudio1(index)
459 {
460   setKeysetName("Audio Keyset 1a");
461 }
462
463
464 void SonyAudio1a::populateProtocol(
465   QObject *guiObject)
466 {
467   if (threadableProtocol)
468   {
469     // If the pointer is not null, the keyset must already be populated.
470     return;
471   }
472
473   SonyAudio1::populateProtocol(guiObject);
474
475   addSIRC12Key("tape", TapeInput_Key, 0x10, 0x23);
476
477 //  addSIRC20Key("select", Select_Key, 0x39, 0x1A, 0x32); // Doesn't make sense
478   addSIRC20Key("play", Play_Key, 0x39, 0x1A, 0x32);
479   addSIRC20Key("play_mode", Unmapped_Key, 0x39, 0x1A, 0x26);
480   addSIRC20Key("enter", Select_Key, 0x39, 0x1A, 0x7C);
481 }
482
483
484 SonyDAT1::SonyDAT1(
485   unsigned int index)
486   : PIRKeysetMetaData(
487       "DAT Keyset 1",
488       Sony_Make,
489       index)
490 {
491 }
492
493
494 void SonyDAT1::populateProtocol(
495   QObject *guiObject)
496 {
497   if (threadableProtocol)
498   {
499     // If the pointer is not null, the keyset must already be populated.
500     return;
501   }
502
503   threadableProtocol = new SIRCProtocol(guiObject, index);
504
505   setPostData(0x07, 5);
506
507   addSIRC12Key("1", One_Key, 0x1C, 0x00);
508   addSIRC12Key("2", Two_Key, 0x1C, 0x01);
509   addSIRC12Key("3", Three_Key, 0x1C, 0x02);
510   addSIRC12Key("4", Four_Key, 0x1C, 0x03); 
511   addSIRC12Key("5", Five_Key, 0x1C, 0x04);
512   addSIRC12Key("6", Six_Key, 0x1C, 0x05);
513   addSIRC12Key("7", Seven_Key, 0x1C, 0x06);
514   addSIRC12Key("8", Eight_Key, 0x1C, 0x07);
515   addSIRC12Key("9", Nine_Key, 0x1C, 0x08);
516   addSIRC12Key("0", Zero_Key, 0x1C, 0x14);
517   addSIRC12Key("PLAY", Play_Key, 0x1C, 0x3A);
518   addSIRC12Key("PAUSE", Pause_Key, 0x1C, 0x39);
519   addSIRC12Key("STOP", Stop_Key, 0x1C, 0x38);
520   addSIRC12Key("<<", Rewind_Key, 0x1C, 0x3B);
521   addSIRC12Key(">>", FastForward_Key, 0x1C, 0x3C);
522   addSIRC12Key("|<<", Previous_Key, 0x1C, 0x68);
523   addSIRC12Key(">>|", Next_Key, 0x1C, 0x69);
524   addSIRC12Key("RECORD", Record_Key, 0x1C, 0x3E);
525   addSIRC12Key("Open/Close", Eject_Key, 0x1C, 0x20);
526
527   // The following commands are dubious:
528   addSIRC12Key("VOL+", VolumeUp_Key, 0x1C, 0x12);
529   addSIRC12Key("VOL-", VolumeDown_Key, 0x1C, 0x13);
530   addSIRC12Key("POWER_ON", PowerOn_Key, 0x1C, 0x2E);
531   addSIRC12Key("POWER_OFF", PowerOff_Key, 0x1C, 0x2F);
532   addSIRC12Key("MUTE", Mute_Key, 0x1C, 0x14); // Makes no sense...
533   addSIRC12Key("POWER", Power_Key, 0x1C, 0x15);
534   addSIRC12Key("ENTER", Enter_Key, 0x1C, 0x0B);
535 }
536
537
538 SonyDVD1::SonyDVD1(
539   unsigned int index)
540   : PIRKeysetMetaData(
541       "DVD Keyset 1",
542       Sony_Make,
543       index)
544 {
545   addControlledDevice(Sony_Make, "DVP-CX985V", DVD_Device);
546 }
547
548
549 void SonyDVD1::populateProtocol(
550   QObject *guiObject)
551 {
552   if (threadableProtocol)
553   {
554     // If the pointer is not null, the keyset must already be populated.
555     return;
556   }
557
558   threadableProtocol = new SIRCProtocol(guiObject, index);
559
560   addSIRC20Key("1", One_Key, 0x49, 0x1A, 0x00);
561   addSIRC20Key("2", Two_Key, 0x49, 0x1A, 0x01);
562   addSIRC20Key("3", Three_Key, 0x49, 0x1A, 0x02);
563   addSIRC20Key("4", Four_Key, 0x49, 0x1A, 0x03);
564   addSIRC20Key("5", Five_Key, 0x49, 0x1A, 0x04);
565   addSIRC20Key("6", Six_Key, 0x49, 0x1A, 0x05);
566   addSIRC20Key("7", Seven_Key, 0x49, 0x1A, 0x06);
567   addSIRC20Key("8", Eight_Key, 0x49, 0x1A, 0x07);
568   addSIRC20Key("9", Nine_Key, 0x49, 0x1A, 0x08);
569   addSIRC20Key("0", Zero_Key, 0x49, 0x1A, 0x09);
570   addSIRC20Key("select", Select_Key, 0x49, 0x1A, 0x0B); //"Enter"
571   addSIRC20Key("Disc Explorer", Unmapped_Key, 0x49, 0x1A, 0x0C);
572   addSIRC20Key("Ent", Enter_Key, 0x49, 0x1A, 0x0D); // "Set"
573   addSIRC20Key("return", Exit_Key, 0x49, 0x1A, 0x0E);
574   addSIRC20Key("CLEAR", Clear_Key, 0x49, 0x1A, 0x0F);
575   addSIRC20Key("-/--", DoubleDigit_Key, 0x49, 0x1A, 0x0F);
576
577   addSIRC20Key("Input", Input_Key, 0x49, 0x1A, 0x12);
578   addSIRC20Key("prog+", ChannelUp_Key, 0x49, 0x1A, 0x13);
579   addSIRC20Key("prog-", ChannelDown_Key, 0x49, 0x1A, 0x14);
580   addSIRC20Key("power", Power_Key, 0x49, 0x1A, 0x15);
581   addSIRC20Key("open/close", Eject_Key, 0x49, 0x1A, 0x16);
582   addSIRC20Key("rec", Record_Key, 0x49, 0x1A, 0x19);
583   addSIRC20Key("top_menu", DiscTitle_Key, 0x49, 0x1A, 0x1A); // "Title"
584   addSIRC20Key("dvd_menu", DiscMenu_Key, 0x49, 0x1A, 0x1B);
585   addSIRC20Key("program", Program_Key, 0x49, 0x1A, 0x1F);
586   addSIRC20Key("step/search -", StepBack_Key, 0x49, 0x1A, 0x20);
587   addSIRC20Key("step/search +", StepForward_Key, 0x49, 0x1A, 0x21);
588   addSIRC20Key("scan/slow -", SlowMinus_Key, 0x49, 0x1A, 0x22);
589   addSIRC20Key("scan/slow +", SlowPlus_Key, 0x49, 0x1A, 0x23);
590   addSIRC20Key("INDEX-", Unmapped_Key, 0x49, 0x1A, 0x26);
591   addSIRC20Key("INDEX+", Unmapped_Key, 0x49, 0x1A, 0x27);
592   addSIRC20Key("TIME", Unmapped_Key, 0x49, 0x1A, 0x28);
593   addSIRC20Key("JOG_STOP", Unmapped_Key, 0x49, 0x1A, 0x29); // "Pause"
594   addSIRC20Key("a-b", RepeatAB_Key, 0x49, 0x1A, 0x2A);
595   addSIRC20Key("repeat", Repeat_Key, 0x49, 0x1A, 0x2C);
596   addSIRC20Key("POWER_ON", PowerOn_Key, 0x49, 0x1A, 0x2E);
597   addSIRC20Key("POWER_OFF", PowerOff_Key, 0x49, 0x1A, 0x2F);
598
599   addSIRC20Key("prev", Previous_Key, 0x49, 0x1A, 0x30);
600   addSIRC20Key("next", Next_Key, 0x49, 0x1A, 0x31);
601   addSIRC20Key("play", Play_Key, 0x49, 0x1A, 0x32);
602   addSIRC20Key("rew", Rewind_Key, 0x49, 0x1A, 0x33);
603   addSIRC20Key("ffwd", FastForward_Key, 0x49, 0x1A, 0x34);
604   addSIRC20Key("shuffle", Random_Key, 0x49, 0x1A, 0x35);
605   addSIRC20Key("X2_BACK", Unmapped_Key, 0x49, 0x1A, 0x36);
606   addSIRC20Key("X2_FORWARD", Unmapped_Key, 0x49, 0x1A, 0x37);
607   addSIRC20Key("stop", Stop_Key, 0x49, 0x1A, 0x38);
608   addSIRC20Key("pause", Pause_Key, 0x49, 0x1A, 0x39);
609   addSIRC20Key("STEP_BACK", Unmapped_Key, 0x49, 0x1A, 0x3A); // "Jog Rev"
610   addSIRC20Key("STEP_FORWARD", Unmapped_Key, 0x49, 0x1A, 0x3B); // "Jog Fwd"
611   addSIRC20Key("RecStop", RecordStop_Key, 0x49, 0x1A, 0x3D);
612   addSIRC20Key("RecPause", RecordPause_Key, 0x49, 0x1A, 0x3E);
613
614   addSIRC20Key("DNR", NoiseReduction_Key, 0x49, 0x1A, 0x48);
615   addSIRC20Key("SEARCH_MODE", Unmapped_Key, 0x49, 0x1A, 0x4B);
616   addSIRC20Key("Picture_Navi", Unmapped_Key, 0x49, 0x1A, 0x50);
617   addSIRC20Key("TV_DVD", Unmapped_Key, 0x49, 0x1A, 0x51);
618   addSIRC20Key("menu", Menu_Key, 0x49, 0x1A, 0x53); // "setup"
619   addSIRC20Key("Display", Info_Key, 0x49, 0x1A, 0x54);
620   addSIRC20Key("surround", Surround_Key, 0x49, 0x1A, 0x5A);
621   addSIRC20Key("PICTUREMODE", PictureMode_Key, 0x49, 0x1A, 0x5B);
622   addSIRC20Key("Replay", Replay_Key, 0x49, 0x1A, 0x5C);
623   addSIRC20Key("SA-CD_MULTI/2CH", Unmapped_Key, 0x49, 0x1A, 0x5E);
624   addSIRC20Key("SA-CD/CD", Unmapped_Key, 0x49, 0x1A, 0x5F);
625
626   addSIRC20Key("SLOW_BACK", SlowMinus_Key, 0x49, 0x1A, 0x60);
627   addSIRC20Key("SLOW_FORWARD", SlowPlus_Key, 0x49, 0x1A, 0x61);
628   addSIRC20Key("SUBTITLE_ON_OFF", Captions_Key, 0x49, 0x1A, 0x62);
629   addSIRC20Key("Subtitle Change", Unmapped_Key, 0x49, 0x1A, 0x63);
630   addSIRC20Key("Language", Audio_Key, 0x49, 0x1A, 0x64); // "Audio"
631   addSIRC20Key("ANGLE_CHANGE", Angle_Key, 0x49, 0x1A, 0x65); // "Angle"
632   addSIRC20Key("up", Up_Key, 0x49, 0x1A, 0x79);
633   addSIRC20Key("down", Down_Key, 0x49, 0x1A, 0x7A);
634   addSIRC20Key("left", Left_Key, 0x49, 0x1A, 0x7B);
635   addSIRC20Key("right", Right_Key, 0x49, 0x1A, 0x7C);
636
637   addSIRC20Key("Advance", Advance_Key, 0x62, 0x1A, 0x14);
638   addSIRC20Key("Guide", Guide_Key, 0x62, 0x1A, 0x16);
639   addSIRC20Key("Options", Unmapped_Key, 0x62, 0x1A, 0x17); // "Tools"
640   addSIRC20Key("Dot", Unmapped_Key, 0x62, 0x1A, 0x1D);
641   addSIRC20Key("file", Unmapped_Key, 0x62, 0x1A, 0x20);
642   addSIRC20Key("sort", Unmapped_Key, 0x62, 0x1A, 0x21);
643   addSIRC20Key("edit", Unmapped_Key, 0x62, 0x1A, 0x22);
644   addSIRC20Key("ALBUM-MINUS", Unmapped_Key, 0x62, 0x1A, 0x29);
645   addSIRC20Key("ALBUM-PLUS", Unmapped_Key, 0x62, 0x1A, 0x2A);
646   addSIRC20Key("F1", Unmapped_Key, 0x62, 0x1A, 0x2E); // "HDD"
647   addSIRC20Key("F2", Unmapped_Key, 0x62, 0x1A, 0x2F); // "DVD"
648   addSIRC20Key("picture memory", Unmapped_Key, 0x62, 0x1A, 0x3C);
649   addSIRC20Key("disc skip -", PrevDisc_Key, 0x62, 0x1A, 0x3D);
650   addSIRC20Key("DiscSkip", NextDisc_Key, 0x62, 0x1A, 0x3E); // "disc skip +"
651   addSIRC20Key("folder", Unmapped_Key, 0x62, 0x1A, 0x40);
652   addSIRC20Key("Favorites", Favorites_Key, 0x62, 0x1A, 0x5E);
653   addSIRC20Key("Purple", Blue_Key, 0x62, 0x1A, 0x66);
654   addSIRC20Key("Red", Red_Key, 0x62, 0x1A, 0x67);
655   addSIRC20Key("Green", Green_Key, 0x62, 0x1A, 0x68);
656   addSIRC20Key("Yellow", Yellow_Key, 0x62, 0x1A, 0x69);
657   addSIRC20Key("ZOOM", Zoom_Key, 0x62, 0x1A, 0x79);
658 }
659
660
661 SonyDVD1a::SonyDVD1a(
662   unsigned int index)
663   : SonyDVD1(index)
664 {
665   setKeysetName("DVD Keyset 1a");
666 }
667
668
669 void SonyDVD1a::populateProtocol(
670   QObject *guiObject)
671 {
672   if (threadableProtocol)
673   {
674     // If the pointer is not null, the keyset must already be populated.
675     return;
676   }
677
678   SonyDVD1::populateProtocol(guiObject);
679
680   addSIRC20Key("STEP_BACK", StepBack_Key, 0x49, 0x1A, 0x20);
681   addSIRC20Key("STEP_FORWARD", StepForward_Key, 0x49, 0x1A, 0x21);
682   addSIRC20Key("SLOW_BACK", SlowMinus_Key, 0x49, 0x1A, 0x22);
683   addSIRC20Key("SLOW_FORWARD", SlowPlus_Key, 0x49, 0x1A, 0x23);
684 }
685
686
687 SonyDVD1b::SonyDVD1b(
688   unsigned int index)
689   : SonyDVD1(index)
690 {
691   setKeysetName("DVD Keyset 1b");
692 }
693
694
695 void SonyDVD1b::populateProtocol(
696   QObject *guiObject)
697 {
698   if (threadableProtocol)
699   {
700     // If the pointer is not null, the keyset must already be populated.
701     return;
702   }
703
704   SonyDVD1::populateProtocol(guiObject);
705
706   addSIRC20Key("SLOW-", SlowMinus_Key, 0x49, 0x1A, 0x72);
707   addSIRC20Key("SLOW+", SlowPlus_Key, 0x49, 0x1A, 0x73);
708 }
709
710
711 SonyDVD1c::SonyDVD1c(
712   unsigned int index)
713   : SonyDVD1(index)
714 {
715   setKeysetName("DVD Keyset 1c");
716 }
717
718
719 void SonyDVD1c::populateProtocol(
720   QObject *guiObject)
721 {
722   if (threadableProtocol)
723   {
724     // If the pointer is not null, the keyset must already be populated.
725     return;
726   }
727
728   SonyDVD1::populateProtocol(guiObject);
729
730   addSIRC20Key("up", Up_Key, 0x49, 0x1A, 0x39);
731   addSIRC20Key("down", Down_Key, 0x49, 0x1A, 0x38);
732   addSIRC20Key("left", Left_Key, 0x49, 0x1A, 0x33);
733   addSIRC20Key("right", Right_Key, 0x49, 0x1A, 0x34);
734   addSIRC20Key("ok", Select_Key, 0x49, 0x1A, 0x32);
735   addSIRC20Key("enter", Enter_Key, 0x49, 0x1A, 0x0B);
736 }
737
738
739 SonyVCR1::SonyVCR1(
740   unsigned int index)
741   : PIRKeysetMetaData(
742       "VCR Keyset 1",
743       Sony_Make,
744       index)
745 {
746 }
747
748
749 void SonyVCR1::populateProtocol(
750   QObject *guiObject)
751 {
752   if (threadableProtocol)
753   {
754     // If the pointer is not null, the keyset must already be populated.
755     return;
756   }
757
758   threadableProtocol = new SIRCProtocol(guiObject, index);
759
760   addSIRC12Key("VOL_UP", VolumeUp_Key, 0x01, 0x12);
761   addSIRC12Key("VOL_DOWN", VolumeDown_Key, 0x01, 0x13);
762
763   addSIRC12Key("red", Red_Key, 0x03, 0x4C);
764   addSIRC12Key("green", Green_Key, 0x03, 0x4D);
765   addSIRC12Key("Yellow", Yellow_Key, 0x03, 0x4E);
766   addSIRC12Key("blue", Blue_Key, 0x03, 0x4F);
767
768   addSIRC12Key("1", One_Key, 0x0B, 0x00);
769   addSIRC12Key("2", Two_Key, 0x0B, 0x01);
770   addSIRC12Key("3", Three_Key, 0x0B, 0x02);
771   addSIRC12Key("4", Four_Key, 0x0B, 0x03);
772   addSIRC12Key("5", Five_Key, 0x0B, 0x04);
773   addSIRC12Key("6", Six_Key, 0x0B, 0x05);
774   addSIRC12Key("7", Seven_Key, 0x0B, 0x06);
775   addSIRC12Key("8", Eight_Key, 0x0B, 0x07);
776   addSIRC12Key("9", Nine_Key, 0x0B, 0x08);
777   addSIRC12Key("0", Zero_Key, 0x0B, 0x09);
778 //  addSIRC12Key("jump", PrevChannel_Key, 0x0B, 0x0A); // might be wrong
779   addSIRC12Key("-/--", DoubleDigit_Key, 0x0B, 0x0A);
780   addSIRC12Key("ENT", Enter_Key, 0x0B, 0x0B); // "Enter"
781
782   addSIRC12Key("prog-next", ChannelUp_Key, 0x0B, 0x10);
783   addSIRC12Key("prog-prev", ChannelDown_Key, 0x0B, 0x11);
784   addSIRC12Key("pwon", Power_Key, 0x0B, 0x15);
785   addSIRC12Key("stop", Stop_Key, 0x0B, 0x18);
786   addSIRC12Key("pause", Pause_Key, 0x0B, 0x19);
787   addSIRC12Key("play", Play_Key, 0x0B, 0x1A);
788   addSIRC12Key("<<", Rewind_Key, 0x0B, 0x1B);
789   addSIRC12Key(">>", FastForward_Key, 0x0B, 0x1C);
790   addSIRC12Key("rec", Record_Key, 0x0B, 0x1D);
791   addSIRC12Key("ant/sw", AntennaInput_Key, 0x0B, 0x2A);  // "tv/vcr"
792   addSIRC12Key("power_on", PowerOn_Key, 0x0B, 0x2E);
793   addSIRC12Key("Power Off", PowerOff_Key, 0x0B, 0x2F);
794   addSIRC12Key("menu", Menu_Key, 0x0B, 0x4D);
795   addSIRC12Key("input", Input_Key, 0x0B, 0x4F);
796   addSIRC12Key("display", Info_Key, 0x0B, 0x5A);
797
798   // Odd cursor keys, overlap with media controls:
799   addSIRC12Key("down", Down_Key, 0x0B, 0x18);
800   addSIRC12Key("up", Up_Key, 0x0B, 0x19);
801   addSIRC12Key("ok", Select_Key, 0x0B, 0x1A);
802   addSIRC12Key("left", Left_Key, 0x0B, 0x1B);
803   addSIRC12Key("right", Right_Key, 0x0B, 0x1C);
804 }
805
806
807 SonyVCR1a::SonyVCR1a(
808   unsigned int index)
809   : SonyVCR1(index)
810 {
811   setKeysetName("VCR Keyset 1a");
812 }
813
814
815 void SonyVCR1a::populateProtocol(
816   QObject *guiObject)
817 {
818   if (threadableProtocol)
819   {
820     // If the pointer is not null, the keyset must already be populated.
821     return;
822   }
823
824   SonyVCR1::populateProtocol(guiObject);
825
826   // These are the expected cursor keys:
827   addSIRC12Key("up", Up_Key, 0x0B, 0x42);
828   addSIRC12Key("down", Down_Key, 0x0B, 0x43);
829   addSIRC12Key("left", Left_Key, 0x0B, 0x62);
830   addSIRC12Key("right", Right_Key, 0x0B, 0x61);
831   addSIRC12Key("execute", Select_Key, 0x0B, 0x51); //"OK"
832
833 //  addKey("SLEEP", Sleep_Key, 0x0B, 0x4F); // odd
834 }
835
836
837 // Extra codes off of hifi-remote website:
838 SonyVCR1b::SonyVCR1b(
839   unsigned int index)
840   : SonyVCR1a(index)
841 {
842   setKeysetName("VCR Keyset 1b");
843 }
844
845
846 void SonyVCR1b::populateProtocol(
847   QObject *guiObject)
848 {
849   if (threadableProtocol)
850   {
851     // If the pointer is not null, the keyset must already be populated.
852     return;
853   }
854
855   SonyVCR1a::populateProtocol(guiObject);
856
857   addSIRC12Key("Volume Up", VolumeUp_Key, 0x0B, 0x12);
858   addSIRC12Key("Volume Down", VolumeDown_Key, 0x0B, 0x13);
859   addSIRC12Key("Eject", Eject_Key, 0x0B, 0x16);
860   addSIRC12Key("Record Pause", RecordPause_Key, 0x0B, 0x1E);
861   addSIRC12Key("Record Mute", RecordMute_Key, 0x0B, 0x1F);
862   addSIRC12Key("Auto Tracking", AutoTracking_Key, 0x0B, 0x27);
863   addSIRC12Key("Frame Reverse", StepBack_Key, 0x0B, 0x30);
864   addSIRC12Key("Frame Advance", StepForward_Key, 0x0B, 0x31);
865   addSIRC12Key("Mute", Mute_Key, 0x0B, 0x35);
866   addSIRC12Key("Sleep", Sleep_Key, 0x0B, 0x36);
867   addSIRC12Key("Slow +", SlowPlus_Key, 0x0B, 0x3D);
868   addSIRC12Key("Slow -", SlowMinus_Key, 0x0B, 0x3E);
869   addSIRC12Key("Tracking Up", TrackingPlus_Key, 0x0B, 0x44);
870   addSIRC12Key("Tracking Down", TrackingMinus_Key, 0x0B, 0x45);
871   addSIRC12Key("SP/EP", VHSSpeed_Key, 0x0B, 0x58);
872 }
873
874
875 SonyReceiver1::SonyReceiver1(
876   unsigned int index)
877   : PIRKeysetMetaData(
878       "Receiver Keyset 1",
879       Sony_Make,
880       index)
881 {
882 }
883
884
885 void SonyReceiver1::populateProtocol(
886   QObject *guiObject)
887 {
888   if (threadableProtocol)
889   {
890     // If the pointer is not null, the keyset must already be populated.
891     return;
892   }
893
894   threadableProtocol = new SIRCProtocol(guiObject, index);
895
896   addSIRC15Key("1", One_Key, 0x30, 0x00);
897   addSIRC15Key("2", Two_Key, 0x30, 0x01);
898   addSIRC15Key("3", Three_Key, 0x30, 0x02);
899   addSIRC15Key("4", Four_Key, 0x30, 0x03);
900   addSIRC15Key("5", Five_Key, 0x30, 0x04);
901   addSIRC15Key("6", Six_Key, 0x30, 0x05);
902   addSIRC15Key("7", Seven_Key, 0x30, 0x06);
903   addSIRC15Key("8", Eight_Key, 0x30, 0x07);
904   addSIRC15Key("9", Nine_Key, 0x30, 0x08);
905   addSIRC15Key("0", Zero_Key, 0x30, 0x09);
906   addSIRC15Key("SELECT", Select_Key, 0x30, 0x0C);
907   addSIRC15Key("VOLUME_UP", VolumeUp_Key, 0x30, 0x12);
908   addSIRC15Key("VOLUME_DOWN", VolumeDown_Key, 0x30, 0x13);
909   addSIRC15Key("MUTING", Mute_Key, 0x30, 0x14);
910   addSIRC15Key("POWER", Power_Key, 0x30, 0x15);
911   addSIRC15Key("VIDEO2", Unmapped_Key, 0x30, 0x1E);
912   addSIRC15Key("TUNER", TunerInput_Key, 0x30, 0x21);
913   addSIRC15Key("VIDEO1", Unmapped_Key, 0x30, 0x22);
914   addSIRC15Key("SA_CD", Unmapped_Key, 0x30, 0x25);
915   addSIRC15Key("VIDEO3", Unmapped_Key, 0x30, 0x42);
916   addSIRC15Key("DISPLAY", Info_Key, 0x30, 0x4B);
917   addSIRC15Key("SLEEP", Sleep_Key, 0x30, 0x60);
918   addSIRC15Key("TV", Unmapped_Key, 0x30, 0x6A);
919   addSIRC15Key("DVD", DVDInput_Key, 0x30, 0x7D);
920
921   addSIRC15Key("SAT", SatInput_Key, 0xB0, 0x03);
922   addSIRC15Key("2CH", Unmapped_Key, 0xB0, 0x09);
923   addSIRC15Key("AFD", Unmapped_Key, 0xB0, 0x0A);
924   addSIRC15Key("MOVIE", Unmapped_Key, 0xB0, 0x0B);
925   addSIRC15Key("DVD_MENU", DiscMenu_Key, 0xB0, 0x2D); // Not sure about this
926   addSIRC15Key("MUSIC", Unmapped_Key, 0xB0, 0x49);
927   addSIRC15Key("AMP_MENU", Menu_Key, 0xB0, 0x77);
928   addSIRC15Key("UP", Up_Key, 0xB0, 0x78);
929   addSIRC15Key("DOWN", Down_Key, 0xB0, 0x79);
930   addSIRC15Key("LEFT", Left_Key, 0xB0, 0x7A);
931   addSIRC15Key("RIGHT", Right_Key, 0xB0, 0x7B);
932 }