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