blob: f6790172736a07482eb8ccc4a08a9e32032ae2d3 [file] [log] [blame]
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001/*
Mauro Carvalho Chehab7f9d6912009-08-29 08:43:20 -03002 Keytables for supported remote controls, used on drivers/media
3 devices.
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02004
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.
Mauro Carvalho Chehab7f9d6912009-08-29 08:43:20 -030018*/
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -020019
Mauro Carvalho Chehab7f9d6912009-08-29 08:43:20 -030020/*
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
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -020025 */
26#include <linux/module.h>
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -020027
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 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -030032static struct ir_scancode ir_codes_empty[] = {
33 { 0x2a, KEY_COFFEE },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -020034};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -030035
36struct ir_scancode_table ir_codes_empty_table = {
37 .scan = ir_codes_empty,
38 .size = ARRAY_SIZE(ir_codes_empty),
39};
40EXPORT_SYMBOL_GPL(ir_codes_empty_table);
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -020041
Michal Majchrowiczb04c1ba2006-09-13 16:42:42 -030042/* Michal Majchrowicz <mmajchrowicz@gmail.com> */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -030043static struct ir_scancode ir_codes_proteus_2309[] = {
Michal Majchrowiczb04c1ba2006-09-13 16:42:42 -030044 /* numeric */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -030045 { 0x00, KEY_0 },
46 { 0x01, KEY_1 },
47 { 0x02, KEY_2 },
48 { 0x03, KEY_3 },
49 { 0x04, KEY_4 },
50 { 0x05, KEY_5 },
51 { 0x06, KEY_6 },
52 { 0x07, KEY_7 },
53 { 0x08, KEY_8 },
54 { 0x09, KEY_9 },
Michal Majchrowiczb04c1ba2006-09-13 16:42:42 -030055
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -030056 { 0x5c, KEY_POWER }, /* power */
57 { 0x20, KEY_ZOOM }, /* full screen */
58 { 0x0f, KEY_BACKSPACE }, /* recall */
59 { 0x1b, KEY_ENTER }, /* mute */
60 { 0x41, KEY_RECORD }, /* record */
61 { 0x43, KEY_STOP }, /* stop */
62 { 0x16, KEY_S },
63 { 0x1a, KEY_POWER2 }, /* off */
64 { 0x2e, KEY_RED },
65 { 0x1f, KEY_CHANNELDOWN }, /* channel - */
66 { 0x1c, KEY_CHANNELUP }, /* channel + */
67 { 0x10, KEY_VOLUMEDOWN }, /* volume - */
68 { 0x1e, KEY_VOLUMEUP }, /* volume + */
69 { 0x14, KEY_F1 },
Michal Majchrowiczb04c1ba2006-09-13 16:42:42 -030070};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -030071
72struct ir_scancode_table ir_codes_proteus_2309_table = {
73 .scan = ir_codes_proteus_2309,
74 .size = ARRAY_SIZE(ir_codes_proteus_2309),
75};
76EXPORT_SYMBOL_GPL(ir_codes_proteus_2309_table);
Mauro Carvalho Chehaba83520f2009-08-27 09:54:44 -030077
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -020078/* Matt Jesson <dvb@jesson.eclipse.co.uk */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -030079static struct ir_scancode ir_codes_avermedia_dvbt[] = {
80 { 0x28, KEY_0 }, /* '0' / 'enter' */
81 { 0x22, KEY_1 }, /* '1' */
82 { 0x12, KEY_2 }, /* '2' / 'up arrow' */
83 { 0x32, KEY_3 }, /* '3' */
84 { 0x24, KEY_4 }, /* '4' / 'left arrow' */
85 { 0x14, KEY_5 }, /* '5' */
86 { 0x34, KEY_6 }, /* '6' / 'right arrow' */
87 { 0x26, KEY_7 }, /* '7' */
88 { 0x16, KEY_8 }, /* '8' / 'down arrow' */
89 { 0x36, KEY_9 }, /* '9' */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -020090
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -030091 { 0x20, KEY_LIST }, /* 'source' */
92 { 0x10, KEY_TEXT }, /* 'teletext' */
93 { 0x00, KEY_POWER }, /* 'power' */
94 { 0x04, KEY_AUDIO }, /* 'audio' */
95 { 0x06, KEY_ZOOM }, /* 'full screen' */
96 { 0x18, KEY_VIDEO }, /* 'display' */
97 { 0x38, KEY_SEARCH }, /* 'loop' */
98 { 0x08, KEY_INFO }, /* 'preview' */
99 { 0x2a, KEY_REWIND }, /* 'backward <<' */
100 { 0x1a, KEY_FASTFORWARD }, /* 'forward >>' */
101 { 0x3a, KEY_RECORD }, /* 'capture' */
102 { 0x0a, KEY_MUTE }, /* 'mute' */
103 { 0x2c, KEY_RECORD }, /* 'record' */
104 { 0x1c, KEY_PAUSE }, /* 'pause' */
105 { 0x3c, KEY_STOP }, /* 'stop' */
106 { 0x0c, KEY_PLAY }, /* 'play' */
107 { 0x2e, KEY_RED }, /* 'red' */
108 { 0x01, KEY_BLUE }, /* 'blue' / 'cancel' */
109 { 0x0e, KEY_YELLOW }, /* 'yellow' / 'ok' */
110 { 0x21, KEY_GREEN }, /* 'green' */
111 { 0x11, KEY_CHANNELDOWN }, /* 'channel -' */
112 { 0x31, KEY_CHANNELUP }, /* 'channel +' */
113 { 0x1e, KEY_VOLUMEDOWN }, /* 'volume -' */
114 { 0x3e, KEY_VOLUMEUP }, /* 'volume +' */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200115};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300116
117struct ir_scancode_table ir_codes_avermedia_dvbt_table = {
118 .scan = ir_codes_avermedia_dvbt,
119 .size = ARRAY_SIZE(ir_codes_avermedia_dvbt),
120};
121EXPORT_SYMBOL_GPL(ir_codes_avermedia_dvbt_table);
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200122
Mauro Carvalho Chehab36f6bb92008-06-26 17:03:00 -0300123/* Mauro Carvalho Chehab <mchehab@infradead.org> */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300124static struct ir_scancode ir_codes_avermedia_m135a[] = {
125 { 0x00, KEY_POWER2 },
126 { 0x2e, KEY_DOT }, /* '.' */
127 { 0x01, KEY_MODE }, /* TV/FM */
Mauro Carvalho Chehab36f6bb92008-06-26 17:03:00 -0300128
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300129 { 0x05, KEY_1 },
130 { 0x06, KEY_2 },
131 { 0x07, KEY_3 },
132 { 0x09, KEY_4 },
133 { 0x0a, KEY_5 },
134 { 0x0b, KEY_6 },
135 { 0x0d, KEY_7 },
136 { 0x0e, KEY_8 },
137 { 0x0f, KEY_9 },
138 { 0x11, KEY_0 },
Mauro Carvalho Chehab36f6bb92008-06-26 17:03:00 -0300139
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300140 { 0x13, KEY_RIGHT }, /* -> */
141 { 0x12, KEY_LEFT }, /* <- */
Mauro Carvalho Chehab36f6bb92008-06-26 17:03:00 -0300142
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300143 { 0x17, KEY_SLEEP }, /* Capturar Imagem */
144 { 0x10, KEY_SHUFFLE }, /* Amostra */
Mauro Carvalho Chehab36f6bb92008-06-26 17:03:00 -0300145
146 /* FIXME: The keys bellow aren't ok */
147
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300148 { 0x43, KEY_CHANNELUP },
149 { 0x42, KEY_CHANNELDOWN },
150 { 0x1f, KEY_VOLUMEUP },
151 { 0x1e, KEY_VOLUMEDOWN },
152 { 0x0c, KEY_ENTER },
Mauro Carvalho Chehab36f6bb92008-06-26 17:03:00 -0300153
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300154 { 0x14, KEY_MUTE },
155 { 0x08, KEY_AUDIO },
Mauro Carvalho Chehab36f6bb92008-06-26 17:03:00 -0300156
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300157 { 0x03, KEY_TEXT },
158 { 0x04, KEY_EPG },
159 { 0x2b, KEY_TV2 }, /* TV2 */
Mauro Carvalho Chehab36f6bb92008-06-26 17:03:00 -0300160
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300161 { 0x1d, KEY_RED },
162 { 0x1c, KEY_YELLOW },
163 { 0x41, KEY_GREEN },
164 { 0x40, KEY_BLUE },
Mauro Carvalho Chehab36f6bb92008-06-26 17:03:00 -0300165
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300166 { 0x1a, KEY_PLAYPAUSE },
167 { 0x19, KEY_RECORD },
168 { 0x18, KEY_PLAY },
169 { 0x1b, KEY_STOP },
Mauro Carvalho Chehab36f6bb92008-06-26 17:03:00 -0300170};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300171
172struct ir_scancode_table ir_codes_avermedia_m135a_table = {
173 .scan = ir_codes_avermedia_m135a,
174 .size = ARRAY_SIZE(ir_codes_avermedia_m135a),
175};
176EXPORT_SYMBOL_GPL(ir_codes_avermedia_m135a_table);
Mauro Carvalho Chehab36f6bb92008-06-26 17:03:00 -0300177
Oldřich Jedličkacb3bf502009-02-12 03:43:11 -0300178/* Oldrich Jedlicka <oldium.pro@seznam.cz> */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300179static struct ir_scancode ir_codes_avermedia_cardbus[] = {
180 { 0x00, KEY_POWER },
181 { 0x01, KEY_TUNER }, /* TV/FM */
182 { 0x03, KEY_TEXT }, /* Teletext */
183 { 0x04, KEY_EPG },
184 { 0x05, KEY_1 },
185 { 0x06, KEY_2 },
186 { 0x07, KEY_3 },
187 { 0x08, KEY_AUDIO },
188 { 0x09, KEY_4 },
189 { 0x0a, KEY_5 },
190 { 0x0b, KEY_6 },
191 { 0x0c, KEY_ZOOM }, /* Full screen */
192 { 0x0d, KEY_7 },
193 { 0x0e, KEY_8 },
194 { 0x0f, KEY_9 },
195 { 0x10, KEY_PAGEUP }, /* 16-CH PREV */
196 { 0x11, KEY_0 },
197 { 0x12, KEY_INFO },
198 { 0x13, KEY_AGAIN }, /* CH RTN - channel return */
199 { 0x14, KEY_MUTE },
200 { 0x15, KEY_EDIT }, /* Autoscan */
201 { 0x17, KEY_SAVE }, /* Screenshot */
202 { 0x18, KEY_PLAYPAUSE },
203 { 0x19, KEY_RECORD },
204 { 0x1a, KEY_PLAY },
205 { 0x1b, KEY_STOP },
206 { 0x1c, KEY_FASTFORWARD },
207 { 0x1d, KEY_REWIND },
208 { 0x1e, KEY_VOLUMEDOWN },
209 { 0x1f, KEY_VOLUMEUP },
210 { 0x22, KEY_SLEEP }, /* Sleep */
211 { 0x23, KEY_ZOOM }, /* Aspect */
212 { 0x26, KEY_SCREEN }, /* Pos */
213 { 0x27, KEY_ANGLE }, /* Size */
214 { 0x28, KEY_SELECT }, /* Select */
215 { 0x29, KEY_BLUE }, /* Blue/Picture */
216 { 0x2a, KEY_BACKSPACE }, /* Back */
217 { 0x2b, KEY_MEDIA }, /* PIP (Picture-in-picture) */
218 { 0x2c, KEY_DOWN },
219 { 0x2e, KEY_DOT },
220 { 0x2f, KEY_TV }, /* Live TV */
221 { 0x32, KEY_LEFT },
222 { 0x33, KEY_CLEAR }, /* Clear */
223 { 0x35, KEY_RED }, /* Red/TV */
224 { 0x36, KEY_UP },
225 { 0x37, KEY_HOME }, /* Home */
226 { 0x39, KEY_GREEN }, /* Green/Video */
227 { 0x3d, KEY_YELLOW }, /* Yellow/Music */
228 { 0x3e, KEY_OK }, /* Ok */
229 { 0x3f, KEY_RIGHT },
230 { 0x40, KEY_NEXT }, /* Next */
231 { 0x41, KEY_PREVIOUS }, /* Previous */
232 { 0x42, KEY_CHANNELDOWN }, /* Channel down */
233 { 0x43, KEY_CHANNELUP }, /* Channel up */
Oldřich Jedličkacb3bf502009-02-12 03:43:11 -0300234};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300235
236struct ir_scancode_table ir_codes_avermedia_cardbus_table = {
237 .scan = ir_codes_avermedia_cardbus,
238 .size = ARRAY_SIZE(ir_codes_avermedia_cardbus),
239};
240EXPORT_SYMBOL_GPL(ir_codes_avermedia_cardbus_table);
Oldřich Jedličkacb3bf502009-02-12 03:43:11 -0300241
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200242/* Attila Kondoros <attila.kondoros@chello.hu> */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300243static struct ir_scancode ir_codes_apac_viewcomp[] = {
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200244
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300245 { 0x01, KEY_1 },
246 { 0x02, KEY_2 },
247 { 0x03, KEY_3 },
248 { 0x04, KEY_4 },
249 { 0x05, KEY_5 },
250 { 0x06, KEY_6 },
251 { 0x07, KEY_7 },
252 { 0x08, KEY_8 },
253 { 0x09, KEY_9 },
254 { 0x00, KEY_0 },
255 { 0x17, KEY_LAST }, /* +100 */
256 { 0x0a, KEY_LIST }, /* recall */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200257
258
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300259 { 0x1c, KEY_TUNER }, /* TV/FM */
260 { 0x15, KEY_SEARCH }, /* scan */
261 { 0x12, KEY_POWER }, /* power */
262 { 0x1f, KEY_VOLUMEDOWN }, /* vol up */
263 { 0x1b, KEY_VOLUMEUP }, /* vol down */
264 { 0x1e, KEY_CHANNELDOWN }, /* chn up */
265 { 0x1a, KEY_CHANNELUP }, /* chn down */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200266
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300267 { 0x11, KEY_VIDEO }, /* video */
268 { 0x0f, KEY_ZOOM }, /* full screen */
269 { 0x13, KEY_MUTE }, /* mute/unmute */
270 { 0x10, KEY_TEXT }, /* min */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200271
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300272 { 0x0d, KEY_STOP }, /* freeze */
273 { 0x0e, KEY_RECORD }, /* record */
274 { 0x1d, KEY_PLAYPAUSE }, /* stop */
275 { 0x19, KEY_PLAY }, /* play */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200276
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300277 { 0x16, KEY_GOTO }, /* osd */
278 { 0x14, KEY_REFRESH }, /* default */
279 { 0x0c, KEY_KPPLUS }, /* fine tune >>>> */
280 { 0x18, KEY_KPMINUS }, /* fine tune <<<< */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200281};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300282
283struct ir_scancode_table ir_codes_apac_viewcomp_table = {
284 .scan = ir_codes_apac_viewcomp,
285 .size = ARRAY_SIZE(ir_codes_apac_viewcomp),
286};
287EXPORT_SYMBOL_GPL(ir_codes_apac_viewcomp_table);
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200288
289/* ---------------------------------------------------------------------- */
290
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300291static struct ir_scancode ir_codes_pixelview[] = {
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200292
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300293 { 0x1e, KEY_POWER }, /* power */
294 { 0x07, KEY_MEDIA }, /* source */
295 { 0x1c, KEY_SEARCH }, /* scan */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200296
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200297
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300298 { 0x03, KEY_TUNER }, /* TV/FM */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200299
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300300 { 0x00, KEY_RECORD },
301 { 0x08, KEY_STOP },
302 { 0x11, KEY_PLAY },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200303
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300304 { 0x1a, KEY_PLAYPAUSE }, /* freeze */
305 { 0x19, KEY_ZOOM }, /* zoom */
306 { 0x0f, KEY_TEXT }, /* min */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200307
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300308 { 0x01, KEY_1 },
309 { 0x0b, KEY_2 },
310 { 0x1b, KEY_3 },
311 { 0x05, KEY_4 },
312 { 0x09, KEY_5 },
313 { 0x15, KEY_6 },
314 { 0x06, KEY_7 },
315 { 0x0a, KEY_8 },
316 { 0x12, KEY_9 },
317 { 0x02, KEY_0 },
318 { 0x10, KEY_LAST }, /* +100 */
319 { 0x13, KEY_LIST }, /* recall */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200320
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300321 { 0x1f, KEY_CHANNELUP }, /* chn down */
322 { 0x17, KEY_CHANNELDOWN }, /* chn up */
323 { 0x16, KEY_VOLUMEUP }, /* vol down */
324 { 0x14, KEY_VOLUMEDOWN }, /* vol up */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200325
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300326 { 0x04, KEY_KPMINUS }, /* <<< */
327 { 0x0e, KEY_SETUP }, /* function */
328 { 0x0c, KEY_KPPLUS }, /* >>> */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200329
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300330 { 0x0d, KEY_GOTO }, /* mts */
331 { 0x1d, KEY_REFRESH }, /* reset */
332 { 0x18, KEY_MUTE }, /* mute/unmute */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200333};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300334
335struct ir_scancode_table ir_codes_pixelview_table = {
336 .scan = ir_codes_pixelview,
337 .size = ARRAY_SIZE(ir_codes_pixelview),
338};
339EXPORT_SYMBOL_GPL(ir_codes_pixelview_table);
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200340
Mauro Carvalho Chehab7f0dd172008-04-22 14:46:01 -0300341/*
342 Mauro Carvalho Chehab <mchehab@infradead.org>
343 present on PV MPEG 8000GT
344 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300345static struct ir_scancode ir_codes_pixelview_new[] = {
346 { 0x3c, KEY_TIME }, /* Timeshift */
347 { 0x12, KEY_POWER },
Mauro Carvalho Chehab7f0dd172008-04-22 14:46:01 -0300348
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300349 { 0x3d, KEY_1 },
350 { 0x38, KEY_2 },
351 { 0x18, KEY_3 },
352 { 0x35, KEY_4 },
353 { 0x39, KEY_5 },
354 { 0x15, KEY_6 },
355 { 0x36, KEY_7 },
356 { 0x3a, KEY_8 },
357 { 0x1e, KEY_9 },
358 { 0x3e, KEY_0 },
Mauro Carvalho Chehab7f0dd172008-04-22 14:46:01 -0300359
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300360 { 0x1c, KEY_AGAIN }, /* LOOP */
361 { 0x3f, KEY_MEDIA }, /* Source */
362 { 0x1f, KEY_LAST }, /* +100 */
363 { 0x1b, KEY_MUTE },
Mauro Carvalho Chehab7f0dd172008-04-22 14:46:01 -0300364
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300365 { 0x17, KEY_CHANNELDOWN },
366 { 0x16, KEY_CHANNELUP },
367 { 0x10, KEY_VOLUMEUP },
368 { 0x14, KEY_VOLUMEDOWN },
369 { 0x13, KEY_ZOOM },
Mauro Carvalho Chehab7f0dd172008-04-22 14:46:01 -0300370
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300371 { 0x19, KEY_CAMERA }, /* SNAPSHOT */
372 { 0x1a, KEY_SEARCH }, /* scan */
Mauro Carvalho Chehab7f0dd172008-04-22 14:46:01 -0300373
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300374 { 0x37, KEY_REWIND }, /* << */
375 { 0x32, KEY_RECORD }, /* o (red) */
376 { 0x33, KEY_FORWARD }, /* >> */
377 { 0x11, KEY_STOP }, /* square */
378 { 0x3b, KEY_PLAY }, /* > */
379 { 0x30, KEY_PLAYPAUSE }, /* || */
Mauro Carvalho Chehab7f0dd172008-04-22 14:46:01 -0300380
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300381 { 0x31, KEY_TV },
382 { 0x34, KEY_RADIO },
Mauro Carvalho Chehab7f0dd172008-04-22 14:46:01 -0300383};
Mauro Carvalho Chehab7f0dd172008-04-22 14:46:01 -0300384
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300385struct ir_scancode_table ir_codes_pixelview_new_table = {
386 .scan = ir_codes_pixelview_new,
387 .size = ARRAY_SIZE(ir_codes_pixelview_new),
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200388};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300389EXPORT_SYMBOL_GPL(ir_codes_pixelview_new_table);
390
391static struct ir_scancode ir_codes_nebula[] = {
392 { 0x00, KEY_0 },
393 { 0x01, KEY_1 },
394 { 0x02, KEY_2 },
395 { 0x03, KEY_3 },
396 { 0x04, KEY_4 },
397 { 0x05, KEY_5 },
398 { 0x06, KEY_6 },
399 { 0x07, KEY_7 },
400 { 0x08, KEY_8 },
401 { 0x09, KEY_9 },
402 { 0x0a, KEY_TV },
403 { 0x0b, KEY_AUX },
404 { 0x0c, KEY_DVD },
405 { 0x0d, KEY_POWER },
406 { 0x0e, KEY_MHP }, /* labelled 'Picture' */
407 { 0x0f, KEY_AUDIO },
408 { 0x10, KEY_INFO },
409 { 0x11, KEY_F13 }, /* 16:9 */
410 { 0x12, KEY_F14 }, /* 14:9 */
411 { 0x13, KEY_EPG },
412 { 0x14, KEY_EXIT },
413 { 0x15, KEY_MENU },
414 { 0x16, KEY_UP },
415 { 0x17, KEY_DOWN },
416 { 0x18, KEY_LEFT },
417 { 0x19, KEY_RIGHT },
418 { 0x1a, KEY_ENTER },
419 { 0x1b, KEY_CHANNELUP },
420 { 0x1c, KEY_CHANNELDOWN },
421 { 0x1d, KEY_VOLUMEUP },
422 { 0x1e, KEY_VOLUMEDOWN },
423 { 0x1f, KEY_RED },
424 { 0x20, KEY_GREEN },
425 { 0x21, KEY_YELLOW },
426 { 0x22, KEY_BLUE },
427 { 0x23, KEY_SUBTITLE },
428 { 0x24, KEY_F15 }, /* AD */
429 { 0x25, KEY_TEXT },
430 { 0x26, KEY_MUTE },
431 { 0x27, KEY_REWIND },
432 { 0x28, KEY_STOP },
433 { 0x29, KEY_PLAY },
434 { 0x2a, KEY_FASTFORWARD },
435 { 0x2b, KEY_F16 }, /* chapter */
436 { 0x2c, KEY_PAUSE },
437 { 0x2d, KEY_PLAY },
438 { 0x2e, KEY_RECORD },
439 { 0x2f, KEY_F17 }, /* picture in picture */
440 { 0x30, KEY_KPPLUS }, /* zoom in */
441 { 0x31, KEY_KPMINUS }, /* zoom out */
442 { 0x32, KEY_F18 }, /* capture */
443 { 0x33, KEY_F19 }, /* web */
444 { 0x34, KEY_EMAIL },
445 { 0x35, KEY_PHONE },
446 { 0x36, KEY_PC },
447};
448
449struct ir_scancode_table ir_codes_nebula_table = {
450 .scan = ir_codes_nebula,
451 .size = ARRAY_SIZE(ir_codes_nebula),
452};
453EXPORT_SYMBOL_GPL(ir_codes_nebula_table);
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200454
455/* DigitalNow DNTV Live DVB-T Remote */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300456static struct ir_scancode ir_codes_dntv_live_dvb_t[] = {
457 { 0x00, KEY_ESC }, /* 'go up a level?' */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200458 /* Keys 0 to 9 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300459 { 0x0a, KEY_0 },
460 { 0x01, KEY_1 },
461 { 0x02, KEY_2 },
462 { 0x03, KEY_3 },
463 { 0x04, KEY_4 },
464 { 0x05, KEY_5 },
465 { 0x06, KEY_6 },
466 { 0x07, KEY_7 },
467 { 0x08, KEY_8 },
468 { 0x09, KEY_9 },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200469
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300470 { 0x0b, KEY_TUNER }, /* tv/fm */
471 { 0x0c, KEY_SEARCH }, /* scan */
472 { 0x0d, KEY_STOP },
473 { 0x0e, KEY_PAUSE },
474 { 0x0f, KEY_LIST }, /* source */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200475
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300476 { 0x10, KEY_MUTE },
477 { 0x11, KEY_REWIND }, /* backward << */
478 { 0x12, KEY_POWER },
479 { 0x13, KEY_CAMERA }, /* snap */
480 { 0x14, KEY_AUDIO }, /* stereo */
481 { 0x15, KEY_CLEAR }, /* reset */
482 { 0x16, KEY_PLAY },
483 { 0x17, KEY_ENTER },
484 { 0x18, KEY_ZOOM }, /* full screen */
485 { 0x19, KEY_FASTFORWARD }, /* forward >> */
486 { 0x1a, KEY_CHANNELUP },
487 { 0x1b, KEY_VOLUMEUP },
488 { 0x1c, KEY_INFO }, /* preview */
489 { 0x1d, KEY_RECORD }, /* record */
490 { 0x1e, KEY_CHANNELDOWN },
491 { 0x1f, KEY_VOLUMEDOWN },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200492};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300493
494struct ir_scancode_table ir_codes_dntv_live_dvb_t_table = {
495 .scan = ir_codes_dntv_live_dvb_t,
496 .size = ARRAY_SIZE(ir_codes_dntv_live_dvb_t),
497};
498EXPORT_SYMBOL_GPL(ir_codes_dntv_live_dvb_t_table);
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200499
500/* ---------------------------------------------------------------------- */
501
502/* IO-DATA BCTV7E Remote */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300503static struct ir_scancode ir_codes_iodata_bctv7e[] = {
504 { 0x40, KEY_TV },
505 { 0x20, KEY_RADIO }, /* FM */
506 { 0x60, KEY_EPG },
507 { 0x00, KEY_POWER },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200508
509 /* Keys 0 to 9 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300510 { 0x44, KEY_0 }, /* 10 */
511 { 0x50, KEY_1 },
512 { 0x30, KEY_2 },
513 { 0x70, KEY_3 },
514 { 0x48, KEY_4 },
515 { 0x28, KEY_5 },
516 { 0x68, KEY_6 },
517 { 0x58, KEY_7 },
518 { 0x38, KEY_8 },
519 { 0x78, KEY_9 },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200520
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300521 { 0x10, KEY_L }, /* Live */
522 { 0x08, KEY_TIME }, /* Time Shift */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200523
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300524 { 0x18, KEY_PLAYPAUSE }, /* Play */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200525
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300526 { 0x24, KEY_ENTER }, /* 11 */
527 { 0x64, KEY_ESC }, /* 12 */
528 { 0x04, KEY_M }, /* Multi */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200529
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300530 { 0x54, KEY_VIDEO },
531 { 0x34, KEY_CHANNELUP },
532 { 0x74, KEY_VOLUMEUP },
533 { 0x14, KEY_MUTE },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200534
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300535 { 0x4c, KEY_VCR }, /* SVIDEO */
536 { 0x2c, KEY_CHANNELDOWN },
537 { 0x6c, KEY_VOLUMEDOWN },
538 { 0x0c, KEY_ZOOM },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200539
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300540 { 0x5c, KEY_PAUSE },
541 { 0x3c, KEY_RED }, /* || (red) */
542 { 0x7c, KEY_RECORD }, /* recording */
543 { 0x1c, KEY_STOP },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200544
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300545 { 0x41, KEY_REWIND }, /* backward << */
546 { 0x21, KEY_PLAY },
547 { 0x61, KEY_FASTFORWARD }, /* forward >> */
548 { 0x01, KEY_NEXT }, /* skip >| */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200549};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300550
551struct ir_scancode_table ir_codes_iodata_bctv7e_table = {
552 .scan = ir_codes_iodata_bctv7e,
553 .size = ARRAY_SIZE(ir_codes_iodata_bctv7e),
554};
555EXPORT_SYMBOL_GPL(ir_codes_iodata_bctv7e_table);
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200556
557/* ---------------------------------------------------------------------- */
558
559/* ADS Tech Instant TV DVB-T PCI Remote */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300560static struct ir_scancode ir_codes_adstech_dvb_t_pci[] = {
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200561 /* Keys 0 to 9 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300562 { 0x4d, KEY_0 },
563 { 0x57, KEY_1 },
564 { 0x4f, KEY_2 },
565 { 0x53, KEY_3 },
566 { 0x56, KEY_4 },
567 { 0x4e, KEY_5 },
568 { 0x5e, KEY_6 },
569 { 0x54, KEY_7 },
570 { 0x4c, KEY_8 },
571 { 0x5c, KEY_9 },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200572
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300573 { 0x5b, KEY_POWER },
574 { 0x5f, KEY_MUTE },
575 { 0x55, KEY_GOTO },
576 { 0x5d, KEY_SEARCH },
577 { 0x17, KEY_EPG }, /* Guide */
578 { 0x1f, KEY_MENU },
579 { 0x0f, KEY_UP },
580 { 0x46, KEY_DOWN },
581 { 0x16, KEY_LEFT },
582 { 0x1e, KEY_RIGHT },
583 { 0x0e, KEY_SELECT }, /* Enter */
584 { 0x5a, KEY_INFO },
585 { 0x52, KEY_EXIT },
586 { 0x59, KEY_PREVIOUS },
587 { 0x51, KEY_NEXT },
588 { 0x58, KEY_REWIND },
589 { 0x50, KEY_FORWARD },
590 { 0x44, KEY_PLAYPAUSE },
591 { 0x07, KEY_STOP },
592 { 0x1b, KEY_RECORD },
593 { 0x13, KEY_TUNER }, /* Live */
594 { 0x0a, KEY_A },
595 { 0x12, KEY_B },
596 { 0x03, KEY_PROG1 }, /* 1 */
597 { 0x01, KEY_PROG2 }, /* 2 */
598 { 0x00, KEY_PROG3 }, /* 3 */
599 { 0x06, KEY_DVD },
600 { 0x48, KEY_AUX }, /* Photo */
601 { 0x40, KEY_VIDEO },
602 { 0x19, KEY_AUDIO }, /* Music */
603 { 0x0b, KEY_CHANNELUP },
604 { 0x08, KEY_CHANNELDOWN },
605 { 0x15, KEY_VOLUMEUP },
606 { 0x1c, KEY_VOLUMEDOWN },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200607};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300608
609struct ir_scancode_table ir_codes_adstech_dvb_t_pci_table = {
610 .scan = ir_codes_adstech_dvb_t_pci,
611 .size = ARRAY_SIZE(ir_codes_adstech_dvb_t_pci),
612};
613EXPORT_SYMBOL_GPL(ir_codes_adstech_dvb_t_pci_table);
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200614
615/* ---------------------------------------------------------------------- */
616
Brian Rogersba340b42008-10-13 08:37:06 -0300617/* MSI TV@nywhere MASTER remote */
618
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300619static struct ir_scancode ir_codes_msi_tvanywhere[] = {
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200620 /* Keys 0 to 9 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300621 { 0x00, KEY_0 },
622 { 0x01, KEY_1 },
623 { 0x02, KEY_2 },
624 { 0x03, KEY_3 },
625 { 0x04, KEY_4 },
626 { 0x05, KEY_5 },
627 { 0x06, KEY_6 },
628 { 0x07, KEY_7 },
629 { 0x08, KEY_8 },
630 { 0x09, KEY_9 },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200631
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300632 { 0x0c, KEY_MUTE },
633 { 0x0f, KEY_SCREEN }, /* Full Screen */
634 { 0x10, KEY_FN }, /* Funtion */
635 { 0x11, KEY_TIME }, /* Time shift */
636 { 0x12, KEY_POWER },
637 { 0x13, KEY_MEDIA }, /* MTS */
638 { 0x14, KEY_SLOW },
639 { 0x16, KEY_REWIND }, /* backward << */
640 { 0x17, KEY_ENTER }, /* Return */
641 { 0x18, KEY_FASTFORWARD }, /* forward >> */
642 { 0x1a, KEY_CHANNELUP },
643 { 0x1b, KEY_VOLUMEUP },
644 { 0x1e, KEY_CHANNELDOWN },
645 { 0x1f, KEY_VOLUMEDOWN },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200646};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300647
648struct ir_scancode_table ir_codes_msi_tvanywhere_table = {
649 .scan = ir_codes_msi_tvanywhere,
650 .size = ARRAY_SIZE(ir_codes_msi_tvanywhere),
651};
652EXPORT_SYMBOL_GPL(ir_codes_msi_tvanywhere_table);
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200653
654/* ---------------------------------------------------------------------- */
655
Brian Rogersba340b42008-10-13 08:37:06 -0300656/*
657 Keycodes for remote on the MSI TV@nywhere Plus. The controller IC on the card
658 is marked "KS003". The controller is I2C at address 0x30, but does not seem
659 to respond to probes until a read is performed from a valid device.
660 I don't know why...
661
662 Note: This remote may be of similar or identical design to the
663 Pixelview remote (?). The raw codes and duplicate button codes
664 appear to be the same.
665
666 Henry Wong <henry@stuffedcow.net>
667 Some changes to formatting and keycodes by Mark Schultz <n9xmj@yahoo.com>
668
669*/
670
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300671static struct ir_scancode ir_codes_msi_tvanywhere_plus[] = {
Brian Rogersba340b42008-10-13 08:37:06 -0300672
673/* ---- Remote Button Layout ----
674
675 POWER SOURCE SCAN MUTE
676 TV/FM 1 2 3
677 |> 4 5 6
678 <| 7 8 9
679 ^^UP 0 + RECALL
680 vvDN RECORD STOP PLAY
681
682 MINIMIZE ZOOM
683
684 CH+
685 VOL- VOL+
686 CH-
687
688 SNAPSHOT MTS
689
690 << FUNC >> RESET
691*/
692
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300693 { 0x01, KEY_1 }, /* 1 */
694 { 0x0b, KEY_2 }, /* 2 */
695 { 0x1b, KEY_3 }, /* 3 */
696 { 0x05, KEY_4 }, /* 4 */
697 { 0x09, KEY_5 }, /* 5 */
698 { 0x15, KEY_6 }, /* 6 */
699 { 0x06, KEY_7 }, /* 7 */
700 { 0x0a, KEY_8 }, /* 8 */
701 { 0x12, KEY_9 }, /* 9 */
702 { 0x02, KEY_0 }, /* 0 */
703 { 0x10, KEY_KPPLUS }, /* + */
704 { 0x13, KEY_AGAIN }, /* Recall */
Brian Rogersba340b42008-10-13 08:37:06 -0300705
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300706 { 0x1e, KEY_POWER }, /* Power */
707 { 0x07, KEY_TUNER }, /* Source */
708 { 0x1c, KEY_SEARCH }, /* Scan */
709 { 0x18, KEY_MUTE }, /* Mute */
Brian Rogersba340b42008-10-13 08:37:06 -0300710
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300711 { 0x03, KEY_RADIO }, /* TV/FM */
Brian Rogersba340b42008-10-13 08:37:06 -0300712 /* The next four keys are duplicates that appear to send the
713 same IR code as Ch+, Ch-, >>, and << . The raw code assigned
714 to them is the actual code + 0x20 - they will never be
715 detected as such unless some way is discovered to distinguish
716 these buttons from those that have the same code. */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300717 { 0x3f, KEY_RIGHT }, /* |> and Ch+ */
718 { 0x37, KEY_LEFT }, /* <| and Ch- */
719 { 0x2c, KEY_UP }, /* ^^Up and >> */
720 { 0x24, KEY_DOWN }, /* vvDn and << */
Brian Rogersba340b42008-10-13 08:37:06 -0300721
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300722 { 0x00, KEY_RECORD }, /* Record */
723 { 0x08, KEY_STOP }, /* Stop */
724 { 0x11, KEY_PLAY }, /* Play */
Brian Rogersba340b42008-10-13 08:37:06 -0300725
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300726 { 0x0f, KEY_CLOSE }, /* Minimize */
727 { 0x19, KEY_ZOOM }, /* Zoom */
728 { 0x1a, KEY_CAMERA }, /* Snapshot */
729 { 0x0d, KEY_LANGUAGE }, /* MTS */
Brian Rogersba340b42008-10-13 08:37:06 -0300730
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300731 { 0x14, KEY_VOLUMEDOWN }, /* Vol- */
732 { 0x16, KEY_VOLUMEUP }, /* Vol+ */
733 { 0x17, KEY_CHANNELDOWN }, /* Ch- */
734 { 0x1f, KEY_CHANNELUP }, /* Ch+ */
Brian Rogersba340b42008-10-13 08:37:06 -0300735
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300736 { 0x04, KEY_REWIND }, /* << */
737 { 0x0e, KEY_MENU }, /* Function */
738 { 0x0c, KEY_FASTFORWARD }, /* >> */
739 { 0x1d, KEY_RESTART }, /* Reset */
Brian Rogersba340b42008-10-13 08:37:06 -0300740};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300741
742struct ir_scancode_table ir_codes_msi_tvanywhere_plus_table = {
743 .scan = ir_codes_msi_tvanywhere_plus,
744 .size = ARRAY_SIZE(ir_codes_msi_tvanywhere_plus),
745};
746EXPORT_SYMBOL_GPL(ir_codes_msi_tvanywhere_plus_table);
Brian Rogersba340b42008-10-13 08:37:06 -0300747
748/* ---------------------------------------------------------------------- */
749
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200750/* Cinergy 1400 DVB-T */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300751static struct ir_scancode ir_codes_cinergy_1400[] = {
752 { 0x01, KEY_POWER },
753 { 0x02, KEY_1 },
754 { 0x03, KEY_2 },
755 { 0x04, KEY_3 },
756 { 0x05, KEY_4 },
757 { 0x06, KEY_5 },
758 { 0x07, KEY_6 },
759 { 0x08, KEY_7 },
760 { 0x09, KEY_8 },
761 { 0x0a, KEY_9 },
762 { 0x0c, KEY_0 },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200763
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300764 { 0x0b, KEY_VIDEO },
765 { 0x0d, KEY_REFRESH },
766 { 0x0e, KEY_SELECT },
767 { 0x0f, KEY_EPG },
768 { 0x10, KEY_UP },
769 { 0x11, KEY_LEFT },
770 { 0x12, KEY_OK },
771 { 0x13, KEY_RIGHT },
772 { 0x14, KEY_DOWN },
773 { 0x15, KEY_TEXT },
774 { 0x16, KEY_INFO },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200775
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300776 { 0x17, KEY_RED },
777 { 0x18, KEY_GREEN },
778 { 0x19, KEY_YELLOW },
779 { 0x1a, KEY_BLUE },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200780
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300781 { 0x1b, KEY_CHANNELUP },
782 { 0x1c, KEY_VOLUMEUP },
783 { 0x1d, KEY_MUTE },
784 { 0x1e, KEY_VOLUMEDOWN },
785 { 0x1f, KEY_CHANNELDOWN },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200786
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300787 { 0x40, KEY_PAUSE },
788 { 0x4c, KEY_PLAY },
789 { 0x58, KEY_RECORD },
790 { 0x54, KEY_PREVIOUS },
791 { 0x48, KEY_STOP },
792 { 0x5c, KEY_NEXT },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200793};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300794
795struct ir_scancode_table ir_codes_cinergy_1400_table = {
796 .scan = ir_codes_cinergy_1400,
797 .size = ARRAY_SIZE(ir_codes_cinergy_1400),
798};
799EXPORT_SYMBOL_GPL(ir_codes_cinergy_1400_table);
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200800
801/* ---------------------------------------------------------------------- */
802
803/* AVERTV STUDIO 303 Remote */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300804static struct ir_scancode ir_codes_avertv_303[] = {
805 { 0x2a, KEY_1 },
806 { 0x32, KEY_2 },
807 { 0x3a, KEY_3 },
808 { 0x4a, KEY_4 },
809 { 0x52, KEY_5 },
810 { 0x5a, KEY_6 },
811 { 0x6a, KEY_7 },
812 { 0x72, KEY_8 },
813 { 0x7a, KEY_9 },
814 { 0x0e, KEY_0 },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200815
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300816 { 0x02, KEY_POWER },
817 { 0x22, KEY_VIDEO },
818 { 0x42, KEY_AUDIO },
819 { 0x62, KEY_ZOOM },
820 { 0x0a, KEY_TV },
821 { 0x12, KEY_CD },
822 { 0x1a, KEY_TEXT },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200823
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300824 { 0x16, KEY_SUBTITLE },
825 { 0x1e, KEY_REWIND },
826 { 0x06, KEY_PRINT },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200827
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300828 { 0x2e, KEY_SEARCH },
829 { 0x36, KEY_SLEEP },
830 { 0x3e, KEY_SHUFFLE },
831 { 0x26, KEY_MUTE },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200832
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300833 { 0x4e, KEY_RECORD },
834 { 0x56, KEY_PAUSE },
835 { 0x5e, KEY_STOP },
836 { 0x46, KEY_PLAY },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200837
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300838 { 0x6e, KEY_RED },
839 { 0x0b, KEY_GREEN },
840 { 0x66, KEY_YELLOW },
841 { 0x03, KEY_BLUE },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200842
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300843 { 0x76, KEY_LEFT },
844 { 0x7e, KEY_RIGHT },
845 { 0x13, KEY_DOWN },
846 { 0x1b, KEY_UP },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200847};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300848
849struct ir_scancode_table ir_codes_avertv_303_table = {
850 .scan = ir_codes_avertv_303,
851 .size = ARRAY_SIZE(ir_codes_avertv_303),
852};
853EXPORT_SYMBOL_GPL(ir_codes_avertv_303_table);
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200854
855/* ---------------------------------------------------------------------- */
856
857/* DigitalNow DNTV Live! DVB-T Pro Remote */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300858static struct ir_scancode ir_codes_dntv_live_dvbt_pro[] = {
859 { 0x16, KEY_POWER },
860 { 0x5b, KEY_HOME },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200861
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300862 { 0x55, KEY_TV }, /* live tv */
863 { 0x58, KEY_TUNER }, /* digital Radio */
864 { 0x5a, KEY_RADIO }, /* FM radio */
865 { 0x59, KEY_DVD }, /* dvd menu */
866 { 0x03, KEY_1 },
867 { 0x01, KEY_2 },
868 { 0x06, KEY_3 },
869 { 0x09, KEY_4 },
870 { 0x1d, KEY_5 },
871 { 0x1f, KEY_6 },
872 { 0x0d, KEY_7 },
873 { 0x19, KEY_8 },
874 { 0x1b, KEY_9 },
875 { 0x0c, KEY_CANCEL },
876 { 0x15, KEY_0 },
877 { 0x4a, KEY_CLEAR },
878 { 0x13, KEY_BACK },
879 { 0x00, KEY_TAB },
880 { 0x4b, KEY_UP },
881 { 0x4e, KEY_LEFT },
882 { 0x4f, KEY_OK },
883 { 0x52, KEY_RIGHT },
884 { 0x51, KEY_DOWN },
885 { 0x1e, KEY_VOLUMEUP },
886 { 0x0a, KEY_VOLUMEDOWN },
887 { 0x02, KEY_CHANNELDOWN },
888 { 0x05, KEY_CHANNELUP },
889 { 0x11, KEY_RECORD },
890 { 0x14, KEY_PLAY },
891 { 0x4c, KEY_PAUSE },
892 { 0x1a, KEY_STOP },
893 { 0x40, KEY_REWIND },
894 { 0x12, KEY_FASTFORWARD },
895 { 0x41, KEY_PREVIOUSSONG }, /* replay |< */
896 { 0x42, KEY_NEXTSONG }, /* skip >| */
897 { 0x54, KEY_CAMERA }, /* capture */
898 { 0x50, KEY_LANGUAGE }, /* sap */
899 { 0x47, KEY_TV2 }, /* pip */
900 { 0x4d, KEY_SCREEN },
901 { 0x43, KEY_SUBTITLE },
902 { 0x10, KEY_MUTE },
903 { 0x49, KEY_AUDIO }, /* l/r */
904 { 0x07, KEY_SLEEP },
905 { 0x08, KEY_VIDEO }, /* a/v */
906 { 0x0e, KEY_PREVIOUS }, /* recall */
907 { 0x45, KEY_ZOOM }, /* zoom + */
908 { 0x46, KEY_ANGLE }, /* zoom - */
909 { 0x56, KEY_RED },
910 { 0x57, KEY_GREEN },
911 { 0x5c, KEY_YELLOW },
912 { 0x5d, KEY_BLUE },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200913};
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200914
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300915struct ir_scancode_table ir_codes_dntv_live_dvbt_pro_table = {
916 .scan = ir_codes_dntv_live_dvbt_pro,
917 .size = ARRAY_SIZE(ir_codes_dntv_live_dvbt_pro),
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200918};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300919EXPORT_SYMBOL_GPL(ir_codes_dntv_live_dvbt_pro_table);
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200920
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300921static struct ir_scancode ir_codes_em_terratec[] = {
922 { 0x01, KEY_CHANNEL },
923 { 0x02, KEY_SELECT },
924 { 0x03, KEY_MUTE },
925 { 0x04, KEY_POWER },
926 { 0x05, KEY_1 },
927 { 0x06, KEY_2 },
928 { 0x07, KEY_3 },
929 { 0x08, KEY_CHANNELUP },
930 { 0x09, KEY_4 },
931 { 0x0a, KEY_5 },
932 { 0x0b, KEY_6 },
933 { 0x0c, KEY_CHANNELDOWN },
934 { 0x0d, KEY_7 },
935 { 0x0e, KEY_8 },
936 { 0x0f, KEY_9 },
937 { 0x10, KEY_VOLUMEUP },
938 { 0x11, KEY_0 },
939 { 0x12, KEY_MENU },
940 { 0x13, KEY_PRINT },
941 { 0x14, KEY_VOLUMEDOWN },
942 { 0x16, KEY_PAUSE },
943 { 0x18, KEY_RECORD },
944 { 0x19, KEY_REWIND },
945 { 0x1a, KEY_PLAY },
946 { 0x1b, KEY_FORWARD },
947 { 0x1c, KEY_BACKSPACE },
948 { 0x1e, KEY_STOP },
949 { 0x40, KEY_ZOOM },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200950};
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200951
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300952struct ir_scancode_table ir_codes_em_terratec_table = {
953 .scan = ir_codes_em_terratec,
954 .size = ARRAY_SIZE(ir_codes_em_terratec),
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200955};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300956EXPORT_SYMBOL_GPL(ir_codes_em_terratec_table);
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200957
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300958static struct ir_scancode ir_codes_pinnacle_grey[] = {
959 { 0x3a, KEY_0 },
960 { 0x31, KEY_1 },
961 { 0x32, KEY_2 },
962 { 0x33, KEY_3 },
963 { 0x34, KEY_4 },
964 { 0x35, KEY_5 },
965 { 0x36, KEY_6 },
966 { 0x37, KEY_7 },
967 { 0x38, KEY_8 },
968 { 0x39, KEY_9 },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200969
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300970 { 0x2f, KEY_POWER },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200971
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300972 { 0x2e, KEY_P },
973 { 0x1f, KEY_L },
974 { 0x2b, KEY_I },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200975
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300976 { 0x2d, KEY_SCREEN },
977 { 0x1e, KEY_ZOOM },
978 { 0x1b, KEY_VOLUMEUP },
979 { 0x0f, KEY_VOLUMEDOWN },
980 { 0x17, KEY_CHANNELUP },
981 { 0x1c, KEY_CHANNELDOWN },
982 { 0x25, KEY_INFO },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -0200983
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -0300984 { 0x3c, KEY_MUTE },
985
986 { 0x3d, KEY_LEFT },
987 { 0x3b, KEY_RIGHT },
988
989 { 0x3f, KEY_UP },
990 { 0x3e, KEY_DOWN },
991 { 0x1a, KEY_ENTER },
992
993 { 0x1d, KEY_MENU },
994 { 0x19, KEY_AGAIN },
995 { 0x16, KEY_PREVIOUSSONG },
996 { 0x13, KEY_NEXTSONG },
997 { 0x15, KEY_PAUSE },
998 { 0x0e, KEY_REWIND },
999 { 0x0d, KEY_PLAY },
1000 { 0x0b, KEY_STOP },
1001 { 0x07, KEY_FORWARD },
1002 { 0x27, KEY_RECORD },
1003 { 0x26, KEY_TUNER },
1004 { 0x29, KEY_TEXT },
1005 { 0x2a, KEY_MEDIA },
1006 { 0x18, KEY_EPG },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001007};
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001008
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001009struct ir_scancode_table ir_codes_pinnacle_grey_table = {
1010 .scan = ir_codes_pinnacle_grey,
1011 .size = ARRAY_SIZE(ir_codes_pinnacle_grey),
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001012};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001013EXPORT_SYMBOL_GPL(ir_codes_pinnacle_grey_table);
1014
1015static struct ir_scancode ir_codes_flyvideo[] = {
1016 { 0x0f, KEY_0 },
1017 { 0x03, KEY_1 },
1018 { 0x04, KEY_2 },
1019 { 0x05, KEY_3 },
1020 { 0x07, KEY_4 },
1021 { 0x08, KEY_5 },
1022 { 0x09, KEY_6 },
1023 { 0x0b, KEY_7 },
1024 { 0x0c, KEY_8 },
1025 { 0x0d, KEY_9 },
1026
1027 { 0x0e, KEY_MODE }, /* Air/Cable */
1028 { 0x11, KEY_VIDEO }, /* Video */
1029 { 0x15, KEY_AUDIO }, /* Audio */
1030 { 0x00, KEY_POWER }, /* Power */
1031 { 0x18, KEY_TUNER }, /* AV Source */
1032 { 0x02, KEY_ZOOM }, /* Fullscreen */
1033 { 0x1a, KEY_LANGUAGE }, /* Stereo */
1034 { 0x1b, KEY_MUTE }, /* Mute */
1035 { 0x14, KEY_VOLUMEUP }, /* Volume + */
1036 { 0x17, KEY_VOLUMEDOWN },/* Volume - */
1037 { 0x12, KEY_CHANNELUP },/* Channel + */
1038 { 0x13, KEY_CHANNELDOWN },/* Channel - */
1039 { 0x06, KEY_AGAIN }, /* Recall */
1040 { 0x10, KEY_ENTER }, /* Enter */
1041
1042 { 0x19, KEY_BACK }, /* Rewind ( <<< ) */
1043 { 0x1f, KEY_FORWARD }, /* Forward ( >>> ) */
1044 { 0x0a, KEY_ANGLE }, /* no label, may be used as the PAUSE button */
1045};
1046
1047struct ir_scancode_table ir_codes_flyvideo_table = {
1048 .scan = ir_codes_flyvideo,
1049 .size = ARRAY_SIZE(ir_codes_flyvideo),
1050};
1051EXPORT_SYMBOL_GPL(ir_codes_flyvideo_table);
1052
1053static struct ir_scancode ir_codes_flydvb[] = {
1054 { 0x01, KEY_ZOOM }, /* Full Screen */
1055 { 0x00, KEY_POWER }, /* Power */
1056
1057 { 0x03, KEY_1 },
1058 { 0x04, KEY_2 },
1059 { 0x05, KEY_3 },
1060 { 0x07, KEY_4 },
1061 { 0x08, KEY_5 },
1062 { 0x09, KEY_6 },
1063 { 0x0b, KEY_7 },
1064 { 0x0c, KEY_8 },
1065 { 0x0d, KEY_9 },
1066 { 0x06, KEY_AGAIN }, /* Recall */
1067 { 0x0f, KEY_0 },
1068 { 0x10, KEY_MUTE }, /* Mute */
1069 { 0x02, KEY_RADIO }, /* TV/Radio */
1070 { 0x1b, KEY_LANGUAGE }, /* SAP (Second Audio Program) */
1071
1072 { 0x14, KEY_VOLUMEUP }, /* VOL+ */
1073 { 0x17, KEY_VOLUMEDOWN }, /* VOL- */
1074 { 0x12, KEY_CHANNELUP }, /* CH+ */
1075 { 0x13, KEY_CHANNELDOWN }, /* CH- */
1076 { 0x1d, KEY_ENTER }, /* Enter */
1077
1078 { 0x1a, KEY_MODE }, /* PIP */
1079 { 0x18, KEY_TUNER }, /* Source */
1080
1081 { 0x1e, KEY_RECORD }, /* Record/Pause */
1082 { 0x15, KEY_ANGLE }, /* Swap (no label on key) */
1083 { 0x1c, KEY_PAUSE }, /* Timeshift/Pause */
1084 { 0x19, KEY_BACK }, /* Rewind << */
1085 { 0x0a, KEY_PLAYPAUSE }, /* Play/Pause */
1086 { 0x1f, KEY_FORWARD }, /* Forward >> */
1087 { 0x16, KEY_PREVIOUS }, /* Back |<< */
1088 { 0x11, KEY_STOP }, /* Stop */
1089 { 0x0e, KEY_NEXT }, /* End >>| */
1090};
1091
1092struct ir_scancode_table ir_codes_flydvb_table = {
1093 .scan = ir_codes_flydvb,
1094 .size = ARRAY_SIZE(ir_codes_flydvb),
1095};
1096EXPORT_SYMBOL_GPL(ir_codes_flydvb_table);
1097
1098static struct ir_scancode ir_codes_cinergy[] = {
1099 { 0x00, KEY_0 },
1100 { 0x01, KEY_1 },
1101 { 0x02, KEY_2 },
1102 { 0x03, KEY_3 },
1103 { 0x04, KEY_4 },
1104 { 0x05, KEY_5 },
1105 { 0x06, KEY_6 },
1106 { 0x07, KEY_7 },
1107 { 0x08, KEY_8 },
1108 { 0x09, KEY_9 },
1109
1110 { 0x0a, KEY_POWER },
1111 { 0x0b, KEY_PROG1 }, /* app */
1112 { 0x0c, KEY_ZOOM }, /* zoom/fullscreen */
1113 { 0x0d, KEY_CHANNELUP }, /* channel */
1114 { 0x0e, KEY_CHANNELDOWN }, /* channel- */
1115 { 0x0f, KEY_VOLUMEUP },
1116 { 0x10, KEY_VOLUMEDOWN },
1117 { 0x11, KEY_TUNER }, /* AV */
1118 { 0x12, KEY_NUMLOCK }, /* -/-- */
1119 { 0x13, KEY_AUDIO }, /* audio */
1120 { 0x14, KEY_MUTE },
1121 { 0x15, KEY_UP },
1122 { 0x16, KEY_DOWN },
1123 { 0x17, KEY_LEFT },
1124 { 0x18, KEY_RIGHT },
1125 { 0x19, BTN_LEFT, },
1126 { 0x1a, BTN_RIGHT, },
1127 { 0x1b, KEY_WWW }, /* text */
1128 { 0x1c, KEY_REWIND },
1129 { 0x1d, KEY_FORWARD },
1130 { 0x1e, KEY_RECORD },
1131 { 0x1f, KEY_PLAY },
1132 { 0x20, KEY_PREVIOUSSONG },
1133 { 0x21, KEY_NEXTSONG },
1134 { 0x22, KEY_PAUSE },
1135 { 0x23, KEY_STOP },
1136};
1137
1138struct ir_scancode_table ir_codes_cinergy_table = {
1139 .scan = ir_codes_cinergy,
1140 .size = ARRAY_SIZE(ir_codes_cinergy),
1141};
1142EXPORT_SYMBOL_GPL(ir_codes_cinergy_table);
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001143
1144/* Alfons Geser <a.geser@cox.net>
1145 * updates from Job D. R. Borges <jobdrb@ig.com.br> */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001146static struct ir_scancode ir_codes_eztv[] = {
1147 { 0x12, KEY_POWER },
1148 { 0x01, KEY_TV }, /* DVR */
1149 { 0x15, KEY_DVD }, /* DVD */
1150 { 0x17, KEY_AUDIO }, /* music */
Mauro Carvalho Chehab5d353642009-08-27 09:50:21 -03001151 /* DVR mode / DVD mode / music mode */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001152
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001153 { 0x1b, KEY_MUTE }, /* mute */
1154 { 0x02, KEY_LANGUAGE }, /* MTS/SAP / audio / autoseek */
1155 { 0x1e, KEY_SUBTITLE }, /* closed captioning / subtitle / seek */
1156 { 0x16, KEY_ZOOM }, /* full screen */
1157 { 0x1c, KEY_VIDEO }, /* video source / eject / delall */
1158 { 0x1d, KEY_RESTART }, /* playback / angle / del */
1159 { 0x2f, KEY_SEARCH }, /* scan / menu / playlist */
1160 { 0x30, KEY_CHANNEL }, /* CH surfing / bookmark / memo */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001161
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001162 { 0x31, KEY_HELP }, /* help */
1163 { 0x32, KEY_MODE }, /* num/memo */
1164 { 0x33, KEY_ESC }, /* cancel */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001165
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001166 { 0x0c, KEY_UP }, /* up */
1167 { 0x10, KEY_DOWN }, /* down */
1168 { 0x08, KEY_LEFT }, /* left */
1169 { 0x04, KEY_RIGHT }, /* right */
1170 { 0x03, KEY_SELECT }, /* select */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001171
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001172 { 0x1f, KEY_REWIND }, /* rewind */
1173 { 0x20, KEY_PLAYPAUSE },/* play/pause */
1174 { 0x29, KEY_FORWARD }, /* forward */
1175 { 0x14, KEY_AGAIN }, /* repeat */
1176 { 0x2b, KEY_RECORD }, /* recording */
1177 { 0x2c, KEY_STOP }, /* stop */
1178 { 0x2d, KEY_PLAY }, /* play */
1179 { 0x2e, KEY_CAMERA }, /* snapshot / shuffle */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001180
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001181 { 0x00, KEY_0 },
1182 { 0x05, KEY_1 },
1183 { 0x06, KEY_2 },
1184 { 0x07, KEY_3 },
1185 { 0x09, KEY_4 },
1186 { 0x0a, KEY_5 },
1187 { 0x0b, KEY_6 },
1188 { 0x0d, KEY_7 },
1189 { 0x0e, KEY_8 },
1190 { 0x0f, KEY_9 },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001191
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001192 { 0x2a, KEY_VOLUMEUP },
1193 { 0x11, KEY_VOLUMEDOWN },
1194 { 0x18, KEY_CHANNELUP },/* CH.tracking up */
1195 { 0x19, KEY_CHANNELDOWN },/* CH.tracking down */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001196
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001197 { 0x13, KEY_ENTER }, /* enter */
1198 { 0x21, KEY_DOT }, /* . (decimal dot) */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001199};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001200
1201struct ir_scancode_table ir_codes_eztv_table = {
1202 .scan = ir_codes_eztv,
1203 .size = ARRAY_SIZE(ir_codes_eztv),
1204};
1205EXPORT_SYMBOL_GPL(ir_codes_eztv_table);
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001206
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001207/* Alex Hermann <gaaf@gmx.net> */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001208static struct ir_scancode ir_codes_avermedia[] = {
1209 { 0x28, KEY_1 },
1210 { 0x18, KEY_2 },
1211 { 0x38, KEY_3 },
1212 { 0x24, KEY_4 },
1213 { 0x14, KEY_5 },
1214 { 0x34, KEY_6 },
1215 { 0x2c, KEY_7 },
1216 { 0x1c, KEY_8 },
1217 { 0x3c, KEY_9 },
1218 { 0x22, KEY_0 },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001219
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001220 { 0x20, KEY_TV }, /* TV/FM */
1221 { 0x10, KEY_CD }, /* CD */
1222 { 0x30, KEY_TEXT }, /* TELETEXT */
1223 { 0x00, KEY_POWER }, /* POWER */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001224
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001225 { 0x08, KEY_VIDEO }, /* VIDEO */
1226 { 0x04, KEY_AUDIO }, /* AUDIO */
1227 { 0x0c, KEY_ZOOM }, /* FULL SCREEN */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001228
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001229 { 0x12, KEY_SUBTITLE }, /* DISPLAY */
1230 { 0x32, KEY_REWIND }, /* LOOP */
1231 { 0x02, KEY_PRINT }, /* PREVIEW */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001232
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001233 { 0x2a, KEY_SEARCH }, /* AUTOSCAN */
1234 { 0x1a, KEY_SLEEP }, /* FREEZE */
1235 { 0x3a, KEY_CAMERA }, /* SNAPSHOT */
1236 { 0x0a, KEY_MUTE }, /* MUTE */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001237
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001238 { 0x26, KEY_RECORD }, /* RECORD */
1239 { 0x16, KEY_PAUSE }, /* PAUSE */
1240 { 0x36, KEY_STOP }, /* STOP */
1241 { 0x06, KEY_PLAY }, /* PLAY */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001242
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001243 { 0x2e, KEY_RED }, /* RED */
1244 { 0x21, KEY_GREEN }, /* GREEN */
1245 { 0x0e, KEY_YELLOW }, /* YELLOW */
1246 { 0x01, KEY_BLUE }, /* BLUE */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001247
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001248 { 0x1e, KEY_VOLUMEDOWN }, /* VOLUME- */
1249 { 0x3e, KEY_VOLUMEUP }, /* VOLUME+ */
1250 { 0x11, KEY_CHANNELDOWN }, /* CHANNEL/PAGE- */
1251 { 0x31, KEY_CHANNELUP } /* CHANNEL/PAGE+ */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001252};
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001253
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001254struct ir_scancode_table ir_codes_avermedia_table = {
1255 .scan = ir_codes_avermedia,
1256 .size = ARRAY_SIZE(ir_codes_avermedia),
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001257};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001258EXPORT_SYMBOL_GPL(ir_codes_avermedia_table);
1259
1260static struct ir_scancode ir_codes_videomate_tv_pvr[] = {
1261 { 0x14, KEY_MUTE },
1262 { 0x24, KEY_ZOOM },
1263
1264 { 0x01, KEY_DVD },
1265 { 0x23, KEY_RADIO },
1266 { 0x00, KEY_TV },
1267
1268 { 0x0a, KEY_REWIND },
1269 { 0x08, KEY_PLAYPAUSE },
1270 { 0x0f, KEY_FORWARD },
1271
1272 { 0x02, KEY_PREVIOUS },
1273 { 0x07, KEY_STOP },
1274 { 0x06, KEY_NEXT },
1275
1276 { 0x0c, KEY_UP },
1277 { 0x0e, KEY_DOWN },
1278 { 0x0b, KEY_LEFT },
1279 { 0x0d, KEY_RIGHT },
1280 { 0x11, KEY_OK },
1281
1282 { 0x03, KEY_MENU },
1283 { 0x09, KEY_SETUP },
1284 { 0x05, KEY_VIDEO },
1285 { 0x22, KEY_CHANNEL },
1286
1287 { 0x12, KEY_VOLUMEUP },
1288 { 0x15, KEY_VOLUMEDOWN },
1289 { 0x10, KEY_CHANNELUP },
1290 { 0x13, KEY_CHANNELDOWN },
1291
1292 { 0x04, KEY_RECORD },
1293
1294 { 0x16, KEY_1 },
1295 { 0x17, KEY_2 },
1296 { 0x18, KEY_3 },
1297 { 0x19, KEY_4 },
1298 { 0x1a, KEY_5 },
1299 { 0x1b, KEY_6 },
1300 { 0x1c, KEY_7 },
1301 { 0x1d, KEY_8 },
1302 { 0x1e, KEY_9 },
1303 { 0x1f, KEY_0 },
1304
1305 { 0x20, KEY_LANGUAGE },
1306 { 0x21, KEY_SLEEP },
1307};
1308
1309struct ir_scancode_table ir_codes_videomate_tv_pvr_table = {
1310 .scan = ir_codes_videomate_tv_pvr,
1311 .size = ARRAY_SIZE(ir_codes_videomate_tv_pvr),
1312};
1313EXPORT_SYMBOL_GPL(ir_codes_videomate_tv_pvr_table);
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001314
1315/* Michael Tokarev <mjt@tls.msk.ru>
1316 http://www.corpit.ru/mjt/beholdTV/remote_control.jpg
Mauro Carvalho Chehab3b82bdd2009-08-27 09:31:30 -03001317 keytable is used by MANLI MTV00[0x0c] and BeholdTV 40[13] at
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001318 least, and probably other cards too.
1319 The "ascii-art picture" below (in comments, first row
1320 is the keycode in hex, and subsequent row(s) shows
1321 the button labels (several variants when appropriate)
1322 helps to descide which keycodes to assign to the buttons.
1323 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001324static struct ir_scancode ir_codes_manli[] = {
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001325
1326 /* 0x1c 0x12 *
1327 * FUNCTION POWER *
1328 * FM (|) *
1329 * */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001330 { 0x1c, KEY_RADIO }, /*XXX*/
1331 { 0x12, KEY_POWER },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001332
1333 /* 0x01 0x02 0x03 *
1334 * 1 2 3 *
1335 * *
1336 * 0x04 0x05 0x06 *
1337 * 4 5 6 *
1338 * *
1339 * 0x07 0x08 0x09 *
1340 * 7 8 9 *
1341 * */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001342 { 0x01, KEY_1 },
1343 { 0x02, KEY_2 },
1344 { 0x03, KEY_3 },
1345 { 0x04, KEY_4 },
1346 { 0x05, KEY_5 },
1347 { 0x06, KEY_6 },
1348 { 0x07, KEY_7 },
1349 { 0x08, KEY_8 },
1350 { 0x09, KEY_9 },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001351
1352 /* 0x0a 0x00 0x17 *
1353 * RECALL 0 +100 *
1354 * PLUS *
1355 * */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001356 { 0x0a, KEY_AGAIN }, /*XXX KEY_REWIND? */
1357 { 0x00, KEY_0 },
1358 { 0x17, KEY_DIGITS }, /*XXX*/
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001359
1360 /* 0x14 0x10 *
1361 * MENU INFO *
1362 * OSD */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001363 { 0x14, KEY_MENU },
1364 { 0x10, KEY_INFO },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001365
1366 /* 0x0b *
1367 * Up *
1368 * *
1369 * 0x18 0x16 0x0c *
1370 * Left Ok Right *
1371 * *
1372 * 0x015 *
1373 * Down *
1374 * */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001375 { 0x0b, KEY_UP },
1376 { 0x18, KEY_LEFT },
1377 { 0x16, KEY_OK }, /*XXX KEY_SELECT? KEY_ENTER? */
1378 { 0x0c, KEY_RIGHT },
1379 { 0x15, KEY_DOWN },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001380
1381 /* 0x11 0x0d *
1382 * TV/AV MODE *
1383 * SOURCE STEREO *
1384 * */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001385 { 0x11, KEY_TV }, /*XXX*/
1386 { 0x0d, KEY_MODE }, /*XXX there's no KEY_STEREO */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001387
1388 /* 0x0f 0x1b 0x1a *
1389 * AUDIO Vol+ Chan+ *
1390 * TIMESHIFT??? *
1391 * *
1392 * 0x0e 0x1f 0x1e *
1393 * SLEEP Vol- Chan- *
1394 * */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001395 { 0x0f, KEY_AUDIO },
1396 { 0x1b, KEY_VOLUMEUP },
1397 { 0x1a, KEY_CHANNELUP },
1398 { 0x0e, KEY_TIME },
1399 { 0x1f, KEY_VOLUMEDOWN },
1400 { 0x1e, KEY_CHANNELDOWN },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001401
1402 /* 0x13 0x19 *
1403 * MUTE SNAPSHOT*
1404 * */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001405 { 0x13, KEY_MUTE },
1406 { 0x19, KEY_CAMERA },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001407
Mauro Carvalho Chehab97fd4f72009-08-27 09:28:48 -03001408 /* 0x1d unused ? */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001409};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001410
1411struct ir_scancode_table ir_codes_manli_table = {
1412 .scan = ir_codes_manli,
1413 .size = ARRAY_SIZE(ir_codes_manli),
1414};
1415EXPORT_SYMBOL_GPL(ir_codes_manli_table);
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001416
1417/* Mike Baikov <mike@baikov.com> */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001418static struct ir_scancode ir_codes_gotview7135[] = {
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001419
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001420 { 0x11, KEY_POWER },
1421 { 0x35, KEY_TV },
1422 { 0x1b, KEY_0 },
1423 { 0x29, KEY_1 },
1424 { 0x19, KEY_2 },
1425 { 0x39, KEY_3 },
1426 { 0x1f, KEY_4 },
1427 { 0x2c, KEY_5 },
1428 { 0x21, KEY_6 },
1429 { 0x24, KEY_7 },
1430 { 0x18, KEY_8 },
1431 { 0x2b, KEY_9 },
1432 { 0x3b, KEY_AGAIN }, /* LOOP */
1433 { 0x06, KEY_AUDIO },
1434 { 0x31, KEY_PRINT }, /* PREVIEW */
1435 { 0x3e, KEY_VIDEO },
1436 { 0x10, KEY_CHANNELUP },
1437 { 0x20, KEY_CHANNELDOWN },
1438 { 0x0c, KEY_VOLUMEDOWN },
1439 { 0x28, KEY_VOLUMEUP },
1440 { 0x08, KEY_MUTE },
1441 { 0x26, KEY_SEARCH }, /* SCAN */
1442 { 0x3f, KEY_CAMERA }, /* SNAPSHOT */
1443 { 0x12, KEY_RECORD },
1444 { 0x32, KEY_STOP },
1445 { 0x3c, KEY_PLAY },
1446 { 0x1d, KEY_REWIND },
1447 { 0x2d, KEY_PAUSE },
1448 { 0x0d, KEY_FORWARD },
1449 { 0x05, KEY_ZOOM }, /*FULL*/
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001450
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001451 { 0x2a, KEY_F21 }, /* LIVE TIMESHIFT */
1452 { 0x0e, KEY_F22 }, /* MIN TIMESHIFT */
1453 { 0x1e, KEY_TIME }, /* TIMESHIFT */
1454 { 0x38, KEY_F24 }, /* NORMAL TIMESHIFT */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001455};
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001456
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001457struct ir_scancode_table ir_codes_gotview7135_table = {
1458 .scan = ir_codes_gotview7135,
1459 .size = ARRAY_SIZE(ir_codes_gotview7135),
1460};
1461EXPORT_SYMBOL_GPL(ir_codes_gotview7135_table);
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001462
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001463static struct ir_scancode ir_codes_purpletv[] = {
1464 { 0x03, KEY_POWER },
1465 { 0x6f, KEY_MUTE },
1466 { 0x10, KEY_BACKSPACE }, /* Recall */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001467
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001468 { 0x11, KEY_0 },
1469 { 0x04, KEY_1 },
1470 { 0x05, KEY_2 },
1471 { 0x06, KEY_3 },
1472 { 0x08, KEY_4 },
1473 { 0x09, KEY_5 },
1474 { 0x0a, KEY_6 },
1475 { 0x0c, KEY_7 },
1476 { 0x0d, KEY_8 },
1477 { 0x0e, KEY_9 },
1478 { 0x12, KEY_DOT }, /* 100+ */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001479
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001480 { 0x07, KEY_VOLUMEUP },
1481 { 0x0b, KEY_VOLUMEDOWN },
1482 { 0x1a, KEY_KPPLUS },
1483 { 0x18, KEY_KPMINUS },
1484 { 0x15, KEY_UP },
1485 { 0x1d, KEY_DOWN },
1486 { 0x0f, KEY_CHANNELUP },
1487 { 0x13, KEY_CHANNELDOWN },
1488 { 0x48, KEY_ZOOM },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001489
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001490 { 0x1b, KEY_VIDEO }, /* Video source */
1491 { 0x1f, KEY_CAMERA }, /* Snapshot */
1492 { 0x49, KEY_LANGUAGE }, /* MTS Select */
1493 { 0x19, KEY_SEARCH }, /* Auto Scan */
1494
1495 { 0x4b, KEY_RECORD },
1496 { 0x46, KEY_PLAY },
1497 { 0x45, KEY_PAUSE }, /* Pause */
1498 { 0x44, KEY_STOP },
1499 { 0x43, KEY_TIME }, /* Time Shift */
1500 { 0x17, KEY_CHANNEL }, /* SURF CH */
1501 { 0x40, KEY_FORWARD }, /* Forward ? */
1502 { 0x42, KEY_REWIND }, /* Backward ? */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001503
1504};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001505
1506struct ir_scancode_table ir_codes_purpletv_table = {
1507 .scan = ir_codes_purpletv,
1508 .size = ARRAY_SIZE(ir_codes_purpletv),
1509};
1510EXPORT_SYMBOL_GPL(ir_codes_purpletv_table);
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001511
1512/* Mapping for the 28 key remote control as seen at
1513 http://www.sednacomputer.com/photo/cardbus-tv.jpg
Mauro Lacye80faad2008-04-22 14:45:58 -03001514 Pavel Mihaylov <bin@bash.info>
1515 Also for the remote bundled with Kozumi KTV-01C card */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001516static struct ir_scancode ir_codes_pctv_sedna[] = {
1517 { 0x00, KEY_0 },
1518 { 0x01, KEY_1 },
1519 { 0x02, KEY_2 },
1520 { 0x03, KEY_3 },
1521 { 0x04, KEY_4 },
1522 { 0x05, KEY_5 },
1523 { 0x06, KEY_6 },
1524 { 0x07, KEY_7 },
1525 { 0x08, KEY_8 },
1526 { 0x09, KEY_9 },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001527
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001528 { 0x0a, KEY_AGAIN }, /* Recall */
1529 { 0x0b, KEY_CHANNELUP },
1530 { 0x0c, KEY_VOLUMEUP },
1531 { 0x0d, KEY_MODE }, /* Stereo */
1532 { 0x0e, KEY_STOP },
1533 { 0x0f, KEY_PREVIOUSSONG },
1534 { 0x10, KEY_ZOOM },
1535 { 0x11, KEY_TUNER }, /* Source */
1536 { 0x12, KEY_POWER },
1537 { 0x13, KEY_MUTE },
1538 { 0x15, KEY_CHANNELDOWN },
1539 { 0x18, KEY_VOLUMEDOWN },
1540 { 0x19, KEY_CAMERA }, /* Snapshot */
1541 { 0x1a, KEY_NEXTSONG },
1542 { 0x1b, KEY_TIME }, /* Time Shift */
1543 { 0x1c, KEY_RADIO }, /* FM Radio */
1544 { 0x1d, KEY_RECORD },
1545 { 0x1e, KEY_PAUSE },
Mauro Lacye80faad2008-04-22 14:45:58 -03001546 /* additional codes for Kozumi's remote */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001547 { 0x14, KEY_INFO }, /* OSD */
1548 { 0x16, KEY_OK }, /* OK */
1549 { 0x17, KEY_DIGITS }, /* Plus */
1550 { 0x1f, KEY_PLAY }, /* Play */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001551};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001552
1553struct ir_scancode_table ir_codes_pctv_sedna_table = {
1554 .scan = ir_codes_pctv_sedna,
1555 .size = ARRAY_SIZE(ir_codes_pctv_sedna),
1556};
1557EXPORT_SYMBOL_GPL(ir_codes_pctv_sedna_table);
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001558
1559/* Mark Phalan <phalanm@o2.ie> */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001560static struct ir_scancode ir_codes_pv951[] = {
1561 { 0x00, KEY_0 },
1562 { 0x01, KEY_1 },
1563 { 0x02, KEY_2 },
1564 { 0x03, KEY_3 },
1565 { 0x04, KEY_4 },
1566 { 0x05, KEY_5 },
1567 { 0x06, KEY_6 },
1568 { 0x07, KEY_7 },
1569 { 0x08, KEY_8 },
1570 { 0x09, KEY_9 },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001571
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001572 { 0x12, KEY_POWER },
1573 { 0x10, KEY_MUTE },
1574 { 0x1f, KEY_VOLUMEDOWN },
1575 { 0x1b, KEY_VOLUMEUP },
1576 { 0x1a, KEY_CHANNELUP },
1577 { 0x1e, KEY_CHANNELDOWN },
1578 { 0x0e, KEY_PAGEUP },
1579 { 0x1d, KEY_PAGEDOWN },
1580 { 0x13, KEY_SOUND },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001581
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001582 { 0x18, KEY_KPPLUSMINUS }, /* CH +/- */
1583 { 0x16, KEY_SUBTITLE }, /* CC */
1584 { 0x0d, KEY_TEXT }, /* TTX */
1585 { 0x0b, KEY_TV }, /* AIR/CBL */
1586 { 0x11, KEY_PC }, /* PC/TV */
1587 { 0x17, KEY_OK }, /* CH RTN */
1588 { 0x19, KEY_MODE }, /* FUNC */
1589 { 0x0c, KEY_SEARCH }, /* AUTOSCAN */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001590
1591 /* Not sure what to do with these ones! */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001592 { 0x0f, KEY_SELECT }, /* SOURCE */
1593 { 0x0a, KEY_KPPLUS }, /* +100 */
1594 { 0x14, KEY_EQUAL }, /* SYNC */
1595 { 0x1c, KEY_MEDIA }, /* PC/TV */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001596};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001597
1598struct ir_scancode_table ir_codes_pv951_table = {
1599 .scan = ir_codes_pv951,
1600 .size = ARRAY_SIZE(ir_codes_pv951),
1601};
1602EXPORT_SYMBOL_GPL(ir_codes_pv951_table);
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001603
1604/* generic RC5 keytable */
1605/* see http://users.pandora.be/nenya/electronics/rc5/codes00.htm */
1606/* used by old (black) Hauppauge remotes */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001607static struct ir_scancode ir_codes_rc5_tv[] = {
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001608 /* Keys 0 to 9 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001609 { 0x00, KEY_0 },
1610 { 0x01, KEY_1 },
1611 { 0x02, KEY_2 },
1612 { 0x03, KEY_3 },
1613 { 0x04, KEY_4 },
1614 { 0x05, KEY_5 },
1615 { 0x06, KEY_6 },
1616 { 0x07, KEY_7 },
1617 { 0x08, KEY_8 },
1618 { 0x09, KEY_9 },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001619
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001620 { 0x0b, KEY_CHANNEL }, /* channel / program (japan: 11) */
1621 { 0x0c, KEY_POWER }, /* standby */
1622 { 0x0d, KEY_MUTE }, /* mute / demute */
1623 { 0x0f, KEY_TV }, /* display */
1624 { 0x10, KEY_VOLUMEUP },
1625 { 0x11, KEY_VOLUMEDOWN },
1626 { 0x12, KEY_BRIGHTNESSUP },
1627 { 0x13, KEY_BRIGHTNESSDOWN },
1628 { 0x1e, KEY_SEARCH }, /* search + */
1629 { 0x20, KEY_CHANNELUP }, /* channel / program + */
1630 { 0x21, KEY_CHANNELDOWN }, /* channel / program - */
1631 { 0x22, KEY_CHANNEL }, /* alt / channel */
1632 { 0x23, KEY_LANGUAGE }, /* 1st / 2nd language */
1633 { 0x26, KEY_SLEEP }, /* sleeptimer */
1634 { 0x2e, KEY_MENU }, /* 2nd controls (USA: menu) */
1635 { 0x30, KEY_PAUSE },
1636 { 0x32, KEY_REWIND },
1637 { 0x33, KEY_GOTO },
1638 { 0x35, KEY_PLAY },
1639 { 0x36, KEY_STOP },
1640 { 0x37, KEY_RECORD }, /* recording */
1641 { 0x3c, KEY_TEXT }, /* teletext submode (Japan: 12) */
1642 { 0x3d, KEY_SUSPEND }, /* system standby */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001643
1644};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001645
1646struct ir_scancode_table ir_codes_rc5_tv_table = {
1647 .scan = ir_codes_rc5_tv,
1648 .size = ARRAY_SIZE(ir_codes_rc5_tv),
1649};
1650EXPORT_SYMBOL_GPL(ir_codes_rc5_tv_table);
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001651
1652/* Table for Leadtek Winfast Remote Controls - used by both bttv and cx88 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001653static struct ir_scancode ir_codes_winfast[] = {
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001654 /* Keys 0 to 9 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001655 { 0x12, KEY_0 },
1656 { 0x05, KEY_1 },
1657 { 0x06, KEY_2 },
1658 { 0x07, KEY_3 },
1659 { 0x09, KEY_4 },
1660 { 0x0a, KEY_5 },
1661 { 0x0b, KEY_6 },
1662 { 0x0d, KEY_7 },
1663 { 0x0e, KEY_8 },
1664 { 0x0f, KEY_9 },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001665
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001666 { 0x00, KEY_POWER },
1667 { 0x1b, KEY_AUDIO }, /* Audio Source */
1668 { 0x02, KEY_TUNER }, /* TV/FM, not on Y0400052 */
1669 { 0x1e, KEY_VIDEO }, /* Video Source */
1670 { 0x16, KEY_INFO }, /* Display information */
1671 { 0x04, KEY_VOLUMEUP },
1672 { 0x08, KEY_VOLUMEDOWN },
1673 { 0x0c, KEY_CHANNELUP },
1674 { 0x10, KEY_CHANNELDOWN },
1675 { 0x03, KEY_ZOOM }, /* fullscreen */
1676 { 0x1f, KEY_TEXT }, /* closed caption/teletext */
1677 { 0x20, KEY_SLEEP },
1678 { 0x29, KEY_CLEAR }, /* boss key */
1679 { 0x14, KEY_MUTE },
1680 { 0x2b, KEY_RED },
1681 { 0x2c, KEY_GREEN },
1682 { 0x2d, KEY_YELLOW },
1683 { 0x2e, KEY_BLUE },
1684 { 0x18, KEY_KPPLUS }, /* fine tune + , not on Y040052 */
1685 { 0x19, KEY_KPMINUS }, /* fine tune - , not on Y040052 */
1686 { 0x2a, KEY_MEDIA }, /* PIP (Picture in picture */
1687 { 0x21, KEY_DOT },
1688 { 0x13, KEY_ENTER },
1689 { 0x11, KEY_LAST }, /* Recall (last channel */
1690 { 0x22, KEY_PREVIOUS },
1691 { 0x23, KEY_PLAYPAUSE },
1692 { 0x24, KEY_NEXT },
1693 { 0x25, KEY_TIME }, /* Time Shifting */
1694 { 0x26, KEY_STOP },
1695 { 0x27, KEY_RECORD },
1696 { 0x28, KEY_SAVE }, /* Screenshot */
1697 { 0x2f, KEY_MENU },
1698 { 0x30, KEY_CANCEL },
1699 { 0x31, KEY_CHANNEL }, /* Channel Surf */
1700 { 0x32, KEY_SUBTITLE },
1701 { 0x33, KEY_LANGUAGE },
1702 { 0x34, KEY_REWIND },
1703 { 0x35, KEY_FASTFORWARD },
1704 { 0x36, KEY_TV },
1705 { 0x37, KEY_RADIO }, /* FM */
1706 { 0x38, KEY_DVD },
Michel Lespinasse102df6a2007-11-26 18:57:10 -03001707
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001708 { 0x3e, KEY_F21 }, /* MCE +VOL, on Y04G0033 */
1709 { 0x3a, KEY_F22 }, /* MCE -VOL, on Y04G0033 */
1710 { 0x3b, KEY_F23 }, /* MCE +CH, on Y04G0033 */
1711 { 0x3f, KEY_F24 } /* MCE -CH, on Y04G0033 */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001712};
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001713
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001714struct ir_scancode_table ir_codes_winfast_table = {
1715 .scan = ir_codes_winfast,
1716 .size = ARRAY_SIZE(ir_codes_winfast),
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001717};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001718EXPORT_SYMBOL_GPL(ir_codes_winfast_table);
1719
1720static struct ir_scancode ir_codes_pinnacle_color[] = {
1721 { 0x59, KEY_MUTE },
1722 { 0x4a, KEY_POWER },
1723
1724 { 0x18, KEY_TEXT },
1725 { 0x26, KEY_TV },
1726 { 0x3d, KEY_PRINT },
1727
1728 { 0x48, KEY_RED },
1729 { 0x04, KEY_GREEN },
1730 { 0x11, KEY_YELLOW },
1731 { 0x00, KEY_BLUE },
1732
1733 { 0x2d, KEY_VOLUMEUP },
1734 { 0x1e, KEY_VOLUMEDOWN },
1735
1736 { 0x49, KEY_MENU },
1737
1738 { 0x16, KEY_CHANNELUP },
1739 { 0x17, KEY_CHANNELDOWN },
1740
1741 { 0x20, KEY_UP },
1742 { 0x21, KEY_DOWN },
1743 { 0x22, KEY_LEFT },
1744 { 0x23, KEY_RIGHT },
1745 { 0x0d, KEY_SELECT },
1746
1747 { 0x08, KEY_BACK },
1748 { 0x07, KEY_REFRESH },
1749
1750 { 0x2f, KEY_ZOOM },
1751 { 0x29, KEY_RECORD },
1752
1753 { 0x4b, KEY_PAUSE },
1754 { 0x4d, KEY_REWIND },
1755 { 0x2e, KEY_PLAY },
1756 { 0x4e, KEY_FORWARD },
1757 { 0x53, KEY_PREVIOUS },
1758 { 0x4c, KEY_STOP },
1759 { 0x54, KEY_NEXT },
1760
1761 { 0x69, KEY_0 },
1762 { 0x6a, KEY_1 },
1763 { 0x6b, KEY_2 },
1764 { 0x6c, KEY_3 },
1765 { 0x6d, KEY_4 },
1766 { 0x6e, KEY_5 },
1767 { 0x6f, KEY_6 },
1768 { 0x70, KEY_7 },
1769 { 0x71, KEY_8 },
1770 { 0x72, KEY_9 },
1771
1772 { 0x74, KEY_CHANNEL },
1773 { 0x0a, KEY_BACKSPACE },
1774};
1775
1776struct ir_scancode_table ir_codes_pinnacle_color_table = {
1777 .scan = ir_codes_pinnacle_color,
1778 .size = ARRAY_SIZE(ir_codes_pinnacle_color),
1779};
1780EXPORT_SYMBOL_GPL(ir_codes_pinnacle_color_table);
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001781
1782/* Hauppauge: the newer, gray remotes (seems there are multiple
1783 * slightly different versions), shipped with cx88+ivtv cards.
1784 * almost rc5 coding, but some non-standard keys */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001785static struct ir_scancode ir_codes_hauppauge_new[] = {
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001786 /* Keys 0 to 9 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001787 { 0x00, KEY_0 },
1788 { 0x01, KEY_1 },
1789 { 0x02, KEY_2 },
1790 { 0x03, KEY_3 },
1791 { 0x04, KEY_4 },
1792 { 0x05, KEY_5 },
1793 { 0x06, KEY_6 },
1794 { 0x07, KEY_7 },
1795 { 0x08, KEY_8 },
1796 { 0x09, KEY_9 },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001797
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001798 { 0x0a, KEY_TEXT }, /* keypad asterisk as well */
1799 { 0x0b, KEY_RED }, /* red button */
1800 { 0x0c, KEY_RADIO },
1801 { 0x0d, KEY_MENU },
1802 { 0x0e, KEY_SUBTITLE }, /* also the # key */
1803 { 0x0f, KEY_MUTE },
1804 { 0x10, KEY_VOLUMEUP },
1805 { 0x11, KEY_VOLUMEDOWN },
1806 { 0x12, KEY_PREVIOUS }, /* previous channel */
1807 { 0x14, KEY_UP },
1808 { 0x15, KEY_DOWN },
1809 { 0x16, KEY_LEFT },
1810 { 0x17, KEY_RIGHT },
1811 { 0x18, KEY_VIDEO }, /* Videos */
1812 { 0x19, KEY_AUDIO }, /* Music */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001813 /* 0x1a: Pictures - presume this means
1814 "Multimedia Home Platform" -
1815 no "PICTURES" key in input.h
1816 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001817 { 0x1a, KEY_MHP },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001818
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001819 { 0x1b, KEY_EPG }, /* Guide */
1820 { 0x1c, KEY_TV },
1821 { 0x1e, KEY_NEXTSONG }, /* skip >| */
1822 { 0x1f, KEY_EXIT }, /* back/exit */
1823 { 0x20, KEY_CHANNELUP }, /* channel / program + */
1824 { 0x21, KEY_CHANNELDOWN }, /* channel / program - */
1825 { 0x22, KEY_CHANNEL }, /* source (old black remote) */
1826 { 0x24, KEY_PREVIOUSSONG }, /* replay |< */
1827 { 0x25, KEY_ENTER }, /* OK */
1828 { 0x26, KEY_SLEEP }, /* minimize (old black remote) */
1829 { 0x29, KEY_BLUE }, /* blue key */
1830 { 0x2e, KEY_GREEN }, /* green button */
1831 { 0x30, KEY_PAUSE }, /* pause */
1832 { 0x32, KEY_REWIND }, /* backward << */
1833 { 0x34, KEY_FASTFORWARD }, /* forward >> */
1834 { 0x35, KEY_PLAY },
1835 { 0x36, KEY_STOP },
1836 { 0x37, KEY_RECORD }, /* recording */
1837 { 0x38, KEY_YELLOW }, /* yellow key */
1838 { 0x3b, KEY_SELECT }, /* top right button */
1839 { 0x3c, KEY_ZOOM }, /* full */
1840 { 0x3d, KEY_POWER }, /* system power (green button) */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001841};
Ricardo Cerqueira680543c2006-05-22 07:44:02 -03001842
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001843struct ir_scancode_table ir_codes_hauppauge_new_table = {
1844 .scan = ir_codes_hauppauge_new,
1845 .size = ARRAY_SIZE(ir_codes_hauppauge_new),
1846};
1847EXPORT_SYMBOL_GPL(ir_codes_hauppauge_new_table);
Ricardo Cerqueira680543c2006-05-22 07:44:02 -03001848
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001849static struct ir_scancode ir_codes_npgtech[] = {
1850 { 0x1d, KEY_SWITCHVIDEOMODE }, /* switch inputs */
1851 { 0x2a, KEY_FRONT },
Ricardo Cerqueira680543c2006-05-22 07:44:02 -03001852
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001853 { 0x3e, KEY_1 },
1854 { 0x02, KEY_2 },
1855 { 0x06, KEY_3 },
1856 { 0x0a, KEY_4 },
1857 { 0x0e, KEY_5 },
1858 { 0x12, KEY_6 },
1859 { 0x16, KEY_7 },
1860 { 0x1a, KEY_8 },
1861 { 0x1e, KEY_9 },
1862 { 0x3a, KEY_0 },
1863 { 0x22, KEY_NUMLOCK }, /* -/-- */
1864 { 0x20, KEY_REFRESH },
Ricardo Cerqueira680543c2006-05-22 07:44:02 -03001865
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001866 { 0x03, KEY_BRIGHTNESSDOWN },
1867 { 0x28, KEY_AUDIO },
1868 { 0x3c, KEY_CHANNELUP },
1869 { 0x3f, KEY_VOLUMEDOWN },
1870 { 0x2e, KEY_MUTE },
1871 { 0x3b, KEY_VOLUMEUP },
1872 { 0x00, KEY_CHANNELDOWN },
1873 { 0x07, KEY_BRIGHTNESSUP },
1874 { 0x2c, KEY_TEXT },
1875
1876 { 0x37, KEY_RECORD },
1877 { 0x17, KEY_PLAY },
1878 { 0x13, KEY_PAUSE },
1879 { 0x26, KEY_STOP },
1880 { 0x18, KEY_FASTFORWARD },
1881 { 0x14, KEY_REWIND },
1882 { 0x33, KEY_ZOOM },
1883 { 0x32, KEY_KEYBOARD },
1884 { 0x30, KEY_GOTO }, /* Pointing arrow */
1885 { 0x36, KEY_MACRO }, /* Maximize/Minimize (yellow) */
1886 { 0x0b, KEY_RADIO },
1887 { 0x10, KEY_POWER },
Ricardo Cerqueira680543c2006-05-22 07:44:02 -03001888
1889};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001890
1891struct ir_scancode_table ir_codes_npgtech_table = {
1892 .scan = ir_codes_npgtech,
1893 .size = ARRAY_SIZE(ir_codes_npgtech),
1894};
1895EXPORT_SYMBOL_GPL(ir_codes_npgtech_table);
Peter Naullsd1009bd2006-08-08 09:10:05 -03001896
1897/* Norwood Micro (non-Pro) TV Tuner
1898 By Peter Naulls <peter@chocky.org>
1899 Key comments are the functions given in the manual */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001900static struct ir_scancode ir_codes_norwood[] = {
Peter Naullsd1009bd2006-08-08 09:10:05 -03001901 /* Keys 0 to 9 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001902 { 0x20, KEY_0 },
1903 { 0x21, KEY_1 },
1904 { 0x22, KEY_2 },
1905 { 0x23, KEY_3 },
1906 { 0x24, KEY_4 },
1907 { 0x25, KEY_5 },
1908 { 0x26, KEY_6 },
1909 { 0x27, KEY_7 },
1910 { 0x28, KEY_8 },
1911 { 0x29, KEY_9 },
Peter Naullsd1009bd2006-08-08 09:10:05 -03001912
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001913 { 0x78, KEY_TUNER }, /* Video Source */
1914 { 0x2c, KEY_EXIT }, /* Open/Close software */
1915 { 0x2a, KEY_SELECT }, /* 2 Digit Select */
1916 { 0x69, KEY_AGAIN }, /* Recall */
Peter Naullsd1009bd2006-08-08 09:10:05 -03001917
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001918 { 0x32, KEY_BRIGHTNESSUP }, /* Brightness increase */
1919 { 0x33, KEY_BRIGHTNESSDOWN }, /* Brightness decrease */
1920 { 0x6b, KEY_KPPLUS }, /* (not named >>>>>) */
1921 { 0x6c, KEY_KPMINUS }, /* (not named <<<<<) */
Peter Naullsd1009bd2006-08-08 09:10:05 -03001922
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001923 { 0x2d, KEY_MUTE }, /* Mute */
1924 { 0x30, KEY_VOLUMEUP }, /* Volume up */
1925 { 0x31, KEY_VOLUMEDOWN }, /* Volume down */
1926 { 0x60, KEY_CHANNELUP }, /* Channel up */
1927 { 0x61, KEY_CHANNELDOWN }, /* Channel down */
Peter Naullsd1009bd2006-08-08 09:10:05 -03001928
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001929 { 0x3f, KEY_RECORD }, /* Record */
1930 { 0x37, KEY_PLAY }, /* Play */
1931 { 0x36, KEY_PAUSE }, /* Pause */
1932 { 0x2b, KEY_STOP }, /* Stop */
1933 { 0x67, KEY_FASTFORWARD }, /* Foward */
1934 { 0x66, KEY_REWIND }, /* Rewind */
1935 { 0x3e, KEY_SEARCH }, /* Auto Scan */
1936 { 0x2e, KEY_CAMERA }, /* Capture Video */
1937 { 0x6d, KEY_MENU }, /* Show/Hide Control */
1938 { 0x2f, KEY_ZOOM }, /* Full Screen */
1939 { 0x34, KEY_RADIO }, /* FM */
1940 { 0x65, KEY_POWER }, /* Computer power */
Peter Naullsd1009bd2006-08-08 09:10:05 -03001941};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001942
1943struct ir_scancode_table ir_codes_norwood_table = {
1944 .scan = ir_codes_norwood,
1945 .size = ARRAY_SIZE(ir_codes_norwood),
1946};
1947EXPORT_SYMBOL_GPL(ir_codes_norwood_table);
David Hardeman2520fff2006-12-02 21:16:05 -02001948
1949/* From reading the following remotes:
1950 * Zenith Universal 7 / TV Mode 807 / VCR Mode 837
1951 * Hauppauge (from NOVA-CI-s box product)
1952 * This is a "middle of the road" approach, differences are noted
1953 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001954static struct ir_scancode ir_codes_budget_ci_old[] = {
1955 { 0x00, KEY_0 },
1956 { 0x01, KEY_1 },
1957 { 0x02, KEY_2 },
1958 { 0x03, KEY_3 },
1959 { 0x04, KEY_4 },
1960 { 0x05, KEY_5 },
1961 { 0x06, KEY_6 },
1962 { 0x07, KEY_7 },
1963 { 0x08, KEY_8 },
1964 { 0x09, KEY_9 },
1965 { 0x0a, KEY_ENTER },
1966 { 0x0b, KEY_RED },
1967 { 0x0c, KEY_POWER }, /* RADIO on Hauppauge */
1968 { 0x0d, KEY_MUTE },
1969 { 0x0f, KEY_A }, /* TV on Hauppauge */
1970 { 0x10, KEY_VOLUMEUP },
1971 { 0x11, KEY_VOLUMEDOWN },
1972 { 0x14, KEY_B },
1973 { 0x1c, KEY_UP },
1974 { 0x1d, KEY_DOWN },
1975 { 0x1e, KEY_OPTION }, /* RESERVED on Hauppauge */
1976 { 0x1f, KEY_BREAK },
1977 { 0x20, KEY_CHANNELUP },
1978 { 0x21, KEY_CHANNELDOWN },
1979 { 0x22, KEY_PREVIOUS }, /* Prev Ch on Zenith, SOURCE on Hauppauge */
1980 { 0x24, KEY_RESTART },
1981 { 0x25, KEY_OK },
1982 { 0x26, KEY_CYCLEWINDOWS }, /* MINIMIZE on Hauppauge */
1983 { 0x28, KEY_ENTER }, /* VCR mode on Zenith */
1984 { 0x29, KEY_PAUSE },
1985 { 0x2b, KEY_RIGHT },
1986 { 0x2c, KEY_LEFT },
1987 { 0x2e, KEY_MENU }, /* FULL SCREEN on Hauppauge */
1988 { 0x30, KEY_SLOW },
1989 { 0x31, KEY_PREVIOUS }, /* VCR mode on Zenith */
1990 { 0x32, KEY_REWIND },
1991 { 0x34, KEY_FASTFORWARD },
1992 { 0x35, KEY_PLAY },
1993 { 0x36, KEY_STOP },
1994 { 0x37, KEY_RECORD },
1995 { 0x38, KEY_TUNER }, /* TV/VCR on Zenith */
1996 { 0x3a, KEY_C },
1997 { 0x3c, KEY_EXIT },
1998 { 0x3d, KEY_POWER2 },
1999 { 0x3e, KEY_TUNER },
David Hardeman2520fff2006-12-02 21:16:05 -02002000};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002001
2002struct ir_scancode_table ir_codes_budget_ci_old_table = {
2003 .scan = ir_codes_budget_ci_old,
2004 .size = ARRAY_SIZE(ir_codes_budget_ci_old),
2005};
2006EXPORT_SYMBOL_GPL(ir_codes_budget_ci_old_table);
Hermann Pitton91607232006-12-07 21:45:28 -03002007
2008/*
2009 * Marc Fargas <telenieko@telenieko.com>
2010 * this is the remote control that comes with the asus p7131
2011 * which has a label saying is "Model PC-39"
2012 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002013static struct ir_scancode ir_codes_asus_pc39[] = {
Hermann Pitton91607232006-12-07 21:45:28 -03002014 /* Keys 0 to 9 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002015 { 0x15, KEY_0 },
2016 { 0x29, KEY_1 },
2017 { 0x2d, KEY_2 },
2018 { 0x2b, KEY_3 },
2019 { 0x09, KEY_4 },
2020 { 0x0d, KEY_5 },
2021 { 0x0b, KEY_6 },
2022 { 0x31, KEY_7 },
2023 { 0x35, KEY_8 },
2024 { 0x33, KEY_9 },
Hermann Pitton91607232006-12-07 21:45:28 -03002025
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002026 { 0x3e, KEY_RADIO }, /* radio */
2027 { 0x03, KEY_MENU }, /* dvd/menu */
2028 { 0x2a, KEY_VOLUMEUP },
2029 { 0x19, KEY_VOLUMEDOWN },
2030 { 0x37, KEY_UP },
2031 { 0x3b, KEY_DOWN },
2032 { 0x27, KEY_LEFT },
2033 { 0x2f, KEY_RIGHT },
2034 { 0x25, KEY_VIDEO }, /* video */
2035 { 0x39, KEY_AUDIO }, /* music */
Hermann Pitton91607232006-12-07 21:45:28 -03002036
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002037 { 0x21, KEY_TV }, /* tv */
2038 { 0x1d, KEY_EXIT }, /* back */
2039 { 0x0a, KEY_CHANNELUP }, /* channel / program + */
2040 { 0x1b, KEY_CHANNELDOWN }, /* channel / program - */
2041 { 0x1a, KEY_ENTER }, /* enter */
Hermann Pitton91607232006-12-07 21:45:28 -03002042
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002043 { 0x06, KEY_PAUSE }, /* play/pause */
2044 { 0x1e, KEY_PREVIOUS }, /* rew */
2045 { 0x26, KEY_NEXT }, /* forward */
2046 { 0x0e, KEY_REWIND }, /* backward << */
2047 { 0x3a, KEY_FASTFORWARD }, /* forward >> */
2048 { 0x36, KEY_STOP },
2049 { 0x2e, KEY_RECORD }, /* recording */
2050 { 0x16, KEY_POWER }, /* the button that reads "close" */
Hermann Pitton91607232006-12-07 21:45:28 -03002051
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002052 { 0x11, KEY_ZOOM }, /* full screen */
2053 { 0x13, KEY_MACRO }, /* recall */
2054 { 0x23, KEY_HOME }, /* home */
2055 { 0x05, KEY_PVR }, /* picture */
2056 { 0x3d, KEY_MUTE }, /* mute */
2057 { 0x01, KEY_DVD }, /* dvd */
Hermann Pitton91607232006-12-07 21:45:28 -03002058};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002059
2060struct ir_scancode_table ir_codes_asus_pc39_table = {
2061 .scan = ir_codes_asus_pc39,
2062 .size = ARRAY_SIZE(ir_codes_asus_pc39),
2063};
2064EXPORT_SYMBOL_GPL(ir_codes_asus_pc39_table);
Juan Pablo Sormanic36c4592006-12-27 12:46:36 -03002065
2066
2067/* Encore ENLTV-FM - black plastic, white front cover with white glowing buttons
2068 Juan Pablo Sormani <sorman@gmail.com> */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002069static struct ir_scancode ir_codes_encore_enltv[] = {
Juan Pablo Sormanic36c4592006-12-27 12:46:36 -03002070
2071 /* Power button does nothing, neither in Windows app,
2072 although it sends data (used for BIOS wakeup?) */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002073 { 0x0d, KEY_MUTE },
Juan Pablo Sormanic36c4592006-12-27 12:46:36 -03002074
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002075 { 0x1e, KEY_TV },
2076 { 0x00, KEY_VIDEO },
2077 { 0x01, KEY_AUDIO }, /* music */
2078 { 0x02, KEY_MHP }, /* picture */
Juan Pablo Sormanic36c4592006-12-27 12:46:36 -03002079
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002080 { 0x1f, KEY_1 },
2081 { 0x03, KEY_2 },
2082 { 0x04, KEY_3 },
2083 { 0x05, KEY_4 },
2084 { 0x1c, KEY_5 },
2085 { 0x06, KEY_6 },
2086 { 0x07, KEY_7 },
2087 { 0x08, KEY_8 },
2088 { 0x1d, KEY_9 },
2089 { 0x0a, KEY_0 },
Juan Pablo Sormanic36c4592006-12-27 12:46:36 -03002090
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002091 { 0x09, KEY_LIST }, /* -/-- */
2092 { 0x0b, KEY_LAST }, /* recall */
Juan Pablo Sormanic36c4592006-12-27 12:46:36 -03002093
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002094 { 0x14, KEY_HOME }, /* win start menu */
2095 { 0x15, KEY_EXIT }, /* exit */
2096 { 0x16, KEY_CHANNELUP }, /* UP */
2097 { 0x12, KEY_CHANNELDOWN }, /* DOWN */
2098 { 0x0c, KEY_VOLUMEUP }, /* RIGHT */
2099 { 0x17, KEY_VOLUMEDOWN }, /* LEFT */
Juan Pablo Sormanic36c4592006-12-27 12:46:36 -03002100
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002101 { 0x18, KEY_ENTER }, /* OK */
Juan Pablo Sormanic36c4592006-12-27 12:46:36 -03002102
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002103 { 0x0e, KEY_ESC },
2104 { 0x13, KEY_CYCLEWINDOWS }, /* desktop */
2105 { 0x11, KEY_TAB },
2106 { 0x19, KEY_SWITCHVIDEOMODE }, /* switch */
Juan Pablo Sormanic36c4592006-12-27 12:46:36 -03002107
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002108 { 0x1a, KEY_MENU },
2109 { 0x1b, KEY_ZOOM }, /* fullscreen */
2110 { 0x44, KEY_TIME }, /* time shift */
2111 { 0x40, KEY_MODE }, /* source */
Juan Pablo Sormanic36c4592006-12-27 12:46:36 -03002112
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002113 { 0x5a, KEY_RECORD },
2114 { 0x42, KEY_PLAY }, /* play/pause */
2115 { 0x45, KEY_STOP },
2116 { 0x43, KEY_CAMERA }, /* camera icon */
Juan Pablo Sormanic36c4592006-12-27 12:46:36 -03002117
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002118 { 0x48, KEY_REWIND },
2119 { 0x4a, KEY_FASTFORWARD },
2120 { 0x49, KEY_PREVIOUS },
2121 { 0x4b, KEY_NEXT },
Juan Pablo Sormanic36c4592006-12-27 12:46:36 -03002122
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002123 { 0x4c, KEY_FAVORITES }, /* tv wall */
2124 { 0x4d, KEY_SOUND }, /* DVD sound */
2125 { 0x4e, KEY_LANGUAGE }, /* DVD lang */
2126 { 0x4f, KEY_TEXT }, /* DVD text */
Juan Pablo Sormanic36c4592006-12-27 12:46:36 -03002127
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002128 { 0x50, KEY_SLEEP }, /* shutdown */
2129 { 0x51, KEY_MODE }, /* stereo > main */
2130 { 0x52, KEY_SELECT }, /* stereo > sap */
2131 { 0x53, KEY_PROG1 }, /* teletext */
Juan Pablo Sormanic36c4592006-12-27 12:46:36 -03002132
2133
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002134 { 0x59, KEY_RED }, /* AP1 */
2135 { 0x41, KEY_GREEN }, /* AP2 */
2136 { 0x47, KEY_YELLOW }, /* AP3 */
2137 { 0x57, KEY_BLUE }, /* AP4 */
Juan Pablo Sormanic36c4592006-12-27 12:46:36 -03002138};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002139
2140struct ir_scancode_table ir_codes_encore_enltv_table = {
2141 .scan = ir_codes_encore_enltv,
2142 .size = ARRAY_SIZE(ir_codes_encore_enltv),
2143};
2144EXPORT_SYMBOL_GPL(ir_codes_encore_enltv_table);
Ville-Pekka Vainioae1942c2007-01-12 14:06:21 -03002145
Mauro Carvalho Chehab7d341a62008-08-05 10:14:13 -03002146/* Encore ENLTV2-FM - silver plastic - "Wand Media" written at the botton
2147 Mauro Carvalho Chehab <mchehab@infradead.org> */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002148static struct ir_scancode ir_codes_encore_enltv2[] = {
2149 { 0x4c, KEY_POWER2 },
2150 { 0x4a, KEY_TUNER },
2151 { 0x40, KEY_1 },
2152 { 0x60, KEY_2 },
2153 { 0x50, KEY_3 },
2154 { 0x70, KEY_4 },
2155 { 0x48, KEY_5 },
2156 { 0x68, KEY_6 },
2157 { 0x58, KEY_7 },
2158 { 0x78, KEY_8 },
2159 { 0x44, KEY_9 },
2160 { 0x54, KEY_0 },
Mauro Carvalho Chehab7d341a62008-08-05 10:14:13 -03002161
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002162 { 0x64, KEY_LAST }, /* +100 */
2163 { 0x4e, KEY_AGAIN }, /* Recall */
Mauro Carvalho Chehab7d341a62008-08-05 10:14:13 -03002164
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002165 { 0x6c, KEY_SWITCHVIDEOMODE }, /* Video Source */
2166 { 0x5e, KEY_MENU },
2167 { 0x56, KEY_SCREEN },
2168 { 0x7a, KEY_SETUP },
Mauro Carvalho Chehab7d341a62008-08-05 10:14:13 -03002169
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002170 { 0x46, KEY_MUTE },
2171 { 0x5c, KEY_MODE }, /* Stereo */
2172 { 0x74, KEY_INFO },
2173 { 0x7c, KEY_CLEAR },
Mauro Carvalho Chehab7d341a62008-08-05 10:14:13 -03002174
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002175 { 0x55, KEY_UP },
2176 { 0x49, KEY_DOWN },
2177 { 0x7e, KEY_LEFT },
2178 { 0x59, KEY_RIGHT },
2179 { 0x6a, KEY_ENTER },
Mauro Carvalho Chehab7d341a62008-08-05 10:14:13 -03002180
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002181 { 0x42, KEY_VOLUMEUP },
2182 { 0x62, KEY_VOLUMEDOWN },
2183 { 0x52, KEY_CHANNELUP },
2184 { 0x72, KEY_CHANNELDOWN },
Mauro Carvalho Chehab7d341a62008-08-05 10:14:13 -03002185
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002186 { 0x41, KEY_RECORD },
2187 { 0x51, KEY_CAMERA }, /* Snapshot */
2188 { 0x75, KEY_TIME }, /* Timeshift */
2189 { 0x71, KEY_TV2 }, /* PIP */
Mauro Carvalho Chehab7d341a62008-08-05 10:14:13 -03002190
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002191 { 0x45, KEY_REWIND },
2192 { 0x6f, KEY_PAUSE },
2193 { 0x7d, KEY_FORWARD },
2194 { 0x79, KEY_STOP },
Mauro Carvalho Chehab7d341a62008-08-05 10:14:13 -03002195};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002196
2197struct ir_scancode_table ir_codes_encore_enltv2_table = {
2198 .scan = ir_codes_encore_enltv2,
2199 .size = ARRAY_SIZE(ir_codes_encore_enltv2),
2200};
2201EXPORT_SYMBOL_GPL(ir_codes_encore_enltv2_table);
Mauro Carvalho Chehab7d341a62008-08-05 10:14:13 -03002202
Ville-Pekka Vainio28aedb82007-04-14 15:38:23 -03002203/* for the Technotrend 1500 bundled remotes (grey and black): */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002204static struct ir_scancode ir_codes_tt_1500[] = {
2205 { 0x01, KEY_POWER },
2206 { 0x02, KEY_SHUFFLE }, /* ? double-arrow key */
2207 { 0x03, KEY_1 },
2208 { 0x04, KEY_2 },
2209 { 0x05, KEY_3 },
2210 { 0x06, KEY_4 },
2211 { 0x07, KEY_5 },
2212 { 0x08, KEY_6 },
2213 { 0x09, KEY_7 },
2214 { 0x0a, KEY_8 },
2215 { 0x0b, KEY_9 },
2216 { 0x0c, KEY_0 },
2217 { 0x0d, KEY_UP },
2218 { 0x0e, KEY_LEFT },
2219 { 0x0f, KEY_OK },
2220 { 0x10, KEY_RIGHT },
2221 { 0x11, KEY_DOWN },
2222 { 0x12, KEY_INFO },
2223 { 0x13, KEY_EXIT },
2224 { 0x14, KEY_RED },
2225 { 0x15, KEY_GREEN },
2226 { 0x16, KEY_YELLOW },
2227 { 0x17, KEY_BLUE },
2228 { 0x18, KEY_MUTE },
2229 { 0x19, KEY_TEXT },
2230 { 0x1a, KEY_MODE }, /* ? TV/Radio */
2231 { 0x21, KEY_OPTION },
2232 { 0x22, KEY_EPG },
2233 { 0x23, KEY_CHANNELUP },
2234 { 0x24, KEY_CHANNELDOWN },
2235 { 0x25, KEY_VOLUMEUP },
2236 { 0x26, KEY_VOLUMEDOWN },
2237 { 0x27, KEY_SETUP },
2238 { 0x3a, KEY_RECORD }, /* these keys are only in the black remote */
2239 { 0x3b, KEY_PLAY },
2240 { 0x3c, KEY_STOP },
2241 { 0x3d, KEY_REWIND },
2242 { 0x3e, KEY_PAUSE },
2243 { 0x3f, KEY_FORWARD },
Ville-Pekka Vainioae1942c2007-01-12 14:06:21 -03002244};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002245
2246struct ir_scancode_table ir_codes_tt_1500_table = {
2247 .scan = ir_codes_tt_1500,
2248 .size = ARRAY_SIZE(ir_codes_tt_1500),
2249};
2250EXPORT_SYMBOL_GPL(ir_codes_tt_1500_table);
Chaogui Zhangd54d6982007-08-24 01:02:32 -03002251
Michael Krufky3c443582007-08-24 01:07:12 -03002252/* DViCO FUSION HDTV MCE remote */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002253static struct ir_scancode ir_codes_fusionhdtv_mce[] = {
Chaogui Zhangd54d6982007-08-24 01:02:32 -03002254
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002255 { 0x0b, KEY_1 },
2256 { 0x17, KEY_2 },
2257 { 0x1b, KEY_3 },
2258 { 0x07, KEY_4 },
2259 { 0x50, KEY_5 },
2260 { 0x54, KEY_6 },
2261 { 0x48, KEY_7 },
2262 { 0x4c, KEY_8 },
2263 { 0x58, KEY_9 },
2264 { 0x03, KEY_0 },
Chaogui Zhangd54d6982007-08-24 01:02:32 -03002265
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002266 { 0x5e, KEY_OK },
2267 { 0x51, KEY_UP },
2268 { 0x53, KEY_DOWN },
2269 { 0x5b, KEY_LEFT },
2270 { 0x5f, KEY_RIGHT },
Chaogui Zhangd54d6982007-08-24 01:02:32 -03002271
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002272 { 0x02, KEY_TV }, /* Labeled DTV on remote */
2273 { 0x0e, KEY_MP3 },
2274 { 0x1a, KEY_DVD },
2275 { 0x1e, KEY_FAVORITES }, /* Labeled CPF on remote */
2276 { 0x16, KEY_SETUP },
2277 { 0x46, KEY_POWER2 }, /* TV On/Off button on remote */
2278 { 0x0a, KEY_EPG }, /* Labeled Guide on remote */
Chaogui Zhangd54d6982007-08-24 01:02:32 -03002279
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002280 { 0x49, KEY_BACK },
2281 { 0x59, KEY_INFO }, /* Labeled MORE on remote */
2282 { 0x4d, KEY_MENU }, /* Labeled DVDMENU on remote */
2283 { 0x55, KEY_CYCLEWINDOWS }, /* Labeled ALT-TAB on remote */
Michael Krufky3c443582007-08-24 01:07:12 -03002284
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002285 { 0x0f, KEY_PREVIOUSSONG }, /* Labeled |<< REPLAY on remote */
2286 { 0x12, KEY_NEXTSONG }, /* Labeled >>| SKIP on remote */
2287 { 0x42, KEY_ENTER }, /* Labeled START with a green
Mauro Carvalho Chehab5d353642009-08-27 09:50:21 -03002288 MS windows logo on remote */
Chaogui Zhangd54d6982007-08-24 01:02:32 -03002289
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002290 { 0x15, KEY_VOLUMEUP },
2291 { 0x05, KEY_VOLUMEDOWN },
2292 { 0x11, KEY_CHANNELUP },
2293 { 0x09, KEY_CHANNELDOWN },
Chaogui Zhangd54d6982007-08-24 01:02:32 -03002294
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002295 { 0x52, KEY_CAMERA },
2296 { 0x5a, KEY_TUNER },
2297 { 0x19, KEY_OPEN },
Chaogui Zhangd54d6982007-08-24 01:02:32 -03002298
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002299 { 0x13, KEY_MODE }, /* 4:3 16:9 select */
2300 { 0x1f, KEY_ZOOM },
Chaogui Zhangd54d6982007-08-24 01:02:32 -03002301
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002302 { 0x43, KEY_REWIND },
2303 { 0x47, KEY_PLAYPAUSE },
2304 { 0x4f, KEY_FASTFORWARD },
2305 { 0x57, KEY_MUTE },
2306 { 0x0d, KEY_STOP },
2307 { 0x01, KEY_RECORD },
2308 { 0x4e, KEY_POWER },
Chaogui Zhangd54d6982007-08-24 01:02:32 -03002309};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002310
2311struct ir_scancode_table ir_codes_fusionhdtv_mce_table = {
2312 .scan = ir_codes_fusionhdtv_mce,
2313 .size = ARRAY_SIZE(ir_codes_fusionhdtv_mce),
2314};
2315EXPORT_SYMBOL_GPL(ir_codes_fusionhdtv_mce_table);
Andrey J. Melnikoff (TEMHOTA)e8018c92008-01-07 05:17:39 -03002316
Steven Toth91211062008-01-22 01:00:33 -03002317/* Pinnacle PCTV HD 800i mini remote */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002318static struct ir_scancode ir_codes_pinnacle_pctv_hd[] = {
Steven Toth91211062008-01-22 01:00:33 -03002319
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002320 { 0x0f, KEY_1 },
2321 { 0x15, KEY_2 },
2322 { 0x10, KEY_3 },
2323 { 0x18, KEY_4 },
2324 { 0x1b, KEY_5 },
2325 { 0x1e, KEY_6 },
2326 { 0x11, KEY_7 },
2327 { 0x21, KEY_8 },
2328 { 0x12, KEY_9 },
2329 { 0x27, KEY_0 },
Steven Toth91211062008-01-22 01:00:33 -03002330
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002331 { 0x24, KEY_ZOOM },
2332 { 0x2a, KEY_SUBTITLE },
Steven Toth91211062008-01-22 01:00:33 -03002333
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002334 { 0x00, KEY_MUTE },
2335 { 0x01, KEY_ENTER }, /* Pinnacle Logo */
2336 { 0x39, KEY_POWER },
Steven Toth91211062008-01-22 01:00:33 -03002337
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002338 { 0x03, KEY_VOLUMEUP },
2339 { 0x09, KEY_VOLUMEDOWN },
2340 { 0x06, KEY_CHANNELUP },
2341 { 0x0c, KEY_CHANNELDOWN },
Steven Toth91211062008-01-22 01:00:33 -03002342
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002343 { 0x2d, KEY_REWIND },
2344 { 0x30, KEY_PLAYPAUSE },
2345 { 0x33, KEY_FASTFORWARD },
2346 { 0x3c, KEY_STOP },
2347 { 0x36, KEY_RECORD },
2348 { 0x3f, KEY_EPG }, /* Labeled "?" */
Steven Toth91211062008-01-22 01:00:33 -03002349};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002350
2351struct ir_scancode_table ir_codes_pinnacle_pctv_hd_table = {
2352 .scan = ir_codes_pinnacle_pctv_hd,
2353 .size = ARRAY_SIZE(ir_codes_pinnacle_pctv_hd),
2354};
2355EXPORT_SYMBOL_GPL(ir_codes_pinnacle_pctv_hd_table);
Steven Toth91211062008-01-22 01:00:33 -03002356
Andrey J. Melnikoff (TEMHOTA)e8018c92008-01-07 05:17:39 -03002357/*
2358 * Igor Kuznetsov <igk72@ya.ru>
2359 * Andrey J. Melnikov <temnota@kmv.ru>
2360 *
2361 * Keytable is used by BeholdTV 60x series, M6 series at
2362 * least, and probably other cards too.
2363 * The "ascii-art picture" below (in comments, first row
2364 * is the keycode in hex, and subsequent row(s) shows
2365 * the button labels (several variants when appropriate)
2366 * helps to descide which keycodes to assign to the buttons.
2367 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002368static struct ir_scancode ir_codes_behold[] = {
Andrey J. Melnikoff (TEMHOTA)e8018c92008-01-07 05:17:39 -03002369
2370 /* 0x1c 0x12 *
2371 * TV/FM POWER *
2372 * */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002373 { 0x1c, KEY_TUNER }, /* XXX KEY_TV / KEY_RADIO */
2374 { 0x12, KEY_POWER },
Andrey J. Melnikoff (TEMHOTA)e8018c92008-01-07 05:17:39 -03002375
2376 /* 0x01 0x02 0x03 *
2377 * 1 2 3 *
2378 * *
2379 * 0x04 0x05 0x06 *
2380 * 4 5 6 *
2381 * *
2382 * 0x07 0x08 0x09 *
2383 * 7 8 9 *
2384 * */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002385 { 0x01, KEY_1 },
2386 { 0x02, KEY_2 },
2387 { 0x03, KEY_3 },
2388 { 0x04, KEY_4 },
2389 { 0x05, KEY_5 },
2390 { 0x06, KEY_6 },
2391 { 0x07, KEY_7 },
2392 { 0x08, KEY_8 },
2393 { 0x09, KEY_9 },
Andrey J. Melnikoff (TEMHOTA)e8018c92008-01-07 05:17:39 -03002394
2395 /* 0x0a 0x00 0x17 *
2396 * RECALL 0 MODE *
2397 * */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002398 { 0x0a, KEY_AGAIN },
2399 { 0x00, KEY_0 },
2400 { 0x17, KEY_MODE },
Andrey J. Melnikoff (TEMHOTA)e8018c92008-01-07 05:17:39 -03002401
2402 /* 0x14 0x10 *
2403 * ASPECT FULLSCREEN *
2404 * */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002405 { 0x14, KEY_SCREEN },
2406 { 0x10, KEY_ZOOM },
Andrey J. Melnikoff (TEMHOTA)e8018c92008-01-07 05:17:39 -03002407
2408 /* 0x0b *
2409 * Up *
2410 * *
2411 * 0x18 0x16 0x0c *
2412 * Left Ok Right *
2413 * *
2414 * 0x015 *
2415 * Down *
2416 * */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002417 { 0x0b, KEY_CHANNELUP },
2418 { 0x18, KEY_VOLUMEDOWN },
2419 { 0x16, KEY_OK }, /* XXX KEY_ENTER */
2420 { 0x0c, KEY_VOLUMEUP },
2421 { 0x15, KEY_CHANNELDOWN },
Andrey J. Melnikoff (TEMHOTA)e8018c92008-01-07 05:17:39 -03002422
2423 /* 0x11 0x0d *
2424 * MUTE INFO *
2425 * */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002426 { 0x11, KEY_MUTE },
2427 { 0x0d, KEY_INFO },
Andrey J. Melnikoff (TEMHOTA)e8018c92008-01-07 05:17:39 -03002428
2429 /* 0x0f 0x1b 0x1a *
2430 * RECORD PLAY/PAUSE STOP *
2431 * *
2432 * 0x0e 0x1f 0x1e *
2433 *TELETEXT AUDIO SOURCE *
2434 * RED YELLOW *
2435 * */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002436 { 0x0f, KEY_RECORD },
2437 { 0x1b, KEY_PLAYPAUSE },
2438 { 0x1a, KEY_STOP },
2439 { 0x0e, KEY_TEXT },
2440 { 0x1f, KEY_RED }, /*XXX KEY_AUDIO */
2441 { 0x1e, KEY_YELLOW }, /*XXX KEY_SOURCE */
Andrey J. Melnikoff (TEMHOTA)e8018c92008-01-07 05:17:39 -03002442
2443 /* 0x1d 0x13 0x19 *
2444 * SLEEP PREVIEW DVB *
2445 * GREEN BLUE *
2446 * */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002447 { 0x1d, KEY_SLEEP },
2448 { 0x13, KEY_GREEN },
2449 { 0x19, KEY_BLUE }, /* XXX KEY_SAT */
Andrey J. Melnikoff (TEMHOTA)e8018c92008-01-07 05:17:39 -03002450
2451 /* 0x58 0x5c *
2452 * FREEZE SNAPSHOT *
2453 * */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002454 { 0x58, KEY_SLOW },
2455 { 0x5c, KEY_CAMERA },
Andrey J. Melnikoff (TEMHOTA)e8018c92008-01-07 05:17:39 -03002456
2457};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002458
2459struct ir_scancode_table ir_codes_behold_table = {
2460 .scan = ir_codes_behold,
2461 .size = ARRAY_SIZE(ir_codes_behold),
2462};
2463EXPORT_SYMBOL_GPL(ir_codes_behold_table);
Adrian Pardinif0ba3562008-02-11 12:40:53 -03002464
Dmitry Belimovb34dddb2008-04-23 14:09:08 -03002465/* Beholder Intl. Ltd. 2008
2466 * Dmitry Belimov d.belimov@google.com
2467 * Keytable is used by BeholdTV Columbus
2468 * The "ascii-art picture" below (in comments, first row
2469 * is the keycode in hex, and subsequent row(s) shows
2470 * the button labels (several variants when appropriate)
2471 * helps to descide which keycodes to assign to the buttons.
2472 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002473static struct ir_scancode ir_codes_behold_columbus[] = {
Dmitry Belimovb34dddb2008-04-23 14:09:08 -03002474
2475 /* 0x13 0x11 0x1C 0x12 *
2476 * Mute Source TV/FM Power *
2477 * */
2478
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002479 { 0x13, KEY_MUTE },
2480 { 0x11, KEY_PROPS },
2481 { 0x1C, KEY_TUNER }, /* KEY_TV/KEY_RADIO */
2482 { 0x12, KEY_POWER },
Dmitry Belimovb34dddb2008-04-23 14:09:08 -03002483
2484 /* 0x01 0x02 0x03 0x0D *
2485 * 1 2 3 Stereo *
2486 * *
2487 * 0x04 0x05 0x06 0x19 *
2488 * 4 5 6 Snapshot *
2489 * *
2490 * 0x07 0x08 0x09 0x10 *
2491 * 7 8 9 Zoom *
2492 * */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002493 { 0x01, KEY_1 },
2494 { 0x02, KEY_2 },
2495 { 0x03, KEY_3 },
2496 { 0x0D, KEY_SETUP }, /* Setup key */
2497 { 0x04, KEY_4 },
2498 { 0x05, KEY_5 },
2499 { 0x06, KEY_6 },
2500 { 0x19, KEY_CAMERA }, /* Snapshot key */
2501 { 0x07, KEY_7 },
2502 { 0x08, KEY_8 },
2503 { 0x09, KEY_9 },
2504 { 0x10, KEY_ZOOM },
Dmitry Belimovb34dddb2008-04-23 14:09:08 -03002505
2506 /* 0x0A 0x00 0x0B 0x0C *
2507 * RECALL 0 ChannelUp VolumeUp *
2508 * */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002509 { 0x0A, KEY_AGAIN },
2510 { 0x00, KEY_0 },
2511 { 0x0B, KEY_CHANNELUP },
2512 { 0x0C, KEY_VOLUMEUP },
Dmitry Belimovb34dddb2008-04-23 14:09:08 -03002513
2514 /* 0x1B 0x1D 0x15 0x18 *
2515 * Timeshift Record ChannelDown VolumeDown *
2516 * */
2517
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002518 { 0x1B, KEY_TIME },
2519 { 0x1D, KEY_RECORD },
2520 { 0x15, KEY_CHANNELDOWN },
2521 { 0x18, KEY_VOLUMEDOWN },
Dmitry Belimovb34dddb2008-04-23 14:09:08 -03002522
2523 /* 0x0E 0x1E 0x0F 0x1A *
2524 * Stop Pause Previouse Next *
2525 * */
2526
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002527 { 0x0E, KEY_STOP },
2528 { 0x1E, KEY_PAUSE },
2529 { 0x0F, KEY_PREVIOUS },
2530 { 0x1A, KEY_NEXT },
Dmitry Belimovb34dddb2008-04-23 14:09:08 -03002531
2532};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002533
2534struct ir_scancode_table ir_codes_behold_columbus_table = {
2535 .scan = ir_codes_behold_columbus,
2536 .size = ARRAY_SIZE(ir_codes_behold_columbus),
2537};
2538EXPORT_SYMBOL_GPL(ir_codes_behold_columbus_table);
Dmitry Belimovb34dddb2008-04-23 14:09:08 -03002539
Adrian Pardinif0ba3562008-02-11 12:40:53 -03002540/*
2541 * Remote control for the Genius TVGO A11MCE
2542 * Adrian Pardini <pardo.bsso@gmail.com>
2543 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002544static struct ir_scancode ir_codes_genius_tvgo_a11mce[] = {
Adrian Pardinif0ba3562008-02-11 12:40:53 -03002545 /* Keys 0 to 9 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002546 { 0x48, KEY_0 },
2547 { 0x09, KEY_1 },
2548 { 0x1d, KEY_2 },
2549 { 0x1f, KEY_3 },
2550 { 0x19, KEY_4 },
2551 { 0x1b, KEY_5 },
2552 { 0x11, KEY_6 },
2553 { 0x17, KEY_7 },
2554 { 0x12, KEY_8 },
2555 { 0x16, KEY_9 },
Adrian Pardinif0ba3562008-02-11 12:40:53 -03002556
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002557 { 0x54, KEY_RECORD }, /* recording */
2558 { 0x06, KEY_MUTE }, /* mute */
2559 { 0x10, KEY_POWER },
2560 { 0x40, KEY_LAST }, /* recall */
2561 { 0x4c, KEY_CHANNELUP }, /* channel / program + */
2562 { 0x00, KEY_CHANNELDOWN }, /* channel / program - */
2563 { 0x0d, KEY_VOLUMEUP },
2564 { 0x15, KEY_VOLUMEDOWN },
2565 { 0x4d, KEY_OK }, /* also labeled as Pause */
2566 { 0x1c, KEY_ZOOM }, /* full screen and Stop*/
2567 { 0x02, KEY_MODE }, /* AV Source or Rewind*/
2568 { 0x04, KEY_LIST }, /* -/-- */
Adrian Pardinif0ba3562008-02-11 12:40:53 -03002569 /* small arrows above numbers */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002570 { 0x1a, KEY_NEXT }, /* also Fast Forward */
2571 { 0x0e, KEY_PREVIOUS }, /* also Rewind */
Adrian Pardinif0ba3562008-02-11 12:40:53 -03002572 /* these are in a rather non standard layout and have
2573 an alternate name written */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002574 { 0x1e, KEY_UP }, /* Video Setting */
2575 { 0x0a, KEY_DOWN }, /* Video Default */
2576 { 0x05, KEY_CAMERA }, /* Snapshot */
2577 { 0x0c, KEY_RIGHT }, /* Hide Panel */
Adrian Pardinif0ba3562008-02-11 12:40:53 -03002578 /* Four buttons without label */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002579 { 0x49, KEY_RED },
2580 { 0x0b, KEY_GREEN },
2581 { 0x13, KEY_YELLOW },
2582 { 0x50, KEY_BLUE },
Adrian Pardinif0ba3562008-02-11 12:40:53 -03002583};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002584
2585struct ir_scancode_table ir_codes_genius_tvgo_a11mce_table = {
2586 .scan = ir_codes_genius_tvgo_a11mce,
2587 .size = ARRAY_SIZE(ir_codes_genius_tvgo_a11mce),
2588};
2589EXPORT_SYMBOL_GPL(ir_codes_genius_tvgo_a11mce_table);
Dâniel Fragaba928032008-04-08 19:56:44 -03002590
2591/*
2592 * Remote control for Powercolor Real Angel 330
2593 * Daniel Fraga <fragabr@gmail.com>
2594 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002595static struct ir_scancode ir_codes_powercolor_real_angel[] = {
2596 { 0x38, KEY_SWITCHVIDEOMODE }, /* switch inputs */
2597 { 0x0c, KEY_MEDIA }, /* Turn ON/OFF App */
2598 { 0x00, KEY_0 },
2599 { 0x01, KEY_1 },
2600 { 0x02, KEY_2 },
2601 { 0x03, KEY_3 },
2602 { 0x04, KEY_4 },
2603 { 0x05, KEY_5 },
2604 { 0x06, KEY_6 },
2605 { 0x07, KEY_7 },
2606 { 0x08, KEY_8 },
2607 { 0x09, KEY_9 },
2608 { 0x0a, KEY_DIGITS }, /* single, double, tripple digit */
2609 { 0x29, KEY_PREVIOUS }, /* previous channel */
2610 { 0x12, KEY_BRIGHTNESSUP },
2611 { 0x13, KEY_BRIGHTNESSDOWN },
2612 { 0x2b, KEY_MODE }, /* stereo/mono */
2613 { 0x2c, KEY_TEXT }, /* teletext */
2614 { 0x20, KEY_CHANNELUP }, /* channel up */
2615 { 0x21, KEY_CHANNELDOWN }, /* channel down */
2616 { 0x10, KEY_VOLUMEUP }, /* volume up */
2617 { 0x11, KEY_VOLUMEDOWN }, /* volume down */
2618 { 0x0d, KEY_MUTE },
2619 { 0x1f, KEY_RECORD },
2620 { 0x17, KEY_PLAY },
2621 { 0x16, KEY_PAUSE },
2622 { 0x0b, KEY_STOP },
2623 { 0x27, KEY_FASTFORWARD },
2624 { 0x26, KEY_REWIND },
2625 { 0x1e, KEY_SEARCH }, /* autoscan */
2626 { 0x0e, KEY_CAMERA }, /* snapshot */
2627 { 0x2d, KEY_SETUP },
2628 { 0x0f, KEY_SCREEN }, /* full screen */
2629 { 0x14, KEY_RADIO }, /* FM radio */
2630 { 0x25, KEY_POWER }, /* power */
Dâniel Fragaba928032008-04-08 19:56:44 -03002631};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002632
2633struct ir_scancode_table ir_codes_powercolor_real_angel_table = {
2634 .scan = ir_codes_powercolor_real_angel,
2635 .size = ARRAY_SIZE(ir_codes_powercolor_real_angel),
2636};
2637EXPORT_SYMBOL_GPL(ir_codes_powercolor_real_angel_table);
Tim Farrington6e501a32008-06-15 13:33:42 -03002638
Mauro Carvalho Chehab26d5f3a2008-12-07 13:19:29 -03002639/* Kworld Plus TV Analog Lite PCI IR
2640 Mauro Carvalho Chehab <mchehab@infradead.org>
2641 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002642static struct ir_scancode ir_codes_kworld_plus_tv_analog[] = {
2643 { 0x0c, KEY_PROG1 }, /* Kworld key */
2644 { 0x16, KEY_CLOSECD }, /* -> ) */
2645 { 0x1d, KEY_POWER2 },
Mauro Carvalho Chehab26d5f3a2008-12-07 13:19:29 -03002646
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002647 { 0x00, KEY_1 },
2648 { 0x01, KEY_2 },
2649 { 0x02, KEY_3 }, /* Two keys have the same code: 3 and left */
2650 { 0x03, KEY_4 }, /* Two keys have the same code: 3 and right */
2651 { 0x04, KEY_5 },
2652 { 0x05, KEY_6 },
2653 { 0x06, KEY_7 },
2654 { 0x07, KEY_8 },
2655 { 0x08, KEY_9 },
2656 { 0x0a, KEY_0 },
Mauro Carvalho Chehab26d5f3a2008-12-07 13:19:29 -03002657
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002658 { 0x09, KEY_AGAIN },
2659 { 0x14, KEY_MUTE },
Mauro Carvalho Chehab26d5f3a2008-12-07 13:19:29 -03002660
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002661 { 0x20, KEY_UP },
2662 { 0x21, KEY_DOWN },
2663 { 0x0b, KEY_ENTER },
Mauro Carvalho Chehab26d5f3a2008-12-07 13:19:29 -03002664
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002665 { 0x10, KEY_CHANNELUP },
2666 { 0x11, KEY_CHANNELDOWN },
Mauro Carvalho Chehab26d5f3a2008-12-07 13:19:29 -03002667
2668 /* Couldn't map key left/key right since those
2669 conflict with '3' and '4' scancodes
2670 I dunno what the original driver does
2671 */
2672
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002673 { 0x13, KEY_VOLUMEUP },
2674 { 0x12, KEY_VOLUMEDOWN },
Mauro Carvalho Chehab26d5f3a2008-12-07 13:19:29 -03002675
2676 /* The lower part of the IR
2677 There are several duplicated keycodes there.
2678 Most of them conflict with digits.
2679 Add mappings just to the unused scancodes.
2680 Somehow, the original driver has a way to know,
2681 but this doesn't seem to be on some GPIO.
2682 Also, it is not related to the time between keyup
2683 and keydown.
2684 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002685 { 0x19, KEY_TIME}, /* Timeshift */
2686 { 0x1a, KEY_STOP},
2687 { 0x1b, KEY_RECORD},
Mauro Carvalho Chehab26d5f3a2008-12-07 13:19:29 -03002688
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002689 { 0x22, KEY_TEXT},
Mauro Carvalho Chehab26d5f3a2008-12-07 13:19:29 -03002690
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002691 { 0x15, KEY_AUDIO}, /* ((*)) */
2692 { 0x0f, KEY_ZOOM},
2693 { 0x1c, KEY_CAMERA}, /* snapshot */
Mauro Carvalho Chehab26d5f3a2008-12-07 13:19:29 -03002694
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002695 { 0x18, KEY_RED}, /* B */
2696 { 0x23, KEY_GREEN}, /* C */
Mauro Carvalho Chehab26d5f3a2008-12-07 13:19:29 -03002697};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002698struct ir_scancode_table ir_codes_kworld_plus_tv_analog_table = {
2699 .scan = ir_codes_kworld_plus_tv_analog,
2700 .size = ARRAY_SIZE(ir_codes_kworld_plus_tv_analog),
2701};
2702EXPORT_SYMBOL_GPL(ir_codes_kworld_plus_tv_analog_table);
Mauro Carvalho Chehab26d5f3a2008-12-07 13:19:29 -03002703
Mauro Carvalho Chehab9fc2c5e2009-02-11 14:15:14 -03002704/* Kaiomy TVnPC U2
2705 Mauro Carvalho Chehab <mchehab@infradead.org>
2706 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002707static struct ir_scancode ir_codes_kaiomy[] = {
2708 { 0x43, KEY_POWER2},
2709 { 0x01, KEY_LIST},
2710 { 0x0b, KEY_ZOOM},
2711 { 0x03, KEY_POWER},
Mauro Carvalho Chehab9fc2c5e2009-02-11 14:15:14 -03002712
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002713 { 0x04, KEY_1},
2714 { 0x08, KEY_2},
2715 { 0x02, KEY_3},
Mauro Carvalho Chehab9fc2c5e2009-02-11 14:15:14 -03002716
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002717 { 0x0f, KEY_4},
2718 { 0x05, KEY_5},
2719 { 0x06, KEY_6},
Mauro Carvalho Chehab9fc2c5e2009-02-11 14:15:14 -03002720
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002721 { 0x0c, KEY_7},
2722 { 0x0d, KEY_8},
2723 { 0x0a, KEY_9},
Mauro Carvalho Chehab9fc2c5e2009-02-11 14:15:14 -03002724
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002725 { 0x11, KEY_0},
Mauro Carvalho Chehab9fc2c5e2009-02-11 14:15:14 -03002726
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002727 { 0x09, KEY_CHANNELUP},
2728 { 0x07, KEY_CHANNELDOWN},
Mauro Carvalho Chehab9fc2c5e2009-02-11 14:15:14 -03002729
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002730 { 0x0e, KEY_VOLUMEUP},
2731 { 0x13, KEY_VOLUMEDOWN},
Mauro Carvalho Chehab9fc2c5e2009-02-11 14:15:14 -03002732
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002733 { 0x10, KEY_HOME},
2734 { 0x12, KEY_ENTER},
Mauro Carvalho Chehab9fc2c5e2009-02-11 14:15:14 -03002735
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002736 { 0x14, KEY_RECORD},
2737 { 0x15, KEY_STOP},
2738 { 0x16, KEY_PLAY},
2739 { 0x17, KEY_MUTE},
Mauro Carvalho Chehab9fc2c5e2009-02-11 14:15:14 -03002740
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002741 { 0x18, KEY_UP},
2742 { 0x19, KEY_DOWN},
2743 { 0x1a, KEY_LEFT},
2744 { 0x1b, KEY_RIGHT},
Mauro Carvalho Chehab9fc2c5e2009-02-11 14:15:14 -03002745
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002746 { 0x1c, KEY_RED},
2747 { 0x1d, KEY_GREEN},
2748 { 0x1e, KEY_YELLOW},
2749 { 0x1f, KEY_BLUE},
Mauro Carvalho Chehab9fc2c5e2009-02-11 14:15:14 -03002750};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002751struct ir_scancode_table ir_codes_kaiomy_table = {
2752 .scan = ir_codes_kaiomy,
2753 .size = ARRAY_SIZE(ir_codes_kaiomy),
Tim Farrington6e501a32008-06-15 13:33:42 -03002754};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002755EXPORT_SYMBOL_GPL(ir_codes_kaiomy_table);
2756
2757static struct ir_scancode ir_codes_avermedia_a16d[] = {
2758 { 0x20, KEY_LIST},
2759 { 0x00, KEY_POWER},
2760 { 0x28, KEY_1},
2761 { 0x18, KEY_2},
2762 { 0x38, KEY_3},
2763 { 0x24, KEY_4},
2764 { 0x14, KEY_5},
2765 { 0x34, KEY_6},
2766 { 0x2c, KEY_7},
2767 { 0x1c, KEY_8},
2768 { 0x3c, KEY_9},
2769 { 0x12, KEY_SUBTITLE},
2770 { 0x22, KEY_0},
2771 { 0x32, KEY_REWIND},
2772 { 0x3a, KEY_SHUFFLE},
2773 { 0x02, KEY_PRINT},
2774 { 0x11, KEY_CHANNELDOWN},
2775 { 0x31, KEY_CHANNELUP},
2776 { 0x0c, KEY_ZOOM},
2777 { 0x1e, KEY_VOLUMEDOWN},
2778 { 0x3e, KEY_VOLUMEUP},
2779 { 0x0a, KEY_MUTE},
2780 { 0x04, KEY_AUDIO},
2781 { 0x26, KEY_RECORD},
2782 { 0x06, KEY_PLAY},
2783 { 0x36, KEY_STOP},
2784 { 0x16, KEY_PAUSE},
2785 { 0x2e, KEY_REWIND},
2786 { 0x0e, KEY_FASTFORWARD},
2787 { 0x30, KEY_TEXT},
2788 { 0x21, KEY_GREEN},
2789 { 0x01, KEY_BLUE},
2790 { 0x08, KEY_EPG},
2791 { 0x2a, KEY_MENU},
2792};
2793struct ir_scancode_table ir_codes_avermedia_a16d_table = {
2794 .scan = ir_codes_avermedia_a16d,
2795 .size = ARRAY_SIZE(ir_codes_avermedia_a16d),
2796};
2797EXPORT_SYMBOL_GPL(ir_codes_avermedia_a16d_table);
Mauro Carvalho Chehabbf1ece62008-06-26 17:03:00 -03002798
2799/* Encore ENLTV-FM v5.3
2800 Mauro Carvalho Chehab <mchehab@infradead.org>
2801 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002802static struct ir_scancode ir_codes_encore_enltv_fm53[] = {
2803 { 0x10, KEY_POWER2},
2804 { 0x06, KEY_MUTE},
Mauro Carvalho Chehabbf1ece62008-06-26 17:03:00 -03002805
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002806 { 0x09, KEY_1},
2807 { 0x1d, KEY_2},
2808 { 0x1f, KEY_3},
2809 { 0x19, KEY_4},
2810 { 0x1b, KEY_5},
2811 { 0x11, KEY_6},
2812 { 0x17, KEY_7},
2813 { 0x12, KEY_8},
2814 { 0x16, KEY_9},
2815 { 0x48, KEY_0},
Mauro Carvalho Chehabbf1ece62008-06-26 17:03:00 -03002816
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002817 { 0x04, KEY_LIST}, /* -/-- */
2818 { 0x40, KEY_LAST}, /* recall */
Mauro Carvalho Chehabbf1ece62008-06-26 17:03:00 -03002819
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002820 { 0x02, KEY_MODE}, /* TV/AV */
2821 { 0x05, KEY_CAMERA}, /* SNAPSHOT */
Mauro Carvalho Chehabbf1ece62008-06-26 17:03:00 -03002822
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002823 { 0x4c, KEY_CHANNELUP}, /* UP */
2824 { 0x00, KEY_CHANNELDOWN}, /* DOWN */
2825 { 0x0d, KEY_VOLUMEUP}, /* RIGHT */
2826 { 0x15, KEY_VOLUMEDOWN}, /* LEFT */
2827 { 0x49, KEY_ENTER}, /* OK */
Mauro Carvalho Chehabbf1ece62008-06-26 17:03:00 -03002828
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002829 { 0x54, KEY_RECORD},
2830 { 0x4d, KEY_PLAY}, /* pause */
Mauro Carvalho Chehabbf1ece62008-06-26 17:03:00 -03002831
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002832 { 0x1e, KEY_MENU}, /* video setting */
2833 { 0x0e, KEY_RIGHT}, /* <- */
2834 { 0x1a, KEY_LEFT}, /* -> */
Mauro Carvalho Chehabbf1ece62008-06-26 17:03:00 -03002835
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002836 { 0x0a, KEY_CLEAR}, /* video default */
2837 { 0x0c, KEY_ZOOM}, /* hide pannel */
2838 { 0x47, KEY_SLEEP}, /* shutdown */
Mauro Carvalho Chehabbf1ece62008-06-26 17:03:00 -03002839};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002840struct ir_scancode_table ir_codes_encore_enltv_fm53_table = {
2841 .scan = ir_codes_encore_enltv_fm53,
2842 .size = ARRAY_SIZE(ir_codes_encore_enltv_fm53),
2843};
2844EXPORT_SYMBOL_GPL(ir_codes_encore_enltv_fm53_table);
Mauro Carvalho Chehab9b000192008-06-26 17:03:00 -03002845
2846/* Zogis Real Audio 220 - 32 keys IR */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002847static struct ir_scancode ir_codes_real_audio_220_32_keys[] = {
2848 { 0x1c, KEY_RADIO},
2849 { 0x12, KEY_POWER2},
Mauro Carvalho Chehab9b000192008-06-26 17:03:00 -03002850
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002851 { 0x01, KEY_1},
2852 { 0x02, KEY_2},
2853 { 0x03, KEY_3},
2854 { 0x04, KEY_4},
2855 { 0x05, KEY_5},
2856 { 0x06, KEY_6},
2857 { 0x07, KEY_7},
2858 { 0x08, KEY_8},
2859 { 0x09, KEY_9},
2860 { 0x00, KEY_0},
Mauro Carvalho Chehab9b000192008-06-26 17:03:00 -03002861
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002862 { 0x0c, KEY_VOLUMEUP},
2863 { 0x18, KEY_VOLUMEDOWN},
2864 { 0x0b, KEY_CHANNELUP},
2865 { 0x15, KEY_CHANNELDOWN},
2866 { 0x16, KEY_ENTER},
Mauro Carvalho Chehab9b000192008-06-26 17:03:00 -03002867
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002868 { 0x11, KEY_LIST}, /* Source */
2869 { 0x0d, KEY_AUDIO}, /* stereo */
Mauro Carvalho Chehab9b000192008-06-26 17:03:00 -03002870
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002871 { 0x0f, KEY_PREVIOUS}, /* Prev */
2872 { 0x1b, KEY_TIME}, /* Timeshift */
2873 { 0x1a, KEY_NEXT}, /* Next */
Mauro Carvalho Chehab9b000192008-06-26 17:03:00 -03002874
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002875 { 0x0e, KEY_STOP},
2876 { 0x1f, KEY_PLAY},
2877 { 0x1e, KEY_PLAYPAUSE}, /* Pause */
Mauro Carvalho Chehab9b000192008-06-26 17:03:00 -03002878
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002879 { 0x1d, KEY_RECORD},
2880 { 0x13, KEY_MUTE},
2881 { 0x19, KEY_CAMERA}, /* Snapshot */
Mauro Carvalho Chehab9b000192008-06-26 17:03:00 -03002882
2883};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002884struct ir_scancode_table ir_codes_real_audio_220_32_keys_table = {
2885 .scan = ir_codes_real_audio_220_32_keys,
2886 .size = ARRAY_SIZE(ir_codes_real_audio_220_32_keys),
2887};
2888EXPORT_SYMBOL_GPL(ir_codes_real_audio_220_32_keys_table);
Devin Heitmueller60245e82008-11-16 08:03:53 -03002889
2890/* ATI TV Wonder HD 600 USB
2891 Devin Heitmueller <devin.heitmueller@gmail.com>
2892 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002893static struct ir_scancode ir_codes_ati_tv_wonder_hd_600[] = {
2894 { 0x00, KEY_RECORD}, /* Row 1 */
2895 { 0x01, KEY_PLAYPAUSE},
2896 { 0x02, KEY_STOP},
2897 { 0x03, KEY_POWER},
2898 { 0x04, KEY_PREVIOUS}, /* Row 2 */
2899 { 0x05, KEY_REWIND},
2900 { 0x06, KEY_FORWARD},
2901 { 0x07, KEY_NEXT},
2902 { 0x08, KEY_EPG}, /* Row 3 */
2903 { 0x09, KEY_HOME},
2904 { 0x0a, KEY_MENU},
2905 { 0x0b, KEY_CHANNELUP},
2906 { 0x0c, KEY_BACK}, /* Row 4 */
2907 { 0x0d, KEY_UP},
2908 { 0x0e, KEY_INFO},
2909 { 0x0f, KEY_CHANNELDOWN},
2910 { 0x10, KEY_LEFT}, /* Row 5 */
2911 { 0x11, KEY_SELECT},
2912 { 0x12, KEY_RIGHT},
2913 { 0x13, KEY_VOLUMEUP},
2914 { 0x14, KEY_LAST}, /* Row 6 */
2915 { 0x15, KEY_DOWN},
2916 { 0x16, KEY_MUTE},
2917 { 0x17, KEY_VOLUMEDOWN},
Devin Heitmueller60245e82008-11-16 08:03:53 -03002918};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002919struct ir_scancode_table ir_codes_ati_tv_wonder_hd_600_table = {
2920 .scan = ir_codes_ati_tv_wonder_hd_600,
2921 .size = ARRAY_SIZE(ir_codes_ati_tv_wonder_hd_600),
2922};
2923EXPORT_SYMBOL_GPL(ir_codes_ati_tv_wonder_hd_600_table);
Igor M. Liplianinb72857d2009-02-26 03:49:44 -03002924
2925/* DVBWorld remotes
2926 Igor M. Liplianin <liplianin@me.by>
2927 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002928static struct ir_scancode ir_codes_dm1105_nec[] = {
2929 { 0x0a, KEY_POWER2}, /* power */
2930 { 0x0c, KEY_MUTE}, /* mute */
2931 { 0x11, KEY_1},
2932 { 0x12, KEY_2},
2933 { 0x13, KEY_3},
2934 { 0x14, KEY_4},
2935 { 0x15, KEY_5},
2936 { 0x16, KEY_6},
2937 { 0x17, KEY_7},
2938 { 0x18, KEY_8},
2939 { 0x19, KEY_9},
2940 { 0x10, KEY_0},
2941 { 0x1c, KEY_CHANNELUP}, /* ch+ */
2942 { 0x0f, KEY_CHANNELDOWN}, /* ch- */
2943 { 0x1a, KEY_VOLUMEUP}, /* vol+ */
2944 { 0x0e, KEY_VOLUMEDOWN}, /* vol- */
2945 { 0x04, KEY_RECORD}, /* rec */
2946 { 0x09, KEY_CHANNEL}, /* fav */
2947 { 0x08, KEY_BACKSPACE}, /* rewind */
2948 { 0x07, KEY_FASTFORWARD}, /* fast */
2949 { 0x0b, KEY_PAUSE}, /* pause */
2950 { 0x02, KEY_ESC}, /* cancel */
2951 { 0x03, KEY_TAB}, /* tab */
2952 { 0x00, KEY_UP}, /* up */
2953 { 0x1f, KEY_ENTER}, /* ok */
2954 { 0x01, KEY_DOWN}, /* down */
2955 { 0x05, KEY_RECORD}, /* cap */
2956 { 0x06, KEY_STOP}, /* stop */
2957 { 0x40, KEY_ZOOM}, /* full */
2958 { 0x1e, KEY_TV}, /* tvmode */
2959 { 0x1b, KEY_B}, /* recall */
Igor M. Liplianinb72857d2009-02-26 03:49:44 -03002960};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002961struct ir_scancode_table ir_codes_dm1105_nec_table = {
2962 .scan = ir_codes_dm1105_nec,
2963 .size = ARRAY_SIZE(ir_codes_dm1105_nec),
2964};
2965EXPORT_SYMBOL_GPL(ir_codes_dm1105_nec_table);
Devin Heitmueller8cd9aae2009-08-03 23:56:51 -03002966
2967/* Terratec Cinergy Hybrid T USB XS
2968 Devin Heitmueller <dheitmueller@linuxtv.org>
2969 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002970static struct ir_scancode ir_codes_terratec_cinergy_xs[] = {
2971 { 0x41, KEY_HOME},
2972 { 0x01, KEY_POWER},
2973 { 0x42, KEY_MENU},
2974 { 0x02, KEY_1},
2975 { 0x03, KEY_2},
2976 { 0x04, KEY_3},
2977 { 0x43, KEY_SUBTITLE},
2978 { 0x05, KEY_4},
2979 { 0x06, KEY_5},
2980 { 0x07, KEY_6},
2981 { 0x44, KEY_TEXT},
2982 { 0x08, KEY_7},
2983 { 0x09, KEY_8},
2984 { 0x0a, KEY_9},
2985 { 0x45, KEY_DELETE},
2986 { 0x0b, KEY_TUNER},
2987 { 0x0c, KEY_0},
2988 { 0x0d, KEY_MODE},
2989 { 0x46, KEY_TV},
2990 { 0x47, KEY_DVD},
2991 { 0x49, KEY_VIDEO},
2992 { 0x4b, KEY_AUX},
2993 { 0x10, KEY_UP},
2994 { 0x11, KEY_LEFT},
2995 { 0x12, KEY_OK},
2996 { 0x13, KEY_RIGHT},
2997 { 0x14, KEY_DOWN},
2998 { 0x0f, KEY_EPG},
2999 { 0x16, KEY_INFO},
3000 { 0x4d, KEY_BACKSPACE},
3001 { 0x1c, KEY_VOLUMEUP},
3002 { 0x4c, KEY_PLAY},
3003 { 0x1b, KEY_CHANNELUP},
3004 { 0x1e, KEY_VOLUMEDOWN},
3005 { 0x1d, KEY_MUTE},
3006 { 0x1f, KEY_CHANNELDOWN},
3007 { 0x17, KEY_RED},
3008 { 0x18, KEY_GREEN},
3009 { 0x19, KEY_YELLOW},
3010 { 0x1a, KEY_BLUE},
3011 { 0x58, KEY_RECORD},
3012 { 0x48, KEY_STOP},
3013 { 0x40, KEY_PAUSE},
3014 { 0x54, KEY_LAST},
3015 { 0x4e, KEY_REWIND},
3016 { 0x4f, KEY_FASTFORWARD},
3017 { 0x5c, KEY_NEXT},
Devin Heitmueller8cd9aae2009-08-03 23:56:51 -03003018};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03003019struct ir_scancode_table ir_codes_terratec_cinergy_xs_table = {
3020 .scan = ir_codes_terratec_cinergy_xs,
3021 .size = ARRAY_SIZE(ir_codes_terratec_cinergy_xs),
3022};
3023EXPORT_SYMBOL_GPL(ir_codes_terratec_cinergy_xs_table);
Devin Heitmueller8cd9aae2009-08-03 23:56:51 -03003024
Devin Heitmuellera4c47302009-06-20 21:34:42 -03003025/* EVGA inDtube
3026 Devin Heitmueller <devin.heitmueller@gmail.com>
3027 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03003028static struct ir_scancode ir_codes_evga_indtube[] = {
3029 { 0x12, KEY_POWER},
3030 { 0x02, KEY_MODE}, /* TV */
3031 { 0x14, KEY_MUTE},
3032 { 0x1a, KEY_CHANNELUP},
3033 { 0x16, KEY_TV2}, /* PIP */
3034 { 0x1d, KEY_VOLUMEUP},
3035 { 0x05, KEY_CHANNELDOWN},
3036 { 0x0f, KEY_PLAYPAUSE},
3037 { 0x19, KEY_VOLUMEDOWN},
3038 { 0x1c, KEY_REWIND},
3039 { 0x0d, KEY_RECORD},
3040 { 0x18, KEY_FORWARD},
3041 { 0x1e, KEY_PREVIOUS},
3042 { 0x1b, KEY_STOP},
3043 { 0x1f, KEY_NEXT},
3044 { 0x13, KEY_CAMERA},
Devin Heitmuellera4c47302009-06-20 21:34:42 -03003045};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03003046struct ir_scancode_table ir_codes_evga_indtube_table = {
3047 .scan = ir_codes_evga_indtube,
3048 .size = ARRAY_SIZE(ir_codes_evga_indtube),
Igor M. Liplianinecfcfec2009-08-13 21:42:21 -03003049};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03003050EXPORT_SYMBOL_GPL(ir_codes_evga_indtube_table);
Mauro Carvalho Chehab6d888a62009-08-30 13:05:56 -03003051
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03003052static struct ir_scancode ir_codes_videomate_s350[] = {
3053 { 0x00, KEY_TV},
3054 { 0x01, KEY_DVD},
3055 { 0x04, KEY_RECORD},
3056 { 0x05, KEY_VIDEO}, /* TV/Video */
3057 { 0x07, KEY_STOP},
3058 { 0x08, KEY_PLAYPAUSE},
3059 { 0x0a, KEY_REWIND},
3060 { 0x0f, KEY_FASTFORWARD},
3061 { 0x10, KEY_CHANNELUP},
3062 { 0x12, KEY_VOLUMEUP},
3063 { 0x13, KEY_CHANNELDOWN},
3064 { 0x14, KEY_MUTE},
3065 { 0x15, KEY_VOLUMEDOWN},
3066 { 0x16, KEY_1},
3067 { 0x17, KEY_2},
3068 { 0x18, KEY_3},
3069 { 0x19, KEY_4},
3070 { 0x1a, KEY_5},
3071 { 0x1b, KEY_6},
3072 { 0x1c, KEY_7},
3073 { 0x1d, KEY_8},
3074 { 0x1e, KEY_9},
3075 { 0x1f, KEY_0},
3076 { 0x21, KEY_SLEEP},
3077 { 0x24, KEY_ZOOM},
3078 { 0x25, KEY_LAST}, /* Recall */
3079 { 0x26, KEY_SUBTITLE}, /* CC */
3080 { 0x27, KEY_LANGUAGE}, /* MTS */
3081 { 0x29, KEY_CHANNEL}, /* SURF */
3082 { 0x2b, KEY_A},
3083 { 0x2c, KEY_B},
3084 { 0x2f, KEY_CAMERA}, /* Snapshot */
3085 { 0x23, KEY_RADIO},
3086 { 0x02, KEY_PREVIOUSSONG},
3087 { 0x06, KEY_NEXTSONG},
3088 { 0x03, KEY_EPG},
3089 { 0x09, KEY_SETUP},
3090 { 0x22, KEY_BACKSPACE},
3091 { 0x0c, KEY_UP},
3092 { 0x0e, KEY_DOWN},
3093 { 0x0b, KEY_LEFT},
3094 { 0x0d, KEY_RIGHT},
3095 { 0x11, KEY_ENTER},
3096 { 0x20, KEY_TEXT},
3097};
3098struct ir_scancode_table ir_codes_videomate_s350_table = {
3099 .scan = ir_codes_videomate_s350,
3100 .size = ARRAY_SIZE(ir_codes_videomate_s350),
3101};
3102EXPORT_SYMBOL_GPL(ir_codes_videomate_s350_table);
Mauro Carvalho Chehab6d888a62009-08-30 13:05:56 -03003103
3104/* GADMEI UTV330+ RM008Z remote
3105 Shine Liu <shinel@foxmail.com>
3106 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03003107static struct ir_scancode ir_codes_gadmei_rm008z[] = {
3108 { 0x14, KEY_POWER2}, /* POWER OFF */
3109 { 0x0c, KEY_MUTE}, /* MUTE */
Mauro Carvalho Chehab6d888a62009-08-30 13:05:56 -03003110
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03003111 { 0x18, KEY_TV}, /* TV */
3112 { 0x0e, KEY_VIDEO}, /* AV */
3113 { 0x0b, KEY_AUDIO}, /* SV */
3114 { 0x0f, KEY_RADIO}, /* FM */
Mauro Carvalho Chehab6d888a62009-08-30 13:05:56 -03003115
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03003116 { 0x00, KEY_1},
3117 { 0x01, KEY_2},
3118 { 0x02, KEY_3},
3119 { 0x03, KEY_4},
3120 { 0x04, KEY_5},
3121 { 0x05, KEY_6},
3122 { 0x06, KEY_7},
3123 { 0x07, KEY_8},
3124 { 0x08, KEY_9},
3125 { 0x09, KEY_0},
3126 { 0x0a, KEY_INFO}, /* OSD */
3127 { 0x1c, KEY_BACKSPACE}, /* LAST */
Mauro Carvalho Chehab6d888a62009-08-30 13:05:56 -03003128
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03003129 { 0x0d, KEY_PLAY}, /* PLAY */
3130 { 0x1e, KEY_CAMERA}, /* SNAPSHOT */
3131 { 0x1a, KEY_RECORD}, /* RECORD */
3132 { 0x17, KEY_STOP}, /* STOP */
Mauro Carvalho Chehab6d888a62009-08-30 13:05:56 -03003133
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03003134 { 0x1f, KEY_UP}, /* UP */
3135 { 0x44, KEY_DOWN}, /* DOWN */
3136 { 0x46, KEY_TAB}, /* BACK */
3137 { 0x4a, KEY_ZOOM}, /* FULLSECREEN */
Mauro Carvalho Chehab6d888a62009-08-30 13:05:56 -03003138
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03003139 { 0x10, KEY_VOLUMEUP}, /* VOLUMEUP */
3140 { 0x11, KEY_VOLUMEDOWN}, /* VOLUMEDOWN */
3141 { 0x12, KEY_CHANNELUP}, /* CHANNELUP */
3142 { 0x13, KEY_CHANNELDOWN}, /* CHANNELDOWN */
3143 { 0x15, KEY_ENTER}, /* OK */
Mauro Carvalho Chehab6d888a62009-08-30 13:05:56 -03003144};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03003145struct ir_scancode_table ir_codes_gadmei_rm008z_table = {
3146 .scan = ir_codes_gadmei_rm008z,
3147 .size = ARRAY_SIZE(ir_codes_gadmei_rm008z),
3148};
3149EXPORT_SYMBOL_GPL(ir_codes_gadmei_rm008z_table);