1/*
2
3
4    Keytables for supported remote controls. This file is part of
5    video4linux.
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 2 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program; if not, write to the Free Software
19    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20
21 */
22#include <linux/module.h>
23#include <linux/moduleparam.h>
24
25#include <linux/input.h>
26#include <media/ir-common.h>
27
28/* empty keytable, can be used as placeholder for not-yet created keytables */
29IR_KEYTAB_TYPE ir_codes_empty[IR_KEYTAB_SIZE] = {
30	[ 0x2a ] = KEY_COFFEE,
31};
32
33EXPORT_SYMBOL_GPL(ir_codes_empty);
34
35/* Michal Majchrowicz <mmajchrowicz@gmail.com> */
36IR_KEYTAB_TYPE ir_codes_proteus_2309[IR_KEYTAB_SIZE] = {
37	/* numeric */
38	[ 0x00 ] = KEY_0,
39	[ 0x01 ] = KEY_1,
40	[ 0x02 ] = KEY_2,
41	[ 0x03 ] = KEY_3,
42	[ 0x04 ] = KEY_4,
43	[ 0x05 ] = KEY_5,
44	[ 0x06 ] = KEY_6,
45	[ 0x07 ] = KEY_7,
46	[ 0x08 ] = KEY_8,
47	[ 0x09 ] = KEY_9,
48
49	[ 0x5c ] = KEY_POWER,     /* power       */
50	[ 0x20 ] = KEY_F,         /* full screen */
51	[ 0x0f ] = KEY_BACKSPACE, /* recall      */
52	[ 0x1b ] = KEY_ENTER,     /* mute        */
53	[ 0x41 ] = KEY_RECORD,    /* record      */
54	[ 0x43 ] = KEY_STOP,      /* stop        */
55	[ 0x16 ] = KEY_S,
56	[ 0x1a ] = KEY_Q,         /* off         */
57	[ 0x2e ] = KEY_RED,
58	[ 0x1f ] = KEY_DOWN,      /* channel -   */
59	[ 0x1c ] = KEY_UP,        /* channel +   */
60	[ 0x10 ] = KEY_LEFT,      /* volume -    */
61	[ 0x1e ] = KEY_RIGHT,     /* volume +    */
62	[ 0x14 ] = KEY_F1,
63};
64
65EXPORT_SYMBOL_GPL(ir_codes_proteus_2309);
66/* Matt Jesson <dvb@jesson.eclipse.co.uk */
67IR_KEYTAB_TYPE ir_codes_avermedia_dvbt[IR_KEYTAB_SIZE] = {
68	[ 0x28 ] = KEY_0,         //'0' / 'enter'
69	[ 0x22 ] = KEY_1,         //'1'
70	[ 0x12 ] = KEY_2,         //'2' / 'up arrow'
71	[ 0x32 ] = KEY_3,         //'3'
72	[ 0x24 ] = KEY_4,         //'4' / 'left arrow'
73	[ 0x14 ] = KEY_5,         //'5'
74	[ 0x34 ] = KEY_6,         //'6' / 'right arrow'
75	[ 0x26 ] = KEY_7,         //'7'
76	[ 0x16 ] = KEY_8,         //'8' / 'down arrow'
77	[ 0x36 ] = KEY_9,         //'9'
78
79	[ 0x20 ] = KEY_LIST,        // 'source'
80	[ 0x10 ] = KEY_TEXT,        // 'teletext'
81	[ 0x00 ] = KEY_POWER,       // 'power'
82	[ 0x04 ] = KEY_AUDIO,       // 'audio'
83	[ 0x06 ] = KEY_ZOOM,        // 'full screen'
84	[ 0x18 ] = KEY_VIDEO,       // 'display'
85	[ 0x38 ] = KEY_SEARCH,      // 'loop'
86	[ 0x08 ] = KEY_INFO,        // 'preview'
87	[ 0x2a ] = KEY_REWIND,      // 'backward <<'
88	[ 0x1a ] = KEY_FASTFORWARD, // 'forward >>'
89	[ 0x3a ] = KEY_RECORD,      // 'capture'
90	[ 0x0a ] = KEY_MUTE,        // 'mute'
91	[ 0x2c ] = KEY_RECORD,      // 'record'
92	[ 0x1c ] = KEY_PAUSE,       // 'pause'
93	[ 0x3c ] = KEY_STOP,        // 'stop'
94	[ 0x0c ] = KEY_PLAY,        // 'play'
95	[ 0x2e ] = KEY_RED,         // 'red'
96	[ 0x01 ] = KEY_BLUE,        // 'blue' / 'cancel'
97	[ 0x0e ] = KEY_YELLOW,      // 'yellow' / 'ok'
98	[ 0x21 ] = KEY_GREEN,       // 'green'
99	[ 0x11 ] = KEY_CHANNELDOWN, // 'channel -'
100	[ 0x31 ] = KEY_CHANNELUP,   // 'channel +'
101	[ 0x1e ] = KEY_VOLUMEDOWN,  // 'volume -'
102	[ 0x3e ] = KEY_VOLUMEUP,    // 'volume +'
103};
104
105EXPORT_SYMBOL_GPL(ir_codes_avermedia_dvbt);
106
107/* Attila Kondoros <attila.kondoros@chello.hu> */
108IR_KEYTAB_TYPE ir_codes_apac_viewcomp[IR_KEYTAB_SIZE] = {
109
110	[ 0x01 ] = KEY_1,
111	[ 0x02 ] = KEY_2,
112	[ 0x03 ] = KEY_3,
113	[ 0x04 ] = KEY_4,
114	[ 0x05 ] = KEY_5,
115	[ 0x06 ] = KEY_6,
116	[ 0x07 ] = KEY_7,
117	[ 0x08 ] = KEY_8,
118	[ 0x09 ] = KEY_9,
119	[ 0x00 ] = KEY_0,
120	[ 0x17 ] = KEY_LAST,        // +100
121	[ 0x0a ] = KEY_LIST,        // recall
122
123
124	[ 0x1c ] = KEY_TUNER,       // TV/FM
125	[ 0x15 ] = KEY_SEARCH,      // scan
126	[ 0x12 ] = KEY_POWER,       // power
127	[ 0x1f ] = KEY_VOLUMEDOWN,  // vol up
128	[ 0x1b ] = KEY_VOLUMEUP,    // vol down
129	[ 0x1e ] = KEY_CHANNELDOWN, // chn up
130	[ 0x1a ] = KEY_CHANNELUP,   // chn down
131
132	[ 0x11 ] = KEY_VIDEO,       // video
133	[ 0x0f ] = KEY_ZOOM,        // full screen
134	[ 0x13 ] = KEY_MUTE,        // mute/unmute
135	[ 0x10 ] = KEY_TEXT,        // min
136
137	[ 0x0d ] = KEY_STOP,        // freeze
138	[ 0x0e ] = KEY_RECORD,      // record
139	[ 0x1d ] = KEY_PLAYPAUSE,   // stop
140	[ 0x19 ] = KEY_PLAY,        // play
141
142	[ 0x16 ] = KEY_GOTO,        // osd
143	[ 0x14 ] = KEY_REFRESH,     // default
144	[ 0x0c ] = KEY_KPPLUS,      // fine tune >>>>
145	[ 0x18 ] = KEY_KPMINUS      // fine tune <<<<
146};
147
148EXPORT_SYMBOL_GPL(ir_codes_apac_viewcomp);
149
150/* ---------------------------------------------------------------------- */
151
152IR_KEYTAB_TYPE ir_codes_pixelview[IR_KEYTAB_SIZE] = {
153
154	[ 0x1e ] = KEY_POWER,       // power
155	[ 0x07 ] = KEY_MEDIA,       // source
156	[ 0x1c ] = KEY_SEARCH,      // scan
157
158
159	[ 0x03 ] = KEY_TUNER,       // TV/FM
160
161	[ 0x00 ] = KEY_RECORD,
162	[ 0x08 ] = KEY_STOP,
163	[ 0x11 ] = KEY_PLAY,
164
165	[ 0x1a ] = KEY_PLAYPAUSE,   // freeze
166	[ 0x19 ] = KEY_ZOOM,        // zoom
167	[ 0x0f ] = KEY_TEXT,        // min
168
169	[ 0x01 ] = KEY_1,
170	[ 0x0b ] = KEY_2,
171	[ 0x1b ] = KEY_3,
172	[ 0x05 ] = KEY_4,
173	[ 0x09 ] = KEY_5,
174	[ 0x15 ] = KEY_6,
175	[ 0x06 ] = KEY_7,
176	[ 0x0a ] = KEY_8,
177	[ 0x12 ] = KEY_9,
178	[ 0x02 ] = KEY_0,
179	[ 0x10 ] = KEY_LAST,        // +100
180	[ 0x13 ] = KEY_LIST,        // recall
181
182	[ 0x1f ] = KEY_CHANNELUP,   // chn down
183	[ 0x17 ] = KEY_CHANNELDOWN, // chn up
184	[ 0x16 ] = KEY_VOLUMEUP,    // vol down
185	[ 0x14 ] = KEY_VOLUMEDOWN,  // vol up
186
187	[ 0x04 ] = KEY_KPMINUS,     // <<<
188	[ 0x0e ] = KEY_SETUP,       // function
189	[ 0x0c ] = KEY_KPPLUS,      // >>>
190
191	[ 0x0d ] = KEY_GOTO,        // mts
192	[ 0x1d ] = KEY_REFRESH,     // reset
193	[ 0x18 ] = KEY_MUTE         // mute/unmute
194};
195
196EXPORT_SYMBOL_GPL(ir_codes_pixelview);
197
198IR_KEYTAB_TYPE ir_codes_nebula[IR_KEYTAB_SIZE] = {
199	[ 0x00 ] = KEY_0,
200	[ 0x01 ] = KEY_1,
201	[ 0x02 ] = KEY_2,
202	[ 0x03 ] = KEY_3,
203	[ 0x04 ] = KEY_4,
204	[ 0x05 ] = KEY_5,
205	[ 0x06 ] = KEY_6,
206	[ 0x07 ] = KEY_7,
207	[ 0x08 ] = KEY_8,
208	[ 0x09 ] = KEY_9,
209	[ 0x0a ] = KEY_TV,
210	[ 0x0b ] = KEY_AUX,
211	[ 0x0c ] = KEY_DVD,
212	[ 0x0d ] = KEY_POWER,
213	[ 0x0e ] = KEY_MHP,	/* labelled 'Picture' */
214	[ 0x0f ] = KEY_AUDIO,
215	[ 0x10 ] = KEY_INFO,
216	[ 0x11 ] = KEY_F13,	/* 16:9 */
217	[ 0x12 ] = KEY_F14,	/* 14:9 */
218	[ 0x13 ] = KEY_EPG,
219	[ 0x14 ] = KEY_EXIT,
220	[ 0x15 ] = KEY_MENU,
221	[ 0x16 ] = KEY_UP,
222	[ 0x17 ] = KEY_DOWN,
223	[ 0x18 ] = KEY_LEFT,
224	[ 0x19 ] = KEY_RIGHT,
225	[ 0x1a ] = KEY_ENTER,
226	[ 0x1b ] = KEY_CHANNELUP,
227	[ 0x1c ] = KEY_CHANNELDOWN,
228	[ 0x1d ] = KEY_VOLUMEUP,
229	[ 0x1e ] = KEY_VOLUMEDOWN,
230	[ 0x1f ] = KEY_RED,
231	[ 0x20 ] = KEY_GREEN,
232	[ 0x21 ] = KEY_YELLOW,
233	[ 0x22 ] = KEY_BLUE,
234	[ 0x23 ] = KEY_SUBTITLE,
235	[ 0x24 ] = KEY_F15,	/* AD */
236	[ 0x25 ] = KEY_TEXT,
237	[ 0x26 ] = KEY_MUTE,
238	[ 0x27 ] = KEY_REWIND,
239	[ 0x28 ] = KEY_STOP,
240	[ 0x29 ] = KEY_PLAY,
241	[ 0x2a ] = KEY_FASTFORWARD,
242	[ 0x2b ] = KEY_F16,	/* chapter */
243	[ 0x2c ] = KEY_PAUSE,
244	[ 0x2d ] = KEY_PLAY,
245	[ 0x2e ] = KEY_RECORD,
246	[ 0x2f ] = KEY_F17,	/* picture in picture */
247	[ 0x30 ] = KEY_KPPLUS,	/* zoom in */
248	[ 0x31 ] = KEY_KPMINUS,	/* zoom out */
249	[ 0x32 ] = KEY_F18,	/* capture */
250	[ 0x33 ] = KEY_F19,	/* web */
251	[ 0x34 ] = KEY_EMAIL,
252	[ 0x35 ] = KEY_PHONE,
253	[ 0x36 ] = KEY_PC
254};
255
256EXPORT_SYMBOL_GPL(ir_codes_nebula);
257
258/* DigitalNow DNTV Live DVB-T Remote */
259IR_KEYTAB_TYPE ir_codes_dntv_live_dvb_t[IR_KEYTAB_SIZE] = {
260	[ 0x00 ] = KEY_ESC,		/* 'go up a level?' */
261	/* Keys 0 to 9 */
262	[ 0x0a ] = KEY_0,
263	[ 0x01 ] = KEY_1,
264	[ 0x02 ] = KEY_2,
265	[ 0x03 ] = KEY_3,
266	[ 0x04 ] = KEY_4,
267	[ 0x05 ] = KEY_5,
268	[ 0x06 ] = KEY_6,
269	[ 0x07 ] = KEY_7,
270	[ 0x08 ] = KEY_8,
271	[ 0x09 ] = KEY_9,
272
273	[ 0x0b ] = KEY_TUNER,		/* tv/fm */
274	[ 0x0c ] = KEY_SEARCH,		/* scan */
275	[ 0x0d ] = KEY_STOP,
276	[ 0x0e ] = KEY_PAUSE,
277	[ 0x0f ] = KEY_LIST,		/* source */
278
279	[ 0x10 ] = KEY_MUTE,
280	[ 0x11 ] = KEY_REWIND,		/* backward << */
281	[ 0x12 ] = KEY_POWER,
282	[ 0x13 ] = KEY_S,			/* snap */
283	[ 0x14 ] = KEY_AUDIO,		/* stereo */
284	[ 0x15 ] = KEY_CLEAR,		/* reset */
285	[ 0x16 ] = KEY_PLAY,
286	[ 0x17 ] = KEY_ENTER,
287	[ 0x18 ] = KEY_ZOOM,		/* full screen */
288	[ 0x19 ] = KEY_FASTFORWARD,	/* forward >> */
289	[ 0x1a ] = KEY_CHANNELUP,
290	[ 0x1b ] = KEY_VOLUMEUP,
291	[ 0x1c ] = KEY_INFO,		/* preview */
292	[ 0x1d ] = KEY_RECORD,		/* record */
293	[ 0x1e ] = KEY_CHANNELDOWN,
294	[ 0x1f ] = KEY_VOLUMEDOWN,
295};
296
297EXPORT_SYMBOL_GPL(ir_codes_dntv_live_dvb_t);
298
299/* ---------------------------------------------------------------------- */
300
301/* IO-DATA BCTV7E Remote */
302IR_KEYTAB_TYPE ir_codes_iodata_bctv7e[IR_KEYTAB_SIZE] = {
303	[ 0x40 ] = KEY_TV,
304	[ 0x20 ] = KEY_RADIO,		/* FM */
305	[ 0x60 ] = KEY_EPG,
306	[ 0x00 ] = KEY_POWER,
307
308	/* Keys 0 to 9 */
309	[ 0x44 ] = KEY_0,		/* 10 */
310	[ 0x50 ] = KEY_1,
311	[ 0x30 ] = KEY_2,
312	[ 0x70 ] = KEY_3,
313	[ 0x48 ] = KEY_4,
314	[ 0x28 ] = KEY_5,
315	[ 0x68 ] = KEY_6,
316	[ 0x58 ] = KEY_7,
317	[ 0x38 ] = KEY_8,
318	[ 0x78 ] = KEY_9,
319
320	[ 0x10 ] = KEY_L,			/* Live */
321	[ 0x08 ] = KEY_T,			/* Time Shift */
322
323	[ 0x18 ] = KEY_PLAYPAUSE,		/* Play */
324
325	[ 0x24 ] = KEY_ENTER,		/* 11 */
326	[ 0x64 ] = KEY_ESC,		/* 12 */
327	[ 0x04 ] = KEY_M,			/* Multi */
328
329	[ 0x54 ] = KEY_VIDEO,
330	[ 0x34 ] = KEY_CHANNELUP,
331	[ 0x74 ] = KEY_VOLUMEUP,
332	[ 0x14 ] = KEY_MUTE,
333
334	[ 0x4c ] = KEY_S,			/* SVIDEO */
335	[ 0x2c ] = KEY_CHANNELDOWN,
336	[ 0x6c ] = KEY_VOLUMEDOWN,
337	[ 0x0c ] = KEY_ZOOM,
338
339	[ 0x5c ] = KEY_PAUSE,
340	[ 0x3c ] = KEY_C,			/* || (red) */
341	[ 0x7c ] = KEY_RECORD,		/* recording */
342	[ 0x1c ] = KEY_STOP,
343
344	[ 0x41 ] = KEY_REWIND,		/* backward << */
345	[ 0x21 ] = KEY_PLAY,
346	[ 0x61 ] = KEY_FASTFORWARD,	/* forward >> */
347	[ 0x01 ] = KEY_NEXT,		/* skip >| */
348};
349
350EXPORT_SYMBOL_GPL(ir_codes_iodata_bctv7e);
351
352/* ---------------------------------------------------------------------- */
353
354/* ADS Tech Instant TV DVB-T PCI Remote */
355IR_KEYTAB_TYPE ir_codes_adstech_dvb_t_pci[IR_KEYTAB_SIZE] = {
356	/* Keys 0 to 9 */
357	[ 0x4d ] = KEY_0,
358	[ 0x57 ] = KEY_1,
359	[ 0x4f ] = KEY_2,
360	[ 0x53 ] = KEY_3,
361	[ 0x56 ] = KEY_4,
362	[ 0x4e ] = KEY_5,
363	[ 0x5e ] = KEY_6,
364	[ 0x54 ] = KEY_7,
365	[ 0x4c ] = KEY_8,
366	[ 0x5c ] = KEY_9,
367
368	[ 0x5b ] = KEY_POWER,
369	[ 0x5f ] = KEY_MUTE,
370	[ 0x55 ] = KEY_GOTO,
371	[ 0x5d ] = KEY_SEARCH,
372	[ 0x17 ] = KEY_EPG,		/* Guide */
373	[ 0x1f ] = KEY_MENU,
374	[ 0x0f ] = KEY_UP,
375	[ 0x46 ] = KEY_DOWN,
376	[ 0x16 ] = KEY_LEFT,
377	[ 0x1e ] = KEY_RIGHT,
378	[ 0x0e ] = KEY_SELECT,		/* Enter */
379	[ 0x5a ] = KEY_INFO,
380	[ 0x52 ] = KEY_EXIT,
381	[ 0x59 ] = KEY_PREVIOUS,
382	[ 0x51 ] = KEY_NEXT,
383	[ 0x58 ] = KEY_REWIND,
384	[ 0x50 ] = KEY_FORWARD,
385	[ 0x44 ] = KEY_PLAYPAUSE,
386	[ 0x07 ] = KEY_STOP,
387	[ 0x1b ] = KEY_RECORD,
388	[ 0x13 ] = KEY_TUNER,		/* Live */
389	[ 0x0a ] = KEY_A,
390	[ 0x12 ] = KEY_B,
391	[ 0x03 ] = KEY_PROG1,		/* 1 */
392	[ 0x01 ] = KEY_PROG2,		/* 2 */
393	[ 0x00 ] = KEY_PROG3,		/* 3 */
394	[ 0x06 ] = KEY_DVD,
395	[ 0x48 ] = KEY_AUX,		/* Photo */
396	[ 0x40 ] = KEY_VIDEO,
397	[ 0x19 ] = KEY_AUDIO,		/* Music */
398	[ 0x0b ] = KEY_CHANNELUP,
399	[ 0x08 ] = KEY_CHANNELDOWN,
400	[ 0x15 ] = KEY_VOLUMEUP,
401	[ 0x1c ] = KEY_VOLUMEDOWN,
402};
403
404EXPORT_SYMBOL_GPL(ir_codes_adstech_dvb_t_pci);
405
406/* ---------------------------------------------------------------------- */
407
408/* MSI TV@nywhere remote */
409IR_KEYTAB_TYPE ir_codes_msi_tvanywhere[IR_KEYTAB_SIZE] = {
410	/* Keys 0 to 9 */
411	[ 0x00 ] = KEY_0,
412	[ 0x01 ] = KEY_1,
413	[ 0x02 ] = KEY_2,
414	[ 0x03 ] = KEY_3,
415	[ 0x04 ] = KEY_4,
416	[ 0x05 ] = KEY_5,
417	[ 0x06 ] = KEY_6,
418	[ 0x07 ] = KEY_7,
419	[ 0x08 ] = KEY_8,
420	[ 0x09 ] = KEY_9,
421
422	[ 0x0c ] = KEY_MUTE,
423	[ 0x0f ] = KEY_SCREEN,		/* Full Screen */
424	[ 0x10 ] = KEY_F,			/* Funtion */
425	[ 0x11 ] = KEY_T,			/* Time shift */
426	[ 0x12 ] = KEY_POWER,
427	[ 0x13 ] = KEY_MEDIA,		/* MTS */
428	[ 0x14 ] = KEY_SLOW,
429	[ 0x16 ] = KEY_REWIND,		/* backward << */
430	[ 0x17 ] = KEY_ENTER,		/* Return */
431	[ 0x18 ] = KEY_FASTFORWARD,	/* forward >> */
432	[ 0x1a ] = KEY_CHANNELUP,
433	[ 0x1b ] = KEY_VOLUMEUP,
434	[ 0x1e ] = KEY_CHANNELDOWN,
435	[ 0x1f ] = KEY_VOLUMEDOWN,
436};
437
438EXPORT_SYMBOL_GPL(ir_codes_msi_tvanywhere);
439
440/* ---------------------------------------------------------------------- */
441
442/* Cinergy 1400 DVB-T */
443IR_KEYTAB_TYPE ir_codes_cinergy_1400[IR_KEYTAB_SIZE] = {
444	[ 0x01 ] = KEY_POWER,
445	[ 0x02 ] = KEY_1,
446	[ 0x03 ] = KEY_2,
447	[ 0x04 ] = KEY_3,
448	[ 0x05 ] = KEY_4,
449	[ 0x06 ] = KEY_5,
450	[ 0x07 ] = KEY_6,
451	[ 0x08 ] = KEY_7,
452	[ 0x09 ] = KEY_8,
453	[ 0x0a ] = KEY_9,
454	[ 0x0c ] = KEY_0,
455
456	[ 0x0b ] = KEY_VIDEO,
457	[ 0x0d ] = KEY_REFRESH,
458	[ 0x0e ] = KEY_SELECT,
459	[ 0x0f ] = KEY_EPG,
460	[ 0x10 ] = KEY_UP,
461	[ 0x11 ] = KEY_LEFT,
462	[ 0x12 ] = KEY_OK,
463	[ 0x13 ] = KEY_RIGHT,
464	[ 0x14 ] = KEY_DOWN,
465	[ 0x15 ] = KEY_TEXT,
466	[ 0x16 ] = KEY_INFO,
467
468	[ 0x17 ] = KEY_RED,
469	[ 0x18 ] = KEY_GREEN,
470	[ 0x19 ] = KEY_YELLOW,
471	[ 0x1a ] = KEY_BLUE,
472
473	[ 0x1b ] = KEY_CHANNELUP,
474	[ 0x1c ] = KEY_VOLUMEUP,
475	[ 0x1d ] = KEY_MUTE,
476	[ 0x1e ] = KEY_VOLUMEDOWN,
477	[ 0x1f ] = KEY_CHANNELDOWN,
478
479	[ 0x40 ] = KEY_PAUSE,
480	[ 0x4c ] = KEY_PLAY,
481	[ 0x58 ] = KEY_RECORD,
482	[ 0x54 ] = KEY_PREVIOUS,
483	[ 0x48 ] = KEY_STOP,
484	[ 0x5c ] = KEY_NEXT,
485};
486
487EXPORT_SYMBOL_GPL(ir_codes_cinergy_1400);
488
489/* ---------------------------------------------------------------------- */
490
491/* AVERTV STUDIO 303 Remote */
492IR_KEYTAB_TYPE ir_codes_avertv_303[IR_KEYTAB_SIZE] = {
493	[ 0x2a ] = KEY_1,
494	[ 0x32 ] = KEY_2,
495	[ 0x3a ] = KEY_3,
496	[ 0x4a ] = KEY_4,
497	[ 0x52 ] = KEY_5,
498	[ 0x5a ] = KEY_6,
499	[ 0x6a ] = KEY_7,
500	[ 0x72 ] = KEY_8,
501	[ 0x7a ] = KEY_9,
502	[ 0x0e ] = KEY_0,
503
504	[ 0x02 ] = KEY_POWER,
505	[ 0x22 ] = KEY_VIDEO,
506	[ 0x42 ] = KEY_AUDIO,
507	[ 0x62 ] = KEY_ZOOM,
508	[ 0x0a ] = KEY_TV,
509	[ 0x12 ] = KEY_CD,
510	[ 0x1a ] = KEY_TEXT,
511
512	[ 0x16 ] = KEY_SUBTITLE,
513	[ 0x1e ] = KEY_REWIND,
514	[ 0x06 ] = KEY_PRINT,
515
516	[ 0x2e ] = KEY_SEARCH,
517	[ 0x36 ] = KEY_SLEEP,
518	[ 0x3e ] = KEY_SHUFFLE,
519	[ 0x26 ] = KEY_MUTE,
520
521	[ 0x4e ] = KEY_RECORD,
522	[ 0x56 ] = KEY_PAUSE,
523	[ 0x5e ] = KEY_STOP,
524	[ 0x46 ] = KEY_PLAY,
525
526	[ 0x6e ] = KEY_RED,
527	[ 0x0b ] = KEY_GREEN,
528	[ 0x66 ] = KEY_YELLOW,
529	[ 0x03 ] = KEY_BLUE,
530
531	[ 0x76 ] = KEY_LEFT,
532	[ 0x7e ] = KEY_RIGHT,
533	[ 0x13 ] = KEY_DOWN,
534	[ 0x1b ] = KEY_UP,
535};
536
537EXPORT_SYMBOL_GPL(ir_codes_avertv_303);
538
539/* ---------------------------------------------------------------------- */
540
541/* DigitalNow DNTV Live! DVB-T Pro Remote */
542IR_KEYTAB_TYPE ir_codes_dntv_live_dvbt_pro[IR_KEYTAB_SIZE] = {
543	[ 0x16 ] = KEY_POWER,
544	[ 0x5b ] = KEY_HOME,
545
546	[ 0x55 ] = KEY_TV,		/* live tv */
547	[ 0x58 ] = KEY_TUNER,		/* digital Radio */
548	[ 0x5a ] = KEY_RADIO,		/* FM radio */
549	[ 0x59 ] = KEY_DVD,		/* dvd menu */
550	[ 0x03 ] = KEY_1,
551	[ 0x01 ] = KEY_2,
552	[ 0x06 ] = KEY_3,
553	[ 0x09 ] = KEY_4,
554	[ 0x1d ] = KEY_5,
555	[ 0x1f ] = KEY_6,
556	[ 0x0d ] = KEY_7,
557	[ 0x19 ] = KEY_8,
558	[ 0x1b ] = KEY_9,
559	[ 0x0c ] = KEY_CANCEL,
560	[ 0x15 ] = KEY_0,
561	[ 0x4a ] = KEY_CLEAR,
562	[ 0x13 ] = KEY_BACK,
563	[ 0x00 ] = KEY_TAB,
564	[ 0x4b ] = KEY_UP,
565	[ 0x4e ] = KEY_LEFT,
566	[ 0x4f ] = KEY_OK,
567	[ 0x52 ] = KEY_RIGHT,
568	[ 0x51 ] = KEY_DOWN,
569	[ 0x1e ] = KEY_VOLUMEUP,
570	[ 0x0a ] = KEY_VOLUMEDOWN,
571	[ 0x02 ] = KEY_CHANNELDOWN,
572	[ 0x05 ] = KEY_CHANNELUP,
573	[ 0x11 ] = KEY_RECORD,
574	[ 0x14 ] = KEY_PLAY,
575	[ 0x4c ] = KEY_PAUSE,
576	[ 0x1a ] = KEY_STOP,
577	[ 0x40 ] = KEY_REWIND,
578	[ 0x12 ] = KEY_FASTFORWARD,
579	[ 0x41 ] = KEY_PREVIOUSSONG,	/* replay |< */
580	[ 0x42 ] = KEY_NEXTSONG,	/* skip >| */
581	[ 0x54 ] = KEY_CAMERA,		/* capture */
582	[ 0x50 ] = KEY_LANGUAGE,	/* sap */
583	[ 0x47 ] = KEY_TV2,		/* pip */
584	[ 0x4d ] = KEY_SCREEN,
585	[ 0x43 ] = KEY_SUBTITLE,
586	[ 0x10 ] = KEY_MUTE,
587	[ 0x49 ] = KEY_AUDIO,		/* l/r */
588	[ 0x07 ] = KEY_SLEEP,
589	[ 0x08 ] = KEY_VIDEO,		/* a/v */
590	[ 0x0e ] = KEY_PREVIOUS,	/* recall */
591	[ 0x45 ] = KEY_ZOOM,		/* zoom + */
592	[ 0x46 ] = KEY_ANGLE,		/* zoom - */
593	[ 0x56 ] = KEY_RED,
594	[ 0x57 ] = KEY_GREEN,
595	[ 0x5c ] = KEY_YELLOW,
596	[ 0x5d ] = KEY_BLUE,
597};
598
599EXPORT_SYMBOL_GPL(ir_codes_dntv_live_dvbt_pro);
600
601IR_KEYTAB_TYPE ir_codes_em_terratec[IR_KEYTAB_SIZE] = {
602	[ 0x01 ] = KEY_CHANNEL,
603	[ 0x02 ] = KEY_SELECT,
604	[ 0x03 ] = KEY_MUTE,
605	[ 0x04 ] = KEY_POWER,
606	[ 0x05 ] = KEY_1,
607	[ 0x06 ] = KEY_2,
608	[ 0x07 ] = KEY_3,
609	[ 0x08 ] = KEY_CHANNELUP,
610	[ 0x09 ] = KEY_4,
611	[ 0x0a ] = KEY_5,
612	[ 0x0b ] = KEY_6,
613	[ 0x0c ] = KEY_CHANNELDOWN,
614	[ 0x0d ] = KEY_7,
615	[ 0x0e ] = KEY_8,
616	[ 0x0f ] = KEY_9,
617	[ 0x10 ] = KEY_VOLUMEUP,
618	[ 0x11 ] = KEY_0,
619	[ 0x12 ] = KEY_MENU,
620	[ 0x13 ] = KEY_PRINT,
621	[ 0x14 ] = KEY_VOLUMEDOWN,
622	[ 0x16 ] = KEY_PAUSE,
623	[ 0x18 ] = KEY_RECORD,
624	[ 0x19 ] = KEY_REWIND,
625	[ 0x1a ] = KEY_PLAY,
626	[ 0x1b ] = KEY_FORWARD,
627	[ 0x1c ] = KEY_BACKSPACE,
628	[ 0x1e ] = KEY_STOP,
629	[ 0x40 ] = KEY_ZOOM,
630};
631
632EXPORT_SYMBOL_GPL(ir_codes_em_terratec);
633
634IR_KEYTAB_TYPE ir_codes_pinnacle_grey[IR_KEYTAB_SIZE] = {
635	[ 0x3a ] = KEY_0,
636	[ 0x31 ] = KEY_1,
637	[ 0x32 ] = KEY_2,
638	[ 0x33 ] = KEY_3,
639	[ 0x34 ] = KEY_4,
640	[ 0x35 ] = KEY_5,
641	[ 0x36 ] = KEY_6,
642	[ 0x37 ] = KEY_7,
643	[ 0x38 ] = KEY_8,
644	[ 0x39 ] = KEY_9,
645
646	[ 0x2f ] = KEY_POWER,
647
648	[ 0x2e ] = KEY_P,
649	[ 0x1f ] = KEY_L,
650	[ 0x2b ] = KEY_I,
651
652	[ 0x2d ] = KEY_SCREEN,
653	[ 0x1e ] = KEY_ZOOM,
654	[ 0x1b ] = KEY_VOLUMEUP,
655	[ 0x0f ] = KEY_VOLUMEDOWN,
656	[ 0x17 ] = KEY_CHANNELUP,
657	[ 0x1c ] = KEY_CHANNELDOWN,
658	[ 0x25 ] = KEY_INFO,
659
660	[ 0x3c ] = KEY_MUTE,
661
662	[ 0x3d ] = KEY_LEFT,
663	[ 0x3b ] = KEY_RIGHT,
664
665	[ 0x3f ] = KEY_UP,
666	[ 0x3e ] = KEY_DOWN,
667	[ 0x1a ] = KEY_ENTER,
668
669	[ 0x1d ] = KEY_MENU,
670	[ 0x19 ] = KEY_AGAIN,
671	[ 0x16 ] = KEY_PREVIOUSSONG,
672	[ 0x13 ] = KEY_NEXTSONG,
673	[ 0x15 ] = KEY_PAUSE,
674	[ 0x0e ] = KEY_REWIND,
675	[ 0x0d ] = KEY_PLAY,
676	[ 0x0b ] = KEY_STOP,
677	[ 0x07 ] = KEY_FORWARD,
678	[ 0x27 ] = KEY_RECORD,
679	[ 0x26 ] = KEY_TUNER,
680	[ 0x29 ] = KEY_TEXT,
681	[ 0x2a ] = KEY_MEDIA,
682	[ 0x18 ] = KEY_EPG,
683};
684
685EXPORT_SYMBOL_GPL(ir_codes_pinnacle_grey);
686
687IR_KEYTAB_TYPE ir_codes_flyvideo[IR_KEYTAB_SIZE] = {
688	[ 0x0f ] = KEY_0,
689	[ 0x03 ] = KEY_1,
690	[ 0x04 ] = KEY_2,
691	[ 0x05 ] = KEY_3,
692	[ 0x07 ] = KEY_4,
693	[ 0x08 ] = KEY_5,
694	[ 0x09 ] = KEY_6,
695	[ 0x0b ] = KEY_7,
696	[ 0x0c ] = KEY_8,
697	[ 0x0d ] = KEY_9,
698
699	[ 0x0e ] = KEY_MODE,         // Air/Cable
700	[ 0x11 ] = KEY_VIDEO,        // Video
701	[ 0x15 ] = KEY_AUDIO,        // Audio
702	[ 0x00 ] = KEY_POWER,        // Power
703	[ 0x18 ] = KEY_TUNER,        // AV Source
704	[ 0x02 ] = KEY_ZOOM,         // Fullscreen
705	[ 0x1a ] = KEY_LANGUAGE,     // Stereo
706	[ 0x1b ] = KEY_MUTE,         // Mute
707	[ 0x14 ] = KEY_VOLUMEUP,     // Volume +
708	[ 0x17 ] = KEY_VOLUMEDOWN,   // Volume -
709	[ 0x12 ] = KEY_CHANNELUP,    // Channel +
710	[ 0x13 ] = KEY_CHANNELDOWN,  // Channel -
711	[ 0x06 ] = KEY_AGAIN,        // Recall
712	[ 0x10 ] = KEY_ENTER,      // Enter
713};
714
715EXPORT_SYMBOL_GPL(ir_codes_flyvideo);
716
717IR_KEYTAB_TYPE ir_codes_flydvb[IR_KEYTAB_SIZE] = {
718	[ 0x01 ] = KEY_ZOOM,		// Full Screen
719	[ 0x00 ] = KEY_POWER,		// Power
720
721	[ 0x03 ] = KEY_1,
722	[ 0x04 ] = KEY_2,
723	[ 0x05 ] = KEY_3,
724	[ 0x07 ] = KEY_4,
725	[ 0x08 ] = KEY_5,
726	[ 0x09 ] = KEY_6,
727	[ 0x0b ] = KEY_7,
728	[ 0x0c ] = KEY_8,
729	[ 0x0d ] = KEY_9,
730	[ 0x06 ] = KEY_AGAIN,		// Recall
731	[ 0x0f ] = KEY_0,
732	[ 0x10 ] = KEY_MUTE,		// Mute
733	[ 0x02 ] = KEY_RADIO,		// TV/Radio
734	[ 0x1b ] = KEY_LANGUAGE,		// SAP (Second Audio Program)
735
736	[ 0x14 ] = KEY_VOLUMEUP,		// VOL+
737	[ 0x17 ] = KEY_VOLUMEDOWN,	// VOL-
738	[ 0x12 ] = KEY_CHANNELUP,		// CH+
739	[ 0x13 ] = KEY_CHANNELDOWN,	// CH-
740	[ 0x1d ] = KEY_ENTER,		// Enter
741
742	[ 0x1a ] = KEY_MODE,		// PIP
743	[ 0x18 ] = KEY_TUNER,		// Source
744
745	[ 0x1e ] = KEY_RECORD,		// Record/Pause
746	[ 0x15 ] = KEY_ANGLE,		// Swap (no label on key)
747	[ 0x1c ] = KEY_PAUSE,		// Timeshift/Pause
748	[ 0x19 ] = KEY_BACK,		// Rewind <<
749	[ 0x0a ] = KEY_PLAYPAUSE,		// Play/Pause
750	[ 0x1f ] = KEY_FORWARD,		// Forward >>
751	[ 0x16 ] = KEY_PREVIOUS,		// Back |<<
752	[ 0x11 ] = KEY_STOP,		// Stop
753	[ 0x0e ] = KEY_NEXT,		// End >>|
754};
755
756EXPORT_SYMBOL_GPL(ir_codes_flydvb);
757
758IR_KEYTAB_TYPE ir_codes_cinergy[IR_KEYTAB_SIZE] = {
759	[ 0x00 ] = KEY_0,
760	[ 0x01 ] = KEY_1,
761	[ 0x02 ] = KEY_2,
762	[ 0x03 ] = KEY_3,
763	[ 0x04 ] = KEY_4,
764	[ 0x05 ] = KEY_5,
765	[ 0x06 ] = KEY_6,
766	[ 0x07 ] = KEY_7,
767	[ 0x08 ] = KEY_8,
768	[ 0x09 ] = KEY_9,
769
770	[ 0x0a ] = KEY_POWER,
771	[ 0x0b ] = KEY_PROG1,           // app
772	[ 0x0c ] = KEY_ZOOM,            // zoom/fullscreen
773	[ 0x0d ] = KEY_CHANNELUP,       // channel
774	[ 0x0e ] = KEY_CHANNELDOWN,     // channel-
775	[ 0x0f ] = KEY_VOLUMEUP,
776	[ 0x10 ] = KEY_VOLUMEDOWN,
777	[ 0x11 ] = KEY_TUNER,           // AV
778	[ 0x12 ] = KEY_NUMLOCK,         // -/--
779	[ 0x13 ] = KEY_AUDIO,           // audio
780	[ 0x14 ] = KEY_MUTE,
781	[ 0x15 ] = KEY_UP,
782	[ 0x16 ] = KEY_DOWN,
783	[ 0x17 ] = KEY_LEFT,
784	[ 0x18 ] = KEY_RIGHT,
785	[ 0x19 ] = BTN_LEFT,
786	[ 0x1a ] = BTN_RIGHT,
787	[ 0x1b ] = KEY_WWW,             // text
788	[ 0x1c ] = KEY_REWIND,
789	[ 0x1d ] = KEY_FORWARD,
790	[ 0x1e ] = KEY_RECORD,
791	[ 0x1f ] = KEY_PLAY,
792	[ 0x20 ] = KEY_PREVIOUSSONG,
793	[ 0x21 ] = KEY_NEXTSONG,
794	[ 0x22 ] = KEY_PAUSE,
795	[ 0x23 ] = KEY_STOP,
796};
797
798EXPORT_SYMBOL_GPL(ir_codes_cinergy);
799
800/* Alfons Geser <a.geser@cox.net>
801 * updates from Job D. R. Borges <jobdrb@ig.com.br> */
802IR_KEYTAB_TYPE ir_codes_eztv[IR_KEYTAB_SIZE] = {
803	[ 0x12 ] = KEY_POWER,
804	[ 0x01 ] = KEY_TV,             // DVR
805	[ 0x15 ] = KEY_DVD,            // DVD
806	[ 0x17 ] = KEY_AUDIO,          // music
807				     // DVR mode / DVD mode / music mode
808
809	[ 0x1b ] = KEY_MUTE,           // mute
810	[ 0x02 ] = KEY_LANGUAGE,       // MTS/SAP / audio / autoseek
811	[ 0x1e ] = KEY_SUBTITLE,       // closed captioning / subtitle / seek
812	[ 0x16 ] = KEY_ZOOM,           // full screen
813	[ 0x1c ] = KEY_VIDEO,          // video source / eject / delall
814	[ 0x1d ] = KEY_RESTART,        // playback / angle / del
815	[ 0x2f ] = KEY_SEARCH,         // scan / menu / playlist
816	[ 0x30 ] = KEY_CHANNEL,        // CH surfing / bookmark / memo
817
818	[ 0x31 ] = KEY_HELP,           // help
819	[ 0x32 ] = KEY_MODE,           // num/memo
820	[ 0x33 ] = KEY_ESC,            // cancel
821
822	[ 0x0c ] = KEY_UP,             // up
823	[ 0x10 ] = KEY_DOWN,           // down
824	[ 0x08 ] = KEY_LEFT,           // left
825	[ 0x04 ] = KEY_RIGHT,          // right
826	[ 0x03 ] = KEY_SELECT,         // select
827
828	[ 0x1f ] = KEY_REWIND,         // rewind
829	[ 0x20 ] = KEY_PLAYPAUSE,      // play/pause
830	[ 0x29 ] = KEY_FORWARD,        // forward
831	[ 0x14 ] = KEY_AGAIN,          // repeat
832	[ 0x2b ] = KEY_RECORD,         // recording
833	[ 0x2c ] = KEY_STOP,           // stop
834	[ 0x2d ] = KEY_PLAY,           // play
835	[ 0x2e ] = KEY_SHUFFLE,        // snapshot / shuffle
836
837	[ 0x00 ] = KEY_0,
838	[ 0x05 ] = KEY_1,
839	[ 0x06 ] = KEY_2,
840	[ 0x07 ] = KEY_3,
841	[ 0x09 ] = KEY_4,
842	[ 0x0a ] = KEY_5,
843	[ 0x0b ] = KEY_6,
844	[ 0x0d ] = KEY_7,
845	[ 0x0e ] = KEY_8,
846	[ 0x0f ] = KEY_9,
847
848	[ 0x2a ] = KEY_VOLUMEUP,
849	[ 0x11 ] = KEY_VOLUMEDOWN,
850	[ 0x18 ] = KEY_CHANNELUP,      // CH.tracking up
851	[ 0x19 ] = KEY_CHANNELDOWN,    // CH.tracking down
852
853	[ 0x13 ] = KEY_ENTER,        // enter
854	[ 0x21 ] = KEY_DOT,          // . (decimal dot)
855};
856
857EXPORT_SYMBOL_GPL(ir_codes_eztv);
858
859/* Alex Hermann <gaaf@gmx.net> */
860IR_KEYTAB_TYPE ir_codes_avermedia[IR_KEYTAB_SIZE] = {
861	[ 0x28 ] = KEY_1,
862	[ 0x18 ] = KEY_2,
863	[ 0x38 ] = KEY_3,
864	[ 0x24 ] = KEY_4,
865	[ 0x14 ] = KEY_5,
866	[ 0x34 ] = KEY_6,
867	[ 0x2c ] = KEY_7,
868	[ 0x1c ] = KEY_8,
869	[ 0x3c ] = KEY_9,
870	[ 0x22 ] = KEY_0,
871
872	[ 0x20 ] = KEY_TV,		/* TV/FM */
873	[ 0x10 ] = KEY_CD,		/* CD */
874	[ 0x30 ] = KEY_TEXT,		/* TELETEXT */
875	[ 0x00 ] = KEY_POWER,		/* POWER */
876
877	[ 0x08 ] = KEY_VIDEO,		/* VIDEO */
878	[ 0x04 ] = KEY_AUDIO,		/* AUDIO */
879	[ 0x0c ] = KEY_ZOOM,		/* FULL SCREEN */
880
881	[ 0x12 ] = KEY_SUBTITLE,	/* DISPLAY */
882	[ 0x32 ] = KEY_REWIND,		/* LOOP	*/
883	[ 0x02 ] = KEY_PRINT,		/* PREVIEW */
884
885	[ 0x2a ] = KEY_SEARCH,		/* AUTOSCAN */
886	[ 0x1a ] = KEY_SLEEP,		/* FREEZE */
887	[ 0x3a ] = KEY_SHUFFLE,		/* SNAPSHOT */
888	[ 0x0a ] = KEY_MUTE,		/* MUTE */
889
890	[ 0x26 ] = KEY_RECORD,		/* RECORD */
891	[ 0x16 ] = KEY_PAUSE,		/* PAUSE */
892	[ 0x36 ] = KEY_STOP,		/* STOP */
893	[ 0x06 ] = KEY_PLAY,		/* PLAY */
894
895	[ 0x2e ] = KEY_RED,		/* RED */
896	[ 0x21 ] = KEY_GREEN,		/* GREEN */
897	[ 0x0e ] = KEY_YELLOW,		/* YELLOW */
898	[ 0x01 ] = KEY_BLUE,		/* BLUE */
899
900	[ 0x1e ] = KEY_VOLUMEDOWN,	/* VOLUME- */
901	[ 0x3e ] = KEY_VOLUMEUP,	/* VOLUME+ */
902	[ 0x11 ] = KEY_CHANNELDOWN,	/* CHANNEL/PAGE- */
903	[ 0x31 ] = KEY_CHANNELUP	/* CHANNEL/PAGE+ */
904};
905
906EXPORT_SYMBOL_GPL(ir_codes_avermedia);
907
908IR_KEYTAB_TYPE ir_codes_videomate_tv_pvr[IR_KEYTAB_SIZE] = {
909	[ 0x14 ] = KEY_MUTE,
910	[ 0x24 ] = KEY_ZOOM,
911
912	[ 0x01 ] = KEY_DVD,
913	[ 0x23 ] = KEY_RADIO,
914	[ 0x00 ] = KEY_TV,
915
916	[ 0x0a ] = KEY_REWIND,
917	[ 0x08 ] = KEY_PLAYPAUSE,
918	[ 0x0f ] = KEY_FORWARD,
919
920	[ 0x02 ] = KEY_PREVIOUS,
921	[ 0x07 ] = KEY_STOP,
922	[ 0x06 ] = KEY_NEXT,
923
924	[ 0x0c ] = KEY_UP,
925	[ 0x0e ] = KEY_DOWN,
926	[ 0x0b ] = KEY_LEFT,
927	[ 0x0d ] = KEY_RIGHT,
928	[ 0x11 ] = KEY_OK,
929
930	[ 0x03 ] = KEY_MENU,
931	[ 0x09 ] = KEY_SETUP,
932	[ 0x05 ] = KEY_VIDEO,
933	[ 0x22 ] = KEY_CHANNEL,
934
935	[ 0x12 ] = KEY_VOLUMEUP,
936	[ 0x15 ] = KEY_VOLUMEDOWN,
937	[ 0x10 ] = KEY_CHANNELUP,
938	[ 0x13 ] = KEY_CHANNELDOWN,
939
940	[ 0x04 ] = KEY_RECORD,
941
942	[ 0x16 ] = KEY_1,
943	[ 0x17 ] = KEY_2,
944	[ 0x18 ] = KEY_3,
945	[ 0x19 ] = KEY_4,
946	[ 0x1a ] = KEY_5,
947	[ 0x1b ] = KEY_6,
948	[ 0x1c ] = KEY_7,
949	[ 0x1d ] = KEY_8,
950	[ 0x1e ] = KEY_9,
951	[ 0x1f ] = KEY_0,
952
953	[ 0x20 ] = KEY_LANGUAGE,
954	[ 0x21 ] = KEY_SLEEP,
955};
956
957EXPORT_SYMBOL_GPL(ir_codes_videomate_tv_pvr);
958
959/* Michael Tokarev <mjt@tls.msk.ru>
960   http://www.corpit.ru/mjt/beholdTV/remote_control.jpg
961   keytable is used by MANLI MTV00[ 0x0c ] and BeholdTV 40[13] at
962   least, and probably other cards too.
963   The "ascii-art picture" below (in comments, first row
964   is the keycode in hex, and subsequent row(s) shows
965   the button labels (several variants when appropriate)
966   helps to descide which keycodes to assign to the buttons.
967 */
968IR_KEYTAB_TYPE ir_codes_manli[IR_KEYTAB_SIZE] = {
969
970	/*  0x1c            0x12  *
971	 * FUNCTION         POWER *
972	 *   FM              (|)  *
973	 *                        */
974	[ 0x1c ] = KEY_RADIO,
975	[ 0x12 ] = KEY_POWER,
976
977	/*  0x01    0x02    0x03  *
978	 *   1       2       3    *
979	 *                        *
980	 *  0x04    0x05    0x06  *
981	 *   4       5       6    *
982	 *                        *
983	 *  0x07    0x08    0x09  *
984	 *   7       8       9    *
985	 *                        */
986	[ 0x01 ] = KEY_1,
987	[ 0x02 ] = KEY_2,
988	[ 0x03 ] = KEY_3,
989	[ 0x04 ] = KEY_4,
990	[ 0x05 ] = KEY_5,
991	[ 0x06 ] = KEY_6,
992	[ 0x07 ] = KEY_7,
993	[ 0x08 ] = KEY_8,
994	[ 0x09 ] = KEY_9,
995
996	/*  0x0a    0x00    0x17  *
997	 * RECALL    0      +100  *
998	 *                  PLUS  *
999	 *                        */
1000	[ 0x0a ] = KEY_AGAIN,
1001	[ 0x00 ] = KEY_0,
1002	[ 0x17 ] = KEY_DIGITS,
1003
1004	/*  0x14            0x10  *
1005	 *  MENU            INFO  *
1006	 *  OSD                   */
1007	[ 0x14 ] = KEY_MENU,
1008	[ 0x10 ] = KEY_INFO,
1009
1010	/*          0x0b          *
1011	 *           Up           *
1012	 *                        *
1013	 *  0x18    0x16    0x0c  *
1014	 *  Left     Ok     Right *
1015	 *                        *
1016	 *         0x015          *
1017	 *         Down           *
1018	 *                        */
1019	[ 0x0b ] = KEY_UP,
1020	[ 0x18 ] = KEY_LEFT,
1021	[ 0x16 ] = KEY_OK,
1022	[ 0x0c ] = KEY_RIGHT,
1023	[ 0x15 ] = KEY_DOWN,
1024
1025	/*  0x11            0x0d  *
1026	 *  TV/AV           MODE  *
1027	 *  SOURCE         STEREO *
1028	 *                        */
1029	[ 0x11 ] = KEY_TV,
1030	[ 0x0d ] = KEY_MODE,
1031
1032	/*  0x0f    0x1b    0x1a  *
1033	 *  AUDIO   Vol+    Chan+ *
1034	 *        TIMESHIFT???    *
1035	 *                        *
1036	 *  0x0e    0x1f    0x1e  *
1037	 *  SLEEP   Vol-    Chan- *
1038	 *                        */
1039	[ 0x0f ] = KEY_AUDIO,
1040	[ 0x1b ] = KEY_VOLUMEUP,
1041	[ 0x1a ] = KEY_CHANNELUP,
1042	[ 0x0e ] = KEY_SLEEP,
1043	[ 0x1f ] = KEY_VOLUMEDOWN,
1044	[ 0x1e ] = KEY_CHANNELDOWN,
1045
1046	/*         0x13     0x19  *
1047	 *         MUTE   SNAPSHOT*
1048	 *                        */
1049	[ 0x13 ] = KEY_MUTE,
1050	[ 0x19 ] = KEY_RECORD,
1051
1052	// 0x1d unused ?
1053};
1054
1055EXPORT_SYMBOL_GPL(ir_codes_manli);
1056
1057/* Mike Baikov <mike@baikov.com> */
1058IR_KEYTAB_TYPE ir_codes_gotview7135[IR_KEYTAB_SIZE] = {
1059
1060	[ 0x21 ] = KEY_POWER,
1061	[ 0x69 ] = KEY_TV,
1062	[ 0x33 ] = KEY_0,
1063	[ 0x51 ] = KEY_1,
1064	[ 0x31 ] = KEY_2,
1065	[ 0x71 ] = KEY_3,
1066	[ 0x3b ] = KEY_4,
1067	[ 0x58 ] = KEY_5,
1068	[ 0x41 ] = KEY_6,
1069	[ 0x48 ] = KEY_7,
1070	[ 0x30 ] = KEY_8,
1071	[ 0x53 ] = KEY_9,
1072	[ 0x73 ] = KEY_AGAIN, /* LOOP */
1073	[ 0x0a ] = KEY_AUDIO,
1074	[ 0x61 ] = KEY_PRINT, /* PREVIEW */
1075	[ 0x7a ] = KEY_VIDEO,
1076	[ 0x20 ] = KEY_CHANNELUP,
1077	[ 0x40 ] = KEY_CHANNELDOWN,
1078	[ 0x18 ] = KEY_VOLUMEDOWN,
1079	[ 0x50 ] = KEY_VOLUMEUP,
1080	[ 0x10 ] = KEY_MUTE,
1081	[ 0x4a ] = KEY_SEARCH,
1082	[ 0x7b ] = KEY_SHUFFLE, /* SNAPSHOT */
1083	[ 0x22 ] = KEY_RECORD,
1084	[ 0x62 ] = KEY_STOP,
1085	[ 0x78 ] = KEY_PLAY,
1086	[ 0x39 ] = KEY_REWIND,
1087	[ 0x59 ] = KEY_PAUSE,
1088	[ 0x19 ] = KEY_FORWARD,
1089	[ 0x09 ] = KEY_ZOOM,
1090
1091	[ 0x52 ] = KEY_F21, /* LIVE TIMESHIFT */
1092	[ 0x1a ] = KEY_F22, /* MIN TIMESHIFT */
1093	[ 0x3a ] = KEY_F23, /* TIMESHIFT */
1094	[ 0x70 ] = KEY_F24, /* NORMAL TIMESHIFT */
1095};
1096
1097EXPORT_SYMBOL_GPL(ir_codes_gotview7135);
1098
1099IR_KEYTAB_TYPE ir_codes_purpletv[IR_KEYTAB_SIZE] = {
1100	[ 0x03 ] = KEY_POWER,
1101	[ 0x6f ] = KEY_MUTE,
1102	[ 0x10 ] = KEY_BACKSPACE,       /* Recall */
1103
1104	[ 0x11 ] = KEY_0,
1105	[ 0x04 ] = KEY_1,
1106	[ 0x05 ] = KEY_2,
1107	[ 0x06 ] = KEY_3,
1108	[ 0x08 ] = KEY_4,
1109	[ 0x09 ] = KEY_5,
1110	[ 0x0a ] = KEY_6,
1111	[ 0x0c ] = KEY_7,
1112	[ 0x0d ] = KEY_8,
1113	[ 0x0e ] = KEY_9,
1114	[ 0x12 ] = KEY_DOT,           /* 100+ */
1115
1116	[ 0x07 ] = KEY_VOLUMEUP,
1117	[ 0x0b ] = KEY_VOLUMEDOWN,
1118	[ 0x1a ] = KEY_KPPLUS,
1119	[ 0x18 ] = KEY_KPMINUS,
1120	[ 0x15 ] = KEY_UP,
1121	[ 0x1d ] = KEY_DOWN,
1122	[ 0x0f ] = KEY_CHANNELUP,
1123	[ 0x13 ] = KEY_CHANNELDOWN,
1124	[ 0x48 ] = KEY_ZOOM,
1125
1126	[ 0x1b ] = KEY_VIDEO,           /* Video source */
1127	[ 0x49 ] = KEY_LANGUAGE,        /* MTS Select */
1128	[ 0x19 ] = KEY_SEARCH,          /* Auto Scan */
1129
1130	[ 0x4b ] = KEY_RECORD,
1131	[ 0x46 ] = KEY_PLAY,
1132	[ 0x45 ] = KEY_PAUSE,           /* Pause */
1133	[ 0x44 ] = KEY_STOP,
1134	[ 0x40 ] = KEY_FORWARD,         /* Forward ? */
1135	[ 0x42 ] = KEY_REWIND,          /* Backward ? */
1136
1137};
1138
1139EXPORT_SYMBOL_GPL(ir_codes_purpletv);
1140
1141/* Mapping for the 28 key remote control as seen at
1142   http://www.sednacomputer.com/photo/cardbus-tv.jpg
1143   Pavel Mihaylov <bin@bash.info> */
1144IR_KEYTAB_TYPE ir_codes_pctv_sedna[IR_KEYTAB_SIZE] = {
1145	[ 0x00 ] = KEY_0,
1146	[ 0x01 ] = KEY_1,
1147	[ 0x02 ] = KEY_2,
1148	[ 0x03 ] = KEY_3,
1149	[ 0x04 ] = KEY_4,
1150	[ 0x05 ] = KEY_5,
1151	[ 0x06 ] = KEY_6,
1152	[ 0x07 ] = KEY_7,
1153	[ 0x08 ] = KEY_8,
1154	[ 0x09 ] = KEY_9,
1155
1156	[ 0x0a ] = KEY_AGAIN,          /* Recall */
1157	[ 0x0b ] = KEY_CHANNELUP,
1158	[ 0x0c ] = KEY_VOLUMEUP,
1159	[ 0x0d ] = KEY_MODE,           /* Stereo */
1160	[ 0x0e ] = KEY_STOP,
1161	[ 0x0f ] = KEY_PREVIOUSSONG,
1162	[ 0x10 ] = KEY_ZOOM,
1163	[ 0x11 ] = KEY_TUNER,          /* Source */
1164	[ 0x12 ] = KEY_POWER,
1165	[ 0x13 ] = KEY_MUTE,
1166	[ 0x15 ] = KEY_CHANNELDOWN,
1167	[ 0x18 ] = KEY_VOLUMEDOWN,
1168	[ 0x19 ] = KEY_SHUFFLE,        /* Snapshot */
1169	[ 0x1a ] = KEY_NEXTSONG,
1170	[ 0x1b ] = KEY_TEXT,           /* Time Shift */
1171	[ 0x1c ] = KEY_RADIO,          /* FM Radio */
1172	[ 0x1d ] = KEY_RECORD,
1173	[ 0x1e ] = KEY_PAUSE,
1174};
1175
1176EXPORT_SYMBOL_GPL(ir_codes_pctv_sedna);
1177
1178/* Mark Phalan <phalanm@o2.ie> */
1179IR_KEYTAB_TYPE ir_codes_pv951[IR_KEYTAB_SIZE] = {
1180	[ 0x00 ] = KEY_0,
1181	[ 0x01 ] = KEY_1,
1182	[ 0x02 ] = KEY_2,
1183	[ 0x03 ] = KEY_3,
1184	[ 0x04 ] = KEY_4,
1185	[ 0x05 ] = KEY_5,
1186	[ 0x06 ] = KEY_6,
1187	[ 0x07 ] = KEY_7,
1188	[ 0x08 ] = KEY_8,
1189	[ 0x09 ] = KEY_9,
1190
1191	[ 0x12 ] = KEY_POWER,
1192	[ 0x10 ] = KEY_MUTE,
1193	[ 0x1f ] = KEY_VOLUMEDOWN,
1194	[ 0x1b ] = KEY_VOLUMEUP,
1195	[ 0x1a ] = KEY_CHANNELUP,
1196	[ 0x1e ] = KEY_CHANNELDOWN,
1197	[ 0x0e ] = KEY_PAGEUP,
1198	[ 0x1d ] = KEY_PAGEDOWN,
1199	[ 0x13 ] = KEY_SOUND,
1200
1201	[ 0x18 ] = KEY_KPPLUSMINUS,	/* CH +/- */
1202	[ 0x16 ] = KEY_SUBTITLE,		/* CC */
1203	[ 0x0d ] = KEY_TEXT,		/* TTX */
1204	[ 0x0b ] = KEY_TV,		/* AIR/CBL */
1205	[ 0x11 ] = KEY_PC,		/* PC/TV */
1206	[ 0x17 ] = KEY_OK,		/* CH RTN */
1207	[ 0x19 ] = KEY_MODE, 		/* FUNC */
1208	[ 0x0c ] = KEY_SEARCH, 		/* AUTOSCAN */
1209
1210	/* Not sure what to do with these ones! */
1211	[ 0x0f ] = KEY_SELECT, 		/* SOURCE */
1212	[ 0x0a ] = KEY_KPPLUS,		/* +100 */
1213	[ 0x14 ] = KEY_EQUAL,		/* SYNC */
1214	[ 0x1c ] = KEY_MEDIA,             /* PC/TV */
1215};
1216
1217EXPORT_SYMBOL_GPL(ir_codes_pv951);
1218
1219/* generic RC5 keytable                                          */
1220/* see http://users.pandora.be/nenya/electronics/rc5/codes00.htm */
1221/* used by old (black) Hauppauge remotes                         */
1222IR_KEYTAB_TYPE ir_codes_rc5_tv[IR_KEYTAB_SIZE] = {
1223	/* Keys 0 to 9 */
1224	[ 0x00 ] = KEY_0,
1225	[ 0x01 ] = KEY_1,
1226	[ 0x02 ] = KEY_2,
1227	[ 0x03 ] = KEY_3,
1228	[ 0x04 ] = KEY_4,
1229	[ 0x05 ] = KEY_5,
1230	[ 0x06 ] = KEY_6,
1231	[ 0x07 ] = KEY_7,
1232	[ 0x08 ] = KEY_8,
1233	[ 0x09 ] = KEY_9,
1234
1235	[ 0x0b ] = KEY_CHANNEL,		/* channel / program (japan: 11) */
1236	[ 0x0c ] = KEY_POWER,		/* standby */
1237	[ 0x0d ] = KEY_MUTE,		/* mute / demute */
1238	[ 0x0f ] = KEY_TV,		/* display */
1239	[ 0x10 ] = KEY_VOLUMEUP,
1240	[ 0x11 ] = KEY_VOLUMEDOWN,
1241	[ 0x12 ] = KEY_BRIGHTNESSUP,
1242	[ 0x13 ] = KEY_BRIGHTNESSDOWN,
1243	[ 0x1e ] = KEY_SEARCH,		/* search + */
1244	[ 0x20 ] = KEY_CHANNELUP,	/* channel / program + */
1245	[ 0x21 ] = KEY_CHANNELDOWN,	/* channel / program - */
1246	[ 0x22 ] = KEY_CHANNEL,		/* alt / channel */
1247	[ 0x23 ] = KEY_LANGUAGE,	/* 1st / 2nd language */
1248	[ 0x26 ] = KEY_SLEEP,		/* sleeptimer */
1249	[ 0x2e ] = KEY_MENU,		/* 2nd controls (USA: menu) */
1250	[ 0x30 ] = KEY_PAUSE,
1251	[ 0x32 ] = KEY_REWIND,
1252	[ 0x33 ] = KEY_GOTO,
1253	[ 0x35 ] = KEY_PLAY,
1254	[ 0x36 ] = KEY_STOP,
1255	[ 0x37 ] = KEY_RECORD,		/* recording */
1256	[ 0x3c ] = KEY_TEXT,    	/* teletext submode (Japan: 12) */
1257	[ 0x3d ] = KEY_SUSPEND,		/* system standby */
1258
1259};
1260
1261EXPORT_SYMBOL_GPL(ir_codes_rc5_tv);
1262
1263/* Table for Leadtek Winfast Remote Controls - used by both bttv and cx88 */
1264IR_KEYTAB_TYPE ir_codes_winfast[IR_KEYTAB_SIZE] = {
1265	/* Keys 0 to 9 */
1266	[ 0x12 ] = KEY_0,
1267	[ 0x05 ] = KEY_1,
1268	[ 0x06 ] = KEY_2,
1269	[ 0x07 ] = KEY_3,
1270	[ 0x09 ] = KEY_4,
1271	[ 0x0a ] = KEY_5,
1272	[ 0x0b ] = KEY_6,
1273	[ 0x0d ] = KEY_7,
1274	[ 0x0e ] = KEY_8,
1275	[ 0x0f ] = KEY_9,
1276
1277	[ 0x00 ] = KEY_POWER,
1278	[ 0x1b ] = KEY_AUDIO,           /* Audio Source */
1279	[ 0x02 ] = KEY_TUNER,		/* TV/FM, not on Y0400052 */
1280	[ 0x1e ] = KEY_VIDEO,           /* Video Source */
1281	[ 0x16 ] = KEY_INFO,            /* Display information */
1282	[ 0x04 ] = KEY_VOLUMEUP,
1283	[ 0x08 ] = KEY_VOLUMEDOWN,
1284	[ 0x0c ] = KEY_CHANNELUP,
1285	[ 0x10 ] = KEY_CHANNELDOWN,
1286	[ 0x03 ] = KEY_ZOOM,		/* fullscreen */
1287	[ 0x1f ] = KEY_TEXT,		/* closed caption/teletext */
1288	[ 0x20 ] = KEY_SLEEP,
1289	[ 0x29 ] = KEY_CLEAR,           /* boss key */
1290	[ 0x14 ] = KEY_MUTE,
1291	[ 0x2b ] = KEY_RED,
1292	[ 0x2c ] = KEY_GREEN,
1293	[ 0x2d ] = KEY_YELLOW,
1294	[ 0x2e ] = KEY_BLUE,
1295	[ 0x18 ] = KEY_KPPLUS,		/* fine tune + , not on Y040052 */
1296	[ 0x19 ] = KEY_KPMINUS,		/* fine tune - , not on Y040052 */
1297	[ 0x2a ] = KEY_MEDIA,           /* PIP (Picture in picture */
1298	[ 0x21 ] = KEY_DOT,
1299	[ 0x13 ] = KEY_ENTER,
1300	[ 0x11 ] = KEY_LAST,            /* Recall (last channel */
1301	[ 0x22 ] = KEY_PREVIOUS,
1302	[ 0x23 ] = KEY_PLAYPAUSE,
1303	[ 0x24 ] = KEY_NEXT,
1304	[ 0x25 ] = KEY_ARCHIVE,       /* Time Shifting */
1305	[ 0x26 ] = KEY_STOP,
1306	[ 0x27 ] = KEY_RECORD,
1307	[ 0x28 ] = KEY_SAVE,          /* Screenshot */
1308	[ 0x2f ] = KEY_MENU,
1309	[ 0x30 ] = KEY_CANCEL,
1310	[ 0x31 ] = KEY_CHANNEL,       /* Channel Surf */
1311	[ 0x32 ] = KEY_SUBTITLE,
1312	[ 0x33 ] = KEY_LANGUAGE,
1313	[ 0x34 ] = KEY_REWIND,
1314	[ 0x35 ] = KEY_FASTFORWARD,
1315	[ 0x36 ] = KEY_TV,
1316	[ 0x37 ] = KEY_RADIO,         /* FM */
1317	[ 0x38 ] = KEY_DVD
1318};
1319
1320EXPORT_SYMBOL_GPL(ir_codes_winfast);
1321
1322IR_KEYTAB_TYPE ir_codes_pinnacle_color[IR_KEYTAB_SIZE] = {
1323	[ 0x59 ] = KEY_MUTE,
1324	[ 0x4a ] = KEY_POWER,
1325
1326	[ 0x18 ] = KEY_TEXT,
1327	[ 0x26 ] = KEY_TV,
1328	[ 0x3d ] = KEY_PRINT,
1329
1330	[ 0x48 ] = KEY_RED,
1331	[ 0x04 ] = KEY_GREEN,
1332	[ 0x11 ] = KEY_YELLOW,
1333	[ 0x00 ] = KEY_BLUE,
1334
1335	[ 0x2d ] = KEY_VOLUMEUP,
1336	[ 0x1e ] = KEY_VOLUMEDOWN,
1337
1338	[ 0x49 ] = KEY_MENU,
1339
1340	[ 0x16 ] = KEY_CHANNELUP,
1341	[ 0x17 ] = KEY_CHANNELDOWN,
1342
1343	[ 0x20 ] = KEY_UP,
1344	[ 0x21 ] = KEY_DOWN,
1345	[ 0x22 ] = KEY_LEFT,
1346	[ 0x23 ] = KEY_RIGHT,
1347	[ 0x0d ] = KEY_SELECT,
1348
1349
1350
1351	[ 0x08 ] = KEY_BACK,
1352	[ 0x07 ] = KEY_REFRESH,
1353
1354	[ 0x2f ] = KEY_ZOOM,
1355	[ 0x29 ] = KEY_RECORD,
1356
1357	[ 0x4b ] = KEY_PAUSE,
1358	[ 0x4d ] = KEY_REWIND,
1359	[ 0x2e ] = KEY_PLAY,
1360	[ 0x4e ] = KEY_FORWARD,
1361	[ 0x53 ] = KEY_PREVIOUS,
1362	[ 0x4c ] = KEY_STOP,
1363	[ 0x54 ] = KEY_NEXT,
1364
1365	[ 0x69 ] = KEY_0,
1366	[ 0x6a ] = KEY_1,
1367	[ 0x6b ] = KEY_2,
1368	[ 0x6c ] = KEY_3,
1369	[ 0x6d ] = KEY_4,
1370	[ 0x6e ] = KEY_5,
1371	[ 0x6f ] = KEY_6,
1372	[ 0x70 ] = KEY_7,
1373	[ 0x71 ] = KEY_8,
1374	[ 0x72 ] = KEY_9,
1375
1376	[ 0x74 ] = KEY_CHANNEL,
1377	[ 0x0a ] = KEY_BACKSPACE,
1378};
1379
1380EXPORT_SYMBOL_GPL(ir_codes_pinnacle_color);
1381
1382/* Hauppauge: the newer, gray remotes (seems there are multiple
1383 * slightly different versions), shipped with cx88+ivtv cards.
1384 * almost rc5 coding, but some non-standard keys */
1385IR_KEYTAB_TYPE ir_codes_hauppauge_new[IR_KEYTAB_SIZE] = {
1386	/* Keys 0 to 9 */
1387	[ 0x00 ] = KEY_0,
1388	[ 0x01 ] = KEY_1,
1389	[ 0x02 ] = KEY_2,
1390	[ 0x03 ] = KEY_3,
1391	[ 0x04 ] = KEY_4,
1392	[ 0x05 ] = KEY_5,
1393	[ 0x06 ] = KEY_6,
1394	[ 0x07 ] = KEY_7,
1395	[ 0x08 ] = KEY_8,
1396	[ 0x09 ] = KEY_9,
1397
1398	[ 0x0a ] = KEY_TEXT,      	/* keypad asterisk as well */
1399	[ 0x0b ] = KEY_RED,		/* red button */
1400	[ 0x0c ] = KEY_RADIO,
1401	[ 0x0d ] = KEY_MENU,
1402	[ 0x0e ] = KEY_SUBTITLE,	/* also the # key */
1403	[ 0x0f ] = KEY_MUTE,
1404	[ 0x10 ] = KEY_VOLUMEUP,
1405	[ 0x11 ] = KEY_VOLUMEDOWN,
1406	[ 0x12 ] = KEY_PREVIOUS,	/* previous channel */
1407	[ 0x14 ] = KEY_UP,
1408	[ 0x15 ] = KEY_DOWN,
1409	[ 0x16 ] = KEY_LEFT,
1410	[ 0x17 ] = KEY_RIGHT,
1411	[ 0x18 ] = KEY_VIDEO,		/* Videos */
1412	[ 0x19 ] = KEY_AUDIO,		/* Music */
1413	/* 0x1a: Pictures - presume this means
1414	   "Multimedia Home Platform" -
1415	   no "PICTURES" key in input.h
1416	 */
1417	[ 0x1a ] = KEY_MHP,
1418
1419	[ 0x1b ] = KEY_EPG,		/* Guide */
1420	[ 0x1c ] = KEY_TV,
1421	[ 0x1e ] = KEY_NEXTSONG,	/* skip >| */
1422	[ 0x1f ] = KEY_EXIT,		/* back/exit */
1423	[ 0x20 ] = KEY_CHANNELUP,	/* channel / program + */
1424	[ 0x21 ] = KEY_CHANNELDOWN,	/* channel / program - */
1425	[ 0x22 ] = KEY_CHANNEL,		/* source (old black remote) */
1426	[ 0x24 ] = KEY_PREVIOUSSONG,	/* replay |< */
1427	[ 0x25 ] = KEY_ENTER,		/* OK */
1428	[ 0x26 ] = KEY_SLEEP,		/* minimize (old black remote) */
1429	[ 0x29 ] = KEY_BLUE,		/* blue key */
1430	[ 0x2e ] = KEY_GREEN,		/* green button */
1431	[ 0x30 ] = KEY_PAUSE,		/* pause */
1432	[ 0x32 ] = KEY_REWIND,		/* backward << */
1433	[ 0x34 ] = KEY_FASTFORWARD,	/* forward >> */
1434	[ 0x35 ] = KEY_PLAY,
1435	[ 0x36 ] = KEY_STOP,
1436	[ 0x37 ] = KEY_RECORD,		/* recording */
1437	[ 0x38 ] = KEY_YELLOW,		/* yellow key */
1438	[ 0x3b ] = KEY_SELECT,		/* top right button */
1439	[ 0x3c ] = KEY_ZOOM,		/* full */
1440	[ 0x3d ] = KEY_POWER,		/* system power (green button) */
1441};
1442
1443EXPORT_SYMBOL_GPL(ir_codes_hauppauge_new);
1444
1445IR_KEYTAB_TYPE ir_codes_npgtech[IR_KEYTAB_SIZE] = {
1446	[ 0x1d ] = KEY_SWITCHVIDEOMODE, /* switch inputs */
1447	[ 0x2a ] = KEY_FRONT,
1448
1449	[ 0x3e ] = KEY_1,
1450	[ 0x02 ] = KEY_2,
1451	[ 0x06 ] = KEY_3,
1452	[ 0x0a ] = KEY_4,
1453	[ 0x0e ] = KEY_5,
1454	[ 0x12 ] = KEY_6,
1455	[ 0x16 ] = KEY_7,
1456	[ 0x1a ] = KEY_8,
1457	[ 0x1e ] = KEY_9,
1458	[ 0x3a ] = KEY_0,
1459	[ 0x22 ] = KEY_NUMLOCK,         /* -/-- */
1460	[ 0x20 ] = KEY_REFRESH,
1461
1462	[ 0x03 ] = KEY_BRIGHTNESSDOWN,
1463	[ 0x28 ] = KEY_AUDIO,
1464	[ 0x3c ] = KEY_UP,
1465	[ 0x3f ] = KEY_LEFT,
1466	[ 0x2e ] = KEY_MUTE,
1467	[ 0x3b ] = KEY_RIGHT,
1468	[ 0x00 ] = KEY_DOWN,
1469	[ 0x07 ] = KEY_BRIGHTNESSUP,
1470	[ 0x2c ] = KEY_TEXT,
1471
1472	[ 0x37 ] = KEY_RECORD,
1473	[ 0x17 ] = KEY_PLAY,
1474	[ 0x13 ] = KEY_PAUSE,
1475	[ 0x26 ] = KEY_STOP,
1476	[ 0x18 ] = KEY_FASTFORWARD,
1477	[ 0x14 ] = KEY_REWIND,
1478	[ 0x33 ] = KEY_ZOOM,
1479	[ 0x32 ] = KEY_KEYBOARD,
1480	[ 0x30 ] = KEY_GOTO,            /* Pointing arrow */
1481	[ 0x36 ] = KEY_MACRO,           /* Maximize/Minimize (yellow) */
1482	[ 0x0b ] = KEY_RADIO,
1483	[ 0x10 ] = KEY_POWER,
1484
1485};
1486
1487EXPORT_SYMBOL_GPL(ir_codes_npgtech);
1488
1489/* Norwood Micro (non-Pro) TV Tuner
1490   By Peter Naulls <peter@chocky.org>
1491   Key comments are the functions given in the manual */
1492IR_KEYTAB_TYPE ir_codes_norwood[IR_KEYTAB_SIZE] = {
1493	/* Keys 0 to 9 */
1494	[ 0x20 ] = KEY_0,
1495	[ 0x21 ] = KEY_1,
1496	[ 0x22 ] = KEY_2,
1497	[ 0x23 ] = KEY_3,
1498	[ 0x24 ] = KEY_4,
1499	[ 0x25 ] = KEY_5,
1500	[ 0x26 ] = KEY_6,
1501	[ 0x27 ] = KEY_7,
1502	[ 0x28 ] = KEY_8,
1503	[ 0x29 ] = KEY_9,
1504
1505	[ 0x78 ] = KEY_TUNER,             /* Video Source        */
1506	[ 0x2c ] = KEY_EXIT,              /* Open/Close software */
1507	[ 0x2a ] = KEY_SELECT,            /* 2 Digit Select      */
1508	[ 0x69 ] = KEY_AGAIN,             /* Recall              */
1509
1510	[ 0x32 ] = KEY_BRIGHTNESSUP,      /* Brightness increase */
1511	[ 0x33 ] = KEY_BRIGHTNESSDOWN,    /* Brightness decrease */
1512	[ 0x6b ] = KEY_KPPLUS,            /* (not named >>>>>)   */
1513	[ 0x6c ] = KEY_KPMINUS,           /* (not named <<<<<)   */
1514
1515	[ 0x2d ] = KEY_MUTE,              /* Mute                */
1516	[ 0x30 ] = KEY_VOLUMEUP,          /* Volume up           */
1517	[ 0x31 ] = KEY_VOLUMEDOWN,        /* Volume down         */
1518	[ 0x60 ] = KEY_CHANNELUP,         /* Channel up          */
1519	[ 0x61 ] = KEY_CHANNELDOWN,       /* Channel down        */
1520
1521	[ 0x3f ] = KEY_RECORD,            /* Record              */
1522	[ 0x37 ] = KEY_PLAY,              /* Play                */
1523	[ 0x36 ] = KEY_PAUSE,             /* Pause               */
1524	[ 0x2b ] = KEY_STOP,              /* Stop                */
1525	[ 0x67 ] = KEY_FASTFORWARD,       /* Foward              */
1526	[ 0x66 ] = KEY_REWIND,            /* Rewind              */
1527	[ 0x3e ] = KEY_SEARCH,            /* Auto Scan           */
1528	[ 0x2e ] = KEY_CAMERA,            /* Capture Video       */
1529	[ 0x6d ] = KEY_MENU,              /* Show/Hide Control   */
1530	[ 0x2f ] = KEY_ZOOM,              /* Full Screen         */
1531	[ 0x34 ] = KEY_RADIO,             /* FM                  */
1532	[ 0x65 ] = KEY_POWER,             /* Computer power      */
1533};
1534
1535EXPORT_SYMBOL_GPL(ir_codes_norwood);
1536
1537/* From reading the following remotes:
1538 * Zenith Universal 7 / TV Mode 807 / VCR Mode 837
1539 * Hauppauge (from NOVA-CI-s box product)
1540 * This is a "middle of the road" approach, differences are noted
1541 */
1542IR_KEYTAB_TYPE ir_codes_budget_ci_old[IR_KEYTAB_SIZE] = {
1543	[ 0x00 ] = KEY_0,
1544	[ 0x01 ] = KEY_1,
1545	[ 0x02 ] = KEY_2,
1546	[ 0x03 ] = KEY_3,
1547	[ 0x04 ] = KEY_4,
1548	[ 0x05 ] = KEY_5,
1549	[ 0x06 ] = KEY_6,
1550	[ 0x07 ] = KEY_7,
1551	[ 0x08 ] = KEY_8,
1552	[ 0x09 ] = KEY_9,
1553	[ 0x0a ] = KEY_ENTER,
1554	[ 0x0b ] = KEY_RED,
1555	[ 0x0c ] = KEY_POWER,             /* RADIO on Hauppauge */
1556	[ 0x0d ] = KEY_MUTE,
1557	[ 0x0f ] = KEY_A,                 /* TV on Hauppauge */
1558	[ 0x10 ] = KEY_VOLUMEUP,
1559	[ 0x11 ] = KEY_VOLUMEDOWN,
1560	[ 0x14 ] = KEY_B,
1561	[ 0x1c ] = KEY_UP,
1562	[ 0x1d ] = KEY_DOWN,
1563	[ 0x1e ] = KEY_OPTION,            /* RESERVED on Hauppauge */
1564	[ 0x1f ] = KEY_BREAK,
1565	[ 0x20 ] = KEY_CHANNELUP,
1566	[ 0x21 ] = KEY_CHANNELDOWN,
1567	[ 0x22 ] = KEY_PREVIOUS,          /* Prev. Ch on Zenith, SOURCE on Hauppauge */
1568	[ 0x24 ] = KEY_RESTART,
1569	[ 0x25 ] = KEY_OK,
1570	[ 0x26 ] = KEY_CYCLEWINDOWS,      /* MINIMIZE on Hauppauge */
1571	[ 0x28 ] = KEY_ENTER,             /* VCR mode on Zenith */
1572	[ 0x29 ] = KEY_PAUSE,
1573	[ 0x2b ] = KEY_RIGHT,
1574	[ 0x2c ] = KEY_LEFT,
1575	[ 0x2e ] = KEY_MENU,              /* FULL SCREEN on Hauppauge */
1576	[ 0x30 ] = KEY_SLOW,
1577	[ 0x31 ] = KEY_PREVIOUS,          /* VCR mode on Zenith */
1578	[ 0x32 ] = KEY_REWIND,
1579	[ 0x34 ] = KEY_FASTFORWARD,
1580	[ 0x35 ] = KEY_PLAY,
1581	[ 0x36 ] = KEY_STOP,
1582	[ 0x37 ] = KEY_RECORD,
1583	[ 0x38 ] = KEY_TUNER,             /* TV/VCR on Zenith */
1584	[ 0x3a ] = KEY_C,
1585	[ 0x3c ] = KEY_EXIT,
1586	[ 0x3d ] = KEY_POWER2,
1587	[ 0x3e ] = KEY_TUNER,
1588};
1589
1590EXPORT_SYMBOL_GPL(ir_codes_budget_ci_old);
1591
1592/*
1593 * Marc Fargas <telenieko@telenieko.com>
1594 * this is the remote control that comes with the asus p7131
1595 * which has a label saying is "Model PC-39"
1596 */
1597IR_KEYTAB_TYPE ir_codes_asus_pc39[IR_KEYTAB_SIZE] = {
1598	/* Keys 0 to 9 */
1599	[ 0x15 ] = KEY_0,
1600	[ 0x29 ] = KEY_1,
1601	[ 0x2d ] = KEY_2,
1602	[ 0x2b ] = KEY_3,
1603	[ 0x09 ] = KEY_4,
1604	[ 0x0d ] = KEY_5,
1605	[ 0x0b ] = KEY_6,
1606	[ 0x31 ] = KEY_7,
1607	[ 0x35 ] = KEY_8,
1608	[ 0x33 ] = KEY_9,
1609
1610	[ 0x3e ] = KEY_RADIO,		/* radio */
1611	[ 0x03 ] = KEY_MENU,		/* dvd/menu */
1612	[ 0x2a ] = KEY_VOLUMEUP,
1613	[ 0x19 ] = KEY_VOLUMEDOWN,
1614	[ 0x37 ] = KEY_UP,
1615	[ 0x3b ] = KEY_DOWN,
1616	[ 0x27 ] = KEY_LEFT,
1617	[ 0x2f ] = KEY_RIGHT,
1618	[ 0x25 ] = KEY_VIDEO,		/* video */
1619	[ 0x39 ] = KEY_AUDIO,		/* music */
1620
1621	[ 0x21 ] = KEY_TV,		/* tv */
1622	[ 0x1d ] = KEY_EXIT,		/* back */
1623	[ 0x0a ] = KEY_CHANNELUP,	/* channel / program + */
1624	[ 0x1b ] = KEY_CHANNELDOWN,	/* channel / program - */
1625	[ 0x1a ] = KEY_ENTER,		/* enter */
1626
1627	[ 0x06 ] = KEY_PAUSE,		/* play/pause */
1628	[ 0x1e ] = KEY_PREVIOUS,	/* rew */
1629	[ 0x26 ] = KEY_NEXT,		/* forward */
1630	[ 0x0e ] = KEY_REWIND,		/* backward << */
1631	[ 0x3a ] = KEY_FASTFORWARD,	/* forward >> */
1632	[ 0x36 ] = KEY_STOP,
1633	[ 0x2e ] = KEY_RECORD,		/* recording */
1634	[ 0x16 ] = KEY_POWER,		/* the button that reads "close" */
1635
1636	[ 0x11 ] = KEY_ZOOM,		/* full screen */
1637	[ 0x13 ] = KEY_MACRO,		/* recall */
1638	[ 0x23 ] = KEY_HOME,		/* home */
1639	[ 0x05 ] = KEY_PVR,		/* picture */
1640	[ 0x3d ] = KEY_MUTE,		/* mute */
1641	[ 0x01 ] = KEY_DVD,		/* dvd */
1642};
1643
1644EXPORT_SYMBOL_GPL(ir_codes_asus_pc39);
1645
1646
1647/* Encore ENLTV-FM  - black plastic, white front cover with white glowing buttons
1648    Juan Pablo Sormani <sorman@gmail.com> */
1649IR_KEYTAB_TYPE ir_codes_encore_enltv[IR_KEYTAB_SIZE] = {
1650
1651	/* Power button does nothing, neither in Windows app,
1652	 although it sends data (used for BIOS wakeup?) */
1653	[ 0x0d ] = KEY_MUTE,
1654
1655	[ 0x1e ] = KEY_TV,
1656	[ 0x00 ] = KEY_VIDEO,
1657	[ 0x01 ] = KEY_AUDIO,		/* music */
1658	[ 0x02 ] = KEY_MHP,		/* picture */
1659
1660	[ 0x1f ] = KEY_1,
1661	[ 0x03 ] = KEY_2,
1662	[ 0x04 ] = KEY_3,
1663	[ 0x05 ] = KEY_4,
1664	[ 0x1c ] = KEY_5,
1665	[ 0x06 ] = KEY_6,
1666	[ 0x07 ] = KEY_7,
1667	[ 0x08 ] = KEY_8,
1668	[ 0x1d ] = KEY_9,
1669	[ 0x0a ] = KEY_0,
1670
1671	[ 0x09 ] = KEY_LIST,        /* -/-- */
1672	[ 0x0b ] = KEY_LAST,        /* recall */
1673
1674	[ 0x14 ] = KEY_HOME,		/* win start menu */
1675	[ 0x15 ] = KEY_EXIT,		/* exit */
1676	[ 0x16 ] = KEY_UP,
1677	[ 0x12 ] = KEY_DOWN,
1678	[ 0x0c ] = KEY_RIGHT,
1679	[ 0x17 ] = KEY_LEFT,
1680
1681	[ 0x18 ] = KEY_ENTER,		/* OK */
1682
1683	[ 0x0e ] = KEY_ESC,
1684	[ 0x13 ] = KEY_D,		/* desktop */
1685	[ 0x11 ] = KEY_TAB,
1686	[ 0x19 ] = KEY_SWITCHVIDEOMODE,	/* switch */
1687
1688	[ 0x1a ] = KEY_MENU,
1689	[ 0x1b ] = KEY_ZOOM,		/* fullscreen */
1690	[ 0x44 ] = KEY_TIME,		/* time shift */
1691	[ 0x40 ] = KEY_MODE,		/* source */
1692
1693	[ 0x5a ] = KEY_RECORD,
1694	[ 0x42 ] = KEY_PLAY,		/* play/pause */
1695	[ 0x45 ] = KEY_STOP,
1696	[ 0x43 ] = KEY_CAMERA,		/* camera icon */
1697
1698	[ 0x48 ] = KEY_REWIND,
1699	[ 0x4a ] = KEY_FASTFORWARD,
1700	[ 0x49 ] = KEY_PREVIOUS,
1701	[ 0x4b ] = KEY_NEXT,
1702
1703	[ 0x4c ] = KEY_FAVORITES,	/* tv wall */
1704	[ 0x4d ] = KEY_SOUND,		/* DVD sound */
1705	[ 0x4e ] = KEY_LANGUAGE,	/* DVD lang */
1706	[ 0x4f ] = KEY_TEXT,		/* DVD text */
1707
1708	[ 0x50 ] = KEY_SLEEP,		/* shutdown */
1709	[ 0x51 ] = KEY_MODE,		/* stereo > main */
1710	[ 0x52 ] = KEY_SELECT,		/* stereo > sap */
1711	[ 0x53 ] = KEY_PROG1,		/* teletext */
1712
1713
1714	[ 0x59 ] = KEY_RED,		/* AP1 */
1715	[ 0x41 ] = KEY_GREEN,		/* AP2 */
1716	[ 0x47 ] = KEY_YELLOW,		/* AP3 */
1717	[ 0x57 ] = KEY_BLUE,		/* AP4 */
1718
1719
1720};
1721
1722EXPORT_SYMBOL_GPL(ir_codes_encore_enltv);
1723
1724/* for the Technotrend 1500 bundled remotes (grey and black): */
1725IR_KEYTAB_TYPE ir_codes_tt_1500[IR_KEYTAB_SIZE] = {
1726	[ 0x01 ] = KEY_POWER,
1727	[ 0x02 ] = KEY_SHUFFLE,	/* ? double-arrow key */
1728	[ 0x03 ] = KEY_1,
1729	[ 0x04 ] = KEY_2,
1730	[ 0x05 ] = KEY_3,
1731	[ 0x06 ] = KEY_4,
1732	[ 0x07 ] = KEY_5,
1733	[ 0x08 ] = KEY_6,
1734	[ 0x09 ] = KEY_7,
1735	[ 0x0a ] = KEY_8,
1736	[ 0x0b ] = KEY_9,
1737	[ 0x0c ] = KEY_0,
1738	[ 0x0d ] = KEY_UP,
1739	[ 0x0e ] = KEY_LEFT,
1740	[ 0x0f ] = KEY_OK,
1741	[ 0x10 ] = KEY_RIGHT,
1742	[ 0x11 ] = KEY_DOWN,
1743	[ 0x12 ] = KEY_INFO,
1744	[ 0x13 ] = KEY_EXIT,
1745	[ 0x14 ] = KEY_RED,
1746	[ 0x15 ] = KEY_GREEN,
1747	[ 0x16 ] = KEY_YELLOW,
1748	[ 0x17 ] = KEY_BLUE,
1749	[ 0x18 ] = KEY_MUTE,
1750	[ 0x19 ] = KEY_TEXT,
1751	[ 0x1a ] = KEY_MODE,	/* ? TV/Radio */
1752	[ 0x21 ] = KEY_OPTION,
1753	[ 0x22 ] = KEY_EPG,
1754	[ 0x23 ] = KEY_CHANNELUP,
1755	[ 0x24 ] = KEY_CHANNELDOWN,
1756	[ 0x25 ] = KEY_VOLUMEUP,
1757	[ 0x26 ] = KEY_VOLUMEDOWN,
1758	[ 0x27 ] = KEY_SETUP,
1759	[ 0x3a ] = KEY_RECORD, /* these keys are only in the black remote */
1760	[ 0x3b ] = KEY_PLAY,
1761	[ 0x3c ] = KEY_STOP,
1762	[ 0x3d ] = KEY_REWIND,
1763	[ 0x3e ] = KEY_PAUSE,
1764	[ 0x3f ] = KEY_FORWARD,
1765};
1766
1767EXPORT_SYMBOL_GPL(ir_codes_tt_1500);
1768