1 1.3 manu /* $NetBSD: adb_usb_map.c,v 1.3 2022/05/14 01:16:55 manu Exp $ */ 2 1.1 macallan 3 1.1 macallan /*- 4 1.1 macallan * Copyright (c) 2006 Michael Lorenz 5 1.1 macallan * All rights reserved. 6 1.1 macallan * 7 1.1 macallan * Redistribution and use in source and binary forms, with or without 8 1.1 macallan * modification, are permitted provided that the following conditions 9 1.1 macallan * are met: 10 1.1 macallan * 1. Redistributions of source code must retain the above copyright 11 1.1 macallan * notice, this list of conditions and the following disclaimer. 12 1.1 macallan * 2. Redistributions in binary form must reproduce the above copyright 13 1.1 macallan * notice, this list of conditions and the following disclaimer in the 14 1.1 macallan * documentation and/or other materials provided with the distribution. 15 1.1 macallan * 16 1.1 macallan * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 17 1.1 macallan * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 18 1.1 macallan * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 19 1.1 macallan * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 20 1.1 macallan * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 21 1.1 macallan * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 22 1.1 macallan * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 23 1.1 macallan * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 24 1.1 macallan * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 25 1.1 macallan * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 26 1.1 macallan * POSSIBILITY OF SUCH DAMAGE. 27 1.1 macallan */ 28 1.1 macallan 29 1.1 macallan #include <sys/cdefs.h> 30 1.3 manu __KERNEL_RCSID(0, "$NetBSD: adb_usb_map.c,v 1.3 2022/05/14 01:16:55 manu Exp $"); 31 1.1 macallan 32 1.1 macallan #include <sys/param.h> 33 1.1 macallan #include <sys/device.h> 34 1.1 macallan 35 1.1 macallan #include <dev/wscons/wsksymvar.h> 36 1.1 macallan 37 1.3 manu /* 38 1.3 manu * Explanation of the differences between ANSI, ISO and JIS: 39 1.3 manu * https://github.com/tmk/tmk_keyboard/blob/master/converter/adb_usb/matrix.c 40 1.3 manu * Summary: 41 1.3 manu * ADB scan code USB scan code 42 1.3 manu * ANSI ISO JIS ANSI ISO JIS 43 1.3 manu * 50 10 50 GRAVE/53 GRAVE/53 GRAVE/53 44 1.3 manu * ---- 50 ---- ---- NUBS/100 ---- 45 1.3 manu * 42 112 42 BSLS/49 NUHS/50 NUHS/50 46 1.3 manu * ---- ---- 93 ---- ---- JPY/137 47 1.3 manu * ---- ---- 94 ---- ---- RO/135 48 1.3 manu * 49 1.3 manu * With: 50 1.3 manu * NUBS = Non-US Backslash 51 1.3 manu * NUHS = Non-US Hash 52 1.3 manu * BSLS = Backslash 53 1.3 manu * JPY = Japaneese Yen 54 1.3 manu * RO = ? 55 1.3 manu * 56 1.3 manu * ANSI backslash should be USB scancode 49 but is 50 in the 57 1.3 manu * array below. For most encoding in sys/dev/hid/hidkbdmap.c 58 1.3 manu * (all used for ADB?), 49 and 50 have the same definition. 59 1.3 manu */ 60 1.3 manu 61 1.3 manu keysym_t adb_to_usb_ansi[] = { 62 1.3 manu /* 0, KS_a */ 4, 63 1.3 manu /* 1, KS_s */ 22, 64 1.3 manu /* 2, KS_d */ 7, 65 1.3 manu /* 3, KS_f */ 9, 66 1.3 manu /* 4, KS_h */ 11, 67 1.3 manu /* 5, KS_g */ 10, 68 1.3 manu /* 6, KS_z */ 29, 69 1.3 manu /* 7, KS_x */ 27, 70 1.3 manu /* 8, KS_c */ 6, 71 1.3 manu /* 9, KS_v */ 25, 72 1.3 manu /* 10, KS_paragraph */ 53, 73 1.3 manu /* 11, KS_b */ 5, 74 1.3 manu /* 12, KS_q */ 20, 75 1.3 manu /* 13, KS_w */ 26, 76 1.3 manu /* 14, KS_e */ 8, 77 1.3 manu /* 15, KS_r */ 21, 78 1.3 manu /* 16, KS_y */ 28, 79 1.3 manu /* 17, KS_t */ 23, 80 1.3 manu /* 18, KS_1 */ 30, 81 1.3 manu /* 19, KS_2 */ 31, 82 1.3 manu /* 20, KS_3 */ 32, 83 1.3 manu /* 21, KS_4 */ 33, 84 1.3 manu /* 22, KS_6 */ 35, 85 1.3 manu /* 23, KS_5 */ 34, 86 1.3 manu /* 24, KS_equal */ 46, 87 1.3 manu /* 25, KS_9 */ 38, 88 1.3 manu /* 26, KS_7 */ 36, 89 1.3 manu /* 27, KS_minus */ 45, 90 1.3 manu /* 28, KS_8 */ 37, 91 1.3 manu /* 29, KS_0 */ 39, 92 1.3 manu /* 30, KS_bracketright */ 48, 93 1.3 manu /* 31, KS_o */ 18, 94 1.3 manu /* 32, KS_u */ 24, 95 1.3 manu /* 33, KS_bracketleft */ 47, 96 1.3 manu /* 34, KS_i */ 12, 97 1.3 manu /* 35, KS_p */ 19, 98 1.3 manu /* 36, KS_Return */ 40, 99 1.3 manu /* 37, KS_l */ 15, 100 1.3 manu /* 38, KS_j */ 13, 101 1.3 manu /* 39, KS_apostrophe */ 52, 102 1.3 manu /* 40, KS_k */ 14, 103 1.3 manu /* 41, KS_semicolon */ 51, 104 1.3 manu /* 42, KS_backslash */ 50, /* Should be 49 */ 105 1.3 manu /* 43, KS_comma */ 54, 106 1.3 manu /* 44, KS_slash */ 56, 107 1.3 manu /* 45, KS_n */ 17, 108 1.3 manu /* 46, KS_m */ 16, 109 1.3 manu /* 47, KS_period */ 55, 110 1.3 manu /* 48, KS_Tab */ 43, 111 1.3 manu /* 49, KS_space */ 44, 112 1.3 manu /* 50, KS_grave */ 53, 113 1.3 manu /* 51, KS_Delete */ 42, 114 1.3 manu /* 52, KS_KP_Enter */ 88, 115 1.3 manu /* 53, KS_Escape */ 41, 116 1.3 manu /* 54, KS_Control_L */ 224, 117 1.3 manu /* 55, KS_Cmd */ 227, /* left meta */ 118 1.3 manu /* 56, KS_Shift_L */ 225, 119 1.3 manu /* 57, KS_Caps_Lock */ 57, 120 1.3 manu /* 58, KS_Option */ 226, 121 1.3 manu /* 59, KS_Left */ 80, 122 1.3 manu /* 60, KS_Right */ 79, 123 1.3 manu /* 61, KS_Down */ 81, 124 1.3 manu /* 62, KS_Up */ 82, 125 1.3 manu /* 63 */ 0, 126 1.3 manu /* 64 */ 0, 127 1.3 manu /* 65, KS_KP_Decimal */ 99, 128 1.3 manu /* 66 */ 0, 129 1.3 manu /* 67, KS_KP_Multiply */ 85, 130 1.3 manu /* 68 */ 0, 131 1.3 manu /* 69, KS_KP_Add */ 87, 132 1.3 manu /* 70 */ 0, 133 1.3 manu /* 71, KS_Num_Lock */ 83, 134 1.3 manu /* 72 */ 0, 135 1.3 manu /* 73 */ 0, 136 1.3 manu /* 74 */ 0, 137 1.3 manu /* 75, KS_KP_Divide */ 84, 138 1.3 manu /* 76, KS_KP_Enter */ 88, 139 1.3 manu /* 77 */ 0, 140 1.3 manu /* 78, KS_KP_Subtract */ 86, 141 1.3 manu /* 79 */ 0, 142 1.3 manu /* 80 */ 0, 143 1.3 manu /* 81, KS_KP_Equal */ 46, /* no KP_EQUAL on USB? */ 144 1.3 manu /* 82, KS_KP_Insert, 0 */ 98, 145 1.3 manu /* 83, KS_KP_End, 1 */ 89, 146 1.3 manu /* 84, KS_KP_Down, 2 */ 90, 147 1.3 manu /* 85, KS_KP_Next, 3 */ 91, 148 1.3 manu /* 86, KS_KP_Left, 4 */ 92, 149 1.3 manu /* 87, KS_KP_Begin 5 */ 93, 150 1.3 manu /* 88, KS_KP_Right 6 */ 94, 151 1.3 manu /* 89, KS_KP_Home 7 */ 95, 152 1.3 manu /* 90 */ 0, 153 1.3 manu /* 91, KS_KP_Up 8 */ 96, 154 1.3 manu /* 92, KS_KP_Prior 9 */ 97, 155 1.3 manu /* 93, KS_backslash */ 100, 156 1.3 manu /* 94, KS_underscore */ 45, 157 1.3 manu /* 95, KS_KP_Delete . */ 99, 158 1.3 manu /* 96, KS_f5 */ 62, 159 1.3 manu /* 97, KS_f6 */ 63, 160 1.3 manu /* 98, KS_f7 */ 64, 161 1.3 manu /* 99, KS_f3 */ 60, 162 1.3 manu /* 100, KS_f8 */ 65, 163 1.3 manu /* 101, KS_f9 */ 66, 164 1.3 manu /* 102 */ 0, 165 1.3 manu /* 103, KS_f11 */ 68, 166 1.3 manu /* 104 */ 0, 167 1.3 manu /* 105, KS_Print_Screen */ 70, 168 1.3 manu /* 106, KS_KP_Enter */ 88, 169 1.3 manu /* 107, KS_Hold_Screen */ 71, 170 1.3 manu /* 108 */ 0, 171 1.3 manu /* 109, KS_f10 */ 67, 172 1.3 manu /* 110 */ 0, 173 1.3 manu /* 111, KS_f12 */ 69, 174 1.3 manu /* 112 */ 0, 175 1.3 manu /* 113, KS_Pause */ 72, 176 1.3 manu /* 114, KS_Insert */ 73, 177 1.3 manu /* 115, KS_Home */ 74, 178 1.3 manu /* 116, KS_Prior */ 75, 179 1.3 manu /* 117, KS_BackSpace */ 76, 180 1.3 manu /* 118, KS_f4 */ 61, 181 1.3 manu /* 119, KS_End */ 77, 182 1.3 manu /* 120, KS_f2 */ 59, 183 1.3 manu /* 121, KS_Next */ 78, 184 1.3 manu /* 122, KS_f1 */ 58, 185 1.3 manu /* 123, KS_Shift_R */ 229, 186 1.3 manu /* 124, KS_Alt_R */ 230, 187 1.3 manu /* 125, KS_Control_R */ 228, 188 1.3 manu /* 126 */ 0, 189 1.3 manu /* 127, KS_Cmd_Debugger */ 102 190 1.3 manu }; 191 1.3 manu 192 1.3 manu keysym_t adb_to_usb_iso[] = { 193 1.1 macallan /* 0, KS_a */ 4, 194 1.1 macallan /* 1, KS_s */ 22, 195 1.1 macallan /* 2, KS_d */ 7, 196 1.1 macallan /* 3, KS_f */ 9, 197 1.1 macallan /* 4, KS_h */ 11, 198 1.1 macallan /* 5, KS_g */ 10, 199 1.1 macallan /* 6, KS_z */ 29, 200 1.1 macallan /* 7, KS_x */ 27, 201 1.1 macallan /* 8, KS_c */ 6, 202 1.1 macallan /* 9, KS_v */ 25, 203 1.1 macallan /* 10, KS_paragraph */ 53, 204 1.1 macallan /* 11, KS_b */ 5, 205 1.1 macallan /* 12, KS_q */ 20, 206 1.1 macallan /* 13, KS_w */ 26, 207 1.1 macallan /* 14, KS_e */ 8, 208 1.1 macallan /* 15, KS_r */ 21, 209 1.1 macallan /* 16, KS_y */ 28, 210 1.1 macallan /* 17, KS_t */ 23, 211 1.1 macallan /* 18, KS_1 */ 30, 212 1.1 macallan /* 19, KS_2 */ 31, 213 1.1 macallan /* 20, KS_3 */ 32, 214 1.1 macallan /* 21, KS_4 */ 33, 215 1.1 macallan /* 22, KS_6 */ 35, 216 1.1 macallan /* 23, KS_5 */ 34, 217 1.1 macallan /* 24, KS_equal */ 46, 218 1.1 macallan /* 25, KS_9 */ 38, 219 1.1 macallan /* 26, KS_7 */ 36, 220 1.1 macallan /* 27, KS_minus */ 45, 221 1.1 macallan /* 28, KS_8 */ 37, 222 1.1 macallan /* 29, KS_0 */ 39, 223 1.1 macallan /* 30, KS_bracketright */ 48, 224 1.1 macallan /* 31, KS_o */ 18, 225 1.1 macallan /* 32, KS_u */ 24, 226 1.1 macallan /* 33, KS_bracketleft */ 47, 227 1.1 macallan /* 34, KS_i */ 12, 228 1.1 macallan /* 35, KS_p */ 19, 229 1.1 macallan /* 36, KS_Return */ 40, 230 1.1 macallan /* 37, KS_l */ 15, 231 1.1 macallan /* 38, KS_j */ 13, 232 1.1 macallan /* 39, KS_apostrophe */ 52, 233 1.1 macallan /* 40, KS_k */ 14, 234 1.1 macallan /* 41, KS_semicolon */ 51, 235 1.1 macallan /* 42, KS_backslash */ 50, 236 1.1 macallan /* 43, KS_comma */ 54, 237 1.1 macallan /* 44, KS_slash */ 56, 238 1.1 macallan /* 45, KS_n */ 17, 239 1.1 macallan /* 46, KS_m */ 16, 240 1.1 macallan /* 47, KS_period */ 55, 241 1.1 macallan /* 48, KS_Tab */ 43, 242 1.1 macallan /* 49, KS_space */ 44, 243 1.3 manu /* 50, KS_grave */ 100, 244 1.1 macallan /* 51, KS_Delete */ 42, 245 1.1 macallan /* 52, KS_KP_Enter */ 88, 246 1.1 macallan /* 53, KS_Escape */ 41, 247 1.1 macallan /* 54, KS_Control_L */ 224, 248 1.1 macallan /* 55, KS_Cmd */ 227, /* left meta */ 249 1.1 macallan /* 56, KS_Shift_L */ 225, 250 1.1 macallan /* 57, KS_Caps_Lock */ 57, 251 1.1 macallan /* 58, KS_Option */ 226, 252 1.1 macallan /* 59, KS_Left */ 80, 253 1.1 macallan /* 60, KS_Right */ 79, 254 1.1 macallan /* 61, KS_Down */ 81, 255 1.1 macallan /* 62, KS_Up */ 82, 256 1.1 macallan /* 63 */ 0, 257 1.1 macallan /* 64 */ 0, 258 1.1 macallan /* 65, KS_KP_Decimal */ 99, 259 1.1 macallan /* 66 */ 0, 260 1.1 macallan /* 67, KS_KP_Multiply */ 85, 261 1.1 macallan /* 68 */ 0, 262 1.1 macallan /* 69, KS_KP_Add */ 87, 263 1.1 macallan /* 70 */ 0, 264 1.1 macallan /* 71, KS_Num_Lock */ 83, 265 1.1 macallan /* 72 */ 0, 266 1.1 macallan /* 73 */ 0, 267 1.1 macallan /* 74 */ 0, 268 1.1 macallan /* 75, KS_KP_Divide */ 84, 269 1.1 macallan /* 76, KS_KP_Enter */ 88, 270 1.1 macallan /* 77 */ 0, 271 1.1 macallan /* 78, KS_KP_Subtract */ 86, 272 1.1 macallan /* 79 */ 0, 273 1.1 macallan /* 80 */ 0, 274 1.1 macallan /* 81, KS_KP_Equal */ 46, /* no KP_EQUAL on USB? */ 275 1.1 macallan /* 82, KS_KP_Insert, 0 */ 98, 276 1.1 macallan /* 83, KS_KP_End, 1 */ 89, 277 1.1 macallan /* 84, KS_KP_Down, 2 */ 90, 278 1.1 macallan /* 85, KS_KP_Next, 3 */ 91, 279 1.1 macallan /* 86, KS_KP_Left, 4 */ 92, 280 1.1 macallan /* 87, KS_KP_Begin 5 */ 93, 281 1.1 macallan /* 88, KS_KP_Right 6 */ 94, 282 1.1 macallan /* 89, KS_KP_Home 7 */ 95, 283 1.1 macallan /* 90 */ 0, 284 1.1 macallan /* 91, KS_KP_Up 8 */ 96, 285 1.1 macallan /* 92, KS_KP_Prior 9 */ 97, 286 1.1 macallan /* 93, KS_backslash */ 100, 287 1.1 macallan /* 94, KS_underscore */ 45, 288 1.1 macallan /* 95, KS_KP_Delete . */ 99, 289 1.1 macallan /* 96, KS_f5 */ 62, 290 1.1 macallan /* 97, KS_f6 */ 63, 291 1.1 macallan /* 98, KS_f7 */ 64, 292 1.1 macallan /* 99, KS_f3 */ 60, 293 1.1 macallan /* 100, KS_f8 */ 65, 294 1.1 macallan /* 101, KS_f9 */ 66, 295 1.1 macallan /* 102 */ 0, 296 1.1 macallan /* 103, KS_f11 */ 68, 297 1.1 macallan /* 104 */ 0, 298 1.1 macallan /* 105, KS_Print_Screen */ 70, 299 1.1 macallan /* 106, KS_KP_Enter */ 88, 300 1.1 macallan /* 107, KS_Hold_Screen */ 71, 301 1.1 macallan /* 108 */ 0, 302 1.1 macallan /* 109, KS_f10 */ 67, 303 1.1 macallan /* 110 */ 0, 304 1.1 macallan /* 111, KS_f12 */ 69, 305 1.1 macallan /* 112 */ 0, 306 1.1 macallan /* 113, KS_Pause */ 72, 307 1.1 macallan /* 114, KS_Insert */ 73, 308 1.1 macallan /* 115, KS_Home */ 74, 309 1.1 macallan /* 116, KS_Prior */ 75, 310 1.1 macallan /* 117, KS_BackSpace */ 76, 311 1.1 macallan /* 118, KS_f4 */ 61, 312 1.1 macallan /* 119, KS_End */ 77, 313 1.1 macallan /* 120, KS_f2 */ 59, 314 1.1 macallan /* 121, KS_Next */ 78, 315 1.1 macallan /* 122, KS_f1 */ 58, 316 1.2 macallan /* 123, KS_Shift_R */ 229, 317 1.2 macallan /* 124, KS_Alt_R */ 230, 318 1.2 macallan /* 125, KS_Control_R */ 228, 319 1.1 macallan /* 126 */ 0, 320 1.1 macallan /* 127, KS_Cmd_Debugger */ 102 321 1.1 macallan }; 322 1.3 manu 323 1.3 manu keysym_t adb_to_usb_jis[] = { /* XXX not updated from ansi yet */ 324 1.3 manu /* 0, KS_a */ 4, 325 1.3 manu /* 1, KS_s */ 22, 326 1.3 manu /* 2, KS_d */ 7, 327 1.3 manu /* 3, KS_f */ 9, 328 1.3 manu /* 4, KS_h */ 11, 329 1.3 manu /* 5, KS_g */ 10, 330 1.3 manu /* 6, KS_z */ 29, 331 1.3 manu /* 7, KS_x */ 27, 332 1.3 manu /* 8, KS_c */ 6, 333 1.3 manu /* 9, KS_v */ 25, 334 1.3 manu /* 10, KS_paragraph */ 53, 335 1.3 manu /* 11, KS_b */ 5, 336 1.3 manu /* 12, KS_q */ 20, 337 1.3 manu /* 13, KS_w */ 26, 338 1.3 manu /* 14, KS_e */ 8, 339 1.3 manu /* 15, KS_r */ 21, 340 1.3 manu /* 16, KS_y */ 28, 341 1.3 manu /* 17, KS_t */ 23, 342 1.3 manu /* 18, KS_1 */ 30, 343 1.3 manu /* 19, KS_2 */ 31, 344 1.3 manu /* 20, KS_3 */ 32, 345 1.3 manu /* 21, KS_4 */ 33, 346 1.3 manu /* 22, KS_6 */ 35, 347 1.3 manu /* 23, KS_5 */ 34, 348 1.3 manu /* 24, KS_equal */ 46, 349 1.3 manu /* 25, KS_9 */ 38, 350 1.3 manu /* 26, KS_7 */ 36, 351 1.3 manu /* 27, KS_minus */ 45, 352 1.3 manu /* 28, KS_8 */ 37, 353 1.3 manu /* 29, KS_0 */ 39, 354 1.3 manu /* 30, KS_bracketright */ 48, 355 1.3 manu /* 31, KS_o */ 18, 356 1.3 manu /* 32, KS_u */ 24, 357 1.3 manu /* 33, KS_bracketleft */ 47, 358 1.3 manu /* 34, KS_i */ 12, 359 1.3 manu /* 35, KS_p */ 19, 360 1.3 manu /* 36, KS_Return */ 40, 361 1.3 manu /* 37, KS_l */ 15, 362 1.3 manu /* 38, KS_j */ 13, 363 1.3 manu /* 39, KS_apostrophe */ 52, 364 1.3 manu /* 40, KS_k */ 14, 365 1.3 manu /* 41, KS_semicolon */ 51, 366 1.3 manu /* 42, KS_backslash */ 50, 367 1.3 manu /* 43, KS_comma */ 54, 368 1.3 manu /* 44, KS_slash */ 56, 369 1.3 manu /* 45, KS_n */ 17, 370 1.3 manu /* 46, KS_m */ 16, 371 1.3 manu /* 47, KS_period */ 55, 372 1.3 manu /* 48, KS_Tab */ 43, 373 1.3 manu /* 49, KS_space */ 44, 374 1.3 manu /* 50, KS_grave */ 53, 375 1.3 manu /* 51, KS_Delete */ 42, 376 1.3 manu /* 52, KS_KP_Enter */ 88, 377 1.3 manu /* 53, KS_Escape */ 41, 378 1.3 manu /* 54, KS_Control_L */ 224, 379 1.3 manu /* 55, KS_Cmd */ 227, /* left meta */ 380 1.3 manu /* 56, KS_Shift_L */ 225, 381 1.3 manu /* 57, KS_Caps_Lock */ 57, 382 1.3 manu /* 58, KS_Option */ 226, 383 1.3 manu /* 59, KS_Left */ 80, 384 1.3 manu /* 60, KS_Right */ 79, 385 1.3 manu /* 61, KS_Down */ 81, 386 1.3 manu /* 62, KS_Up */ 82, 387 1.3 manu /* 63 */ 0, 388 1.3 manu /* 64 */ 0, 389 1.3 manu /* 65, KS_KP_Decimal */ 99, 390 1.3 manu /* 66 */ 0, 391 1.3 manu /* 67, KS_KP_Multiply */ 85, 392 1.3 manu /* 68 */ 0, 393 1.3 manu /* 69, KS_KP_Add */ 87, 394 1.3 manu /* 70 */ 0, 395 1.3 manu /* 71, KS_Num_Lock */ 83, 396 1.3 manu /* 72 */ 0, 397 1.3 manu /* 73 */ 0, 398 1.3 manu /* 74 */ 0, 399 1.3 manu /* 75, KS_KP_Divide */ 84, 400 1.3 manu /* 76, KS_KP_Enter */ 88, 401 1.3 manu /* 77 */ 0, 402 1.3 manu /* 78, KS_KP_Subtract */ 86, 403 1.3 manu /* 79 */ 0, 404 1.3 manu /* 80 */ 0, 405 1.3 manu /* 81, KS_KP_Equal */ 46, /* no KP_EQUAL on USB? */ 406 1.3 manu /* 82, KS_KP_Insert, 0 */ 98, 407 1.3 manu /* 83, KS_KP_End, 1 */ 89, 408 1.3 manu /* 84, KS_KP_Down, 2 */ 90, 409 1.3 manu /* 85, KS_KP_Next, 3 */ 91, 410 1.3 manu /* 86, KS_KP_Left, 4 */ 92, 411 1.3 manu /* 87, KS_KP_Begin 5 */ 93, 412 1.3 manu /* 88, KS_KP_Right 6 */ 94, 413 1.3 manu /* 89, KS_KP_Home 7 */ 95, 414 1.3 manu /* 90 */ 0, 415 1.3 manu /* 91, KS_KP_Up 8 */ 96, 416 1.3 manu /* 92, KS_KP_Prior 9 */ 97, 417 1.3 manu /* 93, KS_backslash */ 137, /* JPY */ 418 1.3 manu /* 94, KS_underscore */ 135, /* RO */ 419 1.3 manu /* 95, KS_KP_Delete . */ 99, 420 1.3 manu /* 96, KS_f5 */ 62, 421 1.3 manu /* 97, KS_f6 */ 63, 422 1.3 manu /* 98, KS_f7 */ 64, 423 1.3 manu /* 99, KS_f3 */ 60, 424 1.3 manu /* 100, KS_f8 */ 65, 425 1.3 manu /* 101, KS_f9 */ 66, 426 1.3 manu /* 102 */ 0, 427 1.3 manu /* 103, KS_f11 */ 68, 428 1.3 manu /* 104 */ 0, 429 1.3 manu /* 105, KS_Print_Screen */ 70, 430 1.3 manu /* 106, KS_KP_Enter */ 88, 431 1.3 manu /* 107, KS_Hold_Screen */ 71, 432 1.3 manu /* 108 */ 0, 433 1.3 manu /* 109, KS_f10 */ 67, 434 1.3 manu /* 110 */ 0, 435 1.3 manu /* 111, KS_f12 */ 69, 436 1.3 manu /* 112 */ 0, 437 1.3 manu /* 113, KS_Pause */ 72, 438 1.3 manu /* 114, KS_Insert */ 73, 439 1.3 manu /* 115, KS_Home */ 74, 440 1.3 manu /* 116, KS_Prior */ 75, 441 1.3 manu /* 117, KS_BackSpace */ 76, 442 1.3 manu /* 118, KS_f4 */ 61, 443 1.3 manu /* 119, KS_End */ 77, 444 1.3 manu /* 120, KS_f2 */ 59, 445 1.3 manu /* 121, KS_Next */ 78, 446 1.3 manu /* 122, KS_f1 */ 58, 447 1.3 manu /* 123, KS_Shift_R */ 229, 448 1.3 manu /* 124, KS_Alt_R */ 230, 449 1.3 manu /* 125, KS_Control_R */ 228, 450 1.3 manu /* 126 */ 0, 451 1.3 manu /* 127, KS_Cmd_Debugger */ 102 452 1.3 manu }; 453 1.3 manu 454