Fix possible NULL pointer access in 8250 serial driver
[linux-2.6] / drivers / tc / lk201-remap.c
1 /*
2  * Keyboard mappings for DEC LK201/401/501 keyboards
3  *
4  * 17.05.99 Michael Engel (engel@unix-ag.org)
5  *
6  * DEC US keyboards generate keycodes in the range 0x55 - 0xfb
7  *
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 ...
13  *
14  * These scancodes are then being remapped (I hope ;-)) with the
15  * lk501*map[] arrays which define scancode -> Linux code mapping
16  *
17  * Oh man is this horrible ;-)
18  *
19  * Scancodes with dual labels exist for keyboards as follows:
20  *
21  * code:  left label          / right label
22  *
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
40  */
41
42 unsigned char scancodeRemap[256] = {
43 /* -----                                                                */
44 /*  0 */ 0,             0,              0,              0,
45 /* -----                                                                */
46 /*  4 */ 0,             0,              0,              0,
47 /* -----                                                                */
48 /*  8 */ 0,             0,              0,              0,
49 /* -----                                                                */
50 /*  c */ 0,             0,              0,              0,
51 /* -----                                                                */
52 /* 10 */ 0,             0,              0,              0,
53 /* -----                                                                */
54 /* 14 */ 0,             0,              0,              0,
55 /* -----                                                                */
56 /* 18 */ 0,             0,              0,              0,
57 /* -----                                                                */
58 /* 1c */ 0,             0,              0,              0,
59 /* -----                                                                */
60 /* 20 */ 0,             0,              0,              0,
61 /* -----                                                                */
62 /* 24 */ 0,             0,              0,              0,
63 /* -----                                                                */
64 /* 28 */ 0,             0,              0,              0,
65 /* -----                                                                */
66 /* 2c */ 0,             0,              0,              0,
67 /* -----                                                                */
68 /* 30 */ 0,             0,              0,              0,
69 /* -----                                                                */
70 /* 34 */ 0,             0,              0,              0,
71 /* -----                                                                */
72 /* 38 */ 0,             0,              0,              0,
73 /* -----                                                                */
74 /* 3c */ 0,             0,              0,              0,
75 /* -----                                                                */
76 /* 40 */ 0,             0,              0,              0,
77 /* -----                                                                */
78 /* 44 */ 0,             0,              0,              0,
79 /* -----                                                                */
80 /* 48 */ 0,             0,              0,              0,
81 /* -----                                                                */
82 /* 4c */ 0,             0,              0,              0,
83 /* -----                                                                */
84 /* 50 */ 0,             0,              0,              0,
85 /* -----                ESC             F1              F2              */
86 /* 54 */ 0,             0,              0x01,           0x02,
87 /* ----- F3             F4              F5                              */
88 /* 58 */ 0x03,          0x04,           0x05,           0,
89 /* -----                                                                */
90 /* 5c */ 0,             0,              0,              0,
91 /* -----                                                                */
92 /* 60 */ 0,             0,              0,              0,
93 /* ----- F6             F7              F8              F9              */
94 /* 64 */ 0x06,          0x07,           0x08,           0x09,
95 /* ----- F10                                                            */
96 /* 68 */ 0x0a,          0,              0,              0,
97 /* -----                                                                */
98 /* 6c */ 0,             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,
103 /* -----                                                                */
104 /* 78 */ 0,             0,              0,              0,
105 /* ----- HELP/PAUSE     DO                                              */
106 /* 7c */ 0x0f,          0x10,           0,              0,
107 /* ----- F17            F18             F19             F20             */
108 /* 80 */ 0x11,          0x12,           0x13,           0x14,
109 /* -----                                                                */
110 /* 84 */ 0,             0,              0,              0,
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,
115 /* -----                                KP 0                            */
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,
133 /* -----                                                                */
134 /* b4 */ 0,             0,              0,              0,
135 /* -----                                                                */
136 /* b8 */ 0,             0,              0,              0,
137 /* ----- BKSP           RET             TAB             `               */
138 /* bc */ 0x22,          0x37,           0x2a,           0x15,
139 /* ----- 1              q               a               z               */
140 /* c0 */ 0x16,          0x2b,           0x41,           0x54,
141 /* -----                2               w               s               */
142 /* c4 */ 0,             0x17,           0x2c,           0x42,
143 /* ----- x              </\\                            3               */
144 /* c8 */ 0x55,          0x53,           0,              0x18,
145 /* ----- e              d               c                               */
146 /* cc */ 0x2d,          0x43,           0x56,           0,
147 /* ----- 4              r               f               v               */
148 /* d0 */ 0x19,          0x2e,           0x44,           0x57,
149 /* ----- SPACE                          5               t               */
150 /* d4 */ 0x68,          0,              0x1a,           0x2f,
151 /* ----- g              b                               6               */
152 /* d8 */ 0x45,          0x58,           0,              0x1b,
153 /* ----- y              h               n                               */
154 /* dc */ 0x30,          0x46,           0x59,           0,
155 /* ----- 7              u               j               m               */
156 /* e0 */ 0x1c,          0x31,           0x47,           0x5a,
157 /* -----                8               i               k               */
158 /* e4 */ 0,             0x1d,           0x32,           0x48,
159 /* ----- ,                              9               o               */
160 /* e8 */ 0x5b,          0,              0x1e,           0x33,
161 /* ----- l              .                               0               */
162 /* ec */ 0x49,          0x5c,           0,              0x1f,
163 /* ----- p                              ;               /               */
164 /* f0 */ 0x34,          0,              0x4a,           0x5d,
165 /* -----                =               ]               \\/\'           */
166 /* f4 */ 0,             0x21,           0x36,           0x4c,
167 /* -----                -               [               \'              */
168 /* f8 */ 0,             0x20,           0x35,           0x4b,
169 /* -----                                                                */
170 /* fc */ 0,             0,              0,              0,
171 };
172