1 // KeyEvent code mapping pairs.
2 //     From                          To
3 static __Uint16Pair __belgian_to_us_normal [] = {
4   { SCIM_KEY_exclam,              SCIM_KEY_8 },
5   { SCIM_KEY_quotedbl,            SCIM_KEY_3 },
6   { SCIM_KEY_dollar,              SCIM_KEY_bracketright },
7   { SCIM_KEY_ampersand,           SCIM_KEY_1 },
8   { SCIM_KEY_apostrophe,          SCIM_KEY_4 },
9   { SCIM_KEY_parenleft,           SCIM_KEY_5 },
10   { SCIM_KEY_parenright,          SCIM_KEY_minus },
11   { SCIM_KEY_comma,               SCIM_KEY_m },
12   { SCIM_KEY_minus,               SCIM_KEY_equal },
13   { SCIM_KEY_colon,               SCIM_KEY_period },
14   { SCIM_KEY_semicolon,           SCIM_KEY_comma },
15   { SCIM_KEY_equal,               SCIM_KEY_slash },
16   { SCIM_KEY_a,                   SCIM_KEY_q },
17   { SCIM_KEY_m,                   SCIM_KEY_semicolon },
18   { SCIM_KEY_q,                   SCIM_KEY_a },
19   { SCIM_KEY_w,                   SCIM_KEY_z },
20   { SCIM_KEY_z,                   SCIM_KEY_w },
21   { SCIM_KEY_section,             SCIM_KEY_6 },
22   { SCIM_KEY_twosuperior,         SCIM_KEY_grave },
23   { SCIM_KEY_mu,                  SCIM_KEY_backslash },
24   { SCIM_KEY_agrave,              SCIM_KEY_0 },
25   { SCIM_KEY_ccedilla,            SCIM_KEY_9 },
26   { SCIM_KEY_egrave,              SCIM_KEY_7 },
27   { SCIM_KEY_eacute,              SCIM_KEY_2 },
28   { SCIM_KEY_ugrave,              SCIM_KEY_apostrophe },
29   { SCIM_KEY_dead_circumflex,     SCIM_KEY_bracketleft },
30 };
31 
32 static __Uint16Pair __us_to_belgian_normal [] = {
33   { SCIM_KEY_apostrophe,          SCIM_KEY_ugrave },
34   { SCIM_KEY_comma,               SCIM_KEY_semicolon },
35   { SCIM_KEY_minus,               SCIM_KEY_parenright },
36   { SCIM_KEY_period,              SCIM_KEY_colon },
37   { SCIM_KEY_slash,               SCIM_KEY_equal },
38   { SCIM_KEY_0,                   SCIM_KEY_agrave },
39   { SCIM_KEY_1,                   SCIM_KEY_ampersand },
40   { SCIM_KEY_2,                   SCIM_KEY_eacute },
41   { SCIM_KEY_3,                   SCIM_KEY_quotedbl },
42   { SCIM_KEY_4,                   SCIM_KEY_apostrophe },
43   { SCIM_KEY_5,                   SCIM_KEY_parenleft },
44   { SCIM_KEY_6,                   SCIM_KEY_section },
45   { SCIM_KEY_7,                   SCIM_KEY_egrave },
46   { SCIM_KEY_8,                   SCIM_KEY_exclam },
47   { SCIM_KEY_9,                   SCIM_KEY_ccedilla },
48   { SCIM_KEY_semicolon,           SCIM_KEY_m },
49   { SCIM_KEY_equal,               SCIM_KEY_minus },
50   { SCIM_KEY_bracketleft,         SCIM_KEY_dead_circumflex },
51   { SCIM_KEY_backslash,           SCIM_KEY_mu },
52   { SCIM_KEY_bracketright,        SCIM_KEY_dollar },
53   { SCIM_KEY_grave,               SCIM_KEY_twosuperior },
54   { SCIM_KEY_a,                   SCIM_KEY_q },
55   { SCIM_KEY_m,                   SCIM_KEY_comma },
56   { SCIM_KEY_q,                   SCIM_KEY_a },
57   { SCIM_KEY_w,                   SCIM_KEY_z },
58   { SCIM_KEY_z,                   SCIM_KEY_w },
59 };
60 
61 static __Uint16Pair __belgian_to_us_caps [] = {
62   { SCIM_KEY_exclam,              SCIM_KEY_8 },
63   { SCIM_KEY_quotedbl,            SCIM_KEY_3 },
64   { SCIM_KEY_dollar,              SCIM_KEY_bracketright },
65   { SCIM_KEY_ampersand,           SCIM_KEY_1 },
66   { SCIM_KEY_apostrophe,          SCIM_KEY_4 },
67   { SCIM_KEY_parenleft,           SCIM_KEY_5 },
68   { SCIM_KEY_parenright,          SCIM_KEY_minus },
69   { SCIM_KEY_comma,               SCIM_KEY_M },
70   { SCIM_KEY_minus,               SCIM_KEY_equal },
71   { SCIM_KEY_colon,               SCIM_KEY_period },
72   { SCIM_KEY_semicolon,           SCIM_KEY_comma },
73   { SCIM_KEY_equal,               SCIM_KEY_slash },
74   { SCIM_KEY_A,                   SCIM_KEY_Q },
75   { SCIM_KEY_M,                   SCIM_KEY_semicolon },
76   { SCIM_KEY_Q,                   SCIM_KEY_A },
77   { SCIM_KEY_W,                   SCIM_KEY_Z },
78   { SCIM_KEY_Z,                   SCIM_KEY_W },
79   { SCIM_KEY_section,             SCIM_KEY_6 },
80   { SCIM_KEY_twosuperior,         SCIM_KEY_grave },
81   { SCIM_KEY_mu,                  SCIM_KEY_backslash },
82   { SCIM_KEY_Agrave,              SCIM_KEY_0 },
83   { SCIM_KEY_Ccedilla,            SCIM_KEY_9 },
84   { SCIM_KEY_Egrave,              SCIM_KEY_7 },
85   { SCIM_KEY_Eacute,              SCIM_KEY_2 },
86   { SCIM_KEY_Ugrave,              SCIM_KEY_apostrophe },
87   { SCIM_KEY_dead_circumflex,     SCIM_KEY_bracketleft },
88 };
89 
90 static __Uint16Pair __us_to_belgian_caps [] = {
91   { SCIM_KEY_apostrophe,          SCIM_KEY_Ugrave },
92   { SCIM_KEY_comma,               SCIM_KEY_semicolon },
93   { SCIM_KEY_minus,               SCIM_KEY_parenright },
94   { SCIM_KEY_period,              SCIM_KEY_colon },
95   { SCIM_KEY_slash,               SCIM_KEY_equal },
96   { SCIM_KEY_0,                   SCIM_KEY_Agrave },
97   { SCIM_KEY_1,                   SCIM_KEY_ampersand },
98   { SCIM_KEY_2,                   SCIM_KEY_Eacute },
99   { SCIM_KEY_3,                   SCIM_KEY_quotedbl },
100   { SCIM_KEY_4,                   SCIM_KEY_apostrophe },
101   { SCIM_KEY_5,                   SCIM_KEY_parenleft },
102   { SCIM_KEY_6,                   SCIM_KEY_section },
103   { SCIM_KEY_7,                   SCIM_KEY_Egrave },
104   { SCIM_KEY_8,                   SCIM_KEY_exclam },
105   { SCIM_KEY_9,                   SCIM_KEY_Ccedilla },
106   { SCIM_KEY_semicolon,           SCIM_KEY_M },
107   { SCIM_KEY_equal,               SCIM_KEY_minus },
108   { SCIM_KEY_A,                   SCIM_KEY_Q },
109   { SCIM_KEY_M,                   SCIM_KEY_comma },
110   { SCIM_KEY_Q,                   SCIM_KEY_A },
111   { SCIM_KEY_W,                   SCIM_KEY_Z },
112   { SCIM_KEY_Z,                   SCIM_KEY_W },
113   { SCIM_KEY_bracketleft,         SCIM_KEY_dead_circumflex },
114   { SCIM_KEY_backslash,           SCIM_KEY_mu },
115   { SCIM_KEY_bracketright,        SCIM_KEY_dollar },
116   { SCIM_KEY_grave,               SCIM_KEY_twosuperior },
117 };
118 
119 static __Uint16Pair __belgian_to_us_shift [] = {
120   { SCIM_KEY_percent,             SCIM_KEY_quotedbl },
121   { SCIM_KEY_asterisk,            SCIM_KEY_braceright },
122   { SCIM_KEY_plus,                SCIM_KEY_question },
123   { SCIM_KEY_period,              SCIM_KEY_less },
124   { SCIM_KEY_slash,               SCIM_KEY_greater },
125   { SCIM_KEY_0,                   SCIM_KEY_parenright },
126   { SCIM_KEY_1,                   SCIM_KEY_exclam },
127   { SCIM_KEY_2,                   SCIM_KEY_at },
128   { SCIM_KEY_3,                   SCIM_KEY_numbersign },
129   { SCIM_KEY_4,                   SCIM_KEY_dollar },
130   { SCIM_KEY_5,                   SCIM_KEY_percent },
131   { SCIM_KEY_6,                   SCIM_KEY_asciicircum },
132   { SCIM_KEY_7,                   SCIM_KEY_ampersand },
133   { SCIM_KEY_8,                   SCIM_KEY_asterisk },
134   { SCIM_KEY_9,                   SCIM_KEY_parenleft },
135   { SCIM_KEY_question,            SCIM_KEY_M },
136   { SCIM_KEY_A,                   SCIM_KEY_Q },
137   { SCIM_KEY_M,                   SCIM_KEY_colon },
138   { SCIM_KEY_Q,                   SCIM_KEY_A },
139   { SCIM_KEY_W,                   SCIM_KEY_Z },
140   { SCIM_KEY_Z,                   SCIM_KEY_W },
141   { SCIM_KEY_underscore,          SCIM_KEY_plus },
142   { SCIM_KEY_sterling,            SCIM_KEY_bar },
143   { SCIM_KEY_degree,              SCIM_KEY_underscore },
144   { SCIM_KEY_threesuperior,       SCIM_KEY_asciitilde },
145   { SCIM_KEY_dead_diaeresis,      SCIM_KEY_braceleft },
146 };
147 
148 static __Uint16Pair __us_to_belgian_shift [] = {
149   { SCIM_KEY_exclam,              SCIM_KEY_1 },
150   { SCIM_KEY_quotedbl,            SCIM_KEY_percent },
151   { SCIM_KEY_numbersign,          SCIM_KEY_3 },
152   { SCIM_KEY_dollar,              SCIM_KEY_4 },
153   { SCIM_KEY_percent,             SCIM_KEY_5 },
154   { SCIM_KEY_ampersand,           SCIM_KEY_7 },
155   { SCIM_KEY_parenleft,           SCIM_KEY_9 },
156   { SCIM_KEY_parenright,          SCIM_KEY_0 },
157   { SCIM_KEY_asterisk,            SCIM_KEY_8 },
158   { SCIM_KEY_plus,                SCIM_KEY_underscore },
159   { SCIM_KEY_colon,               SCIM_KEY_M },
160   { SCIM_KEY_less,                SCIM_KEY_period },
161   { SCIM_KEY_greater,             SCIM_KEY_slash },
162   { SCIM_KEY_question,            SCIM_KEY_plus },
163   { SCIM_KEY_at,                  SCIM_KEY_2 },
164   { SCIM_KEY_A,                   SCIM_KEY_Q },
165   { SCIM_KEY_M,                   SCIM_KEY_question },
166   { SCIM_KEY_Q,                   SCIM_KEY_A },
167   { SCIM_KEY_W,                   SCIM_KEY_Z },
168   { SCIM_KEY_Z,                   SCIM_KEY_W },
169   { SCIM_KEY_asciicircum,         SCIM_KEY_6 },
170   { SCIM_KEY_underscore,          SCIM_KEY_degree },
171   { SCIM_KEY_braceleft,           SCIM_KEY_dead_diaeresis },
172   { SCIM_KEY_bar,                 SCIM_KEY_sterling },
173   { SCIM_KEY_braceright,          SCIM_KEY_asterisk },
174   { SCIM_KEY_asciitilde,          SCIM_KEY_threesuperior },
175 };
176 
177 static __Uint16Pair __belgian_to_us_caps_shift [] = {
178   { SCIM_KEY_percent,             SCIM_KEY_quotedbl },
179   { SCIM_KEY_asterisk,            SCIM_KEY_braceright },
180   { SCIM_KEY_plus,                SCIM_KEY_question },
181   { SCIM_KEY_period,              SCIM_KEY_less },
182   { SCIM_KEY_slash,               SCIM_KEY_greater },
183   { SCIM_KEY_0,                   SCIM_KEY_parenright },
184   { SCIM_KEY_1,                   SCIM_KEY_exclam },
185   { SCIM_KEY_2,                   SCIM_KEY_at },
186   { SCIM_KEY_3,                   SCIM_KEY_numbersign },
187   { SCIM_KEY_4,                   SCIM_KEY_dollar },
188   { SCIM_KEY_5,                   SCIM_KEY_percent },
189   { SCIM_KEY_6,                   SCIM_KEY_asciicircum },
190   { SCIM_KEY_7,                   SCIM_KEY_ampersand },
191   { SCIM_KEY_8,                   SCIM_KEY_asterisk },
192   { SCIM_KEY_9,                   SCIM_KEY_parenleft },
193   { SCIM_KEY_question,            SCIM_KEY_m },
194   { SCIM_KEY_underscore,          SCIM_KEY_plus },
195   { SCIM_KEY_a,                   SCIM_KEY_q },
196   { SCIM_KEY_m,                   SCIM_KEY_colon },
197   { SCIM_KEY_q,                   SCIM_KEY_a },
198   { SCIM_KEY_w,                   SCIM_KEY_z },
199   { SCIM_KEY_z,                   SCIM_KEY_w },
200   { SCIM_KEY_sterling,            SCIM_KEY_bar },
201   { SCIM_KEY_degree,              SCIM_KEY_underscore },
202   { SCIM_KEY_threesuperior,       SCIM_KEY_asciitilde },
203   { SCIM_KEY_dead_diaeresis,      SCIM_KEY_braceleft },
204 };
205 
206 static __Uint16Pair __us_to_belgian_caps_shift [] = {
207   { SCIM_KEY_exclam,              SCIM_KEY_1 },
208   { SCIM_KEY_quotedbl,            SCIM_KEY_percent },
209   { SCIM_KEY_numbersign,          SCIM_KEY_3 },
210   { SCIM_KEY_dollar,              SCIM_KEY_4 },
211   { SCIM_KEY_percent,             SCIM_KEY_5 },
212   { SCIM_KEY_ampersand,           SCIM_KEY_7 },
213   { SCIM_KEY_parenleft,           SCIM_KEY_9 },
214   { SCIM_KEY_parenright,          SCIM_KEY_0 },
215   { SCIM_KEY_asterisk,            SCIM_KEY_8 },
216   { SCIM_KEY_plus,                SCIM_KEY_underscore },
217   { SCIM_KEY_colon,               SCIM_KEY_m },
218   { SCIM_KEY_less,                SCIM_KEY_period },
219   { SCIM_KEY_greater,             SCIM_KEY_slash },
220   { SCIM_KEY_question,            SCIM_KEY_plus },
221   { SCIM_KEY_at,                  SCIM_KEY_2 },
222   { SCIM_KEY_asciicircum,         SCIM_KEY_6 },
223   { SCIM_KEY_underscore,          SCIM_KEY_degree },
224   { SCIM_KEY_a,                   SCIM_KEY_q },
225   { SCIM_KEY_m,                   SCIM_KEY_question },
226   { SCIM_KEY_q,                   SCIM_KEY_a },
227   { SCIM_KEY_w,                   SCIM_KEY_z },
228   { SCIM_KEY_z,                   SCIM_KEY_w },
229   { SCIM_KEY_braceleft,           SCIM_KEY_dead_diaeresis },
230   { SCIM_KEY_bar,                 SCIM_KEY_sterling },
231   { SCIM_KEY_braceright,          SCIM_KEY_asterisk },
232   { SCIM_KEY_asciitilde,          SCIM_KEY_threesuperior },
233 };
234 
235 static __Uint16Pair __czech_to_us_normal [] = {
236   { SCIM_KEY_parenright,          SCIM_KEY_bracketright },
237   { SCIM_KEY_plus,                SCIM_KEY_1 },
238   { SCIM_KEY_minus,               SCIM_KEY_slash },
239   { SCIM_KEY_semicolon,           SCIM_KEY_grave },
240   { SCIM_KEY_equal,               SCIM_KEY_minus },
241   { SCIM_KEY_y,                   SCIM_KEY_z },
242   { SCIM_KEY_z,                   SCIM_KEY_y },
243   { SCIM_KEY_section,             SCIM_KEY_apostrophe },
244   { SCIM_KEY_aacute,              SCIM_KEY_8 },
245   { SCIM_KEY_eacute,              SCIM_KEY_0 },
246   { SCIM_KEY_iacute,              SCIM_KEY_9 },
247   { SCIM_KEY_uacute,              SCIM_KEY_bracketleft },
248   { SCIM_KEY_yacute,              SCIM_KEY_7 },
249   { SCIM_KEY_scaron,              SCIM_KEY_3 },
250   { SCIM_KEY_zcaron,              SCIM_KEY_6 },
251   { SCIM_KEY_ccaron,              SCIM_KEY_4 },
252   { SCIM_KEY_ecaron,              SCIM_KEY_2 },
253   { SCIM_KEY_rcaron,              SCIM_KEY_5 },
254   { SCIM_KEY_uring,               SCIM_KEY_semicolon },
255   { SCIM_KEY_dead_acute,          SCIM_KEY_equal },
256   { SCIM_KEY_dead_diaeresis,      SCIM_KEY_backslash },
257 };
258 
259 static __Uint16Pair __us_to_czech_normal [] = {
260   { SCIM_KEY_apostrophe,          SCIM_KEY_section },
261   { SCIM_KEY_minus,               SCIM_KEY_equal },
262   { SCIM_KEY_slash,               SCIM_KEY_minus },
263   { SCIM_KEY_0,                   SCIM_KEY_eacute },
264   { SCIM_KEY_1,                   SCIM_KEY_plus },
265   { SCIM_KEY_2,                   SCIM_KEY_ecaron },
266   { SCIM_KEY_3,                   SCIM_KEY_scaron },
267   { SCIM_KEY_4,                   SCIM_KEY_ccaron },
268   { SCIM_KEY_5,                   SCIM_KEY_rcaron },
269   { SCIM_KEY_6,                   SCIM_KEY_zcaron },
270   { SCIM_KEY_7,                   SCIM_KEY_yacute },
271   { SCIM_KEY_8,                   SCIM_KEY_aacute },
272   { SCIM_KEY_9,                   SCIM_KEY_iacute },
273   { SCIM_KEY_semicolon,           SCIM_KEY_uring },
274   { SCIM_KEY_equal,               SCIM_KEY_dead_acute },
275   { SCIM_KEY_bracketleft,         SCIM_KEY_uacute },
276   { SCIM_KEY_backslash,           SCIM_KEY_dead_diaeresis },
277   { SCIM_KEY_bracketright,        SCIM_KEY_parenright },
278   { SCIM_KEY_grave,               SCIM_KEY_semicolon },
279   { SCIM_KEY_y,                   SCIM_KEY_z },
280   { SCIM_KEY_z,                   SCIM_KEY_y },
281 };
282 
283 static __Uint16Pair __czech_to_us_caps [] = {
284   { SCIM_KEY_parenright,          SCIM_KEY_bracketright },
285   { SCIM_KEY_plus,                SCIM_KEY_1 },
286   { SCIM_KEY_minus,               SCIM_KEY_slash },
287   { SCIM_KEY_semicolon,           SCIM_KEY_grave },
288   { SCIM_KEY_equal,               SCIM_KEY_minus },
289   { SCIM_KEY_Y,                   SCIM_KEY_Z },
290   { SCIM_KEY_Z,                   SCIM_KEY_Y },
291   { SCIM_KEY_section,             SCIM_KEY_apostrophe },
292   { SCIM_KEY_Aacute,              SCIM_KEY_8 },
293   { SCIM_KEY_Eacute,              SCIM_KEY_0 },
294   { SCIM_KEY_Iacute,              SCIM_KEY_9 },
295   { SCIM_KEY_Uacute,              SCIM_KEY_bracketleft },
296   { SCIM_KEY_Yacute,              SCIM_KEY_7 },
297   { SCIM_KEY_Scaron,              SCIM_KEY_3 },
298   { SCIM_KEY_Zcaron,              SCIM_KEY_6 },
299   { SCIM_KEY_Ccaron,              SCIM_KEY_4 },
300   { SCIM_KEY_Ecaron,              SCIM_KEY_2 },
301   { SCIM_KEY_Rcaron,              SCIM_KEY_5 },
302   { SCIM_KEY_Uring,               SCIM_KEY_semicolon },
303   { SCIM_KEY_dead_acute,          SCIM_KEY_equal },
304   { SCIM_KEY_dead_diaeresis,      SCIM_KEY_backslash },
305 };
306 
307 static __Uint16Pair __us_to_czech_caps [] = {
308   { SCIM_KEY_apostrophe,          SCIM_KEY_section },
309   { SCIM_KEY_minus,               SCIM_KEY_equal },
310   { SCIM_KEY_slash,               SCIM_KEY_minus },
311   { SCIM_KEY_0,                   SCIM_KEY_Eacute },
312   { SCIM_KEY_1,                   SCIM_KEY_plus },
313   { SCIM_KEY_2,                   SCIM_KEY_Ecaron },
314   { SCIM_KEY_3,                   SCIM_KEY_Scaron },
315   { SCIM_KEY_4,                   SCIM_KEY_Ccaron },
316   { SCIM_KEY_5,                   SCIM_KEY_Rcaron },
317   { SCIM_KEY_6,                   SCIM_KEY_Zcaron },
318   { SCIM_KEY_7,                   SCIM_KEY_Yacute },
319   { SCIM_KEY_8,                   SCIM_KEY_Aacute },
320   { SCIM_KEY_9,                   SCIM_KEY_Iacute },
321   { SCIM_KEY_semicolon,           SCIM_KEY_Uring },
322   { SCIM_KEY_equal,               SCIM_KEY_dead_acute },
323   { SCIM_KEY_Y,                   SCIM_KEY_Z },
324   { SCIM_KEY_Z,                   SCIM_KEY_Y },
325   { SCIM_KEY_bracketleft,         SCIM_KEY_Uacute },
326   { SCIM_KEY_backslash,           SCIM_KEY_dead_diaeresis },
327   { SCIM_KEY_bracketright,        SCIM_KEY_parenright },
328   { SCIM_KEY_grave,               SCIM_KEY_semicolon },
329 };
330 
331 static __Uint16Pair __czech_to_us_shift [] = {
332   { SCIM_KEY_exclam,              SCIM_KEY_quotedbl },
333   { SCIM_KEY_quotedbl,            SCIM_KEY_colon },
334   { SCIM_KEY_percent,             SCIM_KEY_underscore },
335   { SCIM_KEY_apostrophe,          SCIM_KEY_bar },
336   { SCIM_KEY_parenleft,           SCIM_KEY_braceright },
337   { SCIM_KEY_slash,               SCIM_KEY_braceleft },
338   { SCIM_KEY_0,                   SCIM_KEY_parenright },
339   { SCIM_KEY_1,                   SCIM_KEY_exclam },
340   { SCIM_KEY_2,                   SCIM_KEY_at },
341   { SCIM_KEY_3,                   SCIM_KEY_numbersign },
342   { SCIM_KEY_4,                   SCIM_KEY_dollar },
343   { SCIM_KEY_5,                   SCIM_KEY_percent },
344   { SCIM_KEY_6,                   SCIM_KEY_asciicircum },
345   { SCIM_KEY_7,                   SCIM_KEY_ampersand },
346   { SCIM_KEY_8,                   SCIM_KEY_asterisk },
347   { SCIM_KEY_9,                   SCIM_KEY_parenleft },
348   { SCIM_KEY_colon,               SCIM_KEY_greater },
349   { SCIM_KEY_question,            SCIM_KEY_less },
350   { SCIM_KEY_Y,                   SCIM_KEY_Z },
351   { SCIM_KEY_Z,                   SCIM_KEY_Y },
352   { SCIM_KEY_underscore,          SCIM_KEY_question },
353   { SCIM_KEY_dead_abovering,      SCIM_KEY_asciitilde },
354   { SCIM_KEY_dead_caron,          SCIM_KEY_plus },
355 };
356 
357 static __Uint16Pair __us_to_czech_shift [] = {
358   { SCIM_KEY_exclam,              SCIM_KEY_1 },
359   { SCIM_KEY_quotedbl,            SCIM_KEY_exclam },
360   { SCIM_KEY_numbersign,          SCIM_KEY_3 },
361   { SCIM_KEY_dollar,              SCIM_KEY_4 },
362   { SCIM_KEY_percent,             SCIM_KEY_5 },
363   { SCIM_KEY_ampersand,           SCIM_KEY_7 },
364   { SCIM_KEY_parenleft,           SCIM_KEY_9 },
365   { SCIM_KEY_parenright,          SCIM_KEY_0 },
366   { SCIM_KEY_asterisk,            SCIM_KEY_8 },
367   { SCIM_KEY_plus,                SCIM_KEY_dead_caron },
368   { SCIM_KEY_colon,               SCIM_KEY_quotedbl },
369   { SCIM_KEY_less,                SCIM_KEY_question },
370   { SCIM_KEY_greater,             SCIM_KEY_colon },
371   { SCIM_KEY_question,            SCIM_KEY_underscore },
372   { SCIM_KEY_at,                  SCIM_KEY_2 },
373   { SCIM_KEY_Y,                   SCIM_KEY_Z },
374   { SCIM_KEY_Z,                   SCIM_KEY_Y },
375   { SCIM_KEY_asciicircum,         SCIM_KEY_6 },
376   { SCIM_KEY_underscore,          SCIM_KEY_percent },
377   { SCIM_KEY_braceleft,           SCIM_KEY_slash },
378   { SCIM_KEY_bar,                 SCIM_KEY_apostrophe },
379   { SCIM_KEY_braceright,          SCIM_KEY_parenleft },
380   { SCIM_KEY_asciitilde,          SCIM_KEY_dead_abovering },
381 };
382 
383 static __Uint16Pair __czech_to_us_caps_shift [] = {
384   { SCIM_KEY_exclam,              SCIM_KEY_quotedbl },
385   { SCIM_KEY_quotedbl,            SCIM_KEY_colon },
386   { SCIM_KEY_percent,             SCIM_KEY_underscore },
387   { SCIM_KEY_apostrophe,          SCIM_KEY_bar },
388   { SCIM_KEY_parenleft,           SCIM_KEY_braceright },
389   { SCIM_KEY_slash,               SCIM_KEY_braceleft },
390   { SCIM_KEY_0,                   SCIM_KEY_parenright },
391   { SCIM_KEY_1,                   SCIM_KEY_exclam },
392   { SCIM_KEY_2,                   SCIM_KEY_at },
393   { SCIM_KEY_3,                   SCIM_KEY_numbersign },
394   { SCIM_KEY_4,                   SCIM_KEY_dollar },
395   { SCIM_KEY_5,                   SCIM_KEY_percent },
396   { SCIM_KEY_6,                   SCIM_KEY_asciicircum },
397   { SCIM_KEY_7,                   SCIM_KEY_ampersand },
398   { SCIM_KEY_8,                   SCIM_KEY_asterisk },
399   { SCIM_KEY_9,                   SCIM_KEY_parenleft },
400   { SCIM_KEY_colon,               SCIM_KEY_greater },
401   { SCIM_KEY_question,            SCIM_KEY_less },
402   { SCIM_KEY_underscore,          SCIM_KEY_question },
403   { SCIM_KEY_y,                   SCIM_KEY_z },
404   { SCIM_KEY_z,                   SCIM_KEY_y },
405   { SCIM_KEY_dead_abovering,      SCIM_KEY_asciitilde },
406   { SCIM_KEY_dead_caron,          SCIM_KEY_plus },
407 };
408 
409 static __Uint16Pair __us_to_czech_caps_shift [] = {
410   { SCIM_KEY_exclam,              SCIM_KEY_1 },
411   { SCIM_KEY_quotedbl,            SCIM_KEY_exclam },
412   { SCIM_KEY_numbersign,          SCIM_KEY_3 },
413   { SCIM_KEY_dollar,              SCIM_KEY_4 },
414   { SCIM_KEY_percent,             SCIM_KEY_5 },
415   { SCIM_KEY_ampersand,           SCIM_KEY_7 },
416   { SCIM_KEY_parenleft,           SCIM_KEY_9 },
417   { SCIM_KEY_parenright,          SCIM_KEY_0 },
418   { SCIM_KEY_asterisk,            SCIM_KEY_8 },
419   { SCIM_KEY_plus,                SCIM_KEY_dead_caron },
420   { SCIM_KEY_colon,               SCIM_KEY_quotedbl },
421   { SCIM_KEY_less,                SCIM_KEY_question },
422   { SCIM_KEY_greater,             SCIM_KEY_colon },
423   { SCIM_KEY_question,            SCIM_KEY_underscore },
424   { SCIM_KEY_at,                  SCIM_KEY_2 },
425   { SCIM_KEY_asciicircum,         SCIM_KEY_6 },
426   { SCIM_KEY_underscore,          SCIM_KEY_percent },
427   { SCIM_KEY_y,                   SCIM_KEY_z },
428   { SCIM_KEY_z,                   SCIM_KEY_y },
429   { SCIM_KEY_braceleft,           SCIM_KEY_slash },
430   { SCIM_KEY_bar,                 SCIM_KEY_apostrophe },
431   { SCIM_KEY_braceright,          SCIM_KEY_parenleft },
432   { SCIM_KEY_asciitilde,          SCIM_KEY_dead_abovering },
433 };
434 
435 static __Uint16Pair __czech_qwerty_to_us_normal [] = {
436   { SCIM_KEY_parenright,          SCIM_KEY_bracketright },
437   { SCIM_KEY_plus,                SCIM_KEY_1 },
438   { SCIM_KEY_minus,               SCIM_KEY_slash },
439   { SCIM_KEY_semicolon,           SCIM_KEY_grave },
440   { SCIM_KEY_equal,               SCIM_KEY_minus },
441   { SCIM_KEY_section,             SCIM_KEY_apostrophe },
442   { SCIM_KEY_aacute,              SCIM_KEY_8 },
443   { SCIM_KEY_eacute,              SCIM_KEY_0 },
444   { SCIM_KEY_iacute,              SCIM_KEY_9 },
445   { SCIM_KEY_uacute,              SCIM_KEY_bracketleft },
446   { SCIM_KEY_yacute,              SCIM_KEY_7 },
447   { SCIM_KEY_scaron,              SCIM_KEY_3 },
448   { SCIM_KEY_zcaron,              SCIM_KEY_6 },
449   { SCIM_KEY_ccaron,              SCIM_KEY_4 },
450   { SCIM_KEY_ecaron,              SCIM_KEY_2 },
451   { SCIM_KEY_rcaron,              SCIM_KEY_5 },
452   { SCIM_KEY_uring,               SCIM_KEY_semicolon },
453   { SCIM_KEY_dead_acute,          SCIM_KEY_equal },
454   { SCIM_KEY_dead_diaeresis,      SCIM_KEY_backslash },
455 };
456 
457 static __Uint16Pair __us_to_czech_qwerty_normal [] = {
458   { SCIM_KEY_apostrophe,          SCIM_KEY_section },
459   { SCIM_KEY_minus,               SCIM_KEY_equal },
460   { SCIM_KEY_slash,               SCIM_KEY_minus },
461   { SCIM_KEY_0,                   SCIM_KEY_eacute },
462   { SCIM_KEY_1,                   SCIM_KEY_plus },
463   { SCIM_KEY_2,                   SCIM_KEY_ecaron },
464   { SCIM_KEY_3,                   SCIM_KEY_scaron },
465   { SCIM_KEY_4,                   SCIM_KEY_ccaron },
466   { SCIM_KEY_5,                   SCIM_KEY_rcaron },
467   { SCIM_KEY_6,                   SCIM_KEY_zcaron },
468   { SCIM_KEY_7,                   SCIM_KEY_yacute },
469   { SCIM_KEY_8,                   SCIM_KEY_aacute },
470   { SCIM_KEY_9,                   SCIM_KEY_iacute },
471   { SCIM_KEY_semicolon,           SCIM_KEY_uring },
472   { SCIM_KEY_equal,               SCIM_KEY_dead_acute },
473   { SCIM_KEY_bracketleft,         SCIM_KEY_uacute },
474   { SCIM_KEY_backslash,           SCIM_KEY_dead_diaeresis },
475   { SCIM_KEY_bracketright,        SCIM_KEY_parenright },
476   { SCIM_KEY_grave,               SCIM_KEY_semicolon },
477 };
478 
479 static __Uint16Pair __czech_qwerty_to_us_caps [] = {
480   { SCIM_KEY_parenright,          SCIM_KEY_bracketright },
481   { SCIM_KEY_plus,                SCIM_KEY_1 },
482   { SCIM_KEY_minus,               SCIM_KEY_slash },
483   { SCIM_KEY_semicolon,           SCIM_KEY_grave },
484   { SCIM_KEY_equal,               SCIM_KEY_minus },
485   { SCIM_KEY_section,             SCIM_KEY_apostrophe },
486   { SCIM_KEY_Aacute,              SCIM_KEY_8 },
487   { SCIM_KEY_Eacute,              SCIM_KEY_0 },
488   { SCIM_KEY_Iacute,              SCIM_KEY_9 },
489   { SCIM_KEY_Uacute,              SCIM_KEY_bracketleft },
490   { SCIM_KEY_Yacute,              SCIM_KEY_7 },
491   { SCIM_KEY_Scaron,              SCIM_KEY_3 },
492   { SCIM_KEY_Zcaron,              SCIM_KEY_6 },
493   { SCIM_KEY_Ccaron,              SCIM_KEY_4 },
494   { SCIM_KEY_Ecaron,              SCIM_KEY_2 },
495   { SCIM_KEY_Rcaron,              SCIM_KEY_5 },
496   { SCIM_KEY_Uring,               SCIM_KEY_semicolon },
497   { SCIM_KEY_dead_acute,          SCIM_KEY_equal },
498   { SCIM_KEY_dead_diaeresis,      SCIM_KEY_backslash },
499 };
500 
501 static __Uint16Pair __us_to_czech_qwerty_caps [] = {
502   { SCIM_KEY_apostrophe,          SCIM_KEY_section },
503   { SCIM_KEY_minus,               SCIM_KEY_equal },
504   { SCIM_KEY_slash,               SCIM_KEY_minus },
505   { SCIM_KEY_0,                   SCIM_KEY_Eacute },
506   { SCIM_KEY_1,                   SCIM_KEY_plus },
507   { SCIM_KEY_2,                   SCIM_KEY_Ecaron },
508   { SCIM_KEY_3,                   SCIM_KEY_Scaron },
509   { SCIM_KEY_4,                   SCIM_KEY_Ccaron },
510   { SCIM_KEY_5,                   SCIM_KEY_Rcaron },
511   { SCIM_KEY_6,                   SCIM_KEY_Zcaron },
512   { SCIM_KEY_7,                   SCIM_KEY_Yacute },
513   { SCIM_KEY_8,                   SCIM_KEY_Aacute },
514   { SCIM_KEY_9,                   SCIM_KEY_Iacute },
515   { SCIM_KEY_semicolon,           SCIM_KEY_Uring },
516   { SCIM_KEY_equal,               SCIM_KEY_dead_acute },
517   { SCIM_KEY_bracketleft,         SCIM_KEY_Uacute },
518   { SCIM_KEY_backslash,           SCIM_KEY_dead_diaeresis },
519   { SCIM_KEY_bracketright,        SCIM_KEY_parenright },
520   { SCIM_KEY_grave,               SCIM_KEY_semicolon },
521 };
522 
523 static __Uint16Pair __czech_qwerty_to_us_shift [] = {
524   { SCIM_KEY_exclam,              SCIM_KEY_quotedbl },
525   { SCIM_KEY_quotedbl,            SCIM_KEY_colon },
526   { SCIM_KEY_percent,             SCIM_KEY_underscore },
527   { SCIM_KEY_apostrophe,          SCIM_KEY_bar },
528   { SCIM_KEY_parenleft,           SCIM_KEY_braceright },
529   { SCIM_KEY_slash,               SCIM_KEY_braceleft },
530   { SCIM_KEY_0,                   SCIM_KEY_parenright },
531   { SCIM_KEY_1,                   SCIM_KEY_exclam },
532   { SCIM_KEY_2,                   SCIM_KEY_at },
533   { SCIM_KEY_3,                   SCIM_KEY_numbersign },
534   { SCIM_KEY_4,                   SCIM_KEY_dollar },
535   { SCIM_KEY_5,                   SCIM_KEY_percent },
536   { SCIM_KEY_6,                   SCIM_KEY_asciicircum },
537   { SCIM_KEY_7,                   SCIM_KEY_ampersand },
538   { SCIM_KEY_8,                   SCIM_KEY_asterisk },
539   { SCIM_KEY_9,                   SCIM_KEY_parenleft },
540   { SCIM_KEY_colon,               SCIM_KEY_greater },
541   { SCIM_KEY_question,            SCIM_KEY_less },
542   { SCIM_KEY_underscore,          SCIM_KEY_question },
543   { SCIM_KEY_dead_abovering,      SCIM_KEY_asciitilde },
544   { SCIM_KEY_dead_caron,          SCIM_KEY_plus },
545 };
546 
547 static __Uint16Pair __us_to_czech_qwerty_shift [] = {
548   { SCIM_KEY_exclam,              SCIM_KEY_1 },
549   { SCIM_KEY_quotedbl,            SCIM_KEY_exclam },
550   { SCIM_KEY_numbersign,          SCIM_KEY_3 },
551   { SCIM_KEY_dollar,              SCIM_KEY_4 },
552   { SCIM_KEY_percent,             SCIM_KEY_5 },
553   { SCIM_KEY_ampersand,           SCIM_KEY_7 },
554   { SCIM_KEY_parenleft,           SCIM_KEY_9 },
555   { SCIM_KEY_parenright,          SCIM_KEY_0 },
556   { SCIM_KEY_asterisk,            SCIM_KEY_8 },
557   { SCIM_KEY_plus,                SCIM_KEY_dead_caron },
558   { SCIM_KEY_colon,               SCIM_KEY_quotedbl },
559   { SCIM_KEY_less,                SCIM_KEY_question },
560   { SCIM_KEY_greater,             SCIM_KEY_colon },
561   { SCIM_KEY_question,            SCIM_KEY_underscore },
562   { SCIM_KEY_at,                  SCIM_KEY_2 },
563   { SCIM_KEY_asciicircum,         SCIM_KEY_6 },
564   { SCIM_KEY_underscore,          SCIM_KEY_percent },
565   { SCIM_KEY_braceleft,           SCIM_KEY_slash },
566   { SCIM_KEY_bar,                 SCIM_KEY_apostrophe },
567   { SCIM_KEY_braceright,          SCIM_KEY_parenleft },
568   { SCIM_KEY_asciitilde,          SCIM_KEY_dead_abovering },
569 };
570 
571 static __Uint16Pair __czech_qwerty_to_us_caps_shift [] = {
572   { SCIM_KEY_exclam,              SCIM_KEY_quotedbl },
573   { SCIM_KEY_quotedbl,            SCIM_KEY_colon },
574   { SCIM_KEY_percent,             SCIM_KEY_underscore },
575   { SCIM_KEY_apostrophe,          SCIM_KEY_bar },
576   { SCIM_KEY_parenleft,           SCIM_KEY_braceright },
577   { SCIM_KEY_slash,               SCIM_KEY_braceleft },
578   { SCIM_KEY_0,                   SCIM_KEY_parenright },
579   { SCIM_KEY_1,                   SCIM_KEY_exclam },
580   { SCIM_KEY_2,                   SCIM_KEY_at },
581   { SCIM_KEY_3,                   SCIM_KEY_numbersign },
582   { SCIM_KEY_4,                   SCIM_KEY_dollar },
583   { SCIM_KEY_5,                   SCIM_KEY_percent },
584   { SCIM_KEY_6,                   SCIM_KEY_asciicircum },
585   { SCIM_KEY_7,                   SCIM_KEY_ampersand },
586   { SCIM_KEY_8,                   SCIM_KEY_asterisk },
587   { SCIM_KEY_9,                   SCIM_KEY_parenleft },
588   { SCIM_KEY_colon,               SCIM_KEY_greater },
589   { SCIM_KEY_question,            SCIM_KEY_less },
590   { SCIM_KEY_underscore,          SCIM_KEY_question },
591   { SCIM_KEY_dead_abovering,      SCIM_KEY_asciitilde },
592   { SCIM_KEY_dead_caron,          SCIM_KEY_plus },
593 };
594 
595 static __Uint16Pair __us_to_czech_qwerty_caps_shift [] = {
596   { SCIM_KEY_exclam,              SCIM_KEY_1 },
597   { SCIM_KEY_quotedbl,            SCIM_KEY_exclam },
598   { SCIM_KEY_numbersign,          SCIM_KEY_3 },
599   { SCIM_KEY_dollar,              SCIM_KEY_4 },
600   { SCIM_KEY_percent,             SCIM_KEY_5 },
601   { SCIM_KEY_ampersand,           SCIM_KEY_7 },
602   { SCIM_KEY_parenleft,           SCIM_KEY_9 },
603   { SCIM_KEY_parenright,          SCIM_KEY_0 },
604   { SCIM_KEY_asterisk,            SCIM_KEY_8 },
605   { SCIM_KEY_plus,                SCIM_KEY_dead_caron },
606   { SCIM_KEY_colon,               SCIM_KEY_quotedbl },
607   { SCIM_KEY_less,                SCIM_KEY_question },
608   { SCIM_KEY_greater,             SCIM_KEY_colon },
609   { SCIM_KEY_question,            SCIM_KEY_underscore },
610   { SCIM_KEY_at,                  SCIM_KEY_2 },
611   { SCIM_KEY_asciicircum,         SCIM_KEY_6 },
612   { SCIM_KEY_underscore,          SCIM_KEY_percent },
613   { SCIM_KEY_braceleft,           SCIM_KEY_slash },
614   { SCIM_KEY_bar,                 SCIM_KEY_apostrophe },
615   { SCIM_KEY_braceright,          SCIM_KEY_parenleft },
616   { SCIM_KEY_asciitilde,          SCIM_KEY_dead_abovering },
617 };
618 
619 static __Uint16Pair __danish_to_us_normal [] = {
620   { SCIM_KEY_apostrophe,          SCIM_KEY_backslash },
621   { SCIM_KEY_plus,                SCIM_KEY_minus },
622   { SCIM_KEY_minus,               SCIM_KEY_slash },
623   { SCIM_KEY_onehalf,             SCIM_KEY_grave },
624   { SCIM_KEY_aring,               SCIM_KEY_bracketleft },
625   { SCIM_KEY_ae,                  SCIM_KEY_semicolon },
626   { SCIM_KEY_oslash,              SCIM_KEY_apostrophe },
627   { SCIM_KEY_dead_acute,          SCIM_KEY_equal },
628   { SCIM_KEY_dead_diaeresis,      SCIM_KEY_bracketright },
629 };
630 
631 static __Uint16Pair __us_to_danish_normal [] = {
632   { SCIM_KEY_apostrophe,          SCIM_KEY_oslash },
633   { SCIM_KEY_minus,               SCIM_KEY_plus },
634   { SCIM_KEY_slash,               SCIM_KEY_minus },
635   { SCIM_KEY_semicolon,           SCIM_KEY_ae },
636   { SCIM_KEY_equal,               SCIM_KEY_dead_acute },
637   { SCIM_KEY_bracketleft,         SCIM_KEY_aring },
638   { SCIM_KEY_backslash,           SCIM_KEY_apostrophe },
639   { SCIM_KEY_bracketright,        SCIM_KEY_dead_diaeresis },
640   { SCIM_KEY_grave,               SCIM_KEY_onehalf },
641 };
642 
643 static __Uint16Pair __danish_to_us_caps [] = {
644   { SCIM_KEY_apostrophe,          SCIM_KEY_backslash },
645   { SCIM_KEY_plus,                SCIM_KEY_minus },
646   { SCIM_KEY_minus,               SCIM_KEY_slash },
647   { SCIM_KEY_onehalf,             SCIM_KEY_grave },
648   { SCIM_KEY_Aring,               SCIM_KEY_bracketleft },
649   { SCIM_KEY_AE,                  SCIM_KEY_semicolon },
650   { SCIM_KEY_Ooblique,            SCIM_KEY_apostrophe },
651   { SCIM_KEY_dead_acute,          SCIM_KEY_equal },
652   { SCIM_KEY_dead_diaeresis,      SCIM_KEY_bracketright },
653 };
654 
655 static __Uint16Pair __us_to_danish_caps [] = {
656   { SCIM_KEY_apostrophe,          SCIM_KEY_Ooblique },
657   { SCIM_KEY_minus,               SCIM_KEY_plus },
658   { SCIM_KEY_slash,               SCIM_KEY_minus },
659   { SCIM_KEY_semicolon,           SCIM_KEY_AE },
660   { SCIM_KEY_equal,               SCIM_KEY_dead_acute },
661   { SCIM_KEY_bracketleft,         SCIM_KEY_Aring },
662   { SCIM_KEY_backslash,           SCIM_KEY_apostrophe },
663   { SCIM_KEY_bracketright,        SCIM_KEY_dead_diaeresis },
664   { SCIM_KEY_grave,               SCIM_KEY_onehalf },
665 };
666 
667 static __Uint16Pair __danish_to_us_shift [] = {
668   { SCIM_KEY_quotedbl,            SCIM_KEY_at },
669   { SCIM_KEY_ampersand,           SCIM_KEY_asciicircum },
670   { SCIM_KEY_parenleft,           SCIM_KEY_asterisk },
671   { SCIM_KEY_parenright,          SCIM_KEY_parenleft },
672   { SCIM_KEY_asterisk,            SCIM_KEY_bar },
673   { SCIM_KEY_slash,               SCIM_KEY_ampersand },
674   { SCIM_KEY_colon,               SCIM_KEY_greater },
675   { SCIM_KEY_semicolon,           SCIM_KEY_less },
676   { SCIM_KEY_equal,               SCIM_KEY_parenright },
677   { SCIM_KEY_question,            SCIM_KEY_underscore },
678   { SCIM_KEY_underscore,          SCIM_KEY_question },
679   { SCIM_KEY_currency,            SCIM_KEY_dollar },
680   { SCIM_KEY_section,             SCIM_KEY_asciitilde },
681   { SCIM_KEY_Aring,               SCIM_KEY_braceleft },
682   { SCIM_KEY_AE,                  SCIM_KEY_colon },
683   { SCIM_KEY_Ooblique,            SCIM_KEY_quotedbl },
684   { SCIM_KEY_dead_grave,          SCIM_KEY_plus },
685   { SCIM_KEY_dead_circumflex,     SCIM_KEY_braceright },
686 };
687 
688 static __Uint16Pair __us_to_danish_shift [] = {
689   { SCIM_KEY_quotedbl,            SCIM_KEY_Ooblique },
690   { SCIM_KEY_dollar,              SCIM_KEY_currency },
691   { SCIM_KEY_ampersand,           SCIM_KEY_slash },
692   { SCIM_KEY_parenleft,           SCIM_KEY_parenright },
693   { SCIM_KEY_parenright,          SCIM_KEY_equal },
694   { SCIM_KEY_asterisk,            SCIM_KEY_parenleft },
695   { SCIM_KEY_plus,                SCIM_KEY_dead_grave },
696   { SCIM_KEY_colon,               SCIM_KEY_AE },
697   { SCIM_KEY_less,                SCIM_KEY_semicolon },
698   { SCIM_KEY_greater,             SCIM_KEY_colon },
699   { SCIM_KEY_question,            SCIM_KEY_underscore },
700   { SCIM_KEY_at,                  SCIM_KEY_quotedbl },
701   { SCIM_KEY_asciicircum,         SCIM_KEY_ampersand },
702   { SCIM_KEY_underscore,          SCIM_KEY_question },
703   { SCIM_KEY_braceleft,           SCIM_KEY_Aring },
704   { SCIM_KEY_bar,                 SCIM_KEY_asterisk },
705   { SCIM_KEY_braceright,          SCIM_KEY_dead_circumflex },
706   { SCIM_KEY_asciitilde,          SCIM_KEY_section },
707 };
708 
709 static __Uint16Pair __danish_to_us_caps_shift [] = {
710   { SCIM_KEY_quotedbl,            SCIM_KEY_at },
711   { SCIM_KEY_ampersand,           SCIM_KEY_asciicircum },
712   { SCIM_KEY_parenleft,           SCIM_KEY_asterisk },
713   { SCIM_KEY_parenright,          SCIM_KEY_parenleft },
714   { SCIM_KEY_asterisk,            SCIM_KEY_bar },
715   { SCIM_KEY_slash,               SCIM_KEY_ampersand },
716   { SCIM_KEY_colon,               SCIM_KEY_greater },
717   { SCIM_KEY_semicolon,           SCIM_KEY_less },
718   { SCIM_KEY_equal,               SCIM_KEY_parenright },
719   { SCIM_KEY_question,            SCIM_KEY_underscore },
720   { SCIM_KEY_underscore,          SCIM_KEY_question },
721   { SCIM_KEY_currency,            SCIM_KEY_dollar },
722   { SCIM_KEY_section,             SCIM_KEY_asciitilde },
723   { SCIM_KEY_aring,               SCIM_KEY_braceleft },
724   { SCIM_KEY_ae,                  SCIM_KEY_colon },
725   { SCIM_KEY_oslash,              SCIM_KEY_quotedbl },
726   { SCIM_KEY_dead_grave,          SCIM_KEY_plus },
727   { SCIM_KEY_dead_circumflex,     SCIM_KEY_braceright },
728 };
729 
730 static __Uint16Pair __us_to_danish_caps_shift [] = {
731   { SCIM_KEY_quotedbl,            SCIM_KEY_oslash },
732   { SCIM_KEY_dollar,              SCIM_KEY_currency },
733   { SCIM_KEY_ampersand,           SCIM_KEY_slash },
734   { SCIM_KEY_parenleft,           SCIM_KEY_parenright },
735   { SCIM_KEY_parenright,          SCIM_KEY_equal },
736   { SCIM_KEY_asterisk,            SCIM_KEY_parenleft },
737   { SCIM_KEY_plus,                SCIM_KEY_dead_grave },
738   { SCIM_KEY_colon,               SCIM_KEY_ae },
739   { SCIM_KEY_less,                SCIM_KEY_semicolon },
740   { SCIM_KEY_greater,             SCIM_KEY_colon },
741   { SCIM_KEY_question,            SCIM_KEY_underscore },
742   { SCIM_KEY_at,                  SCIM_KEY_quotedbl },
743   { SCIM_KEY_asciicircum,         SCIM_KEY_ampersand },
744   { SCIM_KEY_underscore,          SCIM_KEY_question },
745   { SCIM_KEY_braceleft,           SCIM_KEY_aring },
746   { SCIM_KEY_bar,                 SCIM_KEY_asterisk },
747   { SCIM_KEY_braceright,          SCIM_KEY_dead_circumflex },
748   { SCIM_KEY_asciitilde,          SCIM_KEY_section },
749 };
750 
751 static __Uint16Pair __dvorak_to_us_normal [] = {
752   { SCIM_KEY_apostrophe,          SCIM_KEY_q },
753   { SCIM_KEY_comma,               SCIM_KEY_w },
754   { SCIM_KEY_minus,               SCIM_KEY_apostrophe },
755   { SCIM_KEY_period,              SCIM_KEY_e },
756   { SCIM_KEY_slash,               SCIM_KEY_bracketleft },
757   { SCIM_KEY_semicolon,           SCIM_KEY_z },
758   { SCIM_KEY_equal,               SCIM_KEY_bracketright },
759   { SCIM_KEY_bracketleft,         SCIM_KEY_minus },
760   { SCIM_KEY_bracketright,        SCIM_KEY_equal },
761   { SCIM_KEY_b,                   SCIM_KEY_n },
762   { SCIM_KEY_c,                   SCIM_KEY_i },
763   { SCIM_KEY_d,                   SCIM_KEY_h },
764   { SCIM_KEY_e,                   SCIM_KEY_d },
765   { SCIM_KEY_f,                   SCIM_KEY_y },
766   { SCIM_KEY_g,                   SCIM_KEY_u },
767   { SCIM_KEY_h,                   SCIM_KEY_j },
768   { SCIM_KEY_i,                   SCIM_KEY_g },
769   { SCIM_KEY_j,                   SCIM_KEY_c },
770   { SCIM_KEY_k,                   SCIM_KEY_v },
771   { SCIM_KEY_l,                   SCIM_KEY_p },
772   { SCIM_KEY_n,                   SCIM_KEY_l },
773   { SCIM_KEY_o,                   SCIM_KEY_s },
774   { SCIM_KEY_p,                   SCIM_KEY_r },
775   { SCIM_KEY_q,                   SCIM_KEY_x },
776   { SCIM_KEY_r,                   SCIM_KEY_o },
777   { SCIM_KEY_s,                   SCIM_KEY_semicolon },
778   { SCIM_KEY_t,                   SCIM_KEY_k },
779   { SCIM_KEY_u,                   SCIM_KEY_f },
780   { SCIM_KEY_v,                   SCIM_KEY_period },
781   { SCIM_KEY_w,                   SCIM_KEY_comma },
782   { SCIM_KEY_x,                   SCIM_KEY_b },
783   { SCIM_KEY_y,                   SCIM_KEY_t },
784   { SCIM_KEY_z,                   SCIM_KEY_slash },
785 };
786 
787 static __Uint16Pair __us_to_dvorak_normal [] = {
788   { SCIM_KEY_apostrophe,          SCIM_KEY_minus },
789   { SCIM_KEY_comma,               SCIM_KEY_w },
790   { SCIM_KEY_minus,               SCIM_KEY_bracketleft },
791   { SCIM_KEY_period,              SCIM_KEY_v },
792   { SCIM_KEY_slash,               SCIM_KEY_z },
793   { SCIM_KEY_semicolon,           SCIM_KEY_s },
794   { SCIM_KEY_equal,               SCIM_KEY_bracketright },
795   { SCIM_KEY_bracketleft,         SCIM_KEY_slash },
796   { SCIM_KEY_bracketright,        SCIM_KEY_equal },
797   { SCIM_KEY_b,                   SCIM_KEY_x },
798   { SCIM_KEY_c,                   SCIM_KEY_j },
799   { SCIM_KEY_d,                   SCIM_KEY_e },
800   { SCIM_KEY_e,                   SCIM_KEY_period },
801   { SCIM_KEY_f,                   SCIM_KEY_u },
802   { SCIM_KEY_g,                   SCIM_KEY_i },
803   { SCIM_KEY_h,                   SCIM_KEY_d },
804   { SCIM_KEY_i,                   SCIM_KEY_c },
805   { SCIM_KEY_j,                   SCIM_KEY_h },
806   { SCIM_KEY_k,                   SCIM_KEY_t },
807   { SCIM_KEY_l,                   SCIM_KEY_n },
808   { SCIM_KEY_n,                   SCIM_KEY_b },
809   { SCIM_KEY_o,                   SCIM_KEY_r },
810   { SCIM_KEY_p,                   SCIM_KEY_l },
811   { SCIM_KEY_q,                   SCIM_KEY_apostrophe },
812   { SCIM_KEY_r,                   SCIM_KEY_p },
813   { SCIM_KEY_s,                   SCIM_KEY_o },
814   { SCIM_KEY_t,                   SCIM_KEY_y },
815   { SCIM_KEY_u,                   SCIM_KEY_g },
816   { SCIM_KEY_v,                   SCIM_KEY_k },
817   { SCIM_KEY_w,                   SCIM_KEY_comma },
818   { SCIM_KEY_x,                   SCIM_KEY_q },
819   { SCIM_KEY_y,                   SCIM_KEY_f },
820   { SCIM_KEY_z,                   SCIM_KEY_semicolon },
821 };
822 
823 static __Uint16Pair __dvorak_to_us_caps [] = {
824   { SCIM_KEY_apostrophe,          SCIM_KEY_Q },
825   { SCIM_KEY_comma,               SCIM_KEY_W },
826   { SCIM_KEY_minus,               SCIM_KEY_apostrophe },
827   { SCIM_KEY_period,              SCIM_KEY_E },
828   { SCIM_KEY_slash,               SCIM_KEY_bracketleft },
829   { SCIM_KEY_semicolon,           SCIM_KEY_Z },
830   { SCIM_KEY_equal,               SCIM_KEY_bracketright },
831   { SCIM_KEY_B,                   SCIM_KEY_N },
832   { SCIM_KEY_C,                   SCIM_KEY_I },
833   { SCIM_KEY_D,                   SCIM_KEY_H },
834   { SCIM_KEY_E,                   SCIM_KEY_D },
835   { SCIM_KEY_F,                   SCIM_KEY_Y },
836   { SCIM_KEY_G,                   SCIM_KEY_U },
837   { SCIM_KEY_H,                   SCIM_KEY_J },
838   { SCIM_KEY_I,                   SCIM_KEY_G },
839   { SCIM_KEY_J,                   SCIM_KEY_C },
840   { SCIM_KEY_K,                   SCIM_KEY_V },
841   { SCIM_KEY_L,                   SCIM_KEY_P },
842   { SCIM_KEY_N,                   SCIM_KEY_L },
843   { SCIM_KEY_O,                   SCIM_KEY_S },
844   { SCIM_KEY_P,                   SCIM_KEY_R },
845   { SCIM_KEY_Q,                   SCIM_KEY_X },
846   { SCIM_KEY_R,                   SCIM_KEY_O },
847   { SCIM_KEY_S,                   SCIM_KEY_semicolon },
848   { SCIM_KEY_T,                   SCIM_KEY_K },
849   { SCIM_KEY_U,                   SCIM_KEY_F },
850   { SCIM_KEY_V,                   SCIM_KEY_period },
851   { SCIM_KEY_W,                   SCIM_KEY_comma },
852   { SCIM_KEY_X,                   SCIM_KEY_B },
853   { SCIM_KEY_Y,                   SCIM_KEY_T },
854   { SCIM_KEY_Z,                   SCIM_KEY_slash },
855   { SCIM_KEY_bracketleft,         SCIM_KEY_minus },
856   { SCIM_KEY_bracketright,        SCIM_KEY_equal },
857 };
858 
859 static __Uint16Pair __us_to_dvorak_caps [] = {
860   { SCIM_KEY_apostrophe,          SCIM_KEY_minus },
861   { SCIM_KEY_comma,               SCIM_KEY_W },
862   { SCIM_KEY_minus,               SCIM_KEY_bracketleft },
863   { SCIM_KEY_period,              SCIM_KEY_V },
864   { SCIM_KEY_slash,               SCIM_KEY_Z },
865   { SCIM_KEY_semicolon,           SCIM_KEY_S },
866   { SCIM_KEY_equal,               SCIM_KEY_bracketright },
867   { SCIM_KEY_B,                   SCIM_KEY_X },
868   { SCIM_KEY_C,                   SCIM_KEY_J },
869   { SCIM_KEY_D,                   SCIM_KEY_E },
870   { SCIM_KEY_E,                   SCIM_KEY_period },
871   { SCIM_KEY_F,                   SCIM_KEY_U },
872   { SCIM_KEY_G,                   SCIM_KEY_I },
873   { SCIM_KEY_H,                   SCIM_KEY_D },
874   { SCIM_KEY_I,                   SCIM_KEY_C },
875   { SCIM_KEY_J,                   SCIM_KEY_H },
876   { SCIM_KEY_K,                   SCIM_KEY_T },
877   { SCIM_KEY_L,                   SCIM_KEY_N },
878   { SCIM_KEY_N,                   SCIM_KEY_B },
879   { SCIM_KEY_O,                   SCIM_KEY_R },
880   { SCIM_KEY_P,                   SCIM_KEY_L },
881   { SCIM_KEY_Q,                   SCIM_KEY_apostrophe },
882   { SCIM_KEY_R,                   SCIM_KEY_P },
883   { SCIM_KEY_S,                   SCIM_KEY_O },
884   { SCIM_KEY_T,                   SCIM_KEY_Y },
885   { SCIM_KEY_U,                   SCIM_KEY_G },
886   { SCIM_KEY_V,                   SCIM_KEY_K },
887   { SCIM_KEY_W,                   SCIM_KEY_comma },
888   { SCIM_KEY_X,                   SCIM_KEY_Q },
889   { SCIM_KEY_Y,                   SCIM_KEY_F },
890   { SCIM_KEY_Z,                   SCIM_KEY_semicolon },
891   { SCIM_KEY_bracketleft,         SCIM_KEY_slash },
892   { SCIM_KEY_bracketright,        SCIM_KEY_equal },
893 };
894 
895 static __Uint16Pair __dvorak_to_us_shift [] = {
896   { SCIM_KEY_quotedbl,            SCIM_KEY_Q },
897   { SCIM_KEY_plus,                SCIM_KEY_braceright },
898   { SCIM_KEY_colon,               SCIM_KEY_Z },
899   { SCIM_KEY_less,                SCIM_KEY_W },
900   { SCIM_KEY_greater,             SCIM_KEY_E },
901   { SCIM_KEY_question,            SCIM_KEY_braceleft },
902   { SCIM_KEY_B,                   SCIM_KEY_N },
903   { SCIM_KEY_C,                   SCIM_KEY_I },
904   { SCIM_KEY_D,                   SCIM_KEY_H },
905   { SCIM_KEY_E,                   SCIM_KEY_D },
906   { SCIM_KEY_F,                   SCIM_KEY_Y },
907   { SCIM_KEY_G,                   SCIM_KEY_U },
908   { SCIM_KEY_H,                   SCIM_KEY_J },
909   { SCIM_KEY_I,                   SCIM_KEY_G },
910   { SCIM_KEY_J,                   SCIM_KEY_C },
911   { SCIM_KEY_K,                   SCIM_KEY_V },
912   { SCIM_KEY_L,                   SCIM_KEY_P },
913   { SCIM_KEY_N,                   SCIM_KEY_L },
914   { SCIM_KEY_O,                   SCIM_KEY_S },
915   { SCIM_KEY_P,                   SCIM_KEY_R },
916   { SCIM_KEY_Q,                   SCIM_KEY_X },
917   { SCIM_KEY_R,                   SCIM_KEY_O },
918   { SCIM_KEY_S,                   SCIM_KEY_colon },
919   { SCIM_KEY_T,                   SCIM_KEY_K },
920   { SCIM_KEY_U,                   SCIM_KEY_F },
921   { SCIM_KEY_V,                   SCIM_KEY_greater },
922   { SCIM_KEY_W,                   SCIM_KEY_less },
923   { SCIM_KEY_X,                   SCIM_KEY_B },
924   { SCIM_KEY_Y,                   SCIM_KEY_T },
925   { SCIM_KEY_Z,                   SCIM_KEY_question },
926   { SCIM_KEY_underscore,          SCIM_KEY_quotedbl },
927   { SCIM_KEY_braceleft,           SCIM_KEY_underscore },
928   { SCIM_KEY_braceright,          SCIM_KEY_plus },
929 };
930 
931 static __Uint16Pair __us_to_dvorak_shift [] = {
932   { SCIM_KEY_quotedbl,            SCIM_KEY_underscore },
933   { SCIM_KEY_plus,                SCIM_KEY_braceright },
934   { SCIM_KEY_colon,               SCIM_KEY_S },
935   { SCIM_KEY_less,                SCIM_KEY_W },
936   { SCIM_KEY_greater,             SCIM_KEY_V },
937   { SCIM_KEY_question,            SCIM_KEY_Z },
938   { SCIM_KEY_B,                   SCIM_KEY_X },
939   { SCIM_KEY_C,                   SCIM_KEY_J },
940   { SCIM_KEY_D,                   SCIM_KEY_E },
941   { SCIM_KEY_E,                   SCIM_KEY_greater },
942   { SCIM_KEY_F,                   SCIM_KEY_U },
943   { SCIM_KEY_G,                   SCIM_KEY_I },
944   { SCIM_KEY_H,                   SCIM_KEY_D },
945   { SCIM_KEY_I,                   SCIM_KEY_C },
946   { SCIM_KEY_J,                   SCIM_KEY_H },
947   { SCIM_KEY_K,                   SCIM_KEY_T },
948   { SCIM_KEY_L,                   SCIM_KEY_N },
949   { SCIM_KEY_N,                   SCIM_KEY_B },
950   { SCIM_KEY_O,                   SCIM_KEY_R },
951   { SCIM_KEY_P,                   SCIM_KEY_L },
952   { SCIM_KEY_Q,                   SCIM_KEY_quotedbl },
953   { SCIM_KEY_R,                   SCIM_KEY_P },
954   { SCIM_KEY_S,                   SCIM_KEY_O },
955   { SCIM_KEY_T,                   SCIM_KEY_Y },
956   { SCIM_KEY_U,                   SCIM_KEY_G },
957   { SCIM_KEY_V,                   SCIM_KEY_K },
958   { SCIM_KEY_W,                   SCIM_KEY_less },
959   { SCIM_KEY_X,                   SCIM_KEY_Q },
960   { SCIM_KEY_Y,                   SCIM_KEY_F },
961   { SCIM_KEY_Z,                   SCIM_KEY_colon },
962   { SCIM_KEY_underscore,          SCIM_KEY_braceleft },
963   { SCIM_KEY_braceleft,           SCIM_KEY_question },
964   { SCIM_KEY_braceright,          SCIM_KEY_plus },
965 };
966 
967 static __Uint16Pair __dvorak_to_us_caps_shift [] = {
968   { SCIM_KEY_quotedbl,            SCIM_KEY_q },
969   { SCIM_KEY_plus,                SCIM_KEY_braceright },
970   { SCIM_KEY_colon,               SCIM_KEY_z },
971   { SCIM_KEY_less,                SCIM_KEY_w },
972   { SCIM_KEY_greater,             SCIM_KEY_e },
973   { SCIM_KEY_question,            SCIM_KEY_braceleft },
974   { SCIM_KEY_underscore,          SCIM_KEY_quotedbl },
975   { SCIM_KEY_b,                   SCIM_KEY_n },
976   { SCIM_KEY_c,                   SCIM_KEY_i },
977   { SCIM_KEY_d,                   SCIM_KEY_h },
978   { SCIM_KEY_e,                   SCIM_KEY_d },
979   { SCIM_KEY_f,                   SCIM_KEY_y },
980   { SCIM_KEY_g,                   SCIM_KEY_u },
981   { SCIM_KEY_h,                   SCIM_KEY_j },
982   { SCIM_KEY_i,                   SCIM_KEY_g },
983   { SCIM_KEY_j,                   SCIM_KEY_c },
984   { SCIM_KEY_k,                   SCIM_KEY_v },
985   { SCIM_KEY_l,                   SCIM_KEY_p },
986   { SCIM_KEY_n,                   SCIM_KEY_l },
987   { SCIM_KEY_o,                   SCIM_KEY_s },
988   { SCIM_KEY_p,                   SCIM_KEY_r },
989   { SCIM_KEY_q,                   SCIM_KEY_x },
990   { SCIM_KEY_r,                   SCIM_KEY_o },
991   { SCIM_KEY_s,                   SCIM_KEY_colon },
992   { SCIM_KEY_t,                   SCIM_KEY_k },
993   { SCIM_KEY_u,                   SCIM_KEY_f },
994   { SCIM_KEY_v,                   SCIM_KEY_greater },
995   { SCIM_KEY_w,                   SCIM_KEY_less },
996   { SCIM_KEY_x,                   SCIM_KEY_b },
997   { SCIM_KEY_y,                   SCIM_KEY_t },
998   { SCIM_KEY_z,                   SCIM_KEY_question },
999   { SCIM_KEY_braceleft,           SCIM_KEY_underscore },
1000   { SCIM_KEY_braceright,          SCIM_KEY_plus },
1001 };
1002 
1003 static __Uint16Pair __us_to_dvorak_caps_shift [] = {
1004   { SCIM_KEY_quotedbl,            SCIM_KEY_underscore },
1005   { SCIM_KEY_plus,                SCIM_KEY_braceright },
1006   { SCIM_KEY_colon,               SCIM_KEY_s },
1007   { SCIM_KEY_less,                SCIM_KEY_w },
1008   { SCIM_KEY_greater,             SCIM_KEY_v },
1009   { SCIM_KEY_question,            SCIM_KEY_z },
1010   { SCIM_KEY_underscore,          SCIM_KEY_braceleft },
1011   { SCIM_KEY_b,                   SCIM_KEY_x },
1012   { SCIM_KEY_c,                   SCIM_KEY_j },
1013   { SCIM_KEY_d,                   SCIM_KEY_e },
1014   { SCIM_KEY_e,                   SCIM_KEY_greater },
1015   { SCIM_KEY_f,                   SCIM_KEY_u },
1016   { SCIM_KEY_g,                   SCIM_KEY_i },
1017   { SCIM_KEY_h,                   SCIM_KEY_d },
1018   { SCIM_KEY_i,                   SCIM_KEY_c },
1019   { SCIM_KEY_j,                   SCIM_KEY_h },
1020   { SCIM_KEY_k,                   SCIM_KEY_t },
1021   { SCIM_KEY_l,                   SCIM_KEY_n },
1022   { SCIM_KEY_n,                   SCIM_KEY_b },
1023   { SCIM_KEY_o,                   SCIM_KEY_r },
1024   { SCIM_KEY_p,                   SCIM_KEY_l },
1025   { SCIM_KEY_q,                   SCIM_KEY_quotedbl },
1026   { SCIM_KEY_r,                   SCIM_KEY_p },
1027   { SCIM_KEY_s,                   SCIM_KEY_o },
1028   { SCIM_KEY_t,                   SCIM_KEY_y },
1029   { SCIM_KEY_u,                   SCIM_KEY_g },
1030   { SCIM_KEY_v,                   SCIM_KEY_k },
1031   { SCIM_KEY_w,                   SCIM_KEY_less },
1032   { SCIM_KEY_x,                   SCIM_KEY_q },
1033   { SCIM_KEY_y,                   SCIM_KEY_f },
1034   { SCIM_KEY_z,                   SCIM_KEY_colon },
1035   { SCIM_KEY_braceleft,           SCIM_KEY_question },
1036   { SCIM_KEY_braceright,          SCIM_KEY_plus },
1037 };
1038 
1039 static __Uint16Pair __estonian_to_us_normal [] = {
1040   { SCIM_KEY_apostrophe,          SCIM_KEY_backslash },
1041   { SCIM_KEY_plus,                SCIM_KEY_minus },
1042   { SCIM_KEY_minus,               SCIM_KEY_slash },
1043   { SCIM_KEY_adiaeresis,          SCIM_KEY_apostrophe },
1044   { SCIM_KEY_otilde,              SCIM_KEY_bracketright },
1045   { SCIM_KEY_odiaeresis,          SCIM_KEY_semicolon },
1046   { SCIM_KEY_udiaeresis,          SCIM_KEY_bracketleft },
1047   { SCIM_KEY_dead_acute,          SCIM_KEY_equal },
1048   { SCIM_KEY_dead_caron,          SCIM_KEY_grave },
1049 };
1050 
1051 static __Uint16Pair __us_to_estonian_normal [] = {
1052   { SCIM_KEY_apostrophe,          SCIM_KEY_adiaeresis },
1053   { SCIM_KEY_minus,               SCIM_KEY_plus },
1054   { SCIM_KEY_slash,               SCIM_KEY_minus },
1055   { SCIM_KEY_semicolon,           SCIM_KEY_odiaeresis },
1056   { SCIM_KEY_equal,               SCIM_KEY_dead_acute },
1057   { SCIM_KEY_bracketleft,         SCIM_KEY_udiaeresis },
1058   { SCIM_KEY_backslash,           SCIM_KEY_apostrophe },
1059   { SCIM_KEY_bracketright,        SCIM_KEY_otilde },
1060   { SCIM_KEY_grave,               SCIM_KEY_dead_caron },
1061 };
1062 
1063 static __Uint16Pair __estonian_to_us_caps [] = {
1064   { SCIM_KEY_apostrophe,          SCIM_KEY_backslash },
1065   { SCIM_KEY_plus,                SCIM_KEY_minus },
1066   { SCIM_KEY_minus,               SCIM_KEY_slash },
1067   { SCIM_KEY_Adiaeresis,          SCIM_KEY_apostrophe },
1068   { SCIM_KEY_Otilde,              SCIM_KEY_bracketright },
1069   { SCIM_KEY_Odiaeresis,          SCIM_KEY_semicolon },
1070   { SCIM_KEY_Udiaeresis,          SCIM_KEY_bracketleft },
1071   { SCIM_KEY_dead_acute,          SCIM_KEY_equal },
1072   { SCIM_KEY_dead_caron,          SCIM_KEY_grave },
1073 };
1074 
1075 static __Uint16Pair __us_to_estonian_caps [] = {
1076   { SCIM_KEY_apostrophe,          SCIM_KEY_Adiaeresis },
1077   { SCIM_KEY_minus,               SCIM_KEY_plus },
1078   { SCIM_KEY_slash,               SCIM_KEY_minus },
1079   { SCIM_KEY_semicolon,           SCIM_KEY_Odiaeresis },
1080   { SCIM_KEY_equal,               SCIM_KEY_dead_acute },
1081   { SCIM_KEY_bracketleft,         SCIM_KEY_Udiaeresis },
1082   { SCIM_KEY_backslash,           SCIM_KEY_apostrophe },
1083   { SCIM_KEY_bracketright,        SCIM_KEY_Otilde },
1084   { SCIM_KEY_grave,               SCIM_KEY_dead_caron },
1085 };
1086 
1087 static __Uint16Pair __estonian_to_us_shift [] = {
1088   { SCIM_KEY_quotedbl,            SCIM_KEY_at },
1089   { SCIM_KEY_ampersand,           SCIM_KEY_asciicircum },
1090   { SCIM_KEY_parenleft,           SCIM_KEY_asterisk },
1091   { SCIM_KEY_parenright,          SCIM_KEY_parenleft },
1092   { SCIM_KEY_asterisk,            SCIM_KEY_bar },
1093   { SCIM_KEY_slash,               SCIM_KEY_ampersand },
1094   { SCIM_KEY_colon,               SCIM_KEY_greater },
1095   { SCIM_KEY_semicolon,           SCIM_KEY_less },
1096   { SCIM_KEY_equal,               SCIM_KEY_parenright },
1097   { SCIM_KEY_question,            SCIM_KEY_underscore },
1098   { SCIM_KEY_underscore,          SCIM_KEY_question },
1099   { SCIM_KEY_currency,            SCIM_KEY_dollar },
1100   { SCIM_KEY_Adiaeresis,          SCIM_KEY_quotedbl },
1101   { SCIM_KEY_Otilde,              SCIM_KEY_braceright },
1102   { SCIM_KEY_Odiaeresis,          SCIM_KEY_colon },
1103   { SCIM_KEY_Udiaeresis,          SCIM_KEY_braceleft },
1104   { SCIM_KEY_dead_grave,          SCIM_KEY_plus },
1105   { SCIM_KEY_dead_tilde,          SCIM_KEY_asciitilde },
1106 };
1107 
1108 static __Uint16Pair __us_to_estonian_shift [] = {
1109   { SCIM_KEY_quotedbl,            SCIM_KEY_Adiaeresis },
1110   { SCIM_KEY_dollar,              SCIM_KEY_currency },
1111   { SCIM_KEY_ampersand,           SCIM_KEY_slash },
1112   { SCIM_KEY_parenleft,           SCIM_KEY_parenright },
1113   { SCIM_KEY_parenright,          SCIM_KEY_equal },
1114   { SCIM_KEY_asterisk,            SCIM_KEY_parenleft },
1115   { SCIM_KEY_plus,                SCIM_KEY_dead_grave },
1116   { SCIM_KEY_colon,               SCIM_KEY_Odiaeresis },
1117   { SCIM_KEY_less,                SCIM_KEY_semicolon },
1118   { SCIM_KEY_greater,             SCIM_KEY_colon },
1119   { SCIM_KEY_question,            SCIM_KEY_underscore },
1120   { SCIM_KEY_at,                  SCIM_KEY_quotedbl },
1121   { SCIM_KEY_asciicircum,         SCIM_KEY_ampersand },
1122   { SCIM_KEY_underscore,          SCIM_KEY_question },
1123   { SCIM_KEY_braceleft,           SCIM_KEY_Udiaeresis },
1124   { SCIM_KEY_bar,                 SCIM_KEY_asterisk },
1125   { SCIM_KEY_braceright,          SCIM_KEY_Otilde },
1126   { SCIM_KEY_asciitilde,          SCIM_KEY_dead_tilde },
1127 };
1128 
1129 static __Uint16Pair __estonian_to_us_caps_shift [] = {
1130   { SCIM_KEY_quotedbl,            SCIM_KEY_at },
1131   { SCIM_KEY_ampersand,           SCIM_KEY_asciicircum },
1132   { SCIM_KEY_parenleft,           SCIM_KEY_asterisk },
1133   { SCIM_KEY_parenright,          SCIM_KEY_parenleft },
1134   { SCIM_KEY_asterisk,            SCIM_KEY_bar },
1135   { SCIM_KEY_slash,               SCIM_KEY_ampersand },
1136   { SCIM_KEY_colon,               SCIM_KEY_greater },
1137   { SCIM_KEY_semicolon,           SCIM_KEY_less },
1138   { SCIM_KEY_equal,               SCIM_KEY_parenright },
1139   { SCIM_KEY_question,            SCIM_KEY_underscore },
1140   { SCIM_KEY_underscore,          SCIM_KEY_question },
1141   { SCIM_KEY_currency,            SCIM_KEY_dollar },
1142   { SCIM_KEY_adiaeresis,          SCIM_KEY_quotedbl },
1143   { SCIM_KEY_otilde,              SCIM_KEY_braceright },
1144   { SCIM_KEY_odiaeresis,          SCIM_KEY_colon },
1145   { SCIM_KEY_udiaeresis,          SCIM_KEY_braceleft },
1146   { SCIM_KEY_dead_grave,          SCIM_KEY_plus },
1147   { SCIM_KEY_dead_tilde,          SCIM_KEY_asciitilde },
1148 };
1149 
1150 static __Uint16Pair __us_to_estonian_caps_shift [] = {
1151   { SCIM_KEY_quotedbl,            SCIM_KEY_adiaeresis },
1152   { SCIM_KEY_dollar,              SCIM_KEY_currency },
1153   { SCIM_KEY_ampersand,           SCIM_KEY_slash },
1154   { SCIM_KEY_parenleft,           SCIM_KEY_parenright },
1155   { SCIM_KEY_parenright,          SCIM_KEY_equal },
1156   { SCIM_KEY_asterisk,            SCIM_KEY_parenleft },
1157   { SCIM_KEY_plus,                SCIM_KEY_dead_grave },
1158   { SCIM_KEY_colon,               SCIM_KEY_odiaeresis },
1159   { SCIM_KEY_less,                SCIM_KEY_semicolon },
1160   { SCIM_KEY_greater,             SCIM_KEY_colon },
1161   { SCIM_KEY_question,            SCIM_KEY_underscore },
1162   { SCIM_KEY_at,                  SCIM_KEY_quotedbl },
1163   { SCIM_KEY_asciicircum,         SCIM_KEY_ampersand },
1164   { SCIM_KEY_underscore,          SCIM_KEY_question },
1165   { SCIM_KEY_braceleft,           SCIM_KEY_udiaeresis },
1166   { SCIM_KEY_bar,                 SCIM_KEY_asterisk },
1167   { SCIM_KEY_braceright,          SCIM_KEY_otilde },
1168   { SCIM_KEY_asciitilde,          SCIM_KEY_dead_tilde },
1169 };
1170 
1171 static __Uint16Pair __finnish_to_us_normal [] = {
1172   { SCIM_KEY_apostrophe,          SCIM_KEY_backslash },
1173   { SCIM_KEY_plus,                SCIM_KEY_minus },
1174   { SCIM_KEY_minus,               SCIM_KEY_slash },
1175   { SCIM_KEY_section,             SCIM_KEY_grave },
1176   { SCIM_KEY_adiaeresis,          SCIM_KEY_apostrophe },
1177   { SCIM_KEY_aring,               SCIM_KEY_bracketleft },
1178   { SCIM_KEY_odiaeresis,          SCIM_KEY_semicolon },
1179   { SCIM_KEY_dead_acute,          SCIM_KEY_equal },
1180   { SCIM_KEY_dead_diaeresis,      SCIM_KEY_bracketright },
1181 };
1182 
1183 static __Uint16Pair __us_to_finnish_normal [] = {
1184   { SCIM_KEY_apostrophe,          SCIM_KEY_adiaeresis },
1185   { SCIM_KEY_minus,               SCIM_KEY_plus },
1186   { SCIM_KEY_slash,               SCIM_KEY_minus },
1187   { SCIM_KEY_semicolon,           SCIM_KEY_odiaeresis },
1188   { SCIM_KEY_equal,               SCIM_KEY_dead_acute },
1189   { SCIM_KEY_bracketleft,         SCIM_KEY_aring },
1190   { SCIM_KEY_backslash,           SCIM_KEY_apostrophe },
1191   { SCIM_KEY_bracketright,        SCIM_KEY_dead_diaeresis },
1192   { SCIM_KEY_grave,               SCIM_KEY_section },
1193 };
1194 
1195 static __Uint16Pair __finnish_to_us_caps [] = {
1196   { SCIM_KEY_apostrophe,          SCIM_KEY_backslash },
1197   { SCIM_KEY_plus,                SCIM_KEY_minus },
1198   { SCIM_KEY_minus,               SCIM_KEY_slash },
1199   { SCIM_KEY_section,             SCIM_KEY_grave },
1200   { SCIM_KEY_Adiaeresis,          SCIM_KEY_apostrophe },
1201   { SCIM_KEY_Aring,               SCIM_KEY_bracketleft },
1202   { SCIM_KEY_Odiaeresis,          SCIM_KEY_semicolon },
1203   { SCIM_KEY_dead_acute,          SCIM_KEY_equal },
1204   { SCIM_KEY_dead_diaeresis,      SCIM_KEY_bracketright },
1205 };
1206 
1207 static __Uint16Pair __us_to_finnish_caps [] = {
1208   { SCIM_KEY_apostrophe,          SCIM_KEY_Adiaeresis },
1209   { SCIM_KEY_minus,               SCIM_KEY_plus },
1210   { SCIM_KEY_slash,               SCIM_KEY_minus },
1211   { SCIM_KEY_semicolon,           SCIM_KEY_Odiaeresis },
1212   { SCIM_KEY_equal,               SCIM_KEY_dead_acute },
1213   { SCIM_KEY_bracketleft,         SCIM_KEY_Aring },
1214   { SCIM_KEY_backslash,           SCIM_KEY_apostrophe },
1215   { SCIM_KEY_bracketright,        SCIM_KEY_dead_diaeresis },
1216   { SCIM_KEY_grave,               SCIM_KEY_section },
1217 };
1218 
1219 static __Uint16Pair __finnish_to_us_shift [] = {
1220   { SCIM_KEY_quotedbl,            SCIM_KEY_at },
1221   { SCIM_KEY_ampersand,           SCIM_KEY_asciicircum },
1222   { SCIM_KEY_parenleft,           SCIM_KEY_asterisk },
1223   { SCIM_KEY_parenright,          SCIM_KEY_parenleft },
1224   { SCIM_KEY_asterisk,            SCIM_KEY_bar },
1225   { SCIM_KEY_slash,               SCIM_KEY_ampersand },
1226   { SCIM_KEY_colon,               SCIM_KEY_greater },
1227   { SCIM_KEY_semicolon,           SCIM_KEY_less },
1228   { SCIM_KEY_equal,               SCIM_KEY_parenright },
1229   { SCIM_KEY_question,            SCIM_KEY_underscore },
1230   { SCIM_KEY_underscore,          SCIM_KEY_question },
1231   { SCIM_KEY_currency,            SCIM_KEY_dollar },
1232   { SCIM_KEY_onehalf,             SCIM_KEY_asciitilde },
1233   { SCIM_KEY_Adiaeresis,          SCIM_KEY_quotedbl },
1234   { SCIM_KEY_Aring,               SCIM_KEY_braceleft },
1235   { SCIM_KEY_Odiaeresis,          SCIM_KEY_colon },
1236   { SCIM_KEY_dead_grave,          SCIM_KEY_plus },
1237   { SCIM_KEY_dead_circumflex,     SCIM_KEY_braceright },
1238 };
1239 
1240 static __Uint16Pair __us_to_finnish_shift [] = {
1241   { SCIM_KEY_quotedbl,            SCIM_KEY_Adiaeresis },
1242   { SCIM_KEY_dollar,              SCIM_KEY_currency },
1243   { SCIM_KEY_ampersand,           SCIM_KEY_slash },
1244   { SCIM_KEY_parenleft,           SCIM_KEY_parenright },
1245   { SCIM_KEY_parenright,          SCIM_KEY_equal },
1246   { SCIM_KEY_asterisk,            SCIM_KEY_parenleft },
1247   { SCIM_KEY_plus,                SCIM_KEY_dead_grave },
1248   { SCIM_KEY_colon,               SCIM_KEY_Odiaeresis },
1249   { SCIM_KEY_less,                SCIM_KEY_semicolon },
1250   { SCIM_KEY_greater,             SCIM_KEY_colon },
1251   { SCIM_KEY_question,            SCIM_KEY_underscore },
1252   { SCIM_KEY_at,                  SCIM_KEY_quotedbl },
1253   { SCIM_KEY_asciicircum,         SCIM_KEY_ampersand },
1254   { SCIM_KEY_underscore,          SCIM_KEY_question },
1255   { SCIM_KEY_braceleft,           SCIM_KEY_Aring },
1256   { SCIM_KEY_bar,                 SCIM_KEY_asterisk },
1257   { SCIM_KEY_braceright,          SCIM_KEY_dead_circumflex },
1258   { SCIM_KEY_asciitilde,          SCIM_KEY_onehalf },
1259 };
1260 
1261 static __Uint16Pair __finnish_to_us_caps_shift [] = {
1262   { SCIM_KEY_quotedbl,            SCIM_KEY_at },
1263   { SCIM_KEY_ampersand,           SCIM_KEY_asciicircum },
1264   { SCIM_KEY_parenleft,           SCIM_KEY_asterisk },
1265   { SCIM_KEY_parenright,          SCIM_KEY_parenleft },
1266   { SCIM_KEY_asterisk,            SCIM_KEY_bar },
1267   { SCIM_KEY_slash,               SCIM_KEY_ampersand },
1268   { SCIM_KEY_colon,               SCIM_KEY_greater },
1269   { SCIM_KEY_semicolon,           SCIM_KEY_less },
1270   { SCIM_KEY_equal,               SCIM_KEY_parenright },
1271   { SCIM_KEY_question,            SCIM_KEY_underscore },
1272   { SCIM_KEY_underscore,          SCIM_KEY_question },
1273   { SCIM_KEY_currency,            SCIM_KEY_dollar },
1274   { SCIM_KEY_onehalf,             SCIM_KEY_asciitilde },
1275   { SCIM_KEY_adiaeresis,          SCIM_KEY_quotedbl },
1276   { SCIM_KEY_aring,               SCIM_KEY_braceleft },
1277   { SCIM_KEY_odiaeresis,          SCIM_KEY_colon },
1278   { SCIM_KEY_dead_grave,          SCIM_KEY_plus },
1279   { SCIM_KEY_dead_circumflex,     SCIM_KEY_braceright },
1280 };
1281 
1282 static __Uint16Pair __us_to_finnish_caps_shift [] = {
1283   { SCIM_KEY_quotedbl,            SCIM_KEY_adiaeresis },
1284   { SCIM_KEY_dollar,              SCIM_KEY_currency },
1285   { SCIM_KEY_ampersand,           SCIM_KEY_slash },
1286   { SCIM_KEY_parenleft,           SCIM_KEY_parenright },
1287   { SCIM_KEY_parenright,          SCIM_KEY_equal },
1288   { SCIM_KEY_asterisk,            SCIM_KEY_parenleft },
1289   { SCIM_KEY_plus,                SCIM_KEY_dead_grave },
1290   { SCIM_KEY_colon,               SCIM_KEY_odiaeresis },
1291   { SCIM_KEY_less,                SCIM_KEY_semicolon },
1292   { SCIM_KEY_greater,             SCIM_KEY_colon },
1293   { SCIM_KEY_question,            SCIM_KEY_underscore },
1294   { SCIM_KEY_at,                  SCIM_KEY_quotedbl },
1295   { SCIM_KEY_asciicircum,         SCIM_KEY_ampersand },
1296   { SCIM_KEY_underscore,          SCIM_KEY_question },
1297   { SCIM_KEY_braceleft,           SCIM_KEY_aring },
1298   { SCIM_KEY_bar,                 SCIM_KEY_asterisk },
1299   { SCIM_KEY_braceright,          SCIM_KEY_dead_circumflex },
1300   { SCIM_KEY_asciitilde,          SCIM_KEY_onehalf },
1301 };
1302 
1303 static __Uint16Pair __french_to_us_normal [] = {
1304   { SCIM_KEY_exclam,              SCIM_KEY_slash },
1305   { SCIM_KEY_quotedbl,            SCIM_KEY_3 },
1306   { SCIM_KEY_dollar,              SCIM_KEY_bracketright },
1307   { SCIM_KEY_ampersand,           SCIM_KEY_1 },
1308   { SCIM_KEY_apostrophe,          SCIM_KEY_4 },
1309   { SCIM_KEY_parenleft,           SCIM_KEY_5 },
1310   { SCIM_KEY_parenright,          SCIM_KEY_minus },
1311   { SCIM_KEY_asterisk,            SCIM_KEY_backslash },
1312   { SCIM_KEY_comma,               SCIM_KEY_m },
1313   { SCIM_KEY_minus,               SCIM_KEY_6 },
1314   { SCIM_KEY_colon,               SCIM_KEY_period },
1315   { SCIM_KEY_semicolon,           SCIM_KEY_comma },
1316   { SCIM_KEY_underscore,          SCIM_KEY_8 },
1317   { SCIM_KEY_a,                   SCIM_KEY_q },
1318   { SCIM_KEY_m,                   SCIM_KEY_semicolon },
1319   { SCIM_KEY_q,                   SCIM_KEY_a },
1320   { SCIM_KEY_w,                   SCIM_KEY_z },
1321   { SCIM_KEY_z,                   SCIM_KEY_w },
1322   { SCIM_KEY_twosuperior,         SCIM_KEY_grave },
1323   { SCIM_KEY_agrave,              SCIM_KEY_0 },
1324   { SCIM_KEY_ccedilla,            SCIM_KEY_9 },
1325   { SCIM_KEY_egrave,              SCIM_KEY_7 },
1326   { SCIM_KEY_eacute,              SCIM_KEY_2 },
1327   { SCIM_KEY_ugrave,              SCIM_KEY_apostrophe },
1328   { SCIM_KEY_dead_circumflex,     SCIM_KEY_bracketleft },
1329 };
1330 
1331 static __Uint16Pair __us_to_french_normal [] = {
1332   { SCIM_KEY_apostrophe,          SCIM_KEY_ugrave },
1333   { SCIM_KEY_comma,               SCIM_KEY_semicolon },
1334   { SCIM_KEY_minus,               SCIM_KEY_parenright },
1335   { SCIM_KEY_period,              SCIM_KEY_colon },
1336   { SCIM_KEY_slash,               SCIM_KEY_exclam },
1337   { SCIM_KEY_0,                   SCIM_KEY_agrave },
1338   { SCIM_KEY_1,                   SCIM_KEY_ampersand },
1339   { SCIM_KEY_2,                   SCIM_KEY_eacute },
1340   { SCIM_KEY_3,                   SCIM_KEY_quotedbl },
1341   { SCIM_KEY_4,                   SCIM_KEY_apostrophe },
1342   { SCIM_KEY_5,                   SCIM_KEY_parenleft },
1343   { SCIM_KEY_6,                   SCIM_KEY_minus },
1344   { SCIM_KEY_7,                   SCIM_KEY_egrave },
1345   { SCIM_KEY_8,                   SCIM_KEY_underscore },
1346   { SCIM_KEY_9,                   SCIM_KEY_ccedilla },
1347   { SCIM_KEY_semicolon,           SCIM_KEY_m },
1348   { SCIM_KEY_bracketleft,         SCIM_KEY_dead_circumflex },
1349   { SCIM_KEY_backslash,           SCIM_KEY_asterisk },
1350   { SCIM_KEY_bracketright,        SCIM_KEY_dollar },
1351   { SCIM_KEY_grave,               SCIM_KEY_twosuperior },
1352   { SCIM_KEY_a,                   SCIM_KEY_q },
1353   { SCIM_KEY_m,                   SCIM_KEY_comma },
1354   { SCIM_KEY_q,                   SCIM_KEY_a },
1355   { SCIM_KEY_w,                   SCIM_KEY_z },
1356   { SCIM_KEY_z,                   SCIM_KEY_w },
1357 };
1358 
1359 static __Uint16Pair __french_to_us_caps [] = {
1360   { SCIM_KEY_exclam,              SCIM_KEY_slash },
1361   { SCIM_KEY_quotedbl,            SCIM_KEY_3 },
1362   { SCIM_KEY_dollar,              SCIM_KEY_bracketright },
1363   { SCIM_KEY_ampersand,           SCIM_KEY_1 },
1364   { SCIM_KEY_apostrophe,          SCIM_KEY_4 },
1365   { SCIM_KEY_parenleft,           SCIM_KEY_5 },
1366   { SCIM_KEY_parenright,          SCIM_KEY_minus },
1367   { SCIM_KEY_asterisk,            SCIM_KEY_backslash },
1368   { SCIM_KEY_comma,               SCIM_KEY_M },
1369   { SCIM_KEY_minus,               SCIM_KEY_6 },
1370   { SCIM_KEY_colon,               SCIM_KEY_period },
1371   { SCIM_KEY_semicolon,           SCIM_KEY_comma },
1372   { SCIM_KEY_A,                   SCIM_KEY_Q },
1373   { SCIM_KEY_M,                   SCIM_KEY_semicolon },
1374   { SCIM_KEY_Q,                   SCIM_KEY_A },
1375   { SCIM_KEY_W,                   SCIM_KEY_Z },
1376   { SCIM_KEY_Z,                   SCIM_KEY_W },
1377   { SCIM_KEY_underscore,          SCIM_KEY_8 },
1378   { SCIM_KEY_twosuperior,         SCIM_KEY_grave },
1379   { SCIM_KEY_Agrave,              SCIM_KEY_0 },
1380   { SCIM_KEY_Ccedilla,            SCIM_KEY_9 },
1381   { SCIM_KEY_Egrave,              SCIM_KEY_7 },
1382   { SCIM_KEY_Eacute,              SCIM_KEY_2 },
1383   { SCIM_KEY_Ugrave,              SCIM_KEY_apostrophe },
1384   { SCIM_KEY_dead_circumflex,     SCIM_KEY_bracketleft },
1385 };
1386 
1387 static __Uint16Pair __us_to_french_caps [] = {
1388   { SCIM_KEY_apostrophe,          SCIM_KEY_Ugrave },
1389   { SCIM_KEY_comma,               SCIM_KEY_semicolon },
1390   { SCIM_KEY_minus,               SCIM_KEY_parenright },
1391   { SCIM_KEY_period,              SCIM_KEY_colon },
1392   { SCIM_KEY_slash,               SCIM_KEY_exclam },
1393   { SCIM_KEY_0,                   SCIM_KEY_Agrave },
1394   { SCIM_KEY_1,                   SCIM_KEY_ampersand },
1395   { SCIM_KEY_2,                   SCIM_KEY_Eacute },
1396   { SCIM_KEY_3,                   SCIM_KEY_quotedbl },
1397   { SCIM_KEY_4,                   SCIM_KEY_apostrophe },
1398   { SCIM_KEY_5,                   SCIM_KEY_parenleft },
1399   { SCIM_KEY_6,                   SCIM_KEY_minus },
1400   { SCIM_KEY_7,                   SCIM_KEY_Egrave },
1401   { SCIM_KEY_8,                   SCIM_KEY_underscore },
1402   { SCIM_KEY_9,                   SCIM_KEY_Ccedilla },
1403   { SCIM_KEY_semicolon,           SCIM_KEY_M },
1404   { SCIM_KEY_A,                   SCIM_KEY_Q },
1405   { SCIM_KEY_M,                   SCIM_KEY_comma },
1406   { SCIM_KEY_Q,                   SCIM_KEY_A },
1407   { SCIM_KEY_W,                   SCIM_KEY_Z },
1408   { SCIM_KEY_Z,                   SCIM_KEY_W },
1409   { SCIM_KEY_bracketleft,         SCIM_KEY_dead_circumflex },
1410   { SCIM_KEY_backslash,           SCIM_KEY_asterisk },
1411   { SCIM_KEY_bracketright,        SCIM_KEY_dollar },
1412   { SCIM_KEY_grave,               SCIM_KEY_twosuperior },
1413 };
1414 
1415 static __Uint16Pair __french_to_us_shift [] = {
1416   { SCIM_KEY_percent,             SCIM_KEY_quotedbl },
1417   { SCIM_KEY_period,              SCIM_KEY_less },
1418   { SCIM_KEY_slash,               SCIM_KEY_greater },
1419   { SCIM_KEY_0,                   SCIM_KEY_parenright },
1420   { SCIM_KEY_1,                   SCIM_KEY_exclam },
1421   { SCIM_KEY_2,                   SCIM_KEY_at },
1422   { SCIM_KEY_3,                   SCIM_KEY_numbersign },
1423   { SCIM_KEY_4,                   SCIM_KEY_dollar },
1424   { SCIM_KEY_5,                   SCIM_KEY_percent },
1425   { SCIM_KEY_6,                   SCIM_KEY_asciicircum },
1426   { SCIM_KEY_7,                   SCIM_KEY_ampersand },
1427   { SCIM_KEY_8,                   SCIM_KEY_asterisk },
1428   { SCIM_KEY_9,                   SCIM_KEY_parenleft },
1429   { SCIM_KEY_question,            SCIM_KEY_M },
1430   { SCIM_KEY_A,                   SCIM_KEY_Q },
1431   { SCIM_KEY_M,                   SCIM_KEY_colon },
1432   { SCIM_KEY_Q,                   SCIM_KEY_A },
1433   { SCIM_KEY_W,                   SCIM_KEY_Z },
1434   { SCIM_KEY_Z,                   SCIM_KEY_W },
1435   { SCIM_KEY_sterling,            SCIM_KEY_braceright },
1436   { SCIM_KEY_section,             SCIM_KEY_question },
1437   { SCIM_KEY_degree,              SCIM_KEY_underscore },
1438   { SCIM_KEY_mu,                  SCIM_KEY_bar },
1439   { SCIM_KEY_dead_diaeresis,      SCIM_KEY_braceleft },
1440 };
1441 
1442 static __Uint16Pair __us_to_french_shift [] = {
1443   { SCIM_KEY_exclam,              SCIM_KEY_1 },
1444   { SCIM_KEY_quotedbl,            SCIM_KEY_percent },
1445   { SCIM_KEY_numbersign,          SCIM_KEY_3 },
1446   { SCIM_KEY_dollar,              SCIM_KEY_4 },
1447   { SCIM_KEY_percent,             SCIM_KEY_5 },
1448   { SCIM_KEY_ampersand,           SCIM_KEY_7 },
1449   { SCIM_KEY_parenleft,           SCIM_KEY_9 },
1450   { SCIM_KEY_parenright,          SCIM_KEY_0 },
1451   { SCIM_KEY_asterisk,            SCIM_KEY_8 },
1452   { SCIM_KEY_colon,               SCIM_KEY_M },
1453   { SCIM_KEY_less,                SCIM_KEY_period },
1454   { SCIM_KEY_greater,             SCIM_KEY_slash },
1455   { SCIM_KEY_question,            SCIM_KEY_section },
1456   { SCIM_KEY_at,                  SCIM_KEY_2 },
1457   { SCIM_KEY_A,                   SCIM_KEY_Q },
1458   { SCIM_KEY_M,                   SCIM_KEY_question },
1459   { SCIM_KEY_Q,                   SCIM_KEY_A },
1460   { SCIM_KEY_W,                   SCIM_KEY_Z },
1461   { SCIM_KEY_Z,                   SCIM_KEY_W },
1462   { SCIM_KEY_asciicircum,         SCIM_KEY_6 },
1463   { SCIM_KEY_underscore,          SCIM_KEY_degree },
1464   { SCIM_KEY_braceleft,           SCIM_KEY_dead_diaeresis },
1465   { SCIM_KEY_bar,                 SCIM_KEY_mu },
1466   { SCIM_KEY_braceright,          SCIM_KEY_sterling },
1467 };
1468 
1469 static __Uint16Pair __french_to_us_caps_shift [] = {
1470   { SCIM_KEY_percent,             SCIM_KEY_quotedbl },
1471   { SCIM_KEY_period,              SCIM_KEY_less },
1472   { SCIM_KEY_slash,               SCIM_KEY_greater },
1473   { SCIM_KEY_0,                   SCIM_KEY_parenright },
1474   { SCIM_KEY_1,                   SCIM_KEY_exclam },
1475   { SCIM_KEY_2,                   SCIM_KEY_at },
1476   { SCIM_KEY_3,                   SCIM_KEY_numbersign },
1477   { SCIM_KEY_4,                   SCIM_KEY_dollar },
1478   { SCIM_KEY_5,                   SCIM_KEY_percent },
1479   { SCIM_KEY_6,                   SCIM_KEY_asciicircum },
1480   { SCIM_KEY_7,                   SCIM_KEY_ampersand },
1481   { SCIM_KEY_8,                   SCIM_KEY_asterisk },
1482   { SCIM_KEY_9,                   SCIM_KEY_parenleft },
1483   { SCIM_KEY_question,            SCIM_KEY_m },
1484   { SCIM_KEY_a,                   SCIM_KEY_q },
1485   { SCIM_KEY_m,                   SCIM_KEY_colon },
1486   { SCIM_KEY_q,                   SCIM_KEY_a },
1487   { SCIM_KEY_w,                   SCIM_KEY_z },
1488   { SCIM_KEY_z,                   SCIM_KEY_w },
1489   { SCIM_KEY_sterling,            SCIM_KEY_braceright },
1490   { SCIM_KEY_section,             SCIM_KEY_question },
1491   { SCIM_KEY_degree,              SCIM_KEY_underscore },
1492   { SCIM_KEY_mu,                  SCIM_KEY_bar },
1493   { SCIM_KEY_dead_diaeresis,      SCIM_KEY_braceleft },
1494 };
1495 
1496 static __Uint16Pair __us_to_french_caps_shift [] = {
1497   { SCIM_KEY_exclam,              SCIM_KEY_1 },
1498   { SCIM_KEY_quotedbl,            SCIM_KEY_percent },
1499   { SCIM_KEY_numbersign,          SCIM_KEY_3 },
1500   { SCIM_KEY_dollar,              SCIM_KEY_4 },
1501   { SCIM_KEY_percent,             SCIM_KEY_5 },
1502   { SCIM_KEY_ampersand,           SCIM_KEY_7 },
1503   { SCIM_KEY_parenleft,           SCIM_KEY_9 },
1504   { SCIM_KEY_parenright,          SCIM_KEY_0 },
1505   { SCIM_KEY_asterisk,            SCIM_KEY_8 },
1506   { SCIM_KEY_colon,               SCIM_KEY_m },
1507   { SCIM_KEY_less,                SCIM_KEY_period },
1508   { SCIM_KEY_greater,             SCIM_KEY_slash },
1509   { SCIM_KEY_question,            SCIM_KEY_section },
1510   { SCIM_KEY_at,                  SCIM_KEY_2 },
1511   { SCIM_KEY_asciicircum,         SCIM_KEY_6 },
1512   { SCIM_KEY_underscore,          SCIM_KEY_degree },
1513   { SCIM_KEY_a,                   SCIM_KEY_q },
1514   { SCIM_KEY_m,                   SCIM_KEY_question },
1515   { SCIM_KEY_q,                   SCIM_KEY_a },
1516   { SCIM_KEY_w,                   SCIM_KEY_z },
1517   { SCIM_KEY_z,                   SCIM_KEY_w },
1518   { SCIM_KEY_braceleft,           SCIM_KEY_dead_diaeresis },
1519   { SCIM_KEY_bar,                 SCIM_KEY_mu },
1520   { SCIM_KEY_braceright,          SCIM_KEY_sterling },
1521 };
1522 
1523 static __Uint16Pair __french_switzerland_to_us_normal [] = {
1524   { SCIM_KEY_dollar,              SCIM_KEY_backslash },
1525   { SCIM_KEY_apostrophe,          SCIM_KEY_minus },
1526   { SCIM_KEY_minus,               SCIM_KEY_slash },
1527   { SCIM_KEY_y,                   SCIM_KEY_z },
1528   { SCIM_KEY_z,                   SCIM_KEY_y },
1529   { SCIM_KEY_section,             SCIM_KEY_grave },
1530   { SCIM_KEY_agrave,              SCIM_KEY_apostrophe },
1531   { SCIM_KEY_egrave,              SCIM_KEY_bracketleft },
1532   { SCIM_KEY_eacute,              SCIM_KEY_semicolon },
1533   { SCIM_KEY_dead_circumflex,     SCIM_KEY_equal },
1534   { SCIM_KEY_dead_diaeresis,      SCIM_KEY_bracketright },
1535 };
1536 
1537 static __Uint16Pair __us_to_french_switzerland_normal [] = {
1538   { SCIM_KEY_apostrophe,          SCIM_KEY_agrave },
1539   { SCIM_KEY_minus,               SCIM_KEY_apostrophe },
1540   { SCIM_KEY_slash,               SCIM_KEY_minus },
1541   { SCIM_KEY_semicolon,           SCIM_KEY_eacute },
1542   { SCIM_KEY_equal,               SCIM_KEY_dead_circumflex },
1543   { SCIM_KEY_bracketleft,         SCIM_KEY_egrave },
1544   { SCIM_KEY_backslash,           SCIM_KEY_dollar },
1545   { SCIM_KEY_bracketright,        SCIM_KEY_dead_diaeresis },
1546   { SCIM_KEY_grave,               SCIM_KEY_section },
1547   { SCIM_KEY_y,                   SCIM_KEY_z },
1548   { SCIM_KEY_z,                   SCIM_KEY_y },
1549 };
1550 
1551 static __Uint16Pair __french_switzerland_to_us_caps [] = {
1552   { SCIM_KEY_dollar,              SCIM_KEY_backslash },
1553   { SCIM_KEY_apostrophe,          SCIM_KEY_minus },
1554   { SCIM_KEY_minus,               SCIM_KEY_slash },
1555   { SCIM_KEY_Y,                   SCIM_KEY_Z },
1556   { SCIM_KEY_Z,                   SCIM_KEY_Y },
1557   { SCIM_KEY_section,             SCIM_KEY_grave },
1558   { SCIM_KEY_Agrave,              SCIM_KEY_apostrophe },
1559   { SCIM_KEY_Egrave,              SCIM_KEY_bracketleft },
1560   { SCIM_KEY_Eacute,              SCIM_KEY_semicolon },
1561   { SCIM_KEY_dead_circumflex,     SCIM_KEY_equal },
1562   { SCIM_KEY_dead_diaeresis,      SCIM_KEY_bracketright },
1563 };
1564 
1565 static __Uint16Pair __us_to_french_switzerland_caps [] = {
1566   { SCIM_KEY_apostrophe,          SCIM_KEY_Agrave },
1567   { SCIM_KEY_minus,               SCIM_KEY_apostrophe },
1568   { SCIM_KEY_slash,               SCIM_KEY_minus },
1569   { SCIM_KEY_semicolon,           SCIM_KEY_Eacute },
1570   { SCIM_KEY_equal,               SCIM_KEY_dead_circumflex },
1571   { SCIM_KEY_Y,                   SCIM_KEY_Z },
1572   { SCIM_KEY_Z,                   SCIM_KEY_Y },
1573   { SCIM_KEY_bracketleft,         SCIM_KEY_Egrave },
1574   { SCIM_KEY_backslash,           SCIM_KEY_dollar },
1575   { SCIM_KEY_bracketright,        SCIM_KEY_dead_diaeresis },
1576   { SCIM_KEY_grave,               SCIM_KEY_section },
1577 };
1578 
1579 static __Uint16Pair __french_switzerland_to_us_shift [] = {
1580   { SCIM_KEY_exclam,              SCIM_KEY_braceright },
1581   { SCIM_KEY_quotedbl,            SCIM_KEY_at },
1582   { SCIM_KEY_ampersand,           SCIM_KEY_asciicircum },
1583   { SCIM_KEY_parenleft,           SCIM_KEY_asterisk },
1584   { SCIM_KEY_parenright,          SCIM_KEY_parenleft },
1585   { SCIM_KEY_asterisk,            SCIM_KEY_numbersign },
1586   { SCIM_KEY_plus,                SCIM_KEY_exclam },
1587   { SCIM_KEY_slash,               SCIM_KEY_ampersand },
1588   { SCIM_KEY_colon,               SCIM_KEY_greater },
1589   { SCIM_KEY_semicolon,           SCIM_KEY_less },
1590   { SCIM_KEY_equal,               SCIM_KEY_parenright },
1591   { SCIM_KEY_question,            SCIM_KEY_underscore },
1592   { SCIM_KEY_Y,                   SCIM_KEY_Z },
1593   { SCIM_KEY_Z,                   SCIM_KEY_Y },
1594   { SCIM_KEY_underscore,          SCIM_KEY_question },
1595   { SCIM_KEY_sterling,            SCIM_KEY_bar },
1596   { SCIM_KEY_degree,              SCIM_KEY_asciitilde },
1597   { SCIM_KEY_adiaeresis,          SCIM_KEY_quotedbl },
1598   { SCIM_KEY_ccedilla,            SCIM_KEY_dollar },
1599   { SCIM_KEY_odiaeresis,          SCIM_KEY_colon },
1600   { SCIM_KEY_udiaeresis,          SCIM_KEY_braceleft },
1601   { SCIM_KEY_dead_grave,          SCIM_KEY_plus },
1602 };
1603 
1604 static __Uint16Pair __us_to_french_switzerland_shift [] = {
1605   { SCIM_KEY_exclam,              SCIM_KEY_plus },
1606   { SCIM_KEY_quotedbl,            SCIM_KEY_adiaeresis },
1607   { SCIM_KEY_numbersign,          SCIM_KEY_asterisk },
1608   { SCIM_KEY_dollar,              SCIM_KEY_ccedilla },
1609   { SCIM_KEY_ampersand,           SCIM_KEY_slash },
1610   { SCIM_KEY_parenleft,           SCIM_KEY_parenright },
1611   { SCIM_KEY_parenright,          SCIM_KEY_equal },
1612   { SCIM_KEY_asterisk,            SCIM_KEY_parenleft },
1613   { SCIM_KEY_plus,                SCIM_KEY_dead_grave },
1614   { SCIM_KEY_colon,               SCIM_KEY_odiaeresis },
1615   { SCIM_KEY_less,                SCIM_KEY_semicolon },
1616   { SCIM_KEY_greater,             SCIM_KEY_colon },
1617   { SCIM_KEY_question,            SCIM_KEY_underscore },
1618   { SCIM_KEY_at,                  SCIM_KEY_quotedbl },
1619   { SCIM_KEY_Y,                   SCIM_KEY_Z },
1620   { SCIM_KEY_Z,                   SCIM_KEY_Y },
1621   { SCIM_KEY_asciicircum,         SCIM_KEY_ampersand },
1622   { SCIM_KEY_underscore,          SCIM_KEY_question },
1623   { SCIM_KEY_braceleft,           SCIM_KEY_udiaeresis },
1624   { SCIM_KEY_bar,                 SCIM_KEY_sterling },
1625   { SCIM_KEY_braceright,          SCIM_KEY_exclam },
1626   { SCIM_KEY_asciitilde,          SCIM_KEY_degree },
1627 };
1628 
1629 static __Uint16Pair __french_switzerland_to_us_caps_shift [] = {
1630   { SCIM_KEY_exclam,              SCIM_KEY_braceright },
1631   { SCIM_KEY_quotedbl,            SCIM_KEY_at },
1632   { SCIM_KEY_ampersand,           SCIM_KEY_asciicircum },
1633   { SCIM_KEY_parenleft,           SCIM_KEY_asterisk },
1634   { SCIM_KEY_parenright,          SCIM_KEY_parenleft },
1635   { SCIM_KEY_asterisk,            SCIM_KEY_numbersign },
1636   { SCIM_KEY_plus,                SCIM_KEY_exclam },
1637   { SCIM_KEY_slash,               SCIM_KEY_ampersand },
1638   { SCIM_KEY_colon,               SCIM_KEY_greater },
1639   { SCIM_KEY_semicolon,           SCIM_KEY_less },
1640   { SCIM_KEY_equal,               SCIM_KEY_parenright },
1641   { SCIM_KEY_question,            SCIM_KEY_underscore },
1642   { SCIM_KEY_underscore,          SCIM_KEY_question },
1643   { SCIM_KEY_y,                   SCIM_KEY_z },
1644   { SCIM_KEY_z,                   SCIM_KEY_y },
1645   { SCIM_KEY_sterling,            SCIM_KEY_bar },
1646   { SCIM_KEY_degree,              SCIM_KEY_asciitilde },
1647   { SCIM_KEY_Adiaeresis,          SCIM_KEY_quotedbl },
1648   { SCIM_KEY_Ccedilla,            SCIM_KEY_dollar },
1649   { SCIM_KEY_Odiaeresis,          SCIM_KEY_colon },
1650   { SCIM_KEY_Udiaeresis,          SCIM_KEY_braceleft },
1651   { SCIM_KEY_dead_grave,          SCIM_KEY_plus },
1652 };
1653 
1654 static __Uint16Pair __us_to_french_switzerland_caps_shift [] = {
1655   { SCIM_KEY_exclam,              SCIM_KEY_plus },
1656   { SCIM_KEY_quotedbl,            SCIM_KEY_Adiaeresis },
1657   { SCIM_KEY_numbersign,          SCIM_KEY_asterisk },
1658   { SCIM_KEY_dollar,              SCIM_KEY_Ccedilla },
1659   { SCIM_KEY_ampersand,           SCIM_KEY_slash },
1660   { SCIM_KEY_parenleft,           SCIM_KEY_parenright },
1661   { SCIM_KEY_parenright,          SCIM_KEY_equal },
1662   { SCIM_KEY_asterisk,            SCIM_KEY_parenleft },
1663   { SCIM_KEY_plus,                SCIM_KEY_dead_grave },
1664   { SCIM_KEY_colon,               SCIM_KEY_Odiaeresis },
1665   { SCIM_KEY_less,                SCIM_KEY_semicolon },
1666   { SCIM_KEY_greater,             SCIM_KEY_colon },
1667   { SCIM_KEY_question,            SCIM_KEY_underscore },
1668   { SCIM_KEY_at,                  SCIM_KEY_quotedbl },
1669   { SCIM_KEY_asciicircum,         SCIM_KEY_ampersand },
1670   { SCIM_KEY_underscore,          SCIM_KEY_question },
1671   { SCIM_KEY_y,                   SCIM_KEY_z },
1672   { SCIM_KEY_z,                   SCIM_KEY_y },
1673   { SCIM_KEY_braceleft,           SCIM_KEY_Udiaeresis },
1674   { SCIM_KEY_bar,                 SCIM_KEY_sterling },
1675   { SCIM_KEY_braceright,          SCIM_KEY_exclam },
1676   { SCIM_KEY_asciitilde,          SCIM_KEY_degree },
1677 };
1678 
1679 static __Uint16Pair __german_deadkeys_to_us_normal [] = {
1680   { SCIM_KEY_numbersign,          SCIM_KEY_backslash },
1681   { SCIM_KEY_plus,                SCIM_KEY_bracketright },
1682   { SCIM_KEY_minus,               SCIM_KEY_slash },
1683   { SCIM_KEY_y,                   SCIM_KEY_z },
1684   { SCIM_KEY_z,                   SCIM_KEY_y },
1685   { SCIM_KEY_ssharp,              SCIM_KEY_minus },
1686   { SCIM_KEY_adiaeresis,          SCIM_KEY_apostrophe },
1687   { SCIM_KEY_odiaeresis,          SCIM_KEY_semicolon },
1688   { SCIM_KEY_udiaeresis,          SCIM_KEY_bracketleft },
1689   { SCIM_KEY_dead_acute,          SCIM_KEY_equal },
1690   { SCIM_KEY_dead_circumflex,     SCIM_KEY_grave },
1691 };
1692 
1693 static __Uint16Pair __us_to_german_deadkeys_normal [] = {
1694   { SCIM_KEY_apostrophe,          SCIM_KEY_adiaeresis },
1695   { SCIM_KEY_minus,               SCIM_KEY_ssharp },
1696   { SCIM_KEY_slash,               SCIM_KEY_minus },
1697   { SCIM_KEY_semicolon,           SCIM_KEY_odiaeresis },
1698   { SCIM_KEY_equal,               SCIM_KEY_dead_acute },
1699   { SCIM_KEY_bracketleft,         SCIM_KEY_udiaeresis },
1700   { SCIM_KEY_backslash,           SCIM_KEY_numbersign },
1701   { SCIM_KEY_bracketright,        SCIM_KEY_plus },
1702   { SCIM_KEY_grave,               SCIM_KEY_dead_circumflex },
1703   { SCIM_KEY_y,                   SCIM_KEY_z },
1704   { SCIM_KEY_z,                   SCIM_KEY_y },
1705 };
1706 
1707 static __Uint16Pair __german_deadkeys_to_us_caps [] = {
1708   { SCIM_KEY_numbersign,          SCIM_KEY_backslash },
1709   { SCIM_KEY_plus,                SCIM_KEY_bracketright },
1710   { SCIM_KEY_minus,               SCIM_KEY_slash },
1711   { SCIM_KEY_Y,                   SCIM_KEY_Z },
1712   { SCIM_KEY_Z,                   SCIM_KEY_Y },
1713   { SCIM_KEY_Adiaeresis,          SCIM_KEY_apostrophe },
1714   { SCIM_KEY_Odiaeresis,          SCIM_KEY_semicolon },
1715   { SCIM_KEY_Udiaeresis,          SCIM_KEY_bracketleft },
1716   { SCIM_KEY_ssharp,              SCIM_KEY_minus },
1717   { SCIM_KEY_dead_acute,          SCIM_KEY_equal },
1718   { SCIM_KEY_dead_circumflex,     SCIM_KEY_grave },
1719 };
1720 
1721 static __Uint16Pair __us_to_german_deadkeys_caps [] = {
1722   { SCIM_KEY_apostrophe,          SCIM_KEY_Adiaeresis },
1723   { SCIM_KEY_minus,               SCIM_KEY_ssharp },
1724   { SCIM_KEY_slash,               SCIM_KEY_minus },
1725   { SCIM_KEY_semicolon,           SCIM_KEY_Odiaeresis },
1726   { SCIM_KEY_equal,               SCIM_KEY_dead_acute },
1727   { SCIM_KEY_Y,                   SCIM_KEY_Z },
1728   { SCIM_KEY_Z,                   SCIM_KEY_Y },
1729   { SCIM_KEY_bracketleft,         SCIM_KEY_Udiaeresis },
1730   { SCIM_KEY_backslash,           SCIM_KEY_numbersign },
1731   { SCIM_KEY_bracketright,        SCIM_KEY_plus },
1732   { SCIM_KEY_grave,               SCIM_KEY_dead_circumflex },
1733 };
1734 
1735 static __Uint16Pair __german_deadkeys_to_us_shift [] = {
1736   { SCIM_KEY_quotedbl,            SCIM_KEY_at },
1737   { SCIM_KEY_ampersand,           SCIM_KEY_asciicircum },
1738   { SCIM_KEY_apostrophe,          SCIM_KEY_bar },
1739   { SCIM_KEY_parenleft,           SCIM_KEY_asterisk },
1740   { SCIM_KEY_parenright,          SCIM_KEY_parenleft },
1741   { SCIM_KEY_asterisk,            SCIM_KEY_braceright },
1742   { SCIM_KEY_slash,               SCIM_KEY_ampersand },
1743   { SCIM_KEY_colon,               SCIM_KEY_greater },
1744   { SCIM_KEY_semicolon,           SCIM_KEY_less },
1745   { SCIM_KEY_equal,               SCIM_KEY_parenright },
1746   { SCIM_KEY_question,            SCIM_KEY_underscore },
1747   { SCIM_KEY_Y,                   SCIM_KEY_Z },
1748   { SCIM_KEY_Z,                   SCIM_KEY_Y },
1749   { SCIM_KEY_underscore,          SCIM_KEY_question },
1750   { SCIM_KEY_section,             SCIM_KEY_numbersign },
1751   { SCIM_KEY_degree,              SCIM_KEY_asciitilde },
1752   { SCIM_KEY_Adiaeresis,          SCIM_KEY_quotedbl },
1753   { SCIM_KEY_Odiaeresis,          SCIM_KEY_colon },
1754   { SCIM_KEY_Udiaeresis,          SCIM_KEY_braceleft },
1755   { SCIM_KEY_dead_grave,          SCIM_KEY_plus },
1756 };
1757 
1758 static __Uint16Pair __us_to_german_deadkeys_shift [] = {
1759   { SCIM_KEY_quotedbl,            SCIM_KEY_Adiaeresis },
1760   { SCIM_KEY_numbersign,          SCIM_KEY_section },
1761   { SCIM_KEY_ampersand,           SCIM_KEY_slash },
1762   { SCIM_KEY_parenleft,           SCIM_KEY_parenright },
1763   { SCIM_KEY_parenright,          SCIM_KEY_equal },
1764   { SCIM_KEY_asterisk,            SCIM_KEY_parenleft },
1765   { SCIM_KEY_plus,                SCIM_KEY_dead_grave },
1766   { SCIM_KEY_colon,               SCIM_KEY_Odiaeresis },
1767   { SCIM_KEY_less,                SCIM_KEY_semicolon },
1768   { SCIM_KEY_greater,             SCIM_KEY_colon },
1769   { SCIM_KEY_question,            SCIM_KEY_underscore },
1770   { SCIM_KEY_at,                  SCIM_KEY_quotedbl },
1771   { SCIM_KEY_Y,                   SCIM_KEY_Z },
1772   { SCIM_KEY_Z,                   SCIM_KEY_Y },
1773   { SCIM_KEY_asciicircum,         SCIM_KEY_ampersand },
1774   { SCIM_KEY_underscore,          SCIM_KEY_question },
1775   { SCIM_KEY_braceleft,           SCIM_KEY_Udiaeresis },
1776   { SCIM_KEY_bar,                 SCIM_KEY_apostrophe },
1777   { SCIM_KEY_braceright,          SCIM_KEY_asterisk },
1778   { SCIM_KEY_asciitilde,          SCIM_KEY_degree },
1779 };
1780 
1781 static __Uint16Pair __german_deadkeys_to_us_caps_shift [] = {
1782   { SCIM_KEY_quotedbl,            SCIM_KEY_at },
1783   { SCIM_KEY_ampersand,           SCIM_KEY_asciicircum },
1784   { SCIM_KEY_apostrophe,          SCIM_KEY_bar },
1785   { SCIM_KEY_parenleft,           SCIM_KEY_asterisk },
1786   { SCIM_KEY_parenright,          SCIM_KEY_parenleft },
1787   { SCIM_KEY_asterisk,            SCIM_KEY_braceright },
1788   { SCIM_KEY_slash,               SCIM_KEY_ampersand },
1789   { SCIM_KEY_colon,               SCIM_KEY_greater },
1790   { SCIM_KEY_semicolon,           SCIM_KEY_less },
1791   { SCIM_KEY_equal,               SCIM_KEY_parenright },
1792   { SCIM_KEY_question,            SCIM_KEY_underscore },
1793   { SCIM_KEY_underscore,          SCIM_KEY_question },
1794   { SCIM_KEY_y,                   SCIM_KEY_z },
1795   { SCIM_KEY_z,                   SCIM_KEY_y },
1796   { SCIM_KEY_section,             SCIM_KEY_numbersign },
1797   { SCIM_KEY_degree,              SCIM_KEY_asciitilde },
1798   { SCIM_KEY_adiaeresis,          SCIM_KEY_quotedbl },
1799   { SCIM_KEY_odiaeresis,          SCIM_KEY_colon },
1800   { SCIM_KEY_udiaeresis,          SCIM_KEY_braceleft },
1801   { SCIM_KEY_dead_grave,          SCIM_KEY_plus },
1802 };
1803 
1804 static __Uint16Pair __us_to_german_deadkeys_caps_shift [] = {
1805   { SCIM_KEY_quotedbl,            SCIM_KEY_adiaeresis },
1806   { SCIM_KEY_numbersign,          SCIM_KEY_section },
1807   { SCIM_KEY_ampersand,           SCIM_KEY_slash },
1808   { SCIM_KEY_parenleft,           SCIM_KEY_parenright },
1809   { SCIM_KEY_parenright,          SCIM_KEY_equal },
1810   { SCIM_KEY_asterisk,            SCIM_KEY_parenleft },
1811   { SCIM_KEY_plus,                SCIM_KEY_dead_grave },
1812   { SCIM_KEY_colon,               SCIM_KEY_odiaeresis },
1813   { SCIM_KEY_less,                SCIM_KEY_semicolon },
1814   { SCIM_KEY_greater,             SCIM_KEY_colon },
1815   { SCIM_KEY_question,            SCIM_KEY_underscore },
1816   { SCIM_KEY_at,                  SCIM_KEY_quotedbl },
1817   { SCIM_KEY_asciicircum,         SCIM_KEY_ampersand },
1818   { SCIM_KEY_underscore,          SCIM_KEY_question },
1819   { SCIM_KEY_y,                   SCIM_KEY_z },
1820   { SCIM_KEY_z,                   SCIM_KEY_y },
1821   { SCIM_KEY_braceleft,           SCIM_KEY_udiaeresis },
1822   { SCIM_KEY_bar,                 SCIM_KEY_apostrophe },
1823   { SCIM_KEY_braceright,          SCIM_KEY_asterisk },
1824   { SCIM_KEY_asciitilde,          SCIM_KEY_degree },
1825 };
1826 
1827 static __Uint16Pair __german_to_us_normal [] = {
1828   { SCIM_KEY_numbersign,          SCIM_KEY_backslash },
1829   { SCIM_KEY_plus,                SCIM_KEY_bracketright },
1830   { SCIM_KEY_minus,               SCIM_KEY_slash },
1831   { SCIM_KEY_asciicircum,         SCIM_KEY_grave },
1832   { SCIM_KEY_y,                   SCIM_KEY_z },
1833   { SCIM_KEY_z,                   SCIM_KEY_y },
1834   { SCIM_KEY_acute,               SCIM_KEY_equal },
1835   { SCIM_KEY_ssharp,              SCIM_KEY_minus },
1836   { SCIM_KEY_adiaeresis,          SCIM_KEY_apostrophe },
1837   { SCIM_KEY_odiaeresis,          SCIM_KEY_semicolon },
1838   { SCIM_KEY_udiaeresis,          SCIM_KEY_bracketleft },
1839 };
1840 
1841 static __Uint16Pair __us_to_german_normal [] = {
1842   { SCIM_KEY_apostrophe,          SCIM_KEY_adiaeresis },
1843   { SCIM_KEY_minus,               SCIM_KEY_ssharp },
1844   { SCIM_KEY_slash,               SCIM_KEY_minus },
1845   { SCIM_KEY_semicolon,           SCIM_KEY_odiaeresis },
1846   { SCIM_KEY_equal,               SCIM_KEY_acute },
1847   { SCIM_KEY_bracketleft,         SCIM_KEY_udiaeresis },
1848   { SCIM_KEY_backslash,           SCIM_KEY_numbersign },
1849   { SCIM_KEY_bracketright,        SCIM_KEY_plus },
1850   { SCIM_KEY_grave,               SCIM_KEY_asciicircum },
1851   { SCIM_KEY_y,                   SCIM_KEY_z },
1852   { SCIM_KEY_z,                   SCIM_KEY_y },
1853 };
1854 
1855 static __Uint16Pair __german_to_us_caps [] = {
1856   { SCIM_KEY_numbersign,          SCIM_KEY_backslash },
1857   { SCIM_KEY_plus,                SCIM_KEY_bracketright },
1858   { SCIM_KEY_minus,               SCIM_KEY_slash },
1859   { SCIM_KEY_Y,                   SCIM_KEY_Z },
1860   { SCIM_KEY_Z,                   SCIM_KEY_Y },
1861   { SCIM_KEY_asciicircum,         SCIM_KEY_grave },
1862   { SCIM_KEY_acute,               SCIM_KEY_equal },
1863   { SCIM_KEY_Adiaeresis,          SCIM_KEY_apostrophe },
1864   { SCIM_KEY_Odiaeresis,          SCIM_KEY_semicolon },
1865   { SCIM_KEY_Udiaeresis,          SCIM_KEY_bracketleft },
1866   { SCIM_KEY_ssharp,              SCIM_KEY_minus },
1867 };
1868 
1869 static __Uint16Pair __us_to_german_caps [] = {
1870   { SCIM_KEY_apostrophe,          SCIM_KEY_Adiaeresis },
1871   { SCIM_KEY_minus,               SCIM_KEY_ssharp },
1872   { SCIM_KEY_slash,               SCIM_KEY_minus },
1873   { SCIM_KEY_semicolon,           SCIM_KEY_Odiaeresis },
1874   { SCIM_KEY_equal,               SCIM_KEY_acute },
1875   { SCIM_KEY_Y,                   SCIM_KEY_Z },
1876   { SCIM_KEY_Z,                   SCIM_KEY_Y },
1877   { SCIM_KEY_bracketleft,         SCIM_KEY_Udiaeresis },
1878   { SCIM_KEY_backslash,           SCIM_KEY_numbersign },
1879   { SCIM_KEY_bracketright,        SCIM_KEY_plus },
1880   { SCIM_KEY_grave,               SCIM_KEY_asciicircum },
1881 };
1882 
1883 static __Uint16Pair __german_to_us_shift [] = {
1884   { SCIM_KEY_quotedbl,            SCIM_KEY_at },
1885   { SCIM_KEY_ampersand,           SCIM_KEY_asciicircum },
1886   { SCIM_KEY_apostrophe,          SCIM_KEY_bar },
1887   { SCIM_KEY_parenleft,           SCIM_KEY_asterisk },
1888   { SCIM_KEY_parenright,          SCIM_KEY_parenleft },
1889   { SCIM_KEY_asterisk,            SCIM_KEY_braceright },
1890   { SCIM_KEY_slash,               SCIM_KEY_ampersand },
1891   { SCIM_KEY_colon,               SCIM_KEY_greater },
1892   { SCIM_KEY_semicolon,           SCIM_KEY_less },
1893   { SCIM_KEY_equal,               SCIM_KEY_parenright },
1894   { SCIM_KEY_question,            SCIM_KEY_underscore },
1895   { SCIM_KEY_Y,                   SCIM_KEY_Z },
1896   { SCIM_KEY_Z,                   SCIM_KEY_Y },
1897   { SCIM_KEY_underscore,          SCIM_KEY_question },
1898   { SCIM_KEY_grave,               SCIM_KEY_plus },
1899   { SCIM_KEY_section,             SCIM_KEY_numbersign },
1900   { SCIM_KEY_degree,              SCIM_KEY_asciitilde },
1901   { SCIM_KEY_Adiaeresis,          SCIM_KEY_quotedbl },
1902   { SCIM_KEY_Odiaeresis,          SCIM_KEY_colon },
1903   { SCIM_KEY_Udiaeresis,          SCIM_KEY_braceleft },
1904 };
1905 
1906 static __Uint16Pair __us_to_german_shift [] = {
1907   { SCIM_KEY_quotedbl,            SCIM_KEY_Adiaeresis },
1908   { SCIM_KEY_numbersign,          SCIM_KEY_section },
1909   { SCIM_KEY_ampersand,           SCIM_KEY_slash },
1910   { SCIM_KEY_parenleft,           SCIM_KEY_parenright },
1911   { SCIM_KEY_parenright,          SCIM_KEY_equal },
1912   { SCIM_KEY_asterisk,            SCIM_KEY_parenleft },
1913   { SCIM_KEY_plus,                SCIM_KEY_grave },
1914   { SCIM_KEY_colon,               SCIM_KEY_Odiaeresis },
1915   { SCIM_KEY_less,                SCIM_KEY_semicolon },
1916   { SCIM_KEY_greater,             SCIM_KEY_colon },
1917   { SCIM_KEY_question,            SCIM_KEY_underscore },
1918   { SCIM_KEY_at,                  SCIM_KEY_quotedbl },
1919   { SCIM_KEY_Y,                   SCIM_KEY_Z },
1920   { SCIM_KEY_Z,                   SCIM_KEY_Y },
1921   { SCIM_KEY_asciicircum,         SCIM_KEY_ampersand },
1922   { SCIM_KEY_underscore,          SCIM_KEY_question },
1923   { SCIM_KEY_braceleft,           SCIM_KEY_Udiaeresis },
1924   { SCIM_KEY_bar,                 SCIM_KEY_apostrophe },
1925   { SCIM_KEY_braceright,          SCIM_KEY_asterisk },
1926   { SCIM_KEY_asciitilde,          SCIM_KEY_degree },
1927 };
1928 
1929 static __Uint16Pair __german_to_us_caps_shift [] = {
1930   { SCIM_KEY_quotedbl,            SCIM_KEY_at },
1931   { SCIM_KEY_ampersand,           SCIM_KEY_asciicircum },
1932   { SCIM_KEY_apostrophe,          SCIM_KEY_bar },
1933   { SCIM_KEY_parenleft,           SCIM_KEY_asterisk },
1934   { SCIM_KEY_parenright,          SCIM_KEY_parenleft },
1935   { SCIM_KEY_asterisk,            SCIM_KEY_braceright },
1936   { SCIM_KEY_slash,               SCIM_KEY_ampersand },
1937   { SCIM_KEY_colon,               SCIM_KEY_greater },
1938   { SCIM_KEY_semicolon,           SCIM_KEY_less },
1939   { SCIM_KEY_equal,               SCIM_KEY_parenright },
1940   { SCIM_KEY_question,            SCIM_KEY_underscore },
1941   { SCIM_KEY_underscore,          SCIM_KEY_question },
1942   { SCIM_KEY_grave,               SCIM_KEY_plus },
1943   { SCIM_KEY_y,                   SCIM_KEY_z },
1944   { SCIM_KEY_z,                   SCIM_KEY_y },
1945   { SCIM_KEY_section,             SCIM_KEY_numbersign },
1946   { SCIM_KEY_degree,              SCIM_KEY_asciitilde },
1947   { SCIM_KEY_adiaeresis,          SCIM_KEY_quotedbl },
1948   { SCIM_KEY_odiaeresis,          SCIM_KEY_colon },
1949   { SCIM_KEY_udiaeresis,          SCIM_KEY_braceleft },
1950 };
1951 
1952 static __Uint16Pair __us_to_german_caps_shift [] = {
1953   { SCIM_KEY_quotedbl,            SCIM_KEY_adiaeresis },
1954   { SCIM_KEY_numbersign,          SCIM_KEY_section },
1955   { SCIM_KEY_ampersand,           SCIM_KEY_slash },
1956   { SCIM_KEY_parenleft,           SCIM_KEY_parenright },
1957   { SCIM_KEY_parenright,          SCIM_KEY_equal },
1958   { SCIM_KEY_asterisk,            SCIM_KEY_parenleft },
1959   { SCIM_KEY_plus,                SCIM_KEY_grave },
1960   { SCIM_KEY_colon,               SCIM_KEY_odiaeresis },
1961   { SCIM_KEY_less,                SCIM_KEY_semicolon },
1962   { SCIM_KEY_greater,             SCIM_KEY_colon },
1963   { SCIM_KEY_question,            SCIM_KEY_underscore },
1964   { SCIM_KEY_at,                  SCIM_KEY_quotedbl },
1965   { SCIM_KEY_asciicircum,         SCIM_KEY_ampersand },
1966   { SCIM_KEY_underscore,          SCIM_KEY_question },
1967   { SCIM_KEY_y,                   SCIM_KEY_z },
1968   { SCIM_KEY_z,                   SCIM_KEY_y },
1969   { SCIM_KEY_braceleft,           SCIM_KEY_udiaeresis },
1970   { SCIM_KEY_bar,                 SCIM_KEY_apostrophe },
1971   { SCIM_KEY_braceright,          SCIM_KEY_asterisk },
1972   { SCIM_KEY_asciitilde,          SCIM_KEY_degree },
1973 };
1974 
1975 static __Uint16Pair __german_swiss_to_us_normal [] = {
1976   { SCIM_KEY_dollar,              SCIM_KEY_backslash },
1977   { SCIM_KEY_apostrophe,          SCIM_KEY_minus },
1978   { SCIM_KEY_minus,               SCIM_KEY_slash },
1979   { SCIM_KEY_y,                   SCIM_KEY_z },
1980   { SCIM_KEY_z,                   SCIM_KEY_y },
1981   { SCIM_KEY_section,             SCIM_KEY_grave },
1982   { SCIM_KEY_adiaeresis,          SCIM_KEY_apostrophe },
1983   { SCIM_KEY_odiaeresis,          SCIM_KEY_semicolon },
1984   { SCIM_KEY_udiaeresis,          SCIM_KEY_bracketleft },
1985   { SCIM_KEY_dead_circumflex,     SCIM_KEY_equal },
1986   { SCIM_KEY_dead_diaeresis,      SCIM_KEY_bracketright },
1987 };
1988 
1989 static __Uint16Pair __us_to_german_swiss_normal [] = {
1990   { SCIM_KEY_apostrophe,          SCIM_KEY_adiaeresis },
1991   { SCIM_KEY_minus,               SCIM_KEY_apostrophe },
1992   { SCIM_KEY_slash,               SCIM_KEY_minus },
1993   { SCIM_KEY_semicolon,           SCIM_KEY_odiaeresis },
1994   { SCIM_KEY_equal,               SCIM_KEY_dead_circumflex },
1995   { SCIM_KEY_bracketleft,         SCIM_KEY_udiaeresis },
1996   { SCIM_KEY_backslash,           SCIM_KEY_dollar },
1997   { SCIM_KEY_bracketright,        SCIM_KEY_dead_diaeresis },
1998   { SCIM_KEY_grave,               SCIM_KEY_section },
1999   { SCIM_KEY_y,                   SCIM_KEY_z },
2000   { SCIM_KEY_z,                   SCIM_KEY_y },
2001 };
2002 
2003 static __Uint16Pair __german_swiss_to_us_caps [] = {
2004   { SCIM_KEY_dollar,              SCIM_KEY_backslash },
2005   { SCIM_KEY_apostrophe,          SCIM_KEY_minus },
2006   { SCIM_KEY_minus,               SCIM_KEY_slash },
2007   { SCIM_KEY_Y,                   SCIM_KEY_Z },
2008   { SCIM_KEY_Z,                   SCIM_KEY_Y },
2009   { SCIM_KEY_section,             SCIM_KEY_grave },
2010   { SCIM_KEY_Adiaeresis,          SCIM_KEY_apostrophe },
2011   { SCIM_KEY_Odiaeresis,          SCIM_KEY_semicolon },
2012   { SCIM_KEY_Udiaeresis,          SCIM_KEY_bracketleft },
2013   { SCIM_KEY_dead_circumflex,     SCIM_KEY_equal },
2014   { SCIM_KEY_dead_diaeresis,      SCIM_KEY_bracketright },
2015 };
2016 
2017 static __Uint16Pair __us_to_german_swiss_caps [] = {
2018   { SCIM_KEY_apostrophe,          SCIM_KEY_Adiaeresis },
2019   { SCIM_KEY_minus,               SCIM_KEY_apostrophe },
2020   { SCIM_KEY_slash,               SCIM_KEY_minus },
2021   { SCIM_KEY_semicolon,           SCIM_KEY_Odiaeresis },
2022   { SCIM_KEY_equal,               SCIM_KEY_dead_circumflex },
2023   { SCIM_KEY_Y,                   SCIM_KEY_Z },
2024   { SCIM_KEY_Z,                   SCIM_KEY_Y },
2025   { SCIM_KEY_bracketleft,         SCIM_KEY_Udiaeresis },
2026   { SCIM_KEY_backslash,           SCIM_KEY_dollar },
2027   { SCIM_KEY_bracketright,        SCIM_KEY_dead_diaeresis },
2028   { SCIM_KEY_grave,               SCIM_KEY_section },
2029 };
2030 
2031 static __Uint16Pair __german_swiss_to_us_shift [] = {
2032   { SCIM_KEY_exclam,              SCIM_KEY_braceright },
2033   { SCIM_KEY_quotedbl,            SCIM_KEY_at },
2034   { SCIM_KEY_ampersand,           SCIM_KEY_asciicircum },
2035   { SCIM_KEY_parenleft,           SCIM_KEY_asterisk },
2036   { SCIM_KEY_parenright,          SCIM_KEY_parenleft },
2037   { SCIM_KEY_asterisk,            SCIM_KEY_numbersign },
2038   { SCIM_KEY_plus,                SCIM_KEY_exclam },
2039   { SCIM_KEY_slash,               SCIM_KEY_ampersand },
2040   { SCIM_KEY_colon,               SCIM_KEY_greater },
2041   { SCIM_KEY_semicolon,           SCIM_KEY_less },
2042   { SCIM_KEY_equal,               SCIM_KEY_parenright },
2043   { SCIM_KEY_question,            SCIM_KEY_underscore },
2044   { SCIM_KEY_Y,                   SCIM_KEY_Z },
2045   { SCIM_KEY_Z,                   SCIM_KEY_Y },
2046   { SCIM_KEY_underscore,          SCIM_KEY_question },
2047   { SCIM_KEY_sterling,            SCIM_KEY_bar },
2048   { SCIM_KEY_degree,              SCIM_KEY_asciitilde },
2049   { SCIM_KEY_agrave,              SCIM_KEY_quotedbl },
2050   { SCIM_KEY_ccedilla,            SCIM_KEY_dollar },
2051   { SCIM_KEY_egrave,              SCIM_KEY_braceleft },
2052   { SCIM_KEY_eacute,              SCIM_KEY_colon },
2053   { SCIM_KEY_dead_grave,          SCIM_KEY_plus },
2054 };
2055 
2056 static __Uint16Pair __us_to_german_swiss_shift [] = {
2057   { SCIM_KEY_exclam,              SCIM_KEY_plus },
2058   { SCIM_KEY_quotedbl,            SCIM_KEY_agrave },
2059   { SCIM_KEY_numbersign,          SCIM_KEY_asterisk },
2060   { SCIM_KEY_dollar,              SCIM_KEY_ccedilla },
2061   { SCIM_KEY_ampersand,           SCIM_KEY_slash },
2062   { SCIM_KEY_parenleft,           SCIM_KEY_parenright },
2063   { SCIM_KEY_parenright,          SCIM_KEY_equal },
2064   { SCIM_KEY_asterisk,            SCIM_KEY_parenleft },
2065   { SCIM_KEY_plus,                SCIM_KEY_dead_grave },
2066   { SCIM_KEY_colon,               SCIM_KEY_eacute },
2067   { SCIM_KEY_less,                SCIM_KEY_semicolon },
2068   { SCIM_KEY_greater,             SCIM_KEY_colon },
2069   { SCIM_KEY_question,            SCIM_KEY_underscore },
2070   { SCIM_KEY_at,                  SCIM_KEY_quotedbl },
2071   { SCIM_KEY_Y,                   SCIM_KEY_Z },
2072   { SCIM_KEY_Z,                   SCIM_KEY_Y },
2073   { SCIM_KEY_asciicircum,         SCIM_KEY_ampersand },
2074   { SCIM_KEY_underscore,          SCIM_KEY_question },
2075   { SCIM_KEY_braceleft,           SCIM_KEY_egrave },
2076   { SCIM_KEY_bar,                 SCIM_KEY_sterling },
2077   { SCIM_KEY_braceright,          SCIM_KEY_exclam },
2078   { SCIM_KEY_asciitilde,          SCIM_KEY_degree },
2079 };
2080 
2081 static __Uint16Pair __german_swiss_to_us_caps_shift [] = {
2082   { SCIM_KEY_exclam,              SCIM_KEY_braceright },
2083   { SCIM_KEY_quotedbl,            SCIM_KEY_at },
2084   { SCIM_KEY_ampersand,           SCIM_KEY_asciicircum },
2085   { SCIM_KEY_parenleft,           SCIM_KEY_asterisk },
2086   { SCIM_KEY_parenright,          SCIM_KEY_parenleft },
2087   { SCIM_KEY_asterisk,            SCIM_KEY_numbersign },
2088   { SCIM_KEY_plus,                SCIM_KEY_exclam },
2089   { SCIM_KEY_slash,               SCIM_KEY_ampersand },
2090   { SCIM_KEY_colon,               SCIM_KEY_greater },
2091   { SCIM_KEY_semicolon,           SCIM_KEY_less },
2092   { SCIM_KEY_equal,               SCIM_KEY_parenright },
2093   { SCIM_KEY_question,            SCIM_KEY_underscore },
2094   { SCIM_KEY_underscore,          SCIM_KEY_question },
2095   { SCIM_KEY_y,                   SCIM_KEY_z },
2096   { SCIM_KEY_z,                   SCIM_KEY_y },
2097   { SCIM_KEY_sterling,            SCIM_KEY_bar },
2098   { SCIM_KEY_degree,              SCIM_KEY_asciitilde },
2099   { SCIM_KEY_Agrave,              SCIM_KEY_quotedbl },
2100   { SCIM_KEY_Ccedilla,            SCIM_KEY_dollar },
2101   { SCIM_KEY_Egrave,              SCIM_KEY_braceleft },
2102   { SCIM_KEY_Eacute,              SCIM_KEY_colon },
2103   { SCIM_KEY_dead_grave,          SCIM_KEY_plus },
2104 };
2105 
2106 static __Uint16Pair __us_to_german_swiss_caps_shift [] = {
2107   { SCIM_KEY_exclam,              SCIM_KEY_plus },
2108   { SCIM_KEY_quotedbl,            SCIM_KEY_Agrave },
2109   { SCIM_KEY_numbersign,          SCIM_KEY_asterisk },
2110   { SCIM_KEY_dollar,              SCIM_KEY_Ccedilla },
2111   { SCIM_KEY_ampersand,           SCIM_KEY_slash },
2112   { SCIM_KEY_parenleft,           SCIM_KEY_parenright },
2113   { SCIM_KEY_parenright,          SCIM_KEY_equal },
2114   { SCIM_KEY_asterisk,            SCIM_KEY_parenleft },
2115   { SCIM_KEY_plus,                SCIM_KEY_dead_grave },
2116   { SCIM_KEY_colon,               SCIM_KEY_Eacute },
2117   { SCIM_KEY_less,                SCIM_KEY_semicolon },
2118   { SCIM_KEY_greater,             SCIM_KEY_colon },
2119   { SCIM_KEY_question,            SCIM_KEY_underscore },
2120   { SCIM_KEY_at,                  SCIM_KEY_quotedbl },
2121   { SCIM_KEY_asciicircum,         SCIM_KEY_ampersand },
2122   { SCIM_KEY_underscore,          SCIM_KEY_question },
2123   { SCIM_KEY_y,                   SCIM_KEY_z },
2124   { SCIM_KEY_z,                   SCIM_KEY_y },
2125   { SCIM_KEY_braceleft,           SCIM_KEY_Egrave },
2126   { SCIM_KEY_bar,                 SCIM_KEY_sterling },
2127   { SCIM_KEY_braceright,          SCIM_KEY_exclam },
2128   { SCIM_KEY_asciitilde,          SCIM_KEY_degree },
2129 };
2130 
2131 static __Uint16Pair __hungarian_to_us_normal [] = {
2132   { SCIM_KEY_minus,               SCIM_KEY_slash },
2133   { SCIM_KEY_0,                   SCIM_KEY_grave },
2134   { SCIM_KEY_y,                   SCIM_KEY_z },
2135   { SCIM_KEY_z,                   SCIM_KEY_y },
2136   { SCIM_KEY_aacute,              SCIM_KEY_apostrophe },
2137   { SCIM_KEY_eacute,              SCIM_KEY_semicolon },
2138   { SCIM_KEY_oacute,              SCIM_KEY_equal },
2139   { SCIM_KEY_odiaeresis,          SCIM_KEY_0 },
2140   { SCIM_KEY_uacute,              SCIM_KEY_bracketright },
2141   { SCIM_KEY_udiaeresis,          SCIM_KEY_minus },
2142   { SCIM_KEY_odoubleacute,        SCIM_KEY_bracketleft },
2143   { SCIM_KEY_udoubleacute,        SCIM_KEY_backslash },
2144 };
2145 
2146 static __Uint16Pair __us_to_hungarian_normal [] = {
2147   { SCIM_KEY_apostrophe,          SCIM_KEY_aacute },
2148   { SCIM_KEY_minus,               SCIM_KEY_udiaeresis },
2149   { SCIM_KEY_slash,               SCIM_KEY_minus },
2150   { SCIM_KEY_0,                   SCIM_KEY_odiaeresis },
2151   { SCIM_KEY_semicolon,           SCIM_KEY_eacute },
2152   { SCIM_KEY_equal,               SCIM_KEY_oacute },
2153   { SCIM_KEY_bracketleft,         SCIM_KEY_odoubleacute },
2154   { SCIM_KEY_backslash,           SCIM_KEY_udoubleacute },
2155   { SCIM_KEY_bracketright,        SCIM_KEY_uacute },
2156   { SCIM_KEY_grave,               SCIM_KEY_0 },
2157   { SCIM_KEY_y,                   SCIM_KEY_z },
2158   { SCIM_KEY_z,                   SCIM_KEY_y },
2159 };
2160 
2161 static __Uint16Pair __hungarian_to_us_caps [] = {
2162   { SCIM_KEY_minus,               SCIM_KEY_slash },
2163   { SCIM_KEY_0,                   SCIM_KEY_grave },
2164   { SCIM_KEY_Y,                   SCIM_KEY_Z },
2165   { SCIM_KEY_Z,                   SCIM_KEY_Y },
2166   { SCIM_KEY_Aacute,              SCIM_KEY_apostrophe },
2167   { SCIM_KEY_Eacute,              SCIM_KEY_semicolon },
2168   { SCIM_KEY_Oacute,              SCIM_KEY_equal },
2169   { SCIM_KEY_Odiaeresis,          SCIM_KEY_0 },
2170   { SCIM_KEY_Uacute,              SCIM_KEY_bracketright },
2171   { SCIM_KEY_Udiaeresis,          SCIM_KEY_minus },
2172   { SCIM_KEY_Odoubleacute,        SCIM_KEY_bracketleft },
2173   { SCIM_KEY_Udoubleacute,        SCIM_KEY_backslash },
2174 };
2175 
2176 static __Uint16Pair __us_to_hungarian_caps [] = {
2177   { SCIM_KEY_apostrophe,          SCIM_KEY_Aacute },
2178   { SCIM_KEY_minus,               SCIM_KEY_Udiaeresis },
2179   { SCIM_KEY_slash,               SCIM_KEY_minus },
2180   { SCIM_KEY_0,                   SCIM_KEY_Odiaeresis },
2181   { SCIM_KEY_semicolon,           SCIM_KEY_Eacute },
2182   { SCIM_KEY_equal,               SCIM_KEY_Oacute },
2183   { SCIM_KEY_Y,                   SCIM_KEY_Z },
2184   { SCIM_KEY_Z,                   SCIM_KEY_Y },
2185   { SCIM_KEY_bracketleft,         SCIM_KEY_Odoubleacute },
2186   { SCIM_KEY_backslash,           SCIM_KEY_Udoubleacute },
2187   { SCIM_KEY_bracketright,        SCIM_KEY_Uacute },
2188   { SCIM_KEY_grave,               SCIM_KEY_0 },
2189 };
2190 
2191 static __Uint16Pair __hungarian_to_us_shift [] = {
2192   { SCIM_KEY_exclam,              SCIM_KEY_dollar },
2193   { SCIM_KEY_quotedbl,            SCIM_KEY_at },
2194   { SCIM_KEY_apostrophe,          SCIM_KEY_exclam },
2195   { SCIM_KEY_parenleft,           SCIM_KEY_asterisk },
2196   { SCIM_KEY_parenright,          SCIM_KEY_parenleft },
2197   { SCIM_KEY_plus,                SCIM_KEY_numbersign },
2198   { SCIM_KEY_slash,               SCIM_KEY_asciicircum },
2199   { SCIM_KEY_colon,               SCIM_KEY_greater },
2200   { SCIM_KEY_equal,               SCIM_KEY_ampersand },
2201   { SCIM_KEY_question,            SCIM_KEY_less },
2202   { SCIM_KEY_Y,                   SCIM_KEY_Z },
2203   { SCIM_KEY_Z,                   SCIM_KEY_Y },
2204   { SCIM_KEY_underscore,          SCIM_KEY_question },
2205   { SCIM_KEY_section,             SCIM_KEY_asciitilde },
2206   { SCIM_KEY_Aacute,              SCIM_KEY_quotedbl },
2207   { SCIM_KEY_Eacute,              SCIM_KEY_colon },
2208   { SCIM_KEY_Oacute,              SCIM_KEY_plus },
2209   { SCIM_KEY_Odiaeresis,          SCIM_KEY_parenright },
2210   { SCIM_KEY_Uacute,              SCIM_KEY_braceright },
2211   { SCIM_KEY_Udiaeresis,          SCIM_KEY_underscore },
2212   { SCIM_KEY_Odoubleacute,        SCIM_KEY_braceleft },
2213   { SCIM_KEY_Udoubleacute,        SCIM_KEY_bar },
2214 };
2215 
2216 static __Uint16Pair __us_to_hungarian_shift [] = {
2217   { SCIM_KEY_exclam,              SCIM_KEY_apostrophe },
2218   { SCIM_KEY_quotedbl,            SCIM_KEY_Aacute },
2219   { SCIM_KEY_numbersign,          SCIM_KEY_plus },
2220   { SCIM_KEY_dollar,              SCIM_KEY_exclam },
2221   { SCIM_KEY_ampersand,           SCIM_KEY_equal },
2222   { SCIM_KEY_parenleft,           SCIM_KEY_parenright },
2223   { SCIM_KEY_parenright,          SCIM_KEY_Odiaeresis },
2224   { SCIM_KEY_asterisk,            SCIM_KEY_parenleft },
2225   { SCIM_KEY_plus,                SCIM_KEY_Oacute },
2226   { SCIM_KEY_colon,               SCIM_KEY_Eacute },
2227   { SCIM_KEY_less,                SCIM_KEY_question },
2228   { SCIM_KEY_greater,             SCIM_KEY_colon },
2229   { SCIM_KEY_question,            SCIM_KEY_underscore },
2230   { SCIM_KEY_at,                  SCIM_KEY_quotedbl },
2231   { SCIM_KEY_Y,                   SCIM_KEY_Z },
2232   { SCIM_KEY_Z,                   SCIM_KEY_Y },
2233   { SCIM_KEY_asciicircum,         SCIM_KEY_slash },
2234   { SCIM_KEY_underscore,          SCIM_KEY_Udiaeresis },
2235   { SCIM_KEY_braceleft,           SCIM_KEY_Odoubleacute },
2236   { SCIM_KEY_bar,                 SCIM_KEY_Udoubleacute },
2237   { SCIM_KEY_braceright,          SCIM_KEY_Uacute },
2238   { SCIM_KEY_asciitilde,          SCIM_KEY_section },
2239 };
2240 
2241 static __Uint16Pair __hungarian_to_us_caps_shift [] = {
2242   { SCIM_KEY_exclam,              SCIM_KEY_dollar },
2243   { SCIM_KEY_quotedbl,            SCIM_KEY_at },
2244   { SCIM_KEY_apostrophe,          SCIM_KEY_exclam },
2245   { SCIM_KEY_parenleft,           SCIM_KEY_asterisk },
2246   { SCIM_KEY_parenright,          SCIM_KEY_parenleft },
2247   { SCIM_KEY_plus,                SCIM_KEY_numbersign },
2248   { SCIM_KEY_slash,               SCIM_KEY_asciicircum },
2249   { SCIM_KEY_colon,               SCIM_KEY_greater },
2250   { SCIM_KEY_equal,               SCIM_KEY_ampersand },
2251   { SCIM_KEY_question,            SCIM_KEY_less },
2252   { SCIM_KEY_underscore,          SCIM_KEY_question },
2253   { SCIM_KEY_y,                   SCIM_KEY_z },
2254   { SCIM_KEY_z,                   SCIM_KEY_y },
2255   { SCIM_KEY_section,             SCIM_KEY_asciitilde },
2256   { SCIM_KEY_aacute,              SCIM_KEY_quotedbl },
2257   { SCIM_KEY_eacute,              SCIM_KEY_colon },
2258   { SCIM_KEY_oacute,              SCIM_KEY_plus },
2259   { SCIM_KEY_odiaeresis,          SCIM_KEY_parenright },
2260   { SCIM_KEY_uacute,              SCIM_KEY_braceright },
2261   { SCIM_KEY_udiaeresis,          SCIM_KEY_underscore },
2262   { SCIM_KEY_odoubleacute,        SCIM_KEY_braceleft },
2263   { SCIM_KEY_udoubleacute,        SCIM_KEY_bar },
2264 };
2265 
2266 static __Uint16Pair __us_to_hungarian_caps_shift [] = {
2267   { SCIM_KEY_exclam,              SCIM_KEY_apostrophe },
2268   { SCIM_KEY_quotedbl,            SCIM_KEY_aacute },
2269   { SCIM_KEY_numbersign,          SCIM_KEY_plus },
2270   { SCIM_KEY_dollar,              SCIM_KEY_exclam },
2271   { SCIM_KEY_ampersand,           SCIM_KEY_equal },
2272   { SCIM_KEY_parenleft,           SCIM_KEY_parenright },
2273   { SCIM_KEY_parenright,          SCIM_KEY_odiaeresis },
2274   { SCIM_KEY_asterisk,            SCIM_KEY_parenleft },
2275   { SCIM_KEY_plus,                SCIM_KEY_oacute },
2276   { SCIM_KEY_colon,               SCIM_KEY_eacute },
2277   { SCIM_KEY_less,                SCIM_KEY_question },
2278   { SCIM_KEY_greater,             SCIM_KEY_colon },
2279   { SCIM_KEY_question,            SCIM_KEY_underscore },
2280   { SCIM_KEY_at,                  SCIM_KEY_quotedbl },
2281   { SCIM_KEY_asciicircum,         SCIM_KEY_slash },
2282   { SCIM_KEY_underscore,          SCIM_KEY_udiaeresis },
2283   { SCIM_KEY_y,                   SCIM_KEY_z },
2284   { SCIM_KEY_z,                   SCIM_KEY_y },
2285   { SCIM_KEY_braceleft,           SCIM_KEY_odoubleacute },
2286   { SCIM_KEY_bar,                 SCIM_KEY_udoubleacute },
2287   { SCIM_KEY_braceright,          SCIM_KEY_uacute },
2288   { SCIM_KEY_asciitilde,          SCIM_KEY_section },
2289 };
2290 
2291 static __Uint16Pair __italian_to_us_normal [] = {
2292   { SCIM_KEY_apostrophe,          SCIM_KEY_minus },
2293   { SCIM_KEY_plus,                SCIM_KEY_bracketright },
2294   { SCIM_KEY_minus,               SCIM_KEY_slash },
2295   { SCIM_KEY_backslash,           SCIM_KEY_grave },
2296   { SCIM_KEY_agrave,              SCIM_KEY_apostrophe },
2297   { SCIM_KEY_egrave,              SCIM_KEY_bracketleft },
2298   { SCIM_KEY_igrave,              SCIM_KEY_equal },
2299   { SCIM_KEY_ograve,              SCIM_KEY_semicolon },
2300   { SCIM_KEY_ugrave,              SCIM_KEY_backslash },
2301 };
2302 
2303 static __Uint16Pair __us_to_italian_normal [] = {
2304   { SCIM_KEY_apostrophe,          SCIM_KEY_agrave },
2305   { SCIM_KEY_minus,               SCIM_KEY_apostrophe },
2306   { SCIM_KEY_slash,               SCIM_KEY_minus },
2307   { SCIM_KEY_semicolon,           SCIM_KEY_ograve },
2308   { SCIM_KEY_equal,               SCIM_KEY_igrave },
2309   { SCIM_KEY_bracketleft,         SCIM_KEY_egrave },
2310   { SCIM_KEY_backslash,           SCIM_KEY_ugrave },
2311   { SCIM_KEY_bracketright,        SCIM_KEY_plus },
2312   { SCIM_KEY_grave,               SCIM_KEY_backslash },
2313 };
2314 
2315 static __Uint16Pair __italian_to_us_caps [] = {
2316   { SCIM_KEY_apostrophe,          SCIM_KEY_minus },
2317   { SCIM_KEY_plus,                SCIM_KEY_bracketright },
2318   { SCIM_KEY_minus,               SCIM_KEY_slash },
2319   { SCIM_KEY_backslash,           SCIM_KEY_grave },
2320   { SCIM_KEY_Agrave,              SCIM_KEY_apostrophe },
2321   { SCIM_KEY_Egrave,              SCIM_KEY_bracketleft },
2322   { SCIM_KEY_Igrave,              SCIM_KEY_equal },
2323   { SCIM_KEY_Ograve,              SCIM_KEY_semicolon },
2324   { SCIM_KEY_Ugrave,              SCIM_KEY_backslash },
2325 };
2326 
2327 static __Uint16Pair __us_to_italian_caps [] = {
2328   { SCIM_KEY_apostrophe,          SCIM_KEY_Agrave },
2329   { SCIM_KEY_minus,               SCIM_KEY_apostrophe },
2330   { SCIM_KEY_slash,               SCIM_KEY_minus },
2331   { SCIM_KEY_semicolon,           SCIM_KEY_Ograve },
2332   { SCIM_KEY_equal,               SCIM_KEY_Igrave },
2333   { SCIM_KEY_bracketleft,         SCIM_KEY_Egrave },
2334   { SCIM_KEY_backslash,           SCIM_KEY_Ugrave },
2335   { SCIM_KEY_bracketright,        SCIM_KEY_plus },
2336   { SCIM_KEY_grave,               SCIM_KEY_backslash },
2337 };
2338 
2339 static __Uint16Pair __italian_to_us_shift [] = {
2340   { SCIM_KEY_quotedbl,            SCIM_KEY_at },
2341   { SCIM_KEY_ampersand,           SCIM_KEY_asciicircum },
2342   { SCIM_KEY_parenleft,           SCIM_KEY_asterisk },
2343   { SCIM_KEY_parenright,          SCIM_KEY_parenleft },
2344   { SCIM_KEY_asterisk,            SCIM_KEY_braceright },
2345   { SCIM_KEY_slash,               SCIM_KEY_ampersand },
2346   { SCIM_KEY_colon,               SCIM_KEY_greater },
2347   { SCIM_KEY_semicolon,           SCIM_KEY_less },
2348   { SCIM_KEY_equal,               SCIM_KEY_parenright },
2349   { SCIM_KEY_question,            SCIM_KEY_underscore },
2350   { SCIM_KEY_asciicircum,         SCIM_KEY_plus },
2351   { SCIM_KEY_underscore,          SCIM_KEY_question },
2352   { SCIM_KEY_bar,                 SCIM_KEY_asciitilde },
2353   { SCIM_KEY_sterling,            SCIM_KEY_numbersign },
2354   { SCIM_KEY_section,             SCIM_KEY_bar },
2355   { SCIM_KEY_degree,              SCIM_KEY_quotedbl },
2356   { SCIM_KEY_ccedilla,            SCIM_KEY_colon },
2357   { SCIM_KEY_eacute,              SCIM_KEY_braceleft },
2358 };
2359 
2360 static __Uint16Pair __us_to_italian_shift [] = {
2361   { SCIM_KEY_quotedbl,            SCIM_KEY_degree },
2362   { SCIM_KEY_numbersign,          SCIM_KEY_sterling },
2363   { SCIM_KEY_ampersand,           SCIM_KEY_slash },
2364   { SCIM_KEY_parenleft,           SCIM_KEY_parenright },
2365   { SCIM_KEY_parenright,          SCIM_KEY_equal },
2366   { SCIM_KEY_asterisk,            SCIM_KEY_parenleft },
2367   { SCIM_KEY_plus,                SCIM_KEY_asciicircum },
2368   { SCIM_KEY_colon,               SCIM_KEY_ccedilla },
2369   { SCIM_KEY_less,                SCIM_KEY_semicolon },
2370   { SCIM_KEY_greater,             SCIM_KEY_colon },
2371   { SCIM_KEY_question,            SCIM_KEY_underscore },
2372   { SCIM_KEY_at,                  SCIM_KEY_quotedbl },
2373   { SCIM_KEY_asciicircum,         SCIM_KEY_ampersand },
2374   { SCIM_KEY_underscore,          SCIM_KEY_question },
2375   { SCIM_KEY_braceleft,           SCIM_KEY_eacute },
2376   { SCIM_KEY_bar,                 SCIM_KEY_section },
2377   { SCIM_KEY_braceright,          SCIM_KEY_asterisk },
2378   { SCIM_KEY_asciitilde,          SCIM_KEY_bar },
2379 };
2380 
2381 static __Uint16Pair __italian_to_us_caps_shift [] = {
2382   { SCIM_KEY_quotedbl,            SCIM_KEY_at },
2383   { SCIM_KEY_ampersand,           SCIM_KEY_asciicircum },
2384   { SCIM_KEY_parenleft,           SCIM_KEY_asterisk },
2385   { SCIM_KEY_parenright,          SCIM_KEY_parenleft },
2386   { SCIM_KEY_asterisk,            SCIM_KEY_braceright },
2387   { SCIM_KEY_slash,               SCIM_KEY_ampersand },
2388   { SCIM_KEY_colon,               SCIM_KEY_greater },
2389   { SCIM_KEY_semicolon,           SCIM_KEY_less },
2390   { SCIM_KEY_equal,               SCIM_KEY_parenright },
2391   { SCIM_KEY_question,            SCIM_KEY_underscore },
2392   { SCIM_KEY_asciicircum,         SCIM_KEY_plus },
2393   { SCIM_KEY_underscore,          SCIM_KEY_question },
2394   { SCIM_KEY_bar,                 SCIM_KEY_asciitilde },
2395   { SCIM_KEY_sterling,            SCIM_KEY_numbersign },
2396   { SCIM_KEY_section,             SCIM_KEY_bar },
2397   { SCIM_KEY_degree,              SCIM_KEY_quotedbl },
2398   { SCIM_KEY_Ccedilla,            SCIM_KEY_colon },
2399   { SCIM_KEY_Eacute,              SCIM_KEY_braceleft },
2400 };
2401 
2402 static __Uint16Pair __us_to_italian_caps_shift [] = {
2403   { SCIM_KEY_quotedbl,            SCIM_KEY_degree },
2404   { SCIM_KEY_numbersign,          SCIM_KEY_sterling },
2405   { SCIM_KEY_ampersand,           SCIM_KEY_slash },
2406   { SCIM_KEY_parenleft,           SCIM_KEY_parenright },
2407   { SCIM_KEY_parenright,          SCIM_KEY_equal },
2408   { SCIM_KEY_asterisk,            SCIM_KEY_parenleft },
2409   { SCIM_KEY_plus,                SCIM_KEY_asciicircum },
2410   { SCIM_KEY_colon,               SCIM_KEY_Ccedilla },
2411   { SCIM_KEY_less,                SCIM_KEY_semicolon },
2412   { SCIM_KEY_greater,             SCIM_KEY_colon },
2413   { SCIM_KEY_question,            SCIM_KEY_underscore },
2414   { SCIM_KEY_at,                  SCIM_KEY_quotedbl },
2415   { SCIM_KEY_asciicircum,         SCIM_KEY_ampersand },
2416   { SCIM_KEY_underscore,          SCIM_KEY_question },
2417   { SCIM_KEY_braceleft,           SCIM_KEY_Eacute },
2418   { SCIM_KEY_bar,                 SCIM_KEY_section },
2419   { SCIM_KEY_braceright,          SCIM_KEY_asterisk },
2420   { SCIM_KEY_asciitilde,          SCIM_KEY_bar },
2421 };
2422 
2423 static __Uint16Pair __japanese_to_us_normal [] = {
2424   { SCIM_KEY_colon,               SCIM_KEY_apostrophe },
2425   { SCIM_KEY_at,                  SCIM_KEY_bracketleft },
2426   { SCIM_KEY_bracketleft,         SCIM_KEY_bracketright },
2427   { SCIM_KEY_bracketright,        SCIM_KEY_backslash },
2428   { SCIM_KEY_asciicircum,         SCIM_KEY_equal },
2429   { SCIM_KEY_Zenkaku_Hankaku,     SCIM_KEY_grave },
2430 };
2431 
2432 static __Uint16Pair __us_to_japanese_normal [] = {
2433   { SCIM_KEY_apostrophe,          SCIM_KEY_colon },
2434   { SCIM_KEY_equal,               SCIM_KEY_asciicircum },
2435   { SCIM_KEY_bracketleft,         SCIM_KEY_at },
2436   { SCIM_KEY_backslash,           SCIM_KEY_bracketright },
2437   { SCIM_KEY_bracketright,        SCIM_KEY_bracketleft },
2438   { SCIM_KEY_grave,               SCIM_KEY_Zenkaku_Hankaku },
2439 };
2440 
2441 static __Uint16Pair __japanese_to_us_caps [] = {
2442   { SCIM_KEY_colon,               SCIM_KEY_apostrophe },
2443   { SCIM_KEY_at,                  SCIM_KEY_bracketleft },
2444   { SCIM_KEY_bracketleft,         SCIM_KEY_bracketright },
2445   { SCIM_KEY_bracketright,        SCIM_KEY_backslash },
2446   { SCIM_KEY_asciicircum,         SCIM_KEY_equal },
2447   { SCIM_KEY_Zenkaku_Hankaku,     SCIM_KEY_grave },
2448 };
2449 
2450 static __Uint16Pair __us_to_japanese_caps [] = {
2451   { SCIM_KEY_apostrophe,          SCIM_KEY_colon },
2452   { SCIM_KEY_equal,               SCIM_KEY_asciicircum },
2453   { SCIM_KEY_bracketleft,         SCIM_KEY_at },
2454   { SCIM_KEY_backslash,           SCIM_KEY_bracketright },
2455   { SCIM_KEY_bracketright,        SCIM_KEY_bracketleft },
2456   { SCIM_KEY_grave,               SCIM_KEY_Zenkaku_Hankaku },
2457 };
2458 
2459 static __Uint16Pair __japanese_to_us_shift [] = {
2460   { SCIM_KEY_quotedbl,            SCIM_KEY_at },
2461   { SCIM_KEY_ampersand,           SCIM_KEY_asciicircum },
2462   { SCIM_KEY_apostrophe,          SCIM_KEY_ampersand },
2463   { SCIM_KEY_parenleft,           SCIM_KEY_asterisk },
2464   { SCIM_KEY_parenright,          SCIM_KEY_parenleft },
2465   { SCIM_KEY_asterisk,            SCIM_KEY_quotedbl },
2466   { SCIM_KEY_plus,                SCIM_KEY_colon },
2467   { SCIM_KEY_equal,               SCIM_KEY_underscore },
2468   { SCIM_KEY_grave,               SCIM_KEY_braceleft },
2469   { SCIM_KEY_braceleft,           SCIM_KEY_braceright },
2470   { SCIM_KEY_braceright,          SCIM_KEY_bar },
2471   { SCIM_KEY_asciitilde,          SCIM_KEY_parenright },
2472   { SCIM_KEY_asciitilde,          SCIM_KEY_plus },
2473   { SCIM_KEY_Zenkaku_Hankaku,     SCIM_KEY_asciitilde },
2474 };
2475 
2476 static __Uint16Pair __us_to_japanese_shift [] = {
2477   { SCIM_KEY_quotedbl,            SCIM_KEY_asterisk },
2478   { SCIM_KEY_ampersand,           SCIM_KEY_apostrophe },
2479   { SCIM_KEY_parenleft,           SCIM_KEY_parenright },
2480   { SCIM_KEY_parenright,          SCIM_KEY_asciitilde },
2481   { SCIM_KEY_asterisk,            SCIM_KEY_parenleft },
2482   { SCIM_KEY_plus,                SCIM_KEY_asciitilde },
2483   { SCIM_KEY_colon,               SCIM_KEY_plus },
2484   { SCIM_KEY_at,                  SCIM_KEY_quotedbl },
2485   { SCIM_KEY_asciicircum,         SCIM_KEY_ampersand },
2486   { SCIM_KEY_underscore,          SCIM_KEY_equal },
2487   { SCIM_KEY_braceleft,           SCIM_KEY_grave },
2488   { SCIM_KEY_bar,                 SCIM_KEY_braceright },
2489   { SCIM_KEY_braceright,          SCIM_KEY_braceleft },
2490   { SCIM_KEY_asciitilde,          SCIM_KEY_Zenkaku_Hankaku },
2491 };
2492 
2493 static __Uint16Pair __japanese_to_us_caps_shift [] = {
2494   { SCIM_KEY_quotedbl,            SCIM_KEY_at },
2495   { SCIM_KEY_ampersand,           SCIM_KEY_asciicircum },
2496   { SCIM_KEY_apostrophe,          SCIM_KEY_ampersand },
2497   { SCIM_KEY_parenleft,           SCIM_KEY_asterisk },
2498   { SCIM_KEY_parenright,          SCIM_KEY_parenleft },
2499   { SCIM_KEY_asterisk,            SCIM_KEY_quotedbl },
2500   { SCIM_KEY_plus,                SCIM_KEY_colon },
2501   { SCIM_KEY_equal,               SCIM_KEY_underscore },
2502   { SCIM_KEY_grave,               SCIM_KEY_braceleft },
2503   { SCIM_KEY_braceleft,           SCIM_KEY_braceright },
2504   { SCIM_KEY_braceright,          SCIM_KEY_bar },
2505   { SCIM_KEY_asciitilde,          SCIM_KEY_parenright },
2506   { SCIM_KEY_asciitilde,          SCIM_KEY_plus },
2507   { SCIM_KEY_Zenkaku_Hankaku,     SCIM_KEY_asciitilde },
2508 };
2509 
2510 static __Uint16Pair __us_to_japanese_caps_shift [] = {
2511   { SCIM_KEY_quotedbl,            SCIM_KEY_asterisk },
2512   { SCIM_KEY_ampersand,           SCIM_KEY_apostrophe },
2513   { SCIM_KEY_parenleft,           SCIM_KEY_parenright },
2514   { SCIM_KEY_parenright,          SCIM_KEY_asciitilde },
2515   { SCIM_KEY_asterisk,            SCIM_KEY_parenleft },
2516   { SCIM_KEY_plus,                SCIM_KEY_asciitilde },
2517   { SCIM_KEY_colon,               SCIM_KEY_plus },
2518   { SCIM_KEY_at,                  SCIM_KEY_quotedbl },
2519   { SCIM_KEY_asciicircum,         SCIM_KEY_ampersand },
2520   { SCIM_KEY_underscore,          SCIM_KEY_equal },
2521   { SCIM_KEY_braceleft,           SCIM_KEY_grave },
2522   { SCIM_KEY_bar,                 SCIM_KEY_braceright },
2523   { SCIM_KEY_braceright,          SCIM_KEY_braceleft },
2524   { SCIM_KEY_asciitilde,          SCIM_KEY_Zenkaku_Hankaku },
2525 };
2526 
2527 static __Uint16Pair __norwegian_to_us_normal [] = {
2528   { SCIM_KEY_apostrophe,          SCIM_KEY_backslash },
2529   { SCIM_KEY_plus,                SCIM_KEY_minus },
2530   { SCIM_KEY_minus,               SCIM_KEY_slash },
2531   { SCIM_KEY_backslash,           SCIM_KEY_equal },
2532   { SCIM_KEY_bar,                 SCIM_KEY_grave },
2533   { SCIM_KEY_aring,               SCIM_KEY_bracketleft },
2534   { SCIM_KEY_ae,                  SCIM_KEY_apostrophe },
2535   { SCIM_KEY_oslash,              SCIM_KEY_semicolon },
2536   { SCIM_KEY_dead_diaeresis,      SCIM_KEY_bracketright },
2537 };
2538 
2539 static __Uint16Pair __us_to_norwegian_normal [] = {
2540   { SCIM_KEY_apostrophe,          SCIM_KEY_ae },
2541   { SCIM_KEY_minus,               SCIM_KEY_plus },
2542   { SCIM_KEY_slash,               SCIM_KEY_minus },
2543   { SCIM_KEY_semicolon,           SCIM_KEY_oslash },
2544   { SCIM_KEY_equal,               SCIM_KEY_backslash },
2545   { SCIM_KEY_bracketleft,         SCIM_KEY_aring },
2546   { SCIM_KEY_backslash,           SCIM_KEY_apostrophe },
2547   { SCIM_KEY_bracketright,        SCIM_KEY_dead_diaeresis },
2548   { SCIM_KEY_grave,               SCIM_KEY_bar },
2549 };
2550 
2551 static __Uint16Pair __norwegian_to_us_caps [] = {
2552   { SCIM_KEY_apostrophe,          SCIM_KEY_backslash },
2553   { SCIM_KEY_plus,                SCIM_KEY_minus },
2554   { SCIM_KEY_minus,               SCIM_KEY_slash },
2555   { SCIM_KEY_backslash,           SCIM_KEY_equal },
2556   { SCIM_KEY_bar,                 SCIM_KEY_grave },
2557   { SCIM_KEY_Aring,               SCIM_KEY_bracketleft },
2558   { SCIM_KEY_AE,                  SCIM_KEY_apostrophe },
2559   { SCIM_KEY_Ooblique,            SCIM_KEY_semicolon },
2560   { SCIM_KEY_dead_diaeresis,      SCIM_KEY_bracketright },
2561 };
2562 
2563 static __Uint16Pair __us_to_norwegian_caps [] = {
2564   { SCIM_KEY_apostrophe,          SCIM_KEY_AE },
2565   { SCIM_KEY_minus,               SCIM_KEY_plus },
2566   { SCIM_KEY_slash,               SCIM_KEY_minus },
2567   { SCIM_KEY_semicolon,           SCIM_KEY_Ooblique },
2568   { SCIM_KEY_equal,               SCIM_KEY_backslash },
2569   { SCIM_KEY_bracketleft,         SCIM_KEY_Aring },
2570   { SCIM_KEY_backslash,           SCIM_KEY_apostrophe },
2571   { SCIM_KEY_bracketright,        SCIM_KEY_dead_diaeresis },
2572   { SCIM_KEY_grave,               SCIM_KEY_bar },
2573 };
2574 
2575 static __Uint16Pair __norwegian_to_us_shift [] = {
2576   { SCIM_KEY_quotedbl,            SCIM_KEY_at },
2577   { SCIM_KEY_ampersand,           SCIM_KEY_asciicircum },
2578   { SCIM_KEY_parenleft,           SCIM_KEY_asterisk },
2579   { SCIM_KEY_parenright,          SCIM_KEY_parenleft },
2580   { SCIM_KEY_asterisk,            SCIM_KEY_bar },
2581   { SCIM_KEY_slash,               SCIM_KEY_ampersand },
2582   { SCIM_KEY_colon,               SCIM_KEY_greater },
2583   { SCIM_KEY_semicolon,           SCIM_KEY_less },
2584   { SCIM_KEY_equal,               SCIM_KEY_parenright },
2585   { SCIM_KEY_question,            SCIM_KEY_underscore },
2586   { SCIM_KEY_underscore,          SCIM_KEY_question },
2587   { SCIM_KEY_currency,            SCIM_KEY_dollar },
2588   { SCIM_KEY_section,             SCIM_KEY_asciitilde },
2589   { SCIM_KEY_Aring,               SCIM_KEY_braceleft },
2590   { SCIM_KEY_AE,                  SCIM_KEY_quotedbl },
2591   { SCIM_KEY_Ooblique,            SCIM_KEY_colon },
2592   { SCIM_KEY_dead_grave,          SCIM_KEY_plus },
2593   { SCIM_KEY_dead_circumflex,     SCIM_KEY_braceright },
2594 };
2595 
2596 static __Uint16Pair __us_to_norwegian_shift [] = {
2597   { SCIM_KEY_quotedbl,            SCIM_KEY_AE },
2598   { SCIM_KEY_dollar,              SCIM_KEY_currency },
2599   { SCIM_KEY_ampersand,           SCIM_KEY_slash },
2600   { SCIM_KEY_parenleft,           SCIM_KEY_parenright },
2601   { SCIM_KEY_parenright,          SCIM_KEY_equal },
2602   { SCIM_KEY_asterisk,            SCIM_KEY_parenleft },
2603   { SCIM_KEY_plus,                SCIM_KEY_dead_grave },
2604   { SCIM_KEY_colon,               SCIM_KEY_Ooblique },
2605   { SCIM_KEY_less,                SCIM_KEY_semicolon },
2606   { SCIM_KEY_greater,             SCIM_KEY_colon },
2607   { SCIM_KEY_question,            SCIM_KEY_underscore },
2608   { SCIM_KEY_at,                  SCIM_KEY_quotedbl },
2609   { SCIM_KEY_asciicircum,         SCIM_KEY_ampersand },
2610   { SCIM_KEY_underscore,          SCIM_KEY_question },
2611   { SCIM_KEY_braceleft,           SCIM_KEY_Aring },
2612   { SCIM_KEY_bar,                 SCIM_KEY_asterisk },
2613   { SCIM_KEY_braceright,          SCIM_KEY_dead_circumflex },
2614   { SCIM_KEY_asciitilde,          SCIM_KEY_section },
2615 };
2616 
2617 static __Uint16Pair __norwegian_to_us_caps_shift [] = {
2618   { SCIM_KEY_quotedbl,            SCIM_KEY_at },
2619   { SCIM_KEY_ampersand,           SCIM_KEY_asciicircum },
2620   { SCIM_KEY_parenleft,           SCIM_KEY_asterisk },
2621   { SCIM_KEY_parenright,          SCIM_KEY_parenleft },
2622   { SCIM_KEY_asterisk,            SCIM_KEY_bar },
2623   { SCIM_KEY_slash,               SCIM_KEY_ampersand },
2624   { SCIM_KEY_colon,               SCIM_KEY_greater },
2625   { SCIM_KEY_semicolon,           SCIM_KEY_less },
2626   { SCIM_KEY_equal,               SCIM_KEY_parenright },
2627   { SCIM_KEY_question,            SCIM_KEY_underscore },
2628   { SCIM_KEY_underscore,          SCIM_KEY_question },
2629   { SCIM_KEY_currency,            SCIM_KEY_dollar },
2630   { SCIM_KEY_section,             SCIM_KEY_asciitilde },
2631   { SCIM_KEY_aring,               SCIM_KEY_braceleft },
2632   { SCIM_KEY_ae,                  SCIM_KEY_quotedbl },
2633   { SCIM_KEY_oslash,              SCIM_KEY_colon },
2634   { SCIM_KEY_dead_grave,          SCIM_KEY_plus },
2635   { SCIM_KEY_dead_circumflex,     SCIM_KEY_braceright },
2636 };
2637 
2638 static __Uint16Pair __us_to_norwegian_caps_shift [] = {
2639   { SCIM_KEY_quotedbl,            SCIM_KEY_ae },
2640   { SCIM_KEY_dollar,              SCIM_KEY_currency },
2641   { SCIM_KEY_ampersand,           SCIM_KEY_slash },
2642   { SCIM_KEY_parenleft,           SCIM_KEY_parenright },
2643   { SCIM_KEY_parenright,          SCIM_KEY_equal },
2644   { SCIM_KEY_asterisk,            SCIM_KEY_parenleft },
2645   { SCIM_KEY_plus,                SCIM_KEY_dead_grave },
2646   { SCIM_KEY_colon,               SCIM_KEY_oslash },
2647   { SCIM_KEY_less,                SCIM_KEY_semicolon },
2648   { SCIM_KEY_greater,             SCIM_KEY_colon },
2649   { SCIM_KEY_question,            SCIM_KEY_underscore },
2650   { SCIM_KEY_at,                  SCIM_KEY_quotedbl },
2651   { SCIM_KEY_asciicircum,         SCIM_KEY_ampersand },
2652   { SCIM_KEY_underscore,          SCIM_KEY_question },
2653   { SCIM_KEY_braceleft,           SCIM_KEY_aring },
2654   { SCIM_KEY_bar,                 SCIM_KEY_asterisk },
2655   { SCIM_KEY_braceright,          SCIM_KEY_dead_circumflex },
2656   { SCIM_KEY_asciitilde,          SCIM_KEY_section },
2657 };
2658 
2659 static __Uint16Pair __portuguese_brazil_to_us_normal [] = {
2660   { SCIM_KEY_apostrophe,          SCIM_KEY_grave },
2661   { SCIM_KEY_semicolon,           SCIM_KEY_slash },
2662   { SCIM_KEY_bracketleft,         SCIM_KEY_bracketright },
2663   { SCIM_KEY_bracketright,        SCIM_KEY_backslash },
2664   { SCIM_KEY_ccedilla,            SCIM_KEY_semicolon },
2665   { SCIM_KEY_dead_acute,          SCIM_KEY_bracketleft },
2666   { SCIM_KEY_dead_tilde,          SCIM_KEY_apostrophe },
2667 };
2668 
2669 static __Uint16Pair __us_to_portuguese_brazil_normal [] = {
2670   { SCIM_KEY_apostrophe,          SCIM_KEY_dead_tilde },
2671   { SCIM_KEY_slash,               SCIM_KEY_semicolon },
2672   { SCIM_KEY_semicolon,           SCIM_KEY_ccedilla },
2673   { SCIM_KEY_bracketleft,         SCIM_KEY_dead_acute },
2674   { SCIM_KEY_backslash,           SCIM_KEY_bracketright },
2675   { SCIM_KEY_bracketright,        SCIM_KEY_bracketleft },
2676   { SCIM_KEY_grave,               SCIM_KEY_apostrophe },
2677 };
2678 
2679 static __Uint16Pair __portuguese_brazil_to_us_caps [] = {
2680   { SCIM_KEY_apostrophe,          SCIM_KEY_grave },
2681   { SCIM_KEY_semicolon,           SCIM_KEY_slash },
2682   { SCIM_KEY_bracketleft,         SCIM_KEY_bracketright },
2683   { SCIM_KEY_bracketright,        SCIM_KEY_backslash },
2684   { SCIM_KEY_Ccedilla,            SCIM_KEY_semicolon },
2685   { SCIM_KEY_dead_acute,          SCIM_KEY_bracketleft },
2686   { SCIM_KEY_dead_tilde,          SCIM_KEY_apostrophe },
2687 };
2688 
2689 static __Uint16Pair __us_to_portuguese_brazil_caps [] = {
2690   { SCIM_KEY_apostrophe,          SCIM_KEY_dead_tilde },
2691   { SCIM_KEY_slash,               SCIM_KEY_semicolon },
2692   { SCIM_KEY_semicolon,           SCIM_KEY_Ccedilla },
2693   { SCIM_KEY_bracketleft,         SCIM_KEY_dead_acute },
2694   { SCIM_KEY_backslash,           SCIM_KEY_bracketright },
2695   { SCIM_KEY_bracketright,        SCIM_KEY_bracketleft },
2696   { SCIM_KEY_grave,               SCIM_KEY_apostrophe },
2697 };
2698 
2699 static __Uint16Pair __portuguese_brazil_to_us_shift [] = {
2700   { SCIM_KEY_quotedbl,            SCIM_KEY_asciitilde },
2701   { SCIM_KEY_colon,               SCIM_KEY_question },
2702   { SCIM_KEY_braceleft,           SCIM_KEY_braceright },
2703   { SCIM_KEY_braceright,          SCIM_KEY_bar },
2704   { SCIM_KEY_Ccedilla,            SCIM_KEY_colon },
2705   { SCIM_KEY_dead_grave,          SCIM_KEY_braceleft },
2706   { SCIM_KEY_dead_circumflex,     SCIM_KEY_quotedbl },
2707   { SCIM_KEY_dead_diaeresis,      SCIM_KEY_asciicircum },
2708 };
2709 
2710 static __Uint16Pair __us_to_portuguese_brazil_shift [] = {
2711   { SCIM_KEY_quotedbl,            SCIM_KEY_dead_circumflex },
2712   { SCIM_KEY_colon,               SCIM_KEY_Ccedilla },
2713   { SCIM_KEY_question,            SCIM_KEY_colon },
2714   { SCIM_KEY_asciicircum,         SCIM_KEY_dead_diaeresis },
2715   { SCIM_KEY_braceleft,           SCIM_KEY_dead_grave },
2716   { SCIM_KEY_bar,                 SCIM_KEY_braceright },
2717   { SCIM_KEY_braceright,          SCIM_KEY_braceleft },
2718   { SCIM_KEY_asciitilde,          SCIM_KEY_quotedbl },
2719 };
2720 
2721 static __Uint16Pair __portuguese_brazil_to_us_caps_shift [] = {
2722   { SCIM_KEY_quotedbl,            SCIM_KEY_asciitilde },
2723   { SCIM_KEY_colon,               SCIM_KEY_question },
2724   { SCIM_KEY_braceleft,           SCIM_KEY_braceright },
2725   { SCIM_KEY_braceright,          SCIM_KEY_bar },
2726   { SCIM_KEY_ccedilla,            SCIM_KEY_colon },
2727   { SCIM_KEY_dead_grave,          SCIM_KEY_braceleft },
2728   { SCIM_KEY_dead_circumflex,     SCIM_KEY_quotedbl },
2729   { SCIM_KEY_dead_diaeresis,      SCIM_KEY_asciicircum },
2730 };
2731 
2732 static __Uint16Pair __us_to_portuguese_brazil_caps_shift [] = {
2733   { SCIM_KEY_quotedbl,            SCIM_KEY_dead_circumflex },
2734   { SCIM_KEY_colon,               SCIM_KEY_ccedilla },
2735   { SCIM_KEY_question,            SCIM_KEY_colon },
2736   { SCIM_KEY_asciicircum,         SCIM_KEY_dead_diaeresis },
2737   { SCIM_KEY_braceleft,           SCIM_KEY_dead_grave },
2738   { SCIM_KEY_bar,                 SCIM_KEY_braceright },
2739   { SCIM_KEY_braceright,          SCIM_KEY_braceleft },
2740   { SCIM_KEY_asciitilde,          SCIM_KEY_quotedbl },
2741 };
2742 
2743 static __Uint16Pair __portuguese_brazil_us_accents_to_us_normal [] = {
2744   { SCIM_KEY_dead_grave,          SCIM_KEY_grave },
2745   { SCIM_KEY_dead_acute,          SCIM_KEY_apostrophe },
2746 };
2747 
2748 static __Uint16Pair __us_to_portuguese_brazil_us_accents_normal [] = {
2749   { SCIM_KEY_apostrophe,          SCIM_KEY_dead_acute },
2750   { SCIM_KEY_grave,               SCIM_KEY_dead_grave },
2751 };
2752 
2753 static __Uint16Pair __portuguese_brazil_us_accents_to_us_caps [] = {
2754   { SCIM_KEY_dead_grave,          SCIM_KEY_grave },
2755   { SCIM_KEY_dead_acute,          SCIM_KEY_apostrophe },
2756 };
2757 
2758 static __Uint16Pair __us_to_portuguese_brazil_us_accents_caps [] = {
2759   { SCIM_KEY_apostrophe,          SCIM_KEY_dead_acute },
2760   { SCIM_KEY_grave,               SCIM_KEY_dead_grave },
2761 };
2762 
2763 static __Uint16Pair __portuguese_brazil_us_accents_to_us_shift [] = {
2764   { SCIM_KEY_dead_circumflex,     SCIM_KEY_asciicircum },
2765   { SCIM_KEY_dead_tilde,          SCIM_KEY_asciitilde },
2766   { SCIM_KEY_dead_diaeresis,      SCIM_KEY_quotedbl },
2767 };
2768 
2769 static __Uint16Pair __us_to_portuguese_brazil_us_accents_shift [] = {
2770   { SCIM_KEY_quotedbl,            SCIM_KEY_dead_diaeresis },
2771   { SCIM_KEY_asciicircum,         SCIM_KEY_dead_circumflex },
2772   { SCIM_KEY_asciitilde,          SCIM_KEY_dead_tilde },
2773 };
2774 
2775 static __Uint16Pair __portuguese_brazil_us_accents_to_us_caps_shift [] = {
2776   { SCIM_KEY_dead_circumflex,     SCIM_KEY_asciicircum },
2777   { SCIM_KEY_dead_tilde,          SCIM_KEY_asciitilde },
2778   { SCIM_KEY_dead_diaeresis,      SCIM_KEY_quotedbl },
2779 };
2780 
2781 static __Uint16Pair __us_to_portuguese_brazil_us_accents_caps_shift [] = {
2782   { SCIM_KEY_quotedbl,            SCIM_KEY_dead_diaeresis },
2783   { SCIM_KEY_asciicircum,         SCIM_KEY_dead_circumflex },
2784   { SCIM_KEY_asciitilde,          SCIM_KEY_dead_tilde },
2785 };
2786 
2787 static __Uint16Pair __portuguese_to_us_normal [] = {
2788   { SCIM_KEY_apostrophe,          SCIM_KEY_minus },
2789   { SCIM_KEY_plus,                SCIM_KEY_bracketleft },
2790   { SCIM_KEY_minus,               SCIM_KEY_slash },
2791   { SCIM_KEY_backslash,           SCIM_KEY_grave },
2792   { SCIM_KEY_asciitilde,          SCIM_KEY_backslash },
2793   { SCIM_KEY_guillemotleft,       SCIM_KEY_equal },
2794   { SCIM_KEY_acute,               SCIM_KEY_bracketright },
2795   { SCIM_KEY_masculine,           SCIM_KEY_apostrophe },
2796   { SCIM_KEY_ccedilla,            SCIM_KEY_semicolon },
2797 };
2798 
2799 static __Uint16Pair __us_to_portuguese_normal [] = {
2800   { SCIM_KEY_apostrophe,          SCIM_KEY_masculine },
2801   { SCIM_KEY_minus,               SCIM_KEY_apostrophe },
2802   { SCIM_KEY_slash,               SCIM_KEY_minus },
2803   { SCIM_KEY_semicolon,           SCIM_KEY_ccedilla },
2804   { SCIM_KEY_equal,               SCIM_KEY_guillemotleft },
2805   { SCIM_KEY_bracketleft,         SCIM_KEY_plus },
2806   { SCIM_KEY_backslash,           SCIM_KEY_asciitilde },
2807   { SCIM_KEY_bracketright,        SCIM_KEY_acute },
2808   { SCIM_KEY_grave,               SCIM_KEY_backslash },
2809 };
2810 
2811 static __Uint16Pair __portuguese_to_us_caps [] = {
2812   { SCIM_KEY_apostrophe,          SCIM_KEY_minus },
2813   { SCIM_KEY_plus,                SCIM_KEY_bracketleft },
2814   { SCIM_KEY_minus,               SCIM_KEY_slash },
2815   { SCIM_KEY_backslash,           SCIM_KEY_grave },
2816   { SCIM_KEY_asciitilde,          SCIM_KEY_backslash },
2817   { SCIM_KEY_guillemotleft,       SCIM_KEY_equal },
2818   { SCIM_KEY_acute,               SCIM_KEY_bracketright },
2819   { SCIM_KEY_masculine,           SCIM_KEY_apostrophe },
2820   { SCIM_KEY_Ccedilla,            SCIM_KEY_semicolon },
2821 };
2822 
2823 static __Uint16Pair __us_to_portuguese_caps [] = {
2824   { SCIM_KEY_apostrophe,          SCIM_KEY_masculine },
2825   { SCIM_KEY_minus,               SCIM_KEY_apostrophe },
2826   { SCIM_KEY_slash,               SCIM_KEY_minus },
2827   { SCIM_KEY_semicolon,           SCIM_KEY_Ccedilla },
2828   { SCIM_KEY_equal,               SCIM_KEY_guillemotleft },
2829   { SCIM_KEY_bracketleft,         SCIM_KEY_plus },
2830   { SCIM_KEY_backslash,           SCIM_KEY_asciitilde },
2831   { SCIM_KEY_bracketright,        SCIM_KEY_acute },
2832   { SCIM_KEY_grave,               SCIM_KEY_backslash },
2833 };
2834 
2835 static __Uint16Pair __portuguese_to_us_shift [] = {
2836   { SCIM_KEY_quotedbl,            SCIM_KEY_at },
2837   { SCIM_KEY_ampersand,           SCIM_KEY_asciicircum },
2838   { SCIM_KEY_parenleft,           SCIM_KEY_asterisk },
2839   { SCIM_KEY_parenright,          SCIM_KEY_parenleft },
2840   { SCIM_KEY_asterisk,            SCIM_KEY_braceleft },
2841   { SCIM_KEY_slash,               SCIM_KEY_ampersand },
2842   { SCIM_KEY_colon,               SCIM_KEY_greater },
2843   { SCIM_KEY_semicolon,           SCIM_KEY_less },
2844   { SCIM_KEY_equal,               SCIM_KEY_parenright },
2845   { SCIM_KEY_question,            SCIM_KEY_underscore },
2846   { SCIM_KEY_asciicircum,         SCIM_KEY_bar },
2847   { SCIM_KEY_underscore,          SCIM_KEY_question },
2848   { SCIM_KEY_grave,               SCIM_KEY_braceright },
2849   { SCIM_KEY_bar,                 SCIM_KEY_asciitilde },
2850   { SCIM_KEY_ordfeminine,         SCIM_KEY_quotedbl },
2851   { SCIM_KEY_guillemotright,      SCIM_KEY_plus },
2852   { SCIM_KEY_Ccedilla,            SCIM_KEY_colon },
2853 };
2854 
2855 static __Uint16Pair __us_to_portuguese_shift [] = {
2856   { SCIM_KEY_quotedbl,            SCIM_KEY_ordfeminine },
2857   { SCIM_KEY_ampersand,           SCIM_KEY_slash },
2858   { SCIM_KEY_parenleft,           SCIM_KEY_parenright },
2859   { SCIM_KEY_parenright,          SCIM_KEY_equal },
2860   { SCIM_KEY_asterisk,            SCIM_KEY_parenleft },
2861   { SCIM_KEY_plus,                SCIM_KEY_guillemotright },
2862   { SCIM_KEY_colon,               SCIM_KEY_Ccedilla },
2863   { SCIM_KEY_less,                SCIM_KEY_semicolon },
2864   { SCIM_KEY_greater,             SCIM_KEY_colon },
2865   { SCIM_KEY_question,            SCIM_KEY_underscore },
2866   { SCIM_KEY_at,                  SCIM_KEY_quotedbl },
2867   { SCIM_KEY_asciicircum,         SCIM_KEY_ampersand },
2868   { SCIM_KEY_underscore,          SCIM_KEY_question },
2869   { SCIM_KEY_braceleft,           SCIM_KEY_asterisk },
2870   { SCIM_KEY_bar,                 SCIM_KEY_asciicircum },
2871   { SCIM_KEY_braceright,          SCIM_KEY_grave },
2872   { SCIM_KEY_asciitilde,          SCIM_KEY_bar },
2873 };
2874 
2875 static __Uint16Pair __portuguese_to_us_caps_shift [] = {
2876   { SCIM_KEY_quotedbl,            SCIM_KEY_at },
2877   { SCIM_KEY_ampersand,           SCIM_KEY_asciicircum },
2878   { SCIM_KEY_parenleft,           SCIM_KEY_asterisk },
2879   { SCIM_KEY_parenright,          SCIM_KEY_parenleft },
2880   { SCIM_KEY_asterisk,            SCIM_KEY_braceleft },
2881   { SCIM_KEY_slash,               SCIM_KEY_ampersand },
2882   { SCIM_KEY_colon,               SCIM_KEY_greater },
2883   { SCIM_KEY_semicolon,           SCIM_KEY_less },
2884   { SCIM_KEY_equal,               SCIM_KEY_parenright },
2885   { SCIM_KEY_question,            SCIM_KEY_underscore },
2886   { SCIM_KEY_asciicircum,         SCIM_KEY_bar },
2887   { SCIM_KEY_underscore,          SCIM_KEY_question },
2888   { SCIM_KEY_grave,               SCIM_KEY_braceright },
2889   { SCIM_KEY_bar,                 SCIM_KEY_asciitilde },
2890   { SCIM_KEY_ordfeminine,         SCIM_KEY_quotedbl },
2891   { SCIM_KEY_guillemotright,      SCIM_KEY_plus },
2892   { SCIM_KEY_ccedilla,            SCIM_KEY_colon },
2893 };
2894 
2895 static __Uint16Pair __us_to_portuguese_caps_shift [] = {
2896   { SCIM_KEY_quotedbl,            SCIM_KEY_ordfeminine },
2897   { SCIM_KEY_ampersand,           SCIM_KEY_slash },
2898   { SCIM_KEY_parenleft,           SCIM_KEY_parenright },
2899   { SCIM_KEY_parenright,          SCIM_KEY_equal },
2900   { SCIM_KEY_asterisk,            SCIM_KEY_parenleft },
2901   { SCIM_KEY_plus,                SCIM_KEY_guillemotright },
2902   { SCIM_KEY_colon,               SCIM_KEY_ccedilla },
2903   { SCIM_KEY_less,                SCIM_KEY_semicolon },
2904   { SCIM_KEY_greater,             SCIM_KEY_colon },
2905   { SCIM_KEY_question,            SCIM_KEY_underscore },
2906   { SCIM_KEY_at,                  SCIM_KEY_quotedbl },
2907   { SCIM_KEY_asciicircum,         SCIM_KEY_ampersand },
2908   { SCIM_KEY_underscore,          SCIM_KEY_question },
2909   { SCIM_KEY_braceleft,           SCIM_KEY_asterisk },
2910   { SCIM_KEY_bar,                 SCIM_KEY_asciicircum },
2911   { SCIM_KEY_braceright,          SCIM_KEY_grave },
2912   { SCIM_KEY_asciitilde,          SCIM_KEY_bar },
2913 };
2914 
2915 static __Uint16Pair __slovak_to_us_normal [] = {
2916   { SCIM_KEY_plus,                SCIM_KEY_1 },
2917   { SCIM_KEY_minus,               SCIM_KEY_slash },
2918   { SCIM_KEY_semicolon,           SCIM_KEY_grave },
2919   { SCIM_KEY_equal,               SCIM_KEY_minus },
2920   { SCIM_KEY_y,                   SCIM_KEY_z },
2921   { SCIM_KEY_z,                   SCIM_KEY_y },
2922   { SCIM_KEY_section,             SCIM_KEY_apostrophe },
2923   { SCIM_KEY_aacute,              SCIM_KEY_8 },
2924   { SCIM_KEY_adiaeresis,          SCIM_KEY_bracketright },
2925   { SCIM_KEY_eacute,              SCIM_KEY_0 },
2926   { SCIM_KEY_iacute,              SCIM_KEY_9 },
2927   { SCIM_KEY_ocircumflex,         SCIM_KEY_semicolon },
2928   { SCIM_KEY_uacute,              SCIM_KEY_bracketleft },
2929   { SCIM_KEY_yacute,              SCIM_KEY_7 },
2930   { SCIM_KEY_lcaron,              SCIM_KEY_2 },
2931   { SCIM_KEY_scaron,              SCIM_KEY_3 },
2932   { SCIM_KEY_tcaron,              SCIM_KEY_5 },
2933   { SCIM_KEY_zcaron,              SCIM_KEY_6 },
2934   { SCIM_KEY_ccaron,              SCIM_KEY_4 },
2935   { SCIM_KEY_ncaron,              SCIM_KEY_backslash },
2936   { SCIM_KEY_dead_acute,          SCIM_KEY_equal },
2937 };
2938 
2939 static __Uint16Pair __us_to_slovak_normal [] = {
2940   { SCIM_KEY_apostrophe,          SCIM_KEY_section },
2941   { SCIM_KEY_minus,               SCIM_KEY_equal },
2942   { SCIM_KEY_slash,               SCIM_KEY_minus },
2943   { SCIM_KEY_0,                   SCIM_KEY_eacute },
2944   { SCIM_KEY_1,                   SCIM_KEY_plus },
2945   { SCIM_KEY_2,                   SCIM_KEY_lcaron },
2946   { SCIM_KEY_3,                   SCIM_KEY_scaron },
2947   { SCIM_KEY_4,                   SCIM_KEY_ccaron },
2948   { SCIM_KEY_5,                   SCIM_KEY_tcaron },
2949   { SCIM_KEY_6,                   SCIM_KEY_zcaron },
2950   { SCIM_KEY_7,                   SCIM_KEY_yacute },
2951   { SCIM_KEY_8,                   SCIM_KEY_aacute },
2952   { SCIM_KEY_9,                   SCIM_KEY_iacute },
2953   { SCIM_KEY_semicolon,           SCIM_KEY_ocircumflex },
2954   { SCIM_KEY_equal,               SCIM_KEY_dead_acute },
2955   { SCIM_KEY_bracketleft,         SCIM_KEY_uacute },
2956   { SCIM_KEY_backslash,           SCIM_KEY_ncaron },
2957   { SCIM_KEY_bracketright,        SCIM_KEY_adiaeresis },
2958   { SCIM_KEY_grave,               SCIM_KEY_semicolon },
2959   { SCIM_KEY_y,                   SCIM_KEY_z },
2960   { SCIM_KEY_z,                   SCIM_KEY_y },
2961 };
2962 
2963 static __Uint16Pair __slovak_to_us_caps [] = {
2964   { SCIM_KEY_plus,                SCIM_KEY_1 },
2965   { SCIM_KEY_minus,               SCIM_KEY_slash },
2966   { SCIM_KEY_semicolon,           SCIM_KEY_grave },
2967   { SCIM_KEY_equal,               SCIM_KEY_minus },
2968   { SCIM_KEY_Y,                   SCIM_KEY_Z },
2969   { SCIM_KEY_Z,                   SCIM_KEY_Y },
2970   { SCIM_KEY_section,             SCIM_KEY_apostrophe },
2971   { SCIM_KEY_Aacute,              SCIM_KEY_8 },
2972   { SCIM_KEY_Adiaeresis,          SCIM_KEY_bracketright },
2973   { SCIM_KEY_Eacute,              SCIM_KEY_0 },
2974   { SCIM_KEY_Iacute,              SCIM_KEY_9 },
2975   { SCIM_KEY_Ocircumflex,         SCIM_KEY_semicolon },
2976   { SCIM_KEY_Uacute,              SCIM_KEY_bracketleft },
2977   { SCIM_KEY_Yacute,              SCIM_KEY_7 },
2978   { SCIM_KEY_Lcaron,              SCIM_KEY_2 },
2979   { SCIM_KEY_Scaron,              SCIM_KEY_3 },
2980   { SCIM_KEY_Tcaron,              SCIM_KEY_5 },
2981   { SCIM_KEY_Zcaron,              SCIM_KEY_6 },
2982   { SCIM_KEY_Ccaron,              SCIM_KEY_4 },
2983   { SCIM_KEY_Ncaron,              SCIM_KEY_backslash },
2984   { SCIM_KEY_dead_acute,          SCIM_KEY_equal },
2985 };
2986 
2987 static __Uint16Pair __us_to_slovak_caps [] = {
2988   { SCIM_KEY_apostrophe,          SCIM_KEY_section },
2989   { SCIM_KEY_minus,               SCIM_KEY_equal },
2990   { SCIM_KEY_slash,               SCIM_KEY_minus },
2991   { SCIM_KEY_0,                   SCIM_KEY_Eacute },
2992   { SCIM_KEY_1,                   SCIM_KEY_plus },
2993   { SCIM_KEY_2,                   SCIM_KEY_Lcaron },
2994   { SCIM_KEY_3,                   SCIM_KEY_Scaron },
2995   { SCIM_KEY_4,                   SCIM_KEY_Ccaron },
2996   { SCIM_KEY_5,                   SCIM_KEY_Tcaron },
2997   { SCIM_KEY_6,                   SCIM_KEY_Zcaron },
2998   { SCIM_KEY_7,                   SCIM_KEY_Yacute },
2999   { SCIM_KEY_8,                   SCIM_KEY_Aacute },
3000   { SCIM_KEY_9,                   SCIM_KEY_Iacute },
3001   { SCIM_KEY_semicolon,           SCIM_KEY_Ocircumflex },
3002   { SCIM_KEY_equal,               SCIM_KEY_dead_acute },
3003   { SCIM_KEY_Y,                   SCIM_KEY_Z },
3004   { SCIM_KEY_Z,                   SCIM_KEY_Y },
3005   { SCIM_KEY_bracketleft,         SCIM_KEY_Uacute },
3006   { SCIM_KEY_backslash,           SCIM_KEY_Ncaron },
3007   { SCIM_KEY_bracketright,        SCIM_KEY_Adiaeresis },
3008   { SCIM_KEY_grave,               SCIM_KEY_semicolon },
3009 };
3010 
3011 static __Uint16Pair __slovak_to_us_shift [] = {
3012   { SCIM_KEY_exclam,              SCIM_KEY_quotedbl },
3013   { SCIM_KEY_quotedbl,            SCIM_KEY_colon },
3014   { SCIM_KEY_percent,             SCIM_KEY_underscore },
3015   { SCIM_KEY_parenleft,           SCIM_KEY_braceright },
3016   { SCIM_KEY_parenright,          SCIM_KEY_bar },
3017   { SCIM_KEY_slash,               SCIM_KEY_braceleft },
3018   { SCIM_KEY_0,                   SCIM_KEY_parenright },
3019   { SCIM_KEY_1,                   SCIM_KEY_exclam },
3020   { SCIM_KEY_2,                   SCIM_KEY_at },
3021   { SCIM_KEY_3,                   SCIM_KEY_numbersign },
3022   { SCIM_KEY_4,                   SCIM_KEY_dollar },
3023   { SCIM_KEY_5,                   SCIM_KEY_percent },
3024   { SCIM_KEY_6,                   SCIM_KEY_asciicircum },
3025   { SCIM_KEY_7,                   SCIM_KEY_ampersand },
3026   { SCIM_KEY_8,                   SCIM_KEY_asterisk },
3027   { SCIM_KEY_9,                   SCIM_KEY_parenleft },
3028   { SCIM_KEY_colon,               SCIM_KEY_greater },
3029   { SCIM_KEY_question,            SCIM_KEY_less },
3030   { SCIM_KEY_Y,                   SCIM_KEY_Z },
3031   { SCIM_KEY_Z,                   SCIM_KEY_Y },
3032   { SCIM_KEY_underscore,          SCIM_KEY_question },
3033   { SCIM_KEY_dead_abovering,      SCIM_KEY_asciitilde },
3034   { SCIM_KEY_dead_caron,          SCIM_KEY_plus },
3035 };
3036 
3037 static __Uint16Pair __us_to_slovak_shift [] = {
3038   { SCIM_KEY_exclam,              SCIM_KEY_1 },
3039   { SCIM_KEY_quotedbl,            SCIM_KEY_exclam },
3040   { SCIM_KEY_numbersign,          SCIM_KEY_3 },
3041   { SCIM_KEY_dollar,              SCIM_KEY_4 },
3042   { SCIM_KEY_percent,             SCIM_KEY_5 },
3043   { SCIM_KEY_ampersand,           SCIM_KEY_7 },
3044   { SCIM_KEY_parenleft,           SCIM_KEY_9 },
3045   { SCIM_KEY_parenright,          SCIM_KEY_0 },
3046   { SCIM_KEY_asterisk,            SCIM_KEY_8 },
3047   { SCIM_KEY_plus,                SCIM_KEY_dead_caron },
3048   { SCIM_KEY_colon,               SCIM_KEY_quotedbl },
3049   { SCIM_KEY_less,                SCIM_KEY_question },
3050   { SCIM_KEY_greater,             SCIM_KEY_colon },
3051   { SCIM_KEY_question,            SCIM_KEY_underscore },
3052   { SCIM_KEY_at,                  SCIM_KEY_2 },
3053   { SCIM_KEY_Y,                   SCIM_KEY_Z },
3054   { SCIM_KEY_Z,                   SCIM_KEY_Y },
3055   { SCIM_KEY_asciicircum,         SCIM_KEY_6 },
3056   { SCIM_KEY_underscore,          SCIM_KEY_percent },
3057   { SCIM_KEY_braceleft,           SCIM_KEY_slash },
3058   { SCIM_KEY_bar,                 SCIM_KEY_parenright },
3059   { SCIM_KEY_braceright,          SCIM_KEY_parenleft },
3060   { SCIM_KEY_asciitilde,          SCIM_KEY_dead_abovering },
3061 };
3062 
3063 static __Uint16Pair __slovak_to_us_caps_shift [] = {
3064   { SCIM_KEY_exclam,              SCIM_KEY_quotedbl },
3065   { SCIM_KEY_quotedbl,            SCIM_KEY_colon },
3066   { SCIM_KEY_percent,             SCIM_KEY_underscore },
3067   { SCIM_KEY_parenleft,           SCIM_KEY_braceright },
3068   { SCIM_KEY_parenright,          SCIM_KEY_bar },
3069   { SCIM_KEY_slash,               SCIM_KEY_braceleft },
3070   { SCIM_KEY_0,                   SCIM_KEY_parenright },
3071   { SCIM_KEY_1,                   SCIM_KEY_exclam },
3072   { SCIM_KEY_2,                   SCIM_KEY_at },
3073   { SCIM_KEY_3,                   SCIM_KEY_numbersign },
3074   { SCIM_KEY_4,                   SCIM_KEY_dollar },
3075   { SCIM_KEY_5,                   SCIM_KEY_percent },
3076   { SCIM_KEY_6,                   SCIM_KEY_asciicircum },
3077   { SCIM_KEY_7,                   SCIM_KEY_ampersand },
3078   { SCIM_KEY_8,                   SCIM_KEY_asterisk },
3079   { SCIM_KEY_9,                   SCIM_KEY_parenleft },
3080   { SCIM_KEY_colon,               SCIM_KEY_greater },
3081   { SCIM_KEY_question,            SCIM_KEY_less },
3082   { SCIM_KEY_underscore,          SCIM_KEY_question },
3083   { SCIM_KEY_y,                   SCIM_KEY_z },
3084   { SCIM_KEY_z,                   SCIM_KEY_y },
3085   { SCIM_KEY_dead_abovering,      SCIM_KEY_asciitilde },
3086   { SCIM_KEY_dead_caron,          SCIM_KEY_plus },
3087 };
3088 
3089 static __Uint16Pair __us_to_slovak_caps_shift [] = {
3090   { SCIM_KEY_exclam,              SCIM_KEY_1 },
3091   { SCIM_KEY_quotedbl,            SCIM_KEY_exclam },
3092   { SCIM_KEY_numbersign,          SCIM_KEY_3 },
3093   { SCIM_KEY_dollar,              SCIM_KEY_4 },
3094   { SCIM_KEY_percent,             SCIM_KEY_5 },
3095   { SCIM_KEY_ampersand,           SCIM_KEY_7 },
3096   { SCIM_KEY_parenleft,           SCIM_KEY_9 },
3097   { SCIM_KEY_parenright,          SCIM_KEY_0 },
3098   { SCIM_KEY_asterisk,            SCIM_KEY_8 },
3099   { SCIM_KEY_plus,                SCIM_KEY_dead_caron },
3100   { SCIM_KEY_colon,               SCIM_KEY_quotedbl },
3101   { SCIM_KEY_less,                SCIM_KEY_question },
3102   { SCIM_KEY_greater,             SCIM_KEY_colon },
3103   { SCIM_KEY_question,            SCIM_KEY_underscore },
3104   { SCIM_KEY_at,                  SCIM_KEY_2 },
3105   { SCIM_KEY_asciicircum,         SCIM_KEY_6 },
3106   { SCIM_KEY_underscore,          SCIM_KEY_percent },
3107   { SCIM_KEY_y,                   SCIM_KEY_z },
3108   { SCIM_KEY_z,                   SCIM_KEY_y },
3109   { SCIM_KEY_braceleft,           SCIM_KEY_slash },
3110   { SCIM_KEY_bar,                 SCIM_KEY_parenright },
3111   { SCIM_KEY_braceright,          SCIM_KEY_parenleft },
3112   { SCIM_KEY_asciitilde,          SCIM_KEY_dead_abovering },
3113 };
3114 
3115 static __Uint16Pair __slovak_qwerty_to_us_normal [] = {
3116   { SCIM_KEY_plus,                SCIM_KEY_1 },
3117   { SCIM_KEY_minus,               SCIM_KEY_slash },
3118   { SCIM_KEY_semicolon,           SCIM_KEY_grave },
3119   { SCIM_KEY_equal,               SCIM_KEY_minus },
3120   { SCIM_KEY_section,             SCIM_KEY_apostrophe },
3121   { SCIM_KEY_aacute,              SCIM_KEY_8 },
3122   { SCIM_KEY_adiaeresis,          SCIM_KEY_bracketright },
3123   { SCIM_KEY_eacute,              SCIM_KEY_0 },
3124   { SCIM_KEY_iacute,              SCIM_KEY_9 },
3125   { SCIM_KEY_ocircumflex,         SCIM_KEY_semicolon },
3126   { SCIM_KEY_uacute,              SCIM_KEY_bracketleft },
3127   { SCIM_KEY_yacute,              SCIM_KEY_7 },
3128   { SCIM_KEY_lcaron,              SCIM_KEY_2 },
3129   { SCIM_KEY_scaron,              SCIM_KEY_3 },
3130   { SCIM_KEY_tcaron,              SCIM_KEY_5 },
3131   { SCIM_KEY_zcaron,              SCIM_KEY_6 },
3132   { SCIM_KEY_ccaron,              SCIM_KEY_4 },
3133   { SCIM_KEY_ncaron,              SCIM_KEY_backslash },
3134   { SCIM_KEY_dead_acute,          SCIM_KEY_equal },
3135 };
3136 
3137 static __Uint16Pair __us_to_slovak_qwerty_normal [] = {
3138   { SCIM_KEY_apostrophe,          SCIM_KEY_section },
3139   { SCIM_KEY_minus,               SCIM_KEY_equal },
3140   { SCIM_KEY_slash,               SCIM_KEY_minus },
3141   { SCIM_KEY_0,                   SCIM_KEY_eacute },
3142   { SCIM_KEY_1,                   SCIM_KEY_plus },
3143   { SCIM_KEY_2,                   SCIM_KEY_lcaron },
3144   { SCIM_KEY_3,                   SCIM_KEY_scaron },
3145   { SCIM_KEY_4,                   SCIM_KEY_ccaron },
3146   { SCIM_KEY_5,                   SCIM_KEY_tcaron },
3147   { SCIM_KEY_6,                   SCIM_KEY_zcaron },
3148   { SCIM_KEY_7,                   SCIM_KEY_yacute },
3149   { SCIM_KEY_8,                   SCIM_KEY_aacute },
3150   { SCIM_KEY_9,                   SCIM_KEY_iacute },
3151   { SCIM_KEY_semicolon,           SCIM_KEY_ocircumflex },
3152   { SCIM_KEY_equal,               SCIM_KEY_dead_acute },
3153   { SCIM_KEY_bracketleft,         SCIM_KEY_uacute },
3154   { SCIM_KEY_backslash,           SCIM_KEY_ncaron },
3155   { SCIM_KEY_bracketright,        SCIM_KEY_adiaeresis },
3156   { SCIM_KEY_grave,               SCIM_KEY_semicolon },
3157 };
3158 
3159 static __Uint16Pair __slovak_qwerty_to_us_caps [] = {
3160   { SCIM_KEY_plus,                SCIM_KEY_1 },
3161   { SCIM_KEY_minus,               SCIM_KEY_slash },
3162   { SCIM_KEY_semicolon,           SCIM_KEY_grave },
3163   { SCIM_KEY_equal,               SCIM_KEY_minus },
3164   { SCIM_KEY_section,             SCIM_KEY_apostrophe },
3165   { SCIM_KEY_Aacute,              SCIM_KEY_8 },
3166   { SCIM_KEY_Adiaeresis,          SCIM_KEY_bracketright },
3167   { SCIM_KEY_Eacute,              SCIM_KEY_0 },
3168   { SCIM_KEY_Iacute,              SCIM_KEY_9 },
3169   { SCIM_KEY_Ocircumflex,         SCIM_KEY_semicolon },
3170   { SCIM_KEY_Uacute,              SCIM_KEY_bracketleft },
3171   { SCIM_KEY_Yacute,              SCIM_KEY_7 },
3172   { SCIM_KEY_Lcaron,              SCIM_KEY_2 },
3173   { SCIM_KEY_Scaron,              SCIM_KEY_3 },
3174   { SCIM_KEY_Tcaron,              SCIM_KEY_5 },
3175   { SCIM_KEY_Zcaron,              SCIM_KEY_6 },
3176   { SCIM_KEY_Ccaron,              SCIM_KEY_4 },
3177   { SCIM_KEY_Ncaron,              SCIM_KEY_backslash },
3178   { SCIM_KEY_dead_acute,          SCIM_KEY_equal },
3179 };
3180 
3181 static __Uint16Pair __us_to_slovak_qwerty_caps [] = {
3182   { SCIM_KEY_apostrophe,          SCIM_KEY_section },
3183   { SCIM_KEY_minus,               SCIM_KEY_equal },
3184   { SCIM_KEY_slash,               SCIM_KEY_minus },
3185   { SCIM_KEY_0,                   SCIM_KEY_Eacute },
3186   { SCIM_KEY_1,                   SCIM_KEY_plus },
3187   { SCIM_KEY_2,                   SCIM_KEY_Lcaron },
3188   { SCIM_KEY_3,                   SCIM_KEY_Scaron },
3189   { SCIM_KEY_4,                   SCIM_KEY_Ccaron },
3190   { SCIM_KEY_5,                   SCIM_KEY_Tcaron },
3191   { SCIM_KEY_6,                   SCIM_KEY_Zcaron },
3192   { SCIM_KEY_7,                   SCIM_KEY_Yacute },
3193   { SCIM_KEY_8,                   SCIM_KEY_Aacute },
3194   { SCIM_KEY_9,                   SCIM_KEY_Iacute },
3195   { SCIM_KEY_semicolon,           SCIM_KEY_Ocircumflex },
3196   { SCIM_KEY_equal,               SCIM_KEY_dead_acute },
3197   { SCIM_KEY_bracketleft,         SCIM_KEY_Uacute },
3198   { SCIM_KEY_backslash,           SCIM_KEY_Ncaron },
3199   { SCIM_KEY_bracketright,        SCIM_KEY_Adiaeresis },
3200   { SCIM_KEY_grave,               SCIM_KEY_semicolon },
3201 };
3202 
3203 static __Uint16Pair __slovak_qwerty_to_us_shift [] = {
3204   { SCIM_KEY_exclam,              SCIM_KEY_quotedbl },
3205   { SCIM_KEY_quotedbl,            SCIM_KEY_colon },
3206   { SCIM_KEY_percent,             SCIM_KEY_underscore },
3207   { SCIM_KEY_parenleft,           SCIM_KEY_braceright },
3208   { SCIM_KEY_parenright,          SCIM_KEY_bar },
3209   { SCIM_KEY_slash,               SCIM_KEY_braceleft },
3210   { SCIM_KEY_0,                   SCIM_KEY_parenright },
3211   { SCIM_KEY_1,                   SCIM_KEY_exclam },
3212   { SCIM_KEY_2,                   SCIM_KEY_at },
3213   { SCIM_KEY_3,                   SCIM_KEY_numbersign },
3214   { SCIM_KEY_4,                   SCIM_KEY_dollar },
3215   { SCIM_KEY_5,                   SCIM_KEY_percent },
3216   { SCIM_KEY_6,                   SCIM_KEY_asciicircum },
3217   { SCIM_KEY_7,                   SCIM_KEY_ampersand },
3218   { SCIM_KEY_8,                   SCIM_KEY_asterisk },
3219   { SCIM_KEY_9,                   SCIM_KEY_parenleft },
3220   { SCIM_KEY_colon,               SCIM_KEY_greater },
3221   { SCIM_KEY_question,            SCIM_KEY_less },
3222   { SCIM_KEY_underscore,          SCIM_KEY_question },
3223   { SCIM_KEY_dead_abovering,      SCIM_KEY_asciitilde },
3224   { SCIM_KEY_dead_caron,          SCIM_KEY_plus },
3225 };
3226 
3227 static __Uint16Pair __us_to_slovak_qwerty_shift [] = {
3228   { SCIM_KEY_exclam,              SCIM_KEY_1 },
3229   { SCIM_KEY_quotedbl,            SCIM_KEY_exclam },
3230   { SCIM_KEY_numbersign,          SCIM_KEY_3 },
3231   { SCIM_KEY_dollar,              SCIM_KEY_4 },
3232   { SCIM_KEY_percent,             SCIM_KEY_5 },
3233   { SCIM_KEY_ampersand,           SCIM_KEY_7 },
3234   { SCIM_KEY_parenleft,           SCIM_KEY_9 },
3235   { SCIM_KEY_parenright,          SCIM_KEY_0 },
3236   { SCIM_KEY_asterisk,            SCIM_KEY_8 },
3237   { SCIM_KEY_plus,                SCIM_KEY_dead_caron },
3238   { SCIM_KEY_colon,               SCIM_KEY_quotedbl },
3239   { SCIM_KEY_less,                SCIM_KEY_question },
3240   { SCIM_KEY_greater,             SCIM_KEY_colon },
3241   { SCIM_KEY_question,            SCIM_KEY_underscore },
3242   { SCIM_KEY_at,                  SCIM_KEY_2 },
3243   { SCIM_KEY_asciicircum,         SCIM_KEY_6 },
3244   { SCIM_KEY_underscore,          SCIM_KEY_percent },
3245   { SCIM_KEY_braceleft,           SCIM_KEY_slash },
3246   { SCIM_KEY_bar,                 SCIM_KEY_parenright },
3247   { SCIM_KEY_braceright,          SCIM_KEY_parenleft },
3248   { SCIM_KEY_asciitilde,          SCIM_KEY_dead_abovering },
3249 };
3250 
3251 static __Uint16Pair __slovak_qwerty_to_us_caps_shift [] = {
3252   { SCIM_KEY_exclam,              SCIM_KEY_quotedbl },
3253   { SCIM_KEY_quotedbl,            SCIM_KEY_colon },
3254   { SCIM_KEY_percent,             SCIM_KEY_underscore },
3255   { SCIM_KEY_parenleft,           SCIM_KEY_braceright },
3256   { SCIM_KEY_parenright,          SCIM_KEY_bar },
3257   { SCIM_KEY_slash,               SCIM_KEY_braceleft },
3258   { SCIM_KEY_0,                   SCIM_KEY_parenright },
3259   { SCIM_KEY_1,                   SCIM_KEY_exclam },
3260   { SCIM_KEY_2,                   SCIM_KEY_at },
3261   { SCIM_KEY_3,                   SCIM_KEY_numbersign },
3262   { SCIM_KEY_4,                   SCIM_KEY_dollar },
3263   { SCIM_KEY_5,                   SCIM_KEY_percent },
3264   { SCIM_KEY_6,                   SCIM_KEY_asciicircum },
3265   { SCIM_KEY_7,                   SCIM_KEY_ampersand },
3266   { SCIM_KEY_8,                   SCIM_KEY_asterisk },
3267   { SCIM_KEY_9,                   SCIM_KEY_parenleft },
3268   { SCIM_KEY_colon,               SCIM_KEY_greater },
3269   { SCIM_KEY_question,            SCIM_KEY_less },
3270   { SCIM_KEY_underscore,          SCIM_KEY_question },
3271   { SCIM_KEY_dead_abovering,      SCIM_KEY_asciitilde },
3272   { SCIM_KEY_dead_caron,          SCIM_KEY_plus },
3273 };
3274 
3275 static __Uint16Pair __us_to_slovak_qwerty_caps_shift [] = {
3276   { SCIM_KEY_exclam,              SCIM_KEY_1 },
3277   { SCIM_KEY_quotedbl,            SCIM_KEY_exclam },
3278   { SCIM_KEY_numbersign,          SCIM_KEY_3 },
3279   { SCIM_KEY_dollar,              SCIM_KEY_4 },
3280   { SCIM_KEY_percent,             SCIM_KEY_5 },
3281   { SCIM_KEY_ampersand,           SCIM_KEY_7 },
3282   { SCIM_KEY_parenleft,           SCIM_KEY_9 },
3283   { SCIM_KEY_parenright,          SCIM_KEY_0 },
3284   { SCIM_KEY_asterisk,            SCIM_KEY_8 },
3285   { SCIM_KEY_plus,                SCIM_KEY_dead_caron },
3286   { SCIM_KEY_colon,               SCIM_KEY_quotedbl },
3287   { SCIM_KEY_less,                SCIM_KEY_question },
3288   { SCIM_KEY_greater,             SCIM_KEY_colon },
3289   { SCIM_KEY_question,            SCIM_KEY_underscore },
3290   { SCIM_KEY_at,                  SCIM_KEY_2 },
3291   { SCIM_KEY_asciicircum,         SCIM_KEY_6 },
3292   { SCIM_KEY_underscore,          SCIM_KEY_percent },
3293   { SCIM_KEY_braceleft,           SCIM_KEY_slash },
3294   { SCIM_KEY_bar,                 SCIM_KEY_parenright },
3295   { SCIM_KEY_braceright,          SCIM_KEY_parenleft },
3296   { SCIM_KEY_asciitilde,          SCIM_KEY_dead_abovering },
3297 };
3298 
3299 static __Uint16Pair __spanish_cp850_to_us_normal [] = {
3300   { SCIM_KEY_apostrophe,          SCIM_KEY_minus },
3301   { SCIM_KEY_plus,                SCIM_KEY_bracketright },
3302   { SCIM_KEY_minus,               SCIM_KEY_slash },
3303   { SCIM_KEY_exclamdown,          SCIM_KEY_equal },
3304   { SCIM_KEY_masculine,           SCIM_KEY_grave },
3305   { SCIM_KEY_ccedilla,            SCIM_KEY_backslash },
3306   { SCIM_KEY_ntilde,              SCIM_KEY_semicolon },
3307   { SCIM_KEY_dead_grave,          SCIM_KEY_bracketleft },
3308   { SCIM_KEY_dead_acute,          SCIM_KEY_apostrophe },
3309 };
3310 
3311 static __Uint16Pair __us_to_spanish_cp850_normal [] = {
3312   { SCIM_KEY_apostrophe,          SCIM_KEY_dead_acute },
3313   { SCIM_KEY_minus,               SCIM_KEY_apostrophe },
3314   { SCIM_KEY_slash,               SCIM_KEY_minus },
3315   { SCIM_KEY_semicolon,           SCIM_KEY_ntilde },
3316   { SCIM_KEY_equal,               SCIM_KEY_exclamdown },
3317   { SCIM_KEY_bracketleft,         SCIM_KEY_dead_grave },
3318   { SCIM_KEY_backslash,           SCIM_KEY_ccedilla },
3319   { SCIM_KEY_bracketright,        SCIM_KEY_plus },
3320   { SCIM_KEY_grave,               SCIM_KEY_masculine },
3321 };
3322 
3323 static __Uint16Pair __spanish_cp850_to_us_caps [] = {
3324   { SCIM_KEY_apostrophe,          SCIM_KEY_minus },
3325   { SCIM_KEY_plus,                SCIM_KEY_bracketright },
3326   { SCIM_KEY_minus,               SCIM_KEY_slash },
3327   { SCIM_KEY_exclamdown,          SCIM_KEY_equal },
3328   { SCIM_KEY_masculine,           SCIM_KEY_grave },
3329   { SCIM_KEY_Ccedilla,            SCIM_KEY_backslash },
3330   { SCIM_KEY_Ntilde,              SCIM_KEY_semicolon },
3331   { SCIM_KEY_dead_grave,          SCIM_KEY_bracketleft },
3332   { SCIM_KEY_dead_acute,          SCIM_KEY_apostrophe },
3333 };
3334 
3335 static __Uint16Pair __us_to_spanish_cp850_caps [] = {
3336   { SCIM_KEY_apostrophe,          SCIM_KEY_dead_acute },
3337   { SCIM_KEY_minus,               SCIM_KEY_apostrophe },
3338   { SCIM_KEY_slash,               SCIM_KEY_minus },
3339   { SCIM_KEY_semicolon,           SCIM_KEY_Ntilde },
3340   { SCIM_KEY_equal,               SCIM_KEY_exclamdown },
3341   { SCIM_KEY_bracketleft,         SCIM_KEY_dead_grave },
3342   { SCIM_KEY_backslash,           SCIM_KEY_Ccedilla },
3343   { SCIM_KEY_bracketright,        SCIM_KEY_plus },
3344   { SCIM_KEY_grave,               SCIM_KEY_masculine },
3345 };
3346 
3347 static __Uint16Pair __spanish_cp850_to_us_shift [] = {
3348   { SCIM_KEY_quotedbl,            SCIM_KEY_at },
3349   { SCIM_KEY_ampersand,           SCIM_KEY_asciicircum },
3350   { SCIM_KEY_parenleft,           SCIM_KEY_asterisk },
3351   { SCIM_KEY_parenright,          SCIM_KEY_parenleft },
3352   { SCIM_KEY_asterisk,            SCIM_KEY_braceright },
3353   { SCIM_KEY_slash,               SCIM_KEY_ampersand },
3354   { SCIM_KEY_colon,               SCIM_KEY_greater },
3355   { SCIM_KEY_semicolon,           SCIM_KEY_less },
3356   { SCIM_KEY_equal,               SCIM_KEY_parenright },
3357   { SCIM_KEY_question,            SCIM_KEY_underscore },
3358   { SCIM_KEY_underscore,          SCIM_KEY_question },
3359   { SCIM_KEY_ordfeminine,         SCIM_KEY_asciitilde },
3360   { SCIM_KEY_periodcentered,      SCIM_KEY_numbersign },
3361   { SCIM_KEY_questiondown,        SCIM_KEY_plus },
3362   { SCIM_KEY_Ccedilla,            SCIM_KEY_bar },
3363   { SCIM_KEY_Ntilde,              SCIM_KEY_colon },
3364   { SCIM_KEY_dead_circumflex,     SCIM_KEY_braceleft },
3365   { SCIM_KEY_dead_diaeresis,      SCIM_KEY_quotedbl },
3366 };
3367 
3368 static __Uint16Pair __us_to_spanish_cp850_shift [] = {
3369   { SCIM_KEY_quotedbl,            SCIM_KEY_dead_diaeresis },
3370   { SCIM_KEY_numbersign,          SCIM_KEY_periodcentered },
3371   { SCIM_KEY_ampersand,           SCIM_KEY_slash },
3372   { SCIM_KEY_parenleft,           SCIM_KEY_parenright },
3373   { SCIM_KEY_parenright,          SCIM_KEY_equal },
3374   { SCIM_KEY_asterisk,            SCIM_KEY_parenleft },
3375   { SCIM_KEY_plus,                SCIM_KEY_questiondown },
3376   { SCIM_KEY_colon,               SCIM_KEY_Ntilde },
3377   { SCIM_KEY_less,                SCIM_KEY_semicolon },
3378   { SCIM_KEY_greater,             SCIM_KEY_colon },
3379   { SCIM_KEY_question,            SCIM_KEY_underscore },
3380   { SCIM_KEY_at,                  SCIM_KEY_quotedbl },
3381   { SCIM_KEY_asciicircum,         SCIM_KEY_ampersand },
3382   { SCIM_KEY_underscore,          SCIM_KEY_question },
3383   { SCIM_KEY_braceleft,           SCIM_KEY_dead_circumflex },
3384   { SCIM_KEY_bar,                 SCIM_KEY_Ccedilla },
3385   { SCIM_KEY_braceright,          SCIM_KEY_asterisk },
3386   { SCIM_KEY_asciitilde,          SCIM_KEY_ordfeminine },
3387 };
3388 
3389 static __Uint16Pair __spanish_cp850_to_us_caps_shift [] = {
3390   { SCIM_KEY_quotedbl,            SCIM_KEY_at },
3391   { SCIM_KEY_ampersand,           SCIM_KEY_asciicircum },
3392   { SCIM_KEY_parenleft,           SCIM_KEY_asterisk },
3393   { SCIM_KEY_parenright,          SCIM_KEY_parenleft },
3394   { SCIM_KEY_asterisk,            SCIM_KEY_braceright },
3395   { SCIM_KEY_slash,               SCIM_KEY_ampersand },
3396   { SCIM_KEY_colon,               SCIM_KEY_greater },
3397   { SCIM_KEY_semicolon,           SCIM_KEY_less },
3398   { SCIM_KEY_equal,               SCIM_KEY_parenright },
3399   { SCIM_KEY_question,            SCIM_KEY_underscore },
3400   { SCIM_KEY_underscore,          SCIM_KEY_question },
3401   { SCIM_KEY_ordfeminine,         SCIM_KEY_asciitilde },
3402   { SCIM_KEY_periodcentered,      SCIM_KEY_numbersign },
3403   { SCIM_KEY_questiondown,        SCIM_KEY_plus },
3404   { SCIM_KEY_ccedilla,            SCIM_KEY_bar },
3405   { SCIM_KEY_ntilde,              SCIM_KEY_colon },
3406   { SCIM_KEY_dead_circumflex,     SCIM_KEY_braceleft },
3407   { SCIM_KEY_dead_diaeresis,      SCIM_KEY_quotedbl },
3408 };
3409 
3410 static __Uint16Pair __us_to_spanish_cp850_caps_shift [] = {
3411   { SCIM_KEY_quotedbl,            SCIM_KEY_dead_diaeresis },
3412   { SCIM_KEY_numbersign,          SCIM_KEY_periodcentered },
3413   { SCIM_KEY_ampersand,           SCIM_KEY_slash },
3414   { SCIM_KEY_parenleft,           SCIM_KEY_parenright },
3415   { SCIM_KEY_parenright,          SCIM_KEY_equal },
3416   { SCIM_KEY_asterisk,            SCIM_KEY_parenleft },
3417   { SCIM_KEY_plus,                SCIM_KEY_questiondown },
3418   { SCIM_KEY_colon,               SCIM_KEY_ntilde },
3419   { SCIM_KEY_less,                SCIM_KEY_semicolon },
3420   { SCIM_KEY_greater,             SCIM_KEY_colon },
3421   { SCIM_KEY_question,            SCIM_KEY_underscore },
3422   { SCIM_KEY_at,                  SCIM_KEY_quotedbl },
3423   { SCIM_KEY_asciicircum,         SCIM_KEY_ampersand },
3424   { SCIM_KEY_underscore,          SCIM_KEY_question },
3425   { SCIM_KEY_braceleft,           SCIM_KEY_dead_circumflex },
3426   { SCIM_KEY_bar,                 SCIM_KEY_ccedilla },
3427   { SCIM_KEY_braceright,          SCIM_KEY_asterisk },
3428   { SCIM_KEY_asciitilde,          SCIM_KEY_ordfeminine },
3429 };
3430 
3431 static __Uint16Pair __spanish_to_us_normal [] = {
3432   { SCIM_KEY_apostrophe,          SCIM_KEY_minus },
3433   { SCIM_KEY_plus,                SCIM_KEY_bracketright },
3434   { SCIM_KEY_minus,               SCIM_KEY_slash },
3435   { SCIM_KEY_exclamdown,          SCIM_KEY_equal },
3436   { SCIM_KEY_masculine,           SCIM_KEY_grave },
3437   { SCIM_KEY_ccedilla,            SCIM_KEY_backslash },
3438   { SCIM_KEY_ntilde,              SCIM_KEY_semicolon },
3439   { SCIM_KEY_dead_grave,          SCIM_KEY_bracketleft },
3440   { SCIM_KEY_dead_acute,          SCIM_KEY_apostrophe },
3441 };
3442 
3443 static __Uint16Pair __us_to_spanish_normal [] = {
3444   { SCIM_KEY_apostrophe,          SCIM_KEY_dead_acute },
3445   { SCIM_KEY_minus,               SCIM_KEY_apostrophe },
3446   { SCIM_KEY_slash,               SCIM_KEY_minus },
3447   { SCIM_KEY_semicolon,           SCIM_KEY_ntilde },
3448   { SCIM_KEY_equal,               SCIM_KEY_exclamdown },
3449   { SCIM_KEY_bracketleft,         SCIM_KEY_dead_grave },
3450   { SCIM_KEY_backslash,           SCIM_KEY_ccedilla },
3451   { SCIM_KEY_bracketright,        SCIM_KEY_plus },
3452   { SCIM_KEY_grave,               SCIM_KEY_masculine },
3453 };
3454 
3455 static __Uint16Pair __spanish_to_us_caps [] = {
3456   { SCIM_KEY_apostrophe,          SCIM_KEY_minus },
3457   { SCIM_KEY_plus,                SCIM_KEY_bracketright },
3458   { SCIM_KEY_minus,               SCIM_KEY_slash },
3459   { SCIM_KEY_exclamdown,          SCIM_KEY_equal },
3460   { SCIM_KEY_masculine,           SCIM_KEY_grave },
3461   { SCIM_KEY_Ccedilla,            SCIM_KEY_backslash },
3462   { SCIM_KEY_Ntilde,              SCIM_KEY_semicolon },
3463   { SCIM_KEY_dead_grave,          SCIM_KEY_bracketleft },
3464   { SCIM_KEY_dead_acute,          SCIM_KEY_apostrophe },
3465 };
3466 
3467 static __Uint16Pair __us_to_spanish_caps [] = {
3468   { SCIM_KEY_apostrophe,          SCIM_KEY_dead_acute },
3469   { SCIM_KEY_minus,               SCIM_KEY_apostrophe },
3470   { SCIM_KEY_slash,               SCIM_KEY_minus },
3471   { SCIM_KEY_semicolon,           SCIM_KEY_Ntilde },
3472   { SCIM_KEY_equal,               SCIM_KEY_exclamdown },
3473   { SCIM_KEY_bracketleft,         SCIM_KEY_dead_grave },
3474   { SCIM_KEY_backslash,           SCIM_KEY_Ccedilla },
3475   { SCIM_KEY_bracketright,        SCIM_KEY_plus },
3476   { SCIM_KEY_grave,               SCIM_KEY_masculine },
3477 };
3478 
3479 static __Uint16Pair __spanish_to_us_shift [] = {
3480   { SCIM_KEY_quotedbl,            SCIM_KEY_at },
3481   { SCIM_KEY_ampersand,           SCIM_KEY_asciicircum },
3482   { SCIM_KEY_parenleft,           SCIM_KEY_asterisk },
3483   { SCIM_KEY_parenright,          SCIM_KEY_parenleft },
3484   { SCIM_KEY_asterisk,            SCIM_KEY_braceright },
3485   { SCIM_KEY_slash,               SCIM_KEY_ampersand },
3486   { SCIM_KEY_colon,               SCIM_KEY_greater },
3487   { SCIM_KEY_semicolon,           SCIM_KEY_less },
3488   { SCIM_KEY_equal,               SCIM_KEY_parenright },
3489   { SCIM_KEY_question,            SCIM_KEY_underscore },
3490   { SCIM_KEY_underscore,          SCIM_KEY_question },
3491   { SCIM_KEY_ordfeminine,         SCIM_KEY_asciitilde },
3492   { SCIM_KEY_periodcentered,      SCIM_KEY_numbersign },
3493   { SCIM_KEY_questiondown,        SCIM_KEY_plus },
3494   { SCIM_KEY_Ccedilla,            SCIM_KEY_bar },
3495   { SCIM_KEY_Ntilde,              SCIM_KEY_colon },
3496   { SCIM_KEY_dead_circumflex,     SCIM_KEY_braceleft },
3497   { SCIM_KEY_dead_diaeresis,      SCIM_KEY_quotedbl },
3498 };
3499 
3500 static __Uint16Pair __us_to_spanish_shift [] = {
3501   { SCIM_KEY_quotedbl,            SCIM_KEY_dead_diaeresis },
3502   { SCIM_KEY_numbersign,          SCIM_KEY_periodcentered },
3503   { SCIM_KEY_ampersand,           SCIM_KEY_slash },
3504   { SCIM_KEY_parenleft,           SCIM_KEY_parenright },
3505   { SCIM_KEY_parenright,          SCIM_KEY_equal },
3506   { SCIM_KEY_asterisk,            SCIM_KEY_parenleft },
3507   { SCIM_KEY_plus,                SCIM_KEY_questiondown },
3508   { SCIM_KEY_colon,               SCIM_KEY_Ntilde },
3509   { SCIM_KEY_less,                SCIM_KEY_semicolon },
3510   { SCIM_KEY_greater,             SCIM_KEY_colon },
3511   { SCIM_KEY_question,            SCIM_KEY_underscore },
3512   { SCIM_KEY_at,                  SCIM_KEY_quotedbl },
3513   { SCIM_KEY_asciicircum,         SCIM_KEY_ampersand },
3514   { SCIM_KEY_underscore,          SCIM_KEY_question },
3515   { SCIM_KEY_braceleft,           SCIM_KEY_dead_circumflex },
3516   { SCIM_KEY_bar,                 SCIM_KEY_Ccedilla },
3517   { SCIM_KEY_braceright,          SCIM_KEY_asterisk },
3518   { SCIM_KEY_asciitilde,          SCIM_KEY_ordfeminine },
3519 };
3520 
3521 static __Uint16Pair __spanish_to_us_caps_shift [] = {
3522   { SCIM_KEY_quotedbl,            SCIM_KEY_at },
3523   { SCIM_KEY_ampersand,           SCIM_KEY_asciicircum },
3524   { SCIM_KEY_parenleft,           SCIM_KEY_asterisk },
3525   { SCIM_KEY_parenright,          SCIM_KEY_parenleft },
3526   { SCIM_KEY_asterisk,            SCIM_KEY_braceright },
3527   { SCIM_KEY_slash,               SCIM_KEY_ampersand },
3528   { SCIM_KEY_colon,               SCIM_KEY_greater },
3529   { SCIM_KEY_semicolon,           SCIM_KEY_less },
3530   { SCIM_KEY_equal,               SCIM_KEY_parenright },
3531   { SCIM_KEY_question,            SCIM_KEY_underscore },
3532   { SCIM_KEY_underscore,          SCIM_KEY_question },
3533   { SCIM_KEY_ordfeminine,         SCIM_KEY_asciitilde },
3534   { SCIM_KEY_periodcentered,      SCIM_KEY_numbersign },
3535   { SCIM_KEY_questiondown,        SCIM_KEY_plus },
3536   { SCIM_KEY_ccedilla,            SCIM_KEY_bar },
3537   { SCIM_KEY_ntilde,              SCIM_KEY_colon },
3538   { SCIM_KEY_dead_circumflex,     SCIM_KEY_braceleft },
3539   { SCIM_KEY_dead_diaeresis,      SCIM_KEY_quotedbl },
3540 };
3541 
3542 static __Uint16Pair __us_to_spanish_caps_shift [] = {
3543   { SCIM_KEY_quotedbl,            SCIM_KEY_dead_diaeresis },
3544   { SCIM_KEY_numbersign,          SCIM_KEY_periodcentered },
3545   { SCIM_KEY_ampersand,           SCIM_KEY_slash },
3546   { SCIM_KEY_parenleft,           SCIM_KEY_parenright },
3547   { SCIM_KEY_parenright,          SCIM_KEY_equal },
3548   { SCIM_KEY_asterisk,            SCIM_KEY_parenleft },
3549   { SCIM_KEY_plus,                SCIM_KEY_questiondown },
3550   { SCIM_KEY_colon,               SCIM_KEY_ntilde },
3551   { SCIM_KEY_less,                SCIM_KEY_semicolon },
3552   { SCIM_KEY_greater,             SCIM_KEY_colon },
3553   { SCIM_KEY_question,            SCIM_KEY_underscore },
3554   { SCIM_KEY_at,                  SCIM_KEY_quotedbl },
3555   { SCIM_KEY_asciicircum,         SCIM_KEY_ampersand },
3556   { SCIM_KEY_underscore,          SCIM_KEY_question },
3557   { SCIM_KEY_braceleft,           SCIM_KEY_dead_circumflex },
3558   { SCIM_KEY_bar,                 SCIM_KEY_ccedilla },
3559   { SCIM_KEY_braceright,          SCIM_KEY_asterisk },
3560   { SCIM_KEY_asciitilde,          SCIM_KEY_ordfeminine },
3561 };
3562 
3563 static __Uint16Pair __spanish_latin_america_to_us_normal [] = {
3564   { SCIM_KEY_apostrophe,          SCIM_KEY_minus },
3565   { SCIM_KEY_plus,                SCIM_KEY_bracketright },
3566   { SCIM_KEY_minus,               SCIM_KEY_slash },
3567   { SCIM_KEY_exclamdown,          SCIM_KEY_equal },
3568   { SCIM_KEY_masculine,           SCIM_KEY_grave },
3569   { SCIM_KEY_ccedilla,            SCIM_KEY_backslash },
3570   { SCIM_KEY_ntilde,              SCIM_KEY_semicolon },
3571   { SCIM_KEY_dead_grave,          SCIM_KEY_bracketleft },
3572   { SCIM_KEY_dead_acute,          SCIM_KEY_apostrophe },
3573 };
3574 
3575 static __Uint16Pair __us_to_spanish_latin_america_normal [] = {
3576   { SCIM_KEY_apostrophe,          SCIM_KEY_dead_acute },
3577   { SCIM_KEY_minus,               SCIM_KEY_apostrophe },
3578   { SCIM_KEY_slash,               SCIM_KEY_minus },
3579   { SCIM_KEY_semicolon,           SCIM_KEY_ntilde },
3580   { SCIM_KEY_equal,               SCIM_KEY_exclamdown },
3581   { SCIM_KEY_bracketleft,         SCIM_KEY_dead_grave },
3582   { SCIM_KEY_backslash,           SCIM_KEY_ccedilla },
3583   { SCIM_KEY_bracketright,        SCIM_KEY_plus },
3584   { SCIM_KEY_grave,               SCIM_KEY_masculine },
3585 };
3586 
3587 static __Uint16Pair __spanish_latin_america_to_us_caps [] = {
3588   { SCIM_KEY_apostrophe,          SCIM_KEY_minus },
3589   { SCIM_KEY_plus,                SCIM_KEY_bracketright },
3590   { SCIM_KEY_minus,               SCIM_KEY_slash },
3591   { SCIM_KEY_exclamdown,          SCIM_KEY_equal },
3592   { SCIM_KEY_masculine,           SCIM_KEY_grave },
3593   { SCIM_KEY_Ccedilla,            SCIM_KEY_backslash },
3594   { SCIM_KEY_Ntilde,              SCIM_KEY_semicolon },
3595   { SCIM_KEY_dead_grave,          SCIM_KEY_bracketleft },
3596   { SCIM_KEY_dead_acute,          SCIM_KEY_apostrophe },
3597 };
3598 
3599 static __Uint16Pair __us_to_spanish_latin_america_caps [] = {
3600   { SCIM_KEY_apostrophe,          SCIM_KEY_dead_acute },
3601   { SCIM_KEY_minus,               SCIM_KEY_apostrophe },
3602   { SCIM_KEY_slash,               SCIM_KEY_minus },
3603   { SCIM_KEY_semicolon,           SCIM_KEY_Ntilde },
3604   { SCIM_KEY_equal,               SCIM_KEY_exclamdown },
3605   { SCIM_KEY_bracketleft,         SCIM_KEY_dead_grave },
3606   { SCIM_KEY_backslash,           SCIM_KEY_Ccedilla },
3607   { SCIM_KEY_bracketright,        SCIM_KEY_plus },
3608   { SCIM_KEY_grave,               SCIM_KEY_masculine },
3609 };
3610 
3611 static __Uint16Pair __spanish_latin_america_to_us_shift [] = {
3612   { SCIM_KEY_quotedbl,            SCIM_KEY_at },
3613   { SCIM_KEY_ampersand,           SCIM_KEY_asciicircum },
3614   { SCIM_KEY_parenleft,           SCIM_KEY_asterisk },
3615   { SCIM_KEY_parenright,          SCIM_KEY_parenleft },
3616   { SCIM_KEY_asterisk,            SCIM_KEY_braceright },
3617   { SCIM_KEY_slash,               SCIM_KEY_ampersand },
3618   { SCIM_KEY_colon,               SCIM_KEY_greater },
3619   { SCIM_KEY_semicolon,           SCIM_KEY_less },
3620   { SCIM_KEY_equal,               SCIM_KEY_parenright },
3621   { SCIM_KEY_question,            SCIM_KEY_underscore },
3622   { SCIM_KEY_underscore,          SCIM_KEY_question },
3623   { SCIM_KEY_ordfeminine,         SCIM_KEY_asciitilde },
3624   { SCIM_KEY_periodcentered,      SCIM_KEY_numbersign },
3625   { SCIM_KEY_questiondown,        SCIM_KEY_plus },
3626   { SCIM_KEY_Ccedilla,            SCIM_KEY_bar },
3627   { SCIM_KEY_Ntilde,              SCIM_KEY_colon },
3628   { SCIM_KEY_dead_circumflex,     SCIM_KEY_braceleft },
3629   { SCIM_KEY_dead_diaeresis,      SCIM_KEY_quotedbl },
3630 };
3631 
3632 static __Uint16Pair __us_to_spanish_latin_america_shift [] = {
3633   { SCIM_KEY_quotedbl,            SCIM_KEY_dead_diaeresis },
3634   { SCIM_KEY_numbersign,          SCIM_KEY_periodcentered },
3635   { SCIM_KEY_ampersand,           SCIM_KEY_slash },
3636   { SCIM_KEY_parenleft,           SCIM_KEY_parenright },
3637   { SCIM_KEY_parenright,          SCIM_KEY_equal },
3638   { SCIM_KEY_asterisk,            SCIM_KEY_parenleft },
3639   { SCIM_KEY_plus,                SCIM_KEY_questiondown },
3640   { SCIM_KEY_colon,               SCIM_KEY_Ntilde },
3641   { SCIM_KEY_less,                SCIM_KEY_semicolon },
3642   { SCIM_KEY_greater,             SCIM_KEY_colon },
3643   { SCIM_KEY_question,            SCIM_KEY_underscore },
3644   { SCIM_KEY_at,                  SCIM_KEY_quotedbl },
3645   { SCIM_KEY_asciicircum,         SCIM_KEY_ampersand },
3646   { SCIM_KEY_underscore,          SCIM_KEY_question },
3647   { SCIM_KEY_braceleft,           SCIM_KEY_dead_circumflex },
3648   { SCIM_KEY_bar,                 SCIM_KEY_Ccedilla },
3649   { SCIM_KEY_braceright,          SCIM_KEY_asterisk },
3650   { SCIM_KEY_asciitilde,          SCIM_KEY_ordfeminine },
3651 };
3652 
3653 static __Uint16Pair __spanish_latin_america_to_us_caps_shift [] = {
3654   { SCIM_KEY_quotedbl,            SCIM_KEY_at },
3655   { SCIM_KEY_ampersand,           SCIM_KEY_asciicircum },
3656   { SCIM_KEY_parenleft,           SCIM_KEY_asterisk },
3657   { SCIM_KEY_parenright,          SCIM_KEY_parenleft },
3658   { SCIM_KEY_asterisk,            SCIM_KEY_braceright },
3659   { SCIM_KEY_slash,               SCIM_KEY_ampersand },
3660   { SCIM_KEY_colon,               SCIM_KEY_greater },
3661   { SCIM_KEY_semicolon,           SCIM_KEY_less },
3662   { SCIM_KEY_equal,               SCIM_KEY_parenright },
3663   { SCIM_KEY_question,            SCIM_KEY_underscore },
3664   { SCIM_KEY_underscore,          SCIM_KEY_question },
3665   { SCIM_KEY_ordfeminine,         SCIM_KEY_asciitilde },
3666   { SCIM_KEY_periodcentered,      SCIM_KEY_numbersign },
3667   { SCIM_KEY_questiondown,        SCIM_KEY_plus },
3668   { SCIM_KEY_ccedilla,            SCIM_KEY_bar },
3669   { SCIM_KEY_ntilde,              SCIM_KEY_colon },
3670   { SCIM_KEY_dead_circumflex,     SCIM_KEY_braceleft },
3671   { SCIM_KEY_dead_diaeresis,      SCIM_KEY_quotedbl },
3672 };
3673 
3674 static __Uint16Pair __us_to_spanish_latin_america_caps_shift [] = {
3675   { SCIM_KEY_quotedbl,            SCIM_KEY_dead_diaeresis },
3676   { SCIM_KEY_numbersign,          SCIM_KEY_periodcentered },
3677   { SCIM_KEY_ampersand,           SCIM_KEY_slash },
3678   { SCIM_KEY_parenleft,           SCIM_KEY_parenright },
3679   { SCIM_KEY_parenright,          SCIM_KEY_equal },
3680   { SCIM_KEY_asterisk,            SCIM_KEY_parenleft },
3681   { SCIM_KEY_plus,                SCIM_KEY_questiondown },
3682   { SCIM_KEY_colon,               SCIM_KEY_ntilde },
3683   { SCIM_KEY_less,                SCIM_KEY_semicolon },
3684   { SCIM_KEY_greater,             SCIM_KEY_colon },
3685   { SCIM_KEY_question,            SCIM_KEY_underscore },
3686   { SCIM_KEY_at,                  SCIM_KEY_quotedbl },
3687   { SCIM_KEY_asciicircum,         SCIM_KEY_ampersand },
3688   { SCIM_KEY_underscore,          SCIM_KEY_question },
3689   { SCIM_KEY_braceleft,           SCIM_KEY_dead_circumflex },
3690   { SCIM_KEY_bar,                 SCIM_KEY_ccedilla },
3691   { SCIM_KEY_braceright,          SCIM_KEY_asterisk },
3692   { SCIM_KEY_asciitilde,          SCIM_KEY_ordfeminine },
3693 };
3694 
3695 static __Uint16Pair __swedish_to_us_normal [] = {
3696   { SCIM_KEY_apostrophe,          SCIM_KEY_backslash },
3697   { SCIM_KEY_plus,                SCIM_KEY_minus },
3698   { SCIM_KEY_minus,               SCIM_KEY_slash },
3699   { SCIM_KEY_section,             SCIM_KEY_grave },
3700   { SCIM_KEY_adiaeresis,          SCIM_KEY_apostrophe },
3701   { SCIM_KEY_aring,               SCIM_KEY_bracketleft },
3702   { SCIM_KEY_odiaeresis,          SCIM_KEY_semicolon },
3703   { SCIM_KEY_dead_acute,          SCIM_KEY_equal },
3704   { SCIM_KEY_dead_diaeresis,      SCIM_KEY_bracketright },
3705 };
3706 
3707 static __Uint16Pair __us_to_swedish_normal [] = {
3708   { SCIM_KEY_apostrophe,          SCIM_KEY_adiaeresis },
3709   { SCIM_KEY_minus,               SCIM_KEY_plus },
3710   { SCIM_KEY_slash,               SCIM_KEY_minus },
3711   { SCIM_KEY_semicolon,           SCIM_KEY_odiaeresis },
3712   { SCIM_KEY_equal,               SCIM_KEY_dead_acute },
3713   { SCIM_KEY_bracketleft,         SCIM_KEY_aring },
3714   { SCIM_KEY_backslash,           SCIM_KEY_apostrophe },
3715   { SCIM_KEY_bracketright,        SCIM_KEY_dead_diaeresis },
3716   { SCIM_KEY_grave,               SCIM_KEY_section },
3717 };
3718 
3719 static __Uint16Pair __swedish_to_us_caps [] = {
3720   { SCIM_KEY_apostrophe,          SCIM_KEY_backslash },
3721   { SCIM_KEY_plus,                SCIM_KEY_minus },
3722   { SCIM_KEY_minus,               SCIM_KEY_slash },
3723   { SCIM_KEY_section,             SCIM_KEY_grave },
3724   { SCIM_KEY_Adiaeresis,          SCIM_KEY_apostrophe },
3725   { SCIM_KEY_Aring,               SCIM_KEY_bracketleft },
3726   { SCIM_KEY_Odiaeresis,          SCIM_KEY_semicolon },
3727   { SCIM_KEY_dead_acute,          SCIM_KEY_equal },
3728   { SCIM_KEY_dead_diaeresis,      SCIM_KEY_bracketright },
3729 };
3730 
3731 static __Uint16Pair __us_to_swedish_caps [] = {
3732   { SCIM_KEY_apostrophe,          SCIM_KEY_Adiaeresis },
3733   { SCIM_KEY_minus,               SCIM_KEY_plus },
3734   { SCIM_KEY_slash,               SCIM_KEY_minus },
3735   { SCIM_KEY_semicolon,           SCIM_KEY_Odiaeresis },
3736   { SCIM_KEY_equal,               SCIM_KEY_dead_acute },
3737   { SCIM_KEY_bracketleft,         SCIM_KEY_Aring },
3738   { SCIM_KEY_backslash,           SCIM_KEY_apostrophe },
3739   { SCIM_KEY_bracketright,        SCIM_KEY_dead_diaeresis },
3740   { SCIM_KEY_grave,               SCIM_KEY_section },
3741 };
3742 
3743 static __Uint16Pair __swedish_to_us_shift [] = {
3744   { SCIM_KEY_quotedbl,            SCIM_KEY_at },
3745   { SCIM_KEY_ampersand,           SCIM_KEY_asciicircum },
3746   { SCIM_KEY_parenleft,           SCIM_KEY_asterisk },
3747   { SCIM_KEY_parenright,          SCIM_KEY_parenleft },
3748   { SCIM_KEY_asterisk,            SCIM_KEY_bar },
3749   { SCIM_KEY_slash,               SCIM_KEY_ampersand },
3750   { SCIM_KEY_colon,               SCIM_KEY_greater },
3751   { SCIM_KEY_semicolon,           SCIM_KEY_less },
3752   { SCIM_KEY_equal,               SCIM_KEY_parenright },
3753   { SCIM_KEY_question,            SCIM_KEY_underscore },
3754   { SCIM_KEY_underscore,          SCIM_KEY_question },
3755   { SCIM_KEY_currency,            SCIM_KEY_dollar },
3756   { SCIM_KEY_onehalf,             SCIM_KEY_asciitilde },
3757   { SCIM_KEY_Adiaeresis,          SCIM_KEY_quotedbl },
3758   { SCIM_KEY_Aring,               SCIM_KEY_braceleft },
3759   { SCIM_KEY_Odiaeresis,          SCIM_KEY_colon },
3760   { SCIM_KEY_dead_grave,          SCIM_KEY_plus },
3761   { SCIM_KEY_dead_circumflex,     SCIM_KEY_braceright },
3762 };
3763 
3764 static __Uint16Pair __us_to_swedish_shift [] = {
3765   { SCIM_KEY_quotedbl,            SCIM_KEY_Adiaeresis },
3766   { SCIM_KEY_dollar,              SCIM_KEY_currency },
3767   { SCIM_KEY_ampersand,           SCIM_KEY_slash },
3768   { SCIM_KEY_parenleft,           SCIM_KEY_parenright },
3769   { SCIM_KEY_parenright,          SCIM_KEY_equal },
3770   { SCIM_KEY_asterisk,            SCIM_KEY_parenleft },
3771   { SCIM_KEY_plus,                SCIM_KEY_dead_grave },
3772   { SCIM_KEY_colon,               SCIM_KEY_Odiaeresis },
3773   { SCIM_KEY_less,                SCIM_KEY_semicolon },
3774   { SCIM_KEY_greater,             SCIM_KEY_colon },
3775   { SCIM_KEY_question,            SCIM_KEY_underscore },
3776   { SCIM_KEY_at,                  SCIM_KEY_quotedbl },
3777   { SCIM_KEY_asciicircum,         SCIM_KEY_ampersand },
3778   { SCIM_KEY_underscore,          SCIM_KEY_question },
3779   { SCIM_KEY_braceleft,           SCIM_KEY_Aring },
3780   { SCIM_KEY_bar,                 SCIM_KEY_asterisk },
3781   { SCIM_KEY_braceright,          SCIM_KEY_dead_circumflex },
3782   { SCIM_KEY_asciitilde,          SCIM_KEY_onehalf },
3783 };
3784 
3785 static __Uint16Pair __swedish_to_us_caps_shift [] = {
3786   { SCIM_KEY_quotedbl,            SCIM_KEY_at },
3787   { SCIM_KEY_ampersand,           SCIM_KEY_asciicircum },
3788   { SCIM_KEY_parenleft,           SCIM_KEY_asterisk },
3789   { SCIM_KEY_parenright,          SCIM_KEY_parenleft },
3790   { SCIM_KEY_asterisk,            SCIM_KEY_bar },
3791   { SCIM_KEY_slash,               SCIM_KEY_ampersand },
3792   { SCIM_KEY_colon,               SCIM_KEY_greater },
3793   { SCIM_KEY_semicolon,           SCIM_KEY_less },
3794   { SCIM_KEY_equal,               SCIM_KEY_parenright },
3795   { SCIM_KEY_question,            SCIM_KEY_underscore },
3796   { SCIM_KEY_underscore,          SCIM_KEY_question },
3797   { SCIM_KEY_currency,            SCIM_KEY_dollar },
3798   { SCIM_KEY_onehalf,             SCIM_KEY_asciitilde },
3799   { SCIM_KEY_adiaeresis,          SCIM_KEY_quotedbl },
3800   { SCIM_KEY_aring,               SCIM_KEY_braceleft },
3801   { SCIM_KEY_odiaeresis,          SCIM_KEY_colon },
3802   { SCIM_KEY_dead_grave,          SCIM_KEY_plus },
3803   { SCIM_KEY_dead_circumflex,     SCIM_KEY_braceright },
3804 };
3805 
3806 static __Uint16Pair __us_to_swedish_caps_shift [] = {
3807   { SCIM_KEY_quotedbl,            SCIM_KEY_adiaeresis },
3808   { SCIM_KEY_dollar,              SCIM_KEY_currency },
3809   { SCIM_KEY_ampersand,           SCIM_KEY_slash },
3810   { SCIM_KEY_parenleft,           SCIM_KEY_parenright },
3811   { SCIM_KEY_parenright,          SCIM_KEY_equal },
3812   { SCIM_KEY_asterisk,            SCIM_KEY_parenleft },
3813   { SCIM_KEY_plus,                SCIM_KEY_dead_grave },
3814   { SCIM_KEY_colon,               SCIM_KEY_odiaeresis },
3815   { SCIM_KEY_less,                SCIM_KEY_semicolon },
3816   { SCIM_KEY_greater,             SCIM_KEY_colon },
3817   { SCIM_KEY_question,            SCIM_KEY_underscore },
3818   { SCIM_KEY_at,                  SCIM_KEY_quotedbl },
3819   { SCIM_KEY_asciicircum,         SCIM_KEY_ampersand },
3820   { SCIM_KEY_underscore,          SCIM_KEY_question },
3821   { SCIM_KEY_braceleft,           SCIM_KEY_aring },
3822   { SCIM_KEY_bar,                 SCIM_KEY_asterisk },
3823   { SCIM_KEY_braceright,          SCIM_KEY_dead_circumflex },
3824   { SCIM_KEY_asciitilde,          SCIM_KEY_onehalf },
3825 };
3826 
3827 static __Uint16Pair __turkish_to_us_normal [] = {
3828   { SCIM_KEY_quotedbl,            SCIM_KEY_grave },
3829   { SCIM_KEY_asterisk,            SCIM_KEY_minus },
3830   { SCIM_KEY_comma,               SCIM_KEY_backslash },
3831   { SCIM_KEY_minus,               SCIM_KEY_equal },
3832   { SCIM_KEY_period,              SCIM_KEY_slash },
3833   { SCIM_KEY_i,                   SCIM_KEY_apostrophe },
3834   { SCIM_KEY_ccedilla,            SCIM_KEY_period },
3835   { SCIM_KEY_odiaeresis,          SCIM_KEY_comma },
3836   { SCIM_KEY_udiaeresis,          SCIM_KEY_bracketright },
3837   { SCIM_KEY_scedilla,            SCIM_KEY_semicolon },
3838   { SCIM_KEY_idotless,            SCIM_KEY_i },
3839   { SCIM_KEY_gbreve,              SCIM_KEY_bracketleft },
3840 };
3841 
3842 static __Uint16Pair __us_to_turkish_normal [] = {
3843   { SCIM_KEY_apostrophe,          SCIM_KEY_i },
3844   { SCIM_KEY_comma,               SCIM_KEY_odiaeresis },
3845   { SCIM_KEY_minus,               SCIM_KEY_asterisk },
3846   { SCIM_KEY_period,              SCIM_KEY_ccedilla },
3847   { SCIM_KEY_slash,               SCIM_KEY_period },
3848   { SCIM_KEY_semicolon,           SCIM_KEY_scedilla },
3849   { SCIM_KEY_equal,               SCIM_KEY_minus },
3850   { SCIM_KEY_bracketleft,         SCIM_KEY_gbreve },
3851   { SCIM_KEY_backslash,           SCIM_KEY_comma },
3852   { SCIM_KEY_bracketright,        SCIM_KEY_udiaeresis },
3853   { SCIM_KEY_grave,               SCIM_KEY_quotedbl },
3854   { SCIM_KEY_i,                   SCIM_KEY_idotless },
3855 };
3856 
3857 static __Uint16Pair __turkish_to_us_caps [] = {
3858   { SCIM_KEY_quotedbl,            SCIM_KEY_grave },
3859   { SCIM_KEY_asterisk,            SCIM_KEY_minus },
3860   { SCIM_KEY_comma,               SCIM_KEY_backslash },
3861   { SCIM_KEY_minus,               SCIM_KEY_equal },
3862   { SCIM_KEY_period,              SCIM_KEY_slash },
3863   { SCIM_KEY_I,                   SCIM_KEY_apostrophe },
3864   { SCIM_KEY_Ccedilla,            SCIM_KEY_period },
3865   { SCIM_KEY_Odiaeresis,          SCIM_KEY_comma },
3866   { SCIM_KEY_Udiaeresis,          SCIM_KEY_bracketright },
3867   { SCIM_KEY_Scedilla,            SCIM_KEY_semicolon },
3868   { SCIM_KEY_Gbreve,              SCIM_KEY_bracketleft },
3869   { SCIM_KEY_idotless,            SCIM_KEY_I },
3870 };
3871 
3872 static __Uint16Pair __us_to_turkish_caps [] = {
3873   { SCIM_KEY_apostrophe,          SCIM_KEY_I },
3874   { SCIM_KEY_comma,               SCIM_KEY_Odiaeresis },
3875   { SCIM_KEY_minus,               SCIM_KEY_asterisk },
3876   { SCIM_KEY_period,              SCIM_KEY_Ccedilla },
3877   { SCIM_KEY_slash,               SCIM_KEY_period },
3878   { SCIM_KEY_semicolon,           SCIM_KEY_Scedilla },
3879   { SCIM_KEY_equal,               SCIM_KEY_minus },
3880   { SCIM_KEY_I,                   SCIM_KEY_idotless },
3881   { SCIM_KEY_bracketleft,         SCIM_KEY_Gbreve },
3882   { SCIM_KEY_backslash,           SCIM_KEY_comma },
3883   { SCIM_KEY_bracketright,        SCIM_KEY_Udiaeresis },
3884   { SCIM_KEY_grave,               SCIM_KEY_quotedbl },
3885 };
3886 
3887 static __Uint16Pair __turkish_to_us_shift [] = {
3888   { SCIM_KEY_ampersand,           SCIM_KEY_asciicircum },
3889   { SCIM_KEY_apostrophe,          SCIM_KEY_at },
3890   { SCIM_KEY_parenleft,           SCIM_KEY_asterisk },
3891   { SCIM_KEY_parenright,          SCIM_KEY_parenleft },
3892   { SCIM_KEY_plus,                SCIM_KEY_dollar },
3893   { SCIM_KEY_slash,               SCIM_KEY_ampersand },
3894   { SCIM_KEY_colon,               SCIM_KEY_question },
3895   { SCIM_KEY_semicolon,           SCIM_KEY_bar },
3896   { SCIM_KEY_equal,               SCIM_KEY_parenright },
3897   { SCIM_KEY_question,            SCIM_KEY_underscore },
3898   { SCIM_KEY_backslash,           SCIM_KEY_asciitilde },
3899   { SCIM_KEY_asciicircum,         SCIM_KEY_numbersign },
3900   { SCIM_KEY_underscore,          SCIM_KEY_plus },
3901   { SCIM_KEY_Ccedilla,            SCIM_KEY_greater },
3902   { SCIM_KEY_Odiaeresis,          SCIM_KEY_less },
3903   { SCIM_KEY_Udiaeresis,          SCIM_KEY_braceright },
3904   { SCIM_KEY_Scedilla,            SCIM_KEY_colon },
3905   { SCIM_KEY_Iabovedot,           SCIM_KEY_quotedbl },
3906   { SCIM_KEY_Gbreve,              SCIM_KEY_braceleft },
3907 };
3908 
3909 static __Uint16Pair __us_to_turkish_shift [] = {
3910   { SCIM_KEY_quotedbl,            SCIM_KEY_Iabovedot },
3911   { SCIM_KEY_numbersign,          SCIM_KEY_asciicircum },
3912   { SCIM_KEY_dollar,              SCIM_KEY_plus },
3913   { SCIM_KEY_ampersand,           SCIM_KEY_slash },
3914   { SCIM_KEY_parenleft,           SCIM_KEY_parenright },
3915   { SCIM_KEY_parenright,          SCIM_KEY_equal },
3916   { SCIM_KEY_asterisk,            SCIM_KEY_parenleft },
3917   { SCIM_KEY_plus,                SCIM_KEY_underscore },
3918   { SCIM_KEY_colon,               SCIM_KEY_Scedilla },
3919   { SCIM_KEY_less,                SCIM_KEY_Odiaeresis },
3920   { SCIM_KEY_greater,             SCIM_KEY_Ccedilla },
3921   { SCIM_KEY_question,            SCIM_KEY_colon },
3922   { SCIM_KEY_at,                  SCIM_KEY_apostrophe },
3923   { SCIM_KEY_asciicircum,         SCIM_KEY_ampersand },
3924   { SCIM_KEY_underscore,          SCIM_KEY_question },
3925   { SCIM_KEY_braceleft,           SCIM_KEY_Gbreve },
3926   { SCIM_KEY_bar,                 SCIM_KEY_semicolon },
3927   { SCIM_KEY_braceright,          SCIM_KEY_Udiaeresis },
3928   { SCIM_KEY_asciitilde,          SCIM_KEY_backslash },
3929 };
3930 
3931 static __Uint16Pair __turkish_to_us_caps_shift [] = {
3932   { SCIM_KEY_ampersand,           SCIM_KEY_asciicircum },
3933   { SCIM_KEY_apostrophe,          SCIM_KEY_at },
3934   { SCIM_KEY_parenleft,           SCIM_KEY_asterisk },
3935   { SCIM_KEY_parenright,          SCIM_KEY_parenleft },
3936   { SCIM_KEY_plus,                SCIM_KEY_dollar },
3937   { SCIM_KEY_slash,               SCIM_KEY_ampersand },
3938   { SCIM_KEY_colon,               SCIM_KEY_question },
3939   { SCIM_KEY_semicolon,           SCIM_KEY_bar },
3940   { SCIM_KEY_equal,               SCIM_KEY_parenright },
3941   { SCIM_KEY_question,            SCIM_KEY_underscore },
3942   { SCIM_KEY_I,                   SCIM_KEY_i },
3943   { SCIM_KEY_backslash,           SCIM_KEY_asciitilde },
3944   { SCIM_KEY_asciicircum,         SCIM_KEY_numbersign },
3945   { SCIM_KEY_underscore,          SCIM_KEY_plus },
3946   { SCIM_KEY_ccedilla,            SCIM_KEY_greater },
3947   { SCIM_KEY_odiaeresis,          SCIM_KEY_less },
3948   { SCIM_KEY_udiaeresis,          SCIM_KEY_braceright },
3949   { SCIM_KEY_scedilla,            SCIM_KEY_colon },
3950   { SCIM_KEY_Iabovedot,           SCIM_KEY_quotedbl },
3951   { SCIM_KEY_gbreve,              SCIM_KEY_braceleft },
3952 };
3953 
3954 static __Uint16Pair __us_to_turkish_caps_shift [] = {
3955   { SCIM_KEY_quotedbl,            SCIM_KEY_Iabovedot },
3956   { SCIM_KEY_numbersign,          SCIM_KEY_asciicircum },
3957   { SCIM_KEY_dollar,              SCIM_KEY_plus },
3958   { SCIM_KEY_ampersand,           SCIM_KEY_slash },
3959   { SCIM_KEY_parenleft,           SCIM_KEY_parenright },
3960   { SCIM_KEY_parenright,          SCIM_KEY_equal },
3961   { SCIM_KEY_asterisk,            SCIM_KEY_parenleft },
3962   { SCIM_KEY_plus,                SCIM_KEY_underscore },
3963   { SCIM_KEY_colon,               SCIM_KEY_scedilla },
3964   { SCIM_KEY_less,                SCIM_KEY_odiaeresis },
3965   { SCIM_KEY_greater,             SCIM_KEY_ccedilla },
3966   { SCIM_KEY_question,            SCIM_KEY_colon },
3967   { SCIM_KEY_at,                  SCIM_KEY_apostrophe },
3968   { SCIM_KEY_asciicircum,         SCIM_KEY_ampersand },
3969   { SCIM_KEY_underscore,          SCIM_KEY_question },
3970   { SCIM_KEY_i,                   SCIM_KEY_I },
3971   { SCIM_KEY_braceleft,           SCIM_KEY_gbreve },
3972   { SCIM_KEY_bar,                 SCIM_KEY_semicolon },
3973   { SCIM_KEY_braceright,          SCIM_KEY_udiaeresis },
3974   { SCIM_KEY_asciitilde,          SCIM_KEY_backslash },
3975 };
3976 
3977 static __Uint16Pair __uk_to_us_normal [] = {
3978   { SCIM_KEY_numbersign,          SCIM_KEY_backslash },
3979 };
3980 
3981 static __Uint16Pair __us_to_uk_normal [] = {
3982   { SCIM_KEY_backslash,           SCIM_KEY_numbersign },
3983 };
3984 
3985 static __Uint16Pair __uk_to_us_caps [] = {
3986   { SCIM_KEY_numbersign,          SCIM_KEY_backslash },
3987 };
3988 
3989 static __Uint16Pair __us_to_uk_caps [] = {
3990   { SCIM_KEY_backslash,           SCIM_KEY_numbersign },
3991 };
3992 
3993 static __Uint16Pair __uk_to_us_shift [] = {
3994   { SCIM_KEY_quotedbl,            SCIM_KEY_at },
3995   { SCIM_KEY_at,                  SCIM_KEY_quotedbl },
3996   { SCIM_KEY_asciitilde,          SCIM_KEY_bar },
3997   { SCIM_KEY_sterling,            SCIM_KEY_numbersign },
3998   { SCIM_KEY_notsign,             SCIM_KEY_asciitilde },
3999 };
4000 
4001 static __Uint16Pair __us_to_uk_shift [] = {
4002   { SCIM_KEY_quotedbl,            SCIM_KEY_at },
4003   { SCIM_KEY_numbersign,          SCIM_KEY_sterling },
4004   { SCIM_KEY_at,                  SCIM_KEY_quotedbl },
4005   { SCIM_KEY_bar,                 SCIM_KEY_asciitilde },
4006   { SCIM_KEY_asciitilde,          SCIM_KEY_notsign },
4007 };
4008 
4009 static __Uint16Pair __uk_to_us_caps_shift [] = {
4010   { SCIM_KEY_quotedbl,            SCIM_KEY_at },
4011   { SCIM_KEY_at,                  SCIM_KEY_quotedbl },
4012   { SCIM_KEY_asciitilde,          SCIM_KEY_bar },
4013   { SCIM_KEY_sterling,            SCIM_KEY_numbersign },
4014   { SCIM_KEY_notsign,             SCIM_KEY_asciitilde },
4015 };
4016 
4017 static __Uint16Pair __us_to_uk_caps_shift [] = {
4018   { SCIM_KEY_quotedbl,            SCIM_KEY_at },
4019   { SCIM_KEY_numbersign,          SCIM_KEY_sterling },
4020   { SCIM_KEY_at,                  SCIM_KEY_quotedbl },
4021   { SCIM_KEY_bar,                 SCIM_KEY_asciitilde },
4022   { SCIM_KEY_asciitilde,          SCIM_KEY_notsign },
4023 };
4024 
4025 static __Uint16Pair __icelandic_to_us_normal [] = {
4026   { SCIM_KEY_apostrophe,          SCIM_KEY_bracketright },
4027   { SCIM_KEY_plus,                SCIM_KEY_backslash },
4028   { SCIM_KEY_minus,               SCIM_KEY_equal },
4029   { SCIM_KEY_degree,              SCIM_KEY_grave },
4030   { SCIM_KEY_ae,                  SCIM_KEY_semicolon },
4031   { SCIM_KEY_eth,                 SCIM_KEY_bracketleft },
4032   { SCIM_KEY_odiaeresis,          SCIM_KEY_minus },
4033   { SCIM_KEY_thorn,               SCIM_KEY_slash },
4034   { SCIM_KEY_dead_acute,          SCIM_KEY_apostrophe },
4035 };
4036 
4037 static __Uint16Pair __us_to_icelandic_normal [] = {
4038   { SCIM_KEY_apostrophe,          SCIM_KEY_dead_acute },
4039   { SCIM_KEY_minus,               SCIM_KEY_odiaeresis },
4040   { SCIM_KEY_slash,               SCIM_KEY_thorn },
4041   { SCIM_KEY_semicolon,           SCIM_KEY_ae },
4042   { SCIM_KEY_equal,               SCIM_KEY_minus },
4043   { SCIM_KEY_bracketleft,         SCIM_KEY_eth },
4044   { SCIM_KEY_backslash,           SCIM_KEY_plus },
4045   { SCIM_KEY_bracketright,        SCIM_KEY_apostrophe },
4046   { SCIM_KEY_grave,               SCIM_KEY_degree },
4047 };
4048 
4049 static __Uint16Pair __icelandic_to_us_caps [] = {
4050   { SCIM_KEY_apostrophe,          SCIM_KEY_bracketright },
4051   { SCIM_KEY_plus,                SCIM_KEY_backslash },
4052   { SCIM_KEY_minus,               SCIM_KEY_equal },
4053   { SCIM_KEY_degree,              SCIM_KEY_grave },
4054   { SCIM_KEY_AE,                  SCIM_KEY_semicolon },
4055   { SCIM_KEY_ETH,                 SCIM_KEY_bracketleft },
4056   { SCIM_KEY_Odiaeresis,          SCIM_KEY_minus },
4057   { SCIM_KEY_THORN,               SCIM_KEY_slash },
4058   { SCIM_KEY_dead_acute,          SCIM_KEY_apostrophe },
4059 };
4060 
4061 static __Uint16Pair __us_to_icelandic_caps [] = {
4062   { SCIM_KEY_apostrophe,          SCIM_KEY_dead_acute },
4063   { SCIM_KEY_minus,               SCIM_KEY_Odiaeresis },
4064   { SCIM_KEY_slash,               SCIM_KEY_THORN },
4065   { SCIM_KEY_semicolon,           SCIM_KEY_AE },
4066   { SCIM_KEY_equal,               SCIM_KEY_minus },
4067   { SCIM_KEY_bracketleft,         SCIM_KEY_ETH },
4068   { SCIM_KEY_backslash,           SCIM_KEY_plus },
4069   { SCIM_KEY_bracketright,        SCIM_KEY_apostrophe },
4070   { SCIM_KEY_grave,               SCIM_KEY_degree },
4071 };
4072 
4073 static __Uint16Pair __icelandic_to_us_shift [] = {
4074   { SCIM_KEY_quotedbl,            SCIM_KEY_at },
4075   { SCIM_KEY_ampersand,           SCIM_KEY_asciicircum },
4076   { SCIM_KEY_parenleft,           SCIM_KEY_asterisk },
4077   { SCIM_KEY_parenright,          SCIM_KEY_parenleft },
4078   { SCIM_KEY_asterisk,            SCIM_KEY_bar },
4079   { SCIM_KEY_slash,               SCIM_KEY_ampersand },
4080   { SCIM_KEY_colon,               SCIM_KEY_greater },
4081   { SCIM_KEY_semicolon,           SCIM_KEY_less },
4082   { SCIM_KEY_equal,               SCIM_KEY_parenright },
4083   { SCIM_KEY_question,            SCIM_KEY_braceright },
4084   { SCIM_KEY_underscore,          SCIM_KEY_plus },
4085   { SCIM_KEY_diaeresis,           SCIM_KEY_asciitilde },
4086   { SCIM_KEY_Adiaeresis,          SCIM_KEY_quotedbl },
4087   { SCIM_KEY_AE,                  SCIM_KEY_colon },
4088   { SCIM_KEY_ETH,                 SCIM_KEY_braceleft },
4089   { SCIM_KEY_Odiaeresis,          SCIM_KEY_underscore },
4090   { SCIM_KEY_THORN,               SCIM_KEY_question },
4091 };
4092 
4093 static __Uint16Pair __us_to_icelandic_shift [] = {
4094   { SCIM_KEY_quotedbl,            SCIM_KEY_Adiaeresis },
4095   { SCIM_KEY_ampersand,           SCIM_KEY_slash },
4096   { SCIM_KEY_parenleft,           SCIM_KEY_parenright },
4097   { SCIM_KEY_parenright,          SCIM_KEY_equal },
4098   { SCIM_KEY_asterisk,            SCIM_KEY_parenleft },
4099   { SCIM_KEY_plus,                SCIM_KEY_underscore },
4100   { SCIM_KEY_colon,               SCIM_KEY_AE },
4101   { SCIM_KEY_less,                SCIM_KEY_semicolon },
4102   { SCIM_KEY_greater,             SCIM_KEY_colon },
4103   { SCIM_KEY_question,            SCIM_KEY_THORN },
4104   { SCIM_KEY_at,                  SCIM_KEY_quotedbl },
4105   { SCIM_KEY_asciicircum,         SCIM_KEY_ampersand },
4106   { SCIM_KEY_underscore,          SCIM_KEY_Odiaeresis },
4107   { SCIM_KEY_braceleft,           SCIM_KEY_ETH },
4108   { SCIM_KEY_bar,                 SCIM_KEY_asterisk },
4109   { SCIM_KEY_braceright,          SCIM_KEY_question },
4110   { SCIM_KEY_asciitilde,          SCIM_KEY_diaeresis },
4111 };
4112 
4113 static __Uint16Pair __icelandic_to_us_caps_shift [] = {
4114   { SCIM_KEY_quotedbl,            SCIM_KEY_at },
4115   { SCIM_KEY_ampersand,           SCIM_KEY_asciicircum },
4116   { SCIM_KEY_parenleft,           SCIM_KEY_asterisk },
4117   { SCIM_KEY_parenright,          SCIM_KEY_parenleft },
4118   { SCIM_KEY_asterisk,            SCIM_KEY_bar },
4119   { SCIM_KEY_slash,               SCIM_KEY_ampersand },
4120   { SCIM_KEY_colon,               SCIM_KEY_greater },
4121   { SCIM_KEY_semicolon,           SCIM_KEY_less },
4122   { SCIM_KEY_equal,               SCIM_KEY_parenright },
4123   { SCIM_KEY_question,            SCIM_KEY_braceright },
4124   { SCIM_KEY_underscore,          SCIM_KEY_plus },
4125   { SCIM_KEY_diaeresis,           SCIM_KEY_asciitilde },
4126   { SCIM_KEY_Adiaeresis,          SCIM_KEY_quotedbl },
4127   { SCIM_KEY_ae,                  SCIM_KEY_colon },
4128   { SCIM_KEY_eth,                 SCIM_KEY_braceleft },
4129   { SCIM_KEY_odiaeresis,          SCIM_KEY_underscore },
4130   { SCIM_KEY_thorn,               SCIM_KEY_question },
4131 };
4132 
4133 static __Uint16Pair __us_to_icelandic_caps_shift [] = {
4134   { SCIM_KEY_quotedbl,            SCIM_KEY_Adiaeresis },
4135   { SCIM_KEY_ampersand,           SCIM_KEY_slash },
4136   { SCIM_KEY_parenleft,           SCIM_KEY_parenright },
4137   { SCIM_KEY_parenright,          SCIM_KEY_equal },
4138   { SCIM_KEY_asterisk,            SCIM_KEY_parenleft },
4139   { SCIM_KEY_plus,                SCIM_KEY_underscore },
4140   { SCIM_KEY_colon,               SCIM_KEY_ae },
4141   { SCIM_KEY_less,                SCIM_KEY_semicolon },
4142   { SCIM_KEY_greater,             SCIM_KEY_colon },
4143   { SCIM_KEY_question,            SCIM_KEY_thorn },
4144   { SCIM_KEY_at,                  SCIM_KEY_quotedbl },
4145   { SCIM_KEY_asciicircum,         SCIM_KEY_ampersand },
4146   { SCIM_KEY_underscore,          SCIM_KEY_odiaeresis },
4147   { SCIM_KEY_braceleft,           SCIM_KEY_eth },
4148   { SCIM_KEY_bar,                 SCIM_KEY_asterisk },
4149   { SCIM_KEY_braceright,          SCIM_KEY_question },
4150   { SCIM_KEY_asciitilde,          SCIM_KEY_diaeresis },
4151 };
4152 
4153 
4154 // KeyEvent remapping map
4155 static __KeyCodeMap __normal_map [] =
4156 {
4157     { 0, 0 },
4158     { 0, 0 },
4159     { sizeof(__belgian_to_us_normal) / sizeof (__Uint16Pair), __belgian_to_us_normal },
4160     { 0, 0 }, // Croatian
4161     { sizeof(__czech_to_us_normal) / sizeof (__Uint16Pair), __czech_to_us_normal },
4162     { sizeof(__czech_qwerty_to_us_normal) / sizeof (__Uint16Pair), __czech_qwerty_to_us_normal },
4163     { sizeof(__danish_to_us_normal) / sizeof (__Uint16Pair), __danish_to_us_normal },
4164     { 0, 0 }, // Dutch
4165     { sizeof(__dvorak_to_us_normal) / sizeof (__Uint16Pair), __dvorak_to_us_normal },
4166     { sizeof(__estonian_to_us_normal) / sizeof (__Uint16Pair), __estonian_to_us_normal },
4167     { sizeof(__finnish_to_us_normal) / sizeof (__Uint16Pair), __finnish_to_us_normal },
4168     { sizeof(__french_to_us_normal) / sizeof (__Uint16Pair), __french_to_us_normal },
4169     { 0, 0 }, // French Canadian
4170     { sizeof(__french_switzerland_to_us_normal) / sizeof (__Uint16Pair), __french_switzerland_to_us_normal },
4171     { sizeof(__german_to_us_normal) / sizeof (__Uint16Pair), __german_to_us_normal },
4172     { sizeof(__german_deadkeys_to_us_normal) / sizeof (__Uint16Pair), __german_deadkeys_to_us_normal },
4173     { sizeof(__german_swiss_to_us_normal) / sizeof (__Uint16Pair), __german_swiss_to_us_normal },
4174     { 0, 0 }, // Greek
4175     { sizeof(__hungarian_to_us_normal) / sizeof (__Uint16Pair), __hungarian_to_us_normal },
4176     { sizeof(__italian_to_us_normal) / sizeof (__Uint16Pair), __italian_to_us_normal },
4177     { sizeof(__japanese_to_us_normal) / sizeof (__Uint16Pair), __japanese_to_us_normal },
4178     { sizeof(__norwegian_to_us_normal) / sizeof (__Uint16Pair), __norwegian_to_us_normal },
4179     { 0, 0 }, // Polish
4180     { sizeof(__portuguese_to_us_normal) / sizeof (__Uint16Pair), __portuguese_to_us_normal },
4181     { sizeof(__portuguese_brazil_to_us_normal) / sizeof (__Uint16Pair), __portuguese_brazil_to_us_normal },
4182     { sizeof(__portuguese_brazil_us_accents_to_us_normal) / sizeof (__Uint16Pair), __portuguese_brazil_us_accents_to_us_normal },
4183     { 0, 0 }, // Russian
4184     { sizeof(__slovak_to_us_normal) / sizeof (__Uint16Pair), __slovak_to_us_normal },
4185     { sizeof(__slovak_qwerty_to_us_normal) / sizeof (__Uint16Pair), __slovak_qwerty_to_us_normal },
4186     { 0, 0 }, // Slovene
4187     { sizeof(__spanish_to_us_normal) / sizeof (__Uint16Pair), __spanish_to_us_normal },
4188     { sizeof(__spanish_cp850_to_us_normal) / sizeof (__Uint16Pair), __spanish_cp850_to_us_normal },
4189     { sizeof(__spanish_latin_america_to_us_normal) / sizeof (__Uint16Pair), __spanish_latin_america_to_us_normal },
4190     { sizeof(__swedish_to_us_normal) / sizeof (__Uint16Pair), __swedish_to_us_normal },
4191     { sizeof(__turkish_to_us_normal) / sizeof (__Uint16Pair), __turkish_to_us_normal },
4192     { sizeof(__uk_to_us_normal) / sizeof (__Uint16Pair), __uk_to_us_normal },
4193     { sizeof(__icelandic_to_us_normal) / sizeof (__Uint16Pair), __icelandic_to_us_normal },
4194     { 0, 0 }, // Icelandic
4195     { 0, 0 }, // Ukrainian
4196 };
4197 
4198 static __KeyCodeMap __normal_invert_map [] =
4199 {
4200     { 0, 0 },
4201     { 0, 0 },
4202     { sizeof(__us_to_belgian_normal) / sizeof (__Uint16Pair), __us_to_belgian_normal },
4203     { 0, 0 }, // Croatian
4204     { sizeof(__us_to_czech_normal) / sizeof (__Uint16Pair), __us_to_czech_normal },
4205     { sizeof(__us_to_czech_qwerty_normal) / sizeof (__Uint16Pair), __us_to_czech_qwerty_normal },
4206     { sizeof(__us_to_danish_normal) / sizeof (__Uint16Pair), __us_to_danish_normal },
4207     { 0, 0 }, // Dutch
4208     { sizeof(__us_to_dvorak_normal) / sizeof (__Uint16Pair), __us_to_dvorak_normal },
4209     { sizeof(__us_to_estonian_normal) / sizeof (__Uint16Pair), __us_to_estonian_normal },
4210     { sizeof(__us_to_finnish_normal) / sizeof (__Uint16Pair), __us_to_finnish_normal },
4211     { sizeof(__us_to_french_normal) / sizeof (__Uint16Pair), __us_to_french_normal },
4212     { 0, 0 }, // French Canadian
4213     { sizeof(__us_to_french_switzerland_normal) / sizeof (__Uint16Pair), __us_to_french_switzerland_normal },
4214     { sizeof(__us_to_german_normal) / sizeof (__Uint16Pair), __us_to_german_normal },
4215     { sizeof(__us_to_german_deadkeys_normal) / sizeof (__Uint16Pair), __us_to_german_deadkeys_normal },
4216     { sizeof(__us_to_german_swiss_normal) / sizeof (__Uint16Pair), __us_to_german_swiss_normal },
4217     { 0, 0 }, // Greek
4218     { sizeof(__us_to_hungarian_normal) / sizeof (__Uint16Pair), __us_to_hungarian_normal },
4219     { sizeof(__us_to_italian_normal) / sizeof (__Uint16Pair), __us_to_italian_normal },
4220     { sizeof(__us_to_japanese_normal) / sizeof (__Uint16Pair), __us_to_japanese_normal },
4221     { sizeof(__us_to_norwegian_normal) / sizeof (__Uint16Pair), __us_to_norwegian_normal },
4222     { 0, 0 }, // Polish
4223     { sizeof(__us_to_portuguese_normal) / sizeof (__Uint16Pair), __us_to_portuguese_normal },
4224     { sizeof(__us_to_portuguese_brazil_normal) / sizeof (__Uint16Pair), __us_to_portuguese_brazil_normal },
4225     { sizeof(__us_to_portuguese_brazil_us_accents_normal) / sizeof (__Uint16Pair), __us_to_portuguese_brazil_us_accents_normal },
4226     { 0, 0 }, // Russian
4227     { sizeof(__us_to_slovak_normal) / sizeof (__Uint16Pair), __us_to_slovak_normal },
4228     { sizeof(__us_to_slovak_qwerty_normal) / sizeof (__Uint16Pair), __us_to_slovak_qwerty_normal },
4229     { 0, 0 }, // Slovene
4230     { sizeof(__us_to_spanish_normal) / sizeof (__Uint16Pair), __us_to_spanish_normal },
4231     { sizeof(__us_to_spanish_cp850_normal) / sizeof (__Uint16Pair), __us_to_spanish_cp850_normal },
4232     { sizeof(__us_to_spanish_latin_america_normal) / sizeof (__Uint16Pair), __us_to_spanish_latin_america_normal },
4233     { sizeof(__us_to_swedish_normal) / sizeof (__Uint16Pair), __us_to_swedish_normal },
4234     { sizeof(__us_to_turkish_normal) / sizeof (__Uint16Pair), __us_to_turkish_normal },
4235     { sizeof(__us_to_uk_normal) / sizeof (__Uint16Pair), __us_to_uk_normal },
4236     { sizeof(__us_to_icelandic_normal) / sizeof (__Uint16Pair), __us_to_icelandic_normal },
4237     { 0, 0 }, // Icelandic
4238     { 0, 0 }, // Ukrainian
4239 };
4240 
4241 static __KeyCodeMap __caps_map [] =
4242 {
4243     { 0, 0 },
4244     { 0, 0 },
4245     { sizeof(__belgian_to_us_caps) / sizeof (__Uint16Pair), __belgian_to_us_caps },
4246     { 0, 0 }, // Croatian
4247     { sizeof(__czech_to_us_caps) / sizeof (__Uint16Pair), __czech_to_us_caps },
4248     { sizeof(__czech_qwerty_to_us_caps) / sizeof (__Uint16Pair), __czech_qwerty_to_us_caps },
4249     { sizeof(__danish_to_us_caps) / sizeof (__Uint16Pair), __danish_to_us_caps },
4250     { 0, 0 }, // Dutch
4251     { sizeof(__dvorak_to_us_caps) / sizeof (__Uint16Pair), __dvorak_to_us_caps },
4252     { sizeof(__estonian_to_us_caps) / sizeof (__Uint16Pair), __estonian_to_us_caps },
4253     { sizeof(__finnish_to_us_caps) / sizeof (__Uint16Pair), __finnish_to_us_caps },
4254     { sizeof(__french_to_us_caps) / sizeof (__Uint16Pair), __french_to_us_caps },
4255     { 0, 0 }, // French Canadian
4256     { sizeof(__french_switzerland_to_us_caps) / sizeof (__Uint16Pair), __french_switzerland_to_us_caps },
4257     { sizeof(__german_to_us_caps) / sizeof (__Uint16Pair), __german_to_us_caps },
4258     { sizeof(__german_deadkeys_to_us_caps) / sizeof (__Uint16Pair), __german_deadkeys_to_us_caps },
4259     { sizeof(__german_swiss_to_us_caps) / sizeof (__Uint16Pair), __german_swiss_to_us_caps },
4260     { 0, 0 }, // Greek
4261     { sizeof(__hungarian_to_us_caps) / sizeof (__Uint16Pair), __hungarian_to_us_caps },
4262     { sizeof(__italian_to_us_caps) / sizeof (__Uint16Pair), __italian_to_us_caps },
4263     { sizeof(__japanese_to_us_caps) / sizeof (__Uint16Pair), __japanese_to_us_caps },
4264     { sizeof(__norwegian_to_us_caps) / sizeof (__Uint16Pair), __norwegian_to_us_caps },
4265     { 0, 0 }, // Polish
4266     { sizeof(__portuguese_to_us_caps) / sizeof (__Uint16Pair), __portuguese_to_us_caps },
4267     { sizeof(__portuguese_brazil_to_us_caps) / sizeof (__Uint16Pair), __portuguese_brazil_to_us_caps },
4268     { sizeof(__portuguese_brazil_us_accents_to_us_caps) / sizeof (__Uint16Pair), __portuguese_brazil_us_accents_to_us_caps },
4269     { 0, 0 }, // Russian
4270     { sizeof(__slovak_to_us_caps) / sizeof (__Uint16Pair), __slovak_to_us_caps },
4271     { sizeof(__slovak_qwerty_to_us_caps) / sizeof (__Uint16Pair), __slovak_qwerty_to_us_caps },
4272     { 0, 0 }, // Slovene
4273     { sizeof(__spanish_to_us_caps) / sizeof (__Uint16Pair), __spanish_to_us_caps },
4274     { sizeof(__spanish_cp850_to_us_caps) / sizeof (__Uint16Pair), __spanish_cp850_to_us_caps },
4275     { sizeof(__spanish_latin_america_to_us_caps) / sizeof (__Uint16Pair), __spanish_latin_america_to_us_caps },
4276     { sizeof(__swedish_to_us_caps) / sizeof (__Uint16Pair), __swedish_to_us_caps },
4277     { sizeof(__turkish_to_us_caps) / sizeof (__Uint16Pair), __turkish_to_us_caps },
4278     { sizeof(__uk_to_us_caps) / sizeof (__Uint16Pair), __uk_to_us_caps },
4279     { sizeof(__icelandic_to_us_caps) / sizeof (__Uint16Pair), __icelandic_to_us_caps },
4280     { 0, 0 }, // Icelandic
4281     { 0, 0 }, // Ukrainian
4282 };
4283 
4284 static __KeyCodeMap __caps_invert_map [] =
4285 {
4286     { 0, 0 },
4287     { 0, 0 },
4288     { sizeof(__us_to_belgian_caps) / sizeof (__Uint16Pair), __us_to_belgian_caps },
4289     { 0, 0 }, // Croatian
4290     { sizeof(__us_to_czech_caps) / sizeof (__Uint16Pair), __us_to_czech_caps },
4291     { sizeof(__us_to_czech_qwerty_caps) / sizeof (__Uint16Pair), __us_to_czech_qwerty_caps },
4292     { sizeof(__us_to_danish_caps) / sizeof (__Uint16Pair), __us_to_danish_caps },
4293     { 0, 0 }, // Dutch
4294     { sizeof(__us_to_dvorak_caps) / sizeof (__Uint16Pair), __us_to_dvorak_caps },
4295     { sizeof(__us_to_estonian_caps) / sizeof (__Uint16Pair), __us_to_estonian_caps },
4296     { sizeof(__us_to_finnish_caps) / sizeof (__Uint16Pair), __us_to_finnish_caps },
4297     { sizeof(__us_to_french_caps) / sizeof (__Uint16Pair), __us_to_french_caps },
4298     { 0, 0 }, // French Canadian
4299     { sizeof(__us_to_french_switzerland_caps) / sizeof (__Uint16Pair), __us_to_french_switzerland_caps },
4300     { sizeof(__us_to_german_caps) / sizeof (__Uint16Pair), __us_to_german_caps },
4301     { sizeof(__us_to_german_deadkeys_caps) / sizeof (__Uint16Pair), __us_to_german_deadkeys_caps },
4302     { sizeof(__us_to_german_swiss_caps) / sizeof (__Uint16Pair), __us_to_german_swiss_caps },
4303     { 0, 0 }, // Greek
4304     { sizeof(__us_to_hungarian_caps) / sizeof (__Uint16Pair), __us_to_hungarian_caps },
4305     { sizeof(__us_to_italian_caps) / sizeof (__Uint16Pair), __us_to_italian_caps },
4306     { sizeof(__us_to_japanese_caps) / sizeof (__Uint16Pair), __us_to_japanese_caps },
4307     { sizeof(__us_to_norwegian_caps) / sizeof (__Uint16Pair), __us_to_norwegian_caps },
4308     { 0, 0 }, // Polish
4309     { sizeof(__us_to_portuguese_caps) / sizeof (__Uint16Pair), __us_to_portuguese_caps },
4310     { sizeof(__us_to_portuguese_brazil_caps) / sizeof (__Uint16Pair), __us_to_portuguese_brazil_caps },
4311     { sizeof(__us_to_portuguese_brazil_us_accents_caps) / sizeof (__Uint16Pair), __us_to_portuguese_brazil_us_accents_caps },
4312     { 0, 0 }, // Russian
4313     { sizeof(__us_to_slovak_caps) / sizeof (__Uint16Pair), __us_to_slovak_caps },
4314     { sizeof(__us_to_slovak_qwerty_caps) / sizeof (__Uint16Pair), __us_to_slovak_qwerty_caps },
4315     { 0, 0 }, // Slovene
4316     { sizeof(__us_to_spanish_caps) / sizeof (__Uint16Pair), __us_to_spanish_caps },
4317     { sizeof(__us_to_spanish_cp850_caps) / sizeof (__Uint16Pair), __us_to_spanish_cp850_caps },
4318     { sizeof(__us_to_spanish_latin_america_caps) / sizeof (__Uint16Pair), __us_to_spanish_latin_america_caps },
4319     { sizeof(__us_to_swedish_caps) / sizeof (__Uint16Pair), __us_to_swedish_caps },
4320     { sizeof(__us_to_turkish_caps) / sizeof (__Uint16Pair), __us_to_turkish_caps },
4321     { sizeof(__us_to_uk_caps) / sizeof (__Uint16Pair), __us_to_uk_caps },
4322     { sizeof(__us_to_icelandic_caps) / sizeof (__Uint16Pair), __us_to_icelandic_caps },
4323     { 0, 0 }, // Icelandic
4324     { 0, 0 }, // Ukrainian
4325 };
4326 
4327 static __KeyCodeMap __shift_map [] =
4328 {
4329     { 0, 0 },
4330     { 0, 0 },
4331     { sizeof(__belgian_to_us_shift) / sizeof (__Uint16Pair), __belgian_to_us_shift },
4332     { 0, 0 }, // Croatian
4333     { sizeof(__czech_to_us_shift) / sizeof (__Uint16Pair), __czech_to_us_shift },
4334     { sizeof(__czech_qwerty_to_us_shift) / sizeof (__Uint16Pair), __czech_qwerty_to_us_shift },
4335     { sizeof(__danish_to_us_shift) / sizeof (__Uint16Pair), __danish_to_us_shift },
4336     { 0, 0 }, // Dutch
4337     { sizeof(__dvorak_to_us_shift) / sizeof (__Uint16Pair), __dvorak_to_us_shift },
4338     { sizeof(__estonian_to_us_shift) / sizeof (__Uint16Pair), __estonian_to_us_shift },
4339     { sizeof(__finnish_to_us_shift) / sizeof (__Uint16Pair), __finnish_to_us_shift },
4340     { sizeof(__french_to_us_shift) / sizeof (__Uint16Pair), __french_to_us_shift },
4341     { 0, 0 }, // French Canadian
4342     { sizeof(__french_switzerland_to_us_shift) / sizeof (__Uint16Pair), __french_switzerland_to_us_shift },
4343     { sizeof(__german_to_us_shift) / sizeof (__Uint16Pair), __german_to_us_shift },
4344     { sizeof(__german_deadkeys_to_us_shift) / sizeof (__Uint16Pair), __german_deadkeys_to_us_shift },
4345     { sizeof(__german_swiss_to_us_shift) / sizeof (__Uint16Pair), __german_swiss_to_us_shift },
4346     { 0, 0 }, // Greek
4347     { sizeof(__hungarian_to_us_shift) / sizeof (__Uint16Pair), __hungarian_to_us_shift },
4348     { sizeof(__italian_to_us_shift) / sizeof (__Uint16Pair), __italian_to_us_shift },
4349     { sizeof(__japanese_to_us_shift) / sizeof (__Uint16Pair), __japanese_to_us_shift },
4350     { sizeof(__norwegian_to_us_shift) / sizeof (__Uint16Pair), __norwegian_to_us_shift },
4351     { 0, 0 }, // Polish
4352     { sizeof(__portuguese_to_us_shift) / sizeof (__Uint16Pair), __portuguese_to_us_shift },
4353     { sizeof(__portuguese_brazil_to_us_shift) / sizeof (__Uint16Pair), __portuguese_brazil_to_us_shift },
4354     { sizeof(__portuguese_brazil_us_accents_to_us_shift) / sizeof (__Uint16Pair), __portuguese_brazil_us_accents_to_us_shift },
4355     { 0, 0 }, // Russian
4356     { sizeof(__slovak_to_us_shift) / sizeof (__Uint16Pair), __slovak_to_us_shift },
4357     { sizeof(__slovak_qwerty_to_us_shift) / sizeof (__Uint16Pair), __slovak_qwerty_to_us_shift },
4358     { 0, 0 }, // Slovene
4359     { sizeof(__spanish_to_us_shift) / sizeof (__Uint16Pair), __spanish_to_us_shift },
4360     { sizeof(__spanish_cp850_to_us_shift) / sizeof (__Uint16Pair), __spanish_cp850_to_us_shift },
4361     { sizeof(__spanish_latin_america_to_us_shift) / sizeof (__Uint16Pair), __spanish_latin_america_to_us_shift },
4362     { sizeof(__swedish_to_us_shift) / sizeof (__Uint16Pair), __swedish_to_us_shift },
4363     { sizeof(__turkish_to_us_shift) / sizeof (__Uint16Pair), __turkish_to_us_shift },
4364     { sizeof(__uk_to_us_shift) / sizeof (__Uint16Pair), __uk_to_us_shift },
4365     { sizeof(__icelandic_to_us_shift) / sizeof (__Uint16Pair), __icelandic_to_us_shift },
4366     { 0, 0 }, // Icelandic
4367     { 0, 0 }, // Ukrainian
4368 };
4369 
4370 static __KeyCodeMap __shift_invert_map [] =
4371 {
4372     { 0, 0 },
4373     { 0, 0 },
4374     { sizeof(__us_to_belgian_shift) / sizeof (__Uint16Pair), __us_to_belgian_shift },
4375     { 0, 0 }, // Croatian
4376     { sizeof(__us_to_czech_shift) / sizeof (__Uint16Pair), __us_to_czech_shift },
4377     { sizeof(__us_to_czech_qwerty_shift) / sizeof (__Uint16Pair), __us_to_czech_qwerty_shift },
4378     { sizeof(__us_to_danish_shift) / sizeof (__Uint16Pair), __us_to_danish_shift },
4379     { 0, 0 }, // Dutch
4380     { sizeof(__us_to_dvorak_shift) / sizeof (__Uint16Pair), __us_to_dvorak_shift },
4381     { sizeof(__us_to_estonian_shift) / sizeof (__Uint16Pair), __us_to_estonian_shift },
4382     { sizeof(__us_to_finnish_shift) / sizeof (__Uint16Pair), __us_to_finnish_shift },
4383     { sizeof(__us_to_french_shift) / sizeof (__Uint16Pair), __us_to_french_shift },
4384     { 0, 0 }, // French Canadian
4385     { sizeof(__us_to_french_switzerland_shift) / sizeof (__Uint16Pair), __us_to_french_switzerland_shift },
4386     { sizeof(__us_to_german_shift) / sizeof (__Uint16Pair), __us_to_german_shift },
4387     { sizeof(__us_to_german_deadkeys_shift) / sizeof (__Uint16Pair), __us_to_german_deadkeys_shift },
4388     { sizeof(__us_to_german_swiss_shift) / sizeof (__Uint16Pair), __us_to_german_swiss_shift },
4389     { 0, 0 }, // Greek
4390     { sizeof(__us_to_hungarian_shift) / sizeof (__Uint16Pair), __us_to_hungarian_shift },
4391     { sizeof(__us_to_italian_shift) / sizeof (__Uint16Pair), __us_to_italian_shift },
4392     { sizeof(__us_to_japanese_shift) / sizeof (__Uint16Pair), __us_to_japanese_shift },
4393     { sizeof(__us_to_norwegian_shift) / sizeof (__Uint16Pair), __us_to_norwegian_shift },
4394     { 0, 0 }, // Polish
4395     { sizeof(__us_to_portuguese_shift) / sizeof (__Uint16Pair), __us_to_portuguese_shift },
4396     { sizeof(__us_to_portuguese_brazil_shift) / sizeof (__Uint16Pair), __us_to_portuguese_brazil_shift },
4397     { sizeof(__us_to_portuguese_brazil_us_accents_shift) / sizeof (__Uint16Pair), __us_to_portuguese_brazil_us_accents_shift },
4398     { 0, 0 }, // Russian
4399     { sizeof(__us_to_slovak_shift) / sizeof (__Uint16Pair), __us_to_slovak_shift },
4400     { sizeof(__us_to_slovak_qwerty_shift) / sizeof (__Uint16Pair), __us_to_slovak_qwerty_shift },
4401     { 0, 0 }, // Slovene
4402     { sizeof(__us_to_spanish_shift) / sizeof (__Uint16Pair), __us_to_spanish_shift },
4403     { sizeof(__us_to_spanish_cp850_shift) / sizeof (__Uint16Pair), __us_to_spanish_cp850_shift },
4404     { sizeof(__us_to_spanish_latin_america_shift) / sizeof (__Uint16Pair), __us_to_spanish_latin_america_shift },
4405     { sizeof(__us_to_swedish_shift) / sizeof (__Uint16Pair), __us_to_swedish_shift },
4406     { sizeof(__us_to_turkish_shift) / sizeof (__Uint16Pair), __us_to_turkish_shift },
4407     { sizeof(__us_to_uk_shift) / sizeof (__Uint16Pair), __us_to_uk_shift },
4408     { sizeof(__us_to_icelandic_shift) / sizeof (__Uint16Pair), __us_to_icelandic_shift },
4409     { 0, 0 }, // Icelandic
4410     { 0, 0 }, // Ukrainian
4411 };
4412 
4413 static __KeyCodeMap __caps_shift_map [] =
4414 {
4415     { 0, 0 },
4416     { 0, 0 },
4417     { sizeof(__belgian_to_us_caps_shift) / sizeof (__Uint16Pair), __belgian_to_us_caps_shift },
4418     { 0, 0 }, // Croatian
4419     { sizeof(__czech_to_us_caps_shift) / sizeof (__Uint16Pair), __czech_to_us_caps_shift },
4420     { sizeof(__czech_qwerty_to_us_caps_shift) / sizeof (__Uint16Pair), __czech_qwerty_to_us_caps_shift },
4421     { sizeof(__danish_to_us_caps_shift) / sizeof (__Uint16Pair), __danish_to_us_caps_shift },
4422     { 0, 0 }, // Dutch
4423     { sizeof(__dvorak_to_us_caps_shift) / sizeof (__Uint16Pair), __dvorak_to_us_caps_shift },
4424     { sizeof(__estonian_to_us_caps_shift) / sizeof (__Uint16Pair), __estonian_to_us_caps_shift },
4425     { sizeof(__finnish_to_us_caps_shift) / sizeof (__Uint16Pair), __finnish_to_us_caps_shift },
4426     { sizeof(__french_to_us_caps_shift) / sizeof (__Uint16Pair), __french_to_us_caps_shift },
4427     { 0, 0 }, // French Canadian
4428     { sizeof(__french_switzerland_to_us_caps_shift) / sizeof (__Uint16Pair), __french_switzerland_to_us_caps_shift },
4429     { sizeof(__german_to_us_caps_shift) / sizeof (__Uint16Pair), __german_to_us_caps_shift },
4430     { sizeof(__german_deadkeys_to_us_caps_shift) / sizeof (__Uint16Pair), __german_deadkeys_to_us_caps_shift },
4431     { sizeof(__german_swiss_to_us_caps_shift) / sizeof (__Uint16Pair), __german_swiss_to_us_caps_shift },
4432     { 0, 0 }, // Greek
4433     { sizeof(__hungarian_to_us_caps_shift) / sizeof (__Uint16Pair), __hungarian_to_us_caps_shift },
4434     { sizeof(__italian_to_us_caps_shift) / sizeof (__Uint16Pair), __italian_to_us_caps_shift },
4435     { sizeof(__japanese_to_us_caps_shift) / sizeof (__Uint16Pair), __japanese_to_us_caps_shift },
4436     { sizeof(__norwegian_to_us_caps_shift) / sizeof (__Uint16Pair), __norwegian_to_us_caps_shift },
4437     { 0, 0 }, // Polish
4438     { sizeof(__portuguese_to_us_caps_shift) / sizeof (__Uint16Pair), __portuguese_to_us_caps_shift },
4439     { sizeof(__portuguese_brazil_to_us_caps_shift) / sizeof (__Uint16Pair), __portuguese_brazil_to_us_caps_shift },
4440     { sizeof(__portuguese_brazil_us_accents_to_us_caps_shift) / sizeof (__Uint16Pair), __portuguese_brazil_us_accents_to_us_caps_shift },
4441     { 0, 0 }, // Russian
4442     { sizeof(__slovak_to_us_caps_shift) / sizeof (__Uint16Pair), __slovak_to_us_caps_shift },
4443     { sizeof(__slovak_qwerty_to_us_caps_shift) / sizeof (__Uint16Pair), __slovak_qwerty_to_us_caps_shift },
4444     { 0, 0 }, // Slovene
4445     { sizeof(__spanish_to_us_caps_shift) / sizeof (__Uint16Pair), __spanish_to_us_caps_shift },
4446     { sizeof(__spanish_cp850_to_us_caps_shift) / sizeof (__Uint16Pair), __spanish_cp850_to_us_caps_shift },
4447     { sizeof(__spanish_latin_america_to_us_caps_shift) / sizeof (__Uint16Pair), __spanish_latin_america_to_us_caps_shift },
4448     { sizeof(__swedish_to_us_caps_shift) / sizeof (__Uint16Pair), __swedish_to_us_caps_shift },
4449     { sizeof(__turkish_to_us_caps_shift) / sizeof (__Uint16Pair), __turkish_to_us_caps_shift },
4450     { sizeof(__uk_to_us_caps_shift) / sizeof (__Uint16Pair), __uk_to_us_caps_shift },
4451     { sizeof(__icelandic_to_us_caps_shift) / sizeof (__Uint16Pair), __icelandic_to_us_caps_shift },
4452     { 0, 0 }, // Icelandic
4453     { 0, 0 }, // Ukrainian
4454 };
4455 
4456 static __KeyCodeMap __caps_shift_invert_map [] =
4457 {
4458     { 0, 0 },
4459     { 0, 0 },
4460     { sizeof(__us_to_belgian_caps_shift) / sizeof (__Uint16Pair), __us_to_belgian_caps_shift },
4461     { 0, 0 }, // Croatian
4462     { sizeof(__us_to_czech_caps_shift) / sizeof (__Uint16Pair), __us_to_czech_caps_shift },
4463     { sizeof(__us_to_czech_qwerty_caps_shift) / sizeof (__Uint16Pair), __us_to_czech_qwerty_caps_shift },
4464     { sizeof(__us_to_danish_caps_shift) / sizeof (__Uint16Pair), __us_to_danish_caps_shift },
4465     { 0, 0 }, // Dutch
4466     { sizeof(__us_to_dvorak_caps_shift) / sizeof (__Uint16Pair), __us_to_dvorak_caps_shift },
4467     { sizeof(__us_to_estonian_caps_shift) / sizeof (__Uint16Pair), __us_to_estonian_caps_shift },
4468     { sizeof(__us_to_finnish_caps_shift) / sizeof (__Uint16Pair), __us_to_finnish_caps_shift },
4469     { sizeof(__us_to_french_caps_shift) / sizeof (__Uint16Pair), __us_to_french_caps_shift },
4470     { 0, 0 }, // French Canadian
4471     { sizeof(__us_to_french_switzerland_caps_shift) / sizeof (__Uint16Pair), __us_to_french_switzerland_caps_shift },
4472     { sizeof(__us_to_german_caps_shift) / sizeof (__Uint16Pair), __us_to_german_caps_shift },
4473     { sizeof(__us_to_german_deadkeys_caps_shift) / sizeof (__Uint16Pair), __us_to_german_deadkeys_caps_shift },
4474     { sizeof(__us_to_german_swiss_caps_shift) / sizeof (__Uint16Pair), __us_to_german_swiss_caps_shift },
4475     { 0, 0 }, // Greek
4476     { sizeof(__us_to_hungarian_caps_shift) / sizeof (__Uint16Pair), __us_to_hungarian_caps_shift },
4477     { sizeof(__us_to_italian_caps_shift) / sizeof (__Uint16Pair), __us_to_italian_caps_shift },
4478     { sizeof(__us_to_japanese_caps_shift) / sizeof (__Uint16Pair), __us_to_japanese_caps_shift },
4479     { sizeof(__us_to_norwegian_caps_shift) / sizeof (__Uint16Pair), __us_to_norwegian_caps_shift },
4480     { 0, 0 }, // Polish
4481     { sizeof(__us_to_portuguese_caps_shift) / sizeof (__Uint16Pair), __us_to_portuguese_caps_shift },
4482     { sizeof(__us_to_portuguese_brazil_caps_shift) / sizeof (__Uint16Pair), __us_to_portuguese_brazil_caps_shift },
4483     { sizeof(__us_to_portuguese_brazil_us_accents_caps_shift) / sizeof (__Uint16Pair), __us_to_portuguese_brazil_us_accents_caps_shift },
4484     { 0, 0 }, // Russian
4485     { sizeof(__us_to_slovak_caps_shift) / sizeof (__Uint16Pair), __us_to_slovak_caps_shift },
4486     { sizeof(__us_to_slovak_qwerty_caps_shift) / sizeof (__Uint16Pair), __us_to_slovak_qwerty_caps_shift },
4487     { 0, 0 }, // Slovene
4488     { sizeof(__us_to_spanish_caps_shift) / sizeof (__Uint16Pair), __us_to_spanish_caps_shift },
4489     { sizeof(__us_to_spanish_cp850_caps_shift) / sizeof (__Uint16Pair), __us_to_spanish_cp850_caps_shift },
4490     { sizeof(__us_to_spanish_latin_america_caps_shift) / sizeof (__Uint16Pair), __us_to_spanish_latin_america_caps_shift },
4491     { sizeof(__us_to_swedish_caps_shift) / sizeof (__Uint16Pair), __us_to_swedish_caps_shift },
4492     { sizeof(__us_to_turkish_caps_shift) / sizeof (__Uint16Pair), __us_to_turkish_caps_shift },
4493     { sizeof(__us_to_uk_caps_shift) / sizeof (__Uint16Pair), __us_to_uk_caps_shift },
4494     { sizeof(__us_to_icelandic_caps_shift) / sizeof (__Uint16Pair), __us_to_icelandic_caps_shift },
4495     { 0, 0 }, // Icelandic
4496     { 0, 0 }, // Ukrainian
4497 };
4498 
4499 // Keyboard Layout string IDs sorted by code.
4500 static __KeyName __scim_keyboard_layout_ids_by_code [] =
4501 {
4502     {SCIM_KEYBOARD_Unknown                      ,"Unknown"},
4503     {SCIM_KEYBOARD_Default                      ,"US_Default"},
4504     {SCIM_KEYBOARD_Belgian                      ,"Belgian"},
4505     {SCIM_KEYBOARD_Croatian                     ,"Croatian"},
4506     {SCIM_KEYBOARD_Czech                        ,"Czech"},
4507     {SCIM_KEYBOARD_Czech_Qwerty                 ,"Czech_Qwerty"},
4508     {SCIM_KEYBOARD_Danish                       ,"Danish"},
4509     {SCIM_KEYBOARD_Dutch                        ,"Dutch"},
4510     {SCIM_KEYBOARD_Dvorak                       ,"Dvorak"},
4511     {SCIM_KEYBOARD_Estonian                     ,"Estonian"},
4512     {SCIM_KEYBOARD_Finnish                      ,"Finnish"},
4513     {SCIM_KEYBOARD_French                       ,"French"},
4514     {SCIM_KEYBOARD_French_Canadian              ,"French_Canadian"},
4515     {SCIM_KEYBOARD_French_Switzerland           ,"French_Switzerland"},
4516     {SCIM_KEYBOARD_German                       ,"German"},
4517     {SCIM_KEYBOARD_German_Deadkeys              ,"German_Deadkeys"},
4518     {SCIM_KEYBOARD_German_Swiss                 ,"German_Swiss"},
4519     {SCIM_KEYBOARD_Greek                        ,"Greek"},
4520     {SCIM_KEYBOARD_Hungarian                    ,"Hungarian"},
4521     {SCIM_KEYBOARD_Italian                      ,"Italian"},
4522     {SCIM_KEYBOARD_Japanese                     ,"Japanese"},
4523     {SCIM_KEYBOARD_Norwegian                    ,"Norwegian"},
4524     {SCIM_KEYBOARD_Polish                       ,"Polish"},
4525     {SCIM_KEYBOARD_Portuguese                   ,"Portuguese"},
4526     {SCIM_KEYBOARD_Portuguese_Brazil            ,"Portuguese_Brazil"},
4527     {SCIM_KEYBOARD_Portuguese_Brazil_US_Accents ,"Portuguese_Brazil_US_Accents"},
4528     {SCIM_KEYBOARD_Russian                      ,"Russian"},
4529     {SCIM_KEYBOARD_Slovak                       ,"Slovak"},
4530     {SCIM_KEYBOARD_Slovak_Qwerty                ,"Slovak_Qwerty"},
4531     {SCIM_KEYBOARD_Slovene                      ,"Slovene"},
4532     {SCIM_KEYBOARD_Spanish                      ,"Spanish"},
4533     {SCIM_KEYBOARD_Spanish_CP850                ,"Spanish_CP850"},
4534     {SCIM_KEYBOARD_Spanish_Latin_America        ,"Spanish_Latin_America"},
4535     {SCIM_KEYBOARD_Swedish                      ,"Swedish"},
4536     {SCIM_KEYBOARD_Turkish                      ,"Turkish"},
4537     {SCIM_KEYBOARD_UK                           ,"UK"},
4538     {SCIM_KEYBOARD_Icelandic                    ,"Icelandic"},
4539     {SCIM_KEYBOARD_Lithuanian                   ,"Lithuanian"},
4540     {SCIM_KEYBOARD_Ukrainian                    ,"Ukrainian"},
4541 };
4542 
4543 // Keyboard Layout string IDs sorted by name.
4544 static __KeyName __scim_keyboard_layout_ids_by_name [] =
4545 {
4546     {SCIM_KEYBOARD_Unknown                      ,"Unknown"},
4547     {SCIM_KEYBOARD_Default                      ,"US_Default"},
4548     {SCIM_KEYBOARD_Belgian                      ,"Belgian"},
4549     {SCIM_KEYBOARD_Croatian                     ,"Croatian"},
4550     {SCIM_KEYBOARD_Czech                        ,"Czech"},
4551     {SCIM_KEYBOARD_Czech_Qwerty                 ,"Czech_Qwerty"},
4552     {SCIM_KEYBOARD_Danish                       ,"Danish"},
4553     {SCIM_KEYBOARD_Dutch                        ,"Dutch"},
4554     {SCIM_KEYBOARD_Dvorak                       ,"Dvorak"},
4555     {SCIM_KEYBOARD_Estonian                     ,"Estonian"},
4556     {SCIM_KEYBOARD_Finnish                      ,"Finnish"},
4557     {SCIM_KEYBOARD_French                       ,"French"},
4558     {SCIM_KEYBOARD_French_Canadian              ,"French_Canadian"},
4559     {SCIM_KEYBOARD_French_Switzerland           ,"French_Switzerland"},
4560     {SCIM_KEYBOARD_German                       ,"German"},
4561     {SCIM_KEYBOARD_German_Deadkeys              ,"German_Deadkeys"},
4562     {SCIM_KEYBOARD_German_Swiss                 ,"German_Swiss"},
4563     {SCIM_KEYBOARD_Greek                        ,"Greek"},
4564     {SCIM_KEYBOARD_Hungarian                    ,"Hungarian"},
4565     {SCIM_KEYBOARD_Icelandic                    ,"Icelandic"},
4566     {SCIM_KEYBOARD_Italian                      ,"Italian"},
4567     {SCIM_KEYBOARD_Japanese                     ,"Japanese"},
4568     {SCIM_KEYBOARD_Lithuanian                   ,"Lithuanian"},
4569     {SCIM_KEYBOARD_Norwegian                    ,"Norwegian"},
4570     {SCIM_KEYBOARD_Polish                       ,"Polish"},
4571     {SCIM_KEYBOARD_Portuguese                   ,"Portuguese"},
4572     {SCIM_KEYBOARD_Portuguese_Brazil            ,"Portuguese_Brazil"},
4573     {SCIM_KEYBOARD_Portuguese_Brazil_US_Accents ,"Portuguese_Brazil_US_Accents"},
4574     {SCIM_KEYBOARD_Russian                      ,"Russian"},
4575     {SCIM_KEYBOARD_Slovak                       ,"Slovak"},
4576     {SCIM_KEYBOARD_Slovak_Qwerty                ,"Slovak_Qwerty"},
4577     {SCIM_KEYBOARD_Slovene                      ,"Slovene"},
4578     {SCIM_KEYBOARD_Spanish                      ,"Spanish"},
4579     {SCIM_KEYBOARD_Spanish_CP850                ,"Spanish_CP850"},
4580     {SCIM_KEYBOARD_Spanish_Latin_America        ,"Spanish_Latin_America"},
4581     {SCIM_KEYBOARD_Swedish                      ,"Swedish"},
4582     {SCIM_KEYBOARD_Turkish                      ,"Turkish"},
4583     {SCIM_KEYBOARD_UK                           ,"UK"},
4584     {SCIM_KEYBOARD_Ukrainian                    ,"Ukrainian"},
4585 };
4586 
4587 
4588 // Keyboard Layout display names.
4589 static const char *__scim_keyboard_layout_names [] =
4590 {
4591     N_("Unknown"),
4592     N_("English (US)"),
4593     N_("Belgian"),
4594     N_("Croatian"),
4595     N_("Czech"),
4596     N_("Czech (qwerty)"),
4597     N_("Danish"),
4598     N_("Dutch"),
4599     N_("Dvorak"),
4600     N_("Estonian"),
4601     N_("Finnish"),
4602     N_("French"),
4603     N_("French (Canadian)"),
4604     N_("French (Switzerland)"),
4605     N_("German"),
4606     N_("German (with deadkeys)"),
4607     N_("German (Swiss)"),
4608     N_("Greek"),
4609     N_("Hungarian"),
4610     N_("Italian"),
4611     N_("Japanese"),
4612     N_("Norwegian"),
4613     N_("Polish"),
4614     N_("Portuguese"),
4615     N_("Portuguese (Brazil)"),
4616     N_("Portuguese (Brazil US accents)"),
4617     N_("Russian"),
4618     N_("Slovak"),
4619     N_("Slovak (qwerty)"),
4620     N_("Slovenian"),
4621     N_("Spanish"),
4622     N_("Spanish (CP 850)"),
4623     N_("Spanish (Latin America)"),
4624     N_("Swedish"),
4625     N_("Turkish"),
4626     N_("English (UK)"),
4627     N_("Icelandic"),
4628     N_("Lithuanian"),
4629     N_("Ukrainian"),
4630 };
4631 
4632 /*
4633 vi:ts=4:nowrap:ai:expandtab
4634 */
4635 
4636