bsd_KbdMap.c revision 4ddc96cf
1ee3138f1Smrg/*
2ee3138f1Smrg * Slightly modified xf86KbdBSD.c which is
3ee3138f1Smrg *
4ee3138f1Smrg * Derived from xf86Kbd.c by S_ren Schmidt (sos@login.dkuug.dk)
5ee3138f1Smrg * which is Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
6ee3138f1Smrg * and from xf86KbdCODrv.c by Holger Veit
7ee3138f1Smrg */
8ee3138f1Smrg
9ee3138f1Smrg#ifdef HAVE_CONFIG_H
10ee3138f1Smrg#include "config.h"
11ee3138f1Smrg#endif
12ee3138f1Smrg
13632d17a8Smrg#include <xorg-server.h>
14ee3138f1Smrg#include <X11/X.h>
15ee3138f1Smrg#include <X11/Xmd.h>
16ee3138f1Smrg#include "input.h"
17ee3138f1Smrg#include "scrnintstr.h"
18ee3138f1Smrg
19ee3138f1Smrg#include "compiler.h"
20ee3138f1Smrg
21ee3138f1Smrg#include "xf86.h"
22ee3138f1Smrg#include "xf86Priv.h"
23ee3138f1Smrg#include "xf86_OSlib.h"
24ee3138f1Smrg#include "xf86Xinput.h"
25ee3138f1Smrg#include "xf86OSKbd.h"
26ee3138f1Smrg#include "atKeynames.h"
27ee3138f1Smrg#include "xf86Keymap.h"
28ee3138f1Smrg#include "bsd_kbd.h"
29ee3138f1Smrg
30ee3138f1Smrg#if (defined(SYSCONS_SUPPORT) || defined(PCVT_SUPPORT)) && defined(GIO_KEYMAP)
31ee3138f1Smrg#define KD_GET_ENTRY(i,n) \
32ee3138f1Smrg  eascii_to_x[((keymap.key[i].spcl << (n+1)) & 0x100) + keymap.key[i].map[n]]
33ee3138f1Smrg
34ee3138f1Smrgstatic unsigned char remap[NUM_KEYCODES] = {
35ee3138f1Smrg     0, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,   /* 0x00 - 0x07 */
36ee3138f1Smrg  0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,   /* 0x08 - 0x0f */
37ee3138f1Smrg  0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,   /* 0x10 - 0x17 */
38ee3138f1Smrg  0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,   /* 0x18 - 0x1f */
39ee3138f1Smrg  0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,   /* 0x20 - 0x27 */
40ee3138f1Smrg  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,   /* 0x28 - 0x2f */
41ee3138f1Smrg  0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36,    0,   /* 0x30 - 0x37 */
42ee3138f1Smrg  0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,   /* 0x38 - 0x3f */
43ee3138f1Smrg  0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46,    0,   /* 0x40 - 0x47 */
44ee3138f1Smrg     0,    0,    0,    0,    0,    0,    0,    0,   /* 0x48 - 0x4f */
45ee3138f1Smrg     0,    0,    0,    0,    0,    0, 0x56, 0x57,   /* 0x50 - 0x57 */
46ee3138f1Smrg  0x58,    0,    0,    0,    0,    0,    0,    0,   /* 0x58 - 0x5f */
47ee3138f1Smrg     0,    0,    0,    0,    0,    0,    0,    0,   /* 0x60 - 0x67 */
48ee3138f1Smrg     0,    0,    0,    0,    0,    0,    0,    0,   /* 0x68 - 0x6f */
49ee3138f1Smrg     0,    0, 0x69, 0x65,    0,    0,    0,    0,   /* 0x70 - 0x77 */
50ee3138f1Smrg     0,    0,    0,    0,    0,    0,    0,    0,   /* 0x78 - 0x7f */
51ee3138f1Smrg};
52ee3138f1Smrg
53ee3138f1Smrg/* This table assumes the ibm code page 437 coding for characters
54ee3138f1Smrg * > 0x80. They are returned in this form by PCVT */
55ee3138f1Smrgstatic KeySym eascii_to_x[512] = {
56ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
57ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
58ee3138f1Smrg	XK_BackSpace,	XK_Tab,		XK_Linefeed,	NoSymbol,
59ee3138f1Smrg	NoSymbol,	XK_Return,	NoSymbol,	NoSymbol,
60ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
61ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
62ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	XK_Escape,
63ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
64ee3138f1Smrg	XK_space,	XK_exclam,	XK_quotedbl,	XK_numbersign,
65ee3138f1Smrg	XK_dollar,	XK_percent,	XK_ampersand,	XK_apostrophe,
66ee3138f1Smrg	XK_parenleft,	XK_parenright,	XK_asterisk,	XK_plus,
67ee3138f1Smrg	XK_comma,	XK_minus,	XK_period,	XK_slash,
68ee3138f1Smrg	XK_0,		XK_1,		XK_2,		XK_3,
69ee3138f1Smrg	XK_4,		XK_5,		XK_6,		XK_7,
70ee3138f1Smrg	XK_8,		XK_9,		XK_colon,	XK_semicolon,
71ee3138f1Smrg	XK_less,	XK_equal,	XK_greater,	XK_question,
72ee3138f1Smrg	XK_at,		XK_A,		XK_B,		XK_C,
73ee3138f1Smrg	XK_D,		XK_E,		XK_F,		XK_G,
74ee3138f1Smrg	XK_H,		XK_I,		XK_J,		XK_K,
75ee3138f1Smrg	XK_L,		XK_M,		XK_N,		XK_O,
76ee3138f1Smrg	XK_P,		XK_Q,		XK_R,		XK_S,
77ee3138f1Smrg	XK_T,		XK_U,		XK_V,		XK_W,
78ee3138f1Smrg	XK_X,		XK_Y,		XK_Z,		XK_bracketleft,
79ee3138f1Smrg	XK_backslash,	XK_bracketright,XK_asciicircum,	XK_underscore,
80ee3138f1Smrg	XK_grave,	XK_a,		XK_b,		XK_c,
81ee3138f1Smrg	XK_d,		XK_e,		XK_f,		XK_g,
82ee3138f1Smrg	XK_h,		XK_i,		XK_j,		XK_k,
83ee3138f1Smrg	XK_l,		XK_m,		XK_n,		XK_o,
84ee3138f1Smrg	XK_p,		XK_q,		XK_r,		XK_s,
85ee3138f1Smrg	XK_t,		XK_u,		XK_v,		XK_w,
86ee3138f1Smrg	XK_x,		XK_y,		XK_z,		XK_braceleft,
87ee3138f1Smrg	XK_bar,		XK_braceright,	XK_asciitilde,	XK_Delete,
88ee3138f1Smrg	XK_Ccedilla,	XK_udiaeresis,	XK_eacute,	XK_acircumflex,
89ee3138f1Smrg	XK_adiaeresis,	XK_agrave,	XK_aring,	XK_ccedilla,
90ee3138f1Smrg	XK_ecircumflex,	XK_ediaeresis,	XK_egrave,	XK_idiaeresis,
91ee3138f1Smrg	XK_icircumflex,	XK_igrave,	XK_Adiaeresis,	XK_Aring,
92ee3138f1Smrg	XK_Eacute,	XK_ae,		XK_AE,		XK_ocircumflex,
93ee3138f1Smrg	XK_odiaeresis,	XK_ograve,	XK_ucircumflex,	XK_ugrave,
94ee3138f1Smrg	XK_ydiaeresis,	XK_Odiaeresis,	XK_Udiaeresis,	XK_cent,
95ee3138f1Smrg	XK_sterling,	XK_yen,		XK_paragraph,	XK_section,
96ee3138f1Smrg	XK_aacute,	XK_iacute,	XK_oacute,	XK_uacute,
97ee3138f1Smrg	XK_ntilde,	XK_Ntilde,	XK_ordfeminine,	XK_masculine,
98ee3138f1Smrg	XK_questiondown,XK_hyphen,	XK_notsign,	XK_onehalf,
99ee3138f1Smrg	XK_onequarter,	XK_exclamdown,	XK_guillemotleft,XK_guillemotright,
100ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
101ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
102ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
103ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
104ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
105ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
106ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
107ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
108ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
109ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
110ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
111ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
112ee3138f1Smrg	XK_Greek_alpha,	XK_ssharp,	XK_Greek_GAMMA,	XK_Greek_pi,
113ee3138f1Smrg	XK_Greek_SIGMA,	XK_Greek_sigma,	XK_mu,	        XK_Greek_tau,
114ee3138f1Smrg	XK_Greek_PHI,	XK_Greek_THETA,	XK_Greek_OMEGA,	XK_Greek_delta,
115ee3138f1Smrg	XK_infinity,	XK_Ooblique,	XK_Greek_epsilon, XK_intersection,
116ee3138f1Smrg	XK_identical,	XK_plusminus,	XK_greaterthanequal, XK_lessthanequal,
117ee3138f1Smrg	XK_topintegral,	XK_botintegral,	XK_division,	XK_similarequal,
118ee3138f1Smrg	XK_degree,	NoSymbol,	NoSymbol,	XK_radical,
119ee3138f1Smrg	XK_Greek_eta,	XK_twosuperior,	XK_periodcentered, NoSymbol,
120ee3138f1Smrg
121ee3138f1Smrg	/*
122ee3138f1Smrg	 * special marked entries (256 + x)
123ee3138f1Smrg	 */
124ee3138f1Smrg
125ee3138f1Smrg	/* This has been checked against what syscons actually does */
126ee3138f1Smrg	NoSymbol,	NoSymbol,	XK_Shift_L,	XK_Shift_R,
127ee3138f1Smrg	XK_Caps_Lock,	XK_Num_Lock,	XK_Scroll_Lock,	XK_Alt_L,
128ee3138f1Smrg	XK_ISO_Left_Tab,XK_Control_L,	NoSymbol,	NoSymbol,
129ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
130ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
131ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
132ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	XK_F1,
133ee3138f1Smrg	XK_F2,		XK_F3,		XK_F4,		XK_F5,
134ee3138f1Smrg	XK_F6,		XK_F7,		XK_F8,		XK_F9,
135ee3138f1Smrg	XK_F10,		XK_F11,		XK_F12,		NoSymbol,
136ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
137ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
138ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
139ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
140ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
141ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
142ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
143ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
144ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
145ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
146ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
147ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
148ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
149ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
150ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
151ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
152ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
153ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
154ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
155ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
156ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
157ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
158ee3138f1Smrg	XK_Control_R,	XK_Alt_R,	NoSymbol,	NoSymbol,
159ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
160ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
161ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
162ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
163ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
164ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
165ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
166ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
167ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
168ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
169ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
170ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
171ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
172ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
173ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
174ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
175ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
176ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
177ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
178ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
179ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
180ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
181ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
182ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
183ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
184ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
185ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
186ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
187ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
188ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol,
189ee3138f1Smrg	NoSymbol,	NoSymbol,	NoSymbol,	NoSymbol
190ee3138f1Smrg};
191ee3138f1Smrg
192ee3138f1Smrg#ifdef SYSCONS_SUPPORT
193ee3138f1Smrgstatic
194ee3138f1Smrgunsigned char sysconsCODEMap[] = {
195ee3138f1Smrg	KEY_KP_Enter,	KEY_RCtrl,	KEY_KP_Divide,	KEY_Print,
196ee3138f1Smrg	KEY_AltLang,	KEY_KP_7,	KEY_KP_8,	KEY_KP_9,
197ee3138f1Smrg	KEY_KP_4,	KEY_KP_6,	KEY_KP_1,	KEY_KP_2,
198ee3138f1Smrg	KEY_KP_3,	KEY_KP_0,	KEY_KP_Decimal,	KEY_Pause,
199ee3138f1Smrg	KEY_LMeta,	KEY_RMeta,	KEY_Menu,	KEY_Break
200ee3138f1Smrg};
201ee3138f1Smrgstatic
202ee3138f1SmrgTransMapRec sysconsCODE = {
203ee3138f1Smrg    0x59,
204ee3138f1Smrg    0x6d,
205ee3138f1Smrg    sysconsCODEMap
206ee3138f1Smrg};
207ee3138f1Smrg#endif
208ee3138f1Smrg#endif /* SYSCONS_SUPPORT || PCVT_SUPPORT */
209ee3138f1Smrg
210ee3138f1Smrg#ifdef WSCONS_SUPPORT
211ee3138f1Smrg
212ee3138f1Smrgstatic CARD8 wsUsbMap[] = {
213ee3138f1Smrg	/* 0 */ KEY_NOTUSED,
214ee3138f1Smrg	/* 1 */ KEY_NOTUSED,
215ee3138f1Smrg	/* 2 */ KEY_NOTUSED,
216ee3138f1Smrg	/* 3 */ KEY_NOTUSED,
217ee3138f1Smrg	/* 4 */ KEY_A,
218ee3138f1Smrg	/* 5 */ KEY_B,
219ee3138f1Smrg	/* 6 */ KEY_C,
220ee3138f1Smrg	/* 7 */ KEY_D,
221ee3138f1Smrg	/* 8 */ KEY_E,
222ee3138f1Smrg	/* 9 */ KEY_F,
223ee3138f1Smrg	/* 10 */ KEY_G,
224ee3138f1Smrg	/* 11 */ KEY_H,
225ee3138f1Smrg	/* 12 */ KEY_I,
226ee3138f1Smrg	/* 13 */ KEY_J,
227ee3138f1Smrg	/* 14 */ KEY_K,
228ee3138f1Smrg	/* 15 */ KEY_L,
229ee3138f1Smrg	/* 16 */ KEY_M,
230ee3138f1Smrg	/* 17 */ KEY_N,
231ee3138f1Smrg	/* 18 */ KEY_O,
232ee3138f1Smrg	/* 19 */ KEY_P,
233ee3138f1Smrg	/* 20 */ KEY_Q,
234ee3138f1Smrg	/* 21 */ KEY_R,
235ee3138f1Smrg	/* 22 */ KEY_S,
236ee3138f1Smrg	/* 23 */ KEY_T,
237ee3138f1Smrg	/* 24 */ KEY_U,
238ee3138f1Smrg	/* 25 */ KEY_V,
239ee3138f1Smrg	/* 26 */ KEY_W,
240ee3138f1Smrg	/* 27 */ KEY_X,
241ee3138f1Smrg	/* 28 */ KEY_Y,
242ee3138f1Smrg	/* 29 */ KEY_Z,
243ee3138f1Smrg	/* 30 */ KEY_1,		/* 1 !*/
244ee3138f1Smrg	/* 31 */ KEY_2,		/* 2 @ */
245ee3138f1Smrg	/* 32 */ KEY_3,		/* 3 # */
246ee3138f1Smrg	/* 33 */ KEY_4,		/* 4 $ */
247ee3138f1Smrg	/* 34 */ KEY_5,		/* 5 % */
248ee3138f1Smrg	/* 35 */ KEY_6,		/* 6 ^ */
249ee3138f1Smrg	/* 36 */ KEY_7,		/* 7 & */
250ee3138f1Smrg	/* 37 */ KEY_8,		/* 8 * */
251ee3138f1Smrg	/* 38 */ KEY_9,		/* 9 ( */
252ee3138f1Smrg	/* 39 */ KEY_0,		/* 0 ) */
253ee3138f1Smrg	/* 40 */ KEY_Enter,	/* Return  */
254ee3138f1Smrg	/* 41 */ KEY_Escape,	/* Escape */
255ee3138f1Smrg	/* 42 */ KEY_BackSpace,	/* Backspace Delete */
256ee3138f1Smrg	/* 43 */ KEY_Tab,	/* Tab */
257ee3138f1Smrg	/* 44 */ KEY_Space,	/* Space */
258ee3138f1Smrg	/* 45 */ KEY_Minus,	/* - _ */
259ee3138f1Smrg	/* 46 */ KEY_Equal,	/* = + */
260ee3138f1Smrg	/* 47 */ KEY_LBrace,	/* [ { */
261ee3138f1Smrg	/* 48 */ KEY_RBrace,	/* ] } */
262ee3138f1Smrg	/* 49 */ KEY_BSlash,	/* \ | */
26351aca463Smartin	/* 50 */ KEY_BSlash,    /* \ _ # ~ on some keyboards */
264ee3138f1Smrg	/* 51 */ KEY_SemiColon,	/* ; : */
265ee3138f1Smrg	/* 52 */ KEY_Quote,	/* ' " */
266ee3138f1Smrg	/* 53 */ KEY_Tilde,	/* ` ~ */
267ee3138f1Smrg	/* 54 */ KEY_Comma,	/* , <  */
268ee3138f1Smrg	/* 55 */ KEY_Period,	/* . > */
269ee3138f1Smrg	/* 56 */ KEY_Slash,	/* / ? */
270ee3138f1Smrg	/* 57 */ KEY_CapsLock,	/* Caps Lock */
271ee3138f1Smrg	/* 58 */ KEY_F1,		/* F1 */
272ee3138f1Smrg	/* 59 */ KEY_F2,		/* F2 */
273ee3138f1Smrg	/* 60 */ KEY_F3,		/* F3 */
274ee3138f1Smrg	/* 61 */ KEY_F4,		/* F4 */
275ee3138f1Smrg	/* 62 */ KEY_F5,		/* F5 */
276ee3138f1Smrg	/* 63 */ KEY_F6,		/* F6 */
277ee3138f1Smrg	/* 64 */ KEY_F7,		/* F7 */
278ee3138f1Smrg	/* 65 */ KEY_F8,		/* F8 */
279ee3138f1Smrg	/* 66 */ KEY_F9,		/* F9 */
280ee3138f1Smrg	/* 67 */ KEY_F10,	/* F10 */
281ee3138f1Smrg	/* 68 */ KEY_F11,	/* F11 */
282ee3138f1Smrg	/* 69 */ KEY_F12,	/* F12 */
283ee3138f1Smrg	/* 70 */ KEY_Print,	/* PrintScrn SysReq */
284ee3138f1Smrg	/* 71 */ KEY_ScrollLock,	/* Scroll Lock */
285ee3138f1Smrg	/* 72 */ KEY_Pause,	/* Pause Break */
286ee3138f1Smrg	/* 73 */ KEY_Insert,	/* Insert XXX  Help on some Mac Keyboards */
287ee3138f1Smrg	/* 74 */ KEY_Home,	/* Home */
288ee3138f1Smrg	/* 75 */ KEY_PgUp,	/* Page Up */
289ee3138f1Smrg	/* 76 */ KEY_Delete,	/* Delete */
290ee3138f1Smrg	/* 77 */ KEY_End,	/* End */
291ee3138f1Smrg	/* 78 */ KEY_PgDown,	/* Page Down */
292ee3138f1Smrg	/* 79 */ KEY_Right,	/* Right Arrow */
293ee3138f1Smrg	/* 80 */ KEY_Left,	/* Left Arrow */
294ee3138f1Smrg	/* 81 */ KEY_Down,	/* Down Arrow */
295ee3138f1Smrg	/* 82 */ KEY_Up,		/* Up Arrow */
296ee3138f1Smrg	/* 83 */ KEY_NumLock,	/* Num Lock */
297ee3138f1Smrg	/* 84 */ KEY_KP_Divide,	/* Keypad / */
298ee3138f1Smrg	/* 85 */ KEY_KP_Multiply, /* Keypad * */
299ee3138f1Smrg	/* 86 */ KEY_KP_Minus,	/* Keypad - */
300ee3138f1Smrg	/* 87 */ KEY_KP_Plus,	/* Keypad + */
301ee3138f1Smrg	/* 88 */ KEY_KP_Enter,	/* Keypad Enter */
302ee3138f1Smrg	/* 89 */ KEY_KP_1,	/* Keypad 1 End */
303ee3138f1Smrg	/* 90 */ KEY_KP_2,	/* Keypad 2 Down */
304ee3138f1Smrg	/* 91 */ KEY_KP_3,	/* Keypad 3 Pg Down */
305ee3138f1Smrg	/* 92 */ KEY_KP_4,	/* Keypad 4 Left  */
306ee3138f1Smrg	/* 93 */ KEY_KP_5,	/* Keypad 5 */
307ee3138f1Smrg	/* 94 */ KEY_KP_6,	/* Keypad 6 */
308ee3138f1Smrg	/* 95 */ KEY_KP_7,	/* Keypad 7 Home */
309ee3138f1Smrg	/* 96 */ KEY_KP_8,	/* Keypad 8 Up */
310ee3138f1Smrg	/* 97 */ KEY_KP_9,	/* KEypad 9 Pg Up */
311ee3138f1Smrg	/* 98 */ KEY_KP_0,	/* Keypad 0 Ins */
312ee3138f1Smrg	/* 99 */ KEY_KP_Decimal,	/* Keypad . Del */
313ee3138f1Smrg	/* 100 */ KEY_Less,	/* < > on some keyboards */
314ee3138f1Smrg	/* 101 */ KEY_Menu,	/* Menu */
315713cff54Smacallan	/* 102 */ KEY_Power,	/* sleep key on Sun USB */
316ee3138f1Smrg	/* 103 */ KEY_KP_Equal, /* Keypad = on Mac keyboards */
317713cff54Smacallan	/* 104 */ KEY_F13,
318713cff54Smacallan	/* 105 */ KEY_F14,
319713cff54Smacallan	/* 106 */ KEY_F15,
320713cff54Smacallan	/* 107 */ KEY_F16,
321ee3138f1Smrg	/* 108 */ KEY_NOTUSED,
322713cff54Smacallan	/* 109 */ KEY_Power,
323ee3138f1Smrg	/* 110 */ KEY_NOTUSED,
324ee3138f1Smrg	/* 111 */ KEY_NOTUSED,
325ee3138f1Smrg	/* 112 */ KEY_NOTUSED,
326ee3138f1Smrg	/* 113 */ KEY_NOTUSED,
327ee3138f1Smrg	/* 114 */ KEY_NOTUSED,
328ee3138f1Smrg	/* 115 */ KEY_NOTUSED,
329713cff54Smacallan	/* 116 */ KEY_L7,
330713cff54Smacallan	/* 117 */ KEY_Help,
331713cff54Smacallan	/* 118 */ KEY_L3,
332713cff54Smacallan	/* 119 */ KEY_L5,
333713cff54Smacallan	/* 120 */ KEY_L1,
334713cff54Smacallan	/* 121 */ KEY_L2,
335713cff54Smacallan	/* 122 */ KEY_L4,
336713cff54Smacallan	/* 123 */ KEY_L10,
337713cff54Smacallan	/* 124 */ KEY_L6,
338713cff54Smacallan	/* 125 */ KEY_L8,
339713cff54Smacallan	/* 126 */ KEY_L9,
340713cff54Smacallan	/* 127 */ KEY_Mute,
341713cff54Smacallan	/* 128 */ KEY_AudioRaise,
342713cff54Smacallan	/* 129 */ KEY_AudioLower,
343ee3138f1Smrg	/* 130 */ KEY_NOTUSED,
344ee3138f1Smrg	/* 131 */ KEY_NOTUSED,
345ee3138f1Smrg	/* 132 */ KEY_NOTUSED,
346ee3138f1Smrg	/* 133 */ KEY_NOTUSED,
347ee3138f1Smrg	/* 134 */ KEY_NOTUSED,
3488e3c6fe8Schristos/*
3491468c73eSmrg * Special keycodes for Japanese keyboards
3501468c73eSmrg * Override atKeyname HKTG and BSlash2 code to unique values for JP106 keyboards
3518e3c6fe8Schristos */
3528e3c6fe8Schristos#undef KEY_HKTG
3531468c73eSmrg#define KEY_HKTG	200	/* Japanese Hiragana Katakana Toggle */
3548e3c6fe8Schristos#undef KEY_BSlash2
3558e3c6fe8Schristos#define KEY_BSlash2	203	/* Japanese '\_' key */
3568e3c6fe8Schristos
3578e3c6fe8Schristos	/* 135 */ KEY_BSlash2,	/* Japanese 106 kbd: '\_' */
3588e3c6fe8Schristos	/* 136 */ KEY_HKTG,	/* Japanese 106 kbd: Hiragana Katakana toggle */
3598e3c6fe8Schristos	/* 137 */ KEY_Yen,	/* Japanese 106 kbd: '\|' */
3608e3c6fe8Schristos	/* 138 */ KEY_XFER,	/* Japanese 106 kbd: Henkan */
3618e3c6fe8Schristos	/* 139 */ KEY_NFER,	/* Japanese 106 kbd: Muhenkan */
362ee3138f1Smrg	/* 140 */ KEY_NOTUSED,
363ee3138f1Smrg	/* 141 */ KEY_NOTUSED,
364ee3138f1Smrg	/* 142 */ KEY_NOTUSED,
365ee3138f1Smrg	/* 143 */ KEY_NOTUSED,
3668e3c6fe8Schristos/*
3671468c73eSmrg * Special keycodes for Korean keyboards
3681468c73eSmrg * Define Hangul and Hangul_Hanja unique key codes
3691468c73eSmrg * These keys also use KANA and EISU on some Macintosh Japanese USB keyboards
3708e3c6fe8Schristos */
3718e3c6fe8Schristos#define KEY_Hangul		201	/* Also KANA Key on Mac JP USB kbd */
3728e3c6fe8Schristos#define KEY_Hangul_Hanja	202	/* Also EISU Key on Mac JP USB kbd */
3738e3c6fe8Schristos	/* 144 */ KEY_Hangul,		/* Korean 106 kbd: Hangul */
3748e3c6fe8Schristos	/* 145 */ KEY_Hangul_Hanja,	/* Korean 106 kbd: Hangul Hanja */
375ee3138f1Smrg	/* 146 */ KEY_NOTUSED,
376ee3138f1Smrg	/* 147 */ KEY_NOTUSED,
377ee3138f1Smrg	/* 148 */ KEY_NOTUSED,
378ee3138f1Smrg	/* 149 */ KEY_NOTUSED,
379ee3138f1Smrg	/* 150 */ KEY_NOTUSED,
380ee3138f1Smrg	/* 151 */ KEY_NOTUSED,
381ee3138f1Smrg	/* 152 */ KEY_NOTUSED,
382ee3138f1Smrg	/* 153 */ KEY_NOTUSED,
383ee3138f1Smrg	/* 154 */ KEY_NOTUSED,
384ee3138f1Smrg	/* 155 */ KEY_NOTUSED,
385ee3138f1Smrg	/* 156 */ KEY_NOTUSED,
386ee3138f1Smrg	/* 157 */ KEY_NOTUSED,
387ee3138f1Smrg	/* 158 */ KEY_NOTUSED,
388ee3138f1Smrg	/* 159 */ KEY_NOTUSED,
389ee3138f1Smrg	/* 160 */ KEY_NOTUSED,
390ee3138f1Smrg	/* 161 */ KEY_NOTUSED,
391ee3138f1Smrg	/* 162 */ KEY_NOTUSED,
392ee3138f1Smrg	/* 163 */ KEY_NOTUSED,
393ee3138f1Smrg	/* 164 */ KEY_NOTUSED,
394ee3138f1Smrg	/* 165 */ KEY_NOTUSED,
395ee3138f1Smrg	/* 166 */ KEY_NOTUSED,
396ee3138f1Smrg	/* 167 */ KEY_NOTUSED,
397ee3138f1Smrg	/* 168 */ KEY_NOTUSED,
398ee3138f1Smrg	/* 169 */ KEY_NOTUSED,
399ee3138f1Smrg	/* 170 */ KEY_NOTUSED,
400ee3138f1Smrg	/* 171 */ KEY_NOTUSED,
401ee3138f1Smrg	/* 172 */ KEY_NOTUSED,
402ee3138f1Smrg	/* 173 */ KEY_NOTUSED,
403ee3138f1Smrg	/* 174 */ KEY_NOTUSED,
404ee3138f1Smrg	/* 175 */ KEY_NOTUSED,
405ee3138f1Smrg	/* 176 */ KEY_NOTUSED,
406ee3138f1Smrg	/* 177 */ KEY_NOTUSED,
407ee3138f1Smrg	/* 178 */ KEY_NOTUSED,
408ee3138f1Smrg	/* 179 */ KEY_NOTUSED,
409ee3138f1Smrg	/* 180 */ KEY_NOTUSED,
410ee3138f1Smrg	/* 181 */ KEY_NOTUSED,
411ee3138f1Smrg	/* 182 */ KEY_NOTUSED,
412ee3138f1Smrg	/* 183 */ KEY_NOTUSED,
413ee3138f1Smrg	/* 184 */ KEY_NOTUSED,
414ee3138f1Smrg	/* 185 */ KEY_NOTUSED,
415ee3138f1Smrg	/* 186 */ KEY_NOTUSED,
416ee3138f1Smrg	/* 187 */ KEY_NOTUSED,
417ee3138f1Smrg	/* 188 */ KEY_NOTUSED,
418ee3138f1Smrg	/* 189 */ KEY_NOTUSED,
419ee3138f1Smrg	/* 190 */ KEY_NOTUSED,
420ee3138f1Smrg	/* 191 */ KEY_NOTUSED,
421ee3138f1Smrg	/* 192 */ KEY_NOTUSED,
422ee3138f1Smrg	/* 193 */ KEY_NOTUSED,
423ee3138f1Smrg	/* 194 */ KEY_NOTUSED,
424ee3138f1Smrg	/* 195 */ KEY_NOTUSED,
425ee3138f1Smrg	/* 196 */ KEY_NOTUSED,
426ee3138f1Smrg	/* 197 */ KEY_NOTUSED,
427ee3138f1Smrg	/* 198 */ KEY_NOTUSED,
428ee3138f1Smrg	/* 199 */ KEY_NOTUSED,
429ee3138f1Smrg	/* 200 */ KEY_NOTUSED,
430ee3138f1Smrg	/* 201 */ KEY_NOTUSED,
431ee3138f1Smrg	/* 202 */ KEY_NOTUSED,
432ee3138f1Smrg	/* 203 */ KEY_NOTUSED,
433ee3138f1Smrg	/* 204 */ KEY_NOTUSED,
434ee3138f1Smrg	/* 205 */ KEY_NOTUSED,
435ee3138f1Smrg	/* 206 */ KEY_NOTUSED,
436ee3138f1Smrg	/* 207 */ KEY_NOTUSED,
437ee3138f1Smrg	/* 208 */ KEY_NOTUSED,
438ee3138f1Smrg	/* 209 */ KEY_NOTUSED,
439ee3138f1Smrg	/* 210 */ KEY_NOTUSED,
440ee3138f1Smrg	/* 211 */ KEY_NOTUSED,
441ee3138f1Smrg	/* 212 */ KEY_NOTUSED,
442ee3138f1Smrg	/* 213 */ KEY_NOTUSED,
443ee3138f1Smrg	/* 214 */ KEY_NOTUSED,
444ee3138f1Smrg	/* 215 */ KEY_NOTUSED,
445ee3138f1Smrg	/* 216 */ KEY_NOTUSED,
446ee3138f1Smrg	/* 217 */ KEY_NOTUSED,
447ee3138f1Smrg	/* 218 */ KEY_NOTUSED,
448ee3138f1Smrg	/* 219 */ KEY_NOTUSED,
449ee3138f1Smrg	/* 220 */ KEY_NOTUSED,
450ee3138f1Smrg	/* 221 */ KEY_NOTUSED,
451ee3138f1Smrg	/* 222 */ KEY_NOTUSED,
452ee3138f1Smrg	/* 223 */ KEY_NOTUSED,
453ee3138f1Smrg	/* 224 */ KEY_LCtrl,	/* Left Control */
454ee3138f1Smrg	/* 225 */ KEY_ShiftL,	/* Left Shift */
455ee3138f1Smrg	/* 226 */ KEY_Alt,	/* Left Alt */
456ee3138f1Smrg	/* 227 */ KEY_LMeta,	/* Left Meta */
457ee3138f1Smrg	/* 228 */ KEY_RCtrl,	/* Right Control */
458ee3138f1Smrg	/* 229 */ KEY_ShiftR,	/* Right Shift */
459ee3138f1Smrg	/* 230 */ KEY_AltLang,	/* Right Alt, AKA AltGr */
460ee3138f1Smrg	/* 231 */ KEY_LMeta,	/* Right Meta XXX */
461ee3138f1Smrg};
462aa8e367bSmrg#define WS_USB_MAP_SIZE (sizeof(wsUsbMap)/sizeof(*wsUsbMap))
463ee3138f1Smrg
464ee3138f1Smrgstatic
465ee3138f1SmrgTransMapRec wsUsb = {
466ee3138f1Smrg    0,
467ee3138f1Smrg    WS_USB_MAP_SIZE,
468ee3138f1Smrg    wsUsbMap
469ee3138f1Smrg};
470ee3138f1Smrg
471ac15d2bcSmacallanstatic CARD8 wsXtMap[] = {
472ac15d2bcSmacallan	/* 0 */ KEY_NOTUSED,
473ac15d2bcSmacallan	/* 1 */ KEY_Escape,
474ac15d2bcSmacallan	/* 2 */ KEY_1,
475ac15d2bcSmacallan	/* 3 */ KEY_2,
476aa8e367bSmrg	/* 4 */ KEY_3,
477ac15d2bcSmacallan	/* 5 */ KEY_4,
478ac15d2bcSmacallan	/* 6 */ KEY_5,
479ac15d2bcSmacallan	/* 7 */ KEY_6,
480ac15d2bcSmacallan	/* 8 */ KEY_7,
481ac15d2bcSmacallan	/* 9 */ KEY_8,
482ac15d2bcSmacallan	/* 10 */ KEY_9,
483ac15d2bcSmacallan	/* 11 */ KEY_0,
484ac15d2bcSmacallan	/* 12 */ KEY_Minus,
485ac15d2bcSmacallan	/* 13 */ KEY_Equal,
486ac15d2bcSmacallan	/* 14 */ KEY_BackSpace,
487ac15d2bcSmacallan	/* 15 */ KEY_Tab,
488ac15d2bcSmacallan	/* 16 */ KEY_Q,
489ac15d2bcSmacallan	/* 17 */ KEY_W,
490ac15d2bcSmacallan	/* 18 */ KEY_E,
491ac15d2bcSmacallan	/* 19 */ KEY_R,
492ac15d2bcSmacallan	/* 20 */ KEY_T,
493ac15d2bcSmacallan	/* 21 */ KEY_Y,
494ac15d2bcSmacallan	/* 22 */ KEY_U,
495ac15d2bcSmacallan	/* 23 */ KEY_I,
496ac15d2bcSmacallan	/* 24 */ KEY_O,
497ac15d2bcSmacallan	/* 25 */ KEY_P,
498ac15d2bcSmacallan	/* 26 */ KEY_LBrace,
499ac15d2bcSmacallan	/* 27 */ KEY_RBrace,
500ac15d2bcSmacallan	/* 28 */ KEY_Enter,
501ac15d2bcSmacallan	/* 29 */ KEY_LCtrl,
502ac15d2bcSmacallan	/* 30 */ KEY_A,
503ac15d2bcSmacallan	/* 31 */ KEY_S,
504ac15d2bcSmacallan	/* 32 */ KEY_D,
505ac15d2bcSmacallan	/* 33 */ KEY_F,
506ac15d2bcSmacallan	/* 34 */ KEY_G,
507ac15d2bcSmacallan	/* 35 */ KEY_H,
508ac15d2bcSmacallan	/* 36 */ KEY_J,
509ac15d2bcSmacallan	/* 37 */ KEY_K,
510ac15d2bcSmacallan	/* 38 */ KEY_L,
511ac15d2bcSmacallan	/* 39 */ KEY_SemiColon,
512ac15d2bcSmacallan	/* 40 */ KEY_Quote,
513ac15d2bcSmacallan	/* 41 */ KEY_Tilde,
514ac15d2bcSmacallan	/* 42 */ KEY_ShiftL,
515ac15d2bcSmacallan	/* 43 */ KEY_BSlash,
516ac15d2bcSmacallan	/* 44 */ KEY_Z,
517ac15d2bcSmacallan	/* 45 */ KEY_X,
518ac15d2bcSmacallan	/* 46 */ KEY_C,
519ac15d2bcSmacallan	/* 47 */ KEY_V,
520ac15d2bcSmacallan	/* 48 */ KEY_B,
521ac15d2bcSmacallan	/* 49 */ KEY_N,
522ac15d2bcSmacallan	/* 50 */ KEY_M,
523ac15d2bcSmacallan	/* 51 */ KEY_Comma,
524ac15d2bcSmacallan	/* 52 */ KEY_Period,
525ac15d2bcSmacallan	/* 53 */ KEY_Slash,
526ac15d2bcSmacallan	/* 54 */ KEY_ShiftR,
527ac15d2bcSmacallan	/* 55 */ KEY_KP_Multiply,
528ac15d2bcSmacallan	/* 56 */ KEY_Alt,
529ac15d2bcSmacallan	/* 57 */ KEY_Space,
530ac15d2bcSmacallan	/* 58 */ KEY_CapsLock,
531ac15d2bcSmacallan	/* 59 */ KEY_F1,
532ac15d2bcSmacallan	/* 60 */ KEY_F2,
533ac15d2bcSmacallan	/* 61 */ KEY_F3,
534ac15d2bcSmacallan	/* 62 */ KEY_F4,
535ac15d2bcSmacallan	/* 63 */ KEY_F5,
536ac15d2bcSmacallan	/* 64 */ KEY_F6,
537ac15d2bcSmacallan	/* 65 */ KEY_F7,
538ac15d2bcSmacallan	/* 66 */ KEY_F8,
539ac15d2bcSmacallan	/* 67 */ KEY_F9,
540ac15d2bcSmacallan	/* 68 */ KEY_F10,
541ac15d2bcSmacallan	/* 69 */ KEY_NumLock,
542ac15d2bcSmacallan	/* 70 */ KEY_ScrollLock,
543ac15d2bcSmacallan	/* 71 */ KEY_KP_7,
544ac15d2bcSmacallan	/* 72 */ KEY_KP_8,
545ac15d2bcSmacallan	/* 73 */ KEY_KP_9,
546ac15d2bcSmacallan	/* 74 */ KEY_KP_Minus,
547ac15d2bcSmacallan	/* 75 */ KEY_KP_4,
548ac15d2bcSmacallan	/* 76 */ KEY_KP_5,
549ac15d2bcSmacallan	/* 77 */ KEY_KP_6,
550ac15d2bcSmacallan	/* 78 */ KEY_KP_Plus,
551ac15d2bcSmacallan	/* 79 */ KEY_KP_1,
552ac15d2bcSmacallan	/* 80 */ KEY_KP_2,
553ac15d2bcSmacallan	/* 81 */ KEY_KP_3,
554ac15d2bcSmacallan	/* 82 */ KEY_KP_0,
555ac15d2bcSmacallan	/* 83 */ KEY_KP_Decimal,
556ac15d2bcSmacallan	/* 84 */ KEY_NOTUSED,
557ac15d2bcSmacallan	/* 85 */ KEY_NOTUSED,
558ac15d2bcSmacallan	/* 86 */ KEY_Less,	/* backslash on uk, < on german */
559ac15d2bcSmacallan	/* 87 */ KEY_F11,
560ac15d2bcSmacallan	/* 88 */ KEY_F12,
561ac15d2bcSmacallan	/* 89 */ KEY_NOTUSED,
562ac15d2bcSmacallan	/* 90 */ KEY_NOTUSED,
563ac15d2bcSmacallan	/* 91 */ KEY_NOTUSED,
564ac15d2bcSmacallan	/* 92 */ KEY_NOTUSED,
565ac15d2bcSmacallan	/* 93 */ KEY_NOTUSED,
566ac15d2bcSmacallan	/* 94 */ KEY_NOTUSED,
567ac15d2bcSmacallan	/* 95 */ KEY_NOTUSED,
568ac15d2bcSmacallan	/* 96 */ KEY_NOTUSED,
569ac15d2bcSmacallan	/* 97 */ KEY_NOTUSED,
570ac15d2bcSmacallan	/* 98 */ KEY_NOTUSED,
571ac15d2bcSmacallan	/* 99 */ KEY_NOTUSED,
572ac15d2bcSmacallan	/* 100 */ KEY_NOTUSED,
573ac15d2bcSmacallan	/* 101 */ KEY_NOTUSED,
574ac15d2bcSmacallan	/* 102 */ KEY_NOTUSED,
575ac15d2bcSmacallan	/* 103 */ KEY_NOTUSED,
576ac15d2bcSmacallan	/* 104 */ KEY_NOTUSED,
577ac15d2bcSmacallan	/* 105 */ KEY_NOTUSED,
578ac15d2bcSmacallan	/* 106 */ KEY_NOTUSED,
579ac15d2bcSmacallan	/* 107 */ KEY_NOTUSED,
580ac15d2bcSmacallan	/* 108 */ KEY_NOTUSED,
581ac15d2bcSmacallan	/* 109 */ KEY_NOTUSED,
582ac15d2bcSmacallan	/* 110 */ KEY_NOTUSED,
583ac15d2bcSmacallan	/* 111 */ KEY_NOTUSED,
584abaf7e73Smacallan	/* 112 */ KEY_HKTG,
585ac15d2bcSmacallan	/* 113 */ KEY_NOTUSED,
586ac15d2bcSmacallan	/* 114 */ KEY_NOTUSED,
587abaf7e73Smacallan	/* 115 */ KEY_BSlash2,
588ac15d2bcSmacallan	/* 116 */ KEY_NOTUSED,
589ac15d2bcSmacallan	/* 117 */ KEY_NOTUSED,
590ac15d2bcSmacallan	/* 118 */ KEY_NOTUSED,
591ac15d2bcSmacallan	/* 119 */ KEY_NOTUSED,
592ac15d2bcSmacallan	/* 120 */ KEY_NOTUSED,
593abaf7e73Smacallan	/* 121 */ KEY_XFER,
594ac15d2bcSmacallan	/* 122 */ KEY_NOTUSED,
595abaf7e73Smacallan	/* 123 */ KEY_NFER,
596ac15d2bcSmacallan	/* 124 */ KEY_NOTUSED,
597abaf7e73Smacallan	/* 125 */ KEY_Yen,
598ac15d2bcSmacallan	/* 126 */ KEY_NOTUSED,
599ac15d2bcSmacallan	/* 127 */ KEY_Pause,
600ac15d2bcSmacallan	/* 128 */ KEY_NOTUSED,
601ac15d2bcSmacallan	/* 129 */ KEY_NOTUSED,
602ac15d2bcSmacallan	/* 130 */ KEY_NOTUSED,
603ac15d2bcSmacallan	/* 131 */ KEY_NOTUSED,
604ac15d2bcSmacallan	/* 132 */ KEY_NOTUSED,
605ac15d2bcSmacallan	/* 133 */ KEY_NOTUSED,
606ac15d2bcSmacallan	/* 134 */ KEY_NOTUSED,
607ac15d2bcSmacallan	/* 135 */ KEY_NOTUSED,
608ac15d2bcSmacallan	/* 136 */ KEY_NOTUSED,
609ac15d2bcSmacallan	/* 137 */ KEY_NOTUSED,
610ac15d2bcSmacallan	/* 138 */ KEY_NOTUSED,
611ac15d2bcSmacallan	/* 139 */ KEY_NOTUSED,
612ac15d2bcSmacallan	/* 140 */ KEY_NOTUSED,
613ac15d2bcSmacallan	/* 141 */ KEY_NOTUSED,
614ac15d2bcSmacallan	/* 142 */ KEY_NOTUSED,
615ac15d2bcSmacallan	/* 143 */ KEY_NOTUSED,
616ac15d2bcSmacallan	/* 144 */ KEY_NOTUSED,
617ac15d2bcSmacallan	/* 145 */ KEY_NOTUSED,
618ac15d2bcSmacallan	/* 146 */ KEY_NOTUSED,
619ac15d2bcSmacallan	/* 147 */ KEY_NOTUSED,
620ac15d2bcSmacallan	/* 148 */ KEY_NOTUSED,
621ac15d2bcSmacallan	/* 149 */ KEY_NOTUSED,
622ac15d2bcSmacallan	/* 150 */ KEY_NOTUSED,
623ac15d2bcSmacallan	/* 151 */ KEY_NOTUSED,
624ac15d2bcSmacallan	/* 152 */ KEY_NOTUSED,
625ac15d2bcSmacallan	/* 153 */ KEY_NOTUSED,
626ac15d2bcSmacallan	/* 154 */ KEY_NOTUSED,
627ac15d2bcSmacallan	/* 155 */ KEY_NOTUSED,
628ac15d2bcSmacallan	/* 156 */ KEY_KP_Enter,
629ac15d2bcSmacallan	/* 157 */ KEY_RCtrl,
630ac15d2bcSmacallan	/* 158 */ KEY_NOTUSED,
631ac15d2bcSmacallan	/* 159 */ KEY_NOTUSED,
632ac15d2bcSmacallan	/* 160 */ KEY_Mute,
633ac15d2bcSmacallan	/* 161 */ KEY_NOTUSED,
634ac15d2bcSmacallan	/* 162 */ KEY_NOTUSED,
635ac15d2bcSmacallan	/* 163 */ KEY_NOTUSED,
636ac15d2bcSmacallan	/* 164 */ KEY_NOTUSED,
637ac15d2bcSmacallan	/* 165 */ KEY_NOTUSED,
638ac15d2bcSmacallan	/* 166 */ KEY_NOTUSED,
639ac15d2bcSmacallan	/* 167 */ KEY_NOTUSED,
640ac15d2bcSmacallan	/* 168 */ KEY_NOTUSED,
641ac15d2bcSmacallan	/* 169 */ KEY_NOTUSED,
642ac15d2bcSmacallan	/* 170 */ KEY_Print,
643ac15d2bcSmacallan	/* 171 */ KEY_NOTUSED,
644ac15d2bcSmacallan	/* 172 */ KEY_NOTUSED,
645ac15d2bcSmacallan	/* 173 */ KEY_NOTUSED,
646ac15d2bcSmacallan	/* 174 */ KEY_AudioLower,
647ac15d2bcSmacallan	/* 175 */ KEY_AudioRaise,
648ac15d2bcSmacallan	/* 176 */ KEY_NOTUSED,
649ac15d2bcSmacallan	/* 177 */ KEY_NOTUSED,
650ac15d2bcSmacallan	/* 178 */ KEY_NOTUSED,
651ac15d2bcSmacallan	/* 179 */ KEY_NOTUSED,
652ac15d2bcSmacallan	/* 180 */ KEY_NOTUSED,
653ac15d2bcSmacallan	/* 181 */ KEY_KP_Divide,
654ac15d2bcSmacallan	/* 182 */ KEY_NOTUSED,
655ac15d2bcSmacallan	/* 183 */ KEY_Print,
656ac15d2bcSmacallan	/* 184 */ KEY_AltLang,
657ac15d2bcSmacallan	/* 185 */ KEY_NOTUSED,
658ac15d2bcSmacallan	/* 186 */ KEY_NOTUSED,
659ac15d2bcSmacallan	/* 187 */ KEY_NOTUSED,
660ac15d2bcSmacallan	/* 188 */ KEY_NOTUSED,
661ac15d2bcSmacallan	/* 189 */ KEY_NOTUSED,
662ac15d2bcSmacallan	/* 190 */ KEY_NOTUSED,
663ac15d2bcSmacallan	/* 191 */ KEY_NOTUSED,
664ac15d2bcSmacallan	/* 192 */ KEY_NOTUSED,
665ac15d2bcSmacallan	/* 193 */ KEY_NOTUSED,
666ac15d2bcSmacallan	/* 194 */ KEY_NOTUSED,
667ac15d2bcSmacallan	/* 195 */ KEY_NOTUSED,
668ac15d2bcSmacallan	/* 196 */ KEY_NOTUSED,
669ac15d2bcSmacallan	/* 197 */ KEY_NOTUSED,
670ac15d2bcSmacallan	/* 198 */ KEY_NOTUSED,
671ac15d2bcSmacallan	/* 199 */ KEY_Home,
672ac15d2bcSmacallan	/* 200 */ KEY_Up,
673ac15d2bcSmacallan	/* 201 */ KEY_PgUp,
674ac15d2bcSmacallan	/* 202 */ KEY_NOTUSED,
675ac15d2bcSmacallan	/* 203 */ KEY_Left,
676ac15d2bcSmacallan	/* 204 */ KEY_NOTUSED,
677ac15d2bcSmacallan	/* 205 */ KEY_Right,
678ac15d2bcSmacallan	/* 206 */ KEY_NOTUSED,
679ac15d2bcSmacallan	/* 207 */ KEY_End,
680ac15d2bcSmacallan	/* 208 */ KEY_Down,
681ac15d2bcSmacallan	/* 209 */ KEY_PgDown,
682ac15d2bcSmacallan	/* 210 */ KEY_Insert,
683ac15d2bcSmacallan	/* 211 */ KEY_Delete,
684ac15d2bcSmacallan	/* 212 */ KEY_NOTUSED,
685ac15d2bcSmacallan	/* 213 */ KEY_NOTUSED,
686ac15d2bcSmacallan	/* 214 */ KEY_NOTUSED,
687ac15d2bcSmacallan	/* 215 */ KEY_NOTUSED,
688ac15d2bcSmacallan	/* 216 */ KEY_NOTUSED,
689ac15d2bcSmacallan	/* 217 */ KEY_NOTUSED,
690ac15d2bcSmacallan	/* 218 */ KEY_NOTUSED,
691ac15d2bcSmacallan	/* 219 */ KEY_LMeta,
692ac15d2bcSmacallan	/* 220 */ KEY_RMeta,
693ac15d2bcSmacallan	/* 221 */ KEY_Menu,
694ac15d2bcSmacallan};
695aa8e367bSmrg#define WS_XT_MAP_SIZE (sizeof(wsXtMap)/sizeof(*wsXtMap))
696ac15d2bcSmacallan
697ac15d2bcSmacallanstatic
698ac15d2bcSmacallanTransMapRec wsXt = {
699ac15d2bcSmacallan    0,
700ac15d2bcSmacallan    WS_XT_MAP_SIZE,
701ac15d2bcSmacallan    wsXtMap
702ac15d2bcSmacallan};
703ac15d2bcSmacallan
704ee3138f1Smrg/* Map for adb keyboards  */
705ee3138f1Smrgstatic CARD8 wsAdbMap[] = {
706ee3138f1Smrg	/* 0 */ KEY_A,
707ee3138f1Smrg	/* 1 */ KEY_S,
708ee3138f1Smrg	/* 2 */ KEY_D,
709ee3138f1Smrg	/* 3 */ KEY_F,
710ee3138f1Smrg	/* 4 */ KEY_H,
711ee3138f1Smrg	/* 5 */ KEY_G,
712ee3138f1Smrg	/* 6 */ KEY_Z,
713ee3138f1Smrg	/* 7 */ KEY_X,
714ee3138f1Smrg	/* 8 */ KEY_C,
715ee3138f1Smrg	/* 9 */ KEY_V,
716ee3138f1Smrg	/* 10 */ KEY_UNKNOWN,	/* @ # on french keyboards */
717ee3138f1Smrg	/* 11 */ KEY_B,
718ee3138f1Smrg	/* 12 */ KEY_Q,
719ee3138f1Smrg	/* 13 */ KEY_W,
720ee3138f1Smrg	/* 14 */ KEY_E,
721ee3138f1Smrg	/* 15 */ KEY_R,
722ee3138f1Smrg	/* 16 */ KEY_Y,
723ee3138f1Smrg	/* 17 */ KEY_T,
724ee3138f1Smrg	/* 18 */ KEY_1,
725ee3138f1Smrg	/* 19 */ KEY_2,
726ee3138f1Smrg	/* 20 */ KEY_3,
727ee3138f1Smrg	/* 21 */ KEY_4,
728ee3138f1Smrg	/* 22 */ KEY_6,
729ee3138f1Smrg	/* 23 */ KEY_5,
730ee3138f1Smrg	/* 24 */ KEY_Equal,
731ee3138f1Smrg	/* 25 */ KEY_9,
732ee3138f1Smrg	/* 26 */ KEY_7,
733ee3138f1Smrg	/* 27 */ KEY_Minus,
734ee3138f1Smrg	/* 28 */ KEY_8,
735ee3138f1Smrg	/* 29 */ KEY_0,
736ee3138f1Smrg	/* 30 */ KEY_RBrace,
737ee3138f1Smrg	/* 31 */ KEY_O,
738ee3138f1Smrg	/* 32 */ KEY_U,
739ee3138f1Smrg	/* 33 */ KEY_LBrace,
740ee3138f1Smrg	/* 34 */ KEY_I,
741ee3138f1Smrg	/* 35 */ KEY_P,
742ee3138f1Smrg	/* 36 */ KEY_Enter,
743ee3138f1Smrg	/* 37 */ KEY_L,
744ee3138f1Smrg	/* 38 */ KEY_J,
745ee3138f1Smrg	/* 39 */ KEY_Quote,
746ee3138f1Smrg	/* 40 */ KEY_K,
747ee3138f1Smrg	/* 41 */ KEY_SemiColon,
748ee3138f1Smrg	/* 42 */ KEY_BSlash,
749ee3138f1Smrg	/* 43 */ KEY_Comma,
750ee3138f1Smrg	/* 44 */ KEY_Slash,
751ee3138f1Smrg	/* 45 */ KEY_N,
752ee3138f1Smrg	/* 46 */ KEY_M,
753ee3138f1Smrg	/* 47 */ KEY_Period,
754ee3138f1Smrg	/* 48 */ KEY_Tab,
755ee3138f1Smrg	/* 49 */ KEY_Space,
756ee3138f1Smrg	/* 50 */ KEY_Tilde,
757ac15d2bcSmacallan	/* 51 */ KEY_BackSpace,
758ee3138f1Smrg	/* 52 */ KEY_AltLang,
759ee3138f1Smrg	/* 53 */ KEY_Escape,
760ee3138f1Smrg	/* 54 */ KEY_LCtrl,
761ac15d2bcSmacallan	/* 55 */ KEY_LMeta,
762ee3138f1Smrg	/* 56 */ KEY_ShiftL,
763ee3138f1Smrg	/* 57 */ KEY_CapsLock,
764ac15d2bcSmacallan	/* 58 */ KEY_Alt,
765ee3138f1Smrg	/* 59 */ KEY_Left,
766ee3138f1Smrg	/* 60 */ KEY_Right,
767ee3138f1Smrg	/* 61 */ KEY_Down,
768ee3138f1Smrg	/* 62 */ KEY_Up,
769ee3138f1Smrg	/* 63 */ KEY_UNKNOWN,	/* Fn */
770ee3138f1Smrg	/* 64 */ KEY_NOTUSED,
771ee3138f1Smrg	/* 65 */ KEY_KP_Decimal,
772ee3138f1Smrg	/* 66 */ KEY_NOTUSED,
773ee3138f1Smrg	/* 67 */ KEY_KP_Multiply,
774ee3138f1Smrg	/* 68 */ KEY_NOTUSED,
775ee3138f1Smrg	/* 69 */ KEY_KP_Plus,
776ee3138f1Smrg	/* 70 */ KEY_NOTUSED,
777ac15d2bcSmacallan	/* 71 */ KEY_NumLock,	/* Clear */
778ee3138f1Smrg	/* 72 */ KEY_NOTUSED,
779ee3138f1Smrg	/* 73 */ KEY_NOTUSED,
780ee3138f1Smrg	/* 74 */ KEY_NOTUSED,
781ee3138f1Smrg	/* 75 */ KEY_KP_Divide,
782ee3138f1Smrg	/* 76 */ KEY_KP_Enter,
783ee3138f1Smrg	/* 77 */ KEY_NOTUSED,
784ee3138f1Smrg	/* 78 */ KEY_KP_Minus,
785ee3138f1Smrg	/* 79 */ KEY_NOTUSED,
786ee3138f1Smrg	/* 80 */ KEY_NOTUSED,
787ee3138f1Smrg	/* 81 */ KEY_KP_Equal,	/* Keypad = */
788ee3138f1Smrg	/* 82 */ KEY_KP_0,
789ee3138f1Smrg	/* 83 */ KEY_KP_1,
790ee3138f1Smrg	/* 84 */ KEY_KP_2,
791ee3138f1Smrg	/* 85 */ KEY_KP_3,
792ee3138f1Smrg	/* 86 */ KEY_KP_4,
793ee3138f1Smrg	/* 87 */ KEY_KP_5,
794ee3138f1Smrg	/* 88 */ KEY_KP_6,
795ee3138f1Smrg	/* 89 */ KEY_KP_7,
796ee3138f1Smrg	/* 90 */ KEY_NOTUSED,
797ee3138f1Smrg	/* 91 */ KEY_KP_8,
798ee3138f1Smrg	/* 92 */ KEY_KP_9,
799ee3138f1Smrg	/* 93 */ KEY_NOTUSED,
800ee3138f1Smrg	/* 94 */ KEY_NOTUSED,
801ac15d2bcSmacallan	/* 95 */ KEY_KP_Decimal,	/* Keypad ,  */
802ee3138f1Smrg	/* 96 */ KEY_F5,
803ee3138f1Smrg	/* 97 */ KEY_F6,
804ee3138f1Smrg	/* 98 */ KEY_F7,
805ee3138f1Smrg	/* 99 */ KEY_F3,
806ee3138f1Smrg	/* 100 */ KEY_F8,
807ee3138f1Smrg	/* 101 */ KEY_F9,
808ee3138f1Smrg	/* 102 */ KEY_NOTUSED,
809ee3138f1Smrg	/* 103 */ KEY_F11,
810ee3138f1Smrg	/* 104 */ KEY_NOTUSED,
811ac15d2bcSmacallan	/* 105 */ KEY_Print,
812ee3138f1Smrg	/* 106 */ KEY_KP_Enter,
813ac15d2bcSmacallan	/* 107 */ KEY_ScrollLock,
814ee3138f1Smrg	/* 108 */ KEY_NOTUSED,
815ee3138f1Smrg	/* 109 */ KEY_F10,
816ee3138f1Smrg	/* 110 */ KEY_NOTUSED,
817ee3138f1Smrg	/* 111 */ KEY_F12,
818ee3138f1Smrg	/* 112 */ KEY_NOTUSED,
819ac15d2bcSmacallan	/* 113 */ KEY_Pause,
820ac15d2bcSmacallan	/* 114 */ KEY_Insert,
821ee3138f1Smrg	/* 115 */ KEY_Home,
822ee3138f1Smrg	/* 116 */ KEY_PgUp,
823ac15d2bcSmacallan	/* 117 */ KEY_Delete,
824ee3138f1Smrg	/* 118 */ KEY_F4,
825ee3138f1Smrg	/* 119 */ KEY_End,
826ee3138f1Smrg	/* 120 */ KEY_F2,
827ee3138f1Smrg	/* 121 */ KEY_PgDown,
828ac15d2bcSmacallan	/* 122 */ KEY_F1,
829ac15d2bcSmacallan	/* 123 */ KEY_NOTUSED,
830ac15d2bcSmacallan	/* 124 */ KEY_NOTUSED,
831ac15d2bcSmacallan	/* 125 */ KEY_NOTUSED,
832ac15d2bcSmacallan	/* 126 */ KEY_NOTUSED,
833ac15d2bcSmacallan	/* 127 */ KEY_Power
834ee3138f1Smrg};
835aa8e367bSmrg#define WS_ADB_MAP_SIZE (sizeof(wsAdbMap)/sizeof(*wsAdbMap))
836ee3138f1Smrg
837ee3138f1Smrgstatic
838ee3138f1SmrgTransMapRec wsAdb = {
839ee3138f1Smrg    0,
840ee3138f1Smrg    WS_ADB_MAP_SIZE,
841ee3138f1Smrg    wsAdbMap
842ee3138f1Smrg};
843ee3138f1Smrg
8440eaa3919Sphx/* Map for amiga keyboards  */
8450eaa3919Sphxstatic CARD8 wsAmigaMap[] = {
8460eaa3919Sphx	/* 0 */ KEY_Tilde,
8470eaa3919Sphx	/* 1 */ KEY_1,
8480eaa3919Sphx	/* 2 */ KEY_2,
8490eaa3919Sphx	/* 3 */ KEY_3,
8500eaa3919Sphx	/* 4 */ KEY_4,
8510eaa3919Sphx	/* 5 */ KEY_5,
8520eaa3919Sphx	/* 6 */ KEY_6,
8530eaa3919Sphx	/* 7 */ KEY_7,
8540eaa3919Sphx	/* 8 */ KEY_8,
8550eaa3919Sphx	/* 9 */ KEY_9,
8560eaa3919Sphx	/* 10 */ KEY_0,
8570eaa3919Sphx	/* 11 */ KEY_Minus,
8580eaa3919Sphx	/* 12 */ KEY_Equal,
8590eaa3919Sphx	/* 13 */ KEY_BSlash,	/* key in this position only on Amiga */
8600eaa3919Sphx	/* 14 */ KEY_NOTUSED,
8610eaa3919Sphx	/* 15 */ KEY_KP_0,
8620eaa3919Sphx	/* 16 */ KEY_Q,
8630eaa3919Sphx	/* 17 */ KEY_W,
8640eaa3919Sphx	/* 18 */ KEY_E,
8650eaa3919Sphx	/* 19 */ KEY_R,
8660eaa3919Sphx	/* 20 */ KEY_T,
8670eaa3919Sphx	/* 21 */ KEY_Y,
8680eaa3919Sphx	/* 22 */ KEY_U,
8690eaa3919Sphx	/* 23 */ KEY_I,
8700eaa3919Sphx	/* 24 */ KEY_O,
8710eaa3919Sphx	/* 25 */ KEY_P,
8720eaa3919Sphx	/* 26 */ KEY_LBrace,
8730eaa3919Sphx	/* 27 */ KEY_RBrace,
8740eaa3919Sphx	/* 28 */ KEY_NOTUSED,
8750eaa3919Sphx	/* 29 */ KEY_KP_1,
8760eaa3919Sphx	/* 30 */ KEY_KP_2,
8770eaa3919Sphx	/* 31 */ KEY_KP_3,
8780eaa3919Sphx	/* 32 */ KEY_A,
8790eaa3919Sphx	/* 33 */ KEY_S,
8800eaa3919Sphx	/* 34 */ KEY_D,
8810eaa3919Sphx	/* 35 */ KEY_F,
8820eaa3919Sphx	/* 36 */ KEY_G,
8830eaa3919Sphx	/* 37 */ KEY_H,
8840eaa3919Sphx	/* 38 */ KEY_J,
8850eaa3919Sphx	/* 39 */ KEY_K,
8860eaa3919Sphx	/* 40 */ KEY_L,
8870eaa3919Sphx	/* 41 */ KEY_SemiColon,
8880eaa3919Sphx	/* 42 */ KEY_Quote,
8890eaa3919Sphx	/* 43 */ KEY_BSlash,	/* # on international keyboards */
8900eaa3919Sphx	/* 44 */ KEY_NOTUSED,
8910eaa3919Sphx	/* 45 */ KEY_KP_4,
8920eaa3919Sphx	/* 46 */ KEY_KP_5,
8930eaa3919Sphx	/* 47 */ KEY_KP_6,
8940eaa3919Sphx	/* 48 */ KEY_Less,
8950eaa3919Sphx	/* 49 */ KEY_Z,
8960eaa3919Sphx	/* 50 */ KEY_X,
8970eaa3919Sphx	/* 51 */ KEY_C,
8980eaa3919Sphx	/* 52 */ KEY_V,
8990eaa3919Sphx	/* 53 */ KEY_B,
9000eaa3919Sphx	/* 54 */ KEY_N,
9010eaa3919Sphx	/* 55 */ KEY_M,
9020eaa3919Sphx	/* 56 */ KEY_Comma,
9030eaa3919Sphx	/* 57 */ KEY_Period,
9040eaa3919Sphx	/* 58 */ KEY_Slash,
9050eaa3919Sphx	/* 59 */ KEY_NOTUSED,
9060eaa3919Sphx	/* 60 */ KEY_KP_Decimal,
9070eaa3919Sphx	/* 61 */ KEY_KP_7,
9080eaa3919Sphx	/* 62 */ KEY_KP_8,
9090eaa3919Sphx	/* 63 */ KEY_KP_9,
9100eaa3919Sphx	/* 64 */ KEY_Space,
9110eaa3919Sphx	/* 65 */ KEY_BackSpace,
9120eaa3919Sphx	/* 66 */ KEY_Tab,
9130eaa3919Sphx	/* 67 */ KEY_KP_Enter,
9140eaa3919Sphx	/* 68 */ KEY_Enter,
9150eaa3919Sphx	/* 69 */ KEY_Escape,
9160eaa3919Sphx	/* 70 */ KEY_Delete,
9170eaa3919Sphx	/* 71 */ KEY_NOTUSED,
9180eaa3919Sphx	/* 72 */ KEY_NOTUSED,
9190eaa3919Sphx	/* 73 */ KEY_NOTUSED,
9200eaa3919Sphx	/* 74 */ KEY_KP_Minus,
9210eaa3919Sphx	/* 75 */ KEY_NOTUSED,
9220eaa3919Sphx	/* 76 */ KEY_Up,
9230eaa3919Sphx	/* 77 */ KEY_Down,
9240eaa3919Sphx	/* 78 */ KEY_Right,
9250eaa3919Sphx	/* 79 */ KEY_Left,
9260eaa3919Sphx	/* 80 */ KEY_F1,
9270eaa3919Sphx	/* 81 */ KEY_F2,
9280eaa3919Sphx	/* 82 */ KEY_F3,
9290eaa3919Sphx	/* 83 */ KEY_F4,
9300eaa3919Sphx	/* 84 */ KEY_F5,
9310eaa3919Sphx	/* 85 */ KEY_F6,
9320eaa3919Sphx	/* 86 */ KEY_F7,
9330eaa3919Sphx	/* 87 */ KEY_F8,
9340eaa3919Sphx	/* 88 */ KEY_F9,
9350eaa3919Sphx	/* 89 */ KEY_F10,
9360eaa3919Sphx	/* 90 */ KEY_UNKNOWN,		/* Keypad [ */
9370eaa3919Sphx	/* 91 */ KEY_UNKNOWN,		/* Keypad ] */
9380eaa3919Sphx	/* 92 */ KEY_KP_Divide,
9390eaa3919Sphx	/* 93 */ KEY_KP_Multiply,
9400eaa3919Sphx	/* 94 */ KEY_KP_Plus,
9410eaa3919Sphx	/* 95 */ KEY_Help,
9420eaa3919Sphx	/* 96 */ KEY_ShiftL,
9430eaa3919Sphx	/* 97 */ KEY_ShiftR,
9440eaa3919Sphx	/* 98 */ KEY_NOTUSED,
9450eaa3919Sphx	/* 99 */ KEY_LCtrl,
9460eaa3919Sphx	/* 100 */ KEY_Alt,
9470eaa3919Sphx	/* 101 */ KEY_AltLang,
9480eaa3919Sphx	/* 102 */ KEY_LMeta,
9490eaa3919Sphx	/* 103 */ KEY_RMeta
9500eaa3919Sphx};
9510eaa3919Sphx#define WS_AMIGA_MAP_SIZE (sizeof(wsAmigaMap)/sizeof(*wsAmigaMap))
9520eaa3919Sphx
9530eaa3919Sphxstatic
9540eaa3919SphxTransMapRec wsAmiga = {
9550eaa3919Sphx    0,
9560eaa3919Sphx    WS_AMIGA_MAP_SIZE,
9570eaa3919Sphx    wsAmigaMap
9580eaa3919Sphx};
9590eaa3919Sphx
9600c005ca7Sabs/* Map for LK201 keyboards  */
9610c005ca7Sabsstatic CARD8 wsLk201Map[] = {
9620c005ca7Sabs	/* 0 */ KEY_F1,
9630c005ca7Sabs	/* 1 */ KEY_F2,
9640c005ca7Sabs	/* 2 */ KEY_F3,
9650c005ca7Sabs	/* 3 */ KEY_F4,
9660c005ca7Sabs	/* 4 */ KEY_F5,
9670c005ca7Sabs	/* 5 */ KEY_NOTUSED,
9680c005ca7Sabs	/* 6 */ KEY_NOTUSED,
9690c005ca7Sabs	/* 7 */ KEY_NOTUSED,
9700c005ca7Sabs	/* 8 */ KEY_NOTUSED,
9710c005ca7Sabs	/* 9 */ KEY_NOTUSED,
9720c005ca7Sabs	/* 10 */ KEY_NOTUSED,
9730c005ca7Sabs	/* 11 */ KEY_NOTUSED,
9740c005ca7Sabs	/* 12 */ KEY_NOTUSED,
9750c005ca7Sabs	/* 13 */ KEY_NOTUSED,
9760c005ca7Sabs	/* 14 */ KEY_F6,
9770c005ca7Sabs	/* 15 */ KEY_F7,
9780c005ca7Sabs	/* 16 */ KEY_F8,
9790c005ca7Sabs	/* 17 */ KEY_F9,
9800c005ca7Sabs	/* 18 */ KEY_F10,
9810c005ca7Sabs	/* 19 */ KEY_NOTUSED,
9820c005ca7Sabs	/* 20 */ KEY_NOTUSED,
9830c005ca7Sabs	/* 21 */ KEY_NOTUSED,
9840c005ca7Sabs	/* 22 */ KEY_NOTUSED,
9850c005ca7Sabs	/* 23 */ KEY_NOTUSED,
9860c005ca7Sabs	/* 24 */ KEY_NOTUSED,
9870c005ca7Sabs	/* 25 */ KEY_NOTUSED,
9880c005ca7Sabs	/* 26 */ KEY_NOTUSED,
989c5739aaaShans	/* 27 */ KEY_Escape,	/* F11 */
9900c005ca7Sabs	/* 28 */ KEY_F12,
9910c005ca7Sabs	/* 29 */ KEY_F13,
9920c005ca7Sabs	/* 30 */ KEY_F14,
9930c005ca7Sabs	/* 31 */ KEY_NOTUSED,
9940c005ca7Sabs	/* 32 */ KEY_NOTUSED,
9950c005ca7Sabs	/* 33 */ KEY_NOTUSED,
9960c005ca7Sabs	/* 34 */ KEY_NOTUSED,
9970c005ca7Sabs	/* 35 */ KEY_NOTUSED,
9980c005ca7Sabs	/* 36 */ KEY_NOTUSED,
9990c005ca7Sabs	/* 37 */ KEY_NOTUSED,
10000c005ca7Sabs	/* 38 */ KEY_Help,
10010c005ca7Sabs	/* 39 */ KEY_F16,	/* Do */
10020c005ca7Sabs	/* 40 */ KEY_NOTUSED,
10030c005ca7Sabs	/* 41 */ KEY_NOTUSED,
10040c005ca7Sabs	/* 42 */ KEY_F17,
10050c005ca7Sabs	/* 43 */ KEY_L8,	/* F18 */
10060c005ca7Sabs	/* 44 */ KEY_L9,	/* F19 */
10070c005ca7Sabs	/* 45 */ KEY_L10,	/* F20 */
10080c005ca7Sabs	/* 46 */ KEY_NOTUSED,
10090c005ca7Sabs	/* 47 */ KEY_NOTUSED,
10100c005ca7Sabs	/* 48 */ KEY_NOTUSED,
10110c005ca7Sabs	/* 49 */ KEY_NOTUSED,
10120c005ca7Sabs	/* 50 */ KEY_NOTUSED,
10130c005ca7Sabs	/* 51 */ KEY_NOTUSED,
10140c005ca7Sabs	/* 52 */ KEY_Home,	/* Find */
10150c005ca7Sabs	/* 53 */ KEY_Insert,	/* Insert Here */
10160c005ca7Sabs	/* 54 */ KEY_Delete,	/* Re-move */
10170c005ca7Sabs	/* 55 */ KEY_End,	/* Select */
10180c005ca7Sabs	/* 56 */ KEY_PgUp,	/* Prev-Screen */
10190c005ca7Sabs	/* 57 */ KEY_PgDown,	/* Next-Screen */
10200c005ca7Sabs	/* 58 */ KEY_NOTUSED,
10210c005ca7Sabs	/* 59 */ KEY_NOTUSED,
10220c005ca7Sabs	/* 60 */ KEY_KP_0,
10230c005ca7Sabs	/* 61 */ KEY_NOTUSED,
10240c005ca7Sabs	/* 62 */ KEY_KP_Decimal,
10250c005ca7Sabs	/* 63 */ KEY_KP_Enter,
10260c005ca7Sabs	/* 64 */ KEY_KP_1,
10270c005ca7Sabs	/* 65 */ KEY_KP_2,
10280c005ca7Sabs	/* 66 */ KEY_KP_3,
10290c005ca7Sabs	/* 67 */ KEY_KP_4,
10300c005ca7Sabs	/* 68 */ KEY_KP_5,
10310c005ca7Sabs	/* 69 */ KEY_KP_6,
10320c005ca7Sabs	/* 70 */ KEY_KP_Plus,	/* KP Comma */
10330c005ca7Sabs	/* 71 */ KEY_KP_7,
10340c005ca7Sabs	/* 72 */ KEY_KP_8,
10350c005ca7Sabs	/* 73 */ KEY_KP_9,
10360c005ca7Sabs	/* 74 */ KEY_KP_Minus,
10370c005ca7Sabs	/* 75 */ KEY_L1,	/* PF1 */
10380c005ca7Sabs	/* 76 */ KEY_L2,	/* PF2 */
10390c005ca7Sabs	/* 77 */ KEY_L3,	/* PF3 */
10400c005ca7Sabs	/* 78 */ KEY_L4,	/* PF4 */
10410c005ca7Sabs	/* 79 */ KEY_NOTUSED,
10420c005ca7Sabs	/* 80 */ KEY_NOTUSED,
10430c005ca7Sabs	/* 81 */ KEY_Left,
10440c005ca7Sabs	/* 82 */ KEY_Right,
10450c005ca7Sabs	/* 83 */ KEY_Down,
10460c005ca7Sabs	/* 84 */ KEY_Up,
10470c005ca7Sabs	/* 85 */ KEY_NOTUSED,
10480c005ca7Sabs	/* 86 */ KEY_NOTUSED,
10490c005ca7Sabs	/* 87 */ KEY_NOTUSED,
10500c005ca7Sabs	/* 88 */ KEY_ShiftL,
10510c005ca7Sabs	/* 89 */ KEY_LCtrl,
10520c005ca7Sabs	/* 90 */ KEY_CapsLock,
10530c005ca7Sabs	/* 91 */ KEY_Alt, 	/* Compose */
10540c005ca7Sabs	/* 92 */ KEY_NOTUSED,
10550c005ca7Sabs	/* 93 */ KEY_NOTUSED,
10560c005ca7Sabs	/* 94 */ KEY_NOTUSED,
10570c005ca7Sabs	/* 95 */ KEY_NOTUSED,
10580c005ca7Sabs	/* 96 */ KEY_NOTUSED,
10590c005ca7Sabs	/* 97 */ KEY_NOTUSED,
10600c005ca7Sabs	/* 98 */ KEY_NOTUSED,
10610c005ca7Sabs	/* 99 */ KEY_NOTUSED,
10620c005ca7Sabs	/* 100 */ KEY_NOTUSED,
10630c005ca7Sabs	/* 101 */ KEY_NOTUSED,
1064c5739aaaShans	/* 102 */ KEY_BackSpace,
10650c005ca7Sabs	/* 103 */ KEY_Enter,
10660c005ca7Sabs	/* 104 */ KEY_Tab,
1067c5739aaaShans	/* 105 */ KEY_Tilde, /* tilde */
10680c005ca7Sabs	/* 106 */ KEY_1,
10690c005ca7Sabs	/* 107 */ KEY_Q,
10700c005ca7Sabs	/* 108 */ KEY_A,
10710c005ca7Sabs	/* 109 */ KEY_Z,
10720c005ca7Sabs	/* 110 */ KEY_NOTUSED,
10730c005ca7Sabs	/* 111 */ KEY_2,
10740c005ca7Sabs	/* 112 */ KEY_W,
10750c005ca7Sabs	/* 113 */ KEY_S,
10760c005ca7Sabs	/* 114 */ KEY_X,
10770c005ca7Sabs	/* 115 */ KEY_Less,
10780c005ca7Sabs	/* 116 */ KEY_NOTUSED,
10790c005ca7Sabs	/* 117 */ KEY_3,
10800c005ca7Sabs	/* 118 */ KEY_E,
10810c005ca7Sabs	/* 119 */ KEY_D,
10820c005ca7Sabs	/* 120 */ KEY_C,
10830c005ca7Sabs	/* 121 */ KEY_NOTUSED,
10840c005ca7Sabs	/* 122 */ KEY_4,
10850c005ca7Sabs	/* 123 */ KEY_R,
10860c005ca7Sabs	/* 124 */ KEY_F,
10870c005ca7Sabs	/* 125 */ KEY_V,
10880c005ca7Sabs	/* 126 */ KEY_Space,
10890c005ca7Sabs	/* 127 */ KEY_NOTUSED,
10900c005ca7Sabs	/* 128 */ KEY_5,
10910c005ca7Sabs	/* 129 */ KEY_T,
10920c005ca7Sabs	/* 130 */ KEY_G,
10930c005ca7Sabs	/* 131 */ KEY_B,
10940c005ca7Sabs	/* 132 */ KEY_NOTUSED,
10950c005ca7Sabs	/* 133 */ KEY_6,
10960c005ca7Sabs	/* 134 */ KEY_Y,
10970c005ca7Sabs	/* 135 */ KEY_H,
10980c005ca7Sabs	/* 136 */ KEY_N,
10990c005ca7Sabs	/* 137 */ KEY_NOTUSED,
11000c005ca7Sabs	/* 138 */ KEY_7,
11010c005ca7Sabs	/* 139 */ KEY_U,
11020c005ca7Sabs	/* 140 */ KEY_J,
11030c005ca7Sabs	/* 141 */ KEY_M,
11040c005ca7Sabs	/* 142 */ KEY_NOTUSED,
11050c005ca7Sabs	/* 143 */ KEY_8,
11060c005ca7Sabs	/* 144 */ KEY_I,
11070c005ca7Sabs	/* 145 */ KEY_K,
11080c005ca7Sabs	/* 146 */ KEY_Comma,
11090c005ca7Sabs	/* 147 */ KEY_NOTUSED,
11100c005ca7Sabs	/* 148 */ KEY_9,
11110c005ca7Sabs	/* 149 */ KEY_O,
11120c005ca7Sabs	/* 150 */ KEY_L,
11130c005ca7Sabs	/* 151 */ KEY_Period,
11140c005ca7Sabs	/* 152 */ KEY_NOTUSED,
11150c005ca7Sabs	/* 153 */ KEY_0,
11160c005ca7Sabs	/* 154 */ KEY_P,
11170c005ca7Sabs	/* 155 */ KEY_NOTUSED,
11180c005ca7Sabs	/* 156 */ KEY_SemiColon,
11190c005ca7Sabs	/* 157 */ KEY_Slash,
11200c005ca7Sabs	/* 158 */ KEY_NOTUSED,
11210c005ca7Sabs	/* 159 */ KEY_Equal,
11220c005ca7Sabs	/* 160 */ KEY_RBrace,
11230c005ca7Sabs	/* 161 */ KEY_BSlash,
11240c005ca7Sabs	/* 162 */ KEY_NOTUSED,
11250c005ca7Sabs	/* 163 */ KEY_Minus,
11260c005ca7Sabs	/* 164 */ KEY_LBrace,
11270c005ca7Sabs	/* 165 */ KEY_Quote,
11280c005ca7Sabs	/* 166 */ KEY_NOTUSED,
11290c005ca7Sabs	/* 167 */ KEY_NOTUSED,
11300c005ca7Sabs	/* 168 */ KEY_NOTUSED,
11310c005ca7Sabs	/* 169 */ KEY_NOTUSED,
11320c005ca7Sabs	/* 170 */ KEY_NOTUSED,
11330c005ca7Sabs	/* 171 */ KEY_NOTUSED,
11340c005ca7Sabs	/* 172 */ KEY_NOTUSED,
11350c005ca7Sabs	/* 173 */ KEY_NOTUSED,
11360c005ca7Sabs	/* 174 */ KEY_NOTUSED,
11370c005ca7Sabs	/* 175 */ KEY_NOTUSED,
11380c005ca7Sabs	/* 176 */ KEY_NOTUSED,
11390c005ca7Sabs	/* 177 */ KEY_NOTUSED,
11400c005ca7Sabs	/* 178 */ KEY_NOTUSED,
11410c005ca7Sabs	/* 179 */ KEY_NOTUSED,
11420c005ca7Sabs	/* 180 */ KEY_NOTUSED,
11430c005ca7Sabs	/* 181 */ KEY_NOTUSED,
11440c005ca7Sabs	/* 182 */ KEY_NOTUSED,
11450c005ca7Sabs	/* 183 */ KEY_NOTUSED,
11460c005ca7Sabs	/* 184 */ KEY_NOTUSED,
11470c005ca7Sabs	/* 185 */ KEY_NOTUSED,
11480c005ca7Sabs	/* 186 */ KEY_NOTUSED,
11490c005ca7Sabs	/* 187 */ KEY_NOTUSED,
11500c005ca7Sabs	/* 188 */ KEY_NOTUSED,
11510c005ca7Sabs	/* 189 */ KEY_NOTUSED,
11520c005ca7Sabs	/* 190 */ KEY_NOTUSED,
11530c005ca7Sabs	/* 191 */ KEY_NOTUSED,
11540c005ca7Sabs	/* 192 */ KEY_NOTUSED,
11550c005ca7Sabs	/* 193 */ KEY_NOTUSED,
11560c005ca7Sabs	/* 194 */ KEY_NOTUSED,
11570c005ca7Sabs	/* 195 */ KEY_NOTUSED,
11580c005ca7Sabs	/* 196 */ KEY_NOTUSED,
11590c005ca7Sabs	/* 197 */ KEY_NOTUSED,
11600c005ca7Sabs	/* 198 */ KEY_NOTUSED,
11610c005ca7Sabs	/* 199 */ KEY_NOTUSED,
11620c005ca7Sabs	/* 200 */ KEY_NOTUSED,
11630c005ca7Sabs	/* 201 */ KEY_NOTUSED,
11640c005ca7Sabs	/* 202 */ KEY_NOTUSED,
11650c005ca7Sabs	/* 203 */ KEY_NOTUSED,
11660c005ca7Sabs	/* 204 */ KEY_NOTUSED,
11670c005ca7Sabs	/* 205 */ KEY_NOTUSED,
11680c005ca7Sabs	/* 206 */ KEY_NOTUSED,
11690c005ca7Sabs	/* 207 */ KEY_NOTUSED,
11700c005ca7Sabs	/* 208 */ KEY_NOTUSED,
11710c005ca7Sabs	/* 209 */ KEY_NOTUSED,
11720c005ca7Sabs	/* 210 */ KEY_NOTUSED,
11730c005ca7Sabs	/* 211 */ KEY_NOTUSED,
11740c005ca7Sabs	/* 212 */ KEY_NOTUSED,
11750c005ca7Sabs	/* 213 */ KEY_NOTUSED,
11760c005ca7Sabs	/* 214 */ KEY_NOTUSED,
11770c005ca7Sabs	/* 215 */ KEY_NOTUSED,
11780c005ca7Sabs	/* 216 */ KEY_NOTUSED,
11790c005ca7Sabs	/* 217 */ KEY_NOTUSED,
11800c005ca7Sabs	/* 218 */ KEY_NOTUSED,
11810c005ca7Sabs	/* 219 */ KEY_NOTUSED,
11820c005ca7Sabs	/* 220 */ KEY_NOTUSED,
11830c005ca7Sabs	/* 221 */ KEY_NOTUSED,
11840c005ca7Sabs	/* 222 */ KEY_NOTUSED,
11850c005ca7Sabs	/* 223 */ KEY_NOTUSED,
11860c005ca7Sabs	/* 224 */ KEY_NOTUSED,
11870c005ca7Sabs	/* 225 */ KEY_NOTUSED,
11880c005ca7Sabs	/* 226 */ KEY_NOTUSED,
11890c005ca7Sabs	/* 227 */ KEY_NOTUSED,
11900c005ca7Sabs	/* 228 */ KEY_NOTUSED,
11910c005ca7Sabs	/* 229 */ KEY_NOTUSED,
11920c005ca7Sabs	/* 230 */ KEY_NOTUSED,
11930c005ca7Sabs	/* 231 */ KEY_NOTUSED,
11940c005ca7Sabs	/* 232 */ KEY_NOTUSED,
11950c005ca7Sabs	/* 233 */ KEY_NOTUSED,
11960c005ca7Sabs	/* 234 */ KEY_NOTUSED,
11970c005ca7Sabs	/* 235 */ KEY_NOTUSED,
11980c005ca7Sabs	/* 236 */ KEY_NOTUSED,
11990c005ca7Sabs	/* 237 */ KEY_NOTUSED,
12000c005ca7Sabs	/* 238 */ KEY_NOTUSED,
12010c005ca7Sabs	/* 239 */ KEY_NOTUSED,
12020c005ca7Sabs	/* 240 */ KEY_NOTUSED,
12030c005ca7Sabs	/* 241 */ KEY_NOTUSED,
12040c005ca7Sabs	/* 242 */ KEY_NOTUSED,
12050c005ca7Sabs	/* 243 */ KEY_NOTUSED,
12060c005ca7Sabs	/* 244 */ KEY_NOTUSED,
12070c005ca7Sabs	/* 245 */ KEY_NOTUSED,
12080c005ca7Sabs	/* 246 */ KEY_NOTUSED,
12090c005ca7Sabs	/* 247 */ KEY_NOTUSED,
12100c005ca7Sabs	/* 248 */ KEY_NOTUSED,
12110c005ca7Sabs	/* 249 */ KEY_NOTUSED,
12120c005ca7Sabs	/* 250 */ KEY_NOTUSED,
12130c005ca7Sabs	/* 251 */ KEY_NOTUSED,
12140c005ca7Sabs};
1215aa8e367bSmrg#define WS_LK201_MAP_SIZE (sizeof(wsLk201Map)/sizeof(*wsLk201Map))
12160c005ca7Sabs
12170c005ca7Sabsstatic
12180c005ca7SabsTransMapRec wsLk201 = {
12190c005ca7Sabs    0,
12200c005ca7Sabs    WS_LK201_MAP_SIZE,
12210c005ca7Sabs    wsLk201Map
12220c005ca7Sabs};
12230c005ca7Sabs
12244ddc96cfShans/* Map for LK401 keyboards  */
12254ddc96cfShansstatic CARD8 wsLk401Map[] = {
12264ddc96cfShans	/* 0 */ KEY_F1,
12274ddc96cfShans	/* 1 */ KEY_F2,
12284ddc96cfShans	/* 2 */ KEY_F3,
12294ddc96cfShans	/* 3 */ KEY_F4,
12304ddc96cfShans	/* 4 */ KEY_F5,
12314ddc96cfShans	/* 5 */ KEY_NOTUSED,
12324ddc96cfShans	/* 6 */ KEY_NOTUSED,
12334ddc96cfShans	/* 7 */ KEY_NOTUSED,
12344ddc96cfShans	/* 8 */ KEY_NOTUSED,
12354ddc96cfShans	/* 9 */ KEY_NOTUSED,
12364ddc96cfShans	/* 10 */ KEY_NOTUSED,
12374ddc96cfShans	/* 11 */ KEY_NOTUSED,
12384ddc96cfShans	/* 12 */ KEY_NOTUSED,
12394ddc96cfShans	/* 13 */ KEY_NOTUSED,
12404ddc96cfShans	/* 14 */ KEY_F6,
12414ddc96cfShans	/* 15 */ KEY_F7,
12424ddc96cfShans	/* 16 */ KEY_F8,
12434ddc96cfShans	/* 17 */ KEY_F9,
12444ddc96cfShans	/* 18 */ KEY_F10,
12454ddc96cfShans	/* 19 */ KEY_NOTUSED,
12464ddc96cfShans	/* 20 */ KEY_NOTUSED,
12474ddc96cfShans	/* 21 */ KEY_NOTUSED,
12484ddc96cfShans	/* 22 */ KEY_NOTUSED,
12494ddc96cfShans	/* 23 */ KEY_NOTUSED,
12504ddc96cfShans	/* 24 */ KEY_NOTUSED,
12514ddc96cfShans	/* 25 */ KEY_NOTUSED,
12524ddc96cfShans	/* 26 */ KEY_NOTUSED,
12534ddc96cfShans	/* 27 */ KEY_Escape,	/* F11 */
12544ddc96cfShans	/* 28 */ KEY_F12,
12554ddc96cfShans	/* 29 */ KEY_F13,
12564ddc96cfShans	/* 30 */ KEY_F14,
12574ddc96cfShans	/* 31 */ KEY_NOTUSED,
12584ddc96cfShans	/* 32 */ KEY_NOTUSED,
12594ddc96cfShans	/* 33 */ KEY_NOTUSED,
12604ddc96cfShans	/* 34 */ KEY_NOTUSED,
12614ddc96cfShans	/* 35 */ KEY_NOTUSED,
12624ddc96cfShans	/* 36 */ KEY_NOTUSED,
12634ddc96cfShans	/* 37 */ KEY_NOTUSED,
12644ddc96cfShans	/* 38 */ KEY_Help,
12654ddc96cfShans	/* 39 */ KEY_F16,	/* Do */
12664ddc96cfShans	/* 40 */ KEY_NOTUSED,
12674ddc96cfShans	/* 41 */ KEY_NOTUSED,
12684ddc96cfShans	/* 42 */ KEY_F17,
12694ddc96cfShans	/* 43 */ KEY_L8,	/* F18 */
12704ddc96cfShans	/* 44 */ KEY_L9,	/* F19 */
12714ddc96cfShans	/* 45 */ KEY_L10,	/* F20 */
12724ddc96cfShans	/* 46 */ KEY_NOTUSED,
12734ddc96cfShans	/* 47 */ KEY_NOTUSED,
12744ddc96cfShans	/* 48 */ KEY_NOTUSED,
12754ddc96cfShans	/* 49 */ KEY_NOTUSED,
12764ddc96cfShans	/* 50 */ KEY_NOTUSED,
12774ddc96cfShans	/* 51 */ KEY_NOTUSED,
12784ddc96cfShans	/* 52 */ KEY_Home,	/* Find */
12794ddc96cfShans	/* 53 */ KEY_Insert,	/* Insert Here */
12804ddc96cfShans	/* 54 */ KEY_Delete,	/* Re-move */
12814ddc96cfShans	/* 55 */ KEY_End,	/* Select */
12824ddc96cfShans	/* 56 */ KEY_PgUp,	/* Prev-Screen */
12834ddc96cfShans	/* 57 */ KEY_PgDown,	/* Next-Screen */
12844ddc96cfShans	/* 58 */ KEY_NOTUSED,
12854ddc96cfShans	/* 59 */ KEY_NOTUSED,
12864ddc96cfShans	/* 60 */ KEY_KP_0,
12874ddc96cfShans	/* 61 */ KEY_NOTUSED,
12884ddc96cfShans	/* 62 */ KEY_KP_Decimal,
12894ddc96cfShans	/* 63 */ KEY_KP_Enter,
12904ddc96cfShans	/* 64 */ KEY_KP_1,
12914ddc96cfShans	/* 65 */ KEY_KP_2,
12924ddc96cfShans	/* 66 */ KEY_KP_3,
12934ddc96cfShans	/* 67 */ KEY_KP_4,
12944ddc96cfShans	/* 68 */ KEY_KP_5,
12954ddc96cfShans	/* 69 */ KEY_KP_6,
12964ddc96cfShans	/* 70 */ KEY_KP_Plus,	/* KP Comma */
12974ddc96cfShans	/* 71 */ KEY_KP_7,
12984ddc96cfShans	/* 72 */ KEY_KP_8,
12994ddc96cfShans	/* 73 */ KEY_KP_9,
13004ddc96cfShans	/* 74 */ KEY_KP_Minus,
13014ddc96cfShans	/* 75 */ KEY_L1,	/* PF1 */
13024ddc96cfShans	/* 76 */ KEY_L2,	/* PF2 */
13034ddc96cfShans	/* 77 */ KEY_L3,	/* PF3 */
13044ddc96cfShans	/* 78 */ KEY_L4,	/* PF4 */
13054ddc96cfShans	/* 79 */ KEY_NOTUSED,
13064ddc96cfShans	/* 80 */ KEY_NOTUSED,
13074ddc96cfShans	/* 81 */ KEY_Left,
13084ddc96cfShans	/* 82 */ KEY_Right,
13094ddc96cfShans	/* 83 */ KEY_Down,
13104ddc96cfShans	/* 84 */ KEY_Up,
13114ddc96cfShans	/* 85 */ KEY_ShiftR,
13124ddc96cfShans	/* 86 */ KEY_Alt,
13134ddc96cfShans	/* 87 */ KEY_RMeta,	/* Compose right */
13144ddc96cfShans	/* 88 */ KEY_ShiftL,
13154ddc96cfShans	/* 89 */ KEY_LCtrl,
13164ddc96cfShans	/* 90 */ KEY_CapsLock,
13174ddc96cfShans	/* 91 */ KEY_LMeta, 	/* Compose left */
13184ddc96cfShans	/* 92 */ KEY_AltLang,
13194ddc96cfShans	/* 93 */ KEY_NOTUSED,
13204ddc96cfShans	/* 94 */ KEY_NOTUSED,
13214ddc96cfShans	/* 95 */ KEY_NOTUSED,
13224ddc96cfShans	/* 96 */ KEY_NOTUSED,
13234ddc96cfShans	/* 97 */ KEY_NOTUSED,
13244ddc96cfShans	/* 98 */ KEY_NOTUSED,
13254ddc96cfShans	/* 99 */ KEY_NOTUSED,
13264ddc96cfShans	/* 100 */ KEY_NOTUSED,
13274ddc96cfShans	/* 101 */ KEY_NOTUSED,
13284ddc96cfShans	/* 102 */ KEY_BackSpace,
13294ddc96cfShans	/* 103 */ KEY_Enter,
13304ddc96cfShans	/* 104 */ KEY_Tab,
13314ddc96cfShans	/* 105 */ KEY_Tilde, /* tilde */
13324ddc96cfShans	/* 106 */ KEY_1,
13334ddc96cfShans	/* 107 */ KEY_Q,
13344ddc96cfShans	/* 108 */ KEY_A,
13354ddc96cfShans	/* 109 */ KEY_Z,
13364ddc96cfShans	/* 110 */ KEY_NOTUSED,
13374ddc96cfShans	/* 111 */ KEY_2,
13384ddc96cfShans	/* 112 */ KEY_W,
13394ddc96cfShans	/* 113 */ KEY_S,
13404ddc96cfShans	/* 114 */ KEY_X,
13414ddc96cfShans	/* 115 */ KEY_Less,
13424ddc96cfShans	/* 116 */ KEY_NOTUSED,
13434ddc96cfShans	/* 117 */ KEY_3,
13444ddc96cfShans	/* 118 */ KEY_E,
13454ddc96cfShans	/* 119 */ KEY_D,
13464ddc96cfShans	/* 120 */ KEY_C,
13474ddc96cfShans	/* 121 */ KEY_NOTUSED,
13484ddc96cfShans	/* 122 */ KEY_4,
13494ddc96cfShans	/* 123 */ KEY_R,
13504ddc96cfShans	/* 124 */ KEY_F,
13514ddc96cfShans	/* 125 */ KEY_V,
13524ddc96cfShans	/* 126 */ KEY_Space,
13534ddc96cfShans	/* 127 */ KEY_NOTUSED,
13544ddc96cfShans	/* 128 */ KEY_5,
13554ddc96cfShans	/* 129 */ KEY_T,
13564ddc96cfShans	/* 130 */ KEY_G,
13574ddc96cfShans	/* 131 */ KEY_B,
13584ddc96cfShans	/* 132 */ KEY_NOTUSED,
13594ddc96cfShans	/* 133 */ KEY_6,
13604ddc96cfShans	/* 134 */ KEY_Y,
13614ddc96cfShans	/* 135 */ KEY_H,
13624ddc96cfShans	/* 136 */ KEY_N,
13634ddc96cfShans	/* 137 */ KEY_NOTUSED,
13644ddc96cfShans	/* 138 */ KEY_7,
13654ddc96cfShans	/* 139 */ KEY_U,
13664ddc96cfShans	/* 140 */ KEY_J,
13674ddc96cfShans	/* 141 */ KEY_M,
13684ddc96cfShans	/* 142 */ KEY_NOTUSED,
13694ddc96cfShans	/* 143 */ KEY_8,
13704ddc96cfShans	/* 144 */ KEY_I,
13714ddc96cfShans	/* 145 */ KEY_K,
13724ddc96cfShans	/* 146 */ KEY_Comma,
13734ddc96cfShans	/* 147 */ KEY_NOTUSED,
13744ddc96cfShans	/* 148 */ KEY_9,
13754ddc96cfShans	/* 149 */ KEY_O,
13764ddc96cfShans	/* 150 */ KEY_L,
13774ddc96cfShans	/* 151 */ KEY_Period,
13784ddc96cfShans	/* 152 */ KEY_NOTUSED,
13794ddc96cfShans	/* 153 */ KEY_0,
13804ddc96cfShans	/* 154 */ KEY_P,
13814ddc96cfShans	/* 155 */ KEY_NOTUSED,
13824ddc96cfShans	/* 156 */ KEY_SemiColon,
13834ddc96cfShans	/* 157 */ KEY_Slash,
13844ddc96cfShans	/* 158 */ KEY_NOTUSED,
13854ddc96cfShans	/* 159 */ KEY_Equal,
13864ddc96cfShans	/* 160 */ KEY_RBrace,
13874ddc96cfShans	/* 161 */ KEY_BSlash,
13884ddc96cfShans	/* 162 */ KEY_NOTUSED,
13894ddc96cfShans	/* 163 */ KEY_Minus,
13904ddc96cfShans	/* 164 */ KEY_LBrace,
13914ddc96cfShans	/* 165 */ KEY_Quote,
13924ddc96cfShans	/* 166 */ KEY_NOTUSED,
13934ddc96cfShans	/* 167 */ KEY_NOTUSED,
13944ddc96cfShans	/* 168 */ KEY_NOTUSED,
13954ddc96cfShans	/* 169 */ KEY_NOTUSED,
13964ddc96cfShans	/* 170 */ KEY_NOTUSED,
13974ddc96cfShans	/* 171 */ KEY_NOTUSED,
13984ddc96cfShans	/* 172 */ KEY_NOTUSED,
13994ddc96cfShans	/* 173 */ KEY_NOTUSED,
14004ddc96cfShans	/* 174 */ KEY_NOTUSED,
14014ddc96cfShans	/* 175 */ KEY_NOTUSED,
14024ddc96cfShans	/* 176 */ KEY_NOTUSED,
14034ddc96cfShans	/* 177 */ KEY_NOTUSED,
14044ddc96cfShans	/* 178 */ KEY_NOTUSED,
14054ddc96cfShans	/* 179 */ KEY_NOTUSED,
14064ddc96cfShans	/* 180 */ KEY_NOTUSED,
14074ddc96cfShans	/* 181 */ KEY_NOTUSED,
14084ddc96cfShans	/* 182 */ KEY_NOTUSED,
14094ddc96cfShans	/* 183 */ KEY_NOTUSED,
14104ddc96cfShans	/* 184 */ KEY_NOTUSED,
14114ddc96cfShans	/* 185 */ KEY_NOTUSED,
14124ddc96cfShans	/* 186 */ KEY_NOTUSED,
14134ddc96cfShans	/* 187 */ KEY_NOTUSED,
14144ddc96cfShans	/* 188 */ KEY_NOTUSED,
14154ddc96cfShans	/* 189 */ KEY_NOTUSED,
14164ddc96cfShans	/* 190 */ KEY_NOTUSED,
14174ddc96cfShans	/* 191 */ KEY_NOTUSED,
14184ddc96cfShans	/* 192 */ KEY_NOTUSED,
14194ddc96cfShans	/* 193 */ KEY_NOTUSED,
14204ddc96cfShans	/* 194 */ KEY_NOTUSED,
14214ddc96cfShans	/* 195 */ KEY_NOTUSED,
14224ddc96cfShans	/* 196 */ KEY_NOTUSED,
14234ddc96cfShans	/* 197 */ KEY_NOTUSED,
14244ddc96cfShans	/* 198 */ KEY_NOTUSED,
14254ddc96cfShans	/* 199 */ KEY_NOTUSED,
14264ddc96cfShans	/* 200 */ KEY_NOTUSED,
14274ddc96cfShans	/* 201 */ KEY_NOTUSED,
14284ddc96cfShans	/* 202 */ KEY_NOTUSED,
14294ddc96cfShans	/* 203 */ KEY_NOTUSED,
14304ddc96cfShans	/* 204 */ KEY_NOTUSED,
14314ddc96cfShans	/* 205 */ KEY_NOTUSED,
14324ddc96cfShans	/* 206 */ KEY_NOTUSED,
14334ddc96cfShans	/* 207 */ KEY_NOTUSED,
14344ddc96cfShans	/* 208 */ KEY_NOTUSED,
14354ddc96cfShans	/* 209 */ KEY_NOTUSED,
14364ddc96cfShans	/* 210 */ KEY_NOTUSED,
14374ddc96cfShans	/* 211 */ KEY_NOTUSED,
14384ddc96cfShans	/* 212 */ KEY_NOTUSED,
14394ddc96cfShans	/* 213 */ KEY_NOTUSED,
14404ddc96cfShans	/* 214 */ KEY_NOTUSED,
14414ddc96cfShans	/* 215 */ KEY_NOTUSED,
14424ddc96cfShans	/* 216 */ KEY_NOTUSED,
14434ddc96cfShans	/* 217 */ KEY_NOTUSED,
14444ddc96cfShans	/* 218 */ KEY_NOTUSED,
14454ddc96cfShans	/* 219 */ KEY_NOTUSED,
14464ddc96cfShans	/* 220 */ KEY_NOTUSED,
14474ddc96cfShans	/* 221 */ KEY_NOTUSED,
14484ddc96cfShans	/* 222 */ KEY_NOTUSED,
14494ddc96cfShans	/* 223 */ KEY_NOTUSED,
14504ddc96cfShans	/* 224 */ KEY_NOTUSED,
14514ddc96cfShans	/* 225 */ KEY_NOTUSED,
14524ddc96cfShans	/* 226 */ KEY_NOTUSED,
14534ddc96cfShans	/* 227 */ KEY_NOTUSED,
14544ddc96cfShans	/* 228 */ KEY_NOTUSED,
14554ddc96cfShans	/* 229 */ KEY_NOTUSED,
14564ddc96cfShans	/* 230 */ KEY_NOTUSED,
14574ddc96cfShans	/* 231 */ KEY_NOTUSED,
14584ddc96cfShans	/* 232 */ KEY_NOTUSED,
14594ddc96cfShans	/* 233 */ KEY_NOTUSED,
14604ddc96cfShans	/* 234 */ KEY_NOTUSED,
14614ddc96cfShans	/* 235 */ KEY_NOTUSED,
14624ddc96cfShans	/* 236 */ KEY_NOTUSED,
14634ddc96cfShans	/* 237 */ KEY_NOTUSED,
14644ddc96cfShans	/* 238 */ KEY_NOTUSED,
14654ddc96cfShans	/* 239 */ KEY_NOTUSED,
14664ddc96cfShans	/* 240 */ KEY_NOTUSED,
14674ddc96cfShans	/* 241 */ KEY_NOTUSED,
14684ddc96cfShans	/* 242 */ KEY_NOTUSED,
14694ddc96cfShans	/* 243 */ KEY_NOTUSED,
14704ddc96cfShans	/* 244 */ KEY_NOTUSED,
14714ddc96cfShans	/* 245 */ KEY_NOTUSED,
14724ddc96cfShans	/* 246 */ KEY_NOTUSED,
14734ddc96cfShans	/* 247 */ KEY_NOTUSED,
14744ddc96cfShans	/* 248 */ KEY_NOTUSED,
14754ddc96cfShans	/* 249 */ KEY_NOTUSED,
14764ddc96cfShans	/* 250 */ KEY_NOTUSED,
14774ddc96cfShans	/* 251 */ KEY_NOTUSED,
14784ddc96cfShans};
14794ddc96cfShans#define WS_LK401_MAP_SIZE (sizeof(wsLk401Map)/sizeof(*wsLk401Map))
14804ddc96cfShans
14814ddc96cfShansstatic
14824ddc96cfShansTransMapRec wsLk401 = {
14834ddc96cfShans    0,
14844ddc96cfShans    WS_LK401_MAP_SIZE,
14854ddc96cfShans    wsLk401Map
14864ddc96cfShans};
14874ddc96cfShans
1488ee3138f1Smrgstatic CARD8 wsSunMap[] = {
1489ee3138f1Smrg	/* 0x00 */ KEY_Help,
1490ee3138f1Smrg	/* 0x01 */ KEY_L1,		/* stop */
1491ee3138f1Smrg	/* 0x02 */ KEY_AudioLower,	/* BrightnessDown / S-VolumeDown */
1492ee3138f1Smrg	/* 0x03 */ KEY_L2,		/* again */
1493f5a99ab6Smacallan	/* 0x04 */ KEY_AudioRaise,	/* BrightnessUp / S-VolumeUp */
1494ee3138f1Smrg	/* 0x05 */ KEY_F1,
1495ee3138f1Smrg	/* 0x06 */ KEY_F2,
1496ee3138f1Smrg	/* 0x07 */ KEY_F10,
1497ee3138f1Smrg	/* 0x08 */ KEY_F3,
1498ee3138f1Smrg	/* 0x09 */ KEY_F11,
1499ee3138f1Smrg	/* 0x0a */ KEY_F4,
1500ee3138f1Smrg	/* 0x0b */ KEY_F12,
1501ee3138f1Smrg	/* 0x0c */ KEY_F5,
1502ee3138f1Smrg	/* 0x0d */ KEY_AltLang,
1503ee3138f1Smrg	/* 0x0e */ KEY_F6,
1504ee3138f1Smrg	/* 0x0f */ KEY_NOTUSED,
1505ee3138f1Smrg	/* 0x10 */ KEY_F7,
1506ee3138f1Smrg	/* 0x11 */ KEY_F8,
1507ee3138f1Smrg	/* 0x12 */ KEY_F9,
1508ee3138f1Smrg	/* 0x13 */ KEY_Alt,
1509ee3138f1Smrg	/* 0x14 */ KEY_Up,
1510ee3138f1Smrg	/* 0x15 */ KEY_Pause,
1511ee3138f1Smrg	/* 0x16 */ KEY_Print,
1512ee3138f1Smrg	/* 0x17 */ KEY_ScrollLock,
1513ee3138f1Smrg	/* 0x18 */ KEY_Left,
1514ee3138f1Smrg	/* 0x19 */ KEY_L3,		/* props */
1515ee3138f1Smrg	/* 0x1a */ KEY_L4,		/* undo */
1516ee3138f1Smrg	/* 0x1b */ KEY_Down,
1517ee3138f1Smrg	/* 0x1c */ KEY_Right,
1518ee3138f1Smrg	/* 0x1d */ KEY_Escape,
1519ee3138f1Smrg	/* 0x1e */ KEY_1,
1520ee3138f1Smrg	/* 0x1f */ KEY_2,
1521ee3138f1Smrg	/* 0x20 */ KEY_3,
1522ee3138f1Smrg	/* 0x21 */ KEY_4,
1523ee3138f1Smrg	/* 0x22 */ KEY_5,
1524ee3138f1Smrg	/* 0x23 */ KEY_6,
1525ee3138f1Smrg	/* 0x24 */ KEY_7,
1526ee3138f1Smrg	/* 0x25 */ KEY_8,
1527ee3138f1Smrg	/* 0x26 */ KEY_9,
1528ee3138f1Smrg	/* 0x27 */ KEY_0,
1529ee3138f1Smrg	/* 0x28 */ KEY_Minus,
1530ee3138f1Smrg	/* 0x29 */ KEY_Equal,
1531ee3138f1Smrg	/* 0x2a */ KEY_Tilde,
1532ee3138f1Smrg	/* 0x2b */ KEY_BackSpace,
1533ee3138f1Smrg	/* 0x2c */ KEY_Insert,
1534ee3138f1Smrg	/* 0x2d */ KEY_Mute,		/* Audio Mute */
1535ee3138f1Smrg	/* 0x2e */ KEY_KP_Divide,
1536ee3138f1Smrg	/* 0x2f */ KEY_KP_Multiply,
1537ac15d2bcSmacallan	/* 0x30 */ KEY_Power,
1538ee3138f1Smrg	/* 0x31 */ KEY_L5,		/* front */
1539ee3138f1Smrg	/* 0x32 */ KEY_KP_Decimal,
1540ee3138f1Smrg	/* 0x33 */ KEY_L6,		/* copy */
1541ee3138f1Smrg	/* 0x34 */ KEY_Home,
1542ee3138f1Smrg	/* 0x35 */ KEY_Tab,
1543ee3138f1Smrg	/* 0x36 */ KEY_Q,
1544ee3138f1Smrg	/* 0x37 */ KEY_W,
1545ee3138f1Smrg	/* 0x38 */ KEY_E,
1546ee3138f1Smrg	/* 0x39 */ KEY_R,
1547ee3138f1Smrg	/* 0x3a */ KEY_T,
1548ee3138f1Smrg	/* 0x3b */ KEY_Y,
1549ee3138f1Smrg	/* 0x3c */ KEY_U,
1550ee3138f1Smrg	/* 0x3d */ KEY_I,
1551ee3138f1Smrg	/* 0x3e */ KEY_O,
1552ee3138f1Smrg	/* 0x3f */ KEY_P,
1553ee3138f1Smrg	/* 0x40 */ KEY_LBrace,
1554ee3138f1Smrg	/* 0x41 */ KEY_RBrace,
1555ee3138f1Smrg	/* 0x42 */ KEY_Delete,
1556ee3138f1Smrg	/* 0x43 */ KEY_Menu,		/* compose */
1557ee3138f1Smrg	/* 0x44 */ KEY_KP_7,
1558ee3138f1Smrg	/* 0x45 */ KEY_KP_8,
1559ee3138f1Smrg	/* 0x46 */ KEY_KP_9,
1560ee3138f1Smrg	/* 0x47 */ KEY_KP_Minus,
1561ee3138f1Smrg	/* 0x48 */ KEY_L7,		/* open */
1562ee3138f1Smrg	/* 0x49 */ KEY_L8,		/* paste */
1563ee3138f1Smrg	/* 0x4a */ KEY_End,
1564ee3138f1Smrg	/* 0x4b */ KEY_NOTUSED,
1565ee3138f1Smrg	/* 0x4c */ KEY_LCtrl,
1566ee3138f1Smrg	/* 0x4d */ KEY_A,
1567ee3138f1Smrg	/* 0x4e */ KEY_S,
1568ee3138f1Smrg	/* 0x4f */ KEY_D,
1569ee3138f1Smrg	/* 0x50 */ KEY_F,
1570ee3138f1Smrg	/* 0x51 */ KEY_G,
1571ee3138f1Smrg	/* 0x52 */ KEY_H,
1572ee3138f1Smrg	/* 0x53 */ KEY_J,
1573ee3138f1Smrg	/* 0x54 */ KEY_K,
1574ee3138f1Smrg	/* 0x55 */ KEY_L,
1575ee3138f1Smrg	/* 0x56 */ KEY_SemiColon,
1576ee3138f1Smrg	/* 0x57 */ KEY_Quote,
1577ee3138f1Smrg	/* 0x58 */ KEY_BSlash,
1578ee3138f1Smrg	/* 0x59 */ KEY_Enter,
1579ee3138f1Smrg	/* 0x5a */ KEY_KP_Enter,
1580ee3138f1Smrg	/* 0x5b */ KEY_KP_4,
1581ee3138f1Smrg	/* 0x5c */ KEY_KP_5,
1582ee3138f1Smrg	/* 0x5d */ KEY_KP_6,
1583ee3138f1Smrg	/* 0x5e */ KEY_KP_0,
1584ee3138f1Smrg	/* 0x5f */ KEY_L9,		/* find */
1585ee3138f1Smrg	/* 0x60 */ KEY_PgUp,
1586ee3138f1Smrg	/* 0x61 */ KEY_L10,		/* cut */
1587ee3138f1Smrg	/* 0x62 */ KEY_NumLock,
1588ee3138f1Smrg	/* 0x63 */ KEY_ShiftL,
1589ee3138f1Smrg	/* 0x64 */ KEY_Z,
1590ee3138f1Smrg	/* 0x65 */ KEY_X,
1591ee3138f1Smrg	/* 0x66 */ KEY_C,
1592ee3138f1Smrg	/* 0x67 */ KEY_V,
1593ee3138f1Smrg	/* 0x68 */ KEY_B,
1594ee3138f1Smrg	/* 0x69 */ KEY_N,
1595ee3138f1Smrg	/* 0x6a */ KEY_M,
1596ee3138f1Smrg	/* 0x6b */ KEY_Comma,
1597ee3138f1Smrg	/* 0x6c */ KEY_Period,
1598ee3138f1Smrg	/* 0x6d */ KEY_Slash,
1599ee3138f1Smrg	/* 0x6e */ KEY_ShiftR,
1600ee3138f1Smrg	/* 0x6f */ KEY_NOTUSED,		/* linefeed */
1601ee3138f1Smrg	/* 0x70 */ KEY_KP_1,
1602ee3138f1Smrg	/* 0x71 */ KEY_KP_2,
1603ee3138f1Smrg	/* 0x72 */ KEY_KP_3,
1604ee3138f1Smrg	/* 0x73 */ KEY_NOTUSED,
1605ee3138f1Smrg	/* 0x74 */ KEY_NOTUSED,
1606ee3138f1Smrg	/* 0x75 */ KEY_NOTUSED,
1607ac15d2bcSmacallan	/* 0x76 */ KEY_Help,		/* help */
1608ee3138f1Smrg	/* 0x77 */ KEY_CapsLock,
1609ee3138f1Smrg	/* 0x78 */ KEY_LMeta,
1610ee3138f1Smrg	/* 0x79 */ KEY_Space,
1611ee3138f1Smrg	/* 0x7a */ KEY_RMeta,
1612ee3138f1Smrg	/* 0x7b */ KEY_PgDown,
1613ee3138f1Smrg	/* 0x7c */ KEY_Less,		/* < > on some keyboards */
1614ee3138f1Smrg	/* 0x7d */ KEY_KP_Plus,
1615ee3138f1Smrg	/* 0x7e */ KEY_NOTUSED,
1616ee3138f1Smrg	/* 0x7f */ KEY_NOTUSED
1617ee3138f1Smrg};
1618aa8e367bSmrg#define WS_SUN_MAP_SIZE (sizeof(wsSunMap)/sizeof(*wsSunMap))
1619ee3138f1Smrg
1620ee3138f1Smrgstatic
1621ee3138f1SmrgTransMapRec wsSun = {
1622ee3138f1Smrg    0,
1623ee3138f1Smrg    WS_SUN_MAP_SIZE,
1624ee3138f1Smrg    wsSunMap
1625ee3138f1Smrg};
1626ee3138f1Smrg
1627ee3138f1Smrg#endif /* WSCONS_SUPPORT */
1628ee3138f1Smrg
1629ee3138f1Smrg/*ARGSUSED*/
1630ee3138f1Smrg
1631ee3138f1Smrg/*
1632ee3138f1Smrg * KbdGetMapping --
1633ee3138f1Smrg *	Get the national keyboard mapping. The keyboard type is set, a new map
1634ee3138f1Smrg *      and the modifiermap is computed.
1635ee3138f1Smrg */
1636ee3138f1Smrg
1637ee3138f1Smrgvoid
1638ee3138f1SmrgKbdGetMapping (InputInfoPtr pInfo, KeySymsPtr pKeySyms, CARD8 *pModMap)
1639ee3138f1Smrg{
1640ee3138f1Smrg  KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
1641ee3138f1Smrg  KeySym        *k;
1642ee3138f1Smrg  int           i;
1643ee3138f1Smrg
1644ee3138f1Smrg#ifndef __bsdi__
1645ee3138f1Smrg  switch (pKbd->consType) {
1646ee3138f1Smrg
1647ee3138f1Smrg/*
1648ee3138f1Smrg * XXX wscons has no GIO_KEYMAP
1649ee3138f1Smrg */
1650ee3138f1Smrg#if (defined (SYSCONS_SUPPORT) || defined (PCVT_SUPPORT)) && defined(GIO_KEYMAP)
1651ee3138f1Smrg  case SYSCONS:
1652ee3138f1Smrg  case PCVT:
1653ee3138f1Smrg    {
1654ee3138f1Smrg      keymap_t keymap;
1655ee3138f1Smrg
1656ee3138f1Smrg      if (ioctl(pInfo->fd, GIO_KEYMAP, &keymap) != -1) {
1657ee3138f1Smrg	for (i = 0; i < keymap.n_keys && i < NUM_KEYCODES; i++)
1658ee3138f1Smrg	  if (remap[i]) {
1659ee3138f1Smrg	    k = map + (remap[i] << 2);
1660ee3138f1Smrg	    k[0] = KD_GET_ENTRY(i,0);           /* non-shifed */
1661ee3138f1Smrg	    k[1] = KD_GET_ENTRY(i,1);	      /* shifted */
1662ee3138f1Smrg	    k[2] = KD_GET_ENTRY(i,4);	      /* alt */
1663ee3138f1Smrg	    k[3] = KD_GET_ENTRY(i,5);	      /* alt - shifted */
1664ee3138f1Smrg	    if (k[3] == k[2]) k[3] = NoSymbol;
1665ee3138f1Smrg	    if (k[2] == k[1]) k[2] = NoSymbol;
1666ee3138f1Smrg	    if (k[1] == k[0]) k[1] = NoSymbol;
1667ee3138f1Smrg	    if (k[0] == k[2] && k[1] == k[3])
1668ee3138f1Smrg	      k[2] = k[3] = NoSymbol;
1669ee3138f1Smrg	  }
1670ee3138f1Smrg      }
1671ee3138f1Smrg    }
1672ee3138f1Smrg    break;
1673ee3138f1Smrg#endif /* SYSCONS || PCVT */
1674ee3138f1Smrg
1675ee3138f1Smrg  }
1676ee3138f1Smrg#endif /* !bsdi */
1677ee3138f1Smrg
1678ee3138f1Smrg  /*
1679ee3138f1Smrg   * compute the modifier map
1680ee3138f1Smrg   */
1681ee3138f1Smrg  for (i = 0; i < MAP_LENGTH; i++)
1682ee3138f1Smrg    pModMap[i] = NoSymbol;  /* make sure it is restored */
1683ee3138f1Smrg
1684ee3138f1Smrg  for (k = map, i = MIN_KEYCODE;
1685ee3138f1Smrg       i < (NUM_KEYCODES + MIN_KEYCODE);
1686ee3138f1Smrg       i++, k += 4)
1687ee3138f1Smrg
1688ee3138f1Smrg    switch(*k) {
1689ee3138f1Smrg
1690ee3138f1Smrg    case XK_Shift_L:
1691ee3138f1Smrg    case XK_Shift_R:
1692ee3138f1Smrg      pModMap[i] = ShiftMask;
1693ee3138f1Smrg      break;
1694ee3138f1Smrg
1695ee3138f1Smrg    case XK_Control_L:
1696ee3138f1Smrg    case XK_Control_R:
1697ee3138f1Smrg      pModMap[i] = ControlMask;
1698ee3138f1Smrg      break;
1699ee3138f1Smrg
1700ee3138f1Smrg    case XK_Caps_Lock:
1701ee3138f1Smrg      pModMap[i] = LockMask;
1702ee3138f1Smrg      break;
1703ee3138f1Smrg
1704ee3138f1Smrg    case XK_Alt_L:
1705ee3138f1Smrg    case XK_Alt_R:
1706ee3138f1Smrg      pModMap[i] = AltMask;
1707ee3138f1Smrg      break;
1708ee3138f1Smrg
1709ee3138f1Smrg    case XK_Num_Lock:
1710ee3138f1Smrg      pModMap[i] = NumLockMask;
1711ee3138f1Smrg      break;
1712ee3138f1Smrg
1713ee3138f1Smrg    case XK_Scroll_Lock:
1714ee3138f1Smrg      pModMap[i] = ScrollLockMask;
1715ee3138f1Smrg      break;
1716ee3138f1Smrg
1717ee3138f1Smrg      /* kana support */
1718ee3138f1Smrg    case XK_Kana_Lock:
1719ee3138f1Smrg    case XK_Kana_Shift:
1720ee3138f1Smrg      pModMap[i] = KanaMask;
1721ee3138f1Smrg      break;
1722ee3138f1Smrg
1723ee3138f1Smrg      /* alternate toggle for multinational support */
1724ee3138f1Smrg    case XK_Mode_switch:
1725ee3138f1Smrg      pModMap[i] = AltLangMask;
1726ee3138f1Smrg      break;
1727ee3138f1Smrg
1728ee3138f1Smrg    }
1729ee3138f1Smrg
1730ee3138f1Smrg  pKeySyms->map        = map;
1731ee3138f1Smrg  pKeySyms->mapWidth   = GLYPHS_PER_KEY;
1732ee3138f1Smrg  pKeySyms->minKeyCode = MIN_KEYCODE;
1733ee3138f1Smrg  pKeySyms->maxKeyCode = MAX_KEYCODE;
1734ee3138f1Smrg
1735ee3138f1Smrg  switch(pKbd->consType) {
1736ee3138f1Smrg#ifdef SYSCONS_SUPPORT
1737ee3138f1Smrg      case SYSCONS:
1738ee3138f1Smrg           if (pKbd->CustomKeycodes)
1739ee3138f1Smrg              pKbd->scancodeMap = &sysconsCODE;
1740ee3138f1Smrg           else
1741ee3138f1Smrg              pKbd->RemapScanCode = ATScancode;
1742ee3138f1Smrg           break;
1743ee3138f1Smrg#endif
1744ee3138f1Smrg#if defined(PCCONS_SUPPORT) || defined (PCVT_SUPPORT)
1745ee3138f1Smrg      case PCCONS:
1746ee3138f1Smrg      case PCVT:
1747ee3138f1Smrg           pKbd->RemapScanCode = ATScancode;
1748ee3138f1Smrg	   break;
1749ee3138f1Smrg#endif
1750ee3138f1Smrg#ifdef WSCONS_SUPPORT
1751ee3138f1Smrg      case WSCONS:
1752ee3138f1Smrg	if (!pKbd->isConsole) {
1753ee3138f1Smrg           switch (pKbd->wsKbdType) {
1754ee3138f1Smrg	       case WSKBD_TYPE_PC_XT:
1755ee3138f1Smrg	       case WSKBD_TYPE_PC_AT:
1756ac15d2bcSmacallan                    pKbd->scancodeMap = &wsXt;
1757ee3138f1Smrg                    break;
1758ee3138f1Smrg	       case WSKBD_TYPE_USB:
175965174c50Stsutsui#ifdef WSKBD_TYPE_MAPLE
176065174c50Stsutsui	       case WSKBD_TYPE_MAPLE:
176165174c50Stsutsui#endif
1762ee3138f1Smrg                    pKbd->scancodeMap = &wsUsb;
1763ee3138f1Smrg                    break;
1764ee3138f1Smrg#ifdef WSKBD_TYPE_ADB
1765ee3138f1Smrg	       case WSKBD_TYPE_ADB:
1766ee3138f1Smrg                    pKbd->scancodeMap = &wsAdb;
1767ee3138f1Smrg                    break;
1768ee3138f1Smrg#endif
17690eaa3919Sphx#ifdef WSKBD_TYPE_AMIGA
17700eaa3919Sphx	       case WSKBD_TYPE_AMIGA:
17710eaa3919Sphx                    pKbd->scancodeMap = &wsAmiga;
17720eaa3919Sphx                    break;
17730eaa3919Sphx#endif
17740c005ca7Sabs#ifdef WSKBD_TYPE_LK201
17750c005ca7Sabs	       case WSKBD_TYPE_LK201:
1776aa8e367bSmrg                    pKbd->scancodeMap = &wsLk201;
17770c005ca7Sabs                    break;
17780c005ca7Sabs#endif
17794ddc96cfShans#ifdef WSKBD_TYPE_LK401
17804ddc96cfShans	       case WSKBD_TYPE_LK401:
17814ddc96cfShans                    pKbd->scancodeMap = &wsLk401;
17824ddc96cfShans                    break;
17834ddc96cfShans#endif
1784ee3138f1Smrg#ifdef WSKBD_TYPE_SUN
1785ee3138f1Smrg#ifdef WSKBD_TYPE_SUN5
1786ee3138f1Smrg	       case WSKBD_TYPE_SUN5:
1787ee3138f1Smrg#endif
1788ee3138f1Smrg	       case WSKBD_TYPE_SUN:
1789ee3138f1Smrg                    pKbd->scancodeMap = &wsSun;
1790ee3138f1Smrg                    break;
1791ee3138f1Smrg#endif
1792ee3138f1Smrg	       default:
1793ee3138f1Smrg		    ErrorF("Unknown wskbd type %d\n", pKbd->wsKbdType);
1794ee3138f1Smrg           }
1795ee3138f1Smrg	} else {
1796ee3138f1Smrg           pKbd->RemapScanCode = ATScancode;
1797ee3138f1Smrg	}
1798ee3138f1Smrg      break;
1799ee3138f1Smrg#endif
1800ee3138f1Smrg  }
1801ee3138f1Smrg  return;
1802ee3138f1Smrg}
1803