usbkbdscancodes.c

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