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