usbkbdscancodes.c

Go to the documentation of this file.
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 };