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