38 dawes 1.1
39 #include "xf86Keymap.h"
40
41 #define KD_GET_ENTRY(i,n) \
42 eascii_to_x[((keymap.key[i].spcl << (n+1)) & 0x100) + keymap.key[i].map[n]]
43
44 /*
45 * NOTE: Not all possible remappable symbols are remapped. There are two main
46 * reasons:
47 * a) The mapping between scancode and SYSV/386 - symboltable
48 * is inconsistent between different versions and has some
49 * BIG mistakes.
50 * b) In X-Windows there is a difference between numpad-keys
51 * and normal keys. SYSV/386 uses for both kinds of keys
52 * the same symbol.
53 *
54 * Thus only the alpha keypad and the function keys are translated.
55 * Also CapsLock, NumLock, ScrollLock, Shift, Control & Alt.
56 */
57
58 static unsigned char remap[128] = {
59 dawes 1.1 0, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, /* 0x00 - 0x07 */
60 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08 - 0x0f */
61 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, /* 0x10 - 0x17 */
62 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18 - 0x1f */
63 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, /* 0x20 - 0x27 */
64 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, /* 0x28 - 0x2f */
65 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0, /* 0x30 - 0x37 */
66 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, /* 0x38 - 0x3f */
67 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0, /* 0x40 - 0x47 */
68 0, 0, 0, 0, 0, 0, 0, 0, /* 0x48 - 0x4f */
69 0, 0, 0, 0, 0, 0, 0x56, 0x57, /* 0x50 - 0x57 */
70 0x58, 0, 0, 0, 0, 0, 0, 0, /* 0x58 - 0x5f */
71 0, 0, 0, 0, 0, 0, 0, 0, /* 0x60 - 0x67 */
72 0, 0, 0, 0, 0, 0, 0, 0, /* 0x68 - 0x6f */
73 0, 0, 0x69, 0x65, 0, 0, 0, 0, /* 0x70 - 0x77 */
74 0, 0, 0, 0, 0, 0, 0, 0, /* 0x78 - 0x7f */
75 };
76
77 static KeySym eascii_to_x[512] = {
78 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
79 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
80 dawes 1.1 XK_BackSpace, XK_Tab, XK_Linefeed, NoSymbol,
81 NoSymbol, XK_Return, NoSymbol, NoSymbol,
82 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
83 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
84 NoSymbol, NoSymbol, NoSymbol, XK_Escape,
85 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
86 XK_space, XK_exclam, XK_quotedbl, XK_numbersign,
87 XK_dollar, XK_percent, XK_ampersand, XK_apostrophe,
88 XK_parenleft, XK_parenright, XK_asterisk, XK_plus,
89 XK_comma, XK_minus, XK_period, XK_slash,
90 XK_0, XK_1, XK_2, XK_3,
91 XK_4, XK_5, XK_6, XK_7,
92 XK_8, XK_9, XK_colon, XK_semicolon,
93 XK_less, XK_equal, XK_greater, XK_question,
94 XK_at, XK_A, XK_B, XK_C,
95 XK_D, XK_E, XK_F, XK_G,
96 XK_H, XK_I, XK_J, XK_K,
97 XK_L, XK_M, XK_N, XK_O,
98 XK_P, XK_Q, XK_R, XK_S,
99 XK_T, XK_U, XK_V, XK_W,
100 XK_X, XK_Y, XK_Z, XK_bracketleft,
101 dawes 1.1 XK_backslash, XK_bracketright,XK_asciicircum, XK_underscore,
102 XK_grave, XK_a, XK_b, XK_c,
103 XK_d, XK_e, XK_f, XK_g,
104 XK_h, XK_i, XK_j, XK_k,
105 XK_l, XK_m, XK_n, XK_o,
106 XK_p, XK_q, XK_r, XK_s,
107 XK_t, XK_u, XK_v, XK_w,
108 XK_x, XK_y, XK_z, XK_braceleft,
109 XK_bar, XK_braceright, XK_asciitilde, XK_Delete,
110 XK_Ccedilla, XK_udiaeresis, XK_eacute, XK_acircumflex,
111 XK_adiaeresis, XK_agrave, XK_aring, XK_ccedilla,
112 XK_ecircumflex, XK_ediaeresis, XK_egrave, XK_idiaeresis,
113 XK_icircumflex, XK_igrave, XK_Adiaeresis, XK_Aring,
114 XK_Eacute, XK_ae, XK_AE, XK_ocircumflex,
115 XK_odiaeresis, XK_ograve, XK_ucircumflex, XK_ugrave,
116 XK_ydiaeresis, XK_Odiaeresis, XK_Udiaeresis, XK_cent,
117 XK_sterling, XK_yen, XK_paragraph, XK_section,
118 XK_aacute, XK_iacute, XK_oacute, XK_uacute,
119 XK_ntilde, XK_Ntilde, XK_ordfeminine, XK_masculine,
120 XK_questiondown,XK_hyphen, XK_notsign, XK_onehalf,
121 XK_onequarter, XK_exclamdown, XK_guillemotleft,XK_guillemotright,
122 dawes 1.1 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
123 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
124 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
125 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
126 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
127 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
128 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
129 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
130 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
131 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
132 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
133 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
134 XK_Greek_alpha, XK_ssharp, XK_Greek_GAMMA, XK_Greek_pi,
135 XK_Greek_SIGMA, XK_Greek_sigma, XK_mu, XK_Greek_tau,
136 XK_Greek_PHI, XK_Greek_THETA, XK_Greek_OMEGA, XK_Greek_delta,
137 XK_infinity, XK_Ooblique, XK_Greek_epsilon, XK_intersection,
138 XK_identical, XK_plusminus, XK_greaterthanequal, XK_lessthanequal,
139 XK_topintegral, XK_botintegral, XK_division, XK_similarequal,
140 XK_degree, NoSymbol, NoSymbol, XK_radical,
141 XK_Greek_eta, XK_twosuperior, XK_periodcentered, NoSymbol,
142
143 dawes 1.1 /*
144 * special marked entries (256 + x)
145 */
146
147 NoSymbol, NoSymbol, XK_Shift_L, XK_Shift_R,
148 XK_Caps_Lock, XK_Num_Lock, XK_Scroll_Lock, XK_Alt_L,
149 NoSymbol, XK_Control_L, XK_Alt_L, XK_Alt_R,
150 XK_Control_L, XK_Control_R, NoSymbol, NoSymbol,
151 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
152 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
153 NoSymbol, NoSymbol, NoSymbol, XK_F1,
154 XK_F2, XK_F3, XK_F4, XK_F5,
155 XK_F6, XK_F7, XK_F8, XK_F9,
156 XK_F10, XK_F11, XK_F12, NoSymbol,
157 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
158 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
159 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
160 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
161 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
162 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
163 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
164 dawes 1.1 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
165 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
166 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
167 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
168 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
169 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
170 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
171 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
172 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
173 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
174 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
175 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
176 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
177 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
178 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
179 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
180 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
181 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
182 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
183 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
184 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
185 dawes 1.1 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
186 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
187 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
188 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
189 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
190 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
191 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
192 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
193 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
194 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
195 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
196 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
197 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
198 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
199 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
200 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
201 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
202 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
203 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
204 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
205 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
206 dawes 1.1 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
207 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
208 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
209 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
210 };
211
212
213 /*
214 * LegalModifier --
215 * determine whether a key is a legal modifier key, i.e send a
216 * press/release sequence.
217 */
218
219 /*ARGSUSED*/
220 Bool
221 LegalModifier(key, pDev)
222 unsigned int key;
223 DevicePtr pDev;
224 {
225 return (TRUE);
226 }
227 dawes 1.1
228
229
230 /*
231 * xf86KbdGetMapping --
232 * Get the national keyboard mapping. The keyboard type is set, a new map
233 * and the modifiermap is computed.
234 */
235
236 void
237 xf86KbdGetMapping (pKeySyms, pModMap)
238 KeySymsPtr pKeySyms;
239 CARD8 *pModMap;
240 {
241 KeySym *k;
|