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