blob: 328c973a083833536ee016fc80ebb4d1bc128eb7 [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
Michael Obst0700ade2009-10-31 14:05:42 -03001708 { 0x1a, KEY_MODE}, /* change to MCE mode on Y04G0051 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001709 { 0x3e, KEY_F21 }, /* MCE +VOL, on Y04G0033 */
1710 { 0x3a, KEY_F22 }, /* MCE -VOL, on Y04G0033 */
1711 { 0x3b, KEY_F23 }, /* MCE +CH, on Y04G0033 */
1712 { 0x3f, KEY_F24 } /* MCE -CH, on Y04G0033 */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001713};
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001714
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001715struct ir_scancode_table ir_codes_winfast_table = {
1716 .scan = ir_codes_winfast,
1717 .size = ARRAY_SIZE(ir_codes_winfast),
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001718};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001719EXPORT_SYMBOL_GPL(ir_codes_winfast_table);
1720
1721static struct ir_scancode ir_codes_pinnacle_color[] = {
1722 { 0x59, KEY_MUTE },
1723 { 0x4a, KEY_POWER },
1724
1725 { 0x18, KEY_TEXT },
1726 { 0x26, KEY_TV },
1727 { 0x3d, KEY_PRINT },
1728
1729 { 0x48, KEY_RED },
1730 { 0x04, KEY_GREEN },
1731 { 0x11, KEY_YELLOW },
1732 { 0x00, KEY_BLUE },
1733
1734 { 0x2d, KEY_VOLUMEUP },
1735 { 0x1e, KEY_VOLUMEDOWN },
1736
1737 { 0x49, KEY_MENU },
1738
1739 { 0x16, KEY_CHANNELUP },
1740 { 0x17, KEY_CHANNELDOWN },
1741
1742 { 0x20, KEY_UP },
1743 { 0x21, KEY_DOWN },
1744 { 0x22, KEY_LEFT },
1745 { 0x23, KEY_RIGHT },
1746 { 0x0d, KEY_SELECT },
1747
1748 { 0x08, KEY_BACK },
1749 { 0x07, KEY_REFRESH },
1750
1751 { 0x2f, KEY_ZOOM },
1752 { 0x29, KEY_RECORD },
1753
1754 { 0x4b, KEY_PAUSE },
1755 { 0x4d, KEY_REWIND },
1756 { 0x2e, KEY_PLAY },
1757 { 0x4e, KEY_FORWARD },
1758 { 0x53, KEY_PREVIOUS },
1759 { 0x4c, KEY_STOP },
1760 { 0x54, KEY_NEXT },
1761
1762 { 0x69, KEY_0 },
1763 { 0x6a, KEY_1 },
1764 { 0x6b, KEY_2 },
1765 { 0x6c, KEY_3 },
1766 { 0x6d, KEY_4 },
1767 { 0x6e, KEY_5 },
1768 { 0x6f, KEY_6 },
1769 { 0x70, KEY_7 },
1770 { 0x71, KEY_8 },
1771 { 0x72, KEY_9 },
1772
1773 { 0x74, KEY_CHANNEL },
1774 { 0x0a, KEY_BACKSPACE },
1775};
1776
1777struct ir_scancode_table ir_codes_pinnacle_color_table = {
1778 .scan = ir_codes_pinnacle_color,
1779 .size = ARRAY_SIZE(ir_codes_pinnacle_color),
1780};
1781EXPORT_SYMBOL_GPL(ir_codes_pinnacle_color_table);
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001782
1783/* Hauppauge: the newer, gray remotes (seems there are multiple
1784 * slightly different versions), shipped with cx88+ivtv cards.
1785 * almost rc5 coding, but some non-standard keys */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001786static struct ir_scancode ir_codes_hauppauge_new[] = {
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001787 /* Keys 0 to 9 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001788 { 0x00, KEY_0 },
1789 { 0x01, KEY_1 },
1790 { 0x02, KEY_2 },
1791 { 0x03, KEY_3 },
1792 { 0x04, KEY_4 },
1793 { 0x05, KEY_5 },
1794 { 0x06, KEY_6 },
1795 { 0x07, KEY_7 },
1796 { 0x08, KEY_8 },
1797 { 0x09, KEY_9 },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001798
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001799 { 0x0a, KEY_TEXT }, /* keypad asterisk as well */
1800 { 0x0b, KEY_RED }, /* red button */
1801 { 0x0c, KEY_RADIO },
1802 { 0x0d, KEY_MENU },
1803 { 0x0e, KEY_SUBTITLE }, /* also the # key */
1804 { 0x0f, KEY_MUTE },
1805 { 0x10, KEY_VOLUMEUP },
1806 { 0x11, KEY_VOLUMEDOWN },
1807 { 0x12, KEY_PREVIOUS }, /* previous channel */
1808 { 0x14, KEY_UP },
1809 { 0x15, KEY_DOWN },
1810 { 0x16, KEY_LEFT },
1811 { 0x17, KEY_RIGHT },
1812 { 0x18, KEY_VIDEO }, /* Videos */
1813 { 0x19, KEY_AUDIO }, /* Music */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001814 /* 0x1a: Pictures - presume this means
1815 "Multimedia Home Platform" -
1816 no "PICTURES" key in input.h
1817 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001818 { 0x1a, KEY_MHP },
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001819
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001820 { 0x1b, KEY_EPG }, /* Guide */
1821 { 0x1c, KEY_TV },
1822 { 0x1e, KEY_NEXTSONG }, /* skip >| */
1823 { 0x1f, KEY_EXIT }, /* back/exit */
1824 { 0x20, KEY_CHANNELUP }, /* channel / program + */
1825 { 0x21, KEY_CHANNELDOWN }, /* channel / program - */
1826 { 0x22, KEY_CHANNEL }, /* source (old black remote) */
1827 { 0x24, KEY_PREVIOUSSONG }, /* replay |< */
1828 { 0x25, KEY_ENTER }, /* OK */
1829 { 0x26, KEY_SLEEP }, /* minimize (old black remote) */
1830 { 0x29, KEY_BLUE }, /* blue key */
1831 { 0x2e, KEY_GREEN }, /* green button */
1832 { 0x30, KEY_PAUSE }, /* pause */
1833 { 0x32, KEY_REWIND }, /* backward << */
1834 { 0x34, KEY_FASTFORWARD }, /* forward >> */
1835 { 0x35, KEY_PLAY },
1836 { 0x36, KEY_STOP },
1837 { 0x37, KEY_RECORD }, /* recording */
1838 { 0x38, KEY_YELLOW }, /* yellow key */
1839 { 0x3b, KEY_SELECT }, /* top right button */
1840 { 0x3c, KEY_ZOOM }, /* full */
1841 { 0x3d, KEY_POWER }, /* system power (green button) */
Ricardo Cerqueira4c0f6312006-01-23 09:42:06 -02001842};
Ricardo Cerqueira680543c2006-05-22 07:44:02 -03001843
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001844struct ir_scancode_table ir_codes_hauppauge_new_table = {
1845 .scan = ir_codes_hauppauge_new,
1846 .size = ARRAY_SIZE(ir_codes_hauppauge_new),
1847};
1848EXPORT_SYMBOL_GPL(ir_codes_hauppauge_new_table);
Ricardo Cerqueira680543c2006-05-22 07:44:02 -03001849
Mauro Carvalho Chehab35d19882009-11-27 23:25:13 -03001850/*
1851 * Hauppauge:the newer, gray remotes (seems there are multiple
1852 * slightly different versions), shipped with cx88+ivtv cards.
1853 *
1854 * This table contains the complete RC5 code, instead of just the data part
1855 */
1856static struct ir_scancode ir_codes_rc5_hauppauge_new[] = {
1857 /* Keys 0 to 9 */
1858 { 0x1e00, KEY_0 },
1859 { 0x1e01, KEY_1 },
1860 { 0x1e02, KEY_2 },
1861 { 0x1e03, KEY_3 },
1862 { 0x1e04, KEY_4 },
1863 { 0x1e05, KEY_5 },
1864 { 0x1e06, KEY_6 },
1865 { 0x1e07, KEY_7 },
1866 { 0x1e08, KEY_8 },
1867 { 0x1e09, KEY_9 },
1868
1869 { 0x1e0a, KEY_TEXT }, /* keypad asterisk as well */
1870 { 0x1e0b, KEY_RED }, /* red button */
1871 { 0x1e0c, KEY_RADIO },
1872 { 0x1e0d, KEY_MENU },
1873 { 0x1e0e, KEY_SUBTITLE }, /* also the # key */
1874 { 0x1e0f, KEY_MUTE },
1875 { 0x1e10, KEY_VOLUMEUP },
1876 { 0x1e11, KEY_VOLUMEDOWN },
1877 { 0x1e12, KEY_PREVIOUS }, /* previous channel */
1878 { 0x1e14, KEY_UP },
1879 { 0x1e15, KEY_DOWN },
1880 { 0x1e16, KEY_LEFT },
1881 { 0x1e17, KEY_RIGHT },
1882 { 0x1e18, KEY_VIDEO }, /* Videos */
1883 { 0x1e19, KEY_AUDIO }, /* Music */
1884 /* 0x1e1a: Pictures - presume this means
1885 "Multimedia Home Platform" -
1886 no "PICTURES" key in input.h
1887 */
1888 { 0x1e1a, KEY_MHP },
1889
1890 { 0x1e1b, KEY_EPG }, /* Guide */
1891 { 0x1e1c, KEY_TV },
1892 { 0x1e1e, KEY_NEXTSONG }, /* skip >| */
1893 { 0x1e1f, KEY_EXIT }, /* back/exit */
1894 { 0x1e20, KEY_CHANNELUP }, /* channel / program + */
1895 { 0x1e21, KEY_CHANNELDOWN }, /* channel / program - */
1896 { 0x1e22, KEY_CHANNEL }, /* source (old black remote) */
1897 { 0x1e24, KEY_PREVIOUSSONG }, /* replay |< */
1898 { 0x1e25, KEY_ENTER }, /* OK */
1899 { 0x1e26, KEY_SLEEP }, /* minimize (old black remote) */
1900 { 0x1e29, KEY_BLUE }, /* blue key */
1901 { 0x1e2e, KEY_GREEN }, /* green button */
1902 { 0x1e30, KEY_PAUSE }, /* pause */
1903 { 0x1e32, KEY_REWIND }, /* backward << */
1904 { 0x1e34, KEY_FASTFORWARD }, /* forward >> */
1905 { 0x1e35, KEY_PLAY },
1906 { 0x1e36, KEY_STOP },
1907 { 0x1e37, KEY_RECORD }, /* recording */
1908 { 0x1e38, KEY_YELLOW }, /* yellow key */
1909 { 0x1e3b, KEY_SELECT }, /* top right button */
1910 { 0x1e3c, KEY_ZOOM }, /* full */
1911 { 0x1e3d, KEY_POWER }, /* system power (green button) */
1912};
1913
1914struct ir_scancode_table ir_codes_rc5_hauppauge_new_table = {
1915 .scan = ir_codes_rc5_hauppauge_new,
1916 .size = ARRAY_SIZE(ir_codes_rc5_hauppauge_new),
1917};
1918EXPORT_SYMBOL_GPL(ir_codes_rc5_hauppauge_new_table);
1919
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001920static struct ir_scancode ir_codes_npgtech[] = {
1921 { 0x1d, KEY_SWITCHVIDEOMODE }, /* switch inputs */
1922 { 0x2a, KEY_FRONT },
Ricardo Cerqueira680543c2006-05-22 07:44:02 -03001923
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001924 { 0x3e, KEY_1 },
1925 { 0x02, KEY_2 },
1926 { 0x06, KEY_3 },
1927 { 0x0a, KEY_4 },
1928 { 0x0e, KEY_5 },
1929 { 0x12, KEY_6 },
1930 { 0x16, KEY_7 },
1931 { 0x1a, KEY_8 },
1932 { 0x1e, KEY_9 },
1933 { 0x3a, KEY_0 },
1934 { 0x22, KEY_NUMLOCK }, /* -/-- */
1935 { 0x20, KEY_REFRESH },
Ricardo Cerqueira680543c2006-05-22 07:44:02 -03001936
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001937 { 0x03, KEY_BRIGHTNESSDOWN },
1938 { 0x28, KEY_AUDIO },
1939 { 0x3c, KEY_CHANNELUP },
1940 { 0x3f, KEY_VOLUMEDOWN },
1941 { 0x2e, KEY_MUTE },
1942 { 0x3b, KEY_VOLUMEUP },
1943 { 0x00, KEY_CHANNELDOWN },
1944 { 0x07, KEY_BRIGHTNESSUP },
1945 { 0x2c, KEY_TEXT },
1946
1947 { 0x37, KEY_RECORD },
1948 { 0x17, KEY_PLAY },
1949 { 0x13, KEY_PAUSE },
1950 { 0x26, KEY_STOP },
1951 { 0x18, KEY_FASTFORWARD },
1952 { 0x14, KEY_REWIND },
1953 { 0x33, KEY_ZOOM },
1954 { 0x32, KEY_KEYBOARD },
1955 { 0x30, KEY_GOTO }, /* Pointing arrow */
1956 { 0x36, KEY_MACRO }, /* Maximize/Minimize (yellow) */
1957 { 0x0b, KEY_RADIO },
1958 { 0x10, KEY_POWER },
Ricardo Cerqueira680543c2006-05-22 07:44:02 -03001959
1960};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001961
1962struct ir_scancode_table ir_codes_npgtech_table = {
1963 .scan = ir_codes_npgtech,
1964 .size = ARRAY_SIZE(ir_codes_npgtech),
1965};
1966EXPORT_SYMBOL_GPL(ir_codes_npgtech_table);
Peter Naullsd1009bd2006-08-08 09:10:05 -03001967
1968/* Norwood Micro (non-Pro) TV Tuner
1969 By Peter Naulls <peter@chocky.org>
1970 Key comments are the functions given in the manual */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001971static struct ir_scancode ir_codes_norwood[] = {
Peter Naullsd1009bd2006-08-08 09:10:05 -03001972 /* Keys 0 to 9 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001973 { 0x20, KEY_0 },
1974 { 0x21, KEY_1 },
1975 { 0x22, KEY_2 },
1976 { 0x23, KEY_3 },
1977 { 0x24, KEY_4 },
1978 { 0x25, KEY_5 },
1979 { 0x26, KEY_6 },
1980 { 0x27, KEY_7 },
1981 { 0x28, KEY_8 },
1982 { 0x29, KEY_9 },
Peter Naullsd1009bd2006-08-08 09:10:05 -03001983
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001984 { 0x78, KEY_TUNER }, /* Video Source */
1985 { 0x2c, KEY_EXIT }, /* Open/Close software */
1986 { 0x2a, KEY_SELECT }, /* 2 Digit Select */
1987 { 0x69, KEY_AGAIN }, /* Recall */
Peter Naullsd1009bd2006-08-08 09:10:05 -03001988
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001989 { 0x32, KEY_BRIGHTNESSUP }, /* Brightness increase */
1990 { 0x33, KEY_BRIGHTNESSDOWN }, /* Brightness decrease */
1991 { 0x6b, KEY_KPPLUS }, /* (not named >>>>>) */
1992 { 0x6c, KEY_KPMINUS }, /* (not named <<<<<) */
Peter Naullsd1009bd2006-08-08 09:10:05 -03001993
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03001994 { 0x2d, KEY_MUTE }, /* Mute */
1995 { 0x30, KEY_VOLUMEUP }, /* Volume up */
1996 { 0x31, KEY_VOLUMEDOWN }, /* Volume down */
1997 { 0x60, KEY_CHANNELUP }, /* Channel up */
1998 { 0x61, KEY_CHANNELDOWN }, /* Channel down */
Peter Naullsd1009bd2006-08-08 09:10:05 -03001999
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002000 { 0x3f, KEY_RECORD }, /* Record */
2001 { 0x37, KEY_PLAY }, /* Play */
2002 { 0x36, KEY_PAUSE }, /* Pause */
2003 { 0x2b, KEY_STOP }, /* Stop */
2004 { 0x67, KEY_FASTFORWARD }, /* Foward */
2005 { 0x66, KEY_REWIND }, /* Rewind */
2006 { 0x3e, KEY_SEARCH }, /* Auto Scan */
2007 { 0x2e, KEY_CAMERA }, /* Capture Video */
2008 { 0x6d, KEY_MENU }, /* Show/Hide Control */
2009 { 0x2f, KEY_ZOOM }, /* Full Screen */
2010 { 0x34, KEY_RADIO }, /* FM */
2011 { 0x65, KEY_POWER }, /* Computer power */
Peter Naullsd1009bd2006-08-08 09:10:05 -03002012};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002013
2014struct ir_scancode_table ir_codes_norwood_table = {
2015 .scan = ir_codes_norwood,
2016 .size = ARRAY_SIZE(ir_codes_norwood),
2017};
2018EXPORT_SYMBOL_GPL(ir_codes_norwood_table);
David Hardeman2520fff2006-12-02 21:16:05 -02002019
2020/* From reading the following remotes:
2021 * Zenith Universal 7 / TV Mode 807 / VCR Mode 837
2022 * Hauppauge (from NOVA-CI-s box product)
2023 * This is a "middle of the road" approach, differences are noted
2024 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002025static struct ir_scancode ir_codes_budget_ci_old[] = {
2026 { 0x00, KEY_0 },
2027 { 0x01, KEY_1 },
2028 { 0x02, KEY_2 },
2029 { 0x03, KEY_3 },
2030 { 0x04, KEY_4 },
2031 { 0x05, KEY_5 },
2032 { 0x06, KEY_6 },
2033 { 0x07, KEY_7 },
2034 { 0x08, KEY_8 },
2035 { 0x09, KEY_9 },
2036 { 0x0a, KEY_ENTER },
2037 { 0x0b, KEY_RED },
2038 { 0x0c, KEY_POWER }, /* RADIO on Hauppauge */
2039 { 0x0d, KEY_MUTE },
2040 { 0x0f, KEY_A }, /* TV on Hauppauge */
2041 { 0x10, KEY_VOLUMEUP },
2042 { 0x11, KEY_VOLUMEDOWN },
2043 { 0x14, KEY_B },
2044 { 0x1c, KEY_UP },
2045 { 0x1d, KEY_DOWN },
2046 { 0x1e, KEY_OPTION }, /* RESERVED on Hauppauge */
2047 { 0x1f, KEY_BREAK },
2048 { 0x20, KEY_CHANNELUP },
2049 { 0x21, KEY_CHANNELDOWN },
2050 { 0x22, KEY_PREVIOUS }, /* Prev Ch on Zenith, SOURCE on Hauppauge */
2051 { 0x24, KEY_RESTART },
2052 { 0x25, KEY_OK },
2053 { 0x26, KEY_CYCLEWINDOWS }, /* MINIMIZE on Hauppauge */
2054 { 0x28, KEY_ENTER }, /* VCR mode on Zenith */
2055 { 0x29, KEY_PAUSE },
2056 { 0x2b, KEY_RIGHT },
2057 { 0x2c, KEY_LEFT },
2058 { 0x2e, KEY_MENU }, /* FULL SCREEN on Hauppauge */
2059 { 0x30, KEY_SLOW },
2060 { 0x31, KEY_PREVIOUS }, /* VCR mode on Zenith */
2061 { 0x32, KEY_REWIND },
2062 { 0x34, KEY_FASTFORWARD },
2063 { 0x35, KEY_PLAY },
2064 { 0x36, KEY_STOP },
2065 { 0x37, KEY_RECORD },
2066 { 0x38, KEY_TUNER }, /* TV/VCR on Zenith */
2067 { 0x3a, KEY_C },
2068 { 0x3c, KEY_EXIT },
2069 { 0x3d, KEY_POWER2 },
2070 { 0x3e, KEY_TUNER },
David Hardeman2520fff2006-12-02 21:16:05 -02002071};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002072
2073struct ir_scancode_table ir_codes_budget_ci_old_table = {
2074 .scan = ir_codes_budget_ci_old,
2075 .size = ARRAY_SIZE(ir_codes_budget_ci_old),
2076};
2077EXPORT_SYMBOL_GPL(ir_codes_budget_ci_old_table);
Hermann Pitton91607232006-12-07 21:45:28 -03002078
2079/*
2080 * Marc Fargas <telenieko@telenieko.com>
2081 * this is the remote control that comes with the asus p7131
2082 * which has a label saying is "Model PC-39"
2083 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002084static struct ir_scancode ir_codes_asus_pc39[] = {
Hermann Pitton91607232006-12-07 21:45:28 -03002085 /* Keys 0 to 9 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002086 { 0x15, KEY_0 },
2087 { 0x29, KEY_1 },
2088 { 0x2d, KEY_2 },
2089 { 0x2b, KEY_3 },
2090 { 0x09, KEY_4 },
2091 { 0x0d, KEY_5 },
2092 { 0x0b, KEY_6 },
2093 { 0x31, KEY_7 },
2094 { 0x35, KEY_8 },
2095 { 0x33, KEY_9 },
Hermann Pitton91607232006-12-07 21:45:28 -03002096
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002097 { 0x3e, KEY_RADIO }, /* radio */
2098 { 0x03, KEY_MENU }, /* dvd/menu */
2099 { 0x2a, KEY_VOLUMEUP },
2100 { 0x19, KEY_VOLUMEDOWN },
2101 { 0x37, KEY_UP },
2102 { 0x3b, KEY_DOWN },
2103 { 0x27, KEY_LEFT },
2104 { 0x2f, KEY_RIGHT },
2105 { 0x25, KEY_VIDEO }, /* video */
2106 { 0x39, KEY_AUDIO }, /* music */
Hermann Pitton91607232006-12-07 21:45:28 -03002107
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002108 { 0x21, KEY_TV }, /* tv */
2109 { 0x1d, KEY_EXIT }, /* back */
2110 { 0x0a, KEY_CHANNELUP }, /* channel / program + */
2111 { 0x1b, KEY_CHANNELDOWN }, /* channel / program - */
2112 { 0x1a, KEY_ENTER }, /* enter */
Hermann Pitton91607232006-12-07 21:45:28 -03002113
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002114 { 0x06, KEY_PAUSE }, /* play/pause */
2115 { 0x1e, KEY_PREVIOUS }, /* rew */
2116 { 0x26, KEY_NEXT }, /* forward */
2117 { 0x0e, KEY_REWIND }, /* backward << */
2118 { 0x3a, KEY_FASTFORWARD }, /* forward >> */
2119 { 0x36, KEY_STOP },
2120 { 0x2e, KEY_RECORD }, /* recording */
2121 { 0x16, KEY_POWER }, /* the button that reads "close" */
Hermann Pitton91607232006-12-07 21:45:28 -03002122
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002123 { 0x11, KEY_ZOOM }, /* full screen */
2124 { 0x13, KEY_MACRO }, /* recall */
2125 { 0x23, KEY_HOME }, /* home */
2126 { 0x05, KEY_PVR }, /* picture */
2127 { 0x3d, KEY_MUTE }, /* mute */
2128 { 0x01, KEY_DVD }, /* dvd */
Hermann Pitton91607232006-12-07 21:45:28 -03002129};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002130
2131struct ir_scancode_table ir_codes_asus_pc39_table = {
2132 .scan = ir_codes_asus_pc39,
2133 .size = ARRAY_SIZE(ir_codes_asus_pc39),
2134};
2135EXPORT_SYMBOL_GPL(ir_codes_asus_pc39_table);
Juan Pablo Sormanic36c4592006-12-27 12:46:36 -03002136
2137
2138/* Encore ENLTV-FM - black plastic, white front cover with white glowing buttons
2139 Juan Pablo Sormani <sorman@gmail.com> */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002140static struct ir_scancode ir_codes_encore_enltv[] = {
Juan Pablo Sormanic36c4592006-12-27 12:46:36 -03002141
2142 /* Power button does nothing, neither in Windows app,
2143 although it sends data (used for BIOS wakeup?) */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002144 { 0x0d, KEY_MUTE },
Juan Pablo Sormanic36c4592006-12-27 12:46:36 -03002145
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002146 { 0x1e, KEY_TV },
2147 { 0x00, KEY_VIDEO },
2148 { 0x01, KEY_AUDIO }, /* music */
2149 { 0x02, KEY_MHP }, /* picture */
Juan Pablo Sormanic36c4592006-12-27 12:46:36 -03002150
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002151 { 0x1f, KEY_1 },
2152 { 0x03, KEY_2 },
2153 { 0x04, KEY_3 },
2154 { 0x05, KEY_4 },
2155 { 0x1c, KEY_5 },
2156 { 0x06, KEY_6 },
2157 { 0x07, KEY_7 },
2158 { 0x08, KEY_8 },
2159 { 0x1d, KEY_9 },
2160 { 0x0a, KEY_0 },
Juan Pablo Sormanic36c4592006-12-27 12:46:36 -03002161
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002162 { 0x09, KEY_LIST }, /* -/-- */
2163 { 0x0b, KEY_LAST }, /* recall */
Juan Pablo Sormanic36c4592006-12-27 12:46:36 -03002164
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002165 { 0x14, KEY_HOME }, /* win start menu */
2166 { 0x15, KEY_EXIT }, /* exit */
2167 { 0x16, KEY_CHANNELUP }, /* UP */
2168 { 0x12, KEY_CHANNELDOWN }, /* DOWN */
2169 { 0x0c, KEY_VOLUMEUP }, /* RIGHT */
2170 { 0x17, KEY_VOLUMEDOWN }, /* LEFT */
Juan Pablo Sormanic36c4592006-12-27 12:46:36 -03002171
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002172 { 0x18, KEY_ENTER }, /* OK */
Juan Pablo Sormanic36c4592006-12-27 12:46:36 -03002173
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002174 { 0x0e, KEY_ESC },
2175 { 0x13, KEY_CYCLEWINDOWS }, /* desktop */
2176 { 0x11, KEY_TAB },
2177 { 0x19, KEY_SWITCHVIDEOMODE }, /* switch */
Juan Pablo Sormanic36c4592006-12-27 12:46:36 -03002178
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002179 { 0x1a, KEY_MENU },
2180 { 0x1b, KEY_ZOOM }, /* fullscreen */
2181 { 0x44, KEY_TIME }, /* time shift */
2182 { 0x40, KEY_MODE }, /* source */
Juan Pablo Sormanic36c4592006-12-27 12:46:36 -03002183
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002184 { 0x5a, KEY_RECORD },
2185 { 0x42, KEY_PLAY }, /* play/pause */
2186 { 0x45, KEY_STOP },
2187 { 0x43, KEY_CAMERA }, /* camera icon */
Juan Pablo Sormanic36c4592006-12-27 12:46:36 -03002188
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002189 { 0x48, KEY_REWIND },
2190 { 0x4a, KEY_FASTFORWARD },
2191 { 0x49, KEY_PREVIOUS },
2192 { 0x4b, KEY_NEXT },
Juan Pablo Sormanic36c4592006-12-27 12:46:36 -03002193
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002194 { 0x4c, KEY_FAVORITES }, /* tv wall */
2195 { 0x4d, KEY_SOUND }, /* DVD sound */
2196 { 0x4e, KEY_LANGUAGE }, /* DVD lang */
2197 { 0x4f, KEY_TEXT }, /* DVD text */
Juan Pablo Sormanic36c4592006-12-27 12:46:36 -03002198
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002199 { 0x50, KEY_SLEEP }, /* shutdown */
2200 { 0x51, KEY_MODE }, /* stereo > main */
2201 { 0x52, KEY_SELECT }, /* stereo > sap */
2202 { 0x53, KEY_PROG1 }, /* teletext */
Juan Pablo Sormanic36c4592006-12-27 12:46:36 -03002203
2204
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002205 { 0x59, KEY_RED }, /* AP1 */
2206 { 0x41, KEY_GREEN }, /* AP2 */
2207 { 0x47, KEY_YELLOW }, /* AP3 */
2208 { 0x57, KEY_BLUE }, /* AP4 */
Juan Pablo Sormanic36c4592006-12-27 12:46:36 -03002209};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002210
2211struct ir_scancode_table ir_codes_encore_enltv_table = {
2212 .scan = ir_codes_encore_enltv,
2213 .size = ARRAY_SIZE(ir_codes_encore_enltv),
2214};
2215EXPORT_SYMBOL_GPL(ir_codes_encore_enltv_table);
Ville-Pekka Vainioae1942c2007-01-12 14:06:21 -03002216
Mauro Carvalho Chehab7d341a62008-08-05 10:14:13 -03002217/* Encore ENLTV2-FM - silver plastic - "Wand Media" written at the botton
2218 Mauro Carvalho Chehab <mchehab@infradead.org> */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002219static struct ir_scancode ir_codes_encore_enltv2[] = {
2220 { 0x4c, KEY_POWER2 },
2221 { 0x4a, KEY_TUNER },
2222 { 0x40, KEY_1 },
2223 { 0x60, KEY_2 },
2224 { 0x50, KEY_3 },
2225 { 0x70, KEY_4 },
2226 { 0x48, KEY_5 },
2227 { 0x68, KEY_6 },
2228 { 0x58, KEY_7 },
2229 { 0x78, KEY_8 },
2230 { 0x44, KEY_9 },
2231 { 0x54, KEY_0 },
Mauro Carvalho Chehab7d341a62008-08-05 10:14:13 -03002232
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002233 { 0x64, KEY_LAST }, /* +100 */
2234 { 0x4e, KEY_AGAIN }, /* Recall */
Mauro Carvalho Chehab7d341a62008-08-05 10:14:13 -03002235
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002236 { 0x6c, KEY_SWITCHVIDEOMODE }, /* Video Source */
2237 { 0x5e, KEY_MENU },
2238 { 0x56, KEY_SCREEN },
2239 { 0x7a, KEY_SETUP },
Mauro Carvalho Chehab7d341a62008-08-05 10:14:13 -03002240
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002241 { 0x46, KEY_MUTE },
2242 { 0x5c, KEY_MODE }, /* Stereo */
2243 { 0x74, KEY_INFO },
2244 { 0x7c, KEY_CLEAR },
Mauro Carvalho Chehab7d341a62008-08-05 10:14:13 -03002245
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002246 { 0x55, KEY_UP },
2247 { 0x49, KEY_DOWN },
2248 { 0x7e, KEY_LEFT },
2249 { 0x59, KEY_RIGHT },
2250 { 0x6a, KEY_ENTER },
Mauro Carvalho Chehab7d341a62008-08-05 10:14:13 -03002251
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002252 { 0x42, KEY_VOLUMEUP },
2253 { 0x62, KEY_VOLUMEDOWN },
2254 { 0x52, KEY_CHANNELUP },
2255 { 0x72, KEY_CHANNELDOWN },
Mauro Carvalho Chehab7d341a62008-08-05 10:14:13 -03002256
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002257 { 0x41, KEY_RECORD },
2258 { 0x51, KEY_CAMERA }, /* Snapshot */
2259 { 0x75, KEY_TIME }, /* Timeshift */
2260 { 0x71, KEY_TV2 }, /* PIP */
Mauro Carvalho Chehab7d341a62008-08-05 10:14:13 -03002261
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002262 { 0x45, KEY_REWIND },
2263 { 0x6f, KEY_PAUSE },
2264 { 0x7d, KEY_FORWARD },
2265 { 0x79, KEY_STOP },
Mauro Carvalho Chehab7d341a62008-08-05 10:14:13 -03002266};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002267
2268struct ir_scancode_table ir_codes_encore_enltv2_table = {
2269 .scan = ir_codes_encore_enltv2,
2270 .size = ARRAY_SIZE(ir_codes_encore_enltv2),
2271};
2272EXPORT_SYMBOL_GPL(ir_codes_encore_enltv2_table);
Mauro Carvalho Chehab7d341a62008-08-05 10:14:13 -03002273
Ville-Pekka Vainio28aedb82007-04-14 15:38:23 -03002274/* for the Technotrend 1500 bundled remotes (grey and black): */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002275static struct ir_scancode ir_codes_tt_1500[] = {
2276 { 0x01, KEY_POWER },
2277 { 0x02, KEY_SHUFFLE }, /* ? double-arrow key */
2278 { 0x03, KEY_1 },
2279 { 0x04, KEY_2 },
2280 { 0x05, KEY_3 },
2281 { 0x06, KEY_4 },
2282 { 0x07, KEY_5 },
2283 { 0x08, KEY_6 },
2284 { 0x09, KEY_7 },
2285 { 0x0a, KEY_8 },
2286 { 0x0b, KEY_9 },
2287 { 0x0c, KEY_0 },
2288 { 0x0d, KEY_UP },
2289 { 0x0e, KEY_LEFT },
2290 { 0x0f, KEY_OK },
2291 { 0x10, KEY_RIGHT },
2292 { 0x11, KEY_DOWN },
2293 { 0x12, KEY_INFO },
2294 { 0x13, KEY_EXIT },
2295 { 0x14, KEY_RED },
2296 { 0x15, KEY_GREEN },
2297 { 0x16, KEY_YELLOW },
2298 { 0x17, KEY_BLUE },
2299 { 0x18, KEY_MUTE },
2300 { 0x19, KEY_TEXT },
2301 { 0x1a, KEY_MODE }, /* ? TV/Radio */
2302 { 0x21, KEY_OPTION },
2303 { 0x22, KEY_EPG },
2304 { 0x23, KEY_CHANNELUP },
2305 { 0x24, KEY_CHANNELDOWN },
2306 { 0x25, KEY_VOLUMEUP },
2307 { 0x26, KEY_VOLUMEDOWN },
2308 { 0x27, KEY_SETUP },
2309 { 0x3a, KEY_RECORD }, /* these keys are only in the black remote */
2310 { 0x3b, KEY_PLAY },
2311 { 0x3c, KEY_STOP },
2312 { 0x3d, KEY_REWIND },
2313 { 0x3e, KEY_PAUSE },
2314 { 0x3f, KEY_FORWARD },
Ville-Pekka Vainioae1942c2007-01-12 14:06:21 -03002315};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002316
2317struct ir_scancode_table ir_codes_tt_1500_table = {
2318 .scan = ir_codes_tt_1500,
2319 .size = ARRAY_SIZE(ir_codes_tt_1500),
2320};
2321EXPORT_SYMBOL_GPL(ir_codes_tt_1500_table);
Chaogui Zhangd54d6982007-08-24 01:02:32 -03002322
Michael Krufky3c443582007-08-24 01:07:12 -03002323/* DViCO FUSION HDTV MCE remote */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002324static struct ir_scancode ir_codes_fusionhdtv_mce[] = {
Chaogui Zhangd54d6982007-08-24 01:02:32 -03002325
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002326 { 0x0b, KEY_1 },
2327 { 0x17, KEY_2 },
2328 { 0x1b, KEY_3 },
2329 { 0x07, KEY_4 },
2330 { 0x50, KEY_5 },
2331 { 0x54, KEY_6 },
2332 { 0x48, KEY_7 },
2333 { 0x4c, KEY_8 },
2334 { 0x58, KEY_9 },
2335 { 0x03, KEY_0 },
Chaogui Zhangd54d6982007-08-24 01:02:32 -03002336
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002337 { 0x5e, KEY_OK },
2338 { 0x51, KEY_UP },
2339 { 0x53, KEY_DOWN },
2340 { 0x5b, KEY_LEFT },
2341 { 0x5f, KEY_RIGHT },
Chaogui Zhangd54d6982007-08-24 01:02:32 -03002342
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002343 { 0x02, KEY_TV }, /* Labeled DTV on remote */
2344 { 0x0e, KEY_MP3 },
2345 { 0x1a, KEY_DVD },
2346 { 0x1e, KEY_FAVORITES }, /* Labeled CPF on remote */
2347 { 0x16, KEY_SETUP },
2348 { 0x46, KEY_POWER2 }, /* TV On/Off button on remote */
2349 { 0x0a, KEY_EPG }, /* Labeled Guide on remote */
Chaogui Zhangd54d6982007-08-24 01:02:32 -03002350
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002351 { 0x49, KEY_BACK },
2352 { 0x59, KEY_INFO }, /* Labeled MORE on remote */
2353 { 0x4d, KEY_MENU }, /* Labeled DVDMENU on remote */
2354 { 0x55, KEY_CYCLEWINDOWS }, /* Labeled ALT-TAB on remote */
Michael Krufky3c443582007-08-24 01:07:12 -03002355
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002356 { 0x0f, KEY_PREVIOUSSONG }, /* Labeled |<< REPLAY on remote */
2357 { 0x12, KEY_NEXTSONG }, /* Labeled >>| SKIP on remote */
2358 { 0x42, KEY_ENTER }, /* Labeled START with a green
Mauro Carvalho Chehab5d353642009-08-27 09:50:21 -03002359 MS windows logo on remote */
Chaogui Zhangd54d6982007-08-24 01:02:32 -03002360
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002361 { 0x15, KEY_VOLUMEUP },
2362 { 0x05, KEY_VOLUMEDOWN },
2363 { 0x11, KEY_CHANNELUP },
2364 { 0x09, KEY_CHANNELDOWN },
Chaogui Zhangd54d6982007-08-24 01:02:32 -03002365
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002366 { 0x52, KEY_CAMERA },
2367 { 0x5a, KEY_TUNER },
2368 { 0x19, KEY_OPEN },
Chaogui Zhangd54d6982007-08-24 01:02:32 -03002369
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002370 { 0x13, KEY_MODE }, /* 4:3 16:9 select */
2371 { 0x1f, KEY_ZOOM },
Chaogui Zhangd54d6982007-08-24 01:02:32 -03002372
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002373 { 0x43, KEY_REWIND },
2374 { 0x47, KEY_PLAYPAUSE },
2375 { 0x4f, KEY_FASTFORWARD },
2376 { 0x57, KEY_MUTE },
2377 { 0x0d, KEY_STOP },
2378 { 0x01, KEY_RECORD },
2379 { 0x4e, KEY_POWER },
Chaogui Zhangd54d6982007-08-24 01:02:32 -03002380};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002381
2382struct ir_scancode_table ir_codes_fusionhdtv_mce_table = {
2383 .scan = ir_codes_fusionhdtv_mce,
2384 .size = ARRAY_SIZE(ir_codes_fusionhdtv_mce),
2385};
2386EXPORT_SYMBOL_GPL(ir_codes_fusionhdtv_mce_table);
Andrey J. Melnikoff (TEMHOTA)e8018c92008-01-07 05:17:39 -03002387
Steven Toth91211062008-01-22 01:00:33 -03002388/* Pinnacle PCTV HD 800i mini remote */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002389static struct ir_scancode ir_codes_pinnacle_pctv_hd[] = {
Steven Toth91211062008-01-22 01:00:33 -03002390
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002391 { 0x0f, KEY_1 },
2392 { 0x15, KEY_2 },
2393 { 0x10, KEY_3 },
2394 { 0x18, KEY_4 },
2395 { 0x1b, KEY_5 },
2396 { 0x1e, KEY_6 },
2397 { 0x11, KEY_7 },
2398 { 0x21, KEY_8 },
2399 { 0x12, KEY_9 },
2400 { 0x27, KEY_0 },
Steven Toth91211062008-01-22 01:00:33 -03002401
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002402 { 0x24, KEY_ZOOM },
2403 { 0x2a, KEY_SUBTITLE },
Steven Toth91211062008-01-22 01:00:33 -03002404
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002405 { 0x00, KEY_MUTE },
2406 { 0x01, KEY_ENTER }, /* Pinnacle Logo */
2407 { 0x39, KEY_POWER },
Steven Toth91211062008-01-22 01:00:33 -03002408
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002409 { 0x03, KEY_VOLUMEUP },
2410 { 0x09, KEY_VOLUMEDOWN },
2411 { 0x06, KEY_CHANNELUP },
2412 { 0x0c, KEY_CHANNELDOWN },
Steven Toth91211062008-01-22 01:00:33 -03002413
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002414 { 0x2d, KEY_REWIND },
2415 { 0x30, KEY_PLAYPAUSE },
2416 { 0x33, KEY_FASTFORWARD },
2417 { 0x3c, KEY_STOP },
2418 { 0x36, KEY_RECORD },
2419 { 0x3f, KEY_EPG }, /* Labeled "?" */
Steven Toth91211062008-01-22 01:00:33 -03002420};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002421
2422struct ir_scancode_table ir_codes_pinnacle_pctv_hd_table = {
2423 .scan = ir_codes_pinnacle_pctv_hd,
2424 .size = ARRAY_SIZE(ir_codes_pinnacle_pctv_hd),
2425};
2426EXPORT_SYMBOL_GPL(ir_codes_pinnacle_pctv_hd_table);
Steven Toth91211062008-01-22 01:00:33 -03002427
Andrey J. Melnikoff (TEMHOTA)e8018c92008-01-07 05:17:39 -03002428/*
2429 * Igor Kuznetsov <igk72@ya.ru>
2430 * Andrey J. Melnikov <temnota@kmv.ru>
2431 *
2432 * Keytable is used by BeholdTV 60x series, M6 series at
2433 * least, and probably other cards too.
2434 * The "ascii-art picture" below (in comments, first row
2435 * is the keycode in hex, and subsequent row(s) shows
2436 * the button labels (several variants when appropriate)
2437 * helps to descide which keycodes to assign to the buttons.
2438 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002439static struct ir_scancode ir_codes_behold[] = {
Andrey J. Melnikoff (TEMHOTA)e8018c92008-01-07 05:17:39 -03002440
2441 /* 0x1c 0x12 *
2442 * TV/FM POWER *
2443 * */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002444 { 0x1c, KEY_TUNER }, /* XXX KEY_TV / KEY_RADIO */
2445 { 0x12, KEY_POWER },
Andrey J. Melnikoff (TEMHOTA)e8018c92008-01-07 05:17:39 -03002446
2447 /* 0x01 0x02 0x03 *
2448 * 1 2 3 *
2449 * *
2450 * 0x04 0x05 0x06 *
2451 * 4 5 6 *
2452 * *
2453 * 0x07 0x08 0x09 *
2454 * 7 8 9 *
2455 * */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002456 { 0x01, KEY_1 },
2457 { 0x02, KEY_2 },
2458 { 0x03, KEY_3 },
2459 { 0x04, KEY_4 },
2460 { 0x05, KEY_5 },
2461 { 0x06, KEY_6 },
2462 { 0x07, KEY_7 },
2463 { 0x08, KEY_8 },
2464 { 0x09, KEY_9 },
Andrey J. Melnikoff (TEMHOTA)e8018c92008-01-07 05:17:39 -03002465
2466 /* 0x0a 0x00 0x17 *
2467 * RECALL 0 MODE *
2468 * */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002469 { 0x0a, KEY_AGAIN },
2470 { 0x00, KEY_0 },
2471 { 0x17, KEY_MODE },
Andrey J. Melnikoff (TEMHOTA)e8018c92008-01-07 05:17:39 -03002472
2473 /* 0x14 0x10 *
2474 * ASPECT FULLSCREEN *
2475 * */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002476 { 0x14, KEY_SCREEN },
2477 { 0x10, KEY_ZOOM },
Andrey J. Melnikoff (TEMHOTA)e8018c92008-01-07 05:17:39 -03002478
2479 /* 0x0b *
2480 * Up *
2481 * *
2482 * 0x18 0x16 0x0c *
2483 * Left Ok Right *
2484 * *
2485 * 0x015 *
2486 * Down *
2487 * */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002488 { 0x0b, KEY_CHANNELUP },
2489 { 0x18, KEY_VOLUMEDOWN },
2490 { 0x16, KEY_OK }, /* XXX KEY_ENTER */
2491 { 0x0c, KEY_VOLUMEUP },
2492 { 0x15, KEY_CHANNELDOWN },
Andrey J. Melnikoff (TEMHOTA)e8018c92008-01-07 05:17:39 -03002493
2494 /* 0x11 0x0d *
2495 * MUTE INFO *
2496 * */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002497 { 0x11, KEY_MUTE },
2498 { 0x0d, KEY_INFO },
Andrey J. Melnikoff (TEMHOTA)e8018c92008-01-07 05:17:39 -03002499
2500 /* 0x0f 0x1b 0x1a *
2501 * RECORD PLAY/PAUSE STOP *
2502 * *
2503 * 0x0e 0x1f 0x1e *
2504 *TELETEXT AUDIO SOURCE *
2505 * RED YELLOW *
2506 * */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002507 { 0x0f, KEY_RECORD },
2508 { 0x1b, KEY_PLAYPAUSE },
2509 { 0x1a, KEY_STOP },
2510 { 0x0e, KEY_TEXT },
2511 { 0x1f, KEY_RED }, /*XXX KEY_AUDIO */
2512 { 0x1e, KEY_YELLOW }, /*XXX KEY_SOURCE */
Andrey J. Melnikoff (TEMHOTA)e8018c92008-01-07 05:17:39 -03002513
2514 /* 0x1d 0x13 0x19 *
2515 * SLEEP PREVIEW DVB *
2516 * GREEN BLUE *
2517 * */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002518 { 0x1d, KEY_SLEEP },
2519 { 0x13, KEY_GREEN },
2520 { 0x19, KEY_BLUE }, /* XXX KEY_SAT */
Andrey J. Melnikoff (TEMHOTA)e8018c92008-01-07 05:17:39 -03002521
2522 /* 0x58 0x5c *
2523 * FREEZE SNAPSHOT *
2524 * */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002525 { 0x58, KEY_SLOW },
2526 { 0x5c, KEY_CAMERA },
Andrey J. Melnikoff (TEMHOTA)e8018c92008-01-07 05:17:39 -03002527
2528};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002529
2530struct ir_scancode_table ir_codes_behold_table = {
2531 .scan = ir_codes_behold,
2532 .size = ARRAY_SIZE(ir_codes_behold),
2533};
2534EXPORT_SYMBOL_GPL(ir_codes_behold_table);
Adrian Pardinif0ba3562008-02-11 12:40:53 -03002535
Dmitry Belimovb34dddb2008-04-23 14:09:08 -03002536/* Beholder Intl. Ltd. 2008
2537 * Dmitry Belimov d.belimov@google.com
2538 * Keytable is used by BeholdTV Columbus
2539 * The "ascii-art picture" below (in comments, first row
2540 * is the keycode in hex, and subsequent row(s) shows
2541 * the button labels (several variants when appropriate)
2542 * helps to descide which keycodes to assign to the buttons.
2543 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002544static struct ir_scancode ir_codes_behold_columbus[] = {
Dmitry Belimovb34dddb2008-04-23 14:09:08 -03002545
2546 /* 0x13 0x11 0x1C 0x12 *
2547 * Mute Source TV/FM Power *
2548 * */
2549
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002550 { 0x13, KEY_MUTE },
2551 { 0x11, KEY_PROPS },
2552 { 0x1C, KEY_TUNER }, /* KEY_TV/KEY_RADIO */
2553 { 0x12, KEY_POWER },
Dmitry Belimovb34dddb2008-04-23 14:09:08 -03002554
2555 /* 0x01 0x02 0x03 0x0D *
2556 * 1 2 3 Stereo *
2557 * *
2558 * 0x04 0x05 0x06 0x19 *
2559 * 4 5 6 Snapshot *
2560 * *
2561 * 0x07 0x08 0x09 0x10 *
2562 * 7 8 9 Zoom *
2563 * */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002564 { 0x01, KEY_1 },
2565 { 0x02, KEY_2 },
2566 { 0x03, KEY_3 },
2567 { 0x0D, KEY_SETUP }, /* Setup key */
2568 { 0x04, KEY_4 },
2569 { 0x05, KEY_5 },
2570 { 0x06, KEY_6 },
2571 { 0x19, KEY_CAMERA }, /* Snapshot key */
2572 { 0x07, KEY_7 },
2573 { 0x08, KEY_8 },
2574 { 0x09, KEY_9 },
2575 { 0x10, KEY_ZOOM },
Dmitry Belimovb34dddb2008-04-23 14:09:08 -03002576
2577 /* 0x0A 0x00 0x0B 0x0C *
2578 * RECALL 0 ChannelUp VolumeUp *
2579 * */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002580 { 0x0A, KEY_AGAIN },
2581 { 0x00, KEY_0 },
2582 { 0x0B, KEY_CHANNELUP },
2583 { 0x0C, KEY_VOLUMEUP },
Dmitry Belimovb34dddb2008-04-23 14:09:08 -03002584
2585 /* 0x1B 0x1D 0x15 0x18 *
2586 * Timeshift Record ChannelDown VolumeDown *
2587 * */
2588
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002589 { 0x1B, KEY_TIME },
2590 { 0x1D, KEY_RECORD },
2591 { 0x15, KEY_CHANNELDOWN },
2592 { 0x18, KEY_VOLUMEDOWN },
Dmitry Belimovb34dddb2008-04-23 14:09:08 -03002593
2594 /* 0x0E 0x1E 0x0F 0x1A *
2595 * Stop Pause Previouse Next *
2596 * */
2597
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002598 { 0x0E, KEY_STOP },
2599 { 0x1E, KEY_PAUSE },
2600 { 0x0F, KEY_PREVIOUS },
2601 { 0x1A, KEY_NEXT },
Dmitry Belimovb34dddb2008-04-23 14:09:08 -03002602
2603};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002604
2605struct ir_scancode_table ir_codes_behold_columbus_table = {
2606 .scan = ir_codes_behold_columbus,
2607 .size = ARRAY_SIZE(ir_codes_behold_columbus),
2608};
2609EXPORT_SYMBOL_GPL(ir_codes_behold_columbus_table);
Dmitry Belimovb34dddb2008-04-23 14:09:08 -03002610
Adrian Pardinif0ba3562008-02-11 12:40:53 -03002611/*
2612 * Remote control for the Genius TVGO A11MCE
2613 * Adrian Pardini <pardo.bsso@gmail.com>
2614 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002615static struct ir_scancode ir_codes_genius_tvgo_a11mce[] = {
Adrian Pardinif0ba3562008-02-11 12:40:53 -03002616 /* Keys 0 to 9 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002617 { 0x48, KEY_0 },
2618 { 0x09, KEY_1 },
2619 { 0x1d, KEY_2 },
2620 { 0x1f, KEY_3 },
2621 { 0x19, KEY_4 },
2622 { 0x1b, KEY_5 },
2623 { 0x11, KEY_6 },
2624 { 0x17, KEY_7 },
2625 { 0x12, KEY_8 },
2626 { 0x16, KEY_9 },
Adrian Pardinif0ba3562008-02-11 12:40:53 -03002627
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002628 { 0x54, KEY_RECORD }, /* recording */
2629 { 0x06, KEY_MUTE }, /* mute */
2630 { 0x10, KEY_POWER },
2631 { 0x40, KEY_LAST }, /* recall */
2632 { 0x4c, KEY_CHANNELUP }, /* channel / program + */
2633 { 0x00, KEY_CHANNELDOWN }, /* channel / program - */
2634 { 0x0d, KEY_VOLUMEUP },
2635 { 0x15, KEY_VOLUMEDOWN },
2636 { 0x4d, KEY_OK }, /* also labeled as Pause */
2637 { 0x1c, KEY_ZOOM }, /* full screen and Stop*/
2638 { 0x02, KEY_MODE }, /* AV Source or Rewind*/
2639 { 0x04, KEY_LIST }, /* -/-- */
Adrian Pardinif0ba3562008-02-11 12:40:53 -03002640 /* small arrows above numbers */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002641 { 0x1a, KEY_NEXT }, /* also Fast Forward */
2642 { 0x0e, KEY_PREVIOUS }, /* also Rewind */
Adrian Pardinif0ba3562008-02-11 12:40:53 -03002643 /* these are in a rather non standard layout and have
2644 an alternate name written */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002645 { 0x1e, KEY_UP }, /* Video Setting */
2646 { 0x0a, KEY_DOWN }, /* Video Default */
2647 { 0x05, KEY_CAMERA }, /* Snapshot */
2648 { 0x0c, KEY_RIGHT }, /* Hide Panel */
Adrian Pardinif0ba3562008-02-11 12:40:53 -03002649 /* Four buttons without label */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002650 { 0x49, KEY_RED },
2651 { 0x0b, KEY_GREEN },
2652 { 0x13, KEY_YELLOW },
2653 { 0x50, KEY_BLUE },
Adrian Pardinif0ba3562008-02-11 12:40:53 -03002654};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002655
2656struct ir_scancode_table ir_codes_genius_tvgo_a11mce_table = {
2657 .scan = ir_codes_genius_tvgo_a11mce,
2658 .size = ARRAY_SIZE(ir_codes_genius_tvgo_a11mce),
2659};
2660EXPORT_SYMBOL_GPL(ir_codes_genius_tvgo_a11mce_table);
Dâniel Fragaba928032008-04-08 19:56:44 -03002661
2662/*
2663 * Remote control for Powercolor Real Angel 330
2664 * Daniel Fraga <fragabr@gmail.com>
2665 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002666static struct ir_scancode ir_codes_powercolor_real_angel[] = {
2667 { 0x38, KEY_SWITCHVIDEOMODE }, /* switch inputs */
2668 { 0x0c, KEY_MEDIA }, /* Turn ON/OFF App */
2669 { 0x00, KEY_0 },
2670 { 0x01, KEY_1 },
2671 { 0x02, KEY_2 },
2672 { 0x03, KEY_3 },
2673 { 0x04, KEY_4 },
2674 { 0x05, KEY_5 },
2675 { 0x06, KEY_6 },
2676 { 0x07, KEY_7 },
2677 { 0x08, KEY_8 },
2678 { 0x09, KEY_9 },
2679 { 0x0a, KEY_DIGITS }, /* single, double, tripple digit */
2680 { 0x29, KEY_PREVIOUS }, /* previous channel */
2681 { 0x12, KEY_BRIGHTNESSUP },
2682 { 0x13, KEY_BRIGHTNESSDOWN },
2683 { 0x2b, KEY_MODE }, /* stereo/mono */
2684 { 0x2c, KEY_TEXT }, /* teletext */
2685 { 0x20, KEY_CHANNELUP }, /* channel up */
2686 { 0x21, KEY_CHANNELDOWN }, /* channel down */
2687 { 0x10, KEY_VOLUMEUP }, /* volume up */
2688 { 0x11, KEY_VOLUMEDOWN }, /* volume down */
2689 { 0x0d, KEY_MUTE },
2690 { 0x1f, KEY_RECORD },
2691 { 0x17, KEY_PLAY },
2692 { 0x16, KEY_PAUSE },
2693 { 0x0b, KEY_STOP },
2694 { 0x27, KEY_FASTFORWARD },
2695 { 0x26, KEY_REWIND },
2696 { 0x1e, KEY_SEARCH }, /* autoscan */
2697 { 0x0e, KEY_CAMERA }, /* snapshot */
2698 { 0x2d, KEY_SETUP },
2699 { 0x0f, KEY_SCREEN }, /* full screen */
2700 { 0x14, KEY_RADIO }, /* FM radio */
2701 { 0x25, KEY_POWER }, /* power */
Dâniel Fragaba928032008-04-08 19:56:44 -03002702};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002703
2704struct ir_scancode_table ir_codes_powercolor_real_angel_table = {
2705 .scan = ir_codes_powercolor_real_angel,
2706 .size = ARRAY_SIZE(ir_codes_powercolor_real_angel),
2707};
2708EXPORT_SYMBOL_GPL(ir_codes_powercolor_real_angel_table);
Tim Farrington6e501a32008-06-15 13:33:42 -03002709
Mauro Carvalho Chehab26d5f3a2008-12-07 13:19:29 -03002710/* Kworld Plus TV Analog Lite PCI IR
2711 Mauro Carvalho Chehab <mchehab@infradead.org>
2712 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002713static struct ir_scancode ir_codes_kworld_plus_tv_analog[] = {
2714 { 0x0c, KEY_PROG1 }, /* Kworld key */
2715 { 0x16, KEY_CLOSECD }, /* -> ) */
2716 { 0x1d, KEY_POWER2 },
Mauro Carvalho Chehab26d5f3a2008-12-07 13:19:29 -03002717
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002718 { 0x00, KEY_1 },
2719 { 0x01, KEY_2 },
2720 { 0x02, KEY_3 }, /* Two keys have the same code: 3 and left */
2721 { 0x03, KEY_4 }, /* Two keys have the same code: 3 and right */
2722 { 0x04, KEY_5 },
2723 { 0x05, KEY_6 },
2724 { 0x06, KEY_7 },
2725 { 0x07, KEY_8 },
2726 { 0x08, KEY_9 },
2727 { 0x0a, KEY_0 },
Mauro Carvalho Chehab26d5f3a2008-12-07 13:19:29 -03002728
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002729 { 0x09, KEY_AGAIN },
2730 { 0x14, KEY_MUTE },
Mauro Carvalho Chehab26d5f3a2008-12-07 13:19:29 -03002731
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002732 { 0x20, KEY_UP },
2733 { 0x21, KEY_DOWN },
2734 { 0x0b, KEY_ENTER },
Mauro Carvalho Chehab26d5f3a2008-12-07 13:19:29 -03002735
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002736 { 0x10, KEY_CHANNELUP },
2737 { 0x11, KEY_CHANNELDOWN },
Mauro Carvalho Chehab26d5f3a2008-12-07 13:19:29 -03002738
2739 /* Couldn't map key left/key right since those
2740 conflict with '3' and '4' scancodes
2741 I dunno what the original driver does
2742 */
2743
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002744 { 0x13, KEY_VOLUMEUP },
2745 { 0x12, KEY_VOLUMEDOWN },
Mauro Carvalho Chehab26d5f3a2008-12-07 13:19:29 -03002746
2747 /* The lower part of the IR
2748 There are several duplicated keycodes there.
2749 Most of them conflict with digits.
2750 Add mappings just to the unused scancodes.
2751 Somehow, the original driver has a way to know,
2752 but this doesn't seem to be on some GPIO.
2753 Also, it is not related to the time between keyup
2754 and keydown.
2755 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002756 { 0x19, KEY_TIME}, /* Timeshift */
2757 { 0x1a, KEY_STOP},
2758 { 0x1b, KEY_RECORD},
Mauro Carvalho Chehab26d5f3a2008-12-07 13:19:29 -03002759
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002760 { 0x22, KEY_TEXT},
Mauro Carvalho Chehab26d5f3a2008-12-07 13:19:29 -03002761
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002762 { 0x15, KEY_AUDIO}, /* ((*)) */
2763 { 0x0f, KEY_ZOOM},
2764 { 0x1c, KEY_CAMERA}, /* snapshot */
Mauro Carvalho Chehab26d5f3a2008-12-07 13:19:29 -03002765
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002766 { 0x18, KEY_RED}, /* B */
2767 { 0x23, KEY_GREEN}, /* C */
Mauro Carvalho Chehab26d5f3a2008-12-07 13:19:29 -03002768};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002769struct ir_scancode_table ir_codes_kworld_plus_tv_analog_table = {
2770 .scan = ir_codes_kworld_plus_tv_analog,
2771 .size = ARRAY_SIZE(ir_codes_kworld_plus_tv_analog),
2772};
2773EXPORT_SYMBOL_GPL(ir_codes_kworld_plus_tv_analog_table);
Mauro Carvalho Chehab26d5f3a2008-12-07 13:19:29 -03002774
Mauro Carvalho Chehab9fc2c5e2009-02-11 14:15:14 -03002775/* Kaiomy TVnPC U2
2776 Mauro Carvalho Chehab <mchehab@infradead.org>
2777 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002778static struct ir_scancode ir_codes_kaiomy[] = {
2779 { 0x43, KEY_POWER2},
2780 { 0x01, KEY_LIST},
2781 { 0x0b, KEY_ZOOM},
2782 { 0x03, KEY_POWER},
Mauro Carvalho Chehab9fc2c5e2009-02-11 14:15:14 -03002783
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002784 { 0x04, KEY_1},
2785 { 0x08, KEY_2},
2786 { 0x02, KEY_3},
Mauro Carvalho Chehab9fc2c5e2009-02-11 14:15:14 -03002787
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002788 { 0x0f, KEY_4},
2789 { 0x05, KEY_5},
2790 { 0x06, KEY_6},
Mauro Carvalho Chehab9fc2c5e2009-02-11 14:15:14 -03002791
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002792 { 0x0c, KEY_7},
2793 { 0x0d, KEY_8},
2794 { 0x0a, KEY_9},
Mauro Carvalho Chehab9fc2c5e2009-02-11 14:15:14 -03002795
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002796 { 0x11, KEY_0},
Mauro Carvalho Chehab9fc2c5e2009-02-11 14:15:14 -03002797
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002798 { 0x09, KEY_CHANNELUP},
2799 { 0x07, KEY_CHANNELDOWN},
Mauro Carvalho Chehab9fc2c5e2009-02-11 14:15:14 -03002800
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002801 { 0x0e, KEY_VOLUMEUP},
2802 { 0x13, KEY_VOLUMEDOWN},
Mauro Carvalho Chehab9fc2c5e2009-02-11 14:15:14 -03002803
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002804 { 0x10, KEY_HOME},
2805 { 0x12, KEY_ENTER},
Mauro Carvalho Chehab9fc2c5e2009-02-11 14:15:14 -03002806
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002807 { 0x14, KEY_RECORD},
2808 { 0x15, KEY_STOP},
2809 { 0x16, KEY_PLAY},
2810 { 0x17, KEY_MUTE},
Mauro Carvalho Chehab9fc2c5e2009-02-11 14:15:14 -03002811
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002812 { 0x18, KEY_UP},
2813 { 0x19, KEY_DOWN},
2814 { 0x1a, KEY_LEFT},
2815 { 0x1b, KEY_RIGHT},
Mauro Carvalho Chehab9fc2c5e2009-02-11 14:15:14 -03002816
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002817 { 0x1c, KEY_RED},
2818 { 0x1d, KEY_GREEN},
2819 { 0x1e, KEY_YELLOW},
2820 { 0x1f, KEY_BLUE},
Mauro Carvalho Chehab9fc2c5e2009-02-11 14:15:14 -03002821};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002822struct ir_scancode_table ir_codes_kaiomy_table = {
2823 .scan = ir_codes_kaiomy,
2824 .size = ARRAY_SIZE(ir_codes_kaiomy),
Tim Farrington6e501a32008-06-15 13:33:42 -03002825};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002826EXPORT_SYMBOL_GPL(ir_codes_kaiomy_table);
2827
2828static struct ir_scancode ir_codes_avermedia_a16d[] = {
2829 { 0x20, KEY_LIST},
2830 { 0x00, KEY_POWER},
2831 { 0x28, KEY_1},
2832 { 0x18, KEY_2},
2833 { 0x38, KEY_3},
2834 { 0x24, KEY_4},
2835 { 0x14, KEY_5},
2836 { 0x34, KEY_6},
2837 { 0x2c, KEY_7},
2838 { 0x1c, KEY_8},
2839 { 0x3c, KEY_9},
2840 { 0x12, KEY_SUBTITLE},
2841 { 0x22, KEY_0},
2842 { 0x32, KEY_REWIND},
2843 { 0x3a, KEY_SHUFFLE},
2844 { 0x02, KEY_PRINT},
2845 { 0x11, KEY_CHANNELDOWN},
2846 { 0x31, KEY_CHANNELUP},
2847 { 0x0c, KEY_ZOOM},
2848 { 0x1e, KEY_VOLUMEDOWN},
2849 { 0x3e, KEY_VOLUMEUP},
2850 { 0x0a, KEY_MUTE},
2851 { 0x04, KEY_AUDIO},
2852 { 0x26, KEY_RECORD},
2853 { 0x06, KEY_PLAY},
2854 { 0x36, KEY_STOP},
2855 { 0x16, KEY_PAUSE},
2856 { 0x2e, KEY_REWIND},
2857 { 0x0e, KEY_FASTFORWARD},
2858 { 0x30, KEY_TEXT},
2859 { 0x21, KEY_GREEN},
2860 { 0x01, KEY_BLUE},
2861 { 0x08, KEY_EPG},
2862 { 0x2a, KEY_MENU},
2863};
2864struct ir_scancode_table ir_codes_avermedia_a16d_table = {
2865 .scan = ir_codes_avermedia_a16d,
2866 .size = ARRAY_SIZE(ir_codes_avermedia_a16d),
2867};
2868EXPORT_SYMBOL_GPL(ir_codes_avermedia_a16d_table);
Mauro Carvalho Chehabbf1ece62008-06-26 17:03:00 -03002869
2870/* Encore ENLTV-FM v5.3
2871 Mauro Carvalho Chehab <mchehab@infradead.org>
2872 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002873static struct ir_scancode ir_codes_encore_enltv_fm53[] = {
2874 { 0x10, KEY_POWER2},
2875 { 0x06, KEY_MUTE},
Mauro Carvalho Chehabbf1ece62008-06-26 17:03:00 -03002876
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002877 { 0x09, KEY_1},
2878 { 0x1d, KEY_2},
2879 { 0x1f, KEY_3},
2880 { 0x19, KEY_4},
2881 { 0x1b, KEY_5},
2882 { 0x11, KEY_6},
2883 { 0x17, KEY_7},
2884 { 0x12, KEY_8},
2885 { 0x16, KEY_9},
2886 { 0x48, KEY_0},
Mauro Carvalho Chehabbf1ece62008-06-26 17:03:00 -03002887
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002888 { 0x04, KEY_LIST}, /* -/-- */
2889 { 0x40, KEY_LAST}, /* recall */
Mauro Carvalho Chehabbf1ece62008-06-26 17:03:00 -03002890
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002891 { 0x02, KEY_MODE}, /* TV/AV */
2892 { 0x05, KEY_CAMERA}, /* SNAPSHOT */
Mauro Carvalho Chehabbf1ece62008-06-26 17:03:00 -03002893
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002894 { 0x4c, KEY_CHANNELUP}, /* UP */
2895 { 0x00, KEY_CHANNELDOWN}, /* DOWN */
2896 { 0x0d, KEY_VOLUMEUP}, /* RIGHT */
2897 { 0x15, KEY_VOLUMEDOWN}, /* LEFT */
2898 { 0x49, KEY_ENTER}, /* OK */
Mauro Carvalho Chehabbf1ece62008-06-26 17:03:00 -03002899
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002900 { 0x54, KEY_RECORD},
2901 { 0x4d, KEY_PLAY}, /* pause */
Mauro Carvalho Chehabbf1ece62008-06-26 17:03:00 -03002902
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002903 { 0x1e, KEY_MENU}, /* video setting */
2904 { 0x0e, KEY_RIGHT}, /* <- */
2905 { 0x1a, KEY_LEFT}, /* -> */
Mauro Carvalho Chehabbf1ece62008-06-26 17:03:00 -03002906
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002907 { 0x0a, KEY_CLEAR}, /* video default */
2908 { 0x0c, KEY_ZOOM}, /* hide pannel */
2909 { 0x47, KEY_SLEEP}, /* shutdown */
Mauro Carvalho Chehabbf1ece62008-06-26 17:03:00 -03002910};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002911struct ir_scancode_table ir_codes_encore_enltv_fm53_table = {
2912 .scan = ir_codes_encore_enltv_fm53,
2913 .size = ARRAY_SIZE(ir_codes_encore_enltv_fm53),
2914};
2915EXPORT_SYMBOL_GPL(ir_codes_encore_enltv_fm53_table);
Mauro Carvalho Chehab9b000192008-06-26 17:03:00 -03002916
2917/* Zogis Real Audio 220 - 32 keys IR */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002918static struct ir_scancode ir_codes_real_audio_220_32_keys[] = {
2919 { 0x1c, KEY_RADIO},
2920 { 0x12, KEY_POWER2},
Mauro Carvalho Chehab9b000192008-06-26 17:03:00 -03002921
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002922 { 0x01, KEY_1},
2923 { 0x02, KEY_2},
2924 { 0x03, KEY_3},
2925 { 0x04, KEY_4},
2926 { 0x05, KEY_5},
2927 { 0x06, KEY_6},
2928 { 0x07, KEY_7},
2929 { 0x08, KEY_8},
2930 { 0x09, KEY_9},
2931 { 0x00, KEY_0},
Mauro Carvalho Chehab9b000192008-06-26 17:03:00 -03002932
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002933 { 0x0c, KEY_VOLUMEUP},
2934 { 0x18, KEY_VOLUMEDOWN},
2935 { 0x0b, KEY_CHANNELUP},
2936 { 0x15, KEY_CHANNELDOWN},
2937 { 0x16, KEY_ENTER},
Mauro Carvalho Chehab9b000192008-06-26 17:03:00 -03002938
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002939 { 0x11, KEY_LIST}, /* Source */
2940 { 0x0d, KEY_AUDIO}, /* stereo */
Mauro Carvalho Chehab9b000192008-06-26 17:03:00 -03002941
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002942 { 0x0f, KEY_PREVIOUS}, /* Prev */
2943 { 0x1b, KEY_TIME}, /* Timeshift */
2944 { 0x1a, KEY_NEXT}, /* Next */
Mauro Carvalho Chehab9b000192008-06-26 17:03:00 -03002945
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002946 { 0x0e, KEY_STOP},
2947 { 0x1f, KEY_PLAY},
2948 { 0x1e, KEY_PLAYPAUSE}, /* Pause */
Mauro Carvalho Chehab9b000192008-06-26 17:03:00 -03002949
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002950 { 0x1d, KEY_RECORD},
2951 { 0x13, KEY_MUTE},
2952 { 0x19, KEY_CAMERA}, /* Snapshot */
Mauro Carvalho Chehab9b000192008-06-26 17:03:00 -03002953
2954};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002955struct ir_scancode_table ir_codes_real_audio_220_32_keys_table = {
2956 .scan = ir_codes_real_audio_220_32_keys,
2957 .size = ARRAY_SIZE(ir_codes_real_audio_220_32_keys),
2958};
2959EXPORT_SYMBOL_GPL(ir_codes_real_audio_220_32_keys_table);
Devin Heitmueller60245e82008-11-16 08:03:53 -03002960
2961/* ATI TV Wonder HD 600 USB
2962 Devin Heitmueller <devin.heitmueller@gmail.com>
2963 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002964static struct ir_scancode ir_codes_ati_tv_wonder_hd_600[] = {
2965 { 0x00, KEY_RECORD}, /* Row 1 */
2966 { 0x01, KEY_PLAYPAUSE},
2967 { 0x02, KEY_STOP},
2968 { 0x03, KEY_POWER},
2969 { 0x04, KEY_PREVIOUS}, /* Row 2 */
2970 { 0x05, KEY_REWIND},
2971 { 0x06, KEY_FORWARD},
2972 { 0x07, KEY_NEXT},
2973 { 0x08, KEY_EPG}, /* Row 3 */
2974 { 0x09, KEY_HOME},
2975 { 0x0a, KEY_MENU},
2976 { 0x0b, KEY_CHANNELUP},
2977 { 0x0c, KEY_BACK}, /* Row 4 */
2978 { 0x0d, KEY_UP},
2979 { 0x0e, KEY_INFO},
2980 { 0x0f, KEY_CHANNELDOWN},
2981 { 0x10, KEY_LEFT}, /* Row 5 */
2982 { 0x11, KEY_SELECT},
2983 { 0x12, KEY_RIGHT},
2984 { 0x13, KEY_VOLUMEUP},
2985 { 0x14, KEY_LAST}, /* Row 6 */
2986 { 0x15, KEY_DOWN},
2987 { 0x16, KEY_MUTE},
2988 { 0x17, KEY_VOLUMEDOWN},
Devin Heitmueller60245e82008-11-16 08:03:53 -03002989};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002990struct ir_scancode_table ir_codes_ati_tv_wonder_hd_600_table = {
2991 .scan = ir_codes_ati_tv_wonder_hd_600,
2992 .size = ARRAY_SIZE(ir_codes_ati_tv_wonder_hd_600),
2993};
2994EXPORT_SYMBOL_GPL(ir_codes_ati_tv_wonder_hd_600_table);
Igor M. Liplianinb72857d2009-02-26 03:49:44 -03002995
2996/* DVBWorld remotes
2997 Igor M. Liplianin <liplianin@me.by>
2998 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03002999static struct ir_scancode ir_codes_dm1105_nec[] = {
3000 { 0x0a, KEY_POWER2}, /* power */
3001 { 0x0c, KEY_MUTE}, /* mute */
3002 { 0x11, KEY_1},
3003 { 0x12, KEY_2},
3004 { 0x13, KEY_3},
3005 { 0x14, KEY_4},
3006 { 0x15, KEY_5},
3007 { 0x16, KEY_6},
3008 { 0x17, KEY_7},
3009 { 0x18, KEY_8},
3010 { 0x19, KEY_9},
3011 { 0x10, KEY_0},
3012 { 0x1c, KEY_CHANNELUP}, /* ch+ */
3013 { 0x0f, KEY_CHANNELDOWN}, /* ch- */
3014 { 0x1a, KEY_VOLUMEUP}, /* vol+ */
3015 { 0x0e, KEY_VOLUMEDOWN}, /* vol- */
3016 { 0x04, KEY_RECORD}, /* rec */
3017 { 0x09, KEY_CHANNEL}, /* fav */
3018 { 0x08, KEY_BACKSPACE}, /* rewind */
3019 { 0x07, KEY_FASTFORWARD}, /* fast */
3020 { 0x0b, KEY_PAUSE}, /* pause */
3021 { 0x02, KEY_ESC}, /* cancel */
3022 { 0x03, KEY_TAB}, /* tab */
3023 { 0x00, KEY_UP}, /* up */
3024 { 0x1f, KEY_ENTER}, /* ok */
3025 { 0x01, KEY_DOWN}, /* down */
3026 { 0x05, KEY_RECORD}, /* cap */
3027 { 0x06, KEY_STOP}, /* stop */
3028 { 0x40, KEY_ZOOM}, /* full */
3029 { 0x1e, KEY_TV}, /* tvmode */
3030 { 0x1b, KEY_B}, /* recall */
Igor M. Liplianinb72857d2009-02-26 03:49:44 -03003031};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03003032struct ir_scancode_table ir_codes_dm1105_nec_table = {
3033 .scan = ir_codes_dm1105_nec,
3034 .size = ARRAY_SIZE(ir_codes_dm1105_nec),
3035};
3036EXPORT_SYMBOL_GPL(ir_codes_dm1105_nec_table);
Devin Heitmueller8cd9aae2009-08-03 23:56:51 -03003037
Igor M. Liplianin9d2ba7a2009-09-23 14:44:12 -03003038static struct ir_scancode ir_codes_tevii_nec[] = {
3039 { 0x0a, KEY_POWER2},
3040 { 0x0c, KEY_MUTE},
3041 { 0x11, KEY_1},
3042 { 0x12, KEY_2},
3043 { 0x13, KEY_3},
3044 { 0x14, KEY_4},
3045 { 0x15, KEY_5},
3046 { 0x16, KEY_6},
3047 { 0x17, KEY_7},
3048 { 0x18, KEY_8},
3049 { 0x19, KEY_9},
3050 { 0x10, KEY_0},
3051 { 0x1c, KEY_MENU},
3052 { 0x0f, KEY_VOLUMEDOWN},
3053 { 0x1a, KEY_LAST},
3054 { 0x0e, KEY_OPEN},
3055 { 0x04, KEY_RECORD},
3056 { 0x09, KEY_VOLUMEUP},
3057 { 0x08, KEY_CHANNELUP},
3058 { 0x07, KEY_PVR},
3059 { 0x0b, KEY_TIME},
3060 { 0x02, KEY_RIGHT},
3061 { 0x03, KEY_LEFT},
3062 { 0x00, KEY_UP},
3063 { 0x1f, KEY_OK},
3064 { 0x01, KEY_DOWN},
3065 { 0x05, KEY_TUNER},
3066 { 0x06, KEY_CHANNELDOWN},
3067 { 0x40, KEY_PLAYPAUSE},
3068 { 0x1e, KEY_REWIND},
3069 { 0x1b, KEY_FAVORITES},
3070 { 0x1d, KEY_BACK},
3071 { 0x4d, KEY_FASTFORWARD},
3072 { 0x44, KEY_EPG},
3073 { 0x4c, KEY_INFO},
3074 { 0x41, KEY_AB},
3075 { 0x43, KEY_AUDIO},
3076 { 0x45, KEY_SUBTITLE},
3077 { 0x4a, KEY_LIST},
3078 { 0x46, KEY_F1},
3079 { 0x47, KEY_F2},
3080 { 0x5e, KEY_F3},
3081 { 0x5c, KEY_F4},
3082 { 0x52, KEY_F5},
3083 { 0x5a, KEY_F6},
3084 { 0x56, KEY_MODE},
3085 { 0x58, KEY_SWITCHVIDEOMODE},
3086};
3087struct ir_scancode_table ir_codes_tevii_nec_table = {
3088 .scan = ir_codes_tevii_nec,
3089 .size = ARRAY_SIZE(ir_codes_tevii_nec),
3090};
3091EXPORT_SYMBOL_GPL(ir_codes_tevii_nec_table);
3092
Igor M. Liplianind8d86222009-09-19 09:51:12 -03003093static struct ir_scancode ir_codes_tbs_nec[] = {
3094 { 0x04, KEY_POWER2}, /*power*/
3095 { 0x14, KEY_MUTE}, /*mute*/
3096 { 0x07, KEY_1},
3097 { 0x06, KEY_2},
3098 { 0x05, KEY_3},
3099 { 0x0b, KEY_4},
3100 { 0x0a, KEY_5},
3101 { 0x09, KEY_6},
3102 { 0x0f, KEY_7},
3103 { 0x0e, KEY_8},
3104 { 0x0d, KEY_9},
3105 { 0x12, KEY_0},
3106 { 0x16, KEY_CHANNELUP}, /*ch+*/
3107 { 0x11, KEY_CHANNELDOWN},/*ch-*/
3108 { 0x13, KEY_VOLUMEUP}, /*vol+*/
3109 { 0x0c, KEY_VOLUMEDOWN},/*vol-*/
3110 { 0x03, KEY_RECORD}, /*rec*/
3111 { 0x18, KEY_PAUSE}, /*pause*/
3112 { 0x19, KEY_OK}, /*ok*/
3113 { 0x1a, KEY_CAMERA}, /* snapshot */
3114 { 0x01, KEY_UP},
3115 { 0x10, KEY_LEFT},
3116 { 0x02, KEY_RIGHT},
3117 { 0x08, KEY_DOWN},
3118 { 0x15, KEY_FAVORITES},
3119 { 0x17, KEY_SUBTITLE},
3120 { 0x1d, KEY_ZOOM},
3121 { 0x1f, KEY_EXIT},
3122 { 0x1e, KEY_MENU},
3123 { 0x1c, KEY_EPG},
3124 { 0x00, KEY_PREVIOUS},
3125 { 0x1b, KEY_MODE},
3126};
3127struct ir_scancode_table ir_codes_tbs_nec_table = {
3128 .scan = ir_codes_tbs_nec,
3129 .size = ARRAY_SIZE(ir_codes_tbs_nec),
3130};
3131EXPORT_SYMBOL_GPL(ir_codes_tbs_nec_table);
3132
Devin Heitmueller8cd9aae2009-08-03 23:56:51 -03003133/* Terratec Cinergy Hybrid T USB XS
3134 Devin Heitmueller <dheitmueller@linuxtv.org>
3135 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03003136static struct ir_scancode ir_codes_terratec_cinergy_xs[] = {
3137 { 0x41, KEY_HOME},
3138 { 0x01, KEY_POWER},
3139 { 0x42, KEY_MENU},
3140 { 0x02, KEY_1},
3141 { 0x03, KEY_2},
3142 { 0x04, KEY_3},
3143 { 0x43, KEY_SUBTITLE},
3144 { 0x05, KEY_4},
3145 { 0x06, KEY_5},
3146 { 0x07, KEY_6},
3147 { 0x44, KEY_TEXT},
3148 { 0x08, KEY_7},
3149 { 0x09, KEY_8},
3150 { 0x0a, KEY_9},
3151 { 0x45, KEY_DELETE},
3152 { 0x0b, KEY_TUNER},
3153 { 0x0c, KEY_0},
3154 { 0x0d, KEY_MODE},
3155 { 0x46, KEY_TV},
3156 { 0x47, KEY_DVD},
3157 { 0x49, KEY_VIDEO},
3158 { 0x4b, KEY_AUX},
3159 { 0x10, KEY_UP},
3160 { 0x11, KEY_LEFT},
3161 { 0x12, KEY_OK},
3162 { 0x13, KEY_RIGHT},
3163 { 0x14, KEY_DOWN},
3164 { 0x0f, KEY_EPG},
3165 { 0x16, KEY_INFO},
3166 { 0x4d, KEY_BACKSPACE},
3167 { 0x1c, KEY_VOLUMEUP},
3168 { 0x4c, KEY_PLAY},
3169 { 0x1b, KEY_CHANNELUP},
3170 { 0x1e, KEY_VOLUMEDOWN},
3171 { 0x1d, KEY_MUTE},
3172 { 0x1f, KEY_CHANNELDOWN},
3173 { 0x17, KEY_RED},
3174 { 0x18, KEY_GREEN},
3175 { 0x19, KEY_YELLOW},
3176 { 0x1a, KEY_BLUE},
3177 { 0x58, KEY_RECORD},
3178 { 0x48, KEY_STOP},
3179 { 0x40, KEY_PAUSE},
3180 { 0x54, KEY_LAST},
3181 { 0x4e, KEY_REWIND},
3182 { 0x4f, KEY_FASTFORWARD},
3183 { 0x5c, KEY_NEXT},
Devin Heitmueller8cd9aae2009-08-03 23:56:51 -03003184};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03003185struct ir_scancode_table ir_codes_terratec_cinergy_xs_table = {
3186 .scan = ir_codes_terratec_cinergy_xs,
3187 .size = ARRAY_SIZE(ir_codes_terratec_cinergy_xs),
3188};
3189EXPORT_SYMBOL_GPL(ir_codes_terratec_cinergy_xs_table);
Devin Heitmueller8cd9aae2009-08-03 23:56:51 -03003190
Devin Heitmuellera4c47302009-06-20 21:34:42 -03003191/* EVGA inDtube
3192 Devin Heitmueller <devin.heitmueller@gmail.com>
3193 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03003194static struct ir_scancode ir_codes_evga_indtube[] = {
3195 { 0x12, KEY_POWER},
3196 { 0x02, KEY_MODE}, /* TV */
3197 { 0x14, KEY_MUTE},
3198 { 0x1a, KEY_CHANNELUP},
3199 { 0x16, KEY_TV2}, /* PIP */
3200 { 0x1d, KEY_VOLUMEUP},
3201 { 0x05, KEY_CHANNELDOWN},
3202 { 0x0f, KEY_PLAYPAUSE},
3203 { 0x19, KEY_VOLUMEDOWN},
3204 { 0x1c, KEY_REWIND},
3205 { 0x0d, KEY_RECORD},
3206 { 0x18, KEY_FORWARD},
3207 { 0x1e, KEY_PREVIOUS},
3208 { 0x1b, KEY_STOP},
3209 { 0x1f, KEY_NEXT},
3210 { 0x13, KEY_CAMERA},
Devin Heitmuellera4c47302009-06-20 21:34:42 -03003211};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03003212struct ir_scancode_table ir_codes_evga_indtube_table = {
3213 .scan = ir_codes_evga_indtube,
3214 .size = ARRAY_SIZE(ir_codes_evga_indtube),
Igor M. Liplianinecfcfec2009-08-13 21:42:21 -03003215};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03003216EXPORT_SYMBOL_GPL(ir_codes_evga_indtube_table);
Mauro Carvalho Chehab6d888a62009-08-30 13:05:56 -03003217
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03003218static struct ir_scancode ir_codes_videomate_s350[] = {
3219 { 0x00, KEY_TV},
3220 { 0x01, KEY_DVD},
3221 { 0x04, KEY_RECORD},
3222 { 0x05, KEY_VIDEO}, /* TV/Video */
3223 { 0x07, KEY_STOP},
3224 { 0x08, KEY_PLAYPAUSE},
3225 { 0x0a, KEY_REWIND},
3226 { 0x0f, KEY_FASTFORWARD},
3227 { 0x10, KEY_CHANNELUP},
3228 { 0x12, KEY_VOLUMEUP},
3229 { 0x13, KEY_CHANNELDOWN},
3230 { 0x14, KEY_MUTE},
3231 { 0x15, KEY_VOLUMEDOWN},
3232 { 0x16, KEY_1},
3233 { 0x17, KEY_2},
3234 { 0x18, KEY_3},
3235 { 0x19, KEY_4},
3236 { 0x1a, KEY_5},
3237 { 0x1b, KEY_6},
3238 { 0x1c, KEY_7},
3239 { 0x1d, KEY_8},
3240 { 0x1e, KEY_9},
3241 { 0x1f, KEY_0},
3242 { 0x21, KEY_SLEEP},
3243 { 0x24, KEY_ZOOM},
3244 { 0x25, KEY_LAST}, /* Recall */
3245 { 0x26, KEY_SUBTITLE}, /* CC */
3246 { 0x27, KEY_LANGUAGE}, /* MTS */
3247 { 0x29, KEY_CHANNEL}, /* SURF */
3248 { 0x2b, KEY_A},
3249 { 0x2c, KEY_B},
3250 { 0x2f, KEY_CAMERA}, /* Snapshot */
3251 { 0x23, KEY_RADIO},
3252 { 0x02, KEY_PREVIOUSSONG},
3253 { 0x06, KEY_NEXTSONG},
3254 { 0x03, KEY_EPG},
3255 { 0x09, KEY_SETUP},
3256 { 0x22, KEY_BACKSPACE},
3257 { 0x0c, KEY_UP},
3258 { 0x0e, KEY_DOWN},
3259 { 0x0b, KEY_LEFT},
3260 { 0x0d, KEY_RIGHT},
3261 { 0x11, KEY_ENTER},
3262 { 0x20, KEY_TEXT},
3263};
3264struct ir_scancode_table ir_codes_videomate_s350_table = {
3265 .scan = ir_codes_videomate_s350,
3266 .size = ARRAY_SIZE(ir_codes_videomate_s350),
3267};
3268EXPORT_SYMBOL_GPL(ir_codes_videomate_s350_table);
Mauro Carvalho Chehab6d888a62009-08-30 13:05:56 -03003269
3270/* GADMEI UTV330+ RM008Z remote
3271 Shine Liu <shinel@foxmail.com>
3272 */
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03003273static struct ir_scancode ir_codes_gadmei_rm008z[] = {
3274 { 0x14, KEY_POWER2}, /* POWER OFF */
3275 { 0x0c, KEY_MUTE}, /* MUTE */
Mauro Carvalho Chehab6d888a62009-08-30 13:05:56 -03003276
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03003277 { 0x18, KEY_TV}, /* TV */
3278 { 0x0e, KEY_VIDEO}, /* AV */
3279 { 0x0b, KEY_AUDIO}, /* SV */
3280 { 0x0f, KEY_RADIO}, /* FM */
Mauro Carvalho Chehab6d888a62009-08-30 13:05:56 -03003281
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03003282 { 0x00, KEY_1},
3283 { 0x01, KEY_2},
3284 { 0x02, KEY_3},
3285 { 0x03, KEY_4},
3286 { 0x04, KEY_5},
3287 { 0x05, KEY_6},
3288 { 0x06, KEY_7},
3289 { 0x07, KEY_8},
3290 { 0x08, KEY_9},
3291 { 0x09, KEY_0},
3292 { 0x0a, KEY_INFO}, /* OSD */
3293 { 0x1c, KEY_BACKSPACE}, /* LAST */
Mauro Carvalho Chehab6d888a62009-08-30 13:05:56 -03003294
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03003295 { 0x0d, KEY_PLAY}, /* PLAY */
3296 { 0x1e, KEY_CAMERA}, /* SNAPSHOT */
3297 { 0x1a, KEY_RECORD}, /* RECORD */
3298 { 0x17, KEY_STOP}, /* STOP */
Mauro Carvalho Chehab6d888a62009-08-30 13:05:56 -03003299
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03003300 { 0x1f, KEY_UP}, /* UP */
3301 { 0x44, KEY_DOWN}, /* DOWN */
3302 { 0x46, KEY_TAB}, /* BACK */
3303 { 0x4a, KEY_ZOOM}, /* FULLSECREEN */
Mauro Carvalho Chehab6d888a62009-08-30 13:05:56 -03003304
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03003305 { 0x10, KEY_VOLUMEUP}, /* VOLUMEUP */
3306 { 0x11, KEY_VOLUMEDOWN}, /* VOLUMEDOWN */
3307 { 0x12, KEY_CHANNELUP}, /* CHANNELUP */
3308 { 0x13, KEY_CHANNELDOWN}, /* CHANNELDOWN */
3309 { 0x15, KEY_ENTER}, /* OK */
Mauro Carvalho Chehab6d888a62009-08-30 13:05:56 -03003310};
Mauro Carvalho Chehab715a2232009-08-29 14:15:55 -03003311struct ir_scancode_table ir_codes_gadmei_rm008z_table = {
3312 .scan = ir_codes_gadmei_rm008z,
3313 .size = ARRAY_SIZE(ir_codes_gadmei_rm008z),
3314};
3315EXPORT_SYMBOL_GPL(ir_codes_gadmei_rm008z_table);
Mauro Carvalho Chehab35d19882009-11-27 23:25:13 -03003316