1 | // SPDX-License-Identifier: GPL-2.0-or-later |
2 | /* rc5-imon-pad.c - Keytable for SoundGraph iMON PAD and Antec Veris |
3 | * RM-200 Remote Control |
4 | * |
5 | * Copyright (c) 2010 by Jarod Wilson <jarod@redhat.com> |
6 | */ |
7 | |
8 | #include <media/rc-map.h> |
9 | #include <linux/module.h> |
10 | |
11 | /* |
12 | * standard imon remote key table, which isn't really entirely |
13 | * "standard", as different receivers decode the same key on the |
14 | * same remote to different hex codes, and the silkscreened names |
15 | * vary a bit between the SoundGraph and Antec remotes... ugh. |
16 | */ |
17 | static struct rc_map_table imon_pad[] = { |
18 | /* keys sorted mostly by frequency of use to optimize lookups */ |
19 | { 0x2a8195b7, KEY_REWIND }, |
20 | { 0x298315b7, KEY_REWIND }, |
21 | { 0x2b8115b7, KEY_FASTFORWARD }, |
22 | { 0x2b8315b7, KEY_FASTFORWARD }, |
23 | { 0x2b9115b7, KEY_PREVIOUS }, |
24 | { 0x298195b7, KEY_NEXT }, |
25 | |
26 | { 0x2a8115b7, KEY_PLAY }, |
27 | { 0x2a8315b7, KEY_PLAY }, |
28 | { 0x2a9115b7, KEY_PAUSE }, |
29 | { 0x2b9715b7, KEY_STOP }, |
30 | { 0x298115b7, KEY_RECORD }, |
31 | |
32 | { 0x01008000, KEY_UP }, |
33 | { 0x01007f00, KEY_DOWN }, |
34 | { 0x01000080, KEY_LEFT }, |
35 | { 0x0100007f, KEY_RIGHT }, |
36 | |
37 | { 0x2aa515b7, KEY_UP }, |
38 | { 0x289515b7, KEY_DOWN }, |
39 | { 0x29a515b7, KEY_LEFT }, |
40 | { 0x2ba515b7, KEY_RIGHT }, |
41 | |
42 | { 0x0200002c, KEY_SPACE }, /* Select/Space */ |
43 | { 0x2a9315b7, KEY_SPACE }, /* Select/Space */ |
44 | { 0x02000028, KEY_ENTER }, |
45 | { 0x28a195b7, KEY_ENTER }, |
46 | { 0x288195b7, KEY_EXIT }, |
47 | { 0x02000029, KEY_ESC }, |
48 | { 0x2bb715b7, KEY_ESC }, |
49 | { 0x0200002a, KEY_BACKSPACE }, |
50 | { 0x28a115b7, KEY_BACKSPACE }, |
51 | |
52 | { 0x2b9595b7, KEY_MUTE }, |
53 | { 0x28a395b7, KEY_VOLUMEUP }, |
54 | { 0x28a595b7, KEY_VOLUMEDOWN }, |
55 | { 0x289395b7, KEY_CHANNELUP }, |
56 | { 0x288795b7, KEY_CHANNELDOWN }, |
57 | |
58 | { 0x0200001e, KEY_NUMERIC_1 }, |
59 | { 0x0200001f, KEY_NUMERIC_2 }, |
60 | { 0x02000020, KEY_NUMERIC_3 }, |
61 | { 0x02000021, KEY_NUMERIC_4 }, |
62 | { 0x02000022, KEY_NUMERIC_5 }, |
63 | { 0x02000023, KEY_NUMERIC_6 }, |
64 | { 0x02000024, KEY_NUMERIC_7 }, |
65 | { 0x02000025, KEY_NUMERIC_8 }, |
66 | { 0x02000026, KEY_NUMERIC_9 }, |
67 | { 0x02000027, KEY_NUMERIC_0 }, |
68 | |
69 | { 0x28b595b7, KEY_NUMERIC_1 }, |
70 | { 0x2bb195b7, KEY_NUMERIC_2 }, |
71 | { 0x28b195b7, KEY_NUMERIC_3 }, |
72 | { 0x2a8595b7, KEY_NUMERIC_4 }, |
73 | { 0x299595b7, KEY_NUMERIC_5 }, |
74 | { 0x2aa595b7, KEY_NUMERIC_6 }, |
75 | { 0x2b9395b7, KEY_NUMERIC_7 }, |
76 | { 0x2a8515b7, KEY_NUMERIC_8 }, |
77 | { 0x2aa115b7, KEY_NUMERIC_9 }, |
78 | { 0x2ba595b7, KEY_NUMERIC_0 }, |
79 | |
80 | { 0x02200025, KEY_NUMERIC_STAR }, |
81 | { 0x28b515b7, KEY_NUMERIC_STAR }, |
82 | { 0x02200020, KEY_NUMERIC_POUND }, |
83 | { 0x29a115b7, KEY_NUMERIC_POUND }, |
84 | |
85 | { 0x2b8515b7, KEY_VIDEO }, |
86 | { 0x299195b7, KEY_AUDIO }, |
87 | { 0x2ba115b7, KEY_IMAGES }, |
88 | { 0x28a515b7, KEY_TV }, |
89 | { 0x29a395b7, KEY_DVD }, |
90 | { 0x29a295b7, KEY_DVD }, |
91 | |
92 | /* the Menu key between DVD and Subtitle on the RM-200... */ |
93 | { 0x2ba385b7, KEY_MENU }, |
94 | { 0x2ba395b7, KEY_MENU }, |
95 | |
96 | { 0x288515b7, KEY_BOOKMARKS }, |
97 | { 0x2ab715b7, KEY_CAMERA }, /* Thumbnail */ |
98 | { 0x298595b7, KEY_SUBTITLE }, |
99 | { 0x2b8595b7, KEY_LANGUAGE }, |
100 | |
101 | { 0x29a595b7, KEY_ZOOM }, |
102 | { 0x2aa395b7, KEY_SCREEN }, /* FullScreen */ |
103 | |
104 | { 0x299115b7, KEY_KEYBOARD }, |
105 | { 0x299135b7, KEY_KEYBOARD }, |
106 | |
107 | { 0x01010000, BTN_LEFT }, |
108 | { 0x01020000, BTN_RIGHT }, |
109 | { 0x01010080, BTN_LEFT }, |
110 | { 0x01020080, BTN_RIGHT }, |
111 | { 0x688301b7, BTN_LEFT }, |
112 | { 0x688481b7, BTN_RIGHT }, |
113 | |
114 | { 0x2a9395b7, KEY_CYCLEWINDOWS }, /* TaskSwitcher */ |
115 | { 0x2b8395b7, KEY_TIME }, /* Timer */ |
116 | |
117 | { 0x289115b7, KEY_POWER }, |
118 | { 0x29b195b7, KEY_EJECTCD }, /* the one next to play */ |
119 | { 0x299395b7, KEY_EJECTCLOSECD }, /* eject (by TaskSw) */ |
120 | |
121 | { 0x02800000, KEY_CONTEXT_MENU }, /* Left Menu */ |
122 | { 0x2b8195b7, KEY_CONTEXT_MENU }, /* Left Menu*/ |
123 | { 0x02000065, KEY_COMPOSE }, /* RightMenu */ |
124 | { 0x28b715b7, KEY_COMPOSE }, /* RightMenu */ |
125 | { 0x2ab195b7, KEY_MEDIA }, /* Go or MultiMon */ |
126 | { 0x29b715b7, KEY_DASHBOARD }, /* AppLauncher */ |
127 | }; |
128 | |
129 | static struct rc_map_list imon_pad_map = { |
130 | .map = { |
131 | .scan = imon_pad, |
132 | .size = ARRAY_SIZE(imon_pad), |
133 | .rc_proto = RC_PROTO_IMON, |
134 | .name = RC_MAP_IMON_PAD, |
135 | } |
136 | }; |
137 | |
138 | static int __init init_rc_map_imon_pad(void) |
139 | { |
140 | return rc_map_register(map: &imon_pad_map); |
141 | } |
142 | |
143 | static void __exit exit_rc_map_imon_pad(void) |
144 | { |
145 | rc_map_unregister(map: &imon_pad_map); |
146 | } |
147 | |
148 | module_init(init_rc_map_imon_pad) |
149 | module_exit(exit_rc_map_imon_pad) |
150 | |
151 | MODULE_LICENSE("GPL" ); |
152 | MODULE_AUTHOR("Jarod Wilson <jarod@redhat.com>" ); |
153 | MODULE_DESCRIPTION("iMON PAD remote controller keytable" ); |
154 | |