2 Keytables for supported remote controls, used on drivers/media
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.
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.
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.
21 * NOTICE FOR DEVELOPERS:
22 * The IR mappings should be as close as possible to what's
24 * http://linuxtv.org/wiki/index.php/Remote_Controllers
26 #include <linux/module.h>
28 #include <linux/input.h>
29 #include <media/ir-common.h>
33 * The usage of tables with just the command part is deprecated.
34 * All new IR keytables should contain address+command and need
35 * to define the proper IR_TYPE (IR_TYPE_RC5/IR_TYPE_NEC).
36 * The deprecated tables should use IR_TYPE_UNKNOWN
38 #define IR_TABLE(irname, type, tabname) \
39 struct ir_scancode_table tabname ## _table = { \
41 .size = ARRAY_SIZE(tabname), \
45 EXPORT_SYMBOL_GPL(tabname ## _table)
48 /* empty keytable, can be used as placeholder for not-yet created keytables */
49 static struct ir_scancode ir_codes_empty[] = {
52 IR_TABLE(empty, IR_TYPE_UNKNOWN, ir_codes_empty);
54 /* Michal Majchrowicz <mmajchrowicz@gmail.com> */
55 static struct ir_scancode ir_codes_proteus_2309[] = {
68 { 0x5c, KEY_POWER }, /* power */
69 { 0x20, KEY_ZOOM }, /* full screen */
70 { 0x0f, KEY_BACKSPACE }, /* recall */
71 { 0x1b, KEY_ENTER }, /* mute */
72 { 0x41, KEY_RECORD }, /* record */
73 { 0x43, KEY_STOP }, /* stop */
75 { 0x1a, KEY_POWER2 }, /* off */
77 { 0x1f, KEY_CHANNELDOWN }, /* channel - */
78 { 0x1c, KEY_CHANNELUP }, /* channel + */
79 { 0x10, KEY_VOLUMEDOWN }, /* volume - */
80 { 0x1e, KEY_VOLUMEUP }, /* volume + */
83 IR_TABLE(proteus_2309, IR_TYPE_UNKNOWN, ir_codes_proteus_2309);
85 /* Matt Jesson <dvb@jesson.eclipse.co.uk */
86 static struct ir_scancode ir_codes_avermedia_dvbt[] = {
87 { 0x28, KEY_0 }, /* '0' / 'enter' */
88 { 0x22, KEY_1 }, /* '1' */
89 { 0x12, KEY_2 }, /* '2' / 'up arrow' */
90 { 0x32, KEY_3 }, /* '3' */
91 { 0x24, KEY_4 }, /* '4' / 'left arrow' */
92 { 0x14, KEY_5 }, /* '5' */
93 { 0x34, KEY_6 }, /* '6' / 'right arrow' */
94 { 0x26, KEY_7 }, /* '7' */
95 { 0x16, KEY_8 }, /* '8' / 'down arrow' */
96 { 0x36, KEY_9 }, /* '9' */
98 { 0x20, KEY_LIST }, /* 'source' */
99 { 0x10, KEY_TEXT }, /* 'teletext' */
100 { 0x00, KEY_POWER }, /* 'power' */
101 { 0x04, KEY_AUDIO }, /* 'audio' */
102 { 0x06, KEY_ZOOM }, /* 'full screen' */
103 { 0x18, KEY_VIDEO }, /* 'display' */
104 { 0x38, KEY_SEARCH }, /* 'loop' */
105 { 0x08, KEY_INFO }, /* 'preview' */
106 { 0x2a, KEY_REWIND }, /* 'backward <<' */
107 { 0x1a, KEY_FASTFORWARD }, /* 'forward >>' */
108 { 0x3a, KEY_RECORD }, /* 'capture' */
109 { 0x0a, KEY_MUTE }, /* 'mute' */
110 { 0x2c, KEY_RECORD }, /* 'record' */
111 { 0x1c, KEY_PAUSE }, /* 'pause' */
112 { 0x3c, KEY_STOP }, /* 'stop' */
113 { 0x0c, KEY_PLAY }, /* 'play' */
114 { 0x2e, KEY_RED }, /* 'red' */
115 { 0x01, KEY_BLUE }, /* 'blue' / 'cancel' */
116 { 0x0e, KEY_YELLOW }, /* 'yellow' / 'ok' */
117 { 0x21, KEY_GREEN }, /* 'green' */
118 { 0x11, KEY_CHANNELDOWN }, /* 'channel -' */
119 { 0x31, KEY_CHANNELUP }, /* 'channel +' */
120 { 0x1e, KEY_VOLUMEDOWN }, /* 'volume -' */
121 { 0x3e, KEY_VOLUMEUP }, /* 'volume +' */
123 IR_TABLE(avermedia_dvbt, IR_TYPE_UNKNOWN, ir_codes_avermedia_dvbt);
125 /* Mauro Carvalho Chehab <mchehab@infradead.org> */
126 static struct ir_scancode ir_codes_avermedia_m135a[] = {
127 { 0x00, KEY_POWER2 },
128 { 0x2e, KEY_DOT }, /* '.' */
129 { 0x01, KEY_MODE }, /* TV/FM */
142 { 0x13, KEY_RIGHT }, /* -> */
143 { 0x12, KEY_LEFT }, /* <- */
145 { 0x17, KEY_SLEEP }, /* Capturar Imagem */
146 { 0x10, KEY_SHUFFLE }, /* Amostra */
148 /* FIXME: The keys bellow aren't ok */
150 { 0x43, KEY_CHANNELUP },
151 { 0x42, KEY_CHANNELDOWN },
152 { 0x1f, KEY_VOLUMEUP },
153 { 0x1e, KEY_VOLUMEDOWN },
161 { 0x2b, KEY_TV2 }, /* TV2 */
164 { 0x1c, KEY_YELLOW },
168 { 0x1a, KEY_PLAYPAUSE },
169 { 0x19, KEY_RECORD },
173 IR_TABLE(avermedia_m135a, IR_TYPE_UNKNOWN, ir_codes_avermedia_m135a);
175 /* Oldrich Jedlicka <oldium.pro@seznam.cz> */
176 static struct ir_scancode ir_codes_avermedia_cardbus[] = {
178 { 0x01, KEY_TUNER }, /* TV/FM */
179 { 0x03, KEY_TEXT }, /* Teletext */
188 { 0x0c, KEY_ZOOM }, /* Full screen */
192 { 0x10, KEY_PAGEUP }, /* 16-CH PREV */
195 { 0x13, KEY_AGAIN }, /* CH RTN - channel return */
197 { 0x15, KEY_EDIT }, /* Autoscan */
198 { 0x17, KEY_SAVE }, /* Screenshot */
199 { 0x18, KEY_PLAYPAUSE },
200 { 0x19, KEY_RECORD },
203 { 0x1c, KEY_FASTFORWARD },
204 { 0x1d, KEY_REWIND },
205 { 0x1e, KEY_VOLUMEDOWN },
206 { 0x1f, KEY_VOLUMEUP },
207 { 0x22, KEY_SLEEP }, /* Sleep */
208 { 0x23, KEY_ZOOM }, /* Aspect */
209 { 0x26, KEY_SCREEN }, /* Pos */
210 { 0x27, KEY_ANGLE }, /* Size */
211 { 0x28, KEY_SELECT }, /* Select */
212 { 0x29, KEY_BLUE }, /* Blue/Picture */
213 { 0x2a, KEY_BACKSPACE }, /* Back */
214 { 0x2b, KEY_MEDIA }, /* PIP (Picture-in-picture) */
217 { 0x2f, KEY_TV }, /* Live TV */
219 { 0x33, KEY_CLEAR }, /* Clear */
220 { 0x35, KEY_RED }, /* Red/TV */
222 { 0x37, KEY_HOME }, /* Home */
223 { 0x39, KEY_GREEN }, /* Green/Video */
224 { 0x3d, KEY_YELLOW }, /* Yellow/Music */
225 { 0x3e, KEY_OK }, /* Ok */
227 { 0x40, KEY_NEXT }, /* Next */
228 { 0x41, KEY_PREVIOUS }, /* Previous */
229 { 0x42, KEY_CHANNELDOWN }, /* Channel down */
230 { 0x43, KEY_CHANNELUP }, /* Channel up */
232 IR_TABLE(avermedia_cardbus, IR_TYPE_UNKNOWN, ir_codes_avermedia_cardbus);
234 /* Attila Kondoros <attila.kondoros@chello.hu> */
235 static struct ir_scancode ir_codes_apac_viewcomp[] = {
247 { 0x17, KEY_LAST }, /* +100 */
248 { 0x0a, KEY_LIST }, /* recall */
251 { 0x1c, KEY_TUNER }, /* TV/FM */
252 { 0x15, KEY_SEARCH }, /* scan */
253 { 0x12, KEY_POWER }, /* power */
254 { 0x1f, KEY_VOLUMEDOWN }, /* vol up */
255 { 0x1b, KEY_VOLUMEUP }, /* vol down */
256 { 0x1e, KEY_CHANNELDOWN }, /* chn up */
257 { 0x1a, KEY_CHANNELUP }, /* chn down */
259 { 0x11, KEY_VIDEO }, /* video */
260 { 0x0f, KEY_ZOOM }, /* full screen */
261 { 0x13, KEY_MUTE }, /* mute/unmute */
262 { 0x10, KEY_TEXT }, /* min */
264 { 0x0d, KEY_STOP }, /* freeze */
265 { 0x0e, KEY_RECORD }, /* record */
266 { 0x1d, KEY_PLAYPAUSE }, /* stop */
267 { 0x19, KEY_PLAY }, /* play */
269 { 0x16, KEY_GOTO }, /* osd */
270 { 0x14, KEY_REFRESH }, /* default */
271 { 0x0c, KEY_KPPLUS }, /* fine tune >>>> */
272 { 0x18, KEY_KPMINUS }, /* fine tune <<<< */
274 IR_TABLE(apac_viewcomp, IR_TYPE_UNKNOWN, ir_codes_apac_viewcomp);
276 /* ---------------------------------------------------------------------- */
278 static struct ir_scancode ir_codes_pixelview[] = {
280 { 0x1e, KEY_POWER }, /* power */
281 { 0x07, KEY_MEDIA }, /* source */
282 { 0x1c, KEY_SEARCH }, /* scan */
285 { 0x03, KEY_TUNER }, /* TV/FM */
287 { 0x00, KEY_RECORD },
291 { 0x1a, KEY_PLAYPAUSE }, /* freeze */
292 { 0x19, KEY_ZOOM }, /* zoom */
293 { 0x0f, KEY_TEXT }, /* min */
305 { 0x10, KEY_LAST }, /* +100 */
306 { 0x13, KEY_LIST }, /* recall */
308 { 0x1f, KEY_CHANNELUP }, /* chn down */
309 { 0x17, KEY_CHANNELDOWN }, /* chn up */
310 { 0x16, KEY_VOLUMEUP }, /* vol down */
311 { 0x14, KEY_VOLUMEDOWN }, /* vol up */
313 { 0x04, KEY_KPMINUS }, /* <<< */
314 { 0x0e, KEY_SETUP }, /* function */
315 { 0x0c, KEY_KPPLUS }, /* >>> */
317 { 0x0d, KEY_GOTO }, /* mts */
318 { 0x1d, KEY_REFRESH }, /* reset */
319 { 0x18, KEY_MUTE }, /* mute/unmute */
321 IR_TABLE(pixelview, IR_TYPE_UNKNOWN, ir_codes_pixelview);
324 Mauro Carvalho Chehab <mchehab@infradead.org>
325 present on PV MPEG 8000GT
327 static struct ir_scancode ir_codes_pixelview_new[] = {
328 { 0x3c, KEY_TIME }, /* Timeshift */
342 { 0x1c, KEY_AGAIN }, /* LOOP */
343 { 0x3f, KEY_MEDIA }, /* Source */
344 { 0x1f, KEY_LAST }, /* +100 */
347 { 0x17, KEY_CHANNELDOWN },
348 { 0x16, KEY_CHANNELUP },
349 { 0x10, KEY_VOLUMEUP },
350 { 0x14, KEY_VOLUMEDOWN },
353 { 0x19, KEY_CAMERA }, /* SNAPSHOT */
354 { 0x1a, KEY_SEARCH }, /* scan */
356 { 0x37, KEY_REWIND }, /* << */
357 { 0x32, KEY_RECORD }, /* o (red) */
358 { 0x33, KEY_FORWARD }, /* >> */
359 { 0x11, KEY_STOP }, /* square */
360 { 0x3b, KEY_PLAY }, /* > */
361 { 0x30, KEY_PLAYPAUSE }, /* || */
366 IR_TABLE(pixelview_new, IR_TYPE_UNKNOWN, ir_codes_pixelview_new);
368 static struct ir_scancode ir_codes_nebula[] = {
383 { 0x0e, KEY_MHP }, /* labelled 'Picture' */
386 { 0x11, KEY_F13 }, /* 16:9 */
387 { 0x12, KEY_F14 }, /* 14:9 */
396 { 0x1b, KEY_CHANNELUP },
397 { 0x1c, KEY_CHANNELDOWN },
398 { 0x1d, KEY_VOLUMEUP },
399 { 0x1e, KEY_VOLUMEDOWN },
402 { 0x21, KEY_YELLOW },
404 { 0x23, KEY_SUBTITLE },
405 { 0x24, KEY_F15 }, /* AD */
408 { 0x27, KEY_REWIND },
411 { 0x2a, KEY_FASTFORWARD },
412 { 0x2b, KEY_F16 }, /* chapter */
415 { 0x2e, KEY_RECORD },
416 { 0x2f, KEY_F17 }, /* picture in picture */
417 { 0x30, KEY_KPPLUS }, /* zoom in */
418 { 0x31, KEY_KPMINUS }, /* zoom out */
419 { 0x32, KEY_F18 }, /* capture */
420 { 0x33, KEY_F19 }, /* web */
425 IR_TABLE(nebula, IR_TYPE_UNKNOWN, ir_codes_nebula);
427 /* DigitalNow DNTV Live DVB-T Remote */
428 static struct ir_scancode ir_codes_dntv_live_dvb_t[] = {
429 { 0x00, KEY_ESC }, /* 'go up a level?' */
442 { 0x0b, KEY_TUNER }, /* tv/fm */
443 { 0x0c, KEY_SEARCH }, /* scan */
446 { 0x0f, KEY_LIST }, /* source */
449 { 0x11, KEY_REWIND }, /* backward << */
451 { 0x13, KEY_CAMERA }, /* snap */
452 { 0x14, KEY_AUDIO }, /* stereo */
453 { 0x15, KEY_CLEAR }, /* reset */
456 { 0x18, KEY_ZOOM }, /* full screen */
457 { 0x19, KEY_FASTFORWARD }, /* forward >> */
458 { 0x1a, KEY_CHANNELUP },
459 { 0x1b, KEY_VOLUMEUP },
460 { 0x1c, KEY_INFO }, /* preview */
461 { 0x1d, KEY_RECORD }, /* record */
462 { 0x1e, KEY_CHANNELDOWN },
463 { 0x1f, KEY_VOLUMEDOWN },
465 IR_TABLE(dntv_live_dvb_t, IR_TYPE_UNKNOWN, ir_codes_dntv_live_dvb_t);
467 /* ---------------------------------------------------------------------- */
469 /* IO-DATA BCTV7E Remote */
470 static struct ir_scancode ir_codes_iodata_bctv7e[] = {
472 { 0x20, KEY_RADIO }, /* FM */
477 { 0x44, KEY_0 }, /* 10 */
488 { 0x10, KEY_L }, /* Live */
489 { 0x08, KEY_TIME }, /* Time Shift */
491 { 0x18, KEY_PLAYPAUSE }, /* Play */
493 { 0x24, KEY_ENTER }, /* 11 */
494 { 0x64, KEY_ESC }, /* 12 */
495 { 0x04, KEY_M }, /* Multi */
498 { 0x34, KEY_CHANNELUP },
499 { 0x74, KEY_VOLUMEUP },
502 { 0x4c, KEY_VCR }, /* SVIDEO */
503 { 0x2c, KEY_CHANNELDOWN },
504 { 0x6c, KEY_VOLUMEDOWN },
508 { 0x3c, KEY_RED }, /* || (red) */
509 { 0x7c, KEY_RECORD }, /* recording */
512 { 0x41, KEY_REWIND }, /* backward << */
514 { 0x61, KEY_FASTFORWARD }, /* forward >> */
515 { 0x01, KEY_NEXT }, /* skip >| */
517 IR_TABLE(iodata_bctv7e, IR_TYPE_UNKNOWN, ir_codes_iodata_bctv7e);
519 /* ---------------------------------------------------------------------- */
521 /* ADS Tech Instant TV DVB-T PCI Remote */
522 static struct ir_scancode ir_codes_adstech_dvb_t_pci[] = {
538 { 0x5d, KEY_SEARCH },
539 { 0x17, KEY_EPG }, /* Guide */
545 { 0x0e, KEY_SELECT }, /* Enter */
548 { 0x59, KEY_PREVIOUS },
550 { 0x58, KEY_REWIND },
551 { 0x50, KEY_FORWARD },
552 { 0x44, KEY_PLAYPAUSE },
554 { 0x1b, KEY_RECORD },
555 { 0x13, KEY_TUNER }, /* Live */
558 { 0x03, KEY_PROG1 }, /* 1 */
559 { 0x01, KEY_PROG2 }, /* 2 */
560 { 0x00, KEY_PROG3 }, /* 3 */
562 { 0x48, KEY_AUX }, /* Photo */
564 { 0x19, KEY_AUDIO }, /* Music */
565 { 0x0b, KEY_CHANNELUP },
566 { 0x08, KEY_CHANNELDOWN },
567 { 0x15, KEY_VOLUMEUP },
568 { 0x1c, KEY_VOLUMEDOWN },
570 IR_TABLE(adstech_dvb_t_pci, IR_TYPE_UNKNOWN, ir_codes_adstech_dvb_t_pci);
572 /* ---------------------------------------------------------------------- */
574 /* MSI TV@nywhere MASTER remote */
576 static struct ir_scancode ir_codes_msi_tvanywhere[] = {
590 { 0x0f, KEY_SCREEN }, /* Full Screen */
591 { 0x10, KEY_FN }, /* Funtion */
592 { 0x11, KEY_TIME }, /* Time shift */
594 { 0x13, KEY_MEDIA }, /* MTS */
596 { 0x16, KEY_REWIND }, /* backward << */
597 { 0x17, KEY_ENTER }, /* Return */
598 { 0x18, KEY_FASTFORWARD }, /* forward >> */
599 { 0x1a, KEY_CHANNELUP },
600 { 0x1b, KEY_VOLUMEUP },
601 { 0x1e, KEY_CHANNELDOWN },
602 { 0x1f, KEY_VOLUMEDOWN },
604 IR_TABLE(msi_tvanywhere, IR_TYPE_UNKNOWN, ir_codes_msi_tvanywhere);
606 /* ---------------------------------------------------------------------- */
609 Keycodes for remote on the MSI TV@nywhere Plus. The controller IC on the card
610 is marked "KS003". The controller is I2C at address 0x30, but does not seem
611 to respond to probes until a read is performed from a valid device.
614 Note: This remote may be of similar or identical design to the
615 Pixelview remote (?). The raw codes and duplicate button codes
616 appear to be the same.
618 Henry Wong <henry@stuffedcow.net>
619 Some changes to formatting and keycodes by Mark Schultz <n9xmj@yahoo.com>
623 static struct ir_scancode ir_codes_msi_tvanywhere_plus[] = {
625 /* ---- Remote Button Layout ----
627 POWER SOURCE SCAN MUTE
632 vvDN RECORD STOP PLAY
645 { 0x01, KEY_1 }, /* 1 */
646 { 0x0b, KEY_2 }, /* 2 */
647 { 0x1b, KEY_3 }, /* 3 */
648 { 0x05, KEY_4 }, /* 4 */
649 { 0x09, KEY_5 }, /* 5 */
650 { 0x15, KEY_6 }, /* 6 */
651 { 0x06, KEY_7 }, /* 7 */
652 { 0x0a, KEY_8 }, /* 8 */
653 { 0x12, KEY_9 }, /* 9 */
654 { 0x02, KEY_0 }, /* 0 */
655 { 0x10, KEY_KPPLUS }, /* + */
656 { 0x13, KEY_AGAIN }, /* Recall */
658 { 0x1e, KEY_POWER }, /* Power */
659 { 0x07, KEY_TUNER }, /* Source */
660 { 0x1c, KEY_SEARCH }, /* Scan */
661 { 0x18, KEY_MUTE }, /* Mute */
663 { 0x03, KEY_RADIO }, /* TV/FM */
664 /* The next four keys are duplicates that appear to send the
665 same IR code as Ch+, Ch-, >>, and << . The raw code assigned
666 to them is the actual code + 0x20 - they will never be
667 detected as such unless some way is discovered to distinguish
668 these buttons from those that have the same code. */
669 { 0x3f, KEY_RIGHT }, /* |> and Ch+ */
670 { 0x37, KEY_LEFT }, /* <| and Ch- */
671 { 0x2c, KEY_UP }, /* ^^Up and >> */
672 { 0x24, KEY_DOWN }, /* vvDn and << */
674 { 0x00, KEY_RECORD }, /* Record */
675 { 0x08, KEY_STOP }, /* Stop */
676 { 0x11, KEY_PLAY }, /* Play */
678 { 0x0f, KEY_CLOSE }, /* Minimize */
679 { 0x19, KEY_ZOOM }, /* Zoom */
680 { 0x1a, KEY_CAMERA }, /* Snapshot */
681 { 0x0d, KEY_LANGUAGE }, /* MTS */
683 { 0x14, KEY_VOLUMEDOWN }, /* Vol- */
684 { 0x16, KEY_VOLUMEUP }, /* Vol+ */
685 { 0x17, KEY_CHANNELDOWN }, /* Ch- */
686 { 0x1f, KEY_CHANNELUP }, /* Ch+ */
688 { 0x04, KEY_REWIND }, /* << */
689 { 0x0e, KEY_MENU }, /* Function */
690 { 0x0c, KEY_FASTFORWARD }, /* >> */
691 { 0x1d, KEY_RESTART }, /* Reset */
693 IR_TABLE(msi_tvanywhere_plus, IR_TYPE_UNKNOWN, ir_codes_msi_tvanywhere_plus);
695 /* ---------------------------------------------------------------------- */
697 /* Cinergy 1400 DVB-T */
698 static struct ir_scancode ir_codes_cinergy_1400[] = {
712 { 0x0d, KEY_REFRESH },
713 { 0x0e, KEY_SELECT },
725 { 0x19, KEY_YELLOW },
728 { 0x1b, KEY_CHANNELUP },
729 { 0x1c, KEY_VOLUMEUP },
731 { 0x1e, KEY_VOLUMEDOWN },
732 { 0x1f, KEY_CHANNELDOWN },
736 { 0x58, KEY_RECORD },
737 { 0x54, KEY_PREVIOUS },
741 IR_TABLE(cinergy_1400, IR_TYPE_UNKNOWN, ir_codes_cinergy_1400);
743 /* ---------------------------------------------------------------------- */
745 /* AVERTV STUDIO 303 Remote */
746 static struct ir_scancode ir_codes_avertv_303[] = {
766 { 0x16, KEY_SUBTITLE },
767 { 0x1e, KEY_REWIND },
770 { 0x2e, KEY_SEARCH },
772 { 0x3e, KEY_SHUFFLE },
775 { 0x4e, KEY_RECORD },
782 { 0x66, KEY_YELLOW },
790 IR_TABLE(avertv_303, IR_TYPE_UNKNOWN, ir_codes_avertv_303);
792 /* ---------------------------------------------------------------------- */
794 /* DigitalNow DNTV Live! DVB-T Pro Remote */
795 static struct ir_scancode ir_codes_dntv_live_dvbt_pro[] = {
799 { 0x55, KEY_TV }, /* live tv */
800 { 0x58, KEY_TUNER }, /* digital Radio */
801 { 0x5a, KEY_RADIO }, /* FM radio */
802 { 0x59, KEY_DVD }, /* dvd menu */
812 { 0x0c, KEY_CANCEL },
822 { 0x1e, KEY_VOLUMEUP },
823 { 0x0a, KEY_VOLUMEDOWN },
824 { 0x02, KEY_CHANNELDOWN },
825 { 0x05, KEY_CHANNELUP },
826 { 0x11, KEY_RECORD },
830 { 0x40, KEY_REWIND },
831 { 0x12, KEY_FASTFORWARD },
832 { 0x41, KEY_PREVIOUSSONG }, /* replay |< */
833 { 0x42, KEY_NEXTSONG }, /* skip >| */
834 { 0x54, KEY_CAMERA }, /* capture */
835 { 0x50, KEY_LANGUAGE }, /* sap */
836 { 0x47, KEY_TV2 }, /* pip */
837 { 0x4d, KEY_SCREEN },
838 { 0x43, KEY_SUBTITLE },
840 { 0x49, KEY_AUDIO }, /* l/r */
842 { 0x08, KEY_VIDEO }, /* a/v */
843 { 0x0e, KEY_PREVIOUS }, /* recall */
844 { 0x45, KEY_ZOOM }, /* zoom + */
845 { 0x46, KEY_ANGLE }, /* zoom - */
848 { 0x5c, KEY_YELLOW },
851 IR_TABLE(dntv_live_dvbt_pro, IR_TYPE_UNKNOWN, ir_codes_dntv_live_dvbt_pro);
853 static struct ir_scancode ir_codes_em_terratec[] = {
854 { 0x01, KEY_CHANNEL },
855 { 0x02, KEY_SELECT },
861 { 0x08, KEY_CHANNELUP },
865 { 0x0c, KEY_CHANNELDOWN },
869 { 0x10, KEY_VOLUMEUP },
873 { 0x14, KEY_VOLUMEDOWN },
875 { 0x18, KEY_RECORD },
876 { 0x19, KEY_REWIND },
878 { 0x1b, KEY_FORWARD },
879 { 0x1c, KEY_BACKSPACE },
883 IR_TABLE(em_terratec, IR_TYPE_UNKNOWN, ir_codes_em_terratec);
885 static struct ir_scancode ir_codes_pinnacle_grey[] = {
903 { 0x2d, KEY_SCREEN },
905 { 0x1b, KEY_VOLUMEUP },
906 { 0x0f, KEY_VOLUMEDOWN },
907 { 0x17, KEY_CHANNELUP },
908 { 0x1c, KEY_CHANNELDOWN },
922 { 0x16, KEY_PREVIOUSSONG },
923 { 0x13, KEY_NEXTSONG },
925 { 0x0e, KEY_REWIND },
928 { 0x07, KEY_FORWARD },
929 { 0x27, KEY_RECORD },
935 IR_TABLE(pinnacle_grey, IR_TYPE_UNKNOWN, ir_codes_pinnacle_grey);
937 static struct ir_scancode ir_codes_flyvideo[] = {
949 { 0x0e, KEY_MODE }, /* Air/Cable */
950 { 0x11, KEY_VIDEO }, /* Video */
951 { 0x15, KEY_AUDIO }, /* Audio */
952 { 0x00, KEY_POWER }, /* Power */
953 { 0x18, KEY_TUNER }, /* AV Source */
954 { 0x02, KEY_ZOOM }, /* Fullscreen */
955 { 0x1a, KEY_LANGUAGE }, /* Stereo */
956 { 0x1b, KEY_MUTE }, /* Mute */
957 { 0x14, KEY_VOLUMEUP }, /* Volume + */
958 { 0x17, KEY_VOLUMEDOWN },/* Volume - */
959 { 0x12, KEY_CHANNELUP },/* Channel + */
960 { 0x13, KEY_CHANNELDOWN },/* Channel - */
961 { 0x06, KEY_AGAIN }, /* Recall */
962 { 0x10, KEY_ENTER }, /* Enter */
964 { 0x19, KEY_BACK }, /* Rewind ( <<< ) */
965 { 0x1f, KEY_FORWARD }, /* Forward ( >>> ) */
966 { 0x0a, KEY_ANGLE }, /* no label, may be used as the PAUSE button */
968 IR_TABLE(flyvideo, IR_TYPE_UNKNOWN, ir_codes_flyvideo);
970 static struct ir_scancode ir_codes_flydvb[] = {
971 { 0x01, KEY_ZOOM }, /* Full Screen */
972 { 0x00, KEY_POWER }, /* Power */
983 { 0x06, KEY_AGAIN }, /* Recall */
985 { 0x10, KEY_MUTE }, /* Mute */
986 { 0x02, KEY_RADIO }, /* TV/Radio */
987 { 0x1b, KEY_LANGUAGE }, /* SAP (Second Audio Program) */
989 { 0x14, KEY_VOLUMEUP }, /* VOL+ */
990 { 0x17, KEY_VOLUMEDOWN }, /* VOL- */
991 { 0x12, KEY_CHANNELUP }, /* CH+ */
992 { 0x13, KEY_CHANNELDOWN }, /* CH- */
993 { 0x1d, KEY_ENTER }, /* Enter */
995 { 0x1a, KEY_MODE }, /* PIP */
996 { 0x18, KEY_TUNER }, /* Source */
998 { 0x1e, KEY_RECORD }, /* Record/Pause */
999 { 0x15, KEY_ANGLE }, /* Swap (no label on key) */
1000 { 0x1c, KEY_PAUSE }, /* Timeshift/Pause */
1001 { 0x19, KEY_BACK }, /* Rewind << */
1002 { 0x0a, KEY_PLAYPAUSE }, /* Play/Pause */
1003 { 0x1f, KEY_FORWARD }, /* Forward >> */
1004 { 0x16, KEY_PREVIOUS }, /* Back |<< */
1005 { 0x11, KEY_STOP }, /* Stop */
1006 { 0x0e, KEY_NEXT }, /* End >>| */
1008 IR_TABLE(flydvb, IR_TYPE_UNKNOWN, ir_codes_flydvb);
1010 static struct ir_scancode ir_codes_cinergy[] = {
1022 { 0x0a, KEY_POWER },
1023 { 0x0b, KEY_PROG1 }, /* app */
1024 { 0x0c, KEY_ZOOM }, /* zoom/fullscreen */
1025 { 0x0d, KEY_CHANNELUP }, /* channel */
1026 { 0x0e, KEY_CHANNELDOWN }, /* channel- */
1027 { 0x0f, KEY_VOLUMEUP },
1028 { 0x10, KEY_VOLUMEDOWN },
1029 { 0x11, KEY_TUNER }, /* AV */
1030 { 0x12, KEY_NUMLOCK }, /* -/-- */
1031 { 0x13, KEY_AUDIO }, /* audio */
1036 { 0x18, KEY_RIGHT },
1037 { 0x19, BTN_LEFT, },
1038 { 0x1a, BTN_RIGHT, },
1039 { 0x1b, KEY_WWW }, /* text */
1040 { 0x1c, KEY_REWIND },
1041 { 0x1d, KEY_FORWARD },
1042 { 0x1e, KEY_RECORD },
1044 { 0x20, KEY_PREVIOUSSONG },
1045 { 0x21, KEY_NEXTSONG },
1046 { 0x22, KEY_PAUSE },
1049 IR_TABLE(cinergy, IR_TYPE_UNKNOWN, ir_codes_cinergy);
1051 /* Alfons Geser <a.geser@cox.net>
1052 * updates from Job D. R. Borges <jobdrb@ig.com.br> */
1053 static struct ir_scancode ir_codes_eztv[] = {
1054 { 0x12, KEY_POWER },
1055 { 0x01, KEY_TV }, /* DVR */
1056 { 0x15, KEY_DVD }, /* DVD */
1057 { 0x17, KEY_AUDIO }, /* music */
1058 /* DVR mode / DVD mode / music mode */
1060 { 0x1b, KEY_MUTE }, /* mute */
1061 { 0x02, KEY_LANGUAGE }, /* MTS/SAP / audio / autoseek */
1062 { 0x1e, KEY_SUBTITLE }, /* closed captioning / subtitle / seek */
1063 { 0x16, KEY_ZOOM }, /* full screen */
1064 { 0x1c, KEY_VIDEO }, /* video source / eject / delall */
1065 { 0x1d, KEY_RESTART }, /* playback / angle / del */
1066 { 0x2f, KEY_SEARCH }, /* scan / menu / playlist */
1067 { 0x30, KEY_CHANNEL }, /* CH surfing / bookmark / memo */
1069 { 0x31, KEY_HELP }, /* help */
1070 { 0x32, KEY_MODE }, /* num/memo */
1071 { 0x33, KEY_ESC }, /* cancel */
1073 { 0x0c, KEY_UP }, /* up */
1074 { 0x10, KEY_DOWN }, /* down */
1075 { 0x08, KEY_LEFT }, /* left */
1076 { 0x04, KEY_RIGHT }, /* right */
1077 { 0x03, KEY_SELECT }, /* select */
1079 { 0x1f, KEY_REWIND }, /* rewind */
1080 { 0x20, KEY_PLAYPAUSE },/* play/pause */
1081 { 0x29, KEY_FORWARD }, /* forward */
1082 { 0x14, KEY_AGAIN }, /* repeat */
1083 { 0x2b, KEY_RECORD }, /* recording */
1084 { 0x2c, KEY_STOP }, /* stop */
1085 { 0x2d, KEY_PLAY }, /* play */
1086 { 0x2e, KEY_CAMERA }, /* snapshot / shuffle */
1099 { 0x2a, KEY_VOLUMEUP },
1100 { 0x11, KEY_VOLUMEDOWN },
1101 { 0x18, KEY_CHANNELUP },/* CH.tracking up */
1102 { 0x19, KEY_CHANNELDOWN },/* CH.tracking down */
1104 { 0x13, KEY_ENTER }, /* enter */
1105 { 0x21, KEY_DOT }, /* . (decimal dot) */
1107 IR_TABLE(eztv, IR_TYPE_UNKNOWN, ir_codes_eztv);
1109 /* Alex Hermann <gaaf@gmx.net> */
1110 static struct ir_scancode ir_codes_avermedia[] = {
1122 { 0x20, KEY_TV }, /* TV/FM */
1123 { 0x10, KEY_CD }, /* CD */
1124 { 0x30, KEY_TEXT }, /* TELETEXT */
1125 { 0x00, KEY_POWER }, /* POWER */
1127 { 0x08, KEY_VIDEO }, /* VIDEO */
1128 { 0x04, KEY_AUDIO }, /* AUDIO */
1129 { 0x0c, KEY_ZOOM }, /* FULL SCREEN */
1131 { 0x12, KEY_SUBTITLE }, /* DISPLAY */
1132 { 0x32, KEY_REWIND }, /* LOOP */
1133 { 0x02, KEY_PRINT }, /* PREVIEW */
1135 { 0x2a, KEY_SEARCH }, /* AUTOSCAN */
1136 { 0x1a, KEY_SLEEP }, /* FREEZE */
1137 { 0x3a, KEY_CAMERA }, /* SNAPSHOT */
1138 { 0x0a, KEY_MUTE }, /* MUTE */
1140 { 0x26, KEY_RECORD }, /* RECORD */
1141 { 0x16, KEY_PAUSE }, /* PAUSE */
1142 { 0x36, KEY_STOP }, /* STOP */
1143 { 0x06, KEY_PLAY }, /* PLAY */
1145 { 0x2e, KEY_RED }, /* RED */
1146 { 0x21, KEY_GREEN }, /* GREEN */
1147 { 0x0e, KEY_YELLOW }, /* YELLOW */
1148 { 0x01, KEY_BLUE }, /* BLUE */
1150 { 0x1e, KEY_VOLUMEDOWN }, /* VOLUME- */
1151 { 0x3e, KEY_VOLUMEUP }, /* VOLUME+ */
1152 { 0x11, KEY_CHANNELDOWN }, /* CHANNEL/PAGE- */
1153 { 0x31, KEY_CHANNELUP } /* CHANNEL/PAGE+ */
1155 IR_TABLE(avermedia, IR_TYPE_UNKNOWN, ir_codes_avermedia);
1157 static struct ir_scancode ir_codes_videomate_tv_pvr[] = {
1162 { 0x23, KEY_RADIO },
1165 { 0x0a, KEY_REWIND },
1166 { 0x08, KEY_PLAYPAUSE },
1167 { 0x0f, KEY_FORWARD },
1169 { 0x02, KEY_PREVIOUS },
1176 { 0x0d, KEY_RIGHT },
1180 { 0x09, KEY_SETUP },
1181 { 0x05, KEY_VIDEO },
1182 { 0x22, KEY_CHANNEL },
1184 { 0x12, KEY_VOLUMEUP },
1185 { 0x15, KEY_VOLUMEDOWN },
1186 { 0x10, KEY_CHANNELUP },
1187 { 0x13, KEY_CHANNELDOWN },
1189 { 0x04, KEY_RECORD },
1202 { 0x20, KEY_LANGUAGE },
1203 { 0x21, KEY_SLEEP },
1205 IR_TABLE(videomate_tv_pvr, IR_TYPE_UNKNOWN, ir_codes_videomate_tv_pvr);
1207 /* Michael Tokarev <mjt@tls.msk.ru>
1208 http://www.corpit.ru/mjt/beholdTV/remote_control.jpg
1209 keytable is used by MANLI MTV00[0x0c] and BeholdTV 40[13] at
1210 least, and probably other cards too.
1211 The "ascii-art picture" below (in comments, first row
1212 is the keycode in hex, and subsequent row(s) shows
1213 the button labels (several variants when appropriate)
1214 helps to descide which keycodes to assign to the buttons.
1216 static struct ir_scancode ir_codes_manli[] = {
1222 { 0x1c, KEY_RADIO }, /*XXX*/
1223 { 0x12, KEY_POWER },
1248 { 0x0a, KEY_AGAIN }, /*XXX KEY_REWIND? */
1250 { 0x17, KEY_DIGITS }, /*XXX*/
1269 { 0x16, KEY_OK }, /*XXX KEY_SELECT? KEY_ENTER? */
1270 { 0x0c, KEY_RIGHT },
1277 { 0x11, KEY_TV }, /*XXX*/
1278 { 0x0d, KEY_MODE }, /*XXX there's no KEY_STEREO */
1281 * AUDIO Vol+ Chan+ *
1285 * SLEEP Vol- Chan- *
1287 { 0x0f, KEY_AUDIO },
1288 { 0x1b, KEY_VOLUMEUP },
1289 { 0x1a, KEY_CHANNELUP },
1291 { 0x1f, KEY_VOLUMEDOWN },
1292 { 0x1e, KEY_CHANNELDOWN },
1298 { 0x19, KEY_CAMERA },
1302 IR_TABLE(manli, IR_TYPE_UNKNOWN, ir_codes_manli);
1304 /* Mike Baikov <mike@baikov.com> */
1305 static struct ir_scancode ir_codes_gotview7135[] = {
1307 { 0x11, KEY_POWER },
1319 { 0x3b, KEY_AGAIN }, /* LOOP */
1320 { 0x06, KEY_AUDIO },
1321 { 0x31, KEY_PRINT }, /* PREVIEW */
1322 { 0x3e, KEY_VIDEO },
1323 { 0x10, KEY_CHANNELUP },
1324 { 0x20, KEY_CHANNELDOWN },
1325 { 0x0c, KEY_VOLUMEDOWN },
1326 { 0x28, KEY_VOLUMEUP },
1328 { 0x26, KEY_SEARCH }, /* SCAN */
1329 { 0x3f, KEY_CAMERA }, /* SNAPSHOT */
1330 { 0x12, KEY_RECORD },
1333 { 0x1d, KEY_REWIND },
1334 { 0x2d, KEY_PAUSE },
1335 { 0x0d, KEY_FORWARD },
1336 { 0x05, KEY_ZOOM }, /*FULL*/
1338 { 0x2a, KEY_F21 }, /* LIVE TIMESHIFT */
1339 { 0x0e, KEY_F22 }, /* MIN TIMESHIFT */
1340 { 0x1e, KEY_TIME }, /* TIMESHIFT */
1341 { 0x38, KEY_F24 }, /* NORMAL TIMESHIFT */
1343 IR_TABLE(gotview7135, IR_TYPE_UNKNOWN, ir_codes_gotview7135);
1345 static struct ir_scancode ir_codes_purpletv[] = {
1346 { 0x03, KEY_POWER },
1348 { 0x10, KEY_BACKSPACE }, /* Recall */
1360 { 0x12, KEY_DOT }, /* 100+ */
1362 { 0x07, KEY_VOLUMEUP },
1363 { 0x0b, KEY_VOLUMEDOWN },
1364 { 0x1a, KEY_KPPLUS },
1365 { 0x18, KEY_KPMINUS },
1368 { 0x0f, KEY_CHANNELUP },
1369 { 0x13, KEY_CHANNELDOWN },
1372 { 0x1b, KEY_VIDEO }, /* Video source */
1373 { 0x1f, KEY_CAMERA }, /* Snapshot */
1374 { 0x49, KEY_LANGUAGE }, /* MTS Select */
1375 { 0x19, KEY_SEARCH }, /* Auto Scan */
1377 { 0x4b, KEY_RECORD },
1379 { 0x45, KEY_PAUSE }, /* Pause */
1381 { 0x43, KEY_TIME }, /* Time Shift */
1382 { 0x17, KEY_CHANNEL }, /* SURF CH */
1383 { 0x40, KEY_FORWARD }, /* Forward ? */
1384 { 0x42, KEY_REWIND }, /* Backward ? */
1387 IR_TABLE(purpletv, IR_TYPE_UNKNOWN, ir_codes_purpletv);
1389 /* Mapping for the 28 key remote control as seen at
1390 http://www.sednacomputer.com/photo/cardbus-tv.jpg
1391 Pavel Mihaylov <bin@bash.info>
1392 Also for the remote bundled with Kozumi KTV-01C card */
1393 static struct ir_scancode ir_codes_pctv_sedna[] = {
1405 { 0x0a, KEY_AGAIN }, /* Recall */
1406 { 0x0b, KEY_CHANNELUP },
1407 { 0x0c, KEY_VOLUMEUP },
1408 { 0x0d, KEY_MODE }, /* Stereo */
1410 { 0x0f, KEY_PREVIOUSSONG },
1412 { 0x11, KEY_TUNER }, /* Source */
1413 { 0x12, KEY_POWER },
1415 { 0x15, KEY_CHANNELDOWN },
1416 { 0x18, KEY_VOLUMEDOWN },
1417 { 0x19, KEY_CAMERA }, /* Snapshot */
1418 { 0x1a, KEY_NEXTSONG },
1419 { 0x1b, KEY_TIME }, /* Time Shift */
1420 { 0x1c, KEY_RADIO }, /* FM Radio */
1421 { 0x1d, KEY_RECORD },
1422 { 0x1e, KEY_PAUSE },
1423 /* additional codes for Kozumi's remote */
1424 { 0x14, KEY_INFO }, /* OSD */
1425 { 0x16, KEY_OK }, /* OK */
1426 { 0x17, KEY_DIGITS }, /* Plus */
1427 { 0x1f, KEY_PLAY }, /* Play */
1429 IR_TABLE(pctv_sedna, IR_TYPE_UNKNOWN, ir_codes_pctv_sedna);
1431 /* Mark Phalan <phalanm@o2.ie> */
1432 static struct ir_scancode ir_codes_pv951[] = {
1444 { 0x12, KEY_POWER },
1446 { 0x1f, KEY_VOLUMEDOWN },
1447 { 0x1b, KEY_VOLUMEUP },
1448 { 0x1a, KEY_CHANNELUP },
1449 { 0x1e, KEY_CHANNELDOWN },
1450 { 0x0e, KEY_PAGEUP },
1451 { 0x1d, KEY_PAGEDOWN },
1452 { 0x13, KEY_SOUND },
1454 { 0x18, KEY_KPPLUSMINUS }, /* CH +/- */
1455 { 0x16, KEY_SUBTITLE }, /* CC */
1456 { 0x0d, KEY_TEXT }, /* TTX */
1457 { 0x0b, KEY_TV }, /* AIR/CBL */
1458 { 0x11, KEY_PC }, /* PC/TV */
1459 { 0x17, KEY_OK }, /* CH RTN */
1460 { 0x19, KEY_MODE }, /* FUNC */
1461 { 0x0c, KEY_SEARCH }, /* AUTOSCAN */
1463 /* Not sure what to do with these ones! */
1464 { 0x0f, KEY_SELECT }, /* SOURCE */
1465 { 0x0a, KEY_KPPLUS }, /* +100 */
1466 { 0x14, KEY_EQUAL }, /* SYNC */
1467 { 0x1c, KEY_MEDIA }, /* PC/TV */
1469 IR_TABLE(pv951, IR_TYPE_UNKNOWN, ir_codes_pv951);
1471 /* generic RC5 keytable */
1472 /* see http://users.pandora.be/nenya/electronics/rc5/codes00.htm */
1473 /* used by old (black) Hauppauge remotes */
1474 static struct ir_scancode ir_codes_rc5_tv[] = {
1487 { 0x0b, KEY_CHANNEL }, /* channel / program (japan: 11) */
1488 { 0x0c, KEY_POWER }, /* standby */
1489 { 0x0d, KEY_MUTE }, /* mute / demute */
1490 { 0x0f, KEY_TV }, /* display */
1491 { 0x10, KEY_VOLUMEUP },
1492 { 0x11, KEY_VOLUMEDOWN },
1493 { 0x12, KEY_BRIGHTNESSUP },
1494 { 0x13, KEY_BRIGHTNESSDOWN },
1495 { 0x1e, KEY_SEARCH }, /* search + */
1496 { 0x20, KEY_CHANNELUP }, /* channel / program + */
1497 { 0x21, KEY_CHANNELDOWN }, /* channel / program - */
1498 { 0x22, KEY_CHANNEL }, /* alt / channel */
1499 { 0x23, KEY_LANGUAGE }, /* 1st / 2nd language */
1500 { 0x26, KEY_SLEEP }, /* sleeptimer */
1501 { 0x2e, KEY_MENU }, /* 2nd controls (USA: menu) */
1502 { 0x30, KEY_PAUSE },
1503 { 0x32, KEY_REWIND },
1507 { 0x37, KEY_RECORD }, /* recording */
1508 { 0x3c, KEY_TEXT }, /* teletext submode (Japan: 12) */
1509 { 0x3d, KEY_SUSPEND }, /* system standby */
1512 IR_TABLE(rc5_tv, IR_TYPE_UNKNOWN, ir_codes_rc5_tv);
1514 /* Table for Leadtek Winfast Remote Controls - used by both bttv and cx88 */
1515 static struct ir_scancode ir_codes_winfast[] = {
1528 { 0x00, KEY_POWER },
1529 { 0x1b, KEY_AUDIO }, /* Audio Source */
1530 { 0x02, KEY_TUNER }, /* TV/FM, not on Y0400052 */
1531 { 0x1e, KEY_VIDEO }, /* Video Source */
1532 { 0x16, KEY_INFO }, /* Display information */
1533 { 0x04, KEY_VOLUMEUP },
1534 { 0x08, KEY_VOLUMEDOWN },
1535 { 0x0c, KEY_CHANNELUP },
1536 { 0x10, KEY_CHANNELDOWN },
1537 { 0x03, KEY_ZOOM }, /* fullscreen */
1538 { 0x1f, KEY_TEXT }, /* closed caption/teletext */
1539 { 0x20, KEY_SLEEP },
1540 { 0x29, KEY_CLEAR }, /* boss key */
1543 { 0x2c, KEY_GREEN },
1544 { 0x2d, KEY_YELLOW },
1546 { 0x18, KEY_KPPLUS }, /* fine tune + , not on Y040052 */
1547 { 0x19, KEY_KPMINUS }, /* fine tune - , not on Y040052 */
1548 { 0x2a, KEY_MEDIA }, /* PIP (Picture in picture */
1550 { 0x13, KEY_ENTER },
1551 { 0x11, KEY_LAST }, /* Recall (last channel */
1552 { 0x22, KEY_PREVIOUS },
1553 { 0x23, KEY_PLAYPAUSE },
1555 { 0x25, KEY_TIME }, /* Time Shifting */
1557 { 0x27, KEY_RECORD },
1558 { 0x28, KEY_SAVE }, /* Screenshot */
1560 { 0x30, KEY_CANCEL },
1561 { 0x31, KEY_CHANNEL }, /* Channel Surf */
1562 { 0x32, KEY_SUBTITLE },
1563 { 0x33, KEY_LANGUAGE },
1564 { 0x34, KEY_REWIND },
1565 { 0x35, KEY_FASTFORWARD },
1567 { 0x37, KEY_RADIO }, /* FM */
1570 { 0x1a, KEY_MODE}, /* change to MCE mode on Y04G0051 */
1571 { 0x3e, KEY_F21 }, /* MCE +VOL, on Y04G0033 */
1572 { 0x3a, KEY_F22 }, /* MCE -VOL, on Y04G0033 */
1573 { 0x3b, KEY_F23 }, /* MCE +CH, on Y04G0033 */
1574 { 0x3f, KEY_F24 } /* MCE -CH, on Y04G0033 */
1576 IR_TABLE(winfast, IR_TYPE_UNKNOWN, ir_codes_winfast);
1578 static struct ir_scancode ir_codes_pinnacle_color[] = {
1580 { 0x4a, KEY_POWER },
1584 { 0x3d, KEY_PRINT },
1587 { 0x04, KEY_GREEN },
1588 { 0x11, KEY_YELLOW },
1591 { 0x2d, KEY_VOLUMEUP },
1592 { 0x1e, KEY_VOLUMEDOWN },
1596 { 0x16, KEY_CHANNELUP },
1597 { 0x17, KEY_CHANNELDOWN },
1602 { 0x23, KEY_RIGHT },
1603 { 0x0d, KEY_SELECT },
1606 { 0x07, KEY_REFRESH },
1609 { 0x29, KEY_RECORD },
1611 { 0x4b, KEY_PAUSE },
1612 { 0x4d, KEY_REWIND },
1614 { 0x4e, KEY_FORWARD },
1615 { 0x53, KEY_PREVIOUS },
1630 { 0x74, KEY_CHANNEL },
1631 { 0x0a, KEY_BACKSPACE },
1633 IR_TABLE(pinnacle_color, IR_TYPE_UNKNOWN, ir_codes_pinnacle_color);
1635 /* Hauppauge: the newer, gray remotes (seems there are multiple
1636 * slightly different versions), shipped with cx88+ivtv cards.
1637 * almost rc5 coding, but some non-standard keys */
1638 static struct ir_scancode ir_codes_hauppauge_new[] = {
1651 { 0x0a, KEY_TEXT }, /* keypad asterisk as well */
1652 { 0x0b, KEY_RED }, /* red button */
1653 { 0x0c, KEY_RADIO },
1655 { 0x0e, KEY_SUBTITLE }, /* also the # key */
1657 { 0x10, KEY_VOLUMEUP },
1658 { 0x11, KEY_VOLUMEDOWN },
1659 { 0x12, KEY_PREVIOUS }, /* previous channel */
1663 { 0x17, KEY_RIGHT },
1664 { 0x18, KEY_VIDEO }, /* Videos */
1665 { 0x19, KEY_AUDIO }, /* Music */
1666 /* 0x1a: Pictures - presume this means
1667 "Multimedia Home Platform" -
1668 no "PICTURES" key in input.h
1672 { 0x1b, KEY_EPG }, /* Guide */
1674 { 0x1e, KEY_NEXTSONG }, /* skip >| */
1675 { 0x1f, KEY_EXIT }, /* back/exit */
1676 { 0x20, KEY_CHANNELUP }, /* channel / program + */
1677 { 0x21, KEY_CHANNELDOWN }, /* channel / program - */
1678 { 0x22, KEY_CHANNEL }, /* source (old black remote) */
1679 { 0x24, KEY_PREVIOUSSONG }, /* replay |< */
1680 { 0x25, KEY_ENTER }, /* OK */
1681 { 0x26, KEY_SLEEP }, /* minimize (old black remote) */
1682 { 0x29, KEY_BLUE }, /* blue key */
1683 { 0x2e, KEY_GREEN }, /* green button */
1684 { 0x30, KEY_PAUSE }, /* pause */
1685 { 0x32, KEY_REWIND }, /* backward << */
1686 { 0x34, KEY_FASTFORWARD }, /* forward >> */
1689 { 0x37, KEY_RECORD }, /* recording */
1690 { 0x38, KEY_YELLOW }, /* yellow key */
1691 { 0x3b, KEY_SELECT }, /* top right button */
1692 { 0x3c, KEY_ZOOM }, /* full */
1693 { 0x3d, KEY_POWER }, /* system power (green button) */
1695 IR_TABLE(hauppauge_new, IR_TYPE_UNKNOWN, ir_codes_hauppauge_new);
1697 static struct ir_scancode ir_codes_npgtech[] = {
1698 { 0x1d, KEY_SWITCHVIDEOMODE }, /* switch inputs */
1699 { 0x2a, KEY_FRONT },
1711 { 0x22, KEY_NUMLOCK }, /* -/-- */
1712 { 0x20, KEY_REFRESH },
1714 { 0x03, KEY_BRIGHTNESSDOWN },
1715 { 0x28, KEY_AUDIO },
1716 { 0x3c, KEY_CHANNELUP },
1717 { 0x3f, KEY_VOLUMEDOWN },
1719 { 0x3b, KEY_VOLUMEUP },
1720 { 0x00, KEY_CHANNELDOWN },
1721 { 0x07, KEY_BRIGHTNESSUP },
1724 { 0x37, KEY_RECORD },
1726 { 0x13, KEY_PAUSE },
1728 { 0x18, KEY_FASTFORWARD },
1729 { 0x14, KEY_REWIND },
1731 { 0x32, KEY_KEYBOARD },
1732 { 0x30, KEY_GOTO }, /* Pointing arrow */
1733 { 0x36, KEY_MACRO }, /* Maximize/Minimize (yellow) */
1734 { 0x0b, KEY_RADIO },
1735 { 0x10, KEY_POWER },
1738 IR_TABLE(npgtech, IR_TYPE_UNKNOWN, ir_codes_npgtech);
1740 /* Norwood Micro (non-Pro) TV Tuner
1741 By Peter Naulls <peter@chocky.org>
1742 Key comments are the functions given in the manual */
1743 static struct ir_scancode ir_codes_norwood[] = {
1756 { 0x78, KEY_TUNER }, /* Video Source */
1757 { 0x2c, KEY_EXIT }, /* Open/Close software */
1758 { 0x2a, KEY_SELECT }, /* 2 Digit Select */
1759 { 0x69, KEY_AGAIN }, /* Recall */
1761 { 0x32, KEY_BRIGHTNESSUP }, /* Brightness increase */
1762 { 0x33, KEY_BRIGHTNESSDOWN }, /* Brightness decrease */
1763 { 0x6b, KEY_KPPLUS }, /* (not named >>>>>) */
1764 { 0x6c, KEY_KPMINUS }, /* (not named <<<<<) */
1766 { 0x2d, KEY_MUTE }, /* Mute */
1767 { 0x30, KEY_VOLUMEUP }, /* Volume up */
1768 { 0x31, KEY_VOLUMEDOWN }, /* Volume down */
1769 { 0x60, KEY_CHANNELUP }, /* Channel up */
1770 { 0x61, KEY_CHANNELDOWN }, /* Channel down */
1772 { 0x3f, KEY_RECORD }, /* Record */
1773 { 0x37, KEY_PLAY }, /* Play */
1774 { 0x36, KEY_PAUSE }, /* Pause */
1775 { 0x2b, KEY_STOP }, /* Stop */
1776 { 0x67, KEY_FASTFORWARD }, /* Foward */
1777 { 0x66, KEY_REWIND }, /* Rewind */
1778 { 0x3e, KEY_SEARCH }, /* Auto Scan */
1779 { 0x2e, KEY_CAMERA }, /* Capture Video */
1780 { 0x6d, KEY_MENU }, /* Show/Hide Control */
1781 { 0x2f, KEY_ZOOM }, /* Full Screen */
1782 { 0x34, KEY_RADIO }, /* FM */
1783 { 0x65, KEY_POWER }, /* Computer power */
1785 IR_TABLE(norwood, IR_TYPE_UNKNOWN, ir_codes_norwood);
1787 /* From reading the following remotes:
1788 * Zenith Universal 7 / TV Mode 807 / VCR Mode 837
1789 * Hauppauge (from NOVA-CI-s box product)
1790 * This is a "middle of the road" approach, differences are noted
1792 static struct ir_scancode ir_codes_budget_ci_old[] = {
1803 { 0x0a, KEY_ENTER },
1805 { 0x0c, KEY_POWER }, /* RADIO on Hauppauge */
1807 { 0x0f, KEY_A }, /* TV on Hauppauge */
1808 { 0x10, KEY_VOLUMEUP },
1809 { 0x11, KEY_VOLUMEDOWN },
1813 { 0x1e, KEY_OPTION }, /* RESERVED on Hauppauge */
1814 { 0x1f, KEY_BREAK },
1815 { 0x20, KEY_CHANNELUP },
1816 { 0x21, KEY_CHANNELDOWN },
1817 { 0x22, KEY_PREVIOUS }, /* Prev Ch on Zenith, SOURCE on Hauppauge */
1818 { 0x24, KEY_RESTART },
1820 { 0x26, KEY_CYCLEWINDOWS }, /* MINIMIZE on Hauppauge */
1821 { 0x28, KEY_ENTER }, /* VCR mode on Zenith */
1822 { 0x29, KEY_PAUSE },
1823 { 0x2b, KEY_RIGHT },
1825 { 0x2e, KEY_MENU }, /* FULL SCREEN on Hauppauge */
1827 { 0x31, KEY_PREVIOUS }, /* VCR mode on Zenith */
1828 { 0x32, KEY_REWIND },
1829 { 0x34, KEY_FASTFORWARD },
1832 { 0x37, KEY_RECORD },
1833 { 0x38, KEY_TUNER }, /* TV/VCR on Zenith */
1836 { 0x3d, KEY_POWER2 },
1837 { 0x3e, KEY_TUNER },
1839 IR_TABLE(budget_ci_old, IR_TYPE_UNKNOWN, ir_codes_budget_ci_old);
1842 * Marc Fargas <telenieko@telenieko.com>
1843 * this is the remote control that comes with the asus p7131
1844 * which has a label saying is "Model PC-39"
1846 static struct ir_scancode ir_codes_asus_pc39[] = {
1859 { 0x3e, KEY_RADIO }, /* radio */
1860 { 0x03, KEY_MENU }, /* dvd/menu */
1861 { 0x2a, KEY_VOLUMEUP },
1862 { 0x19, KEY_VOLUMEDOWN },
1866 { 0x2f, KEY_RIGHT },
1867 { 0x25, KEY_VIDEO }, /* video */
1868 { 0x39, KEY_AUDIO }, /* music */
1870 { 0x21, KEY_TV }, /* tv */
1871 { 0x1d, KEY_EXIT }, /* back */
1872 { 0x0a, KEY_CHANNELUP }, /* channel / program + */
1873 { 0x1b, KEY_CHANNELDOWN }, /* channel / program - */
1874 { 0x1a, KEY_ENTER }, /* enter */
1876 { 0x06, KEY_PAUSE }, /* play/pause */
1877 { 0x1e, KEY_PREVIOUS }, /* rew */
1878 { 0x26, KEY_NEXT }, /* forward */
1879 { 0x0e, KEY_REWIND }, /* backward << */
1880 { 0x3a, KEY_FASTFORWARD }, /* forward >> */
1882 { 0x2e, KEY_RECORD }, /* recording */
1883 { 0x16, KEY_POWER }, /* the button that reads "close" */
1885 { 0x11, KEY_ZOOM }, /* full screen */
1886 { 0x13, KEY_MACRO }, /* recall */
1887 { 0x23, KEY_HOME }, /* home */
1888 { 0x05, KEY_PVR }, /* picture */
1889 { 0x3d, KEY_MUTE }, /* mute */
1890 { 0x01, KEY_DVD }, /* dvd */
1892 IR_TABLE(asus_pc39, IR_TYPE_UNKNOWN, ir_codes_asus_pc39);
1894 /* Encore ENLTV-FM - black plastic, white front cover with white glowing buttons
1895 Juan Pablo Sormani <sorman@gmail.com> */
1896 static struct ir_scancode ir_codes_encore_enltv[] = {
1898 /* Power button does nothing, neither in Windows app,
1899 although it sends data (used for BIOS wakeup?) */
1903 { 0x00, KEY_VIDEO },
1904 { 0x01, KEY_AUDIO }, /* music */
1905 { 0x02, KEY_MHP }, /* picture */
1918 { 0x09, KEY_LIST }, /* -/-- */
1919 { 0x0b, KEY_LAST }, /* recall */
1921 { 0x14, KEY_HOME }, /* win start menu */
1922 { 0x15, KEY_EXIT }, /* exit */
1923 { 0x16, KEY_CHANNELUP }, /* UP */
1924 { 0x12, KEY_CHANNELDOWN }, /* DOWN */
1925 { 0x0c, KEY_VOLUMEUP }, /* RIGHT */
1926 { 0x17, KEY_VOLUMEDOWN }, /* LEFT */
1928 { 0x18, KEY_ENTER }, /* OK */
1931 { 0x13, KEY_CYCLEWINDOWS }, /* desktop */
1933 { 0x19, KEY_SWITCHVIDEOMODE }, /* switch */
1936 { 0x1b, KEY_ZOOM }, /* fullscreen */
1937 { 0x44, KEY_TIME }, /* time shift */
1938 { 0x40, KEY_MODE }, /* source */
1940 { 0x5a, KEY_RECORD },
1941 { 0x42, KEY_PLAY }, /* play/pause */
1943 { 0x43, KEY_CAMERA }, /* camera icon */
1945 { 0x48, KEY_REWIND },
1946 { 0x4a, KEY_FASTFORWARD },
1947 { 0x49, KEY_PREVIOUS },
1950 { 0x4c, KEY_FAVORITES }, /* tv wall */
1951 { 0x4d, KEY_SOUND }, /* DVD sound */
1952 { 0x4e, KEY_LANGUAGE }, /* DVD lang */
1953 { 0x4f, KEY_TEXT }, /* DVD text */
1955 { 0x50, KEY_SLEEP }, /* shutdown */
1956 { 0x51, KEY_MODE }, /* stereo > main */
1957 { 0x52, KEY_SELECT }, /* stereo > sap */
1958 { 0x53, KEY_PROG1 }, /* teletext */
1961 { 0x59, KEY_RED }, /* AP1 */
1962 { 0x41, KEY_GREEN }, /* AP2 */
1963 { 0x47, KEY_YELLOW }, /* AP3 */
1964 { 0x57, KEY_BLUE }, /* AP4 */
1966 IR_TABLE(encore_enltv, IR_TYPE_UNKNOWN, ir_codes_encore_enltv);
1968 /* Encore ENLTV2-FM - silver plastic - "Wand Media" written at the botton
1969 Mauro Carvalho Chehab <mchehab@infradead.org> */
1970 static struct ir_scancode ir_codes_encore_enltv2[] = {
1971 { 0x4c, KEY_POWER2 },
1972 { 0x4a, KEY_TUNER },
1984 { 0x64, KEY_LAST }, /* +100 */
1985 { 0x4e, KEY_AGAIN }, /* Recall */
1987 { 0x6c, KEY_SWITCHVIDEOMODE }, /* Video Source */
1989 { 0x56, KEY_SCREEN },
1990 { 0x7a, KEY_SETUP },
1993 { 0x5c, KEY_MODE }, /* Stereo */
1995 { 0x7c, KEY_CLEAR },
2000 { 0x59, KEY_RIGHT },
2001 { 0x6a, KEY_ENTER },
2003 { 0x42, KEY_VOLUMEUP },
2004 { 0x62, KEY_VOLUMEDOWN },
2005 { 0x52, KEY_CHANNELUP },
2006 { 0x72, KEY_CHANNELDOWN },
2008 { 0x41, KEY_RECORD },
2009 { 0x51, KEY_CAMERA }, /* Snapshot */
2010 { 0x75, KEY_TIME }, /* Timeshift */
2011 { 0x71, KEY_TV2 }, /* PIP */
2013 { 0x45, KEY_REWIND },
2014 { 0x6f, KEY_PAUSE },
2015 { 0x7d, KEY_FORWARD },
2018 IR_TABLE(encore_enltv2, IR_TYPE_UNKNOWN, ir_codes_encore_enltv2);
2020 /* for the Technotrend 1500 bundled remotes (grey and black): */
2021 static struct ir_scancode ir_codes_tt_1500[] = {
2022 { 0x01, KEY_POWER },
2023 { 0x02, KEY_SHUFFLE }, /* ? double-arrow key */
2037 { 0x10, KEY_RIGHT },
2042 { 0x15, KEY_GREEN },
2043 { 0x16, KEY_YELLOW },
2047 { 0x1a, KEY_MODE }, /* ? TV/Radio */
2048 { 0x21, KEY_OPTION },
2050 { 0x23, KEY_CHANNELUP },
2051 { 0x24, KEY_CHANNELDOWN },
2052 { 0x25, KEY_VOLUMEUP },
2053 { 0x26, KEY_VOLUMEDOWN },
2054 { 0x27, KEY_SETUP },
2055 { 0x3a, KEY_RECORD }, /* these keys are only in the black remote */
2058 { 0x3d, KEY_REWIND },
2059 { 0x3e, KEY_PAUSE },
2060 { 0x3f, KEY_FORWARD },
2062 IR_TABLE(tt_1500, IR_TYPE_UNKNOWN, ir_codes_tt_1500);
2064 /* DViCO FUSION HDTV MCE remote */
2065 static struct ir_scancode ir_codes_fusionhdtv_mce[] = {
2082 { 0x5f, KEY_RIGHT },
2084 { 0x02, KEY_TV }, /* Labeled DTV on remote */
2087 { 0x1e, KEY_FAVORITES }, /* Labeled CPF on remote */
2088 { 0x16, KEY_SETUP },
2089 { 0x46, KEY_POWER2 }, /* TV On/Off button on remote */
2090 { 0x0a, KEY_EPG }, /* Labeled Guide on remote */
2093 { 0x59, KEY_INFO }, /* Labeled MORE on remote */
2094 { 0x4d, KEY_MENU }, /* Labeled DVDMENU on remote */
2095 { 0x55, KEY_CYCLEWINDOWS }, /* Labeled ALT-TAB on remote */
2097 { 0x0f, KEY_PREVIOUSSONG }, /* Labeled |<< REPLAY on remote */
2098 { 0x12, KEY_NEXTSONG }, /* Labeled >>| SKIP on remote */
2099 { 0x42, KEY_ENTER }, /* Labeled START with a green
2100 MS windows logo on remote */
2102 { 0x15, KEY_VOLUMEUP },
2103 { 0x05, KEY_VOLUMEDOWN },
2104 { 0x11, KEY_CHANNELUP },
2105 { 0x09, KEY_CHANNELDOWN },
2107 { 0x52, KEY_CAMERA },
2108 { 0x5a, KEY_TUNER },
2111 { 0x13, KEY_MODE }, /* 4:3 16:9 select */
2114 { 0x43, KEY_REWIND },
2115 { 0x47, KEY_PLAYPAUSE },
2116 { 0x4f, KEY_FASTFORWARD },
2119 { 0x01, KEY_RECORD },
2120 { 0x4e, KEY_POWER },
2122 IR_TABLE(fusionhdtv_mce, IR_TYPE_UNKNOWN, ir_codes_fusionhdtv_mce);
2124 /* Pinnacle PCTV HD 800i mini remote */
2125 static struct ir_scancode ir_codes_pinnacle_pctv_hd[] = {
2139 { 0x2a, KEY_SUBTITLE },
2142 { 0x01, KEY_ENTER }, /* Pinnacle Logo */
2143 { 0x39, KEY_POWER },
2145 { 0x03, KEY_VOLUMEUP },
2146 { 0x09, KEY_VOLUMEDOWN },
2147 { 0x06, KEY_CHANNELUP },
2148 { 0x0c, KEY_CHANNELDOWN },
2150 { 0x2d, KEY_REWIND },
2151 { 0x30, KEY_PLAYPAUSE },
2152 { 0x33, KEY_FASTFORWARD },
2154 { 0x36, KEY_RECORD },
2155 { 0x3f, KEY_EPG }, /* Labeled "?" */
2157 IR_TABLE(pinnacle_pctv_hd, IR_TYPE_UNKNOWN, ir_codes_pinnacle_pctv_hd);
2160 * Igor Kuznetsov <igk72@ya.ru>
2161 * Andrey J. Melnikov <temnota@kmv.ru>
2163 * Keytable is used by BeholdTV 60x series, M6 series at
2164 * least, and probably other cards too.
2165 * The "ascii-art picture" below (in comments, first row
2166 * is the keycode in hex, and subsequent row(s) shows
2167 * the button labels (several variants when appropriate)
2168 * helps to descide which keycodes to assign to the buttons.
2170 static struct ir_scancode ir_codes_behold[] = {
2175 { 0x1c, KEY_TUNER }, /* XXX KEY_TV / KEY_RADIO */
2176 { 0x12, KEY_POWER },
2200 { 0x0a, KEY_AGAIN },
2205 * ASPECT FULLSCREEN *
2207 { 0x14, KEY_SCREEN },
2219 { 0x0b, KEY_CHANNELUP },
2220 { 0x18, KEY_VOLUMEDOWN },
2221 { 0x16, KEY_OK }, /* XXX KEY_ENTER */
2222 { 0x0c, KEY_VOLUMEUP },
2223 { 0x15, KEY_CHANNELDOWN },
2232 * RECORD PLAY/PAUSE STOP *
2235 *TELETEXT AUDIO SOURCE *
2238 { 0x0f, KEY_RECORD },
2239 { 0x1b, KEY_PLAYPAUSE },
2242 { 0x1f, KEY_RED }, /*XXX KEY_AUDIO */
2243 { 0x1e, KEY_YELLOW }, /*XXX KEY_SOURCE */
2246 * SLEEP PREVIEW DVB *
2249 { 0x1d, KEY_SLEEP },
2250 { 0x13, KEY_GREEN },
2251 { 0x19, KEY_BLUE }, /* XXX KEY_SAT */
2257 { 0x5c, KEY_CAMERA },
2260 IR_TABLE(behold, IR_TYPE_UNKNOWN, ir_codes_behold);
2262 /* Beholder Intl. Ltd. 2008
2263 * Dmitry Belimov d.belimov@google.com
2264 * Keytable is used by BeholdTV Columbus
2265 * The "ascii-art picture" below (in comments, first row
2266 * is the keycode in hex, and subsequent row(s) shows
2267 * the button labels (several variants when appropriate)
2268 * helps to descide which keycodes to assign to the buttons.
2270 static struct ir_scancode ir_codes_behold_columbus[] = {
2272 /* 0x13 0x11 0x1C 0x12 *
2273 * Mute Source TV/FM Power *
2277 { 0x11, KEY_PROPS },
2278 { 0x1C, KEY_TUNER }, /* KEY_TV/KEY_RADIO */
2279 { 0x12, KEY_POWER },
2281 /* 0x01 0x02 0x03 0x0D *
2284 * 0x04 0x05 0x06 0x19 *
2287 * 0x07 0x08 0x09 0x10 *
2293 { 0x0D, KEY_SETUP }, /* Setup key */
2297 { 0x19, KEY_CAMERA }, /* Snapshot key */
2303 /* 0x0A 0x00 0x0B 0x0C *
2304 * RECALL 0 ChannelUp VolumeUp *
2306 { 0x0A, KEY_AGAIN },
2308 { 0x0B, KEY_CHANNELUP },
2309 { 0x0C, KEY_VOLUMEUP },
2311 /* 0x1B 0x1D 0x15 0x18 *
2312 * Timeshift Record ChannelDown VolumeDown *
2316 { 0x1D, KEY_RECORD },
2317 { 0x15, KEY_CHANNELDOWN },
2318 { 0x18, KEY_VOLUMEDOWN },
2320 /* 0x0E 0x1E 0x0F 0x1A *
2321 * Stop Pause Previouse Next *
2325 { 0x1E, KEY_PAUSE },
2326 { 0x0F, KEY_PREVIOUS },
2330 IR_TABLE(behold_columbus, IR_TYPE_UNKNOWN, ir_codes_behold_columbus);
2333 * Remote control for the Genius TVGO A11MCE
2334 * Adrian Pardini <pardo.bsso@gmail.com>
2336 static struct ir_scancode ir_codes_genius_tvgo_a11mce[] = {
2349 { 0x54, KEY_RECORD }, /* recording */
2350 { 0x06, KEY_MUTE }, /* mute */
2351 { 0x10, KEY_POWER },
2352 { 0x40, KEY_LAST }, /* recall */
2353 { 0x4c, KEY_CHANNELUP }, /* channel / program + */
2354 { 0x00, KEY_CHANNELDOWN }, /* channel / program - */
2355 { 0x0d, KEY_VOLUMEUP },
2356 { 0x15, KEY_VOLUMEDOWN },
2357 { 0x4d, KEY_OK }, /* also labeled as Pause */
2358 { 0x1c, KEY_ZOOM }, /* full screen and Stop*/
2359 { 0x02, KEY_MODE }, /* AV Source or Rewind*/
2360 { 0x04, KEY_LIST }, /* -/-- */
2361 /* small arrows above numbers */
2362 { 0x1a, KEY_NEXT }, /* also Fast Forward */
2363 { 0x0e, KEY_PREVIOUS }, /* also Rewind */
2364 /* these are in a rather non standard layout and have
2365 an alternate name written */
2366 { 0x1e, KEY_UP }, /* Video Setting */
2367 { 0x0a, KEY_DOWN }, /* Video Default */
2368 { 0x05, KEY_CAMERA }, /* Snapshot */
2369 { 0x0c, KEY_RIGHT }, /* Hide Panel */
2370 /* Four buttons without label */
2372 { 0x0b, KEY_GREEN },
2373 { 0x13, KEY_YELLOW },
2376 IR_TABLE(genius_tvgo_a11mce, IR_TYPE_UNKNOWN, ir_codes_genius_tvgo_a11mce);
2379 * Remote control for Powercolor Real Angel 330
2380 * Daniel Fraga <fragabr@gmail.com>
2382 static struct ir_scancode ir_codes_powercolor_real_angel[] = {
2383 { 0x38, KEY_SWITCHVIDEOMODE }, /* switch inputs */
2384 { 0x0c, KEY_MEDIA }, /* Turn ON/OFF App */
2395 { 0x0a, KEY_DIGITS }, /* single, double, tripple digit */
2396 { 0x29, KEY_PREVIOUS }, /* previous channel */
2397 { 0x12, KEY_BRIGHTNESSUP },
2398 { 0x13, KEY_BRIGHTNESSDOWN },
2399 { 0x2b, KEY_MODE }, /* stereo/mono */
2400 { 0x2c, KEY_TEXT }, /* teletext */
2401 { 0x20, KEY_CHANNELUP }, /* channel up */
2402 { 0x21, KEY_CHANNELDOWN }, /* channel down */
2403 { 0x10, KEY_VOLUMEUP }, /* volume up */
2404 { 0x11, KEY_VOLUMEDOWN }, /* volume down */
2406 { 0x1f, KEY_RECORD },
2408 { 0x16, KEY_PAUSE },
2410 { 0x27, KEY_FASTFORWARD },
2411 { 0x26, KEY_REWIND },
2412 { 0x1e, KEY_SEARCH }, /* autoscan */
2413 { 0x0e, KEY_CAMERA }, /* snapshot */
2414 { 0x2d, KEY_SETUP },
2415 { 0x0f, KEY_SCREEN }, /* full screen */
2416 { 0x14, KEY_RADIO }, /* FM radio */
2417 { 0x25, KEY_POWER }, /* power */
2419 IR_TABLE(powercolor_real_angel, IR_TYPE_UNKNOWN, ir_codes_powercolor_real_angel);
2421 /* Kworld Plus TV Analog Lite PCI IR
2422 Mauro Carvalho Chehab <mchehab@infradead.org>
2424 static struct ir_scancode ir_codes_kworld_plus_tv_analog[] = {
2425 { 0x0c, KEY_PROG1 }, /* Kworld key */
2426 { 0x16, KEY_CLOSECD }, /* -> ) */
2427 { 0x1d, KEY_POWER2 },
2431 { 0x02, KEY_3 }, /* Two keys have the same code: 3 and left */
2432 { 0x03, KEY_4 }, /* Two keys have the same code: 3 and right */
2440 { 0x09, KEY_AGAIN },
2445 { 0x0b, KEY_ENTER },
2447 { 0x10, KEY_CHANNELUP },
2448 { 0x11, KEY_CHANNELDOWN },
2450 /* Couldn't map key left/key right since those
2451 conflict with '3' and '4' scancodes
2452 I dunno what the original driver does
2455 { 0x13, KEY_VOLUMEUP },
2456 { 0x12, KEY_VOLUMEDOWN },
2458 /* The lower part of the IR
2459 There are several duplicated keycodes there.
2460 Most of them conflict with digits.
2461 Add mappings just to the unused scancodes.
2462 Somehow, the original driver has a way to know,
2463 but this doesn't seem to be on some GPIO.
2464 Also, it is not related to the time between keyup
2467 { 0x19, KEY_TIME}, /* Timeshift */
2469 { 0x1b, KEY_RECORD},
2473 { 0x15, KEY_AUDIO}, /* ((*)) */
2475 { 0x1c, KEY_CAMERA}, /* snapshot */
2477 { 0x18, KEY_RED}, /* B */
2478 { 0x23, KEY_GREEN}, /* C */
2480 IR_TABLE(kworld_plus_tv_analog, IR_TYPE_UNKNOWN, ir_codes_kworld_plus_tv_analog);
2483 Mauro Carvalho Chehab <mchehab@infradead.org>
2485 static struct ir_scancode ir_codes_kaiomy[] = {
2486 { 0x43, KEY_POWER2},
2505 { 0x09, KEY_CHANNELUP},
2506 { 0x07, KEY_CHANNELDOWN},
2508 { 0x0e, KEY_VOLUMEUP},
2509 { 0x13, KEY_VOLUMEDOWN},
2514 { 0x14, KEY_RECORD},
2526 { 0x1e, KEY_YELLOW},
2529 IR_TABLE(kaiomy, IR_TYPE_UNKNOWN, ir_codes_kaiomy);
2531 static struct ir_scancode ir_codes_avermedia_a16d[] = {
2543 { 0x12, KEY_SUBTITLE},
2545 { 0x32, KEY_REWIND},
2546 { 0x3a, KEY_SHUFFLE},
2548 { 0x11, KEY_CHANNELDOWN},
2549 { 0x31, KEY_CHANNELUP},
2551 { 0x1e, KEY_VOLUMEDOWN},
2552 { 0x3e, KEY_VOLUMEUP},
2555 { 0x26, KEY_RECORD},
2559 { 0x2e, KEY_REWIND},
2560 { 0x0e, KEY_FASTFORWARD},
2567 IR_TABLE(avermedia_a16d, IR_TYPE_UNKNOWN, ir_codes_avermedia_a16d);
2569 /* Encore ENLTV-FM v5.3
2570 Mauro Carvalho Chehab <mchehab@infradead.org>
2572 static struct ir_scancode ir_codes_encore_enltv_fm53[] = {
2573 { 0x10, KEY_POWER2},
2587 { 0x04, KEY_LIST}, /* -/-- */
2588 { 0x40, KEY_LAST}, /* recall */
2590 { 0x02, KEY_MODE}, /* TV/AV */
2591 { 0x05, KEY_CAMERA}, /* SNAPSHOT */
2593 { 0x4c, KEY_CHANNELUP}, /* UP */
2594 { 0x00, KEY_CHANNELDOWN}, /* DOWN */
2595 { 0x0d, KEY_VOLUMEUP}, /* RIGHT */
2596 { 0x15, KEY_VOLUMEDOWN}, /* LEFT */
2597 { 0x49, KEY_ENTER}, /* OK */
2599 { 0x54, KEY_RECORD},
2600 { 0x4d, KEY_PLAY}, /* pause */
2602 { 0x1e, KEY_MENU}, /* video setting */
2603 { 0x0e, KEY_RIGHT}, /* <- */
2604 { 0x1a, KEY_LEFT}, /* -> */
2606 { 0x0a, KEY_CLEAR}, /* video default */
2607 { 0x0c, KEY_ZOOM}, /* hide pannel */
2608 { 0x47, KEY_SLEEP}, /* shutdown */
2610 IR_TABLE(encore_enltv_fm53, IR_TYPE_UNKNOWN, ir_codes_encore_enltv_fm53);
2612 /* Zogis Real Audio 220 - 32 keys IR */
2613 static struct ir_scancode ir_codes_real_audio_220_32_keys[] = {
2615 { 0x12, KEY_POWER2},
2628 { 0x0c, KEY_VOLUMEUP},
2629 { 0x18, KEY_VOLUMEDOWN},
2630 { 0x0b, KEY_CHANNELUP},
2631 { 0x15, KEY_CHANNELDOWN},
2634 { 0x11, KEY_LIST}, /* Source */
2635 { 0x0d, KEY_AUDIO}, /* stereo */
2637 { 0x0f, KEY_PREVIOUS}, /* Prev */
2638 { 0x1b, KEY_TIME}, /* Timeshift */
2639 { 0x1a, KEY_NEXT}, /* Next */
2643 { 0x1e, KEY_PLAYPAUSE}, /* Pause */
2645 { 0x1d, KEY_RECORD},
2647 { 0x19, KEY_CAMERA}, /* Snapshot */
2650 IR_TABLE(real_audio_220_32_keys, IR_TYPE_UNKNOWN, ir_codes_real_audio_220_32_keys);
2652 /* ATI TV Wonder HD 600 USB
2653 Devin Heitmueller <devin.heitmueller@gmail.com>
2655 static struct ir_scancode ir_codes_ati_tv_wonder_hd_600[] = {
2656 { 0x00, KEY_RECORD}, /* Row 1 */
2657 { 0x01, KEY_PLAYPAUSE},
2660 { 0x04, KEY_PREVIOUS}, /* Row 2 */
2661 { 0x05, KEY_REWIND},
2662 { 0x06, KEY_FORWARD},
2664 { 0x08, KEY_EPG}, /* Row 3 */
2667 { 0x0b, KEY_CHANNELUP},
2668 { 0x0c, KEY_BACK}, /* Row 4 */
2671 { 0x0f, KEY_CHANNELDOWN},
2672 { 0x10, KEY_LEFT}, /* Row 5 */
2673 { 0x11, KEY_SELECT},
2675 { 0x13, KEY_VOLUMEUP},
2676 { 0x14, KEY_LAST}, /* Row 6 */
2679 { 0x17, KEY_VOLUMEDOWN},
2681 IR_TABLE(ati_tv_wonder_hd_600, IR_TYPE_UNKNOWN, ir_codes_ati_tv_wonder_hd_600);
2684 Igor M. Liplianin <liplianin@me.by>
2686 static struct ir_scancode ir_codes_dm1105_nec[] = {
2687 { 0x0a, KEY_POWER2}, /* power */
2688 { 0x0c, KEY_MUTE}, /* mute */
2699 { 0x1c, KEY_CHANNELUP}, /* ch+ */
2700 { 0x0f, KEY_CHANNELDOWN}, /* ch- */
2701 { 0x1a, KEY_VOLUMEUP}, /* vol+ */
2702 { 0x0e, KEY_VOLUMEDOWN}, /* vol- */
2703 { 0x04, KEY_RECORD}, /* rec */
2704 { 0x09, KEY_CHANNEL}, /* fav */
2705 { 0x08, KEY_BACKSPACE}, /* rewind */
2706 { 0x07, KEY_FASTFORWARD}, /* fast */
2707 { 0x0b, KEY_PAUSE}, /* pause */
2708 { 0x02, KEY_ESC}, /* cancel */
2709 { 0x03, KEY_TAB}, /* tab */
2710 { 0x00, KEY_UP}, /* up */
2711 { 0x1f, KEY_ENTER}, /* ok */
2712 { 0x01, KEY_DOWN}, /* down */
2713 { 0x05, KEY_RECORD}, /* cap */
2714 { 0x06, KEY_STOP}, /* stop */
2715 { 0x40, KEY_ZOOM}, /* full */
2716 { 0x1e, KEY_TV}, /* tvmode */
2717 { 0x1b, KEY_B}, /* recall */
2719 IR_TABLE(dm1105_nec, IR_TYPE_UNKNOWN, ir_codes_dm1105_nec);
2721 static struct ir_scancode ir_codes_tevii_nec[] = {
2722 { 0x0a, KEY_POWER2},
2735 { 0x0f, KEY_VOLUMEDOWN},
2738 { 0x04, KEY_RECORD},
2739 { 0x09, KEY_VOLUMEUP},
2740 { 0x08, KEY_CHANNELUP},
2749 { 0x06, KEY_CHANNELDOWN},
2750 { 0x40, KEY_PLAYPAUSE},
2751 { 0x1e, KEY_REWIND},
2752 { 0x1b, KEY_FAVORITES},
2754 { 0x4d, KEY_FASTFORWARD},
2759 { 0x45, KEY_SUBTITLE},
2768 { 0x58, KEY_SWITCHVIDEOMODE},
2770 IR_TABLE(tevii_nec, IR_TYPE_UNKNOWN, ir_codes_tevii_nec);
2772 static struct ir_scancode ir_codes_tbs_nec[] = {
2773 { 0x04, KEY_POWER2}, /*power*/
2774 { 0x14, KEY_MUTE}, /*mute*/
2785 { 0x16, KEY_CHANNELUP}, /*ch+*/
2786 { 0x11, KEY_CHANNELDOWN},/*ch-*/
2787 { 0x13, KEY_VOLUMEUP}, /*vol+*/
2788 { 0x0c, KEY_VOLUMEDOWN},/*vol-*/
2789 { 0x03, KEY_RECORD}, /*rec*/
2790 { 0x18, KEY_PAUSE}, /*pause*/
2791 { 0x19, KEY_OK}, /*ok*/
2792 { 0x1a, KEY_CAMERA}, /* snapshot */
2797 { 0x15, KEY_FAVORITES},
2798 { 0x17, KEY_SUBTITLE},
2803 { 0x00, KEY_PREVIOUS},
2806 IR_TABLE(tbs_nec, IR_TYPE_UNKNOWN, ir_codes_tbs_nec);
2808 /* Terratec Cinergy Hybrid T USB XS
2809 Devin Heitmueller <dheitmueller@linuxtv.org>
2811 static struct ir_scancode ir_codes_terratec_cinergy_xs[] = {
2818 { 0x43, KEY_SUBTITLE},
2826 { 0x45, KEY_DELETE},
2841 { 0x4d, KEY_BACKSPACE},
2842 { 0x1c, KEY_VOLUMEUP},
2844 { 0x1b, KEY_CHANNELUP},
2845 { 0x1e, KEY_VOLUMEDOWN},
2847 { 0x1f, KEY_CHANNELDOWN},
2850 { 0x19, KEY_YELLOW},
2852 { 0x58, KEY_RECORD},
2856 { 0x4e, KEY_REWIND},
2857 { 0x4f, KEY_FASTFORWARD},
2860 IR_TABLE(terratec_cinergy_xs, IR_TYPE_UNKNOWN, ir_codes_terratec_cinergy_xs);
2863 Devin Heitmueller <devin.heitmueller@gmail.com>
2865 static struct ir_scancode ir_codes_evga_indtube[] = {
2867 { 0x02, KEY_MODE}, /* TV */
2869 { 0x1a, KEY_CHANNELUP},
2870 { 0x16, KEY_TV2}, /* PIP */
2871 { 0x1d, KEY_VOLUMEUP},
2872 { 0x05, KEY_CHANNELDOWN},
2873 { 0x0f, KEY_PLAYPAUSE},
2874 { 0x19, KEY_VOLUMEDOWN},
2875 { 0x1c, KEY_REWIND},
2876 { 0x0d, KEY_RECORD},
2877 { 0x18, KEY_FORWARD},
2878 { 0x1e, KEY_PREVIOUS},
2881 { 0x13, KEY_CAMERA},
2883 IR_TABLE(evga_indtube, IR_TYPE_UNKNOWN, ir_codes_evga_indtube);
2885 static struct ir_scancode ir_codes_videomate_s350[] = {
2888 { 0x04, KEY_RECORD},
2889 { 0x05, KEY_VIDEO}, /* TV/Video */
2891 { 0x08, KEY_PLAYPAUSE},
2892 { 0x0a, KEY_REWIND},
2893 { 0x0f, KEY_FASTFORWARD},
2894 { 0x10, KEY_CHANNELUP},
2895 { 0x12, KEY_VOLUMEUP},
2896 { 0x13, KEY_CHANNELDOWN},
2898 { 0x15, KEY_VOLUMEDOWN},
2911 { 0x25, KEY_LAST}, /* Recall */
2912 { 0x26, KEY_SUBTITLE}, /* CC */
2913 { 0x27, KEY_LANGUAGE}, /* MTS */
2914 { 0x29, KEY_CHANNEL}, /* SURF */
2917 { 0x2f, KEY_CAMERA}, /* Snapshot */
2919 { 0x02, KEY_PREVIOUSSONG},
2920 { 0x06, KEY_NEXTSONG},
2923 { 0x22, KEY_BACKSPACE},
2931 IR_TABLE(videomate_s350, IR_TYPE_UNKNOWN, ir_codes_videomate_s350);
2933 /* GADMEI UTV330+ RM008Z remote
2934 Shine Liu <shinel@foxmail.com>
2936 static struct ir_scancode ir_codes_gadmei_rm008z[] = {
2937 { 0x14, KEY_POWER2}, /* POWER OFF */
2938 { 0x0c, KEY_MUTE}, /* MUTE */
2940 { 0x18, KEY_TV}, /* TV */
2941 { 0x0e, KEY_VIDEO}, /* AV */
2942 { 0x0b, KEY_AUDIO}, /* SV */
2943 { 0x0f, KEY_RADIO}, /* FM */
2955 { 0x0a, KEY_INFO}, /* OSD */
2956 { 0x1c, KEY_BACKSPACE}, /* LAST */
2958 { 0x0d, KEY_PLAY}, /* PLAY */
2959 { 0x1e, KEY_CAMERA}, /* SNAPSHOT */
2960 { 0x1a, KEY_RECORD}, /* RECORD */
2961 { 0x17, KEY_STOP}, /* STOP */
2963 { 0x1f, KEY_UP}, /* UP */
2964 { 0x44, KEY_DOWN}, /* DOWN */
2965 { 0x46, KEY_TAB}, /* BACK */
2966 { 0x4a, KEY_ZOOM}, /* FULLSECREEN */
2968 { 0x10, KEY_VOLUMEUP}, /* VOLUMEUP */
2969 { 0x11, KEY_VOLUMEDOWN}, /* VOLUMEDOWN */
2970 { 0x12, KEY_CHANNELUP}, /* CHANNELUP */
2971 { 0x13, KEY_CHANNELDOWN}, /* CHANNELDOWN */
2972 { 0x15, KEY_ENTER}, /* OK */
2974 IR_TABLE(gadmei_rm008z, IR_TYPE_UNKNOWN, ir_codes_gadmei_rm008z);
2976 /*************************************************************
2977 * COMPLETE SCANCODE TABLES
2978 * Instead of just a partial scancode, the tables bellow
2979 * contains the complete scancode and the receiver protocol
2980 *************************************************************/
2983 * Hauppauge:the newer, gray remotes (seems there are multiple
2984 * slightly different versions), shipped with cx88+ivtv cards.
2986 * This table contains the complete RC5 code, instead of just the data part
2988 static struct ir_scancode ir_codes_rc5_hauppauge_new[] = {
3001 { 0x1e0a, KEY_TEXT }, /* keypad asterisk as well */
3002 { 0x1e0b, KEY_RED }, /* red button */
3003 { 0x1e0c, KEY_RADIO },
3004 { 0x1e0d, KEY_MENU },
3005 { 0x1e0e, KEY_SUBTITLE }, /* also the # key */
3006 { 0x1e0f, KEY_MUTE },
3007 { 0x1e10, KEY_VOLUMEUP },
3008 { 0x1e11, KEY_VOLUMEDOWN },
3009 { 0x1e12, KEY_PREVIOUS }, /* previous channel */
3011 { 0x1e15, KEY_DOWN },
3012 { 0x1e16, KEY_LEFT },
3013 { 0x1e17, KEY_RIGHT },
3014 { 0x1e18, KEY_VIDEO }, /* Videos */
3015 { 0x1e19, KEY_AUDIO }, /* Music */
3016 /* 0x1e1a: Pictures - presume this means
3017 "Multimedia Home Platform" -
3018 no "PICTURES" key in input.h
3020 { 0x1e1a, KEY_MHP },
3022 { 0x1e1b, KEY_EPG }, /* Guide */
3024 { 0x1e1e, KEY_NEXTSONG }, /* skip >| */
3025 { 0x1e1f, KEY_EXIT }, /* back/exit */
3026 { 0x1e20, KEY_CHANNELUP }, /* channel / program + */
3027 { 0x1e21, KEY_CHANNELDOWN }, /* channel / program - */
3028 { 0x1e22, KEY_CHANNEL }, /* source (old black remote) */
3029 { 0x1e24, KEY_PREVIOUSSONG }, /* replay |< */
3030 { 0x1e25, KEY_ENTER }, /* OK */
3031 { 0x1e26, KEY_SLEEP }, /* minimize (old black remote) */
3032 { 0x1e29, KEY_BLUE }, /* blue key */
3033 { 0x1e2e, KEY_GREEN }, /* green button */
3034 { 0x1e30, KEY_PAUSE }, /* pause */
3035 { 0x1e32, KEY_REWIND }, /* backward << */
3036 { 0x1e34, KEY_FASTFORWARD }, /* forward >> */
3037 { 0x1e35, KEY_PLAY },
3038 { 0x1e36, KEY_STOP },
3039 { 0x1e37, KEY_RECORD }, /* recording */
3040 { 0x1e38, KEY_YELLOW }, /* yellow key */
3041 { 0x1e3b, KEY_SELECT }, /* top right button */
3042 { 0x1e3c, KEY_ZOOM }, /* full */
3043 { 0x1e3d, KEY_POWER }, /* system power (green button) */
3045 IR_TABLE(rc5_hauppauge_new, IR_TYPE_RC5, ir_codes_rc5_hauppauge_new);
3047 /* Terratec Cinergy Hybrid T USB XS FM
3048 Mauro Carvalho Chehab <mchehab@redhat.com>
3050 static struct ir_scancode ir_codes_nec_terratec_cinergy_xs[] = {
3051 { 0x1441, KEY_HOME},
3052 { 0x1401, KEY_POWER2},
3054 { 0x1442, KEY_MENU}, /* DVD menu */
3055 { 0x1443, KEY_SUBTITLE},
3056 { 0x1444, KEY_TEXT}, /* Teletext */
3057 { 0x1445, KEY_DELETE},
3070 { 0x140b, KEY_TUNER}, /* AV */
3071 { 0x140d, KEY_MODE}, /* A.B */
3075 { 0x1449, KEY_VIDEO},
3076 { 0x144a, KEY_RADIO}, /* Music */
3077 { 0x144b, KEY_CAMERA}, /* PIC */
3080 { 0x1411, KEY_LEFT},
3082 { 0x1413, KEY_RIGHT},
3083 { 0x1414, KEY_DOWN},
3086 { 0x1416, KEY_INFO},
3087 { 0x144d, KEY_BACKSPACE},
3089 { 0x141c, KEY_VOLUMEUP},
3090 { 0x141e, KEY_VOLUMEDOWN},
3092 { 0x144c, KEY_PLAY},
3093 { 0x141d, KEY_MUTE},
3095 { 0x141b, KEY_CHANNELUP},
3096 { 0x141f, KEY_CHANNELDOWN},
3099 { 0x1418, KEY_GREEN},
3100 { 0x1419, KEY_YELLOW},
3101 { 0x141a, KEY_BLUE},
3103 { 0x1458, KEY_RECORD},
3104 { 0x1448, KEY_STOP},
3105 { 0x1440, KEY_PAUSE},
3107 { 0x1454, KEY_LAST},
3108 { 0x144e, KEY_REWIND},
3109 { 0x144f, KEY_FASTFORWARD},
3110 { 0x145c, KEY_NEXT},
3112 IR_TABLE(nec_terratec_cinergy_xs, IR_TYPE_NEC, ir_codes_nec_terratec_cinergy_xs);
3114 /* Leadtek Winfast TV USB II Deluxe remote
3115 Magnus Alm <magnus.alm@gmail.com>
3117 static struct ir_scancode ir_codes_winfast_usbii_deluxe[] = {
3129 { 0x38, KEY_CAMERA}, /* SNAPSHOT */
3130 { 0x37, KEY_RECORD}, /* RECORD */
3131 { 0x35, KEY_TIME}, /* TIMESHIFT */
3133 { 0x74, KEY_VOLUMEUP}, /* VOLUMEUP */
3134 { 0x78, KEY_VOLUMEDOWN}, /* VOLUMEDOWN */
3135 { 0x64, KEY_MUTE}, /* MUTE */
3137 { 0x21, KEY_CHANNEL}, /* SURF */
3138 { 0x7c, KEY_CHANNELUP}, /* CHANNELUP */
3139 { 0x60, KEY_CHANNELDOWN}, /* CHANNELDOWN */
3140 { 0x61, KEY_LAST}, /* LAST CHANNEL (RECALL) */
3142 { 0x72, KEY_VIDEO}, /* INPUT MODES (TV/FM) */
3144 { 0x70, KEY_POWER2}, /* TV ON/OFF */
3146 { 0x39, KEY_CYCLEWINDOWS}, /* MINIMIZE (BOSS) */
3147 { 0x3a, KEY_NEW}, /* PIP */
3148 { 0x73, KEY_ZOOM}, /* FULLSECREEN */
3150 { 0x66, KEY_INFO}, /* OSD (DISPLAY) */
3152 { 0x31, KEY_DOT}, /* '.' */
3153 { 0x63, KEY_ENTER}, /* ENTER */
3156 IR_TABLE(winfast_usbii_deluxe, IR_TYPE_UNKNOWN, ir_codes_winfast_usbii_deluxe);
3160 static struct ir_scancode ir_codes_kworld_315u[] = {
3161 { 0x6143, KEY_POWER },
3162 { 0x6101, KEY_TUNER }, /* source */
3163 { 0x610b, KEY_ZOOM },
3164 { 0x6103, KEY_POWER2 }, /* shutdown */
3169 { 0x6109, KEY_CHANNELUP },
3174 { 0x6107, KEY_CHANNELDOWN },
3179 { 0x610e, KEY_VOLUMEUP },
3181 { 0x6110, KEY_LAST },
3183 { 0x6112, KEY_ENTER },
3184 { 0x6113, KEY_VOLUMEDOWN },
3186 { 0x6114, KEY_RECORD },
3187 { 0x6115, KEY_STOP },
3188 { 0x6116, KEY_PLAY },
3189 { 0x6117, KEY_MUTE },
3192 { 0x6119, KEY_DOWN },
3193 { 0x611a, KEY_LEFT },
3194 { 0x611b, KEY_RIGHT },
3196 { 0x611c, KEY_RED },
3197 { 0x611d, KEY_GREEN },
3198 { 0x611e, KEY_YELLOW },
3199 { 0x611f, KEY_BLUE },
3201 IR_TABLE(kworld_315u, IR_TYPE_NEC, ir_codes_kworld_315u);