e8af24f9d2e3a7355c2fed8f32eda52789379104
[pandora-kernel.git] / drivers / media / common / ir-keymaps.c
1 /*
2     Keytables for supported remote controls, used on drivers/media
3     devices.
4
5     This program is free software; you can redistribute it and/or modify
6     it under the terms of the GNU General Public License as published by
7     the Free Software Foundation; either version 2 of the License, or
8     (at your option) any later version.
9
10     This program is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13     GNU General Public License for more details.
14
15     You should have received a copy of the GNU General Public License
16     along with this program; if not, write to the Free Software
17     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18 */
19
20 /*
21  * NOTICE FOR DEVELOPERS:
22  *   The IR mappings should be as close as possible to what's
23  *   specified at:
24  *      http://linuxtv.org/wiki/index.php/Remote_Controllers
25  */
26 #include <linux/module.h>
27
28 #include <linux/input.h>
29 #include <media/ir-common.h>
30
31 /* empty keytable, can be used as placeholder for not-yet created keytables */
32 IR_KEYTAB_TYPE ir_codes_empty[IR_KEYTAB_SIZE] = {
33         [0x2a] = KEY_COFFEE,
34 };
35 EXPORT_SYMBOL_GPL(ir_codes_empty);
36
37 /* Michal Majchrowicz <mmajchrowicz@gmail.com> */
38 IR_KEYTAB_TYPE ir_codes_proteus_2309[IR_KEYTAB_SIZE] = {
39         /* numeric */
40         [0x00] = KEY_0,
41         [0x01] = KEY_1,
42         [0x02] = KEY_2,
43         [0x03] = KEY_3,
44         [0x04] = KEY_4,
45         [0x05] = KEY_5,
46         [0x06] = KEY_6,
47         [0x07] = KEY_7,
48         [0x08] = KEY_8,
49         [0x09] = KEY_9,
50
51         [0x5c] = KEY_POWER,     /* power       */
52         [0x20] = KEY_ZOOM,      /* full screen */
53         [0x0f] = KEY_BACKSPACE, /* recall      */
54         [0x1b] = KEY_ENTER,     /* mute        */
55         [0x41] = KEY_RECORD,    /* record      */
56         [0x43] = KEY_STOP,      /* stop        */
57         [0x16] = KEY_S,
58         [0x1a] = KEY_POWER2,    /* off         */
59         [0x2e] = KEY_RED,
60         [0x1f] = KEY_DOWN,      /* channel -   */
61         [0x1c] = KEY_UP,        /* channel +   */
62         [0x10] = KEY_LEFT,      /* volume -    */
63         [0x1e] = KEY_RIGHT,     /* volume +    */
64         [0x14] = KEY_F1,
65 };
66 EXPORT_SYMBOL_GPL(ir_codes_proteus_2309);
67
68 /* Matt Jesson <dvb@jesson.eclipse.co.uk */
69 IR_KEYTAB_TYPE ir_codes_avermedia_dvbt[IR_KEYTAB_SIZE] = {
70         [0x28] = KEY_0,                 /* '0' / 'enter' */
71         [0x22] = KEY_1,                 /* '1' */
72         [0x12] = KEY_2,                 /* '2' / 'up arrow' */
73         [0x32] = KEY_3,                 /* '3' */
74         [0x24] = KEY_4,                 /* '4' / 'left arrow' */
75         [0x14] = KEY_5,                 /* '5' */
76         [0x34] = KEY_6,                 /* '6' / 'right arrow' */
77         [0x26] = KEY_7,                 /* '7' */
78         [0x16] = KEY_8,                 /* '8' / 'down arrow' */
79         [0x36] = KEY_9,                 /* '9' */
80
81         [0x20] = KEY_LIST,              /* 'source' */
82         [0x10] = KEY_TEXT,              /* 'teletext' */
83         [0x00] = KEY_POWER,             /* 'power' */
84         [0x04] = KEY_AUDIO,             /* 'audio' */
85         [0x06] = KEY_ZOOM,              /* 'full screen' */
86         [0x18] = KEY_VIDEO,             /* 'display' */
87         [0x38] = KEY_SEARCH,            /* 'loop' */
88         [0x08] = KEY_INFO,              /* 'preview' */
89         [0x2a] = KEY_REWIND,            /* 'backward <<' */
90         [0x1a] = KEY_FASTFORWARD,       /* 'forward >>' */
91         [0x3a] = KEY_RECORD,            /* 'capture' */
92         [0x0a] = KEY_MUTE,              /* 'mute' */
93         [0x2c] = KEY_RECORD,            /* 'record' */
94         [0x1c] = KEY_PAUSE,             /* 'pause' */
95         [0x3c] = KEY_STOP,              /* 'stop' */
96         [0x0c] = KEY_PLAY,              /* 'play' */
97         [0x2e] = KEY_RED,               /* 'red' */
98         [0x01] = KEY_BLUE,              /* 'blue' / 'cancel' */
99         [0x0e] = KEY_YELLOW,            /* 'yellow' / 'ok' */
100         [0x21] = KEY_GREEN,             /* 'green' */
101         [0x11] = KEY_CHANNELDOWN,       /* 'channel -' */
102         [0x31] = KEY_CHANNELUP,         /* 'channel +' */
103         [0x1e] = KEY_VOLUMEDOWN,        /* 'volume -' */
104         [0x3e] = KEY_VOLUMEUP,          /* 'volume +' */
105 };
106 EXPORT_SYMBOL_GPL(ir_codes_avermedia_dvbt);
107
108 /* Mauro Carvalho Chehab <mchehab@infradead.org> */
109 IR_KEYTAB_TYPE ir_codes_avermedia_m135a[IR_KEYTAB_SIZE] = {
110         [0x00] = KEY_POWER2,
111         [0x2e] = KEY_DOT,               /* '.' */
112         [0x01] = KEY_MODE,              /* TV/FM */
113
114         [0x05] = KEY_1,
115         [0x06] = KEY_2,
116         [0x07] = KEY_3,
117         [0x09] = KEY_4,
118         [0x0a] = KEY_5,
119         [0x0b] = KEY_6,
120         [0x0d] = KEY_7,
121         [0x0e] = KEY_8,
122         [0x0f] = KEY_9,
123         [0x11] = KEY_0,
124
125         [0x13] = KEY_RIGHT,             /* -> */
126         [0x12] = KEY_LEFT,              /* <- */
127
128         [0x17] = KEY_SLEEP,             /* Capturar Imagem */
129         [0x10] = KEY_SHUFFLE,           /* Amostra */
130
131         /* FIXME: The keys bellow aren't ok */
132
133         [0x43] = KEY_CHANNELUP,
134         [0x42] = KEY_CHANNELDOWN,
135         [0x1f] = KEY_VOLUMEUP,
136         [0x1e] = KEY_VOLUMEDOWN,
137         [0x0c] = KEY_ENTER,
138
139         [0x14] = KEY_MUTE,
140         [0x08] = KEY_AUDIO,
141
142         [0x03] = KEY_TEXT,
143         [0x04] = KEY_EPG,
144         [0x2b] = KEY_TV2,               /* TV2 */
145
146         [0x1d] = KEY_RED,
147         [0x1c] = KEY_YELLOW,
148         [0x41] = KEY_GREEN,
149         [0x40] = KEY_BLUE,
150
151         [0x1a] = KEY_PLAYPAUSE,
152         [0x19] = KEY_RECORD,
153         [0x18] = KEY_PLAY,
154         [0x1b] = KEY_STOP,
155 };
156 EXPORT_SYMBOL_GPL(ir_codes_avermedia_m135a);
157
158 /* Oldrich Jedlicka <oldium.pro@seznam.cz> */
159 IR_KEYTAB_TYPE ir_codes_avermedia_cardbus[IR_KEYTAB_SIZE] = {
160         [0x00] = KEY_POWER,
161         [0x01] = KEY_TUNER,             /* TV/FM */
162         [0x03] = KEY_TEXT,              /* Teletext */
163         [0x04] = KEY_EPG,
164         [0x05] = KEY_1,
165         [0x06] = KEY_2,
166         [0x07] = KEY_3,
167         [0x08] = KEY_AUDIO,
168         [0x09] = KEY_4,
169         [0x0a] = KEY_5,
170         [0x0b] = KEY_6,
171         [0x0c] = KEY_ZOOM,              /* Full screen */
172         [0x0d] = KEY_7,
173         [0x0e] = KEY_8,
174         [0x0f] = KEY_9,
175         [0x10] = KEY_PAGEUP,            /* 16-CH PREV */
176         [0x11] = KEY_0,
177         [0x12] = KEY_INFO,
178         [0x13] = KEY_AGAIN,             /* CH RTN - channel return */
179         [0x14] = KEY_MUTE,
180         [0x15] = KEY_EDIT,              /* Autoscan */
181         [0x17] = KEY_SAVE,              /* Screenshot */
182         [0x18] = KEY_PLAYPAUSE,
183         [0x19] = KEY_RECORD,
184         [0x1a] = KEY_PLAY,
185         [0x1b] = KEY_STOP,
186         [0x1c] = KEY_FASTFORWARD,
187         [0x1d] = KEY_REWIND,
188         [0x1e] = KEY_VOLUMEDOWN,
189         [0x1f] = KEY_VOLUMEUP,
190         [0x22] = KEY_SLEEP,             /* Sleep */
191         [0x23] = KEY_ZOOM,              /* Aspect */
192         [0x26] = KEY_SCREEN,            /* Pos */
193         [0x27] = KEY_ANGLE,             /* Size */
194         [0x28] = KEY_SELECT,            /* Select */
195         [0x29] = KEY_BLUE,              /* Blue/Picture */
196         [0x2a] = KEY_BACKSPACE,         /* Back */
197         [0x2b] = KEY_MEDIA,             /* PIP (Picture-in-picture) */
198         [0x2c] = KEY_DOWN,
199         [0x2e] = KEY_DOT,
200         [0x2f] = KEY_TV,                /* Live TV */
201         [0x32] = KEY_LEFT,
202         [0x33] = KEY_CLEAR,             /* Clear */
203         [0x35] = KEY_RED,               /* Red/TV */
204         [0x36] = KEY_UP,
205         [0x37] = KEY_HOME,              /* Home */
206         [0x39] = KEY_GREEN,             /* Green/Video */
207         [0x3d] = KEY_YELLOW,            /* Yellow/Music */
208         [0x3e] = KEY_OK,                /* Ok */
209         [0x3f] = KEY_RIGHT,
210         [0x40] = KEY_NEXT,              /* Next */
211         [0x41] = KEY_PREVIOUS,          /* Previous */
212         [0x42] = KEY_CHANNELDOWN,       /* Channel down */
213         [0x43] = KEY_CHANNELUP,         /* Channel up */
214 };
215 EXPORT_SYMBOL_GPL(ir_codes_avermedia_cardbus);
216
217 /* Attila Kondoros <attila.kondoros@chello.hu> */
218 IR_KEYTAB_TYPE ir_codes_apac_viewcomp[IR_KEYTAB_SIZE] = {
219
220         [0x01] = KEY_1,
221         [0x02] = KEY_2,
222         [0x03] = KEY_3,
223         [0x04] = KEY_4,
224         [0x05] = KEY_5,
225         [0x06] = KEY_6,
226         [0x07] = KEY_7,
227         [0x08] = KEY_8,
228         [0x09] = KEY_9,
229         [0x00] = KEY_0,
230         [0x17] = KEY_LAST,              /* +100 */
231         [0x0a] = KEY_LIST,              /* recall */
232
233
234         [0x1c] = KEY_TUNER,             /* TV/FM */
235         [0x15] = KEY_SEARCH,            /* scan */
236         [0x12] = KEY_POWER,             /* power */
237         [0x1f] = KEY_VOLUMEDOWN,        /* vol up */
238         [0x1b] = KEY_VOLUMEUP,          /* vol down */
239         [0x1e] = KEY_CHANNELDOWN,       /* chn up */
240         [0x1a] = KEY_CHANNELUP,         /* chn down */
241
242         [0x11] = KEY_VIDEO,             /* video */
243         [0x0f] = KEY_ZOOM,              /* full screen */
244         [0x13] = KEY_MUTE,              /* mute/unmute */
245         [0x10] = KEY_TEXT,              /* min */
246
247         [0x0d] = KEY_STOP,              /* freeze */
248         [0x0e] = KEY_RECORD,            /* record */
249         [0x1d] = KEY_PLAYPAUSE,         /* stop */
250         [0x19] = KEY_PLAY,              /* play */
251
252         [0x16] = KEY_GOTO,              /* osd */
253         [0x14] = KEY_REFRESH,           /* default */
254         [0x0c] = KEY_KPPLUS,            /* fine tune >>>> */
255         [0x18] = KEY_KPMINUS,           /* fine tune <<<< */
256 };
257 EXPORT_SYMBOL_GPL(ir_codes_apac_viewcomp);
258
259 /* ---------------------------------------------------------------------- */
260
261 IR_KEYTAB_TYPE ir_codes_pixelview[IR_KEYTAB_SIZE] = {
262
263         [0x1e] = KEY_POWER,     /* power */
264         [0x07] = KEY_MEDIA,     /* source */
265         [0x1c] = KEY_SEARCH,    /* scan */
266
267
268         [0x03] = KEY_TUNER,             /* TV/FM */
269
270         [0x00] = KEY_RECORD,
271         [0x08] = KEY_STOP,
272         [0x11] = KEY_PLAY,
273
274         [0x1a] = KEY_PLAYPAUSE,         /* freeze */
275         [0x19] = KEY_ZOOM,              /* zoom */
276         [0x0f] = KEY_TEXT,              /* min */
277
278         [0x01] = KEY_1,
279         [0x0b] = KEY_2,
280         [0x1b] = KEY_3,
281         [0x05] = KEY_4,
282         [0x09] = KEY_5,
283         [0x15] = KEY_6,
284         [0x06] = KEY_7,
285         [0x0a] = KEY_8,
286         [0x12] = KEY_9,
287         [0x02] = KEY_0,
288         [0x10] = KEY_LAST,              /* +100 */
289         [0x13] = KEY_LIST,              /* recall */
290
291         [0x1f] = KEY_CHANNELUP,         /* chn down */
292         [0x17] = KEY_CHANNELDOWN,       /* chn up */
293         [0x16] = KEY_VOLUMEUP,          /* vol down */
294         [0x14] = KEY_VOLUMEDOWN,        /* vol up */
295
296         [0x04] = KEY_KPMINUS,           /* <<< */
297         [0x0e] = KEY_SETUP,             /* function */
298         [0x0c] = KEY_KPPLUS,            /* >>> */
299
300         [0x0d] = KEY_GOTO,              /* mts */
301         [0x1d] = KEY_REFRESH,           /* reset */
302         [0x18] = KEY_MUTE,              /* mute/unmute */
303 };
304 EXPORT_SYMBOL_GPL(ir_codes_pixelview);
305
306 /*
307    Mauro Carvalho Chehab <mchehab@infradead.org>
308    present on PV MPEG 8000GT
309  */
310 IR_KEYTAB_TYPE ir_codes_pixelview_new[IR_KEYTAB_SIZE] = {
311         [0x3c] = KEY_TIME,              /* Timeshift */
312         [0x12] = KEY_POWER,
313
314         [0x3d] = KEY_1,
315         [0x38] = KEY_2,
316         [0x18] = KEY_3,
317         [0x35] = KEY_4,
318         [0x39] = KEY_5,
319         [0x15] = KEY_6,
320         [0x36] = KEY_7,
321         [0x3a] = KEY_8,
322         [0x1e] = KEY_9,
323         [0x3e] = KEY_0,
324
325         [0x1c] = KEY_AGAIN,             /* LOOP */
326         [0x3f] = KEY_MEDIA,             /* Source */
327         [0x1f] = KEY_LAST,              /* +100 */
328         [0x1b] = KEY_MUTE,
329
330         [0x17] = KEY_CHANNELDOWN,
331         [0x16] = KEY_CHANNELUP,
332         [0x10] = KEY_VOLUMEUP,
333         [0x14] = KEY_VOLUMEDOWN,
334         [0x13] = KEY_ZOOM,
335
336         [0x19] = KEY_SHUFFLE,           /* SNAPSHOT */
337         [0x1a] = KEY_SEARCH,            /* scan */
338
339         [0x37] = KEY_REWIND,            /* << */
340         [0x32] = KEY_RECORD,            /* o (red) */
341         [0x33] = KEY_FORWARD,           /* >> */
342         [0x11] = KEY_STOP,              /* square */
343         [0x3b] = KEY_PLAY,              /* > */
344         [0x30] = KEY_PLAYPAUSE,         /* || */
345
346         [0x31] = KEY_TV,
347         [0x34] = KEY_RADIO,
348 };
349 EXPORT_SYMBOL_GPL(ir_codes_pixelview_new);
350
351 IR_KEYTAB_TYPE ir_codes_nebula[IR_KEYTAB_SIZE] = {
352         [0x00] = KEY_0,
353         [0x01] = KEY_1,
354         [0x02] = KEY_2,
355         [0x03] = KEY_3,
356         [0x04] = KEY_4,
357         [0x05] = KEY_5,
358         [0x06] = KEY_6,
359         [0x07] = KEY_7,
360         [0x08] = KEY_8,
361         [0x09] = KEY_9,
362         [0x0a] = KEY_TV,
363         [0x0b] = KEY_AUX,
364         [0x0c] = KEY_DVD,
365         [0x0d] = KEY_POWER,
366         [0x0e] = KEY_MHP,       /* labelled 'Picture' */
367         [0x0f] = KEY_AUDIO,
368         [0x10] = KEY_INFO,
369         [0x11] = KEY_F13,       /* 16:9 */
370         [0x12] = KEY_F14,       /* 14:9 */
371         [0x13] = KEY_EPG,
372         [0x14] = KEY_EXIT,
373         [0x15] = KEY_MENU,
374         [0x16] = KEY_UP,
375         [0x17] = KEY_DOWN,
376         [0x18] = KEY_LEFT,
377         [0x19] = KEY_RIGHT,
378         [0x1a] = KEY_ENTER,
379         [0x1b] = KEY_CHANNELUP,
380         [0x1c] = KEY_CHANNELDOWN,
381         [0x1d] = KEY_VOLUMEUP,
382         [0x1e] = KEY_VOLUMEDOWN,
383         [0x1f] = KEY_RED,
384         [0x20] = KEY_GREEN,
385         [0x21] = KEY_YELLOW,
386         [0x22] = KEY_BLUE,
387         [0x23] = KEY_SUBTITLE,
388         [0x24] = KEY_F15,       /* AD */
389         [0x25] = KEY_TEXT,
390         [0x26] = KEY_MUTE,
391         [0x27] = KEY_REWIND,
392         [0x28] = KEY_STOP,
393         [0x29] = KEY_PLAY,
394         [0x2a] = KEY_FASTFORWARD,
395         [0x2b] = KEY_F16,       /* chapter */
396         [0x2c] = KEY_PAUSE,
397         [0x2d] = KEY_PLAY,
398         [0x2e] = KEY_RECORD,
399         [0x2f] = KEY_F17,       /* picture in picture */
400         [0x30] = KEY_KPPLUS,    /* zoom in */
401         [0x31] = KEY_KPMINUS,   /* zoom out */
402         [0x32] = KEY_F18,       /* capture */
403         [0x33] = KEY_F19,       /* web */
404         [0x34] = KEY_EMAIL,
405         [0x35] = KEY_PHONE,
406         [0x36] = KEY_PC,
407 };
408 EXPORT_SYMBOL_GPL(ir_codes_nebula);
409
410 /* DigitalNow DNTV Live DVB-T Remote */
411 IR_KEYTAB_TYPE ir_codes_dntv_live_dvb_t[IR_KEYTAB_SIZE] = {
412         [0x00] = KEY_ESC,               /* 'go up a level?' */
413         /* Keys 0 to 9 */
414         [0x0a] = KEY_0,
415         [0x01] = KEY_1,
416         [0x02] = KEY_2,
417         [0x03] = KEY_3,
418         [0x04] = KEY_4,
419         [0x05] = KEY_5,
420         [0x06] = KEY_6,
421         [0x07] = KEY_7,
422         [0x08] = KEY_8,
423         [0x09] = KEY_9,
424
425         [0x0b] = KEY_TUNER,             /* tv/fm */
426         [0x0c] = KEY_SEARCH,            /* scan */
427         [0x0d] = KEY_STOP,
428         [0x0e] = KEY_PAUSE,
429         [0x0f] = KEY_LIST,              /* source */
430
431         [0x10] = KEY_MUTE,
432         [0x11] = KEY_REWIND,            /* backward << */
433         [0x12] = KEY_POWER,
434         [0x13] = KEY_CAMERA,            /* snap */
435         [0x14] = KEY_AUDIO,             /* stereo */
436         [0x15] = KEY_CLEAR,             /* reset */
437         [0x16] = KEY_PLAY,
438         [0x17] = KEY_ENTER,
439         [0x18] = KEY_ZOOM,              /* full screen */
440         [0x19] = KEY_FASTFORWARD,       /* forward >> */
441         [0x1a] = KEY_CHANNELUP,
442         [0x1b] = KEY_VOLUMEUP,
443         [0x1c] = KEY_INFO,              /* preview */
444         [0x1d] = KEY_RECORD,            /* record */
445         [0x1e] = KEY_CHANNELDOWN,
446         [0x1f] = KEY_VOLUMEDOWN,
447 };
448 EXPORT_SYMBOL_GPL(ir_codes_dntv_live_dvb_t);
449
450 /* ---------------------------------------------------------------------- */
451
452 /* IO-DATA BCTV7E Remote */
453 IR_KEYTAB_TYPE ir_codes_iodata_bctv7e[IR_KEYTAB_SIZE] = {
454         [0x40] = KEY_TV,
455         [0x20] = KEY_RADIO,             /* FM */
456         [0x60] = KEY_EPG,
457         [0x00] = KEY_POWER,
458
459         /* Keys 0 to 9 */
460         [0x44] = KEY_0,                 /* 10 */
461         [0x50] = KEY_1,
462         [0x30] = KEY_2,
463         [0x70] = KEY_3,
464         [0x48] = KEY_4,
465         [0x28] = KEY_5,
466         [0x68] = KEY_6,
467         [0x58] = KEY_7,
468         [0x38] = KEY_8,
469         [0x78] = KEY_9,
470
471         [0x10] = KEY_L,                 /* Live */
472         [0x08] = KEY_TIME,              /* Time Shift */
473
474         [0x18] = KEY_PLAYPAUSE,         /* Play */
475
476         [0x24] = KEY_ENTER,             /* 11 */
477         [0x64] = KEY_ESC,               /* 12 */
478         [0x04] = KEY_M,                 /* Multi */
479
480         [0x54] = KEY_VIDEO,
481         [0x34] = KEY_CHANNELUP,
482         [0x74] = KEY_VOLUMEUP,
483         [0x14] = KEY_MUTE,
484
485         [0x4c] = KEY_VCR,               /* SVIDEO */
486         [0x2c] = KEY_CHANNELDOWN,
487         [0x6c] = KEY_VOLUMEDOWN,
488         [0x0c] = KEY_ZOOM,
489
490         [0x5c] = KEY_PAUSE,
491         [0x3c] = KEY_RED,               /* || (red) */
492         [0x7c] = KEY_RECORD,            /* recording */
493         [0x1c] = KEY_STOP,
494
495         [0x41] = KEY_REWIND,            /* backward << */
496         [0x21] = KEY_PLAY,
497         [0x61] = KEY_FASTFORWARD,       /* forward >> */
498         [0x01] = KEY_NEXT,              /* skip >| */
499 };
500 EXPORT_SYMBOL_GPL(ir_codes_iodata_bctv7e);
501
502 /* ---------------------------------------------------------------------- */
503
504 /* ADS Tech Instant TV DVB-T PCI Remote */
505 IR_KEYTAB_TYPE ir_codes_adstech_dvb_t_pci[IR_KEYTAB_SIZE] = {
506         /* Keys 0 to 9 */
507         [0x4d] = KEY_0,
508         [0x57] = KEY_1,
509         [0x4f] = KEY_2,
510         [0x53] = KEY_3,
511         [0x56] = KEY_4,
512         [0x4e] = KEY_5,
513         [0x5e] = KEY_6,
514         [0x54] = KEY_7,
515         [0x4c] = KEY_8,
516         [0x5c] = KEY_9,
517
518         [0x5b] = KEY_POWER,
519         [0x5f] = KEY_MUTE,
520         [0x55] = KEY_GOTO,
521         [0x5d] = KEY_SEARCH,
522         [0x17] = KEY_EPG,               /* Guide */
523         [0x1f] = KEY_MENU,
524         [0x0f] = KEY_UP,
525         [0x46] = KEY_DOWN,
526         [0x16] = KEY_LEFT,
527         [0x1e] = KEY_RIGHT,
528         [0x0e] = KEY_SELECT,            /* Enter */
529         [0x5a] = KEY_INFO,
530         [0x52] = KEY_EXIT,
531         [0x59] = KEY_PREVIOUS,
532         [0x51] = KEY_NEXT,
533         [0x58] = KEY_REWIND,
534         [0x50] = KEY_FORWARD,
535         [0x44] = KEY_PLAYPAUSE,
536         [0x07] = KEY_STOP,
537         [0x1b] = KEY_RECORD,
538         [0x13] = KEY_TUNER,             /* Live */
539         [0x0a] = KEY_A,
540         [0x12] = KEY_B,
541         [0x03] = KEY_PROG1,             /* 1 */
542         [0x01] = KEY_PROG2,             /* 2 */
543         [0x00] = KEY_PROG3,             /* 3 */
544         [0x06] = KEY_DVD,
545         [0x48] = KEY_AUX,               /* Photo */
546         [0x40] = KEY_VIDEO,
547         [0x19] = KEY_AUDIO,             /* Music */
548         [0x0b] = KEY_CHANNELUP,
549         [0x08] = KEY_CHANNELDOWN,
550         [0x15] = KEY_VOLUMEUP,
551         [0x1c] = KEY_VOLUMEDOWN,
552 };
553 EXPORT_SYMBOL_GPL(ir_codes_adstech_dvb_t_pci);
554
555 /* ---------------------------------------------------------------------- */
556
557 /* MSI TV@nywhere MASTER remote */
558
559 IR_KEYTAB_TYPE ir_codes_msi_tvanywhere[IR_KEYTAB_SIZE] = {
560         /* Keys 0 to 9 */
561         [0x00] = KEY_0,
562         [0x01] = KEY_1,
563         [0x02] = KEY_2,
564         [0x03] = KEY_3,
565         [0x04] = KEY_4,
566         [0x05] = KEY_5,
567         [0x06] = KEY_6,
568         [0x07] = KEY_7,
569         [0x08] = KEY_8,
570         [0x09] = KEY_9,
571
572         [0x0c] = KEY_MUTE,
573         [0x0f] = KEY_SCREEN,            /* Full Screen */
574         [0x10] = KEY_FN,                /* Funtion */
575         [0x11] = KEY_TIME,              /* Time shift */
576         [0x12] = KEY_POWER,
577         [0x13] = KEY_MEDIA,             /* MTS */
578         [0x14] = KEY_SLOW,
579         [0x16] = KEY_REWIND,            /* backward << */
580         [0x17] = KEY_ENTER,             /* Return */
581         [0x18] = KEY_FASTFORWARD,       /* forward >> */
582         [0x1a] = KEY_CHANNELUP,
583         [0x1b] = KEY_VOLUMEUP,
584         [0x1e] = KEY_CHANNELDOWN,
585         [0x1f] = KEY_VOLUMEDOWN,
586 };
587 EXPORT_SYMBOL_GPL(ir_codes_msi_tvanywhere);
588
589 /* ---------------------------------------------------------------------- */
590
591 /*
592   Keycodes for remote on the MSI TV@nywhere Plus. The controller IC on the card
593   is marked "KS003". The controller is I2C at address 0x30, but does not seem
594   to respond to probes until a read is performed from a valid device.
595   I don't know why...
596
597   Note: This remote may be of similar or identical design to the
598   Pixelview remote (?).  The raw codes and duplicate button codes
599   appear to be the same.
600
601   Henry Wong <henry@stuffedcow.net>
602   Some changes to formatting and keycodes by Mark Schultz <n9xmj@yahoo.com>
603
604 */
605
606 IR_KEYTAB_TYPE ir_codes_msi_tvanywhere_plus[IR_KEYTAB_SIZE] = {
607
608 /*  ---- Remote Button Layout ----
609
610     POWER   SOURCE  SCAN    MUTE
611     TV/FM   1       2       3
612     |>      4       5       6
613     <|      7       8       9
614     ^^UP    0       +       RECALL
615     vvDN    RECORD  STOP    PLAY
616
617         MINIMIZE          ZOOM
618
619                   CH+
620       VOL-                   VOL+
621                   CH-
622
623         SNAPSHOT           MTS
624
625      <<      FUNC    >>     RESET
626 */
627
628         [0x01] = KEY_1,         /* 1 */
629         [0x0b] = KEY_2,         /* 2 */
630         [0x1b] = KEY_3,         /* 3 */
631         [0x05] = KEY_4,         /* 4 */
632         [0x09] = KEY_5,         /* 5 */
633         [0x15] = KEY_6,         /* 6 */
634         [0x06] = KEY_7,         /* 7 */
635         [0x0a] = KEY_8,         /* 8 */
636         [0x12] = KEY_9,         /* 9 */
637         [0x02] = KEY_0,         /* 0 */
638         [0x10] = KEY_KPPLUS,    /* + */
639         [0x13] = KEY_AGAIN,     /* Recall */
640
641         [0x1e] = KEY_POWER,     /* Power */
642         [0x07] = KEY_TUNER,     /* Source */
643         [0x1c] = KEY_SEARCH,    /* Scan */
644         [0x18] = KEY_MUTE,      /* Mute */
645
646         [0x03] = KEY_RADIO,     /* TV/FM */
647         /* The next four keys are duplicates that appear to send the
648            same IR code as Ch+, Ch-, >>, and << .  The raw code assigned
649            to them is the actual code + 0x20 - they will never be
650            detected as such unless some way is discovered to distinguish
651            these buttons from those that have the same code. */
652         [0x3f] = KEY_RIGHT,     /* |> and Ch+ */
653         [0x37] = KEY_LEFT,      /* <| and Ch- */
654         [0x2c] = KEY_UP,        /* ^^Up and >> */
655         [0x24] = KEY_DOWN,      /* vvDn and << */
656
657         [0x00] = KEY_RECORD,    /* Record */
658         [0x08] = KEY_STOP,      /* Stop */
659         [0x11] = KEY_PLAY,      /* Play */
660
661         [0x0f] = KEY_CLOSE,     /* Minimize */
662         [0x19] = KEY_ZOOM,      /* Zoom */
663         [0x1a] = KEY_SHUFFLE,   /* Snapshot */
664         [0x0d] = KEY_LANGUAGE,  /* MTS */
665
666         [0x14] = KEY_VOLUMEDOWN,/* Vol- */
667         [0x16] = KEY_VOLUMEUP,  /* Vol+ */
668         [0x17] = KEY_CHANNELDOWN,/* Ch- */
669         [0x1f] = KEY_CHANNELUP, /* Ch+ */
670
671         [0x04] = KEY_REWIND,    /* << */
672         [0x0e] = KEY_MENU,      /* Function */
673         [0x0c] = KEY_FASTFORWARD,/* >> */
674         [0x1d] = KEY_RESTART,   /* Reset */
675 };
676 EXPORT_SYMBOL_GPL(ir_codes_msi_tvanywhere_plus);
677
678 /* ---------------------------------------------------------------------- */
679
680 /* Cinergy 1400 DVB-T */
681 IR_KEYTAB_TYPE ir_codes_cinergy_1400[IR_KEYTAB_SIZE] = {
682         [0x01] = KEY_POWER,
683         [0x02] = KEY_1,
684         [0x03] = KEY_2,
685         [0x04] = KEY_3,
686         [0x05] = KEY_4,
687         [0x06] = KEY_5,
688         [0x07] = KEY_6,
689         [0x08] = KEY_7,
690         [0x09] = KEY_8,
691         [0x0a] = KEY_9,
692         [0x0c] = KEY_0,
693
694         [0x0b] = KEY_VIDEO,
695         [0x0d] = KEY_REFRESH,
696         [0x0e] = KEY_SELECT,
697         [0x0f] = KEY_EPG,
698         [0x10] = KEY_UP,
699         [0x11] = KEY_LEFT,
700         [0x12] = KEY_OK,
701         [0x13] = KEY_RIGHT,
702         [0x14] = KEY_DOWN,
703         [0x15] = KEY_TEXT,
704         [0x16] = KEY_INFO,
705
706         [0x17] = KEY_RED,
707         [0x18] = KEY_GREEN,
708         [0x19] = KEY_YELLOW,
709         [0x1a] = KEY_BLUE,
710
711         [0x1b] = KEY_CHANNELUP,
712         [0x1c] = KEY_VOLUMEUP,
713         [0x1d] = KEY_MUTE,
714         [0x1e] = KEY_VOLUMEDOWN,
715         [0x1f] = KEY_CHANNELDOWN,
716
717         [0x40] = KEY_PAUSE,
718         [0x4c] = KEY_PLAY,
719         [0x58] = KEY_RECORD,
720         [0x54] = KEY_PREVIOUS,
721         [0x48] = KEY_STOP,
722         [0x5c] = KEY_NEXT,
723 };
724 EXPORT_SYMBOL_GPL(ir_codes_cinergy_1400);
725
726 /* ---------------------------------------------------------------------- */
727
728 /* AVERTV STUDIO 303 Remote */
729 IR_KEYTAB_TYPE ir_codes_avertv_303[IR_KEYTAB_SIZE] = {
730         [0x2a] = KEY_1,
731         [0x32] = KEY_2,
732         [0x3a] = KEY_3,
733         [0x4a] = KEY_4,
734         [0x52] = KEY_5,
735         [0x5a] = KEY_6,
736         [0x6a] = KEY_7,
737         [0x72] = KEY_8,
738         [0x7a] = KEY_9,
739         [0x0e] = KEY_0,
740
741         [0x02] = KEY_POWER,
742         [0x22] = KEY_VIDEO,
743         [0x42] = KEY_AUDIO,
744         [0x62] = KEY_ZOOM,
745         [0x0a] = KEY_TV,
746         [0x12] = KEY_CD,
747         [0x1a] = KEY_TEXT,
748
749         [0x16] = KEY_SUBTITLE,
750         [0x1e] = KEY_REWIND,
751         [0x06] = KEY_PRINT,
752
753         [0x2e] = KEY_SEARCH,
754         [0x36] = KEY_SLEEP,
755         [0x3e] = KEY_SHUFFLE,
756         [0x26] = KEY_MUTE,
757
758         [0x4e] = KEY_RECORD,
759         [0x56] = KEY_PAUSE,
760         [0x5e] = KEY_STOP,
761         [0x46] = KEY_PLAY,
762
763         [0x6e] = KEY_RED,
764         [0x0b] = KEY_GREEN,
765         [0x66] = KEY_YELLOW,
766         [0x03] = KEY_BLUE,
767
768         [0x76] = KEY_LEFT,
769         [0x7e] = KEY_RIGHT,
770         [0x13] = KEY_DOWN,
771         [0x1b] = KEY_UP,
772 };
773 EXPORT_SYMBOL_GPL(ir_codes_avertv_303);
774
775 /* ---------------------------------------------------------------------- */
776
777 /* DigitalNow DNTV Live! DVB-T Pro Remote */
778 IR_KEYTAB_TYPE ir_codes_dntv_live_dvbt_pro[IR_KEYTAB_SIZE] = {
779         [0x16] = KEY_POWER,
780         [0x5b] = KEY_HOME,
781
782         [0x55] = KEY_TV,                /* live tv */
783         [0x58] = KEY_TUNER,             /* digital Radio */
784         [0x5a] = KEY_RADIO,             /* FM radio */
785         [0x59] = KEY_DVD,               /* dvd menu */
786         [0x03] = KEY_1,
787         [0x01] = KEY_2,
788         [0x06] = KEY_3,
789         [0x09] = KEY_4,
790         [0x1d] = KEY_5,
791         [0x1f] = KEY_6,
792         [0x0d] = KEY_7,
793         [0x19] = KEY_8,
794         [0x1b] = KEY_9,
795         [0x0c] = KEY_CANCEL,
796         [0x15] = KEY_0,
797         [0x4a] = KEY_CLEAR,
798         [0x13] = KEY_BACK,
799         [0x00] = KEY_TAB,
800         [0x4b] = KEY_UP,
801         [0x4e] = KEY_LEFT,
802         [0x4f] = KEY_OK,
803         [0x52] = KEY_RIGHT,
804         [0x51] = KEY_DOWN,
805         [0x1e] = KEY_VOLUMEUP,
806         [0x0a] = KEY_VOLUMEDOWN,
807         [0x02] = KEY_CHANNELDOWN,
808         [0x05] = KEY_CHANNELUP,
809         [0x11] = KEY_RECORD,
810         [0x14] = KEY_PLAY,
811         [0x4c] = KEY_PAUSE,
812         [0x1a] = KEY_STOP,
813         [0x40] = KEY_REWIND,
814         [0x12] = KEY_FASTFORWARD,
815         [0x41] = KEY_PREVIOUSSONG,      /* replay |< */
816         [0x42] = KEY_NEXTSONG,          /* skip >| */
817         [0x54] = KEY_CAMERA,            /* capture */
818         [0x50] = KEY_LANGUAGE,          /* sap */
819         [0x47] = KEY_TV2,               /* pip */
820         [0x4d] = KEY_SCREEN,
821         [0x43] = KEY_SUBTITLE,
822         [0x10] = KEY_MUTE,
823         [0x49] = KEY_AUDIO,             /* l/r */
824         [0x07] = KEY_SLEEP,
825         [0x08] = KEY_VIDEO,             /* a/v */
826         [0x0e] = KEY_PREVIOUS,          /* recall */
827         [0x45] = KEY_ZOOM,              /* zoom + */
828         [0x46] = KEY_ANGLE,             /* zoom - */
829         [0x56] = KEY_RED,
830         [0x57] = KEY_GREEN,
831         [0x5c] = KEY_YELLOW,
832         [0x5d] = KEY_BLUE,
833 };
834 EXPORT_SYMBOL_GPL(ir_codes_dntv_live_dvbt_pro);
835
836 IR_KEYTAB_TYPE ir_codes_em_terratec[IR_KEYTAB_SIZE] = {
837         [0x01] = KEY_CHANNEL,
838         [0x02] = KEY_SELECT,
839         [0x03] = KEY_MUTE,
840         [0x04] = KEY_POWER,
841         [0x05] = KEY_1,
842         [0x06] = KEY_2,
843         [0x07] = KEY_3,
844         [0x08] = KEY_CHANNELUP,
845         [0x09] = KEY_4,
846         [0x0a] = KEY_5,
847         [0x0b] = KEY_6,
848         [0x0c] = KEY_CHANNELDOWN,
849         [0x0d] = KEY_7,
850         [0x0e] = KEY_8,
851         [0x0f] = KEY_9,
852         [0x10] = KEY_VOLUMEUP,
853         [0x11] = KEY_0,
854         [0x12] = KEY_MENU,
855         [0x13] = KEY_PRINT,
856         [0x14] = KEY_VOLUMEDOWN,
857         [0x16] = KEY_PAUSE,
858         [0x18] = KEY_RECORD,
859         [0x19] = KEY_REWIND,
860         [0x1a] = KEY_PLAY,
861         [0x1b] = KEY_FORWARD,
862         [0x1c] = KEY_BACKSPACE,
863         [0x1e] = KEY_STOP,
864         [0x40] = KEY_ZOOM,
865 };
866 EXPORT_SYMBOL_GPL(ir_codes_em_terratec);
867
868 IR_KEYTAB_TYPE ir_codes_pinnacle_grey[IR_KEYTAB_SIZE] = {
869         [0x3a] = KEY_0,
870         [0x31] = KEY_1,
871         [0x32] = KEY_2,
872         [0x33] = KEY_3,
873         [0x34] = KEY_4,
874         [0x35] = KEY_5,
875         [0x36] = KEY_6,
876         [0x37] = KEY_7,
877         [0x38] = KEY_8,
878         [0x39] = KEY_9,
879
880         [0x2f] = KEY_POWER,
881
882         [0x2e] = KEY_P,
883         [0x1f] = KEY_L,
884         [0x2b] = KEY_I,
885
886         [0x2d] = KEY_SCREEN,
887         [0x1e] = KEY_ZOOM,
888         [0x1b] = KEY_VOLUMEUP,
889         [0x0f] = KEY_VOLUMEDOWN,
890         [0x17] = KEY_CHANNELUP,
891         [0x1c] = KEY_CHANNELDOWN,
892         [0x25] = KEY_INFO,
893
894         [0x3c] = KEY_MUTE,
895
896         [0x3d] = KEY_LEFT,
897         [0x3b] = KEY_RIGHT,
898
899         [0x3f] = KEY_UP,
900         [0x3e] = KEY_DOWN,
901         [0x1a] = KEY_ENTER,
902
903         [0x1d] = KEY_MENU,
904         [0x19] = KEY_AGAIN,
905         [0x16] = KEY_PREVIOUSSONG,
906         [0x13] = KEY_NEXTSONG,
907         [0x15] = KEY_PAUSE,
908         [0x0e] = KEY_REWIND,
909         [0x0d] = KEY_PLAY,
910         [0x0b] = KEY_STOP,
911         [0x07] = KEY_FORWARD,
912         [0x27] = KEY_RECORD,
913         [0x26] = KEY_TUNER,
914         [0x29] = KEY_TEXT,
915         [0x2a] = KEY_MEDIA,
916         [0x18] = KEY_EPG,
917 };
918 EXPORT_SYMBOL_GPL(ir_codes_pinnacle_grey);
919
920 IR_KEYTAB_TYPE ir_codes_flyvideo[IR_KEYTAB_SIZE] = {
921         [0x0f] = KEY_0,
922         [0x03] = KEY_1,
923         [0x04] = KEY_2,
924         [0x05] = KEY_3,
925         [0x07] = KEY_4,
926         [0x08] = KEY_5,
927         [0x09] = KEY_6,
928         [0x0b] = KEY_7,
929         [0x0c] = KEY_8,
930         [0x0d] = KEY_9,
931
932         [0x0e] = KEY_MODE,      /* Air/Cable */
933         [0x11] = KEY_VIDEO,     /* Video */
934         [0x15] = KEY_AUDIO,     /* Audio */
935         [0x00] = KEY_POWER,     /* Power */
936         [0x18] = KEY_TUNER,     /* AV Source */
937         [0x02] = KEY_ZOOM,      /* Fullscreen */
938         [0x1a] = KEY_LANGUAGE,  /* Stereo */
939         [0x1b] = KEY_MUTE,      /* Mute */
940         [0x14] = KEY_VOLUMEUP,  /* Volume + */
941         [0x17] = KEY_VOLUMEDOWN,/* Volume - */
942         [0x12] = KEY_CHANNELUP, /* Channel + */
943         [0x13] = KEY_CHANNELDOWN,/* Channel - */
944         [0x06] = KEY_AGAIN,     /* Recall */
945         [0x10] = KEY_ENTER,     /* Enter */
946
947         [0x19] = KEY_BACK,      /* Rewind  ( <<< ) */
948         [0x1f] = KEY_FORWARD,   /* Forward ( >>> ) */
949         [0x0a] = KEY_ANGLE,     /* no label, may be used as the PAUSE button */
950 };
951 EXPORT_SYMBOL_GPL(ir_codes_flyvideo);
952
953 IR_KEYTAB_TYPE ir_codes_flydvb[IR_KEYTAB_SIZE] = {
954         [0x01] = KEY_ZOOM,              /* Full Screen */
955         [0x00] = KEY_POWER,             /* Power */
956
957         [0x03] = KEY_1,
958         [0x04] = KEY_2,
959         [0x05] = KEY_3,
960         [0x07] = KEY_4,
961         [0x08] = KEY_5,
962         [0x09] = KEY_6,
963         [0x0b] = KEY_7,
964         [0x0c] = KEY_8,
965         [0x0d] = KEY_9,
966         [0x06] = KEY_AGAIN,             /* Recall */
967         [0x0f] = KEY_0,
968         [0x10] = KEY_MUTE,              /* Mute */
969         [0x02] = KEY_RADIO,             /* TV/Radio */
970         [0x1b] = KEY_LANGUAGE,          /* SAP (Second Audio Program) */
971
972         [0x14] = KEY_VOLUMEUP,          /* VOL+ */
973         [0x17] = KEY_VOLUMEDOWN,        /* VOL- */
974         [0x12] = KEY_CHANNELUP,         /* CH+ */
975         [0x13] = KEY_CHANNELDOWN,       /* CH- */
976         [0x1d] = KEY_ENTER,             /* Enter */
977
978         [0x1a] = KEY_MODE,              /* PIP */
979         [0x18] = KEY_TUNER,             /* Source */
980
981         [0x1e] = KEY_RECORD,            /* Record/Pause */
982         [0x15] = KEY_ANGLE,             /* Swap (no label on key) */
983         [0x1c] = KEY_PAUSE,             /* Timeshift/Pause */
984         [0x19] = KEY_BACK,              /* Rewind << */
985         [0x0a] = KEY_PLAYPAUSE,         /* Play/Pause */
986         [0x1f] = KEY_FORWARD,           /* Forward >> */
987         [0x16] = KEY_PREVIOUS,          /* Back |<< */
988         [0x11] = KEY_STOP,              /* Stop */
989         [0x0e] = KEY_NEXT,              /* End >>| */
990 };
991 EXPORT_SYMBOL_GPL(ir_codes_flydvb);
992
993 IR_KEYTAB_TYPE ir_codes_cinergy[IR_KEYTAB_SIZE] = {
994         [0x00] = KEY_0,
995         [0x01] = KEY_1,
996         [0x02] = KEY_2,
997         [0x03] = KEY_3,
998         [0x04] = KEY_4,
999         [0x05] = KEY_5,
1000         [0x06] = KEY_6,
1001         [0x07] = KEY_7,
1002         [0x08] = KEY_8,
1003         [0x09] = KEY_9,
1004
1005         [0x0a] = KEY_POWER,
1006         [0x0b] = KEY_PROG1,     /* app */
1007         [0x0c] = KEY_ZOOM,      /* zoom/fullscreen */
1008         [0x0d] = KEY_CHANNELUP, /* channel */
1009         [0x0e] = KEY_CHANNELDOWN,/* channel- */
1010         [0x0f] = KEY_VOLUMEUP,
1011         [0x10] = KEY_VOLUMEDOWN,
1012         [0x11] = KEY_TUNER,     /* AV */
1013         [0x12] = KEY_NUMLOCK,   /* -/-- */
1014         [0x13] = KEY_AUDIO,     /* audio */
1015         [0x14] = KEY_MUTE,
1016         [0x15] = KEY_UP,
1017         [0x16] = KEY_DOWN,
1018         [0x17] = KEY_LEFT,
1019         [0x18] = KEY_RIGHT,
1020         [0x19] = BTN_LEFT,
1021         [0x1a] = BTN_RIGHT,
1022         [0x1b] = KEY_WWW,       /* text */
1023         [0x1c] = KEY_REWIND,
1024         [0x1d] = KEY_FORWARD,
1025         [0x1e] = KEY_RECORD,
1026         [0x1f] = KEY_PLAY,
1027         [0x20] = KEY_PREVIOUSSONG,
1028         [0x21] = KEY_NEXTSONG,
1029         [0x22] = KEY_PAUSE,
1030         [0x23] = KEY_STOP,
1031 };
1032 EXPORT_SYMBOL_GPL(ir_codes_cinergy);
1033
1034 /* Alfons Geser <a.geser@cox.net>
1035  * updates from Job D. R. Borges <jobdrb@ig.com.br> */
1036 IR_KEYTAB_TYPE ir_codes_eztv[IR_KEYTAB_SIZE] = {
1037         [0x12] = KEY_POWER,
1038         [0x01] = KEY_TV,        /* DVR */
1039         [0x15] = KEY_DVD,       /* DVD */
1040         [0x17] = KEY_AUDIO,     /* music */
1041                                 /* DVR mode / DVD mode / music mode */
1042
1043         [0x1b] = KEY_MUTE,      /* mute */
1044         [0x02] = KEY_LANGUAGE,  /* MTS/SAP / audio / autoseek */
1045         [0x1e] = KEY_SUBTITLE,  /* closed captioning / subtitle / seek */
1046         [0x16] = KEY_ZOOM,      /* full screen */
1047         [0x1c] = KEY_VIDEO,     /* video source / eject / delall */
1048         [0x1d] = KEY_RESTART,   /* playback / angle / del */
1049         [0x2f] = KEY_SEARCH,    /* scan / menu / playlist */
1050         [0x30] = KEY_CHANNEL,   /* CH surfing / bookmark / memo */
1051
1052         [0x31] = KEY_HELP,      /* help */
1053         [0x32] = KEY_MODE,      /* num/memo */
1054         [0x33] = KEY_ESC,       /* cancel */
1055
1056         [0x0c] = KEY_UP,        /* up */
1057         [0x10] = KEY_DOWN,      /* down */
1058         [0x08] = KEY_LEFT,      /* left */
1059         [0x04] = KEY_RIGHT,     /* right */
1060         [0x03] = KEY_SELECT,    /* select */
1061
1062         [0x1f] = KEY_REWIND,    /* rewind */
1063         [0x20] = KEY_PLAYPAUSE, /* play/pause */
1064         [0x29] = KEY_FORWARD,   /* forward */
1065         [0x14] = KEY_AGAIN,     /* repeat */
1066         [0x2b] = KEY_RECORD,    /* recording */
1067         [0x2c] = KEY_STOP,      /* stop */
1068         [0x2d] = KEY_PLAY,      /* play */
1069         [0x2e] = KEY_SHUFFLE,   /* snapshot / shuffle */
1070
1071         [0x00] = KEY_0,
1072         [0x05] = KEY_1,
1073         [0x06] = KEY_2,
1074         [0x07] = KEY_3,
1075         [0x09] = KEY_4,
1076         [0x0a] = KEY_5,
1077         [0x0b] = KEY_6,
1078         [0x0d] = KEY_7,
1079         [0x0e] = KEY_8,
1080         [0x0f] = KEY_9,
1081
1082         [0x2a] = KEY_VOLUMEUP,
1083         [0x11] = KEY_VOLUMEDOWN,
1084         [0x18] = KEY_CHANNELUP, /* CH.tracking up */
1085         [0x19] = KEY_CHANNELDOWN,/* CH.tracking down */
1086
1087         [0x13] = KEY_ENTER,     /* enter */
1088         [0x21] = KEY_DOT,       /* . (decimal dot) */
1089 };
1090 EXPORT_SYMBOL_GPL(ir_codes_eztv);
1091
1092 /* Alex Hermann <gaaf@gmx.net> */
1093 IR_KEYTAB_TYPE ir_codes_avermedia[IR_KEYTAB_SIZE] = {
1094         [0x28] = KEY_1,
1095         [0x18] = KEY_2,
1096         [0x38] = KEY_3,
1097         [0x24] = KEY_4,
1098         [0x14] = KEY_5,
1099         [0x34] = KEY_6,
1100         [0x2c] = KEY_7,
1101         [0x1c] = KEY_8,
1102         [0x3c] = KEY_9,
1103         [0x22] = KEY_0,
1104
1105         [0x20] = KEY_TV,                /* TV/FM */
1106         [0x10] = KEY_CD,                /* CD */
1107         [0x30] = KEY_TEXT,              /* TELETEXT */
1108         [0x00] = KEY_POWER,             /* POWER */
1109
1110         [0x08] = KEY_VIDEO,             /* VIDEO */
1111         [0x04] = KEY_AUDIO,             /* AUDIO */
1112         [0x0c] = KEY_ZOOM,              /* FULL SCREEN */
1113
1114         [0x12] = KEY_SUBTITLE,          /* DISPLAY */
1115         [0x32] = KEY_REWIND,            /* LOOP */
1116         [0x02] = KEY_PRINT,             /* PREVIEW */
1117
1118         [0x2a] = KEY_SEARCH,            /* AUTOSCAN */
1119         [0x1a] = KEY_SLEEP,             /* FREEZE */
1120         [0x3a] = KEY_SHUFFLE,           /* SNAPSHOT */
1121         [0x0a] = KEY_MUTE,              /* MUTE */
1122
1123         [0x26] = KEY_RECORD,            /* RECORD */
1124         [0x16] = KEY_PAUSE,             /* PAUSE */
1125         [0x36] = KEY_STOP,              /* STOP */
1126         [0x06] = KEY_PLAY,              /* PLAY */
1127
1128         [0x2e] = KEY_RED,               /* RED */
1129         [0x21] = KEY_GREEN,             /* GREEN */
1130         [0x0e] = KEY_YELLOW,            /* YELLOW */
1131         [0x01] = KEY_BLUE,              /* BLUE */
1132
1133         [0x1e] = KEY_VOLUMEDOWN,        /* VOLUME- */
1134         [0x3e] = KEY_VOLUMEUP,          /* VOLUME+ */
1135         [0x11] = KEY_CHANNELDOWN,       /* CHANNEL/PAGE- */
1136         [0x31] = KEY_CHANNELUP          /* CHANNEL/PAGE+ */
1137 };
1138 EXPORT_SYMBOL_GPL(ir_codes_avermedia);
1139
1140 IR_KEYTAB_TYPE ir_codes_videomate_tv_pvr[IR_KEYTAB_SIZE] = {
1141         [0x14] = KEY_MUTE,
1142         [0x24] = KEY_ZOOM,
1143
1144         [0x01] = KEY_DVD,
1145         [0x23] = KEY_RADIO,
1146         [0x00] = KEY_TV,
1147
1148         [0x0a] = KEY_REWIND,
1149         [0x08] = KEY_PLAYPAUSE,
1150         [0x0f] = KEY_FORWARD,
1151
1152         [0x02] = KEY_PREVIOUS,
1153         [0x07] = KEY_STOP,
1154         [0x06] = KEY_NEXT,
1155
1156         [0x0c] = KEY_UP,
1157         [0x0e] = KEY_DOWN,
1158         [0x0b] = KEY_LEFT,
1159         [0x0d] = KEY_RIGHT,
1160         [0x11] = KEY_OK,
1161
1162         [0x03] = KEY_MENU,
1163         [0x09] = KEY_SETUP,
1164         [0x05] = KEY_VIDEO,
1165         [0x22] = KEY_CHANNEL,
1166
1167         [0x12] = KEY_VOLUMEUP,
1168         [0x15] = KEY_VOLUMEDOWN,
1169         [0x10] = KEY_CHANNELUP,
1170         [0x13] = KEY_CHANNELDOWN,
1171
1172         [0x04] = KEY_RECORD,
1173
1174         [0x16] = KEY_1,
1175         [0x17] = KEY_2,
1176         [0x18] = KEY_3,
1177         [0x19] = KEY_4,
1178         [0x1a] = KEY_5,
1179         [0x1b] = KEY_6,
1180         [0x1c] = KEY_7,
1181         [0x1d] = KEY_8,
1182         [0x1e] = KEY_9,
1183         [0x1f] = KEY_0,
1184
1185         [0x20] = KEY_LANGUAGE,
1186         [0x21] = KEY_SLEEP,
1187 };
1188 EXPORT_SYMBOL_GPL(ir_codes_videomate_tv_pvr);
1189
1190 /* Michael Tokarev <mjt@tls.msk.ru>
1191    http://www.corpit.ru/mjt/beholdTV/remote_control.jpg
1192    keytable is used by MANLI MTV00[0x0c] and BeholdTV 40[13] at
1193    least, and probably other cards too.
1194    The "ascii-art picture" below (in comments, first row
1195    is the keycode in hex, and subsequent row(s) shows
1196    the button labels (several variants when appropriate)
1197    helps to descide which keycodes to assign to the buttons.
1198  */
1199 IR_KEYTAB_TYPE ir_codes_manli[IR_KEYTAB_SIZE] = {
1200
1201         /*  0x1c            0x12  *
1202          * FUNCTION         POWER *
1203          *   FM              (|)  *
1204          *                        */
1205         [0x1c] = KEY_RADIO,     /*XXX*/
1206         [0x12] = KEY_POWER,
1207
1208         /*  0x01    0x02    0x03  *
1209          *   1       2       3    *
1210          *                        *
1211          *  0x04    0x05    0x06  *
1212          *   4       5       6    *
1213          *                        *
1214          *  0x07    0x08    0x09  *
1215          *   7       8       9    *
1216          *                        */
1217         [0x01] = KEY_1,
1218         [0x02] = KEY_2,
1219         [0x03] = KEY_3,
1220         [0x04] = KEY_4,
1221         [0x05] = KEY_5,
1222         [0x06] = KEY_6,
1223         [0x07] = KEY_7,
1224         [0x08] = KEY_8,
1225         [0x09] = KEY_9,
1226
1227         /*  0x0a    0x00    0x17  *
1228          * RECALL    0      +100  *
1229          *                  PLUS  *
1230          *                        */
1231         [0x0a] = KEY_AGAIN,     /*XXX KEY_REWIND? */
1232         [0x00] = KEY_0,
1233         [0x17] = KEY_DIGITS,    /*XXX*/
1234
1235         /*  0x14            0x10  *
1236          *  MENU            INFO  *
1237          *  OSD                   */
1238         [0x14] = KEY_MENU,
1239         [0x10] = KEY_INFO,
1240
1241         /*          0x0b          *
1242          *           Up           *
1243          *                        *
1244          *  0x18    0x16    0x0c  *
1245          *  Left     Ok     Right *
1246          *                        *
1247          *         0x015          *
1248          *         Down           *
1249          *                        */
1250         [0x0b] = KEY_UP,        /*XXX KEY_SCROLLUP? */
1251         [0x18] = KEY_LEFT,      /*XXX KEY_BACK? */
1252         [0x16] = KEY_OK,        /*XXX KEY_SELECT? KEY_ENTER? */
1253         [0x0c] = KEY_RIGHT,     /*XXX KEY_FORWARD? */
1254         [0x15] = KEY_DOWN,      /*XXX KEY_SCROLLDOWN? */
1255
1256         /*  0x11            0x0d  *
1257          *  TV/AV           MODE  *
1258          *  SOURCE         STEREO *
1259          *                        */
1260         [0x11] = KEY_TV,        /*XXX*/
1261         [0x0d] = KEY_MODE,      /*XXX there's no KEY_STEREO     */
1262
1263         /*  0x0f    0x1b    0x1a  *
1264          *  AUDIO   Vol+    Chan+ *
1265          *        TIMESHIFT???    *
1266          *                        *
1267          *  0x0e    0x1f    0x1e  *
1268          *  SLEEP   Vol-    Chan- *
1269          *                        */
1270         [0x0f] = KEY_AUDIO,
1271         [0x1b] = KEY_VOLUMEUP,
1272         [0x1a] = KEY_CHANNELUP,
1273         [0x0e] = KEY_TIME,
1274         [0x1f] = KEY_VOLUMEDOWN,
1275         [0x1e] = KEY_CHANNELDOWN,
1276
1277         /*         0x13     0x19  *
1278          *         MUTE   SNAPSHOT*
1279          *                        */
1280         [0x13] = KEY_MUTE,
1281         [0x19] = KEY_RECORD,    /*XXX*/
1282
1283         /* 0x1d unused ? */
1284 };
1285 EXPORT_SYMBOL_GPL(ir_codes_manli);
1286
1287 /* Mike Baikov <mike@baikov.com> */
1288 IR_KEYTAB_TYPE ir_codes_gotview7135[IR_KEYTAB_SIZE] = {
1289
1290         [0x11] = KEY_POWER,
1291         [0x35] = KEY_TV,
1292         [0x1b] = KEY_0,
1293         [0x29] = KEY_1,
1294         [0x19] = KEY_2,
1295         [0x39] = KEY_3,
1296         [0x1f] = KEY_4,
1297         [0x2c] = KEY_5,
1298         [0x21] = KEY_6,
1299         [0x24] = KEY_7,
1300         [0x18] = KEY_8,
1301         [0x2b] = KEY_9,
1302         [0x3b] = KEY_AGAIN,     /* LOOP */
1303         [0x06] = KEY_AUDIO,
1304         [0x31] = KEY_PRINT,     /* PREVIEW */
1305         [0x3e] = KEY_VIDEO,
1306         [0x10] = KEY_CHANNELUP,
1307         [0x20] = KEY_CHANNELDOWN,
1308         [0x0c] = KEY_VOLUMEDOWN,
1309         [0x28] = KEY_VOLUMEUP,
1310         [0x08] = KEY_MUTE,
1311         [0x26] = KEY_SEARCH,    /*SCAN*/
1312         [0x3f] = KEY_SHUFFLE,   /* SNAPSHOT */
1313         [0x12] = KEY_RECORD,
1314         [0x32] = KEY_STOP,
1315         [0x3c] = KEY_PLAY,
1316         [0x1d] = KEY_REWIND,
1317         [0x2d] = KEY_PAUSE,
1318         [0x0d] = KEY_FORWARD,
1319         [0x05] = KEY_ZOOM,      /*FULL*/
1320
1321         [0x2a] = KEY_F21,       /* LIVE TIMESHIFT */
1322         [0x0e] = KEY_F22,       /* MIN TIMESHIFT */
1323         [0x1e] = KEY_TIME,      /* TIMESHIFT */
1324         [0x38] = KEY_F24,       /* NORMAL TIMESHIFT */
1325 };
1326 EXPORT_SYMBOL_GPL(ir_codes_gotview7135);
1327
1328 IR_KEYTAB_TYPE ir_codes_purpletv[IR_KEYTAB_SIZE] = {
1329         [0x03] = KEY_POWER,
1330         [0x6f] = KEY_MUTE,
1331         [0x10] = KEY_BACKSPACE, /* Recall */
1332
1333         [0x11] = KEY_0,
1334         [0x04] = KEY_1,
1335         [0x05] = KEY_2,
1336         [0x06] = KEY_3,
1337         [0x08] = KEY_4,
1338         [0x09] = KEY_5,
1339         [0x0a] = KEY_6,
1340         [0x0c] = KEY_7,
1341         [0x0d] = KEY_8,
1342         [0x0e] = KEY_9,
1343         [0x12] = KEY_DOT,       /* 100+ */
1344
1345         [0x07] = KEY_VOLUMEUP,
1346         [0x0b] = KEY_VOLUMEDOWN,
1347         [0x1a] = KEY_KPPLUS,
1348         [0x18] = KEY_KPMINUS,
1349         [0x15] = KEY_UP,
1350         [0x1d] = KEY_DOWN,
1351         [0x0f] = KEY_CHANNELUP,
1352         [0x13] = KEY_CHANNELDOWN,
1353         [0x48] = KEY_ZOOM,
1354
1355         [0x1b] = KEY_VIDEO,     /* Video source */
1356         [0x1f] = KEY_CAMERA,    /* Snapshot */
1357         [0x49] = KEY_LANGUAGE,  /* MTS Select */
1358         [0x19] = KEY_SEARCH,    /* Auto Scan */
1359
1360         [0x4b] = KEY_RECORD,
1361         [0x46] = KEY_PLAY,
1362         [0x45] = KEY_PAUSE,     /* Pause */
1363         [0x44] = KEY_STOP,
1364         [0x43] = KEY_TIME,      /* Time Shift */
1365         [0x17] = KEY_CHANNEL,   /* SURF CH */
1366         [0x40] = KEY_FORWARD,   /* Forward ? */
1367         [0x42] = KEY_REWIND,    /* Backward ? */
1368
1369 };
1370 EXPORT_SYMBOL_GPL(ir_codes_purpletv);
1371
1372 /* Mapping for the 28 key remote control as seen at
1373    http://www.sednacomputer.com/photo/cardbus-tv.jpg
1374    Pavel Mihaylov <bin@bash.info>
1375    Also for the remote bundled with Kozumi KTV-01C card */
1376 IR_KEYTAB_TYPE ir_codes_pctv_sedna[IR_KEYTAB_SIZE] = {
1377         [0x00] = KEY_0,
1378         [0x01] = KEY_1,
1379         [0x02] = KEY_2,
1380         [0x03] = KEY_3,
1381         [0x04] = KEY_4,
1382         [0x05] = KEY_5,
1383         [0x06] = KEY_6,
1384         [0x07] = KEY_7,
1385         [0x08] = KEY_8,
1386         [0x09] = KEY_9,
1387
1388         [0x0a] = KEY_AGAIN,     /* Recall */
1389         [0x0b] = KEY_CHANNELUP,
1390         [0x0c] = KEY_VOLUMEUP,
1391         [0x0d] = KEY_MODE,      /* Stereo */
1392         [0x0e] = KEY_STOP,
1393         [0x0f] = KEY_PREVIOUSSONG,
1394         [0x10] = KEY_ZOOM,
1395         [0x11] = KEY_TUNER,     /* Source */
1396         [0x12] = KEY_POWER,
1397         [0x13] = KEY_MUTE,
1398         [0x15] = KEY_CHANNELDOWN,
1399         [0x18] = KEY_VOLUMEDOWN,
1400         [0x19] = KEY_SHUFFLE,   /* Snapshot */
1401         [0x1a] = KEY_NEXTSONG,
1402         [0x1b] = KEY_TIME,      /* Time Shift */
1403         [0x1c] = KEY_RADIO,     /* FM Radio */
1404         [0x1d] = KEY_RECORD,
1405         [0x1e] = KEY_PAUSE,
1406         /* additional codes for Kozumi's remote */
1407         [0x14] = KEY_INFO,      /* OSD */
1408         [0x16] = KEY_OK,        /* OK */
1409         [0x17] = KEY_DIGITS,    /* Plus */
1410         [0x1f] = KEY_PLAY,      /* Play */
1411 };
1412 EXPORT_SYMBOL_GPL(ir_codes_pctv_sedna);
1413
1414 /* Mark Phalan <phalanm@o2.ie> */
1415 IR_KEYTAB_TYPE ir_codes_pv951[IR_KEYTAB_SIZE] = {
1416         [0x00] = KEY_0,
1417         [0x01] = KEY_1,
1418         [0x02] = KEY_2,
1419         [0x03] = KEY_3,
1420         [0x04] = KEY_4,
1421         [0x05] = KEY_5,
1422         [0x06] = KEY_6,
1423         [0x07] = KEY_7,
1424         [0x08] = KEY_8,
1425         [0x09] = KEY_9,
1426
1427         [0x12] = KEY_POWER,
1428         [0x10] = KEY_MUTE,
1429         [0x1f] = KEY_VOLUMEDOWN,
1430         [0x1b] = KEY_VOLUMEUP,
1431         [0x1a] = KEY_CHANNELUP,
1432         [0x1e] = KEY_CHANNELDOWN,
1433         [0x0e] = KEY_PAGEUP,
1434         [0x1d] = KEY_PAGEDOWN,
1435         [0x13] = KEY_SOUND,
1436
1437         [0x18] = KEY_KPPLUSMINUS,       /* CH +/- */
1438         [0x16] = KEY_SUBTITLE,          /* CC */
1439         [0x0d] = KEY_TEXT,              /* TTX */
1440         [0x0b] = KEY_TV,                /* AIR/CBL */
1441         [0x11] = KEY_PC,                /* PC/TV */
1442         [0x17] = KEY_OK,                /* CH RTN */
1443         [0x19] = KEY_MODE,              /* FUNC */
1444         [0x0c] = KEY_SEARCH,            /* AUTOSCAN */
1445
1446         /* Not sure what to do with these ones! */
1447         [0x0f] = KEY_SELECT,            /* SOURCE */
1448         [0x0a] = KEY_KPPLUS,            /* +100 */
1449         [0x14] = KEY_EQUAL,             /* SYNC */
1450         [0x1c] = KEY_MEDIA,             /* PC/TV */
1451 };
1452 EXPORT_SYMBOL_GPL(ir_codes_pv951);
1453
1454 /* generic RC5 keytable                                          */
1455 /* see http://users.pandora.be/nenya/electronics/rc5/codes00.htm */
1456 /* used by old (black) Hauppauge remotes                         */
1457 IR_KEYTAB_TYPE ir_codes_rc5_tv[IR_KEYTAB_SIZE] = {
1458         /* Keys 0 to 9 */
1459         [0x00] = KEY_0,
1460         [0x01] = KEY_1,
1461         [0x02] = KEY_2,
1462         [0x03] = KEY_3,
1463         [0x04] = KEY_4,
1464         [0x05] = KEY_5,
1465         [0x06] = KEY_6,
1466         [0x07] = KEY_7,
1467         [0x08] = KEY_8,
1468         [0x09] = KEY_9,
1469
1470         [0x0b] = KEY_CHANNEL,           /* channel / program (japan: 11) */
1471         [0x0c] = KEY_POWER,             /* standby */
1472         [0x0d] = KEY_MUTE,              /* mute / demute */
1473         [0x0f] = KEY_TV,                /* display */
1474         [0x10] = KEY_VOLUMEUP,
1475         [0x11] = KEY_VOLUMEDOWN,
1476         [0x12] = KEY_BRIGHTNESSUP,
1477         [0x13] = KEY_BRIGHTNESSDOWN,
1478         [0x1e] = KEY_SEARCH,            /* search + */
1479         [0x20] = KEY_CHANNELUP,         /* channel / program + */
1480         [0x21] = KEY_CHANNELDOWN,       /* channel / program - */
1481         [0x22] = KEY_CHANNEL,           /* alt / channel */
1482         [0x23] = KEY_LANGUAGE,          /* 1st / 2nd language */
1483         [0x26] = KEY_SLEEP,             /* sleeptimer */
1484         [0x2e] = KEY_MENU,              /* 2nd controls (USA: menu) */
1485         [0x30] = KEY_PAUSE,
1486         [0x32] = KEY_REWIND,
1487         [0x33] = KEY_GOTO,
1488         [0x35] = KEY_PLAY,
1489         [0x36] = KEY_STOP,
1490         [0x37] = KEY_RECORD,            /* recording */
1491         [0x3c] = KEY_TEXT,              /* teletext submode (Japan: 12) */
1492         [0x3d] = KEY_SUSPEND,           /* system standby */
1493
1494 };
1495 EXPORT_SYMBOL_GPL(ir_codes_rc5_tv);
1496
1497 /* Table for Leadtek Winfast Remote Controls - used by both bttv and cx88 */
1498 IR_KEYTAB_TYPE ir_codes_winfast[IR_KEYTAB_SIZE] = {
1499         /* Keys 0 to 9 */
1500         [0x12] = KEY_0,
1501         [0x05] = KEY_1,
1502         [0x06] = KEY_2,
1503         [0x07] = KEY_3,
1504         [0x09] = KEY_4,
1505         [0x0a] = KEY_5,
1506         [0x0b] = KEY_6,
1507         [0x0d] = KEY_7,
1508         [0x0e] = KEY_8,
1509         [0x0f] = KEY_9,
1510
1511         [0x00] = KEY_POWER,
1512         [0x1b] = KEY_AUDIO,             /* Audio Source */
1513         [0x02] = KEY_TUNER,             /* TV/FM, not on Y0400052 */
1514         [0x1e] = KEY_VIDEO,             /* Video Source */
1515         [0x16] = KEY_INFO,              /* Display information */
1516         [0x04] = KEY_VOLUMEUP,
1517         [0x08] = KEY_VOLUMEDOWN,
1518         [0x0c] = KEY_CHANNELUP,
1519         [0x10] = KEY_CHANNELDOWN,
1520         [0x03] = KEY_ZOOM,              /* fullscreen */
1521         [0x1f] = KEY_TEXT,              /* closed caption/teletext */
1522         [0x20] = KEY_SLEEP,
1523         [0x29] = KEY_CLEAR,             /* boss key */
1524         [0x14] = KEY_MUTE,
1525         [0x2b] = KEY_RED,
1526         [0x2c] = KEY_GREEN,
1527         [0x2d] = KEY_YELLOW,
1528         [0x2e] = KEY_BLUE,
1529         [0x18] = KEY_KPPLUS,            /* fine tune + , not on Y040052 */
1530         [0x19] = KEY_KPMINUS,           /* fine tune - , not on Y040052 */
1531         [0x2a] = KEY_MEDIA,             /* PIP (Picture in picture */
1532         [0x21] = KEY_DOT,
1533         [0x13] = KEY_ENTER,
1534         [0x11] = KEY_LAST,              /* Recall (last channel */
1535         [0x22] = KEY_PREVIOUS,
1536         [0x23] = KEY_PLAYPAUSE,
1537         [0x24] = KEY_NEXT,
1538         [0x25] = KEY_TIME,              /* Time Shifting */
1539         [0x26] = KEY_STOP,
1540         [0x27] = KEY_RECORD,
1541         [0x28] = KEY_SAVE,              /* Screenshot */
1542         [0x2f] = KEY_MENU,
1543         [0x30] = KEY_CANCEL,
1544         [0x31] = KEY_CHANNEL,           /* Channel Surf */
1545         [0x32] = KEY_SUBTITLE,
1546         [0x33] = KEY_LANGUAGE,
1547         [0x34] = KEY_REWIND,
1548         [0x35] = KEY_FASTFORWARD,
1549         [0x36] = KEY_TV,
1550         [0x37] = KEY_RADIO,             /* FM */
1551         [0x38] = KEY_DVD,
1552
1553         [0x3e] = KEY_F21,               /* MCE +VOL, on Y04G0033 */
1554         [0x3a] = KEY_F22,               /* MCE -VOL, on Y04G0033 */
1555         [0x3b] = KEY_F23,               /* MCE +CH,  on Y04G0033 */
1556         [0x3f] = KEY_F24                /* MCE -CH,  on Y04G0033 */
1557 };
1558 EXPORT_SYMBOL_GPL(ir_codes_winfast);
1559
1560 IR_KEYTAB_TYPE ir_codes_pinnacle_color[IR_KEYTAB_SIZE] = {
1561         [0x59] = KEY_MUTE,
1562         [0x4a] = KEY_POWER,
1563
1564         [0x18] = KEY_TEXT,
1565         [0x26] = KEY_TV,
1566         [0x3d] = KEY_PRINT,
1567
1568         [0x48] = KEY_RED,
1569         [0x04] = KEY_GREEN,
1570         [0x11] = KEY_YELLOW,
1571         [0x00] = KEY_BLUE,
1572
1573         [0x2d] = KEY_VOLUMEUP,
1574         [0x1e] = KEY_VOLUMEDOWN,
1575
1576         [0x49] = KEY_MENU,
1577
1578         [0x16] = KEY_CHANNELUP,
1579         [0x17] = KEY_CHANNELDOWN,
1580
1581         [0x20] = KEY_UP,
1582         [0x21] = KEY_DOWN,
1583         [0x22] = KEY_LEFT,
1584         [0x23] = KEY_RIGHT,
1585         [0x0d] = KEY_SELECT,
1586
1587
1588
1589         [0x08] = KEY_BACK,
1590         [0x07] = KEY_REFRESH,
1591
1592         [0x2f] = KEY_ZOOM,
1593         [0x29] = KEY_RECORD,
1594
1595         [0x4b] = KEY_PAUSE,
1596         [0x4d] = KEY_REWIND,
1597         [0x2e] = KEY_PLAY,
1598         [0x4e] = KEY_FORWARD,
1599         [0x53] = KEY_PREVIOUS,
1600         [0x4c] = KEY_STOP,
1601         [0x54] = KEY_NEXT,
1602
1603         [0x69] = KEY_0,
1604         [0x6a] = KEY_1,
1605         [0x6b] = KEY_2,
1606         [0x6c] = KEY_3,
1607         [0x6d] = KEY_4,
1608         [0x6e] = KEY_5,
1609         [0x6f] = KEY_6,
1610         [0x70] = KEY_7,
1611         [0x71] = KEY_8,
1612         [0x72] = KEY_9,
1613
1614         [0x74] = KEY_CHANNEL,
1615         [0x0a] = KEY_BACKSPACE,
1616 };
1617 EXPORT_SYMBOL_GPL(ir_codes_pinnacle_color);
1618
1619 /* Hauppauge: the newer, gray remotes (seems there are multiple
1620  * slightly different versions), shipped with cx88+ivtv cards.
1621  * almost rc5 coding, but some non-standard keys */
1622 IR_KEYTAB_TYPE ir_codes_hauppauge_new[IR_KEYTAB_SIZE] = {
1623         /* Keys 0 to 9 */
1624         [0x00] = KEY_0,
1625         [0x01] = KEY_1,
1626         [0x02] = KEY_2,
1627         [0x03] = KEY_3,
1628         [0x04] = KEY_4,
1629         [0x05] = KEY_5,
1630         [0x06] = KEY_6,
1631         [0x07] = KEY_7,
1632         [0x08] = KEY_8,
1633         [0x09] = KEY_9,
1634
1635         [0x0a] = KEY_TEXT,              /* keypad asterisk as well */
1636         [0x0b] = KEY_RED,               /* red button */
1637         [0x0c] = KEY_RADIO,
1638         [0x0d] = KEY_MENU,
1639         [0x0e] = KEY_SUBTITLE,          /* also the # key */
1640         [0x0f] = KEY_MUTE,
1641         [0x10] = KEY_VOLUMEUP,
1642         [0x11] = KEY_VOLUMEDOWN,
1643         [0x12] = KEY_PREVIOUS,          /* previous channel */
1644         [0x14] = KEY_UP,
1645         [0x15] = KEY_DOWN,
1646         [0x16] = KEY_LEFT,
1647         [0x17] = KEY_RIGHT,
1648         [0x18] = KEY_VIDEO,             /* Videos */
1649         [0x19] = KEY_AUDIO,             /* Music */
1650         /* 0x1a: Pictures - presume this means
1651            "Multimedia Home Platform" -
1652            no "PICTURES" key in input.h
1653          */
1654         [0x1a] = KEY_MHP,
1655
1656         [0x1b] = KEY_EPG,               /* Guide */
1657         [0x1c] = KEY_TV,
1658         [0x1e] = KEY_NEXTSONG,          /* skip >| */
1659         [0x1f] = KEY_EXIT,              /* back/exit */
1660         [0x20] = KEY_CHANNELUP,         /* channel / program + */
1661         [0x21] = KEY_CHANNELDOWN,       /* channel / program - */
1662         [0x22] = KEY_CHANNEL,           /* source (old black remote) */
1663         [0x24] = KEY_PREVIOUSSONG,      /* replay |< */
1664         [0x25] = KEY_ENTER,             /* OK */
1665         [0x26] = KEY_SLEEP,             /* minimize (old black remote) */
1666         [0x29] = KEY_BLUE,              /* blue key */
1667         [0x2e] = KEY_GREEN,             /* green button */
1668         [0x30] = KEY_PAUSE,             /* pause */
1669         [0x32] = KEY_REWIND,            /* backward << */
1670         [0x34] = KEY_FASTFORWARD,       /* forward >> */
1671         [0x35] = KEY_PLAY,
1672         [0x36] = KEY_STOP,
1673         [0x37] = KEY_RECORD,            /* recording */
1674         [0x38] = KEY_YELLOW,            /* yellow key */
1675         [0x3b] = KEY_SELECT,            /* top right button */
1676         [0x3c] = KEY_ZOOM,              /* full */
1677         [0x3d] = KEY_POWER,             /* system power (green button) */
1678 };
1679 EXPORT_SYMBOL_GPL(ir_codes_hauppauge_new);
1680
1681 IR_KEYTAB_TYPE ir_codes_npgtech[IR_KEYTAB_SIZE] = {
1682         [0x1d] = KEY_SWITCHVIDEOMODE,   /* switch inputs */
1683         [0x2a] = KEY_FRONT,
1684
1685         [0x3e] = KEY_1,
1686         [0x02] = KEY_2,
1687         [0x06] = KEY_3,
1688         [0x0a] = KEY_4,
1689         [0x0e] = KEY_5,
1690         [0x12] = KEY_6,
1691         [0x16] = KEY_7,
1692         [0x1a] = KEY_8,
1693         [0x1e] = KEY_9,
1694         [0x3a] = KEY_0,
1695         [0x22] = KEY_NUMLOCK,           /* -/-- */
1696         [0x20] = KEY_REFRESH,
1697
1698         [0x03] = KEY_BRIGHTNESSDOWN,
1699         [0x28] = KEY_AUDIO,
1700         [0x3c] = KEY_UP,
1701         [0x3f] = KEY_LEFT,
1702         [0x2e] = KEY_MUTE,
1703         [0x3b] = KEY_RIGHT,
1704         [0x00] = KEY_DOWN,
1705         [0x07] = KEY_BRIGHTNESSUP,
1706         [0x2c] = KEY_TEXT,
1707
1708         [0x37] = KEY_RECORD,
1709         [0x17] = KEY_PLAY,
1710         [0x13] = KEY_PAUSE,
1711         [0x26] = KEY_STOP,
1712         [0x18] = KEY_FASTFORWARD,
1713         [0x14] = KEY_REWIND,
1714         [0x33] = KEY_ZOOM,
1715         [0x32] = KEY_KEYBOARD,
1716         [0x30] = KEY_GOTO,              /* Pointing arrow */
1717         [0x36] = KEY_MACRO,             /* Maximize/Minimize (yellow) */
1718         [0x0b] = KEY_RADIO,
1719         [0x10] = KEY_POWER,
1720
1721 };
1722 EXPORT_SYMBOL_GPL(ir_codes_npgtech);
1723
1724 /* Norwood Micro (non-Pro) TV Tuner
1725    By Peter Naulls <peter@chocky.org>
1726    Key comments are the functions given in the manual */
1727 IR_KEYTAB_TYPE ir_codes_norwood[IR_KEYTAB_SIZE] = {
1728         /* Keys 0 to 9 */
1729         [0x20] = KEY_0,
1730         [0x21] = KEY_1,
1731         [0x22] = KEY_2,
1732         [0x23] = KEY_3,
1733         [0x24] = KEY_4,
1734         [0x25] = KEY_5,
1735         [0x26] = KEY_6,
1736         [0x27] = KEY_7,
1737         [0x28] = KEY_8,
1738         [0x29] = KEY_9,
1739
1740         [0x78] = KEY_TUNER,             /* Video Source        */
1741         [0x2c] = KEY_EXIT,              /* Open/Close software */
1742         [0x2a] = KEY_SELECT,            /* 2 Digit Select      */
1743         [0x69] = KEY_AGAIN,             /* Recall              */
1744
1745         [0x32] = KEY_BRIGHTNESSUP,      /* Brightness increase */
1746         [0x33] = KEY_BRIGHTNESSDOWN,    /* Brightness decrease */
1747         [0x6b] = KEY_KPPLUS,    /* (not named >>>>>)   */
1748         [0x6c] = KEY_KPMINUS,   /* (not named <<<<<)   */
1749
1750         [0x2d] = KEY_MUTE,      /* Mute                */
1751         [0x30] = KEY_VOLUMEUP,  /* Volume up           */
1752         [0x31] = KEY_VOLUMEDOWN,/* Volume down         */
1753         [0x60] = KEY_CHANNELUP, /* Channel up          */
1754         [0x61] = KEY_CHANNELDOWN,/* Channel down        */
1755
1756         [0x3f] = KEY_RECORD,    /* Record              */
1757         [0x37] = KEY_PLAY,      /* Play                */
1758         [0x36] = KEY_PAUSE,     /* Pause               */
1759         [0x2b] = KEY_STOP,      /* Stop                */
1760         [0x67] = KEY_FASTFORWARD,/* Foward              */
1761         [0x66] = KEY_REWIND,    /* Rewind              */
1762         [0x3e] = KEY_SEARCH,    /* Auto Scan           */
1763         [0x2e] = KEY_CAMERA,    /* Capture Video       */
1764         [0x6d] = KEY_MENU,      /* Show/Hide Control   */
1765         [0x2f] = KEY_ZOOM,      /* Full Screen         */
1766         [0x34] = KEY_RADIO,     /* FM                  */
1767         [0x65] = KEY_POWER,     /* Computer power      */
1768 };
1769 EXPORT_SYMBOL_GPL(ir_codes_norwood);
1770
1771 /* From reading the following remotes:
1772  * Zenith Universal 7 / TV Mode 807 / VCR Mode 837
1773  * Hauppauge (from NOVA-CI-s box product)
1774  * This is a "middle of the road" approach, differences are noted
1775  */
1776 IR_KEYTAB_TYPE ir_codes_budget_ci_old[IR_KEYTAB_SIZE] = {
1777         [0x00] = KEY_0,
1778         [0x01] = KEY_1,
1779         [0x02] = KEY_2,
1780         [0x03] = KEY_3,
1781         [0x04] = KEY_4,
1782         [0x05] = KEY_5,
1783         [0x06] = KEY_6,
1784         [0x07] = KEY_7,
1785         [0x08] = KEY_8,
1786         [0x09] = KEY_9,
1787         [0x0a] = KEY_ENTER,
1788         [0x0b] = KEY_RED,
1789         [0x0c] = KEY_POWER,             /* RADIO on Hauppauge */
1790         [0x0d] = KEY_MUTE,
1791         [0x0f] = KEY_A,                 /* TV on Hauppauge */
1792         [0x10] = KEY_VOLUMEUP,
1793         [0x11] = KEY_VOLUMEDOWN,
1794         [0x14] = KEY_B,
1795         [0x1c] = KEY_UP,
1796         [0x1d] = KEY_DOWN,
1797         [0x1e] = KEY_OPTION,            /* RESERVED on Hauppauge */
1798         [0x1f] = KEY_BREAK,
1799         [0x20] = KEY_CHANNELUP,
1800         [0x21] = KEY_CHANNELDOWN,
1801         [0x22] = KEY_PREVIOUS,          /* Prev Ch on Zenith, SOURCE on Hauppauge */
1802         [0x24] = KEY_RESTART,
1803         [0x25] = KEY_OK,
1804         [0x26] = KEY_CYCLEWINDOWS,      /* MINIMIZE on Hauppauge */
1805         [0x28] = KEY_ENTER,             /* VCR mode on Zenith */
1806         [0x29] = KEY_PAUSE,
1807         [0x2b] = KEY_RIGHT,
1808         [0x2c] = KEY_LEFT,
1809         [0x2e] = KEY_MENU,              /* FULL SCREEN on Hauppauge */
1810         [0x30] = KEY_SLOW,
1811         [0x31] = KEY_PREVIOUS,          /* VCR mode on Zenith */
1812         [0x32] = KEY_REWIND,
1813         [0x34] = KEY_FASTFORWARD,
1814         [0x35] = KEY_PLAY,
1815         [0x36] = KEY_STOP,
1816         [0x37] = KEY_RECORD,
1817         [0x38] = KEY_TUNER,             /* TV/VCR on Zenith */
1818         [0x3a] = KEY_C,
1819         [0x3c] = KEY_EXIT,
1820         [0x3d] = KEY_POWER2,
1821         [0x3e] = KEY_TUNER,
1822 };
1823 EXPORT_SYMBOL_GPL(ir_codes_budget_ci_old);
1824
1825 /*
1826  * Marc Fargas <telenieko@telenieko.com>
1827  * this is the remote control that comes with the asus p7131
1828  * which has a label saying is "Model PC-39"
1829  */
1830 IR_KEYTAB_TYPE ir_codes_asus_pc39[IR_KEYTAB_SIZE] = {
1831         /* Keys 0 to 9 */
1832         [0x15] = KEY_0,
1833         [0x29] = KEY_1,
1834         [0x2d] = KEY_2,
1835         [0x2b] = KEY_3,
1836         [0x09] = KEY_4,
1837         [0x0d] = KEY_5,
1838         [0x0b] = KEY_6,
1839         [0x31] = KEY_7,
1840         [0x35] = KEY_8,
1841         [0x33] = KEY_9,
1842
1843         [0x3e] = KEY_RADIO,             /* radio */
1844         [0x03] = KEY_MENU,              /* dvd/menu */
1845         [0x2a] = KEY_VOLUMEUP,
1846         [0x19] = KEY_VOLUMEDOWN,
1847         [0x37] = KEY_UP,
1848         [0x3b] = KEY_DOWN,
1849         [0x27] = KEY_LEFT,
1850         [0x2f] = KEY_RIGHT,
1851         [0x25] = KEY_VIDEO,             /* video */
1852         [0x39] = KEY_AUDIO,             /* music */
1853
1854         [0x21] = KEY_TV,                /* tv */
1855         [0x1d] = KEY_EXIT,              /* back */
1856         [0x0a] = KEY_CHANNELUP,         /* channel / program + */
1857         [0x1b] = KEY_CHANNELDOWN,       /* channel / program - */
1858         [0x1a] = KEY_ENTER,             /* enter */
1859
1860         [0x06] = KEY_PAUSE,             /* play/pause */
1861         [0x1e] = KEY_PREVIOUS,          /* rew */
1862         [0x26] = KEY_NEXT,              /* forward */
1863         [0x0e] = KEY_REWIND,            /* backward << */
1864         [0x3a] = KEY_FASTFORWARD,       /* forward >> */
1865         [0x36] = KEY_STOP,
1866         [0x2e] = KEY_RECORD,            /* recording */
1867         [0x16] = KEY_POWER,             /* the button that reads "close" */
1868
1869         [0x11] = KEY_ZOOM,              /* full screen */
1870         [0x13] = KEY_MACRO,             /* recall */
1871         [0x23] = KEY_HOME,              /* home */
1872         [0x05] = KEY_PVR,               /* picture */
1873         [0x3d] = KEY_MUTE,              /* mute */
1874         [0x01] = KEY_DVD,               /* dvd */
1875 };
1876 EXPORT_SYMBOL_GPL(ir_codes_asus_pc39);
1877
1878
1879 /* Encore ENLTV-FM  - black plastic, white front cover with white glowing buttons
1880     Juan Pablo Sormani <sorman@gmail.com> */
1881 IR_KEYTAB_TYPE ir_codes_encore_enltv[IR_KEYTAB_SIZE] = {
1882
1883         /* Power button does nothing, neither in Windows app,
1884          although it sends data (used for BIOS wakeup?) */
1885         [0x0d] = KEY_MUTE,
1886
1887         [0x1e] = KEY_TV,
1888         [0x00] = KEY_VIDEO,
1889         [0x01] = KEY_AUDIO,             /* music */
1890         [0x02] = KEY_MHP,               /* picture */
1891
1892         [0x1f] = KEY_1,
1893         [0x03] = KEY_2,
1894         [0x04] = KEY_3,
1895         [0x05] = KEY_4,
1896         [0x1c] = KEY_5,
1897         [0x06] = KEY_6,
1898         [0x07] = KEY_7,
1899         [0x08] = KEY_8,
1900         [0x1d] = KEY_9,
1901         [0x0a] = KEY_0,
1902
1903         [0x09] = KEY_LIST,              /* -/-- */
1904         [0x0b] = KEY_LAST,              /* recall */
1905
1906         [0x14] = KEY_HOME,              /* win start menu */
1907         [0x15] = KEY_EXIT,              /* exit */
1908         [0x16] = KEY_UP,
1909         [0x12] = KEY_DOWN,
1910         [0x0c] = KEY_RIGHT,
1911         [0x17] = KEY_LEFT,
1912
1913         [0x18] = KEY_ENTER,             /* OK */
1914
1915         [0x0e] = KEY_ESC,
1916         [0x13] = KEY_CYCLEWINDOWS,      /* desktop */
1917         [0x11] = KEY_TAB,
1918         [0x19] = KEY_SWITCHVIDEOMODE,   /* switch */
1919
1920         [0x1a] = KEY_MENU,
1921         [0x1b] = KEY_ZOOM,              /* fullscreen */
1922         [0x44] = KEY_TIME,              /* time shift */
1923         [0x40] = KEY_MODE,              /* source */
1924
1925         [0x5a] = KEY_RECORD,
1926         [0x42] = KEY_PLAY,              /* play/pause */
1927         [0x45] = KEY_STOP,
1928         [0x43] = KEY_CAMERA,            /* camera icon */
1929
1930         [0x48] = KEY_REWIND,
1931         [0x4a] = KEY_FASTFORWARD,
1932         [0x49] = KEY_PREVIOUS,
1933         [0x4b] = KEY_NEXT,
1934
1935         [0x4c] = KEY_FAVORITES,         /* tv wall */
1936         [0x4d] = KEY_SOUND,             /* DVD sound */
1937         [0x4e] = KEY_LANGUAGE,          /* DVD lang */
1938         [0x4f] = KEY_TEXT,              /* DVD text */
1939
1940         [0x50] = KEY_SLEEP,             /* shutdown */
1941         [0x51] = KEY_MODE,              /* stereo > main */
1942         [0x52] = KEY_SELECT,            /* stereo > sap */
1943         [0x53] = KEY_PROG1,             /* teletext */
1944
1945
1946         [0x59] = KEY_RED,               /* AP1 */
1947         [0x41] = KEY_GREEN,             /* AP2 */
1948         [0x47] = KEY_YELLOW,            /* AP3 */
1949         [0x57] = KEY_BLUE,              /* AP4 */
1950 };
1951 EXPORT_SYMBOL_GPL(ir_codes_encore_enltv);
1952
1953 /* Encore ENLTV2-FM  - silver plastic - "Wand Media" written at the botton
1954     Mauro Carvalho Chehab <mchehab@infradead.org> */
1955 IR_KEYTAB_TYPE ir_codes_encore_enltv2[IR_KEYTAB_SIZE] = {
1956         [0x4c] = KEY_POWER2,
1957         [0x4a] = KEY_TUNER,
1958         [0x40] = KEY_1,
1959         [0x60] = KEY_2,
1960         [0x50] = KEY_3,
1961         [0x70] = KEY_4,
1962         [0x48] = KEY_5,
1963         [0x68] = KEY_6,
1964         [0x58] = KEY_7,
1965         [0x78] = KEY_8,
1966         [0x44] = KEY_9,
1967         [0x54] = KEY_0,
1968
1969         [0x64] = KEY_LAST,              /* +100 */
1970         [0x4e] = KEY_AGAIN,             /* Recall */
1971
1972         [0x6c] = KEY_SWITCHVIDEOMODE,   /* Video Source */
1973         [0x5e] = KEY_MENU,
1974         [0x56] = KEY_SCREEN,
1975         [0x7a] = KEY_SETUP,
1976
1977         [0x46] = KEY_MUTE,
1978         [0x5c] = KEY_MODE,              /* Stereo */
1979         [0x74] = KEY_INFO,
1980         [0x7c] = KEY_CLEAR,
1981
1982         [0x55] = KEY_UP,
1983         [0x49] = KEY_DOWN,
1984         [0x7e] = KEY_LEFT,
1985         [0x59] = KEY_RIGHT,
1986         [0x6a] = KEY_ENTER,
1987
1988         [0x42] = KEY_VOLUMEUP,
1989         [0x62] = KEY_VOLUMEDOWN,
1990         [0x52] = KEY_CHANNELUP,
1991         [0x72] = KEY_CHANNELDOWN,
1992
1993         [0x41] = KEY_RECORD,
1994         [0x51] = KEY_SHUFFLE,           /* Snapshot */
1995         [0x75] = KEY_TIME,              /* Timeshift */
1996         [0x71] = KEY_TV2,               /* PIP */
1997
1998         [0x45] = KEY_REWIND,
1999         [0x6f] = KEY_PAUSE,
2000         [0x7d] = KEY_FORWARD,
2001         [0x79] = KEY_STOP,
2002 };
2003 EXPORT_SYMBOL_GPL(ir_codes_encore_enltv2);
2004
2005 /* for the Technotrend 1500 bundled remotes (grey and black): */
2006 IR_KEYTAB_TYPE ir_codes_tt_1500[IR_KEYTAB_SIZE] = {
2007         [0x01] = KEY_POWER,
2008         [0x02] = KEY_SHUFFLE,           /* ? double-arrow key */
2009         [0x03] = KEY_1,
2010         [0x04] = KEY_2,
2011         [0x05] = KEY_3,
2012         [0x06] = KEY_4,
2013         [0x07] = KEY_5,
2014         [0x08] = KEY_6,
2015         [0x09] = KEY_7,
2016         [0x0a] = KEY_8,
2017         [0x0b] = KEY_9,
2018         [0x0c] = KEY_0,
2019         [0x0d] = KEY_UP,
2020         [0x0e] = KEY_LEFT,
2021         [0x0f] = KEY_OK,
2022         [0x10] = KEY_RIGHT,
2023         [0x11] = KEY_DOWN,
2024         [0x12] = KEY_INFO,
2025         [0x13] = KEY_EXIT,
2026         [0x14] = KEY_RED,
2027         [0x15] = KEY_GREEN,
2028         [0x16] = KEY_YELLOW,
2029         [0x17] = KEY_BLUE,
2030         [0x18] = KEY_MUTE,
2031         [0x19] = KEY_TEXT,
2032         [0x1a] = KEY_MODE,              /* ? TV/Radio */
2033         [0x21] = KEY_OPTION,
2034         [0x22] = KEY_EPG,
2035         [0x23] = KEY_CHANNELUP,
2036         [0x24] = KEY_CHANNELDOWN,
2037         [0x25] = KEY_VOLUMEUP,
2038         [0x26] = KEY_VOLUMEDOWN,
2039         [0x27] = KEY_SETUP,
2040         [0x3a] = KEY_RECORD,            /* these keys are only in the black remote */
2041         [0x3b] = KEY_PLAY,
2042         [0x3c] = KEY_STOP,
2043         [0x3d] = KEY_REWIND,
2044         [0x3e] = KEY_PAUSE,
2045         [0x3f] = KEY_FORWARD,
2046 };
2047 EXPORT_SYMBOL_GPL(ir_codes_tt_1500);
2048
2049 /* DViCO FUSION HDTV MCE remote */
2050 IR_KEYTAB_TYPE ir_codes_fusionhdtv_mce[IR_KEYTAB_SIZE] = {
2051
2052         [0x0b] = KEY_1,
2053         [0x17] = KEY_2,
2054         [0x1b] = KEY_3,
2055         [0x07] = KEY_4,
2056         [0x50] = KEY_5,
2057         [0x54] = KEY_6,
2058         [0x48] = KEY_7,
2059         [0x4c] = KEY_8,
2060         [0x58] = KEY_9,
2061         [0x03] = KEY_0,
2062
2063         [0x5e] = KEY_OK,
2064         [0x51] = KEY_UP,
2065         [0x53] = KEY_DOWN,
2066         [0x5b] = KEY_LEFT,
2067         [0x5f] = KEY_RIGHT,
2068
2069         [0x02] = KEY_TV,                /* Labeled DTV on remote */
2070         [0x0e] = KEY_MP3,
2071         [0x1a] = KEY_DVD,
2072         [0x1e] = KEY_FAVORITES,         /* Labeled CPF on remote */
2073         [0x16] = KEY_SETUP,
2074         [0x46] = KEY_POWER2,            /* TV On/Off button on remote */
2075         [0x0a] = KEY_EPG,               /* Labeled Guide on remote */
2076
2077         [0x49] = KEY_BACK,
2078         [0x59] = KEY_INFO,              /* Labeled MORE on remote */
2079         [0x4d] = KEY_MENU,              /* Labeled DVDMENU on remote */
2080         [0x55] = KEY_CYCLEWINDOWS,      /* Labeled ALT-TAB on remote */
2081
2082         [0x0f] = KEY_PREVIOUSSONG,      /* Labeled |<< REPLAY on remote */
2083         [0x12] = KEY_NEXTSONG,          /* Labeled >>| SKIP on remote */
2084         [0x42] = KEY_ENTER,             /* Labeled START with a green
2085                                            MS windows logo on remote */
2086
2087         [0x15] = KEY_VOLUMEUP,
2088         [0x05] = KEY_VOLUMEDOWN,
2089         [0x11] = KEY_CHANNELUP,
2090         [0x09] = KEY_CHANNELDOWN,
2091
2092         [0x52] = KEY_CAMERA,
2093         [0x5a] = KEY_TUNER,
2094         [0x19] = KEY_OPEN,
2095
2096         [0x13] = KEY_MODE,              /* 4:3 16:9 select */
2097         [0x1f] = KEY_ZOOM,
2098
2099         [0x43] = KEY_REWIND,
2100         [0x47] = KEY_PLAYPAUSE,
2101         [0x4f] = KEY_FASTFORWARD,
2102         [0x57] = KEY_MUTE,
2103         [0x0d] = KEY_STOP,
2104         [0x01] = KEY_RECORD,
2105         [0x4e] = KEY_POWER,
2106 };
2107 EXPORT_SYMBOL_GPL(ir_codes_fusionhdtv_mce);
2108
2109 /* Pinnacle PCTV HD 800i mini remote */
2110 IR_KEYTAB_TYPE ir_codes_pinnacle_pctv_hd[IR_KEYTAB_SIZE] = {
2111
2112         [0x0f] = KEY_1,
2113         [0x15] = KEY_2,
2114         [0x10] = KEY_3,
2115         [0x18] = KEY_4,
2116         [0x1b] = KEY_5,
2117         [0x1e] = KEY_6,
2118         [0x11] = KEY_7,
2119         [0x21] = KEY_8,
2120         [0x12] = KEY_9,
2121         [0x27] = KEY_0,
2122
2123         [0x24] = KEY_ZOOM,
2124         [0x2a] = KEY_SUBTITLE,
2125
2126         [0x00] = KEY_MUTE,
2127         [0x01] = KEY_ENTER,     /* Pinnacle Logo */
2128         [0x39] = KEY_POWER,
2129
2130         [0x03] = KEY_VOLUMEUP,
2131         [0x09] = KEY_VOLUMEDOWN,
2132         [0x06] = KEY_CHANNELUP,
2133         [0x0c] = KEY_CHANNELDOWN,
2134
2135         [0x2d] = KEY_REWIND,
2136         [0x30] = KEY_PLAYPAUSE,
2137         [0x33] = KEY_FASTFORWARD,
2138         [0x3c] = KEY_STOP,
2139         [0x36] = KEY_RECORD,
2140         [0x3f] = KEY_EPG,       /* Labeled "?" */
2141 };
2142 EXPORT_SYMBOL_GPL(ir_codes_pinnacle_pctv_hd);
2143
2144 /*
2145  * Igor Kuznetsov <igk72@ya.ru>
2146  * Andrey J. Melnikov <temnota@kmv.ru>
2147  *
2148  * Keytable is used by BeholdTV 60x series, M6 series at
2149  * least, and probably other cards too.
2150  * The "ascii-art picture" below (in comments, first row
2151  * is the keycode in hex, and subsequent row(s) shows
2152  * the button labels (several variants when appropriate)
2153  * helps to descide which keycodes to assign to the buttons.
2154  */
2155 IR_KEYTAB_TYPE ir_codes_behold[IR_KEYTAB_SIZE] = {
2156
2157         /*  0x1c            0x12  *
2158          *  TV/FM          POWER  *
2159          *                        */
2160         [0x1c] = KEY_TUNER,     /* XXX KEY_TV / KEY_RADIO */
2161         [0x12] = KEY_POWER,
2162
2163         /*  0x01    0x02    0x03  *
2164          *   1       2       3    *
2165          *                        *
2166          *  0x04    0x05    0x06  *
2167          *   4       5       6    *
2168          *                        *
2169          *  0x07    0x08    0x09  *
2170          *   7       8       9    *
2171          *                        */
2172         [0x01] = KEY_1,
2173         [0x02] = KEY_2,
2174         [0x03] = KEY_3,
2175         [0x04] = KEY_4,
2176         [0x05] = KEY_5,
2177         [0x06] = KEY_6,
2178         [0x07] = KEY_7,
2179         [0x08] = KEY_8,
2180         [0x09] = KEY_9,
2181
2182         /*  0x0a    0x00    0x17  *
2183          * RECALL    0      MODE  *
2184          *                        */
2185         [0x0a] = KEY_AGAIN,
2186         [0x00] = KEY_0,
2187         [0x17] = KEY_MODE,
2188
2189         /*  0x14          0x10    *
2190          * ASPECT      FULLSCREEN *
2191          *                        */
2192         [0x14] = KEY_SCREEN,
2193         [0x10] = KEY_ZOOM,
2194
2195         /*          0x0b          *
2196          *           Up           *
2197          *                        *
2198          *  0x18    0x16    0x0c  *
2199          *  Left     Ok     Right *
2200          *                        *
2201          *         0x015          *
2202          *         Down           *
2203          *                        */
2204         [0x0b] = KEY_CHANNELUP,         /* XXX KEY_UP */
2205         [0x18] = KEY_VOLUMEDOWN,        /* XXX KEY_LEFT */
2206         [0x16] = KEY_OK,                /* XXX KEY_ENTER */
2207         [0x0c] = KEY_VOLUMEUP,          /* XXX KEY_RIGHT */
2208         [0x15] = KEY_CHANNELDOWN,       /* XXX KEY_DOWN */
2209
2210         /*  0x11            0x0d  *
2211          *  MUTE            INFO  *
2212          *                        */
2213         [0x11] = KEY_MUTE,
2214         [0x0d] = KEY_INFO,
2215
2216         /*  0x0f    0x1b    0x1a  *
2217          * RECORD PLAY/PAUSE STOP *
2218          *                        *
2219          *  0x0e    0x1f    0x1e  *
2220          *TELETEXT  AUDIO  SOURCE *
2221          *           RED   YELLOW *
2222          *                        */
2223         [0x0f] = KEY_RECORD,
2224         [0x1b] = KEY_PLAYPAUSE,
2225         [0x1a] = KEY_STOP,
2226         [0x0e] = KEY_TEXT,
2227         [0x1f] = KEY_RED,       /*XXX KEY_AUDIO */
2228         [0x1e] = KEY_YELLOW,    /*XXX KEY_SOURCE        */
2229
2230         /*  0x1d   0x13     0x19  *
2231          * SLEEP  PREVIEW   DVB   *
2232          *         GREEN    BLUE  *
2233          *                        */
2234         [0x1d] = KEY_SLEEP,
2235         [0x13] = KEY_GREEN,
2236         [0x19] = KEY_BLUE,      /* XXX KEY_SAT  */
2237
2238         /*  0x58           0x5c   *
2239          * FREEZE        SNAPSHOT *
2240          *                        */
2241         [0x58] = KEY_SLOW,
2242         [0x5c] = KEY_SAVE,
2243
2244 };
2245 EXPORT_SYMBOL_GPL(ir_codes_behold);
2246
2247 /* Beholder Intl. Ltd. 2008
2248  * Dmitry Belimov d.belimov@google.com
2249  * Keytable is used by BeholdTV Columbus
2250  * The "ascii-art picture" below (in comments, first row
2251  * is the keycode in hex, and subsequent row(s) shows
2252  * the button labels (several variants when appropriate)
2253  * helps to descide which keycodes to assign to the buttons.
2254  */
2255 IR_KEYTAB_TYPE ir_codes_behold_columbus[IR_KEYTAB_SIZE] = {
2256
2257         /*  0x13   0x11   0x1C   0x12  *
2258          *  Mute  Source  TV/FM  Power *
2259          *                             */
2260
2261         [0x13] = KEY_MUTE,
2262         [0x11] = KEY_PROPS,
2263         [0x1C] = KEY_TUNER,     /* KEY_TV/KEY_RADIO     */
2264         [0x12] = KEY_POWER,
2265
2266         /*  0x01    0x02    0x03  0x0D    *
2267          *   1       2       3   Stereo   *
2268          *                                *
2269          *  0x04    0x05    0x06  0x19    *
2270          *   4       5       6   Snapshot *
2271          *                                *
2272          *  0x07    0x08    0x09  0x10    *
2273          *   7       8       9    Zoom    *
2274          *                                */
2275         [0x01] = KEY_1,
2276         [0x02] = KEY_2,
2277         [0x03] = KEY_3,
2278         [0x0D] = KEY_SETUP,       /* Setup key */
2279         [0x04] = KEY_4,
2280         [0x05] = KEY_5,
2281         [0x06] = KEY_6,
2282         [0x19] = KEY_BOOKMARKS, /* Snapshot key */
2283         [0x07] = KEY_7,
2284         [0x08] = KEY_8,
2285         [0x09] = KEY_9,
2286         [0x10] = KEY_ZOOM,
2287
2288         /*  0x0A    0x00    0x0B       0x0C   *
2289          * RECALL    0    ChannelUp  VolumeUp *
2290          *                                    */
2291         [0x0A] = KEY_AGAIN,
2292         [0x00] = KEY_0,
2293         [0x0B] = KEY_CHANNELUP,
2294         [0x0C] = KEY_VOLUMEUP,
2295
2296         /*   0x1B      0x1D      0x15        0x18     *
2297          * Timeshift  Record  ChannelDown  VolumeDown *
2298          *                                            */
2299
2300         [0x1B] = KEY_TIME,
2301         [0x1D] = KEY_RECORD,
2302         [0x15] = KEY_CHANNELDOWN,
2303         [0x18] = KEY_VOLUMEDOWN,
2304
2305         /*   0x0E   0x1E     0x0F     0x1A  *
2306          *   Stop   Pause  Previouse  Next  *
2307          *                                  */
2308
2309         [0x0E] = KEY_STOP,
2310         [0x1E] = KEY_PAUSE,
2311         [0x0F] = KEY_PREVIOUS,
2312         [0x1A] = KEY_NEXT,
2313
2314 };
2315 EXPORT_SYMBOL_GPL(ir_codes_behold_columbus);
2316
2317 /*
2318  * Remote control for the Genius TVGO A11MCE
2319  * Adrian Pardini <pardo.bsso@gmail.com>
2320  */
2321 IR_KEYTAB_TYPE ir_codes_genius_tvgo_a11mce[IR_KEYTAB_SIZE] = {
2322         /* Keys 0 to 9 */
2323         [0x48] = KEY_0,
2324         [0x09] = KEY_1,
2325         [0x1d] = KEY_2,
2326         [0x1f] = KEY_3,
2327         [0x19] = KEY_4,
2328         [0x1b] = KEY_5,
2329         [0x11] = KEY_6,
2330         [0x17] = KEY_7,
2331         [0x12] = KEY_8,
2332         [0x16] = KEY_9,
2333
2334         [0x54] = KEY_RECORD,            /* recording */
2335         [0x06] = KEY_MUTE,              /* mute */
2336         [0x10] = KEY_POWER,
2337         [0x40] = KEY_LAST,              /* recall */
2338         [0x4c] = KEY_CHANNELUP,         /* channel / program + */
2339         [0x00] = KEY_CHANNELDOWN,       /* channel / program - */
2340         [0x0d] = KEY_VOLUMEUP,
2341         [0x15] = KEY_VOLUMEDOWN,
2342         [0x4d] = KEY_OK,                /* also labeled as Pause */
2343         [0x1c] = KEY_ZOOM,              /* full screen and Stop*/
2344         [0x02] = KEY_MODE,              /* AV Source or Rewind*/
2345         [0x04] = KEY_LIST,              /* -/-- */
2346         /* small arrows above numbers */
2347         [0x1a] = KEY_NEXT,              /* also Fast Forward */
2348         [0x0e] = KEY_PREVIOUS,          /* also Rewind */
2349         /* these are in a rather non standard layout and have
2350         an alternate name written */
2351         [0x1e] = KEY_UP,                /* Video Setting */
2352         [0x0a] = KEY_DOWN,              /* Video Default */
2353         [0x05] = KEY_LEFT,              /* Snapshot */
2354         [0x0c] = KEY_RIGHT,             /* Hide Panel */
2355         /* Four buttons without label */
2356         [0x49] = KEY_RED,
2357         [0x0b] = KEY_GREEN,
2358         [0x13] = KEY_YELLOW,
2359         [0x50] = KEY_BLUE,
2360 };
2361 EXPORT_SYMBOL_GPL(ir_codes_genius_tvgo_a11mce);
2362
2363 /*
2364  * Remote control for Powercolor Real Angel 330
2365  * Daniel Fraga <fragabr@gmail.com>
2366  */
2367 IR_KEYTAB_TYPE ir_codes_powercolor_real_angel[IR_KEYTAB_SIZE] = {
2368         [0x38] = KEY_SWITCHVIDEOMODE,   /* switch inputs */
2369         [0x0c] = KEY_MEDIA,             /* Turn ON/OFF App */
2370         [0x00] = KEY_0,
2371         [0x01] = KEY_1,
2372         [0x02] = KEY_2,
2373         [0x03] = KEY_3,
2374         [0x04] = KEY_4,
2375         [0x05] = KEY_5,
2376         [0x06] = KEY_6,
2377         [0x07] = KEY_7,
2378         [0x08] = KEY_8,
2379         [0x09] = KEY_9,
2380         [0x0a] = KEY_DIGITS,            /* single, double, tripple digit */
2381         [0x29] = KEY_PREVIOUS,          /* previous channel */
2382         [0x12] = KEY_BRIGHTNESSUP,
2383         [0x13] = KEY_BRIGHTNESSDOWN,
2384         [0x2b] = KEY_MODE,              /* stereo/mono */
2385         [0x2c] = KEY_TEXT,              /* teletext */
2386         [0x20] = KEY_UP,                /* channel up */
2387         [0x21] = KEY_DOWN,              /* channel down */
2388         [0x10] = KEY_RIGHT,             /* volume up */
2389         [0x11] = KEY_LEFT,              /* volume down */
2390         [0x0d] = KEY_MUTE,
2391         [0x1f] = KEY_RECORD,
2392         [0x17] = KEY_PLAY,
2393         [0x16] = KEY_PAUSE,
2394         [0x0b] = KEY_STOP,
2395         [0x27] = KEY_FASTFORWARD,
2396         [0x26] = KEY_REWIND,
2397         [0x1e] = KEY_SEARCH,            /* autoscan */
2398         [0x0e] = KEY_SHUFFLE,           /* snapshot */
2399         [0x2d] = KEY_SETUP,
2400         [0x0f] = KEY_SCREEN,            /* full screen */
2401         [0x14] = KEY_RADIO,             /* FM radio */
2402         [0x25] = KEY_POWER,             /* power */
2403 };
2404 EXPORT_SYMBOL_GPL(ir_codes_powercolor_real_angel);
2405
2406 /* Kworld Plus TV Analog Lite PCI IR
2407    Mauro Carvalho Chehab <mchehab@infradead.org>
2408  */
2409 IR_KEYTAB_TYPE ir_codes_kworld_plus_tv_analog[IR_KEYTAB_SIZE] = {
2410         [0x0c] = KEY_PROG1,             /* Kworld key */
2411         [0x16] = KEY_CLOSECD,           /* -> ) */
2412         [0x1d] = KEY_POWER2,
2413
2414         [0x00] = KEY_1,
2415         [0x01] = KEY_2,
2416         [0x02] = KEY_3,                 /* Two keys have the same code: 3 and left */
2417         [0x03] = KEY_4,                 /* Two keys have the same code: 3 and right */
2418         [0x04] = KEY_5,
2419         [0x05] = KEY_6,
2420         [0x06] = KEY_7,
2421         [0x07] = KEY_8,
2422         [0x08] = KEY_9,
2423         [0x0a] = KEY_0,
2424
2425         [0x09] = KEY_AGAIN,
2426         [0x14] = KEY_MUTE,
2427
2428         [0x20] = KEY_UP,
2429         [0x21] = KEY_DOWN,
2430         [0x0b] = KEY_ENTER,
2431
2432         [0x10] = KEY_CHANNELUP,
2433         [0x11] = KEY_CHANNELDOWN,
2434
2435         /* Couldn't map key left/key right since those
2436            conflict with '3' and '4' scancodes
2437            I dunno what the original driver does
2438          */
2439
2440         [0x13] = KEY_VOLUMEUP,
2441         [0x12] = KEY_VOLUMEDOWN,
2442
2443         /* The lower part of the IR
2444            There are several duplicated keycodes there.
2445            Most of them conflict with digits.
2446            Add mappings just to the unused scancodes.
2447            Somehow, the original driver has a way to know,
2448            but this doesn't seem to be on some GPIO.
2449            Also, it is not related to the time between keyup
2450            and keydown.
2451          */
2452         [0x19] = KEY_TIME,              /* Timeshift */
2453         [0x1a] = KEY_STOP,
2454         [0x1b] = KEY_RECORD,
2455
2456         [0x22] = KEY_TEXT,
2457
2458         [0x15] = KEY_AUDIO,             /* ((*)) */
2459         [0x0f] = KEY_ZOOM,
2460         [0x1c] = KEY_SHUFFLE,           /* snapshot */
2461
2462         [0x18] = KEY_RED,               /* B */
2463         [0x23] = KEY_GREEN,             /* C */
2464 };
2465 EXPORT_SYMBOL_GPL(ir_codes_kworld_plus_tv_analog);
2466
2467 /* Kaiomy TVnPC U2
2468    Mauro Carvalho Chehab <mchehab@infradead.org>
2469  */
2470 IR_KEYTAB_TYPE ir_codes_kaiomy[IR_KEYTAB_SIZE] = {
2471         [0x43] = KEY_POWER2,
2472         [0x01] = KEY_LIST,
2473         [0x0b] = KEY_ZOOM,
2474         [0x03] = KEY_POWER,
2475
2476         [0x04] = KEY_1,
2477         [0x08] = KEY_2,
2478         [0x02] = KEY_3,
2479
2480         [0x0f] = KEY_4,
2481         [0x05] = KEY_5,
2482         [0x06] = KEY_6,
2483
2484         [0x0c] = KEY_7,
2485         [0x0d] = KEY_8,
2486         [0x0a] = KEY_9,
2487
2488         [0x11] = KEY_0,
2489
2490         [0x09] = KEY_CHANNELUP,
2491         [0x07] = KEY_CHANNELDOWN,
2492
2493         [0x0e] = KEY_VOLUMEUP,
2494         [0x13] = KEY_VOLUMEDOWN,
2495
2496         [0x10] = KEY_HOME,
2497         [0x12] = KEY_ENTER,
2498
2499         [0x14] = KEY_RECORD,
2500         [0x15] = KEY_STOP,
2501         [0x16] = KEY_PLAY,
2502         [0x17] = KEY_MUTE,
2503
2504         [0x18] = KEY_UP,
2505         [0x19] = KEY_DOWN,
2506         [0x1a] = KEY_LEFT,
2507         [0x1b] = KEY_RIGHT,
2508
2509         [0x1c] = KEY_RED,
2510         [0x1d] = KEY_GREEN,
2511         [0x1e] = KEY_YELLOW,
2512         [0x1f] = KEY_BLUE,
2513 };
2514 EXPORT_SYMBOL_GPL(ir_codes_kaiomy);
2515
2516 IR_KEYTAB_TYPE ir_codes_avermedia_a16d[IR_KEYTAB_SIZE] = {
2517         [0x20] = KEY_LIST,
2518         [0x00] = KEY_POWER,
2519         [0x28] = KEY_1,
2520         [0x18] = KEY_2,
2521         [0x38] = KEY_3,
2522         [0x24] = KEY_4,
2523         [0x14] = KEY_5,
2524         [0x34] = KEY_6,
2525         [0x2c] = KEY_7,
2526         [0x1c] = KEY_8,
2527         [0x3c] = KEY_9,
2528         [0x12] = KEY_SUBTITLE,
2529         [0x22] = KEY_0,
2530         [0x32] = KEY_REWIND,
2531         [0x3a] = KEY_SHUFFLE,
2532         [0x02] = KEY_PRINT,
2533         [0x11] = KEY_CHANNELDOWN,
2534         [0x31] = KEY_CHANNELUP,
2535         [0x0c] = KEY_ZOOM,
2536         [0x1e] = KEY_VOLUMEDOWN,
2537         [0x3e] = KEY_VOLUMEUP,
2538         [0x0a] = KEY_MUTE,
2539         [0x04] = KEY_AUDIO,
2540         [0x26] = KEY_RECORD,
2541         [0x06] = KEY_PLAY,
2542         [0x36] = KEY_STOP,
2543         [0x16] = KEY_PAUSE,
2544         [0x2e] = KEY_REWIND,
2545         [0x0e] = KEY_FASTFORWARD,
2546         [0x30] = KEY_TEXT,
2547         [0x21] = KEY_GREEN,
2548         [0x01] = KEY_BLUE,
2549         [0x08] = KEY_EPG,
2550         [0x2a] = KEY_MENU,
2551 };
2552 EXPORT_SYMBOL_GPL(ir_codes_avermedia_a16d);
2553
2554 /* Encore ENLTV-FM v5.3
2555    Mauro Carvalho Chehab <mchehab@infradead.org>
2556  */
2557 IR_KEYTAB_TYPE ir_codes_encore_enltv_fm53[IR_KEYTAB_SIZE] = {
2558         [0x10] = KEY_POWER2,
2559         [0x06] = KEY_MUTE,
2560
2561         [0x09] = KEY_1,
2562         [0x1d] = KEY_2,
2563         [0x1f] = KEY_3,
2564         [0x19] = KEY_4,
2565         [0x1b] = KEY_5,
2566         [0x11] = KEY_6,
2567         [0x17] = KEY_7,
2568         [0x12] = KEY_8,
2569         [0x16] = KEY_9,
2570         [0x48] = KEY_0,
2571
2572         [0x04] = KEY_LIST,              /* -/-- */
2573         [0x40] = KEY_LAST,              /* recall */
2574
2575         [0x02] = KEY_MODE,              /* TV/AV */
2576         [0x05] = KEY_SHUFFLE,           /* SNAPSHOT */
2577
2578         [0x4c] = KEY_CHANNELUP,         /* UP */
2579         [0x00] = KEY_CHANNELDOWN,       /* DOWN */
2580         [0x0d] = KEY_VOLUMEUP,          /* RIGHT */
2581         [0x15] = KEY_VOLUMEDOWN,        /* LEFT */
2582         [0x49] = KEY_ENTER,             /* OK */
2583
2584         [0x54] = KEY_RECORD,
2585         [0x4d] = KEY_PLAY,              /* pause */
2586
2587         [0x1e] = KEY_UP,                /* video setting */
2588         [0x0e] = KEY_RIGHT,             /* <- */
2589         [0x1a] = KEY_LEFT,              /* -> */
2590
2591         [0x0a] = KEY_DOWN,              /* video default */
2592         [0x0c] = KEY_ZOOM,              /* hide pannel */
2593         [0x47] = KEY_SLEEP,             /* shutdown */
2594 };
2595 EXPORT_SYMBOL_GPL(ir_codes_encore_enltv_fm53);
2596
2597 /* Zogis Real Audio 220 - 32 keys IR */
2598 IR_KEYTAB_TYPE ir_codes_real_audio_220_32_keys[IR_KEYTAB_SIZE] = {
2599         [0x1c] = KEY_RADIO,
2600         [0x12] = KEY_POWER2,
2601
2602         [0x01] = KEY_1,
2603         [0x02] = KEY_2,
2604         [0x03] = KEY_3,
2605         [0x04] = KEY_4,
2606         [0x05] = KEY_5,
2607         [0x06] = KEY_6,
2608         [0x07] = KEY_7,
2609         [0x08] = KEY_8,
2610         [0x09] = KEY_9,
2611         [0x00] = KEY_0,
2612
2613         [0x0c] = KEY_VOLUMEUP,
2614         [0x18] = KEY_VOLUMEDOWN,
2615         [0x0b] = KEY_CHANNELUP,
2616         [0x15] = KEY_CHANNELDOWN,
2617         [0x16] = KEY_ENTER,
2618
2619         [0x11] = KEY_LIST,              /* Source */
2620         [0x0d] = KEY_AUDIO,             /* stereo */
2621
2622         [0x0f] = KEY_PREVIOUS,          /* Prev */
2623         [0x1b] = KEY_TIME,              /* Timeshift */
2624         [0x1a] = KEY_NEXT,              /* Next */
2625
2626         [0x0e] = KEY_STOP,
2627         [0x1f] = KEY_PLAY,
2628         [0x1e] = KEY_PLAYPAUSE,         /* Pause */
2629
2630         [0x1d] = KEY_RECORD,
2631         [0x13] = KEY_MUTE,
2632         [0x19] = KEY_SHUFFLE,           /* Snapshot */
2633
2634 };
2635 EXPORT_SYMBOL_GPL(ir_codes_real_audio_220_32_keys);
2636
2637 /* ATI TV Wonder HD 600 USB
2638    Devin Heitmueller <devin.heitmueller@gmail.com>
2639  */
2640 IR_KEYTAB_TYPE ir_codes_ati_tv_wonder_hd_600[IR_KEYTAB_SIZE] = {
2641         [0x00] = KEY_RECORD,            /* Row 1 */
2642         [0x01] = KEY_PLAYPAUSE,
2643         [0x02] = KEY_STOP,
2644         [0x03] = KEY_POWER,
2645         [0x04] = KEY_PREVIOUS,  /* Row 2 */
2646         [0x05] = KEY_REWIND,
2647         [0x06] = KEY_FORWARD,
2648         [0x07] = KEY_NEXT,
2649         [0x08] = KEY_EPG,               /* Row 3 */
2650         [0x09] = KEY_HOME,
2651         [0x0a] = KEY_MENU,
2652         [0x0b] = KEY_CHANNELUP,
2653         [0x0c] = KEY_BACK,              /* Row 4 */
2654         [0x0d] = KEY_UP,
2655         [0x0e] = KEY_INFO,
2656         [0x0f] = KEY_CHANNELDOWN,
2657         [0x10] = KEY_LEFT,              /* Row 5 */
2658         [0x11] = KEY_SELECT,
2659         [0x12] = KEY_RIGHT,
2660         [0x13] = KEY_VOLUMEUP,
2661         [0x14] = KEY_LAST,              /* Row 6 */
2662         [0x15] = KEY_DOWN,
2663         [0x16] = KEY_MUTE,
2664         [0x17] = KEY_VOLUMEDOWN,
2665 };
2666 EXPORT_SYMBOL_GPL(ir_codes_ati_tv_wonder_hd_600);
2667
2668 /* DVBWorld remotes
2669    Igor M. Liplianin <liplianin@me.by>
2670  */
2671 IR_KEYTAB_TYPE ir_codes_dm1105_nec[IR_KEYTAB_SIZE] = {
2672         [0x0a] = KEY_POWER2,            /* power */
2673         [0x0c] = KEY_MUTE,              /* mute */
2674         [0x11] = KEY_1,
2675         [0x12] = KEY_2,
2676         [0x13] = KEY_3,
2677         [0x14] = KEY_4,
2678         [0x15] = KEY_5,
2679         [0x16] = KEY_6,
2680         [0x17] = KEY_7,
2681         [0x18] = KEY_8,
2682         [0x19] = KEY_9,
2683         [0x10] = KEY_0,
2684         [0x1c] = KEY_PAGEUP,            /* ch+ */
2685         [0x0f] = KEY_PAGEDOWN,          /* ch- */
2686         [0x1a] = KEY_VOLUMEUP,          /* vol+ */
2687         [0x0e] = KEY_VOLUMEDOWN,        /* vol- */
2688         [0x04] = KEY_RECORD,            /* rec */
2689         [0x09] = KEY_CHANNEL,           /* fav */
2690         [0x08] = KEY_BACKSPACE,         /* rewind */
2691         [0x07] = KEY_FASTFORWARD,       /* fast */
2692         [0x0b] = KEY_PAUSE,             /* pause */
2693         [0x02] = KEY_ESC,               /* cancel */
2694         [0x03] = KEY_TAB,               /* tab */
2695         [0x00] = KEY_UP,                /* up */
2696         [0x1f] = KEY_ENTER,             /* ok */
2697         [0x01] = KEY_DOWN,              /* down */
2698         [0x05] = KEY_RECORD,            /* cap */
2699         [0x06] = KEY_STOP,              /* stop */
2700         [0x40] = KEY_ZOOM,              /* full */
2701         [0x1e] = KEY_TV,                /* tvmode */
2702         [0x1b] = KEY_B,                 /* recall */
2703 };
2704 EXPORT_SYMBOL_GPL(ir_codes_dm1105_nec);
2705
2706
2707 /* Terratec Cinergy Hybrid T USB XS
2708    Devin Heitmueller <dheitmueller@linuxtv.org>
2709  */
2710 IR_KEYTAB_TYPE ir_codes_terratec_cinergy_xs[IR_KEYTAB_SIZE] = {
2711         [0x41] = KEY_HOME,
2712         [0x01] = KEY_POWER,
2713         [0x42] = KEY_MENU,
2714         [0x02] = KEY_1,
2715         [0x03] = KEY_2,
2716         [0x04] = KEY_3,
2717         [0x43] = KEY_SUBTITLE,
2718         [0x05] = KEY_4,
2719         [0x06] = KEY_5,
2720         [0x07] = KEY_6,
2721         [0x44] = KEY_TEXT,
2722         [0x08] = KEY_7,
2723         [0x09] = KEY_8,
2724         [0x0a] = KEY_9,
2725         [0x45] = KEY_DELETE,
2726         [0x0b] = KEY_TUNER,
2727         [0x0c] = KEY_0,
2728         [0x0d] = KEY_MODE,
2729         [0x46] = KEY_TV,
2730         [0x47] = KEY_DVD,
2731         [0x49] = KEY_VIDEO,
2732         [0x4b] = KEY_AUX,
2733         [0x10] = KEY_UP,
2734         [0x11] = KEY_LEFT,
2735         [0x12] = KEY_OK,
2736         [0x13] = KEY_RIGHT,
2737         [0x14] = KEY_DOWN,
2738         [0x0f] = KEY_EPG,
2739         [0x16] = KEY_INFO,
2740         [0x4d] = KEY_BACKSPACE,
2741         [0x1c] = KEY_VOLUMEUP,
2742         [0x4c] = KEY_PLAY,
2743         [0x1b] = KEY_CHANNELUP,
2744         [0x1e] = KEY_VOLUMEDOWN,
2745         [0x1d] = KEY_MUTE,
2746         [0x1f] = KEY_CHANNELDOWN,
2747         [0x17] = KEY_RED,
2748         [0x18] = KEY_GREEN,
2749         [0x19] = KEY_YELLOW,
2750         [0x1a] = KEY_BLUE,
2751         [0x58] = KEY_RECORD,
2752         [0x48] = KEY_STOP,
2753         [0x40] = KEY_PAUSE,
2754         [0x54] = KEY_LAST,
2755         [0x4e] = KEY_REWIND,
2756         [0x4f] = KEY_FASTFORWARD,
2757         [0x5c] = KEY_NEXT,
2758 };
2759 EXPORT_SYMBOL_GPL(ir_codes_terratec_cinergy_xs);
2760
2761 /* EVGA inDtube
2762    Devin Heitmueller <devin.heitmueller@gmail.com>
2763  */
2764 IR_KEYTAB_TYPE ir_codes_evga_indtube[IR_KEYTAB_SIZE] = {
2765         [0x12] = KEY_POWER,
2766         [0x02] = KEY_MODE,      /* TV */
2767         [0x14] = KEY_MUTE,
2768         [0x1a] = KEY_CHANNELUP,
2769         [0x16] = KEY_TV2,       /* PIP */
2770         [0x1d] = KEY_VOLUMEUP,
2771         [0x05] = KEY_CHANNELDOWN,
2772         [0x0f] = KEY_PLAYPAUSE,
2773         [0x19] = KEY_VOLUMEDOWN,
2774         [0x1c] = KEY_REWIND,
2775         [0x0d] = KEY_RECORD,
2776         [0x18] = KEY_FORWARD,
2777         [0x1e] = KEY_PREVIOUS,
2778         [0x1b] = KEY_STOP,
2779         [0x1f] = KEY_NEXT,
2780         [0x13] = KEY_CAMERA,
2781 };
2782 EXPORT_SYMBOL_GPL(ir_codes_evga_indtube);
2783
2784 IR_KEYTAB_TYPE ir_codes_videomate_s350[IR_KEYTAB_SIZE] = {
2785         [0x00] = KEY_TV,
2786         [0x01] = KEY_DVD,
2787         [0x04] = KEY_RECORD,
2788         [0x05] = KEY_VIDEO,     /* TV/Video */
2789         [0x07] = KEY_STOP,
2790         [0x08] = KEY_PLAYPAUSE,
2791         [0x0a] = KEY_REWIND,
2792         [0x0f] = KEY_FASTFORWARD,
2793         [0x10] = KEY_CHANNELUP,
2794         [0x12] = KEY_VOLUMEUP,
2795         [0x13] = KEY_CHANNELDOWN,
2796         [0x14] = KEY_MUTE,
2797         [0x15] = KEY_VOLUMEDOWN,
2798         [0x16] = KEY_1,
2799         [0x17] = KEY_2,
2800         [0x18] = KEY_3,
2801         [0x19] = KEY_4,
2802         [0x1a] = KEY_5,
2803         [0x1b] = KEY_6,
2804         [0x1c] = KEY_7,
2805         [0x1d] = KEY_8,
2806         [0x1e] = KEY_9,
2807         [0x1f] = KEY_0,
2808         [0x21] = KEY_SLEEP,
2809         [0x24] = KEY_ZOOM,
2810         [0x25] = KEY_LAST,      /* Recall */
2811         [0x26] = KEY_SUBTITLE,  /* CC */
2812         [0x27] = KEY_LANGUAGE,  /* MTS */
2813         [0x29] = KEY_CHANNEL,   /* SURF */
2814         [0x2b] = KEY_A,
2815         [0x2c] = KEY_B,
2816         [0x2f] = KEY_SHUFFLE,   /* Snapshot */
2817         [0x23] = KEY_RADIO,
2818         [0x02] = KEY_PREVIOUSSONG,
2819         [0x06] = KEY_NEXTSONG,
2820         [0x03] = KEY_EPG,
2821         [0x09] = KEY_SETUP,
2822         [0x22] = KEY_BACKSPACE,
2823         [0x0c] = KEY_UP,
2824         [0x0e] = KEY_DOWN,
2825         [0x0b] = KEY_LEFT,
2826         [0x0d] = KEY_RIGHT,
2827         [0x11] = KEY_ENTER,
2828         [0x20] = KEY_TEXT,
2829 };
2830 EXPORT_SYMBOL_GPL(ir_codes_videomate_s350);