2  * Keyboard mappings for DEC LK201/401/501 keyboards
 
   4  * 17.05.99 Michael Engel (engel@unix-ag.org)
 
   6  * DEC US keyboards generate keycodes in the range 0x55 - 0xfb
 
   8  * This conflicts with Linux scancode conventions which define
 
   9  * 0x00-0x7f as "normal" and 0x80-0xff as "shifted" scancodes, so we
 
  10  * have to remap the keycodes to 0x00-0x7f with the scancodeRemap
 
  11  * array. The generated scancode is simply the number of the key counted
 
  12  * from the left upper to the right lower corner of the keyboard ...
 
  14  * These scancodes are then being remapped (I hope ;-)) with the
 
  15  * lk501*map[] arrays which define scancode -> Linux code mapping
 
  17  * Oh man is this horrible ;-)
 
  19  * Scancodes with dual labels exist for keyboards as follows:
 
  21  * code:  left label          / right label
 
  23  * 0x73:  LKx01, LK421        / LK443, LK444
 
  24  * 0x74:  LKx01, LK421        / LK443, LK444
 
  25  * 0x7c:  LKx01, LK421        / LK443, LK444
 
  26  * 0x8a:  LKx01, LK421        / LK443, LK444
 
  27  * 0x8b:  LKx01, LK421        / LK443, LK444
 
  28  * 0x8c:  LKx01, LK421        / LK443, LK444
 
  29  * 0x8d:  LKx01, LK421        / LK443, LK444
 
  30  * 0x8e:  LKx01, LK421        / LK443, LK444
 
  31  * 0x8f:  LKx01, LK421        / LK443, LK444
 
  32  * 0x9c:  LKx01, LK421        / LK443, LK444
 
  33  * 0xa1:  LKx01, LK421        / LK443, LK444
 
  34  * 0xa2:  LKx01, LK421        / LK443, LK444
 
  35  * 0xa3:  LKx01, LK421        / LK443, LK444
 
  36  * 0xa4:  LKx01, LK421        / LK443, LK444
 
  37  * 0xad:         LK421        / LK443, LK444
 
  38  * 0xc9:  LKx01, LK421, LK443 /        LK444
 
  39  * 0xf7:  LKx01,        LK443 /        LK444
 
  42 unsigned char scancodeRemap[256] = {
 
  86 /* 54 */ 0,             0,              0x01,           0x02,
 
  88 /* 58 */ 0x03,          0x04,           0x05,           0,
 
  93 /* ----- F6             F7              F8              F9              */
 
  94 /* 64 */ 0x06,          0x07,           0x08,           0x09,
 
  96 /* 68 */ 0x0a,          0,              0,              0,
 
  99 /* -----                F11             F12             F13/PRNT SCRN   */
 
 100 /* 70 */ 0,             0x0b,           0x0c,           0x0d,
 
 101 /* ----- F14/SCRL LCK                                                   */
 
 102 /* 74 */ 0x0e,          0,              0,              0,
 
 105 /* ----- HELP/PAUSE     DO                                              */
 
 106 /* 7c */ 0x0f,          0x10,           0,              0,
 
 107 /* ----- F17            F18             F19             F20             */
 
 108 /* 80 */ 0x11,          0x12,           0x13,           0x14,
 
 111 /* -----                                FIND/INSERT     INSERT/HOME     */
 
 112 /* 88 */ 0,             0,              0x23,           0x24,
 
 113 /* ----- REMOVE/PG UP   SELECT/DELETE   PREVIOUS/END    NEXT/PG DN      */
 
 114 /* 8c */ 0x25,          0x38,           0x39,           0x3a,
 
 116 /* 90 */ 0,             0,              0x6b,           0,
 
 117 /* ----- KP .           KP ENTER        KP 1            KP 2            */
 
 118 /* 94 */ 0x6c,          0x65,           0x62,           0x63,
 
 119 /* ----- KP 3           KP 4            KP 5            KP 6            */
 
 120 /* 98 */ 0x64,          0x4e,           0x4f,           0x50,
 
 121 /* ----- KP ,/KP +      KP 7            KP 8            KP 9            */
 
 122 /* 9c */ 0x51,          0x3b,           0x3c,           0x3d,
 
 123 /* ----- KP -           KP F1/NUM LCK   KP F2/KP /      KP F3/KP *      */
 
 124 /* a0 */ 0x3e,          0x26,           0x27,           0x28,
 
 125 /* ----- KP F4/KP -                                     LEFT            */
 
 126 /* a4 */ 0x29,          0,              0,              0x5f,
 
 127 /* ----- RIGHT          DOWN            UP              SHIFT Rt        */
 
 128 /* a8 */ 0x61,          0x60,           0x4d,           0x5e,
 
 129 /* ----- ALT            COMP Rt/CTRL Rt SHIFT           CONTROL         */
 
 130 /* ac */ 0,             0,              0x52,           0x3f,
 
 131 /* ----- CAPS           COMPOSE         ALT Rt                          */
 
 132 /* b0 */ 0x40,          0x67,           0,              0,
 
 137 /* ----- BKSP           RET             TAB             `               */
 
 138 /* bc */ 0x22,          0x37,           0x2a,           0x15,
 
 140 /* c0 */ 0x16,          0x2b,           0x41,           0x54,
 
 142 /* c4 */ 0,             0x17,           0x2c,           0x42,
 
 144 /* c8 */ 0x55,          0x53,           0,              0x18,
 
 146 /* cc */ 0x2d,          0x43,           0x56,           0,
 
 148 /* d0 */ 0x19,          0x2e,           0x44,           0x57,
 
 149 /* ----- SPACE                          5               t               */
 
 150 /* d4 */ 0x68,          0,              0x1a,           0x2f,
 
 152 /* d8 */ 0x45,          0x58,           0,              0x1b,
 
 154 /* dc */ 0x30,          0x46,           0x59,           0,
 
 156 /* e0 */ 0x1c,          0x31,           0x47,           0x5a,
 
 158 /* e4 */ 0,             0x1d,           0x32,           0x48,
 
 160 /* e8 */ 0x5b,          0,              0x1e,           0x33,
 
 162 /* ec */ 0x49,          0x5c,           0,              0x1f,
 
 164 /* f0 */ 0x34,          0,              0x4a,           0x5d,
 
 165 /* -----                =               ]               \\/\'           */
 
 166 /* f4 */ 0,             0x21,           0x36,           0x4c,
 
 168 /* f8 */ 0,             0x20,           0x35,           0x4b,