00001 /**************************************************************************/ 00035 #include <stdint.h> 00036 #include "usbkbdscancodes.h" 00037 00038 static const uint8_t Scancode2Ascii[]; 00039 00040 /***************************************************************************/ 00050 char USB_HidScancodeToAscii(uint8_t scancode) 00051 { 00052 return Scancode2Ascii[ scancode ]; 00053 } 00054 00055 /**************************************************************************/ 00061 static const uint8_t Scancode2Ascii[ 256 ] = 00062 { 00063 /* Dec Hex Usage */ 00064 /* --------------------------------------- */ 00065 0, /* 0 00 Reserved (no event indicated) */ 00066 0, /* 1 01 Keyboard ErrorRollOver */ 00067 0, /* 2 02 Keyboard POSTFail */ 00068 0, /* 3 03 Keyboard ErrorUndefined */ 00069 'a', /* 4 04 Keyboard a and A */ 00070 'b', /* 5 05 Keyboard b and B */ 00071 'c', /* 6 06 Keyboard c and C */ 00072 'd', /* 7 07 Keyboard d and D */ 00073 'e', /* 8 08 Keyboard e and E */ 00074 'f', /* 9 09 Keyboard f and F */ 00075 'g', /* 10 0A Keyboard g and G */ 00076 'h', /* 11 0B Keyboard h and H */ 00077 'i', /* 12 0C Keyboard i and I */ 00078 'j', /* 13 0D Keyboard j and J */ 00079 'k', /* 14 0E Keyboard k and K */ 00080 'l', /* 15 0F Keyboard l and L */ 00081 'm', /* 16 10 Keyboard m and M */ 00082 'n', /* 17 11 Keyboard n and N */ 00083 'o', /* 18 12 Keyboard o and O */ 00084 'p', /* 19 13 Keyboard p and P */ 00085 'q', /* 20 14 Keyboard q and Q */ 00086 'r', /* 21 15 Keyboard r and R */ 00087 's', /* 22 16 Keyboard s and S */ 00088 't', /* 23 17 Keyboard t and T */ 00089 'u', /* 24 18 Keyboard u and U */ 00090 'v', /* 25 19 Keyboard v and V */ 00091 'w', /* 26 1A Keyboard w and W */ 00092 'x', /* 27 1B Keyboard x and X */ 00093 'y', /* 28 1C Keyboard y and Y */ 00094 'z', /* 29 1D Keyboard z and Z */ 00095 '1', /* 30 1E Keyboard 1 and ! */ 00096 '2', /* 31 1F Keyboard 2 and @ */ 00097 '3', /* 32 20 Keyboard 3 and # */ 00098 '4', /* 33 21 Keyboard 4 and $ */ 00099 '5', /* 34 22 Keyboard 5 and % */ 00100 '6', /* 35 23 Keyboard 6 and ^ */ 00101 '7', /* 36 24 Keyboard 7 and & */ 00102 '8', /* 37 25 Keyboard 8 and * */ 00103 '9', /* 38 26 Keyboard 9 and ( */ 00104 '0', /* 39 27 Keyboard 0 and ) */ 00105 '\r', /* 40 28 Keyboard Return(ENTER) */ 00106 0, /* 41 29 Keyboard ESCAPE */ 00107 0, /* 42 2A Keyboard DELETE(Backspace) */ 00108 0, /* 43 2B Keyboard Tab */ 00109 ' ', /* 44 2C Keyboard Spacebar */ 00110 '-', /* 45 2D Keyboard - and (underscore) */ 00111 '=', /* 46 2E Keyboard = and + */ 00112 '[', /* 47 2F Keyboard [ and { */ 00113 ']', /* 48 30 Keyboard ] and } */ 00114 '\\', /* 49 31 Keyboard \ and | */ 00115 '#', /* 50 32 Keyboard Non-US# and ~ */ 00116 ';', /* 51 33 Keyboard ; and : */ 00117 '‘', /* 52 34 Keyboard ‘ and “ */ 00118 '`', /* 53 35 Keyboard Grave Accent ` and Tilde ~ */ 00119 ',', /* 54 36 Keyboard , and < */ 00120 '.', /* 55 37 Keyboard . and > */ 00121 '/', /* 56 38 Keyboard / and ? */ 00122 0, /* 57 39 Keyboard CapsLock */ 00123 0, /* 58 3A Keyboard F1 */ 00124 0, /* 59 3B Keyboard F2 */ 00125 0, /* 60 3C Keyboard F3 */ 00126 0, /* 61 3D Keyboard F4 */ 00127 0, /* 62 3E Keyboard F5 */ 00128 0, /* 63 3F Keyboard F6 */ 00129 0, /* 64 40 Keyboard F7 */ 00130 0, /* 65 41 Keyboard F8 */ 00131 0, /* 66 42 Keyboard F9 */ 00132 0, /* 67 43 Keyboard F10 */ 00133 0, /* 68 44 Keyboard F11 */ 00134 0, /* 69 45 Keyboard F12 */ 00135 0, /* 70 46 Keyboard PrintScreen */ 00136 0, /* 71 47 Keyboard ScrollLock */ 00137 0, /* 72 48 Keyboard Pause */ 00138 0, /* 73 49 Keyboard Insert */ 00139 0, /* 74 4A Keyboard Home */ 00140 0, /* 75 4B Keyboard PageUp */ 00141 0, /* 76 4C Keyboard Delete Forward */ 00142 0, /* 77 4D Keyboard End */ 00143 0, /* 78 4E Keyboard PageDown */ 00144 0, /* 79 4F Keyboard RightArrow */ 00145 0, /* 80 50 Keyboard LeftArrow */ 00146 0, /* 81 51 Keyboard DownArrow */ 00147 0, /* 82 52 Keyboard UpArrow */ 00148 0, /* 83 53 Keypad NumLock and Clear */ 00149 '/', /* 84 54 Keypad / */ 00150 '*', /* 85 55 Keypad * */ 00151 '-', /* 86 56 Keypad - */ 00152 '+', /* 87 57 Keypad + */ 00153 '\r', /* 88 58 Keypad ENTER */ 00154 '1', /* 89 59 Keypad 1 and End */ 00155 '2', /* 90 5A Keypad 2 and Down Arrow */ 00156 '3', /* 91 5B Keypad 3 and PageDn */ 00157 '4', /* 92 5C Keypad 4 and Left Arrow */ 00158 '5', /* 93 5D Keypad 5 */ 00159 '6', /* 94 5E Keypad 6 and Right Arrow */ 00160 '7', /* 95 5F Keypad 7 and Home */ 00161 '8', /* 96 60 Keypad 8 and Up Arrow */ 00162 '9', /* 97 61 Keypad 9 and PageUp */ 00163 '0', /* 98 62 Keypad 0 and Insert */ 00164 '.', /* 99 63 Keypad . and Delete */ 00165 '\\', /* 100 64 Keyboard Non-US\ and | */ 00166 0, /* 101 65 Keyboard Application */ 00167 0, /* 102 66 Keyboard Power */ 00168 '=', /* 103 67 Keypad = */ 00169 0, /* 104 68 Keyboard F13 */ 00170 0, /* 105 69 Keyboard F14 */ 00171 0, /* 106 6A Keyboard F15 */ 00172 0, /* 107 6B Keyboard F16 */ 00173 0, /* 108 6C Keyboard F17 */ 00174 0, /* 109 6D Keyboard F18 */ 00175 0, /* 110 6E Keyboard F19 */ 00176 0, /* 111 6F Keyboard F20 */ 00177 0, /* 112 70 Keyboard F21 */ 00178 0, /* 113 71 Keyboard F22 */ 00179 0, /* 114 72 Keyboard F23 */ 00180 0, /* 115 73 Keyboard F24 */ 00181 0, /* 116 74 Keyboard Execute */ 00182 0, /* 117 75 Keyboard Help */ 00183 0, /* 118 76 Keyboard Menu */ 00184 0, /* 119 77 Keyboard Select */ 00185 0, /* 120 78 Keyboard Stop */ 00186 0, /* 121 79 Keyboard Again */ 00187 0, /* 122 7A Keyboard Undo */ 00188 0, /* 123 7B Keyboard Cut */ 00189 0, /* 124 7C Keyboard Copy */ 00190 0, /* 125 7D Keyboard Paste */ 00191 0, /* 126 7E Keyboard Find */ 00192 0, /* 127 7F Keyboard Mute */ 00193 0, /* 128 80 Keyboard Volume Up */ 00194 0, /* 129 81 Keyboard Volume Down */ 00195 0, /* 130 82 Keyboard Locking Caps Lock */ 00196 0, /* 131 83 Keyboard Locking Num Lock */ 00197 0, /* 132 84 Keyboard Locking Scroll Lock */ 00198 ',', /* 133 85 Keypad Comma */ 00199 '=', /* 134 86 Keypad Equal Sign */ 00200 0, /* 135 87 Keyboard International 1 */ 00201 0, /* 136 88 Keyboard International 2 */ 00202 0, /* 137 89 Keyboard International 3 */ 00203 0, /* 138 8A Keyboard International 4 */ 00204 0, /* 139 8B Keyboard International 5 */ 00205 0, /* 140 8C Keyboard International 6 */ 00206 0, /* 141 8D Keyboard International 7 */ 00207 0, /* 142 8E Keyboard International 8 */ 00208 0, /* 143 8F Keyboard International 9 */ 00209 0, /* 144 90 Keyboard LANG1 */ 00210 0, /* 145 91 Keyboard LANG2 */ 00211 0, /* 146 92 Keyboard LANG3 */ 00212 0, /* 147 93 Keyboard LANG4 */ 00213 0, /* 148 94 Keyboard LANG5 */ 00214 0, /* 149 95 Keyboard LANG6 */ 00215 0, /* 150 96 Keyboard LANG7 */ 00216 0, /* 151 97 Keyboard LANG8 */ 00217 0, /* 152 98 Keyboard LANG9 */ 00218 0, /* 153 99 Keyboard AlternateErase */ 00219 0, /* 154 9A Keyboard SysReq/Attention */ 00220 0, /* 155 9B Keyboard Cancel */ 00221 0, /* 156 9C Keyboard Clear */ 00222 0, /* 157 9D Keyboard Prior */ 00223 '\r', /* 158 9E Keyboard Return */ 00224 0, /* 159 9F Keyboard Separator */ 00225 0, /* 160 A0 Keyboard Out */ 00226 0, /* 161 A1 Keyboard Oper */ 00227 0, /* 162 A2 Keyboard Clear/Again */ 00228 0, /* 163 A3 Keyboard CrSel/Props */ 00229 0, /* 164 A4 Keyboard ExSel */ 00230 0, /* 165-175 A5-AF Reserved */ 00231 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 00232 0, /* 176 B0 Keypad 00 */ 00233 0, /* 177 B1 Keypad 000 */ 00234 ',', /* 178 B2 Thousands Separator */ 00235 '.', /* 179 B3 Decimal Separator */ 00236 0, /* 180 B4 Currency Unit */ 00237 0, /* 181 B5 Currency Sub-unit */ 00238 '(', /* 182 B6 Keypad ( */ 00239 ')', /* 183 B7 Keypad ) */ 00240 '{', /* 184 B8 Keypad { */ 00241 '}', /* 185 B9 Keypad } */ 00242 0, /* 186 BA Keypad Tab */ 00243 0, /* 187 BB Keypad Backspace */ 00244 'A', /* 188 BC Keypad A */ 00245 'B', /* 189 BD Keypad B */ 00246 'C', /* 190 BE Keypad C */ 00247 'D', /* 191 BF Keypad D */ 00248 'E', /* 192 C0 Keypad E */ 00249 'F', /* 193 C1 Keypad F */ 00250 '^', /* 194 C2 Keypad XOR */ 00251 '^', /* 195 C3 Keypad ^ */ 00252 '%', /* 196 C4 Keypad % */ 00253 '<', /* 197 C5 Keypad < */ 00254 '>', /* 198 C6 Keypad > */ 00255 '&', /* 199 C7 Keypad & */ 00256 0, /* 200 C8 Keypad && */ 00257 '|', /* 201 C9 Keypad | */ 00258 0, /* 202 CA Keypad || */ 00259 ':', /* 203 CB Keypad : */ 00260 '#', /* 204 CC Keypad # */ 00261 ' ', /* 205 CD Keypad Space */ 00262 '@', /* 206 CE Keypad @ */ 00263 '!', /* 207 CF Keypad ! */ 00264 0, /* 208 D0 Keypad Memory Store */ 00265 0, /* 209 D1 Keypad Memory Recall */ 00266 0, /* 210 D2 Keypad Memory Clear */ 00267 0, /* 211 D3 Keypad Memory Add */ 00268 0, /* 212 D4 Keypad Memory Subtract */ 00269 0, /* 213 D5 Keypad Memory Multiply */ 00270 0, /* 214 D6 Keypad Memory Divide */ 00271 '±', /* 215 D7 Keypad +/- */ 00272 0, /* 216 D8 Keypad Clear */ 00273 0, /* 217 D9 Keypad Clear Entry */ 00274 0, /* 218 DA Keypad Binary */ 00275 0, /* 219 DB Keypad Octal */ 00276 0, /* 220 DC Keypad Decimal */ 00277 0, /* 221 DD Keypad Hexadecimal */ 00278 0, 0, /* 222-223 DE-DF Reserved */ 00279 0, /* 224 E0 Keyboard LeftControl */ 00280 0, /* 225 E1 Keyboard LeftShift */ 00281 0, /* 226 E2 Keyboard LeftAlt */ 00282 0, /* 227 E3 Keyboard Left GUI */ 00283 0, /* 228 E4 Keyboard RightControl */ 00284 0, /* 229 E5 Keyboard RightShift */ 00285 0, /* 230 E6 Keyboard RightAlt */ 00286 0, /* 231 E7 Keyboard Right GUI */ 00287 0, /* 232-255 E8-FF Reserved */ 00288 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 00289 };