Still fixing install, more keyset work
[pierogi] / keysets / jvc.cpp
1 #include "jvc.h"
2 #include "necprotocol.h"
3
4 JVCSat1::JVCSat1(
5   QObject *guiObject,
6   unsigned int index)
7   : PIRKeysetMetaData(
8       "Satellite (Dish Network) Keyset 1",
9       JVC_Make,
10       index)
11 {
12   NECProtocol *np = new NECProtocol(
13    guiObject,
14    index,
15    624, 1500,
16    624, 2600,
17    6000, false);
18
19   threadableProtocol = np;
20
21   np->setHeaderPair(750, 6000);
22   np->setTrailerPulse(624);
23
24   np->setFullHeadlessRepeat(true);
25
26 //  np->setCarrierFrequency(56000);
27 //  np->setDutyCycle(32);
28
29   addKey("power", Power_Key, 0x1EFC, 13);
30   addKey("recent", Unmapped_Key, 0x16FC, 13);
31   addKey("tvWeb", Unmapped_Key, 0x1A7C, 13);
32   addKey("scrollUp", Unmapped_Key, 0x137C, 13);
33   addKey("scrollDown", Unmapped_Key, 0x117C, 13);
34   addKey("home", Unmapped_Key, 0x15FC, 13);
35   addKey("back", Exit_Key, 0x1FFC, 13);
36   addKey("up", Up_Key, 0x12FC, 13);
37   addKey("left", Left_Key, 0x11FC, 13);
38   addKey("go", Enter_Key, 0x17FC, 13);
39   addKey("right", Right_Key, 0x13FC, 13);
40   addKey("down", Down_Key, 0x10FC, 13);
41   addKey("options", Unmapped_Key, 0x14FC, 13);
42   addKey("chDown", ChannelDown_Key, 0x187C, 13);
43   addKey("record", Record_Key, 0x107C, 13);
44   addKey("rewind", Rewind_Key, 0x1C7C, 13);
45   addKey("play", Play_Key, 0x1E7C, 13);
46   addKey("1", One_Key, 0x1DFC, 13);
47   addKey("2", Two_Key, 0x1D7C, 13);
48   addKey("3", Three_Key, 0x1CFC, 13);
49   addKey("4", Four_Key, 0x1BFC, 13);
50   addKey("5", Five_Key, 0x1B7C, 13);
51   addKey("6", Six_Key, 0x1AFC, 13);
52   addKey("7", Seven_Key, 0x19FC, 13);
53   addKey("8", Eight_Key, 0x197C, 13);
54   addKey("9", Nine_Key, 0x18FC, 13);
55   addKey("0", Zero_Key, 0x177C, 13);
56   addKey("enter", Enter_Key, 0x127C, 13);
57   addKey("pip", PIP_Key, 0x077C, 13);
58   addKey("info", Info_Key, 0x06FC, 13);
59   addKey("listings", Guide_Key, 0x07FC, 13);
60   addKey("personalTv", Unmapped_Key, 0x0CFC, 13);
61   addKey("replay", Replay_Key, 0x0EFC, 13);
62   addKey("skip", Advance_Key, 0x0E7C, 13);
63   addKey("pause", Pause_Key, 0x0DFC, 13);
64   addKey("fastForward", FastForward_Key, 0x0D7C, 13);
65   addKey("stop", Stop_Key, 0x0F7C, 13);
66   addKey("chUp", ChannelUp_Key, 0x0FFC, 13);
67   addKey("recall", PrevChannel_Key, 0x057C, 13);
68 }
69
70
71 JVCSat2::JVCSat2(
72   QObject *guiObject,
73   unsigned int index)
74   : PIRKeysetMetaData(
75       "Satellite (Dish Network) Keyset 2",
76       JVC_Make,
77       index)
78 {
79   NECProtocol *np = new NECProtocol(
80     guiObject,
81     index,
82     440, 2780,
83     440, 1645,
84     6115, false);
85
86   threadableProtocol = np;
87
88   np->setHeaderPair(525, 6045);
89   np->setTrailerPulse(450);
90
91 //  np->setMinimumRepetitions(6);
92   np->setFullHeadlessRepeat(true);
93
94   np->setCarrierFrequency(56000);
95   np->setDutyCycle(32);
96
97   setPostData(0x000, 10);
98
99   addKey("info", Info_Key, 0x0, 6);
100   addKey("power_on", Unmapped_Key, 0x1, 6);
101   addKey("power", Power_Key, 0x2, 6);
102   addKey("1", One_Key, 0x4, 6);
103   addKey("2", Two_Key, 0x5, 6);
104   addKey("3", Three_Key, 0x6, 6);
105   addKey("4", Four_Key, 0x8, 6);
106   addKey("5", Five_Key, 0x9, 6);
107   addKey("6", Six_Key, 0x10, 6);
108   addKey("7", Seven_Key, 0x12, 6);
109   addKey("8", Eight_Key, 0x13, 6);
110   addKey("9", Nine_Key, 0x14, 6);
111   addKey("0", Zero_Key, 0x17, 6);
112   addKey("menu", Menu_Key, 0x11, 6);
113   addKey("select", Select_Key, 0x16, 6);
114   addKey("cancel", Exit_Key, 0x18, 6);
115   addKey("guide", Guide_Key, 0x20, 6);
116   addKey("view", Unmapped_Key, 0x22, 6);
117   addKey("tv_vcr", Input_Key, 0x23, 6);
118   addKey("right", Right_Key, 0x24, 6);
119   addKey("up", Up_Key, 0x26, 6);
120   addKey("recall", PrevChannel_Key, 0x27, 6);
121   addKey("left", Left_Key, 0x28, 6);
122   addKey("down", Down_Key, 0x30, 6);
123   addKey("record", Record_Key, 0x31, 6);
124   addKey("pause", Pause_Key, 0x32, 6);
125   addKey("stop", Stop_Key, 0x33, 6);
126   addKey("sys_info", Info_Key, 0x36, 6);
127   addKey("asterisk", Unmapped_Key, 0x37, 6);
128   addKey("pound", Unmapped_Key, 0x38, 6);
129   addKey("power_off", Unmapped_Key, 0x39, 6);
130   addKey("sat", Unmapped_Key, 0x41, 6);
131   addKey("dish_home", Unmapped_Key, 0x52, 6);
132   addKey("sys_info2", Unmapped_Key, 0x54, 6);
133   addKey("dish_home2", Unmapped_Key, 0x56, 6);
134 }
135
136
137 JVCVCR1::JVCVCR1(
138   QObject *guiObject,
139   unsigned int index)
140   : PIRKeysetMetaData(
141       "VCR Keyset 1",
142       JVC_Make,
143       index)
144 {
145   NECProtocol *np = new NECProtocol(
146     guiObject,
147     index,
148     600, 500,
149     600, 1600,
150     45000, true);
151
152   threadableProtocol = np;
153
154   np->setTrailerPulse(600);
155
156   setPreData(0xC2, 8);
157
158   addKey("power", Power_Key, 0xD0, 8);
159   addKey("play", Play_Key, 0x30, 8);
160   addKey("forward", FastForward_Key, 0x60, 8);
161   addKey("backward", Rewind_Key, 0xE0, 8);
162   addKey("stop", Stop_Key, 0xC0, 8);
163   addKey("pause", Pause_Key, 0xB0, 8);
164   addKey("menu", Menu_Key, 0xEC, 8); // "PROG"
165   addKey("ok", Select_Key, 0x3C, 8);
166   addKey("CANCEL", Exit_Key, 0x6C, 8); // "zero4x", "reset"
167   addKey("CANCEL", Clear_Key, 0x6C, 8); // "zero4x", "reset"
168   addKey("RECORD", Record_Key, 0x33, 8); // "itr"
169   addKey("pr_up", ChannelUp_Key, 0x98, 8);
170   addKey("pr_dn", ChannelDown_Key, 0x18, 8);
171   addKey("right", Next_Key, 0x28, 8); // "JOG+"
172   addKey("left", Previous_Key, 0xA8, 8); // "JOG-"
173   addKey("pr_up", Up_Key, 0x98, 8);
174   addKey("pr_dn", Down_Key, 0x18, 8);
175   addKey("right", Right_Key, 0x28, 8); // "JOG+"
176   addKey("left", Left_Key, 0xA8, 8); // "JOG-"
177   addKey("eject", Eject_Key, 0x20, 8);
178   addKey("no_1", One_Key, 0x84, 8);
179   addKey("no_2", Two_Key, 0x44, 8);
180   addKey("no_3", Three_Key, 0xC4, 8);
181   addKey("no_4", Four_Key, 0x24, 8);
182   addKey("no_5", Five_Key, 0xA4, 8);
183   addKey("no_6", Six_Key, 0x64, 8);
184   addKey("no_7", Seven_Key, 0xE4, 8);
185   addKey("no_8", Eight_Key, 0x14, 8);
186   addKey("no_9", Nine_Key, 0x94, 8);
187   addKey("no_0", Zero_Key, 0xCC, 8);
188   addKey("tv_vcr", Input_Key, 0xC8, 8); // "monitor"
189   addKey("av", Unmapped_Key, 0x80, 8);
190   addKey("ff_30sec", Advance_Key, 0x69, 8); // "skip"
191   addKey("die", Unmapped_Key, 0x5F, 8);
192   addKey("start", Unmapped_Key, 0x19, 8);
193   addKey("lock", Unmapped_Key, 0x0F, 8);
194   addKey("showview", Program_Key, 0x83, 8); // program
195   addKey("SOUND1", Unmapped_Key, 0xEB, 8);
196   addKey("SOUND2", Unmapped_Key, 0x27, 8);
197   addKey("SOUND3", Unmapped_Key, 0x3B, 8);
198   addKey("INDEX1", Unmapped_Key, 0xC9, 8);
199   addKey("INDEX2", Unmapped_Key, 0x29, 8);
200   addKey("DISPLAY", Info_Key, 0x1C, 8);
201   addKey("MUTE", Mute_Key, 0xE8, 8);
202   addKey("SPEED", VHSSpeed_Key, 0x8C, 8); // "I/II"
203   addKey("TIMER", Unmapped_Key, 0xAC, 8);
204   addKey("MIC+", Unmapped_Key, 0x8B, 8);
205   addKey("MIC-", Unmapped_Key, 0x4B, 8);
206   addKey("enter", Enter_Key, 0x7C, 8); // "store"
207   addKey("line", Unmapped_Key, 0x76, 8);
208   addKey("check", Unmapped_Key, 0xBC, 8); // "prog_check"
209   addKey("start+", Unmapped_Key, 0x13, 8);
210   addKey("start-", Unmapped_Key, 0x93, 8);
211   addKey("stop+", Unmapped_Key, 0x53, 8);
212   addKey("stop-", Unmapped_Key, 0xD3, 8);
213   addKey("date+", Unmapped_Key, 0x63, 8);
214   addKey("date-", Unmapped_Key, 0xE3, 8);
215   addKey("review", Replay_Key, 0xC3, 8);
216   addKey("IN/OUT", Unmapped_Key, 0x7B, 8);
217   addKey("3dphonic", Unmapped_Key, 0xA9, 8);
218   addKey("Red", Red_Key, 0x89, 8);
219   addKey("Green", Green_Key, 0xDC, 8);
220   addKey("Yellow", Yellow_Key, 0xE9, 8);
221   addKey("Blue", Blue_Key, 0x8C, 8);
222   addKey("ch_set", Unmapped_Key, 0x66, 8);
223   addKey("clock", Unmapped_Key, 0x5C, 8);
224   addKey("mode", Unmapped_Key, 0x61, 8);
225   addKey("scene-finder", Unmapped_Key, 0xE9, 8);
226   addKey("input_1", Unmapped_Key, 0x88, 8);
227 }
228
229
230 JVCVCR1a::JVCVCR1a(
231   QObject *guiObject,
232   unsigned int index)
233   : JVCVCR1(guiObject, index)
234 {
235   setKeysetName("VCR Keyset 1a");
236
237   addKey("red", Red_Key, 0xE0, 8);
238   addKey("green", Green_Key, 0xA8, 8);
239   addKey("yellow", Yellow_Key, 0x28, 8);
240   addKey("blue", Blue_Key, 0x60, 8);
241   addKey("menu", Menu_Key, 0xC8, 8);
242   addKey("last", Unmapped_Key, 0xA8, 8); // what is this?
243   addKey("suchl", Unmapped_Key, 0x69, 8); // ditto
244 }
245
246
247 // The 0xCA keyset appears to just be the 0xC2 keyset with a different preface,
248 // to allow two VCRs in the same room to be controlled independently.
249 // Note the hack below won't work with the other VCR keysets!!!
250 JVCVCR1b::JVCVCR1b(
251   QObject *guiObject,
252   unsigned int index)
253   : JVCVCR1(guiObject, index)
254 {
255   setKeysetName("VCR (alt) keyset 1b");
256
257   setPreData(0xCA, 8);
258 }
259
260
261 JVCVCR1c::JVCVCR1c(
262   QObject *guiObject,
263   unsigned int index)
264   : JVCVCR1(guiObject, index)
265 {
266   setKeysetName("VCR keyset 1c");
267
268   addKey("tv", Input_Key, 0x08, 8);
269 }
270
271
272 // VCR keyset #2 is apparently identical to #1, but this one uses a header
273 // pulse.  Dunno if this is a mistake, or if JVC messes with the fundamental
274 // elements of their protocols this much...
275 JVCVCR2::JVCVCR2(
276   QObject *guiObject,
277   unsigned int index)
278   : PIRKeysetMetaData(
279       "VCR Keyset 2",
280       JVC_Make,
281       index)
282 {
283   NECProtocol *np = new NECProtocol(
284     guiObject,
285     index,
286     600, 500,
287     600, 1600,
288     46000, true);
289
290   threadableProtocol = np;
291
292   np->setHeaderPair(9000, 4500);
293   np->setTrailerPulse(600);
294   np->setFullHeadlessRepeat(true);
295
296   setPreData(0xC2, 8);
297
298   addKey("power", Power_Key, 0xD0, 8);
299   addKey("play", Play_Key, 0x30, 8);
300   addKey("forward", FastForward_Key, 0x60, 8);
301   addKey("backward", Rewind_Key, 0xE0, 8);
302   addKey("stop", Stop_Key, 0xC0, 8);
303   addKey("pause", Pause_Key, 0xB0, 8);
304   addKey("menu", Menu_Key, 0xEC, 8); // "PROG"
305   addKey("ok", Select_Key, 0x3C, 8);
306   addKey("CANCEL", Exit_Key, 0x6C, 8); // "zero4x", "reset"
307   addKey("CANCEL", Clear_Key, 0x6C, 8); // "zero4x", "reset"
308   addKey("RECORD", Record_Key, 0x33, 8); // "itr"
309   addKey("recpause", Unmapped_Key, 0xB3, 8);
310   addKey("pr_up", ChannelUp_Key, 0x98, 8);
311   addKey("pr_dn", ChannelDown_Key, 0x18, 8);
312   addKey("pr_up", Up_Key, 0x98, 8);
313   addKey("pr_dn", Down_Key, 0x18, 8);
314   addKey("right", Right_Key, 0x28, 8); // "JOG+"
315   addKey("left", Left_Key, 0xA8, 8); // "JOG-"
316   addKey("eject", Eject_Key, 0x20, 8);
317   addKey("no_1", One_Key, 0x84, 8);
318   addKey("no_2", Two_Key, 0x44, 8);
319   addKey("no_3", Three_Key, 0xC4, 8);
320   addKey("no_4", Four_Key, 0x24, 8);
321   addKey("no_5", Five_Key, 0xA4, 8);
322   addKey("no_6", Six_Key, 0x64, 8);
323   addKey("no_7", Seven_Key, 0xE4, 8);
324   addKey("no_8", Eight_Key, 0x14, 8);
325   addKey("no_9", Nine_Key, 0x94, 8);
326   addKey("no_0", Zero_Key, 0xCC, 8);
327   addKey("tv_vcr", Input_Key, 0xC8, 8); // "monitor"
328   addKey("av", Unmapped_Key, 0x80, 8);
329   addKey("ff_30sec", Advance_Key, 0x69, 8); // "skip"
330   addKey("die", Unmapped_Key, 0x5F, 8);
331   addKey("start", Unmapped_Key, 0x19, 8);
332   addKey("lock", Unmapped_Key, 0x0F, 8);
333   addKey("showview", Program_Key, 0x83, 8); // program
334   addKey("SOUND1", Unmapped_Key, 0xEB, 8);
335   addKey("SOUND2", Unmapped_Key, 0x27, 8);
336   addKey("SOUND3", Unmapped_Key, 0x3B, 8);
337   addKey("INDEX1", Unmapped_Key, 0xC9, 8);
338   addKey("INDEX2", Unmapped_Key, 0x29, 8);
339   addKey("DISPLAY", Info_Key, 0x1C, 8);
340   addKey("MUTE", Mute_Key, 0xE8, 8);
341   addKey("SPEED", VHSSpeed_Key, 0x8C, 8); // "I/II"
342   addKey("TIMER", Unmapped_Key, 0xAC, 8);
343   addKey("MIC+", Unmapped_Key, 0x8B, 8);
344   addKey("MIC-", Unmapped_Key, 0x4B, 8);
345   addKey("enter", Enter_Key, 0x7C, 8);
346   addKey("line", Unmapped_Key, 0x76, 8);
347   addKey("check", Unmapped_Key, 0xBC, 8); // "prog_check"
348   addKey("start+", Unmapped_Key, 0x13, 8);
349   addKey("start-", Unmapped_Key, 0x93, 8);
350   addKey("stop+", Unmapped_Key, 0x53, 8);
351   addKey("stop-", Unmapped_Key, 0xD3, 8);
352   addKey("date+", Unmapped_Key, 0x63, 8);
353   addKey("date-", Unmapped_Key, 0xE3, 8);
354   addKey("review", Replay_Key, 0xC3, 8);
355   addKey("IN/OUT", Unmapped_Key, 0x7B, 8);
356   addKey("3dphonic", Unmapped_Key, 0xA9, 8);
357   addKey("Red", Red_Key, 0x89, 8);
358   addKey("Green", Green_Key, 0xDC, 8);
359   addKey("Yellow", Yellow_Key, 0xE9, 8);
360   addKey("Blue", Blue_Key, 0x8C, 8);
361   addKey("ch_set", Unmapped_Key, 0x66, 8);
362   addKey("clock", Unmapped_Key, 0x5C, 8);
363   addKey("mode", Unmapped_Key, 0x61, 8);
364   addKey("scene-finder", Unmapped_Key, 0xE9, 8);
365   addKey("input_1", Unmapped_Key, 0x88, 8);
366 }
367
368
369 JVCVCR2a::JVCVCR2a(
370   QObject *guiObject,
371   unsigned int index)
372   : JVCVCR2(guiObject, index)
373 {
374   setKeysetName("VCR Keyset 2a");
375
376   addKey("red", Red_Key, 0xE0, 8);
377   addKey("green", Green_Key, 0xA8, 8);
378   addKey("yellow", Yellow_Key, 0x28, 8);
379   addKey("blue", Blue_Key, 0x60, 8);
380   addKey("menu", Menu_Key, 0xC8, 8);
381   addKey("last", Unmapped_Key, 0xA8, 8); // what is this?
382   addKey("suchl", Unmapped_Key, 0x69, 8); // ditto
383 }
384
385
386 JVCVCR2b::JVCVCR2b(
387   QObject *guiObject,
388   unsigned int index)
389   : JVCVCR2(guiObject, index)
390 {
391   setKeysetName("VCR (alt) keyset 2b");
392
393   setPreData(0xCA, 8);
394 }
395
396
397 JVCVCR2c::JVCVCR2c(
398   QObject *guiObject,
399   unsigned int index)
400   : JVCVCR2(guiObject, index)
401 {
402   setKeysetName("VCR Keyset 2c");
403
404   addKey("tv", Input_Key, 0x08, 8);
405 }
406
407
408 JVCTV1::JVCTV1(
409   QObject *guiObject,
410   unsigned int index)
411   : PIRKeysetMetaData(
412       "TV Keyset 1",
413       JVC_Make,
414       index)
415 {
416   NECProtocol *np = new NECProtocol(
417     guiObject,
418     index,
419     600, 500,
420     600, 1600,
421     45000, true);
422
423   threadableProtocol = np;
424
425   np->setTrailerPulse(600);
426
427   setPreData(0xC0, 8);
428
429   addKey("Power", Power_Key, 0xE8, 8);
430   addKey("Vol+", VolumeUp_Key, 0x78, 8);
431   addKey("Vol-", VolumeDown_Key, 0xF8, 8);
432   addKey("Prog+", ChannelUp_Key, 0x98, 8);
433   addKey("Prog-", ChannelDown_Key, 0x18, 8);
434   addKey("TV/VCR", Input_Key, 0xC8, 8); // "input"
435   addKey("0", Zero_Key, 0x04, 8);
436   addKey("1", One_Key, 0x84, 8);
437   addKey("2", Two_Key, 0x44, 8);
438   addKey("3", Three_Key, 0xC4, 8);
439   addKey("4", Four_Key, 0x24, 8);
440   addKey("5", Five_Key, 0xA4, 8);
441   addKey("6", Six_Key, 0x64, 8);
442   addKey("7", Seven_Key, 0xE4, 8);
443   addKey("8", Eight_Key, 0x14, 8);
444   addKey("9", Nine_Key, 0x94, 8);
445   addKey("X", Clear_Key, 0x0E, 8);
446   addKey("AUDIO", Mute_Key, 0x38, 8); // "mute"
447   addKey("Timer", Sleep_Key, 0x8E, 8);
448 //  addKey("SP/LP", VHSSpeed_Key, 0xB9, 8); // "/_//"
449   addKey("-/--", DoubleDigit_Key, 0xB9, 8);
450 //  addKey("Red", Red_Key, 0x89, 8);
451 //  addKey("Green", Green_Key, 0xDC, 8);
452 //  addKey("Yellow", Yellow_Key, 0xE9, 8);
453 //  addKey("Blue", Blue_Key, 0x8C, 8);
454   addKey("info", Info_Key, 0x20, 8); // "display"
455   addKey("standard", PictureMode_Key, 0x9E, 8); // "picture_mode"
456   addKey("menu", Menu_Key, 0x5E, 8);
457   addKey("sound", Unmapped_Key, 0x42, 8); // "<>"
458   addKey("video_status", Unmapped_Key, 0xB0, 8);
459   addKey("theater_pro", Unmapped_Key, 0xAB, 8);
460   addKey("aspect", AspectRatio_Key, 0xC9, 8);
461   addKey("100+", PlusOneHundred_Key, 0xEE, 8);
462   addKey("return", Unmapped_Key, 0xA0, 8);
463   addKey("cc", Captions_Key, 0x70, 8);
464   addKey("exit", Exit_Key, 0x67, 8);
465   addKey("colour", Unmapped_Key, 0x49, 8); // "P/S"
466   addKey("sound", SoundMode_Key, 0x2D, 8);
467   addKey("up", Up_Key, 0x3E, 8);
468   addKey("down", Down_Key, 0xDE, 8);
469   addKey("left", Left_Key, 0xDA, 8);
470   addKey("right", Right_Key, 0x5A, 8);
471   addKey("BROADCAST", Unmapped_Key, 0xD0, 8); // "ant/cable"
472   addKey("RECALL", PrevChannel_Key, 0x3C, 8);
473   addKey("RESET", Reset_Key, 0x60, 8);
474   addKey("FUNCTION", Unmapped_Key, 0xDC, 8);
475   addKey("LEVELDOWN", Unmapped_Key, 0xD8, 8);
476   addKey("LEVELUP", Unmapped_Key, 0x58, 8);
477   addKey("main/sap", Language_Key, 0x00, 8); // "I/II"
478   addKey("CH_PRESET", Unmapped_Key, 0x99, 8);
479   addKey("MAX_CH", Unmapped_Key, 0xB9, 8);
480   addKey("C1/C2", Unmapped_Key, 0x5B, 8);
481   addKey("input_2", Unmapped_Key, 0x48, 8);
482   addKey("input_3", Unmapped_Key, 0x28, 8);
483   addKey("input_s", Unmapped_Key, 0xF0, 8);
484   addKey("tone", Unmapped_Key, 0x09, 8);
485   addKey("VNR", Unmapped_Key, 0xA2, 8);
486   addKey("br_down", Unmapped_Key, 0x8C, 8);
487   addKey("br_up", Unmapped_Key, 0x0C, 8);
488   addKey("con_down", Unmapped_Key, 0xEC, 8);
489   addKey("con_up", Unmapped_Key, 0x6C, 8);
490   addKey("col_down", Unmapped_Key, 0xCC, 8);
491   addKey("col_up", Unmapped_Key, 0x4C, 8);
492 }
493
494
495 JVCTV1a::JVCTV1a(
496   QObject *guiObject,
497   unsigned int index)
498   : JVCTV1(guiObject, index)
499 {
500   setKeysetName("TV Keyset 1a");
501
502   addKey("+10", DoubleDigit_Key, 0x8E, 8);
503 }
504
505
506 JVCTV1b::JVCTV1b(
507   QObject *guiObject,
508   unsigned int index)
509   : JVCTV1(guiObject, index)
510 {
511   setKeysetName("TV Keyset 1b");
512
513   addKey("sleep_timer", Sleep_Key, 0xC0, 8);
514 }
515
516
517 JVCTV1c::JVCTV1c(
518   QObject *guiObject,
519   unsigned int index)
520   : JVCTV1(guiObject, index)
521 {
522   setKeysetName("TV Keyset 1c");
523
524   addKey("REW", Rewind_Key, 0x4D, 8);
525   addKey("PLAY", Play_Key, 0x91, 8);
526   addKey("FF", FastForward_Key, 0x6B, 8);
527   addKey("REC", Record_Key, 0x20, 8);
528   addKey("STOP", Stop_Key, 0x00, 8);
529   addKey("PAUSE", Pause_Key, 0xD0, 8);
530 }
531
532
533 // TVs where "volume" and "channel" keys are used to navigate menus:
534 JVCTV1d::JVCTV1d(
535   QObject *guiObject,
536   unsigned int index)
537   : JVCTV1(guiObject, index)
538 {
539   setKeysetName("TV Keyset 1d");
540
541   addKey("up", Up_Key, 0x98, 8);
542   addKey("down", Down_Key, 0x18, 8);
543   addKey("left", Left_Key, 0xF8, 8);
544   addKey("right", Right_Key, 0x78, 8);
545 }
546
547
548 // Same deal here, two different header specifications on top of the same
549 // underlying keyset.
550 JVCTV2::JVCTV2(
551   QObject *guiObject,
552   unsigned int index)
553   : PIRKeysetMetaData(
554       "TV Keyset 2",
555       JVC_Make,
556       index)
557 {
558   NECProtocol *np = new NECProtocol(
559     guiObject,
560     index,
561     600, 500,
562     600, 1600,
563     46000, true);
564
565   threadableProtocol = np;
566
567   np->setHeaderPair(9000, 4500);
568   np->setTrailerPulse(600);
569   np->setFullHeadlessRepeat(true);
570
571   setPreData(0xC0, 8);
572
573   addKey("Power", Power_Key, 0xE8, 8);
574   addKey("Vol+", VolumeUp_Key, 0x78, 8);
575   addKey("Vol-", VolumeDown_Key, 0xF8, 8);
576   addKey("Prog+", ChannelUp_Key, 0x98, 8);
577   addKey("Prog-", ChannelDown_Key, 0x18, 8);
578   addKey("TV/VCR", Input_Key, 0xC8, 8);
579   addKey("0", Zero_Key, 0x04, 8);
580   addKey("1", One_Key, 0x84, 8);
581   addKey("2", Two_Key, 0x44, 8);
582   addKey("3", Three_Key, 0xC4, 8);
583   addKey("4", Four_Key, 0x24, 8);
584   addKey("5", Five_Key, 0xA4, 8);
585   addKey("6", Six_Key, 0x64, 8);
586   addKey("7", Seven_Key, 0xE4, 8);
587   addKey("8", Eight_Key, 0x14, 8);
588   addKey("9", Nine_Key, 0x94, 8);
589   addKey("X", Clear_Key, 0x0E, 8);
590   addKey("AUDIO", Mute_Key, 0x38, 8); // "mute"
591   addKey("Timer", Sleep_Key, 0x8E, 8);
592 //  addKey("SP/LP", VHSSpeed_Key, 0xB9, 8);
593   addKey("-/--", DoubleDigit_Key, 0xB9, 8);
594   addKey("info", Info_Key, 0x20, 8);
595   addKey("standard", PictureMode_Key, 0x9E, 8); // "picture_mode"
596   addKey("menu", Menu_Key, 0x5E, 8);
597   addKey("sound", Unmapped_Key, 0x42, 8);
598   addKey("video_status", Unmapped_Key, 0xB0, 8);
599   addKey("theater_pro", Unmapped_Key, 0xAB, 8);
600   addKey("aspect", AspectRatio_Key, 0xC9, 8);
601   addKey("100+", PlusOneHundred_Key, 0xEE, 8);
602   addKey("return", Unmapped_Key, 0xA0, 8);
603   addKey("cc", Captions_Key, 0x70, 8);
604   addKey("exit", Exit_Key, 0x67, 8);
605   addKey("colour", Unmapped_Key, 0x49, 8);
606   addKey("sound", SoundMode_Key, 0x2D, 8);
607   addKey("up", Up_Key, 0x3E, 8);
608   addKey("down", Down_Key, 0xDE, 8);
609   addKey("left", Left_Key, 0xDA, 8);
610   addKey("right", Right_Key, 0x5A, 8);
611   addKey("BROADCAST", Unmapped_Key, 0xD0, 8);
612   addKey("RECALL", PrevChannel_Key, 0x3C, 8);
613   addKey("RESET", Reset_Key, 0x60, 8);
614   addKey("FUNCTION", Unmapped_Key, 0xDC, 8);
615   addKey("LEVELDOWN", Unmapped_Key, 0xD8, 8);
616   addKey("LEVELUP", Unmapped_Key, 0x58, 8);
617   addKey("main/sap", Language_Key, 0x00, 8);
618   addKey("CH_PRESET", Unmapped_Key, 0x99, 8);
619   addKey("MAX_CH", Unmapped_Key, 0xB9, 8);
620   addKey("C1/C2", Unmapped_Key, 0x5B, 8);
621   addKey("input_2", Unmapped_Key, 0x48, 8);
622   addKey("input_3", Unmapped_Key, 0x28, 8);
623   addKey("input_s", Unmapped_Key, 0xF0, 8);
624   addKey("tone", Unmapped_Key, 0x09, 8);
625   addKey("VNR", Unmapped_Key, 0xA2, 8);
626   addKey("br_down", Unmapped_Key, 0x8C, 8);
627   addKey("br_up", Unmapped_Key, 0x0C, 8);
628   addKey("con_down", Unmapped_Key, 0xEC, 8);
629   addKey("con_up", Unmapped_Key, 0x6C, 8);
630   addKey("col_down", Unmapped_Key, 0xCC, 8);
631   addKey("col_up", Unmapped_Key, 0x4C, 8);
632 }
633
634
635 JVCTV2a::JVCTV2a(
636   QObject *guiObject,
637   unsigned int index)
638   : JVCTV2(guiObject, index)
639 {
640   setKeysetName("TV Keyset 2a");
641
642   addKey("+10", DoubleDigit_Key, 0x8E, 8);
643 }
644
645
646 JVCTV2b::JVCTV2b(
647   QObject *guiObject,
648   unsigned int index)
649   : JVCTV2(guiObject, index)
650 {
651   setKeysetName("TV Keyset 2b");
652
653   addKey("sleep_timer", Sleep_Key, 0xC0, 8);
654 }
655
656
657 JVCTV2c::JVCTV2c(
658   QObject *guiObject,
659   unsigned int index)
660   : JVCTV2(guiObject, index)
661 {
662   setKeysetName("TV Keyset 2c");
663
664   addKey("REW", Rewind_Key, 0x4D, 8);
665   addKey("PLAY", Play_Key, 0x91, 8);
666   addKey("FF", FastForward_Key, 0x6B, 8);
667   addKey("REC", Record_Key, 0x20, 8);
668   addKey("STOP", Stop_Key, 0x00, 8);
669   addKey("PAUSE", Pause_Key, 0xD0, 8);
670 }
671
672
673 JVCTV2d::JVCTV2d(
674   QObject *guiObject,
675   unsigned int index)
676   : JVCTV2(guiObject, index)
677 {
678   setKeysetName("TV Keyset 2d");
679
680   addKey("up", Up_Key, 0x98, 8);
681   addKey("down", Down_Key, 0x18, 8);
682   addKey("left", Left_Key, 0xF8, 8);
683   addKey("right", Right_Key, 0x78, 8);
684 }
685
686
687 JVCDAT1::JVCDAT1(
688   QObject *guiObject,
689   unsigned int index)
690   : PIRKeysetMetaData(
691       "DAT Keyset 1",
692       JVC_Make,
693       index)
694 {
695   NECProtocol *np = new NECProtocol(
696     guiObject,
697     index,
698     600, 500,
699     600, 1600,
700     46000, true);
701
702   threadableProtocol = np;
703
704   np->setHeaderPair(9000, 4500);
705   np->setTrailerPulse(600);
706
707   np->setFullHeadlessRepeat(true);
708
709   setPreData(0xC9, 8);
710
711   addKey("1", One_Key, 0x84, 8);
712   addKey("2", Two_Key, 0x44, 8);
713   addKey("3", Three_Key, 0xC4, 8);
714   addKey("4", Four_Key, 0x24, 8);
715   addKey("5", Five_Key, 0xA4, 8);
716   addKey("6", Six_Key, 0x64, 8);
717   addKey("7", Seven_Key, 0xE4, 8);
718   addKey("8", Eight_Key, 0x14, 8);
719   addKey("9", Nine_Key, 0x94, 8);
720   addKey("0", Zero_Key, 0x04, 8);
721   addKey("MEMORY", Unmapped_Key, 0x48, 8);
722   addKey("REPEAT", Unmapped_Key, 0xD8, 8);
723   addKey("DISPLAY", Info_Key, 0x28, 8);
724   addKey("CANCEL/RESET", Reset_Key, 0xB4, 8);
725   addKey("CALL", Unmapped_Key, 0xA8, 8);
726   addKey("RESERVE", Unmapped_Key, 0x54, 8);
727   addKey("INTRO", Unmapped_Key, 0x88, 8);
728   addKey("REC_MUTE", Unmapped_Key, 0x38, 8);
729   addKey("REC", Record_Key, 0x40, 8);
730   addKey("PAUSE", Pause_Key, 0xB0, 8);
731   addKey("|<-SKIP", Previous_Key, 0x18, 8);
732   addKey("SKIP->|", Next_Key, 0x98, 8);
733   addKey("<<-SEARCH", Unmapped_Key, 0xE8, 8);
734   addKey("SEARCH->>", Unmapped_Key, 0x68, 8);
735   addKey("REW", Rewind_Key, 0xE0, 8);
736   addKey("FF", FastForward_Key, 0x60, 8);
737   addKey("STOP", Stop_Key, 0xC0, 8);
738   addKey("PLAY", Play_Key, 0x30, 8);
739 }
740
741
742 JVCCarDeck1::JVCCarDeck1(
743   QObject *guiObject,
744   unsigned int index)
745   : PIRKeysetMetaData(
746       "Car Deck Keyset 1",
747       JVC_Make,
748       index)
749 {
750   NECProtocol *np = new NECProtocol(
751     guiObject,
752     index,
753     600, 500,
754     600, 1600,
755     46000, true);
756
757   threadableProtocol = np;
758
759   np->setHeaderPair(9000, 4500);
760   np->setTrailerPulse(600);
761
762   np->setFullHeadlessRepeat(true);
763
764   setPreData(0xF1, 8);
765
766   addKey("Power", Power_Key, 0x71, 8); // "Att"
767   addKey("Sound", Mute_Key, 0xB1, 8); // "SCM"
768   addKey("Source", Input_Key, 0x11, 8);  // "FUNC", "SRC"
769   addKey("DISC+", Up_Key, 0x29, 8);
770   addKey("DISC-", Down_Key, 0xA9, 8);
771   addKey("Vol+", VolumeUp_Key, 0x21, 8);
772   addKey("Vol-", VolumeDown_Key, 0xA1, 8);
773   addKey("Track+", Next_Key, 0x49, 8);
774   addKey("Track-", Previous_Key, 0xC9, 8);
775   addKey("FF", FastForward_Key, 0x49, 8);
776   addKey("Rew", Rewind_Key, 0xC9, 8);
777 }
778
779
780 JVCPortableAudio1::JVCPortableAudio1(
781   QObject *guiObject,
782   unsigned int index)
783   : PIRKeysetMetaData(
784       "Portable Audio Keyset 1",
785       JVC_Make,
786       index)
787 {
788   NECProtocol *np = new NECProtocol(
789     guiObject,
790     index,
791     600, 500,
792     600, 1600,
793     46000, true);
794
795   threadableProtocol = np;
796
797   np->setHeaderPair(9000, 4500);
798   np->setTrailerPulse(600);
799
800   np->setFullHeadlessRepeat(true);
801
802   addKey("POWER", Power_Key, 0xC5E8, 16);
803   addKey("1", One_Key, 0xCD86, 16);
804   addKey("2", Two_Key, 0xCD46, 16);
805   addKey("3", Three_Key, 0xCDC6, 16);
806   addKey("4", Four_Key, 0xCD26, 16);
807   addKey("5", Five_Key, 0xCDA6, 16);
808   addKey("6", Six_Key, 0xCD66, 16);
809   addKey("7", Seven_Key, 0xCDE6, 16);
810   addKey("8", Eight_Key, 0xCD16, 16);
811   addKey("9", Nine_Key, 0xCD96, 16);
812   addKey("10", Zero_Key, 0xCD76, 16); // Ok, yeah, this one is a hack...
813   addKey("+10", DoubleDigit_Key, 0xCDF6, 16);
814   addKey("REPEAT", Unmapped_Key, 0xCDDA, 16);
815   addKey("RANDOM", Unmapped_Key, 0xCD4E, 16);
816   addKey("INTRO", Unmapped_Key, 0xCD12, 16);
817   addKey("MEMORY/CALL", Unmapped_Key, 0xCD56, 16);
818   addKey("REW", Rewind_Key, 0xCD1A, 16);
819   addKey("FF", FastForward_Key, 0xCD9A, 16); // "CD.Next"
820   addKey("STOP", Stop_Key, 0xCDC2, 16); // "CD.Stop"
821   addKey("PLAY", Play_Key, 0xCD32, 16); // "CD.Play"
822   addKey("VOL-", VolumeDown_Key, 0xC5F8, 16);
823   addKey("VOL+", VolumeUp_Key, 0xC578, 16);
824   addKey("SLEEP", Sleep_Key, 0xC5C0, 16);
825   addKey("DIMMER", Unmapped_Key, 0xCD4A, 16);
826   addKey("FM-MODE", Unmapped_Key, 0xC55A, 16);
827   addKey("MD-AUX", Unmapped_Key, 0xC57C, 16); // "TAPE-AUX"
828   addKey("AHB-PRO", Unmapped_Key, 0xC5AE, 16);
829   addKey("AUTO-PRESET", Unmapped_Key, 0xC5EE, 16);
830   addKey("CD-EJECT", Eject_Key, 0xCD22, 16);
831   addKey("PROGRAM", Program_Key, 0xCD56, 16);
832   addKey("RANDOM", Unmapped_Key, 0xCD4E, 16);
833   addKey("REPEAT", Unmapped_Key, 0xCDDA, 16);
834   addKey("BASS", Unmapped_Key, 0xF578, 16);
835   addKey("TREBLE", Unmapped_Key, 0xF574, 16);
836   addKey("CANCEL", Clear_Key, 0xCDB6, 16);
837   addKey("UP", Up_Key, 0xF500, 16);
838   addKey("DOWN", Down_Key, 0xF580, 16);
839   addKey("LEFT", Left_Key, 0xF5C0, 16);
840   addKey("RIGHT", Right_Key, 0xF540, 16);
841   addKey("PTY-EON", Unmapped_Key, 0xF5A1, 16);
842   addKey("DISPLAY-MODE", Info_Key, 0xF5C1, 16);
843   addKey("SET", Select_Key, 0xF589, 16);
844   addKey("TAPE", Unmapped_Key, 0xC5FC, 16);
845   addKey("TUNER-BAND", Unmapped_Key, 0xC5DA, 16);
846   addKey("PREV", Previous_Key, 0xF560, 16);
847   addKey("NEXT", Next_Key, 0xF5A0, 16);
848   addKey("EDIT-TITLE", Unmapped_Key, 0xFD91, 16);
849   addKey("CHARA", Unmapped_Key, 0xFD1D, 16);
850 }
851
852
853 JVCPortableAudio1a::JVCPortableAudio1a(
854   QObject *guiObject,
855   unsigned int index)
856   : JVCPortableAudio1(guiObject, index)
857 {
858   setKeysetName("Portable Audio Keyset 1a");
859
860   addKey("CD-PLAY-PAUSE", Play_Key, 0xC5BC, 16);
861   addKey("MD-PLAY-PAUSE", Unmapped_Key, 0xF50C, 16);
862 }
863
864
865 // This is not portable audio.  This is all sorts of audio devices.  I need
866 // to do some work to clean this up!
867 JVCPortableAudio1b::JVCPortableAudio1b(
868   QObject *guiObject,
869   unsigned int index)
870   : JVCPortableAudio1(guiObject, index)
871 {
872   setKeysetName("Portable(?) Audio Keyset 1b");
873
874   addKey("0", Zero_Key, 0xCD06, 16); // What about "10" key here?
875   addKey("TUNER", Unmapped_Key, 0xC5D0, 16);
876   addKey("VCR", Unmapped_Key, 0xC224, 16);
877   addKey("CD", Unmapped_Key, 0xC5BC, 16);
878   addKey("PHONO", Unmapped_Key, 0xC53C, 16);
879   addKey("MONITOR/TAPE2", Unmapped_Key, 0xC5E0, 16);
880   addKey("STOP2", Unmapped_Key, 0xC1C2, 16);
881   addKey("STILL/PAUSE", Pause_Key, 0xC1B0, 16);
882   addKey("STOP", Stop_Key, 0xC1B0, 16);
883   addKey("REC+PLAY", Unmapped_Key, 0xC133, 16);
884   addKey("FORWARDS", FastForward_Key, 0xC160, 16); // "Deck.Right"
885   addKey("BACKWARDS", Rewind_Key, 0xC1E0, 16); // "Deck.Left"
886   addKey("PLAY", Play_Key, 0xC130, 16);
887   addKey("FADE_MUTING", Unmapped_Key, 0xC538, 16);
888   addKey("Disc 1", Unmapped_Key, 0xCD9E, 16);
889   addKey("Disc 2", Unmapped_Key, 0xCD5E, 16);
890   addKey("Disc 3", Unmapped_Key, 0xCDDE, 16);
891   addKey("Disc 4", Unmapped_Key, 0xCD3E, 16);
892   addKey("Disc 5", Unmapped_Key, 0xCDBE, 16);
893   addKey("Disc 6", Unmapped_Key, 0xCD7E, 16);
894   addKey("Disc continue", Unmapped_Key, 0xCDEE, 16);
895   addKey("Disc program", Unmapped_Key, 0xCD8E, 16);
896   addKey("Tuner 1", Unmapped_Key, 0xC584, 16);
897   addKey("Tuner 2", Unmapped_Key, 0xC544, 16);
898   addKey("Tuner 3", Unmapped_Key, 0xC5C4, 16);
899   addKey("Tuner 4", Unmapped_Key, 0xC524, 16);
900   addKey("Tuner 5", Unmapped_Key, 0xC5A4, 16);
901   addKey("Tuner 6", Unmapped_Key, 0xC564, 16);
902   addKey("Tuner 7", Unmapped_Key, 0xC5E4, 16);
903   addKey("Tuner 8", Unmapped_Key, 0xC514, 16);
904   addKey("Tuner 9", Unmapped_Key, 0xC594, 16);
905   addKey("Tuner 10", Unmapped_Key, 0xC554, 16);
906   addKey("Tuner +10", Unmapped_Key, 0xC5F4, 16);
907   addKey("Tuner 0", Unmapped_Key, 0xC504, 16);
908   addKey("tape-play", Unmapped_Key, 0xC130, 16);
909   addKey("tape-stop", Unmapped_Key, 0xC1C0, 16); // "Deck.Stop"
910   addKey("tuner-", Unmapped_Key, 0xC518, 16);
911   addKey("tuner+", Unmapped_Key, 0xC598, 16);
912   addKey("cd-play", Unmapped_Key, 0xC5BC, 16);
913   addKey("cd-stop", Unmapped_Key, 0xCDC2, 16);
914   addKey("cd-pause", Unmapped_Key, 0xCDB2, 16);
915   addKey("cd-prev", Unmapped_Key, 0xCD1A, 16);
916   addKey("cd-next", Unmapped_Key, 0xCD9A, 16);
917   addKey("cd-back", Unmapped_Key, 0xCD0E, 16);
918   addKey("cd-forw", Unmapped_Key, 0xCD6E, 16);
919   addKey("Deck.PlayLeft", Unmapped_Key, 0xC170, 16);
920   addKey("Deck.PlayRight", Unmapped_Key, 0xC1F0, 16);
921   addKey("Deck.A", Unmapped_Key, 0xC10B, 16);
922   addKey("Deck.B", Unmapped_Key, 0xC18B, 16);
923   addKey("RecPause", Unmapped_Key, 0xC1B3, 16);
924   addKey("SoundMode", Unmapped_Key, 0xC51C, 16);
925 }
926
927
928 JVCPortableAudio2::JVCPortableAudio2(
929   QObject *guiObject,
930   unsigned int index)
931   : PIRKeysetMetaData(
932       "Portable Audio Keyset 2",
933       JVC_Make,
934       index)
935 {
936   NECProtocol *np = new NECProtocol(
937     guiObject,
938     index,
939     600, 500,
940     600, 1600,
941     46000, true);
942
943   threadableProtocol = np;
944
945   np->setHeaderPair(9000, 4500);
946   np->setTrailerPulse(600);
947
948   np->setFullHeadlessRepeat(true);
949
950   setPreData(0xF9, 8);
951
952   addKey("stop", Stop_Key, 0x8E, 8); // "CD_STOP" "stop_clear"
953   addKey("stop", Clear_Key, 0x8E, 8); // "CD_STOP" "stop_clear"
954   addKey("vol+", VolumeUp_Key, 0x80, 8);
955   addKey("vol-", VolumeDown_Key, 0x40, 8);
956   addKey("play", Play_Key, 0x0E, 8); // "CD_PLAY_PAUSE"
957   addKey("play", Pause_Key, 0x0E, 8); // "CD_PLAY_PAUSE"
958   addKey("ff", FastForward_Key, 0xBC, 8); // "SEARCH_UP" "search_forward"
959   addKey("rew", Rewind_Key, 0x7C, 8);  // "SEARCH_DOWN" "search_back"
960   addKey("1", One_Key, 0x84, 8);
961   addKey("2", Two_Key, 0x44, 8);
962   addKey("3", Three_Key, 0xC4, 8);
963   addKey("4", Four_Key, 0x24, 8);
964   addKey("5", Five_Key, 0xA4, 8);
965   addKey("6", Six_Key, 0x64, 8);
966   addKey("7", Seven_Key, 0xE4, 8);
967   addKey("8", Eight_Key, 0x14, 8);
968   addKey("9", Nine_Key, 0x94, 8);
969   addKey("10", Zero_Key, 0x54, 8); // Yeah, I know this is bad
970   addKey("10+", DoubleDigit_Key, 0x74, 8);
971   addKey("enter", Enter_Key, 0x88, 8);
972   addKey("repeat", Unmapped_Key, 0x1E, 8);
973   addKey("random", Unmapped_Key, 0xEE, 8);
974   addKey("intro", Unmapped_Key, 0x6E, 8);
975   addKey("memory", Program_Key, 0x2E, 8); // "MEMORY_CALL", "program"
976   addKey("call", Unmapped_Key, 0xFE, 8);
977   addKey("display", Info_Key, 0x38, 8); // "CLOCK"
978   addKey("sleep", Sleep_Key, 0x4C, 8);
979   addKey("power", Power_Key, 0x00, 8);
980   addKey("band", Unmapped_Key, 0xD0, 8);  // "TUNER_BAND"
981   addKey("PRESET_SCAN", Unmapped_Key, 0x48, 8);
982   addKey("SET", Select_Key, 0xCC, 8); // "clock"
983   addKey("TIMER_ON_OFF", Unmapped_Key, 0x6C, 8); // might be another sleep
984   addKey("TIMER_SET", Unmapped_Key, 0x0C, 8);
985   addKey("ACTIVE_HYPER_BASS", Unmapped_Key, 0x20, 8); // "bass"
986   addKey("FREQUENCY", Unmapped_Key, 0x01, 8);
987   addKey("NEXT_TRACK", Next_Key, 0x4E, 8);
988   addKey("PREV_TRACK", Previous_Key, 0xCE, 8);
989   addKey("auto_preset", Unmapped_Key, 0xC8, 8);
990   addKey("open_close", Eject_Key, 0xDE, 8); // "allcdeject"
991   addKey("auto_preset", Unmapped_Key, 0xC8, 8);
992   addKey("auto_mono", Unmapped_Key, 0xF8, 8);  // "fmstereo", "mode"
993   addKey("tone", Unmapped_Key, 0x61, 8);
994   addKey("revmode", Unmapped_Key, 0xFA, 8);
995   addKey("playcd1", Unmapped_Key, 0x8F, 8);
996   addKey("playcd2", Unmapped_Key, 0x4F, 8);
997   addKey("playcd3", Unmapped_Key, 0xCF, 8);
998   addKey("continue", Unmapped_Key, 0xBE, 8);
999   addKey("ejectcd1", Unmapped_Key, 0x2F, 8);
1000   addKey("ejectcd2", Unmapped_Key, 0xAF, 8);
1001   addKey("ejectcd2", Unmapped_Key, 0x6F, 8);
1002   addKey("tape", Unmapped_Key, 0x42, 8);
1003   addKey("aux", Unmapped_Key, 0xB0, 8);
1004   addKey("deckab", Unmapped_Key, 0x1A, 8);
1005   addKey("sound", Unmapped_Key, 0xF1, 8);
1006   addKey("presettuning", Unmapped_Key, 0xA8, 8);
1007   addKey("record", Record_Key, 0xD2, 8); // "TAPEREC"
1008   addKey("reverseplay", Unmapped_Key, 0xB2, 8); // "TAPELEFT"
1009   addKey("stop", Unmapped_Key, 0x82, 8); // "TAPESTOP"
1010   addKey("play", Unmapped_Key, 0x32, 8); // "TAPERIGHT"
1011   addKey("bass-", Unmapped_Key, 0x11, 8);
1012   addKey("bass+", Unmapped_Key, 0xE1, 8);
1013   addKey("treble-", Unmapped_Key, 0x51, 8);
1014   addKey("treble+", Unmapped_Key, 0x91, 8);
1015   addKey("onoff", Unmapped_Key, 0x6C, 8); // same keyset already has "power"?
1016   addKey("edit", Unmapped_Key, 0xAE, 8);
1017   addKey("synchrorec", Unmapped_Key, 0x6A, 8);
1018   addKey("rewind", Unmapped_Key, 0xA2, 8); // "TAPEPREV"
1019   addKey("ff", Unmapped_Key, 0x22, 8); // "TAPENEXT"
1020   addKey("beat-cut", Unmapped_Key, 0x77, 8);
1021   addKey("pty-eon", Unmapped_Key, 0xE8, 8);
1022   addKey("left-select", Unmapped_Key, 0x98, 8);
1023   addKey("right-select", Unmapped_Key, 0x18, 8);
1024   addKey("display-mode", Unmapped_Key, 0x68, 8);
1025 }
1026
1027
1028 JVCDVD1::JVCDVD1(
1029   QObject *guiObject,
1030   unsigned int index)
1031   : PIRKeysetMetaData(
1032       "DVD Keyset 1",
1033       JVC_Make,
1034       index)
1035 {
1036   NECProtocol *np = new NECProtocol(
1037     guiObject,
1038     index,
1039     600, 500,
1040     600, 1600,
1041     46000, true);
1042
1043   threadableProtocol = np;
1044
1045   np->setHeaderPair(9000, 4500);
1046   np->setTrailerPulse(600);
1047   np->setFullHeadlessRepeat(true);
1048
1049   addKey("openclose", Eject_Key, 0xF722, 16);
1050   addKey("1", One_Key, 0xF786, 16);
1051   addKey("2", Two_Key, 0xF746, 16);
1052   addKey("3", Three_Key, 0xF7C6, 16);
1053   addKey("4", Four_Key, 0xF726, 16);
1054   addKey("5", Five_Key, 0xF7A6, 16);
1055   addKey("6", Six_Key, 0xF766, 16);
1056   addKey("7", Seven_Key, 0xF7E6, 16);
1057   addKey("8", Eight_Key, 0xF716, 16);
1058   addKey("9", Nine_Key, 0xF796, 16);
1059   addKey("10", Unmapped_Key, 0xF776, 16);
1060   addKey("0", Zero_Key, 0xF706, 16);
1061   addKey("+10", DoubleDigit_Key, 0xF7F6, 16);
1062   addKey("return", Exit_Key, 0xF7AB, 16);
1063   addKey("title/group", Unmapped_Key, 0xF777, 16);
1064   addKey("cancel", Clear_Key, 0xF7B6, 16);
1065   addKey("topmenu", DiscTitle_Key, 0xF743, 16);
1066   addKey("up", Up_Key, 0xF70B, 16);
1067   addKey("menu", Menu_Key, 0xF783, 16);
1068   addKey("left", Left_Key, 0xF74B, 16);
1069   addKey("enter", Select_Key, 0xF72B, 16);
1070   addKey("right", Right_Key, 0xF7CB, 16);
1071   addKey("choice", Unmapped_Key, 0xF7FE, 16);
1072   addKey("down", Down_Key, 0xF78B, 16);
1073   addKey("onscreen", Unmapped_Key, 0xF703, 16);
1074   addKey("skip_back", Previous_Key, 0xF78D, 16); // "previous"
1075   addKey("skip_forw", Next_Key, 0xF70D, 16); // "next"
1076   addKey("stop", Stop_Key, 0xF7C2, 16);
1077   addKey("play", Play_Key, 0xF732, 16);
1078   addKey("pause", Pause_Key, 0xF7B2, 16);
1079   addKey("back", Rewind_Key, 0xF70E, 16); // "SLOW_MINUS"
1080   addKey("forw", FastForward_Key, 0xF76E, 16); // "SLOW_PLUS"
1081   addKey("repeat", Unmapped_Key, 0xF7DA, 16);
1082   addKey("subtitle", Captions_Key, 0xF7B3, 16);
1083   addKey("audio", Unmapped_Key, 0xF713, 16);
1084   addKey("vfp", Unmapped_Key, 0xF77D, 16); // "theaterposition"
1085   addKey("digest", Unmapped_Key, 0xF79D, 16);
1086   addKey("angle", Unmapped_Key, 0xF7D3, 16);
1087   addKey("zoom-", Unmapped_Key, 0xF7F5, 16);
1088   addKey("zoom+", Unmapped_Key, 0xF775, 16);
1089   addKey("3dphonix", Unmapped_Key, 0xF7BD, 16);
1090   addKey("voldown", VolumeDown_Key, 0xC5F8, 16);
1091   addKey("volup", VolumeUp_Key, 0xC578, 16);
1092   addKey("power", Power_Key, 0xF702, 16);
1093   addKey("playmode", Unmapped_Key, 0xF7C1, 16);
1094   addKey("zoom", Unmapped_Key, 0xF73D, 16);
1095   addKey("display", Info_Key, 0xF7AD, 16);
1096   addKey("SWOOP", Unmapped_Key, 0xF792, 16);
1097   addKey("DIMMER", Unmapped_Key, 0xF78A, 16);
1098 }