[30787] | 1 | /* $Id: keyboard-types.h 44789 2013-02-21 17:10:48Z vboxsync $ */
|
---|
[9991] | 2 | /** @file
|
---|
[30787] | 3 | * VBox/Frontends/Common - X11 keyboard driver translation tables (PC scan code
|
---|
| 4 | * mappings for known keyboard maps).
|
---|
[9991] | 5 | */
|
---|
| 6 |
|
---|
| 7 | /*
|
---|
| 8 | * This library is free software; you can redistribute it and/or
|
---|
| 9 | * modify it under the terms of the GNU Lesser General Public
|
---|
| 10 | * License as published by the Free Software Foundation; either
|
---|
| 11 | * version 2.1 of the License, or (at your option) any later version.
|
---|
| 12 | *
|
---|
| 13 | * This library is distributed in the hope that it will be useful,
|
---|
| 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
---|
| 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
---|
| 16 | * Lesser General Public License for more details.
|
---|
| 17 | *
|
---|
| 18 | * You should have received a copy of the GNU Lesser General Public
|
---|
| 19 | * License along with this library; if not, write to the Free Software
|
---|
| 20 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
---|
| 21 | */
|
---|
| 22 |
|
---|
[11982] | 23 | /*
|
---|
[33656] | 24 | * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
|
---|
| 25 | * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
|
---|
[11982] | 26 | * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
|
---|
| 27 | * a choice of LGPL license versions is made available with the language indicating
|
---|
| 28 | * that LGPLv2 or any later version may be used, or where a choice of which version
|
---|
| 29 | * of the LGPL is applied is otherwise unspecified.
|
---|
| 30 | */
|
---|
| 31 |
|
---|
[9991] | 32 | /* This file contains two tables - one which contains entries identifying
|
---|
| 33 | * the keyboard maps, each of which contains a name along with the mappings
|
---|
| 34 | * of certain fixed keys, and the other of which contains the complete set
|
---|
| 35 | * of mappings for each of the entries in the first table. These tables will
|
---|
| 36 | * be completed when relevant user feedback is received, based on entries
|
---|
| 37 | * autogenerated by VirtualBox in its release log file. */
|
---|
| 38 |
|
---|
| 39 | #ifndef ___VBox_keyboard_tables_h
|
---|
| 40 | # error This file must be included from within keyboard-tables.h
|
---|
| 41 | #endif /* ___VBox_keyboard_tables_h */
|
---|
| 42 |
|
---|
| 43 | /**
|
---|
| 44 | * This table contains a set of known keycode mappings for a set of known
|
---|
[33540] | 45 | * keyboard types. The most important type will be the almost ubiquitous PC
|
---|
[9991] | 46 | * keyboard, but as far as I know some VNC servers and some Sunrays for
|
---|
| 47 | * example use different mappings. I only used a minimal set of key mappings
|
---|
| 48 | * in this table (perhaps slightly too minimal...) because I wanted to be sure
|
---|
| 49 | * that the keys chosen will be present on all keyboards, even very reduced
|
---|
[26291] | 50 | * laptop keyboards.
|
---|
[9991] | 51 | */
|
---|
[22426] | 52 | typedef struct {
|
---|
[9991] | 53 | const char *comment;
|
---|
| 54 | unsigned lctrl;
|
---|
| 55 | unsigned lshift;
|
---|
| 56 | unsigned capslock;
|
---|
| 57 | unsigned tab;
|
---|
| 58 | unsigned esc;
|
---|
| 59 | unsigned enter;
|
---|
| 60 | unsigned up;
|
---|
| 61 | unsigned down;
|
---|
| 62 | unsigned left;
|
---|
| 63 | unsigned right;
|
---|
| 64 | unsigned f1;
|
---|
| 65 | unsigned f2;
|
---|
| 66 | unsigned f3;
|
---|
| 67 | unsigned f4;
|
---|
| 68 | unsigned f5;
|
---|
| 69 | unsigned f6;
|
---|
| 70 | unsigned f7;
|
---|
| 71 | unsigned f8;
|
---|
[22426] | 72 | } keyboard_type;
|
---|
| 73 |
|
---|
| 74 | static keyboard_type main_keyboard_type_list[] = {
|
---|
[13907] | 75 | { "XFree86", 0x25, 0x32, 0x42, 0x17, 0x9, 0x24, 0x62, 0x68,
|
---|
[9991] | 76 | 0x64, 0x66, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a },
|
---|
[13907] | 77 | { "evdev", 0x25, 0x32, 0x42, 0x17, 0x9, 0x24, 0x6f, 0x74,
|
---|
| 78 | 0x71, 0x72, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a },
|
---|
[44789] | 79 | { "XQuartz", 0x43, 0x40, 0x41, 0x38, 0x3d, 0x2c, 0x86, 0x85,
|
---|
| 80 | 0x83, 0x84, 0x82, 0x80, 0x6b, 0x7e, 0x68, 0x69, 0x6a, 0x6c },
|
---|
[33540] | 81 | { NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } /* Sentinel */
|
---|
[9991] | 82 | };
|
---|
| 83 |
|
---|
| 84 | unsigned main_keyboard_type_scans[][256] = {
|
---|
| 85 | { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
|
---|
| 86 | 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
|
---|
| 87 | 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
|
---|
| 88 | 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
|
---|
| 89 | 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x145, 0x46, 0x47,
|
---|
| 90 | 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x0, 0x138, 0x56, 0x57,
|
---|
| 91 | 0x58, 0x147, 0x148, 0x149, 0x14b, 0x0, 0x14d, 0x14f, 0x150, 0x151, 0x152, 0x153, 0x11c, 0x11d, 0x45, 0x137,
|
---|
| 92 | 0x135, 0x138, 0x0, 0x15b, 0x15c, 0x15d, 0x13c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x138, 0x0, 0x0, 0x0,
|
---|
[11797] | 93 | 0x0, 0x79, 0x0, 0x7b, 0x0, 0x7d, 0x7e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
---|
[9991] | 94 | 0x110, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x119, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
---|
| 95 | 0x120, 0x0, 0x122, 0x0, 0x124, 0x15f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x12e, 0x0,
|
---|
| 96 | 0x130, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
---|
| 97 | 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
---|
[11797] | 98 | 0x70, 0x0, 0x0, 0x73, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
---|
[9991] | 99 | 0x0, 0x0, 0x0, 0x0, 0x0, 0x165, 0x166, 0x167, 0x168, 0x169, 0x16a, 0x16b, 0x16c, 0x16d, 0x0, 0x0,
|
---|
| 100 | 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0
|
---|
| 101 | },
|
---|
[13907] | 102 | { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
|
---|
| 103 | 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
|
---|
| 104 | 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
|
---|
| 105 | 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
|
---|
| 106 | 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x145, 0x46, 0x47,
|
---|
| 107 | 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x138, 0x29, 0x56, 0x57,
|
---|
| 108 | 0x58, 0x73, 0x0, 0x0, 0x79, 0x70, 0x7b, 0x0, 0x11c, 0x11d, 0x135, 0x137, 0x138, 0x0, 0x147, 0x148,
|
---|
| 109 | 0x149, 0x14b, 0x14d, 0x14f, 0x150, 0x151, 0x152, 0x153, 0x0, 0x120, 0x12e, 0x130, 0x15e, 0x0, 0x0, 0x45,
|
---|
[32895] | 110 | 0x0, 0x7e, 0xf2, 0xf1, 0x7d, 0x15b, 0x15c, 0x15d, 0x168, 0x105, 0x106, 0x107, 0x10c, 0x118, 0x65, 0x10a,
|
---|
[13907] | 111 | 0x110, 0x117, 0x175, 0x0, 0x0, 0x0, 0x15f, 0x163, 0x0, 0x119, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
---|
| 112 | 0x120, 0x0, 0x122, 0x16c, 0x124, 0x15f, 0x16a, 0x169, 0x0, 0x0, 0x0, 0x119, 0x122, 0x110, 0x12e, 0x0,
|
---|
[26291] | 113 | 0x130, 0x0, 0x0, 0x0, 0x132, 0x167, 0x140, 0x0, 0x0, 0x10b, 0x18b, 0x0, 0x0, 0x0, 0x105, 0x0,
|
---|
| 114 | 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x138, 0x0, 0x0, 0x0, 0x0,
|
---|
| 115 | 0x122, 0x122, 0x0, 0x0, 0x0, 0x0, 0x140, 0x122, 0x169, 0x0, 0x137, 0x0, 0x0, 0x0, 0x0, 0x0,
|
---|
| 116 | 0x0, 0x165, 0x0, 0x0, 0x0, 0x165, 0x166, 0x167, 0x168, 0x169, 0x16a, 0x16b, 0x16c, 0x16d, 0x0, 0x143,
|
---|
[13907] | 117 | 0x141, 0x0, 0x157, 0x105, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0
|
---|
| 118 | },
|
---|
[44789] | 119 | { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1e, 0x1f, 0x20, 0x21, 0x23, 0x22, 0x2c, 0x2d,
|
---|
| 120 | 0x2e, 0x2f, 0x29, 0x30, 0x10, 0x11, 0x12, 0x13, 0x15, 0x14, 0x2, 0x3, 0x4, 0x5, 0x7, 0x6,
|
---|
| 121 | 0xd, 0xa, 0x8, 0xc, 0x9, 0xb, 0x1b, 0x18, 0x16, 0x1a, 0x17, 0x19, 0x1c, 0x26, 0x24, 0x28,
|
---|
| 122 | 0x25, 0x27, 0x2b, 0x33, 0x35, 0x31, 0x32, 0x34, 0xf, 0x39, 0x56, 0xe, 0x0, 0x1, 0x0, 0x15b,
|
---|
| 123 | 0x2a, 0x3a, 0x38, 0x1d, 0x36, 0x138, 0x11d, 0x15c, 0x0, 0x0, 0x0, 0x37, 0x0, 0x4e, 0x0, 0x1,
|
---|
| 124 | 0x0, 0x0, 0x0, 0x135, 0x11c, 0x0, 0x4a, 0x0, 0x0, 0x0, 0x52, 0x4f, 0x50, 0x51, 0x4b, 0x4c,
|
---|
| 125 | 0x4d, 0x47, 0x0, 0x48, 0x49, 0x0, 0x0, 0x0, 0x3f, 0x40, 0x41, 0x3d, 0x42, 0x43, 0x0, 0x57,
|
---|
| 126 | 0x0, 0x64, 0x0, 0x65, 0x0, 0x44, 0x0, 0x58, 0x0, 0x66, 0x6e, 0x147, 0x149, 0x153, 0x3e, 0x14f,
|
---|
| 127 | 0x3c, 0x151, 0x3b, 0x14b, 0x14d, 0x150, 0x148, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
---|
| 128 | 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
---|
| 129 | 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
---|
| 130 | 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
---|
| 131 | 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
---|
| 132 | 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
---|
| 133 | 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
---|
| 134 | 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0
|
---|
| 135 | },
|
---|
[33540] | 136 | { 0 } /* Sentinel */
|
---|
[9991] | 137 | };
|
---|
[26714] | 138 |
|
---|