an adapter from any connected PS/2 keyboard to USB HID output
Embed:
(wiki syntax)
Show/hide line numbers
Keymaps.cpp
00001 #include "Keymaps.h" 00002 /** 00003 * 00004 * key description allways references US layout 00005 * Codes from https://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/translate.pdf 00006 */ 00007 Keymaps::Keymaps(LAYOUTS layout, bool ext) 00008 { 00009 if(ext) { // keys with E0 prefix 00010 switch (layout) { 00011 case LO_DE: 00012 K[0x11] = 230; /* Right Alt */ 00013 K[0x14] = 228; /* Right Control */ 00014 K[0x1F] = 227; /* Left GUI */ 00015 K[0x27] = 231; /* Right GUI */ 00016 K[0x2F] = 101; /* App */ 00017 K[0x37] = 102; /* Keyboard Power */ 00018 K[0x4A] = 84; /* Keypad / (Note 1) */ 00019 K[0x5A] = 88; /* Keypad Enter */ 00020 K[0x69] = 77; /* End (Note 1) */ 00021 K[0x6B] = 80; /* Left Arrow (Note 1) */ 00022 K[0x6C] = 74; /* Home (Note 1) */ 00023 K[0x70] = 73; /* Insert (Note 1) */ 00024 K[0x71] = 76; /* Delete (Note 1) */ 00025 K[0x72] = 81; /* Down Arrow (Note 1) */ 00026 K[0x74] = 79; /* Right Arrow (Note 1) */ 00027 K[0x75] = 82; /* Up Arrow (Note 1) */ 00028 K[0x7A] = 78; /* Page Down (Note 1) */ 00029 K[0x7C] = 70; /* Print Screen (Note 1) */ 00030 K[0x7D] = 75; /* Page Up (Note 1) */ 00031 break; 00032 default: //US as HID Standard 00033 K[0x11] = 230; /* RAlt */ 00034 K[0x14] = 228; /* RCtrl */ 00035 K[0x70] = 73; /* Insert */ 00036 K[0x71] = 76; /* Delete */ 00037 K[0x6c] = 74; /* Home */ 00038 K[0x69] = 77; /* End */ 00039 K[0x7d] = 75; /* PgUp */ 00040 K[0x7a] = 78; /* PgDn */ 00041 K[0x6b] = 80; /* Left */ 00042 K[0x75] = 82; /* Up */ 00043 K[0x72] = 81; /* Down */ 00044 K[0x74] = 79; /* Right */ 00045 K[0x4a] = 84; /* KP-/ */ 00046 K[0x5a] = 88; /* KP-Enter */ 00047 K[0x7c] = 70; /* PrtScr */ 00048 K[0x7e] = 48; /* Ctrl+Break */ 00049 K[0x1f] = 227; /* LWin (USB: LGUI) */ 00050 K[0x27] = 231; /* RWin (USB: RGUI) */ 00051 K[0x2f] = 101; /* Menu */ 00052 K[0x3f] = 0; /* Sleep */ 00053 K[0x37] = 0; /* Power */ 00054 K[0x5e] = 0; /* Wake */ 00055 break; 00056 } 00057 00058 } else { 00059 switch (layout) { 00060 case LO_DE: 00061 K[0x1] = 66; /* F9 */ 00062 K[0x3] = 62; /* F5 */ 00063 K[0x4] = 60; /* F3 */ 00064 K[0x5] = 58; /* F1 */ 00065 K[0x6] = 59; /* F2 */ 00066 K[0x7] = 69; /* F12 */ 00067 K[0x8] = 104; /* F13 */ 00068 K[0x9] = 67; /* F10 */ 00069 K[0x10] = 105; /* F14 */ 00070 K[0x11] = 226; /* Left Alt */ 00071 K[0x12] = 225; /* Left Shift */ 00072 K[0x13] = 136; /* Keyboard Intl'2 かかかかひひひかロロロ字 */ 00073 K[0x14] = 224; /* Left Control */ 00074 K[0x15] = 20; /* q Q */ 00075 K[0x16] = 30; /* 1 ! */ 00076 K[0x18] = 106; /* F15 */ 00077 K[0x20] = 107; /* F16 */ 00078 K[0x21] = 6; /* c C */ 00079 K[0x22] = 27; /* x X */ 00080 K[0x23] = 7; /* d D */ 00081 K[0x24] = 8; /* e E */ 00082 K[0x25] = 33; /* 4 $ */ 00083 K[0x26] = 32; /* 3 # */ 00084 K[0x27] = 140; /* Keyboard Int'l 6 (PC9800 Keypad , ) */ 00085 K[0x28] = 108; /* F17 */ 00086 K[0x29] = 44; /* Space */ 00087 K[0x30] = 109; /* F18 */ 00088 K[0x31] = 17; /* n N */ 00089 K[0x32] = 5; /* b B */ 00090 K[0x33] = 11; /* h H */ 00091 K[0x34] = 10; /* g G */ 00092 K[0x35] = 28; /* y Y */ 00093 K[0x36] = 35; /* 6 ^ */ 00094 K[0x38] = 110; /* F19 */ 00095 K[0x40] = 111; /* F20 */ 00096 K[0x41] = 54; /* , < */ 00097 K[0x42] = 14; /* k K */ 00098 K[0x43] = 12; /* i I */ 00099 K[0x44] = 18; /* o O */ 00100 K[0x45] = 39; /* 0 ) */ 00101 K[0x46] = 38; /* 9 ( */ 00102 K[0x48] = 112; /* F21 */ 00103 K[0x49] = 55; /* . > */ 00104 K[0x50] = 113; /* F22 */ 00105 K[0x51] = 135; /* Keyboard Int'l 1 ろ */ 00106 K[0x52] = 52; /* ' " */ 00107 K[0x54] = 47; /* [ { */ 00108 K[0x55] = 46; /* = + */ 00109 K[0x57] = 114; /* F23 */ 00110 K[0x58] = 57; /* Caps Lock */ 00111 K[0x59] = 229; /* Right Shift */ 00112 K[0x61] = 100; /* Europe 2 (Note 2) */ 00113 K[0x62] = 147; /* Keyboard Lang 4 ひひひか */ 00114 K[0x63] = 146; /* Keyboard Lang 3 かかかか */ 00115 K[0x64] = 138; /* Keyboard Int'l 4 前前前 */ 00116 K[0x66] = 42; /* Backspace */ 00117 K[0x67] = 139; /* Keyboard Int'l 5 無変変 */ 00118 K[0x69] = 89; /* Keypad 1 End */ 00119 K[0x70] = 98; /* Keypad 0 Insert */ 00120 K[0x71] = 99; /* Keypad . Delete */ 00121 K[0x72] = 90; /* Keypad 2 Down */ 00122 K[0x73] = 93; /* Keypad 5 */ 00123 K[0x74] = 94; /* Keypad 6 Right */ 00124 K[0x75] = 96; /* Keypad 8 Up */ 00125 K[0x76] = 41; /* Escape */ 00126 K[0x77] = 83; /* Num Lock */ 00127 K[0x78] = 68; /* F11 */ 00128 K[0x79] = 87; /* Keypad + */ 00129 K[0x83] = 64; /* F7 */ 00130 K[0x0A] = 65; /* F8 */ 00131 K[0x0B] = 63; /* F6 */ 00132 K[0x0C] = 61; /* F4 */ 00133 K[0x0D] = 43; /* Tab */ 00134 K[0x0E] = 53; /* ` ~ */ 00135 K[0x0F] = 103; /* Keypad = */ 00136 K[0x1A] = 29; /* z Z */ 00137 K[0x1B] = 22; /* s S */ 00138 K[0x1C] = 4; /* a A */ 00139 K[0x1D] = 26; /* w W */ 00140 K[0x1E] = 31; /* 2 @ */ 00141 K[0x2A] = 25; /* v V */ 00142 K[0x2B] = 9; /* f F */ 00143 K[0x2C] = 23; /* t T */ 00144 K[0x2D] = 21; /* r R */ 00145 K[0x2E] = 34; /* 0,05 */ 00146 K[0x3A] = 16; /* m M */ 00147 K[0x3B] = 13; /* j J */ 00148 K[0x3C] = 24; /* u U */ 00149 K[0x3D] = 36; /* 7 & */ 00150 K[0x3E] = 37; /* 8 * */ 00151 K[0x4A] = 56; /* / ? */ 00152 K[0x4B] = 15; /* l L */ 00153 K[0x4C] = 51; /* ; : */ 00154 K[0x4D] = 19; /* p P */ 00155 K[0x4E] = 45; /* - _ */ 00156 K[0x5A] = 40; /* Return */ 00157 K[0x5B] = 48; /* ] } */ 00158 K[0x5D] = 50; /* Europe 1*/ 00159 K[0x5F] = 115; /* F24 */ 00160 K[0x5F] = 148; /* Keyboard Lang 5 */ 00161 K[0x6A] = 137; /* Keyboard Int'l 2 */ 00162 K[0x6B] = 92; /* Keypad 4 Left */ 00163 K[0x6C] = 95; /* Keypad 7 Home */ 00164 K[0x6D] = 133; /* Keypad , (Brazilian Keypad .) */ 00165 K[0x7A] = 91; /* Keypad 3 PageDn */ 00166 K[0x7B] = 86; /* Keypad - */ 00167 K[0x7C] = 85; /* Keypad * */ 00168 K[0x7D] = 97; /* Keypad 9 PageUp */ 00169 K[0x7E] = 71; /* Scroll Lock */ 00170 K[0xF1] = 145; /* Keyboard Lang 2 */ 00171 K[0xF2] = 144; /* Keyboard Lang 1 한옝/ */ 00172 K[0xFC] = 2; /* POST Fail */ 00173 break; 00174 default: //US as HID Standard 00175 K[0x0e] = 53; /* ` ~ */ 00176 K[0x16] = 30; /* 1 ! */ 00177 K[0x1e] = 31; /* 2 @ */ 00178 K[0x26] = 32; /* 3 # */ 00179 K[0x25] = 33; /* 4 $ */ 00180 K[0x2e] = 34; /* 5 % E */ 00181 K[0x36] = 35; /* 6 ^ */ 00182 K[0x3d] = 36; /* 7 & */ 00183 K[0x3e] = 37; /* 8 * */ 00184 K[0x46] = 38; /* 9 ( */ 00185 K[0x45] = 39; /* 0 ) */ 00186 K[0x4e] = 45; /* - _ */ 00187 K[0x55] = 46; /* = + */ 00188 K[0x66] = 42; /* Backspace */ 00189 K[0x0d] = 43; /* Tab */ 00190 K[0x15] = 20; /* Q */ 00191 K[0x1d] = 26; /* W */ 00192 K[0x24] = 8; /* E */ 00193 K[0x2d] = 21; /* R */ 00194 K[0x2c] = 23; /* T */ 00195 K[0x35] = 28; /* Y */ 00196 K[0x3c] = 24; /* U */ 00197 K[0x43] = 12; /* I */ 00198 K[0x44] = 18; /* O */ 00199 K[0x4d] = 19; /* P */ 00200 K[0x54] = 47; /* [ { */ 00201 K[0x5b] = 48; /* ] } */ 00202 K[0x5d] = 49; /* \ | */ 00203 K[0x58] = 57; /* CapsLock */ 00204 K[0x1c] = 4; /* A */ 00205 K[0x1b] = 22; /* S */ 00206 K[0x23] = 7; /* D */ 00207 K[0x2b] = 9; /* F */ 00208 K[0x34] = 10; /* G */ 00209 K[0x33] = 11; /* H */ 00210 K[0x3b] = 13; /* J */ 00211 K[0x42] = 14; /* K */ 00212 K[0x4b] = 15; /* L */ 00213 K[0x4c] = 51; /* ; : */ 00214 K[0x52] = 52; /* ' " */ 00215 K[0x61] = 100; /* Europe 2*/ 00216 K[0x5a] = 40; /* Enter */ 00217 K[0x12] = 225; /* LShift */ 00218 K[0x1a] = 29; /* Z */ 00219 K[0x22] = 27; /* X */ 00220 K[0x21] = 6; /* C */ 00221 K[0x2a] = 25; /* V */ 00222 K[0x32] = 5; /* B */ 00223 K[0x31] = 17; /* N */ 00224 K[0x3a] = 16; /* M */ 00225 K[0x41] = 54; /* , < */ 00226 K[0x49] = 55; /* . > */ 00227 K[0x4a] = 56; /* / ? */ 00228 K[0x59] = 229; /* RShift */ 00229 K[0x14] = 224; /* LCtrl */ 00230 K[0x11] = 226; /* LAlt */ 00231 K[0x29] = 44; /* space */ 00232 K[0x77] = 83; /* NumLock */ 00233 K[0x6c] = 95; /* KP-7 / Home */ 00234 K[0x6b] = 92; /* KP-4 / Left */ 00235 K[0x69] = 89; /* KP-1 / End */ 00236 K[0x75] = 96; /* KP-8 / Up */ 00237 K[0x73] = 93; /* KP-5 */ 00238 K[0x72] = 90; /* KP-2 / Down */ 00239 K[0x70] = 98; /* KP-0 / Ins */ 00240 K[0x7c] = 85; /* KP-* */ 00241 K[0x7d] = 97; /* KP-9 / PgUp */ 00242 K[0x74] = 94; /* KP-6 / Right */ 00243 K[0x7a] = 91; /* KP-3 / PgDn */ 00244 K[0x71] = 99; /* KP-. / Del */ 00245 K[0x7b] = 86; /* KP-- */ 00246 K[0x79] = 87; /* KP-+ */ 00247 K[0x76] = 41; /* Esc */ 00248 K[0x5] = 58; /* F1 */ 00249 K[0x6] = 59; /* F2 */ 00250 K[0x4] = 60; /* F3 */ 00251 K[0x0c] = 61; /* F4 */ 00252 K[0x3] = 62; /* F5 */ 00253 K[0x0b] = 63; /* F6 */ 00254 K[0x83] = 64; /* F7 */ 00255 K[0x0a] = 65; /* F8 */ 00256 K[0x1] = 66; /* F9 */ 00257 K[0x9] = 67; /* F10 */ 00258 K[0x78] = 68; /* F11 */ 00259 K[0x7] = 69; /* F12 */ 00260 K[0x84] = 154; /* Alt+SysRq */ 00261 K[0x7e] = 71; /* ScrollLock */ 00262 break; 00263 } 00264 } 00265 }
Generated on Fri Jul 15 2022 10:09:06 by
1.7.2