1;;;
2;;; Copyright (c) 2003-2013 uim Project https://github.com/uim/uim
3;;;
4;;; All rights reserved.
5;;;
6;;; Redistribution and use in source and binary forms, with or without
7;;; modification, are permitted provided that the following conditions
8;;; are met:
9;;; 1. Redistributions of source code must retain the above copyright
10;;;    notice, this list of conditions and the following disclaimer.
11;;; 2. Redistributions in binary form must reproduce the above copyright
12;;;    notice, this list of conditions and the following disclaimer in the
13;;;    documentation and/or other materials provided with the distribution.
14;;; 3. Neither the name of authors nor the names of its contributors
15;;;    may be used to endorse or promote products derived from this software
16;;;    without specific prior written permission.
17;;;
18;;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND
19;;; ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20;;; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21;;; ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE
22;;; FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23;;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24;;; OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25;;; HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26;;; LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27;;; OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28;;; SUCH DAMAGE.
29;;;;
30
31;; Charset of this file is UTF-8
32
33(require "util.scm")
34(require "rk.scm")
35(require "generic.scm")
36
37(define-key latin-backspace-key? '("backspace" "<Control>h"))
38(define-key latin-commit-key? "return")
39;;(define-key latin-multi-key? '("<IgnoreShift>Multi_key"))
40
41;; latin-compose-rule is generated from key sequences in
42;; /usr/share/X11/locale/en_US.UTF-8/Compose which uses Multi_key and
43;; deadkeys with only ascii characters.
44
45(define latin-compose-rule '(
46((("dead-tilde" " "))("~"))
47((("dead-tilde" "dead-tilde"))("~"))
48((("dead-acute" " "))("'"))
49((("dead-acute" "dead-acute"))("´"))
50((("dead-grave" " "))("`"))
51((("dead-grave" "dead-grave"))("`"))
52((("dead-circumflex" " "))("^"))
53((("dead-circumflex" "dead-circumflex"))("^"))
54((("dead-abovering" " "))("°"))
55((("dead-abovering" "dead-abovering"))("°"))
56((("dead-macron" " "))("¯"))
57((("dead-macron" "dead-macron"))("¯"))
58((("dead-breve" " "))("˘"))
59((("dead-breve" "dead-breve"))("˘"))
60((("dead-abovedot" " "))("˙"))
61((("dead-abovedot" "dead-abovedot"))("˙"))
62((("dead-diaeresis" "dead-diaeresis"))("¨"))
63((("dead-diaeresis" " "))("\""))
64((("dead-doubleacute" " "))("˝"))
65((("dead-doubleacute" "dead-doubleacute"))("˝"))
66((("dead-caron" " "))("ˇ"))
67((("dead-caron" "dead-caron"))("ˇ"))
68((("dead-cedilla" " "))("¸"))
69((("dead-cedilla" "dead-cedilla"))("¸"))
70((("dead-ogonek" " "))("˛"))
71((("dead-ogonek" "dead-ogonek"))("˛"))
72((("dead-iota" " "))("ͺ"))
73((("dead-iota" "dead-iota"))("ͺ"))
74((("Multi_key" "+" "+"))("#"))
75((("Multi_key" "'" " "))("'"))
76((("Multi_key" " " "'"))("'"))
77((("Multi_key" "A" "T"))("@"))
78((("Multi_key" "(" "("))("["))
79((("Multi_key" "/" "/"))("\\"))
80((("Multi_key" "/" "<"))("\\"))
81((("Multi_key" "<" "/"))("\\"))
82((("Multi_key" ")" ")"))("]"))
83((("Multi_key" "^" " "))("^"))
84((("Multi_key" " " "^"))("^"))
85((("Multi_key" ">" " "))("^"))
86((("Multi_key" " " ">"))("^"))
87((("Multi_key" "`" " "))("`"))
88((("Multi_key" " " "`"))("`"))
89((("Multi_key" "," " "))("¸"))
90((("Multi_key" " " ","))("¸"))
91((("Multi_key" "(" "-"))("{"))
92((("Multi_key" "-" "("))("{"))
93((("Multi_key" "/" "^"))("|"))
94((("Multi_key" "^" "/"))("|"))
95((("Multi_key" "V" "L"))("|"))
96((("Multi_key" "L" "V"))("|"))
97((("Multi_key" "v" "l"))("|"))
98((("Multi_key" "l" "v"))("|"))
99((("Multi_key" ")" "-"))("}"))
100((("Multi_key" "-" ")"))("}"))
101((("Multi_key" "~" " "))("~"))
102((("Multi_key" " " "~"))("~"))
103((("Multi_key" "-" " "))("~"))
104((("Multi_key" " " "-"))("~"))
105((("Multi_key" " " " "))(" "))
106((("Multi_key" " " "."))(" "))
107((("Multi_key" "o" "c"))("©"))
108((("Multi_key" "o" "C"))("©"))
109((("Multi_key" "O" "c"))("©"))
110((("Multi_key" "O" "C"))("©"))
111((("Multi_key" "o" "r"))("®"))
112((("Multi_key" "o" "R"))("®"))
113((("Multi_key" "O" "r"))("®"))
114((("Multi_key" "O" "R"))("®"))
115((("Multi_key" "." ">"))("›"))
116((("Multi_key" "." "<"))("‹"))
117((("Multi_key" "." "."))("·"))
118((("Multi_key" "!" "^"))("¦"))
119((("Multi_key" "!" "!"))("¡"))
120((("Multi_key" "p" "!"))("¶"))
121((("Multi_key" "P" "!"))("¶"))
122((("Multi_key" "+" "-"))("±"))
123((("Multi_key" "?" "?"))("¿"))
124((("Multi_key" "-" "d"))("đ"))
125((("Multi_key" "-" "D"))("Đ"))
126((("Multi_key" "s" "s"))("ß"))
127((("Multi_key" "o" "e"))("œ"))
128((("Multi_key" "O" "E"))("Œ"))
129((("Multi_key" "a" "e"))("æ"))
130((("Multi_key" "A" "E"))("Æ"))
131((("Multi_key" "o" "o"))("°"))
132((("Multi_key" "\"" "\\"))("〝"))
133((("Multi_key" "\"" "/"))("〞"))
134((("Multi_key" "<" "<"))("«"))
135((("Multi_key" ">" ">"))("»"))
136((("Multi_key" "<" "'"))("‘"))
137((("Multi_key" "'" "<"))("‘"))
138((("Multi_key" ">" "'"))("’"))
139((("Multi_key" "'" ">"))("’"))
140((("Multi_key" "," "'"))("‚"))
141((("Multi_key" "'" ","))("‚"))
142((("Multi_key" "<" "\""))("“"))
143((("Multi_key" "\"" "<"))("“"))
144((("Multi_key" ">" "\""))("”"))
145((("Multi_key" "\"" ">"))("”"))
146((("Multi_key" "," "\""))("„"))
147((("Multi_key" "\"" ","))("„"))
148((("Multi_key" "%" "o"))("‰"))
149((("Multi_key" "C" "E"))("₠"))
150((("Multi_key" "C" "/"))("₡"))
151((("Multi_key" "/" "C"))("₡"))
152((("Multi_key" "C" "r"))("₢"))
153((("Multi_key" "F" "r"))("₣"))
154((("Multi_key" "L" "="))("₤"))
155((("Multi_key" "=" "L"))("₤"))
156((("Multi_key" "m" "/"))("₥"))
157((("Multi_key" "/" "m"))("₥"))
158((("Multi_key" "N" "="))("₦"))
159((("Multi_key" "=" "N"))("₦"))
160((("Multi_key" "P" "t"))("₧"))
161((("Multi_key" "R" "s"))("₨"))
162((("Multi_key" "W" "="))("₩"))
163((("Multi_key" "=" "W"))("₩"))
164((("Multi_key" "d" "-"))("₫"))
165((("Multi_key" "C" "="))("€"))
166((("Multi_key" "=" "C"))("€"))
167((("Multi_key" "c" "="))("€"))
168((("Multi_key" "=" "c"))("€"))
169((("Multi_key" "E" "="))("€"))
170((("Multi_key" "=" "E"))("€"))
171((("Multi_key" "|" "c"))("¢"))
172((("Multi_key" "c" "|"))("¢"))
173((("Multi_key" "c" "/"))("¢"))
174((("Multi_key" "/" "c"))("¢"))
175((("Multi_key" "L" "-"))("£"))
176((("Multi_key" "-" "L"))("£"))
177((("Multi_key" "Y" "="))("¥"))
178((("Multi_key" "=" "Y"))("¥"))
179((("Multi_key" "f" "s"))("ſ"))
180((("Multi_key" "f" "S"))("ſ"))
181((("Multi_key" "-" "-" "."))("–"))
182((("Multi_key" "-" "-" "-"))("—"))
183((("Multi_key" "#" "b"))("♭"))
184((("Multi_key" "#" "f"))("♮"))
185((("Multi_key" "#" "#"))("♯"))
186((("Multi_key" "s" "o"))("§"))
187((("Multi_key" "o" "s"))("§"))
188((("Multi_key" "o" "x"))("¤"))
189((("Multi_key" "x" "o"))("¤"))
190((("Multi_key" "P" "P"))("¶"))
191((("Multi_key" "," "-"))("¬"))
192((("Multi_key" "-" ","))("¬"))
193((("dead-circumflex" "Multi_key" "_" "a"))("ª"))
194((("Multi_key" "^" "_" "a"))("ª"))
195((("dead-circumflex" "2"))("²"))
196((("Multi_key" "^" "2"))("²"))
197((("dead-circumflex" "3"))("³"))
198((("Multi_key" "^" "3"))("³"))
199((("Multi_key" "m" "u"))("µ"))
200((("dead-circumflex" "1"))("¹"))
201((("Multi_key" "^" "1"))("¹"))
202((("dead-circumflex" "Multi_key" "_" "o"))("º"))
203((("Multi_key" "^" "_" "o"))("º"))
204((("Multi_key" "1" "4"))("¼"))
205((("Multi_key" "1" "2"))("½"))
206((("Multi_key" "3" "4"))("¾"))
207((("dead-grave" "A"))("À"))
208((("Multi_key" "`" "A"))("À"))
209((("dead-acute" "A"))("Á"))
210((("Multi_key" "'" "A"))("Á"))
211((("dead-circumflex" "A"))("Â"))
212((("Multi_key" "^" "A"))("Â"))
213((("dead-tilde" "A"))("Ã"))
214((("Multi_key" "~" "A"))("Ã"))
215((("dead-diaeresis" "A"))("Ä"))
216((("Multi_key" "\"" "A"))("Ä"))
217((("dead-abovering" "A"))("Å"))
218((("Multi_key" "o" "A"))("Å"))
219((("dead-cedilla" "C"))("Ç"))
220((("Multi_key" "," "C"))("Ç"))
221((("dead-grave" "E"))("È"))
222((("Multi_key" "`" "E"))("È"))
223((("dead-acute" "E"))("É"))
224((("Multi_key" "'" "E"))("É"))
225((("dead-circumflex" "E"))("Ê"))
226((("Multi_key" "^" "E"))("Ê"))
227((("dead-diaeresis" "E"))("Ë"))
228((("Multi_key" "\"" "E"))("Ë"))
229((("dead-grave" "I"))("Ì"))
230((("Multi_key" "`" "I"))("Ì"))
231((("dead-acute" "I"))("Í"))
232((("Multi_key" "'" "I"))("Í"))
233((("dead-circumflex" "I"))("Î"))
234((("Multi_key" "^" "I"))("Î"))
235((("dead-diaeresis" "I"))("Ï"))
236((("Multi_key" "\"" "I"))("Ï"))
237((("Multi_key" "D" "H"))("Ð"))
238((("dead-tilde" "N"))("Ñ"))
239((("Multi_key" "~" "N"))("Ñ"))
240((("dead-grave" "O"))("Ò"))
241((("Multi_key" "`" "O"))("Ò"))
242((("dead-acute" "O"))("Ó"))
243((("Multi_key" "'" "O"))("Ó"))
244((("dead-circumflex" "O"))("Ô"))
245((("Multi_key" "^" "O"))("Ô"))
246((("dead-tilde" "O"))("Õ"))
247((("Multi_key" "~" "O"))("Õ"))
248((("dead-diaeresis" "O"))("Ö"))
249((("Multi_key" "\"" "O"))("Ö"))
250((("Multi_key" "x" "x"))("×"))
251((("Multi_key" "/" "O"))("Ø"))
252((("dead-grave" "U"))("Ù"))
253((("Multi_key" "`" "U"))("Ù"))
254((("dead-acute" "U"))("Ú"))
255((("Multi_key" "'" "U"))("Ú"))
256((("dead-circumflex" "U"))("Û"))
257((("Multi_key" "^" "U"))("Û"))
258((("dead-diaeresis" "U"))("Ü"))
259((("Multi_key" "\"" "U"))("Ü"))
260((("dead-acute" "Y"))("Ý"))
261((("Multi_key" "'" "Y"))("Ý"))
262((("Multi_key" "T" "H"))("Þ"))
263((("dead-grave" "a"))("à"))
264((("Multi_key" "`" "a"))("à"))
265((("dead-acute" "a"))("á"))
266((("Multi_key" "'" "a"))("á"))
267((("dead-circumflex" "a"))("â"))
268((("Multi_key" "^" "a"))("â"))
269((("dead-tilde" "a"))("ã"))
270((("Multi_key" "~" "a"))("ã"))
271((("dead-diaeresis" "a"))("ä"))
272((("Multi_key" "\"" "a"))("ä"))
273((("dead-abovering" "a"))("å"))
274((("Multi_key" "o" "a"))("å"))
275((("dead-cedilla" "c"))("ç"))
276((("Multi_key" "," "c"))("ç"))
277((("dead-grave" "e"))("è"))
278((("Multi_key" "`" "e"))("è"))
279((("dead-acute" "e"))("é"))
280((("Multi_key" "'" "e"))("é"))
281((("dead-circumflex" "e"))("ê"))
282((("Multi_key" "^" "e"))("ê"))
283((("dead-diaeresis" "e"))("ë"))
284((("Multi_key" "\"" "e"))("ë"))
285((("dead-grave" "i"))("ì"))
286((("Multi_key" "`" "i"))("ì"))
287((("dead-acute" "i"))("í"))
288((("Multi_key" "'" "i"))("í"))
289((("dead-circumflex" "i"))("î"))
290((("Multi_key" "^" "i"))("î"))
291((("dead-diaeresis" "i"))("ï"))
292((("Multi_key" "\"" "i"))("ï"))
293((("Multi_key" "d" "h"))("ð"))
294((("dead-tilde" "n"))("ñ"))
295((("Multi_key" "~" "n"))("ñ"))
296((("dead-grave" "o"))("ò"))
297((("Multi_key" "`" "o"))("ò"))
298((("dead-acute" "o"))("ó"))
299((("Multi_key" "'" "o"))("ó"))
300((("dead-circumflex" "o"))("ô"))
301((("Multi_key" "^" "o"))("ô"))
302((("dead-tilde" "o"))("õ"))
303((("Multi_key" "~" "o"))("õ"))
304((("dead-diaeresis" "o"))("ö"))
305((("Multi_key" "\"" "o"))("ö"))
306((("Multi_key" ":" "-"))("÷"))
307((("Multi_key" "-" ":"))("÷"))
308((("Multi_key" "/" "o"))("ø"))
309((("dead-grave" "u"))("ù"))
310((("Multi_key" "`" "u"))("ù"))
311((("dead-acute" "u"))("ú"))
312((("Multi_key" "'" "u"))("ú"))
313((("dead-circumflex" "u"))("û"))
314((("Multi_key" "^" "u"))("û"))
315((("dead-diaeresis" "u"))("ü"))
316((("Multi_key" "\"" "u"))("ü"))
317((("dead-acute" "y"))("ý"))
318((("Multi_key" "'" "y"))("ý"))
319((("Multi_key" "t" "h"))("þ"))
320((("dead-diaeresis" "y"))("ÿ"))
321((("Multi_key" "\"" "y"))("ÿ"))
322((("dead-macron" "A"))("Ā"))
323((("Multi_key" "_" "A"))("Ā"))
324((("dead-macron" "a"))("ā"))
325((("Multi_key" "_" "a"))("ā"))
326((("dead-breve" "A"))("Ă"))
327((("Multi_key" "U" "A"))("Ă"))
328((("Multi_key" "b" "A"))("Ă"))
329((("dead-breve" "a"))("ă"))
330((("Multi_key" "U" "a"))("ă"))
331((("Multi_key" "b" "a"))("ă"))
332((("dead-ogonek" "A"))("Ą"))
333((("Multi_key" ";" "A"))("Ą"))
334((("dead-ogonek" "a"))("ą"))
335((("Multi_key" ";" "a"))("ą"))
336((("dead-acute" "C"))("Ć"))
337((("Multi_key" "'" "C"))("Ć"))
338((("dead-acute" "c"))("ć"))
339((("Multi_key" "'" "c"))("ć"))
340((("dead-circumflex" "C"))("Ĉ"))
341((("Multi_key" "^" "C"))("Ĉ"))
342((("dead-circumflex" "c"))("ĉ"))
343((("Multi_key" "^" "c"))("ĉ"))
344((("dead-abovedot" "C"))("Ċ"))
345((("Multi_key" "." "C"))("Ċ"))
346((("dead-abovedot" "c"))("ċ"))
347((("Multi_key" "." "c"))("ċ"))
348((("dead-caron" "C"))("Č"))
349((("Multi_key" "c" "C"))("Č"))
350((("dead-caron" "c"))("č"))
351((("Multi_key" "c" "c"))("č"))
352((("dead-caron" "D"))("Ď"))
353((("Multi_key" "c" "D"))("Ď"))
354((("dead-caron" "d"))("ď"))
355((("Multi_key" "c" "d"))("ď"))
356((("Multi_key" "/" "D"))("Đ"))
357((("Multi_key" "/" "d"))("đ"))
358((("dead-macron" "E"))("Ē"))
359((("Multi_key" "_" "E"))("Ē"))
360((("dead-macron" "e"))("ē"))
361((("Multi_key" "_" "e"))("ē"))
362((("dead-breve" "E"))("Ĕ"))
363((("Multi_key" "U" "E"))("Ĕ"))
364((("Multi_key" "b" "E"))("Ĕ"))
365((("dead-breve" "e"))("ĕ"))
366((("Multi_key" "U" "e"))("ĕ"))
367((("Multi_key" "b" "e"))("ĕ"))
368((("dead-abovedot" "E"))("Ė"))
369((("Multi_key" "." "E"))("Ė"))
370((("dead-abovedot" "e"))("ė"))
371((("Multi_key" "." "e"))("ė"))
372((("dead-ogonek" "E"))("Ę"))
373((("Multi_key" ";" "E"))("Ę"))
374((("dead-ogonek" "e"))("ę"))
375((("Multi_key" ";" "e"))("ę"))
376((("dead-caron" "E"))("Ě"))
377((("Multi_key" "c" "E"))("Ě"))
378((("dead-caron" "e"))("ě"))
379((("Multi_key" "c" "e"))("ě"))
380((("dead-circumflex" "G"))("Ĝ"))
381((("Multi_key" "^" "G"))("Ĝ"))
382((("dead-circumflex" "g"))("ĝ"))
383((("Multi_key" "^" "g"))("ĝ"))
384((("dead-breve" "G"))("Ğ"))
385((("Multi_key" "U" "G"))("Ğ"))
386((("Multi_key" "b" "G"))("Ğ"))
387((("dead-breve" "g"))("ğ"))
388((("Multi_key" "U" "g"))("ğ"))
389((("Multi_key" "b" "g"))("ğ"))
390((("dead-abovedot" "G"))("Ġ"))
391((("Multi_key" "." "G"))("Ġ"))
392((("dead-abovedot" "g"))("ġ"))
393((("Multi_key" "." "g"))("ġ"))
394((("dead-cedilla" "G"))("Ģ"))
395((("Multi_key" "," "G"))("Ģ"))
396((("dead-cedilla" "g"))("ģ"))
397((("Multi_key" "," "g"))("ģ"))
398((("dead-circumflex" "H"))("Ĥ"))
399((("Multi_key" "^" "H"))("Ĥ"))
400((("dead-circumflex" "h"))("ĥ"))
401((("Multi_key" "^" "h"))("ĥ"))
402((("Multi_key" "/" "H"))("Ħ"))
403((("Multi_key" "/" "h"))("ħ"))
404((("dead-tilde" "I"))("Ĩ"))
405((("Multi_key" "~" "I"))("Ĩ"))
406((("dead-tilde" "i"))("ĩ"))
407((("Multi_key" "~" "i"))("ĩ"))
408((("dead-macron" "I"))("Ī"))
409((("Multi_key" "_" "I"))("Ī"))
410((("dead-macron" "i"))("ī"))
411((("Multi_key" "_" "i"))("ī"))
412((("dead-breve" "I"))("Ĭ"))
413((("Multi_key" "U" "I"))("Ĭ"))
414((("Multi_key" "b" "I"))("Ĭ"))
415((("dead-breve" "i"))("ĭ"))
416((("Multi_key" "U" "i"))("ĭ"))
417((("Multi_key" "b" "i"))("ĭ"))
418((("dead-ogonek" "I"))("Į"))
419((("Multi_key" ";" "I"))("Į"))
420((("dead-ogonek" "i"))("į"))
421((("Multi_key" ";" "i"))("į"))
422((("dead-abovedot" "I"))("İ"))
423((("Multi_key" "." "I"))("İ"))
424((("dead-abovedot" "i"))("ı"))
425((("Multi_key" "i" "."))("ı"))
426((("dead-circumflex" "J"))("Ĵ"))
427((("Multi_key" "^" "J"))("Ĵ"))
428((("dead-circumflex" "j"))("ĵ"))
429((("Multi_key" "^" "j"))("ĵ"))
430((("dead-cedilla" "K"))("Ķ"))
431((("Multi_key" "," "K"))("Ķ"))
432((("dead-cedilla" "k"))("ķ"))
433((("Multi_key" "," "k"))("ķ"))
434((("Multi_key" "k" "k"))("ĸ"))
435((("dead-acute" "L"))("Ĺ"))
436((("Multi_key" "'" "L"))("Ĺ"))
437((("dead-acute" "l"))("ĺ"))
438((("Multi_key" "'" "l"))("ĺ"))
439((("dead-cedilla" "L"))("Ļ"))
440((("Multi_key" "," "L"))("Ļ"))
441((("dead-cedilla" "l"))("ļ"))
442((("Multi_key" "," "l"))("ļ"))
443((("dead-caron" "L"))("Ľ"))
444((("Multi_key" "c" "L"))("Ľ"))
445((("dead-caron" "l"))("ľ"))
446((("Multi_key" "c" "l"))("ľ"))
447((("Multi_key" "/" "L"))("Ł"))
448((("Multi_key" "/" "l"))("ł"))
449((("dead-acute" "N"))("Ń"))
450((("Multi_key" "'" "N"))("Ń"))
451((("dead-acute" "n"))("ń"))
452((("Multi_key" "'" "n"))("ń"))
453((("dead-cedilla" "N"))("Ņ"))
454((("Multi_key" "," "N"))("Ņ"))
455((("dead-cedilla" "n"))("ņ"))
456((("Multi_key" "," "n"))("ņ"))
457((("dead-caron" "N"))("Ň"))
458((("Multi_key" "c" "N"))("Ň"))
459((("dead-caron" "n"))("ň"))
460((("Multi_key" "c" "n"))("ň"))
461((("Multi_key" "N" "G"))("Ŋ"))
462((("Multi_key" "n" "g"))("ŋ"))
463((("dead-macron" "O"))("Ō"))
464((("Multi_key" "_" "O"))("Ō"))
465((("dead-macron" "o"))("ō"))
466((("Multi_key" "_" "o"))("ō"))
467((("dead-breve" "O"))("Ŏ"))
468((("Multi_key" "U" "O"))("Ŏ"))
469((("Multi_key" "b" "O"))("Ŏ"))
470((("dead-breve" "o"))("ŏ"))
471((("Multi_key" "U" "o"))("ŏ"))
472((("Multi_key" "b" "o"))("ŏ"))
473((("dead-doubleacute" "O"))("Ő"))
474((("Multi_key" "=" "O"))("Ő"))
475((("dead-doubleacute" "o"))("ő"))
476((("Multi_key" "=" "o"))("ő"))
477((("dead-acute" "R"))("Ŕ"))
478((("Multi_key" "'" "R"))("Ŕ"))
479((("dead-acute" "r"))("ŕ"))
480((("Multi_key" "'" "r"))("ŕ"))
481((("dead-cedilla" "R"))("Ŗ"))
482((("Multi_key" "," "R"))("Ŗ"))
483((("dead-cedilla" "r"))("ŗ"))
484((("Multi_key" "," "r"))("ŗ"))
485((("dead-caron" "R"))("Ř"))
486((("Multi_key" "c" "R"))("Ř"))
487((("dead-caron" "r"))("ř"))
488((("Multi_key" "c" "r"))("ř"))
489((("dead-acute" "S"))("Ś"))
490((("Multi_key" "'" "S"))("Ś"))
491((("dead-acute" "s"))("ś"))
492((("Multi_key" "'" "s"))("ś"))
493((("dead-circumflex" "S"))("Ŝ"))
494((("Multi_key" "^" "S"))("Ŝ"))
495((("dead-circumflex" "s"))("ŝ"))
496((("Multi_key" "^" "s"))("ŝ"))
497((("dead-cedilla" "S"))("Ş"))
498((("Multi_key" "," "S"))("Ş"))
499((("dead-cedilla" "s"))("ş"))
500((("Multi_key" "," "s"))("ş"))
501((("dead-caron" "S"))("Š"))
502((("Multi_key" "c" "S"))("Š"))
503((("dead-caron" "s"))("š"))
504((("Multi_key" "c" "s"))("š"))
505((("dead-cedilla" "T"))("Ţ"))
506((("Multi_key" "," "T"))("Ţ"))
507((("dead-cedilla" "t"))("ţ"))
508((("Multi_key" "," "t"))("ţ"))
509((("dead-caron" "T"))("Ť"))
510((("Multi_key" "c" "T"))("Ť"))
511((("dead-caron" "t"))("ť"))
512((("Multi_key" "c" "t"))("ť"))
513((("Multi_key" "/" "T"))("Ŧ"))
514((("Multi_key" "/" "t"))("ŧ"))
515((("dead-tilde" "U"))("Ũ"))
516((("Multi_key" "~" "U"))("Ũ"))
517((("dead-tilde" "u"))("ũ"))
518((("Multi_key" "~" "u"))("ũ"))
519((("dead-macron" "U"))("Ū"))
520((("Multi_key" "_" "U"))("Ū"))
521((("dead-macron" "u"))("ū"))
522((("Multi_key" "_" "u"))("ū"))
523((("dead-breve" "U"))("Ŭ"))
524((("Multi_key" "U" "U"))("Ŭ"))
525((("Multi_key" "b" "U"))("Ŭ"))
526((("dead-breve" "u"))("ŭ"))
527((("Multi_key" "U" "u"))("ŭ"))
528((("Multi_key" "b" "u"))("ŭ"))
529((("dead-abovering" "U"))("Ů"))
530((("Multi_key" "o" "U"))("Ů"))
531((("dead-abovering" "u"))("ů"))
532((("Multi_key" "o" "u"))("ů"))
533((("dead-doubleacute" "U"))("Ű"))
534((("Multi_key" "=" "U"))("Ű"))
535((("dead-doubleacute" "u"))("ű"))
536((("Multi_key" "=" "u"))("ű"))
537((("dead-ogonek" "U"))("Ų"))
538((("Multi_key" ";" "U"))("Ų"))
539((("dead-ogonek" "u"))("ų"))
540((("Multi_key" ";" "u"))("ų"))
541((("dead-circumflex" "W"))("Ŵ"))
542((("Multi_key" "^" "W"))("Ŵ"))
543((("dead-circumflex" "w"))("ŵ"))
544((("Multi_key" "^" "w"))("ŵ"))
545((("dead-circumflex" "Y"))("Ŷ"))
546((("Multi_key" "^" "Y"))("Ŷ"))
547((("dead-circumflex" "y"))("ŷ"))
548((("Multi_key" "^" "y"))("ŷ"))
549((("dead-diaeresis" "Y"))("Ÿ"))
550((("Multi_key" "\"" "Y"))("Ÿ"))
551((("dead-acute" "Z"))("Ź"))
552((("Multi_key" "'" "Z"))("Ź"))
553((("dead-acute" "z"))("ź"))
554((("Multi_key" "'" "z"))("ź"))
555((("dead-abovedot" "Z"))("Ż"))
556((("Multi_key" "." "Z"))("Ż"))
557((("dead-abovedot" "z"))("ż"))
558((("Multi_key" "." "z"))("ż"))
559((("dead-caron" "Z"))("Ž"))
560((("Multi_key" "c" "Z"))("Ž"))
561((("dead-caron" "z"))("ž"))
562((("Multi_key" "c" "z"))("ž"))
563((("Multi_key" "/" "b"))("ƀ"))
564((("Multi_key" "/" "I"))("Ɨ"))
565((("dead-horn" "O"))("Ơ"))
566((("Multi_key" "+" "O"))("Ơ"))
567((("dead-horn" "o"))("ơ"))
568((("Multi_key" "+" "o"))("ơ"))
569((("dead-horn" "U"))("Ư"))
570((("Multi_key" "+" "U"))("Ư"))
571((("dead-horn" "u"))("ư"))
572((("Multi_key" "+" "u"))("ư"))
573((("Multi_key" "/" "Z"))("Ƶ"))
574((("Multi_key" "/" "z"))("ƶ"))
575((("dead-caron" "A"))("Ǎ"))
576((("Multi_key" "c" "A"))("Ǎ"))
577((("dead-caron" "a"))("ǎ"))
578((("Multi_key" "c" "a"))("ǎ"))
579((("dead-caron" "I"))("Ǐ"))
580((("Multi_key" "c" "I"))("Ǐ"))
581((("dead-caron" "i"))("ǐ"))
582((("Multi_key" "c" "i"))("ǐ"))
583((("dead-caron" "O"))("Ǒ"))
584((("Multi_key" "c" "O"))("Ǒ"))
585((("dead-caron" "o"))("ǒ"))
586((("Multi_key" "c" "o"))("ǒ"))
587((("dead-caron" "U"))("Ǔ"))
588((("Multi_key" "c" "U"))("Ǔ"))
589((("dead-caron" "u"))("ǔ"))
590((("Multi_key" "c" "u"))("ǔ"))
591((("dead-macron" "dead-diaeresis" "U"))("Ǖ"))
592((("dead-macron" "Multi_key" "\"" "U"))("Ǖ"))
593((("Multi_key" "_" "dead-diaeresis" "U"))("Ǖ"))
594((("Multi_key" "_" "\"" "U"))("Ǖ"))
595((("dead-macron" "dead-diaeresis" "u"))("ǖ"))
596((("dead-macron" "Multi_key" "\"" "u"))("ǖ"))
597((("Multi_key" "_" "dead-diaeresis" "u"))("ǖ"))
598((("Multi_key" "_" "\"" "u"))("ǖ"))
599((("dead-acute" "dead-diaeresis" "U"))("Ǘ"))
600((("dead-acute" "Multi_key" "\"" "U"))("Ǘ"))
601((("Multi_key" "'" "dead-diaeresis" "U"))("Ǘ"))
602((("Multi_key" "'" "\"" "U"))("Ǘ"))
603((("dead-acute" "dead-diaeresis" "u"))("ǘ"))
604((("dead-acute" "Multi_key" "\"" "u"))("ǘ"))
605((("Multi_key" "'" "dead-diaeresis" "u"))("ǘ"))
606((("Multi_key" "'" "\"" "u"))("ǘ"))
607((("dead-caron" "dead-diaeresis" "U"))("Ǚ"))
608((("dead-caron" "Multi_key" "\"" "U"))("Ǚ"))
609((("Multi_key" "c" "dead-diaeresis" "U"))("Ǚ"))
610((("Multi_key" "c" "\"" "U"))("Ǚ"))
611((("dead-caron" "dead-diaeresis" "u"))("ǚ"))
612((("dead-caron" "Multi_key" "\"" "u"))("ǚ"))
613((("Multi_key" "c" "dead-diaeresis" "u"))("ǚ"))
614((("Multi_key" "c" "\"" "u"))("ǚ"))
615((("dead-grave" "dead-diaeresis" "U"))("Ǜ"))
616((("dead-grave" "Multi_key" "\"" "U"))("Ǜ"))
617((("Multi_key" "`" "dead-diaeresis" "U"))("Ǜ"))
618((("Multi_key" "`" "\"" "U"))("Ǜ"))
619((("dead-grave" "dead-diaeresis" "u"))("ǜ"))
620((("dead-grave" "Multi_key" "\"" "u"))("ǜ"))
621((("Multi_key" "`" "dead-diaeresis" "u"))("ǜ"))
622((("Multi_key" "`" "\"" "u"))("ǜ"))
623((("dead-macron" "dead-diaeresis" "A"))("Ǟ"))
624((("dead-macron" "Multi_key" "\"" "A"))("Ǟ"))
625((("Multi_key" "_" "dead-diaeresis" "A"))("Ǟ"))
626((("Multi_key" "_" "\"" "A"))("Ǟ"))
627((("dead-macron" "dead-diaeresis" "a"))("ǟ"))
628((("dead-macron" "Multi_key" "\"" "a"))("ǟ"))
629((("Multi_key" "_" "dead-diaeresis" "a"))("ǟ"))
630((("Multi_key" "_" "\"" "a"))("ǟ"))
631((("dead-macron" "dead-abovedot" "A"))("Ǡ"))
632((("dead-macron" "Multi_key" "." "A"))("Ǡ"))
633((("Multi_key" "_" "dead-abovedot" "A"))("Ǡ"))
634((("Multi_key" "_" "." "A"))("Ǡ"))
635((("dead-macron" "dead-abovedot" "a"))("ǡ"))
636((("dead-macron" "Multi_key" "." "a"))("ǡ"))
637((("Multi_key" "_" "dead-abovedot" "a"))("ǡ"))
638((("Multi_key" "_" "." "a"))("ǡ"))
639((("Multi_key" "/" "G"))("Ǥ"))
640((("Multi_key" "/" "g"))("ǥ"))
641((("dead-caron" "G"))("Ǧ"))
642((("Multi_key" "c" "G"))("Ǧ"))
643((("dead-caron" "g"))("ǧ"))
644((("Multi_key" "c" "g"))("ǧ"))
645((("dead-caron" "K"))("Ǩ"))
646((("Multi_key" "c" "K"))("Ǩ"))
647((("dead-caron" "k"))("ǩ"))
648((("Multi_key" "c" "k"))("ǩ"))
649((("dead-ogonek" "O"))("Ǫ"))
650((("Multi_key" ";" "O"))("Ǫ"))
651((("dead-ogonek" "o"))("ǫ"))
652((("Multi_key" ";" "o"))("ǫ"))
653((("dead-macron" "dead-ogonek" "O"))("Ǭ"))
654((("dead-macron" "Multi_key" ";" "O"))("Ǭ"))
655((("Multi_key" "_" "dead-ogonek" "O"))("Ǭ"))
656((("Multi_key" "_" ";" "O"))("Ǭ"))
657((("dead-macron" "dead-ogonek" "o"))("ǭ"))
658((("dead-macron" "Multi_key" ";" "o"))("ǭ"))
659((("Multi_key" "_" "dead-ogonek" "o"))("ǭ"))
660((("Multi_key" "_" ";" "o"))("ǭ"))
661((("dead-caron" "j"))("ǰ"))
662((("Multi_key" "c" "j"))("ǰ"))
663((("dead-acute" "G"))("Ǵ"))
664((("Multi_key" "'" "G"))("Ǵ"))
665((("dead-acute" "g"))("ǵ"))
666((("Multi_key" "'" "g"))("ǵ"))
667((("dead-grave" "N"))("Ǹ"))
668((("Multi_key" "`" "N"))("Ǹ"))
669((("dead-grave" "n"))("ǹ"))
670((("Multi_key" "`" "n"))("ǹ"))
671((("dead-acute" "dead-abovering" "A"))("Ǻ"))
672((("dead-acute" "Multi_key" "o" "A"))("Ǻ"))
673((("Multi_key" "'" "dead-abovering" "A"))("Ǻ"))
674((("Multi_key" "o" "'" "A"))("Ǻ"))
675((("dead-acute" "dead-abovering" "a"))("ǻ"))
676((("dead-acute" "Multi_key" "o" "a"))("ǻ"))
677((("Multi_key" "'" "dead-abovering" "a"))("ǻ"))
678((("Multi_key" "o" "'" "a"))("ǻ"))
679((("dead-acute" "Multi_key" "/" "O"))("Ǿ"))
680((("Multi_key" "'" "/" "O"))("Ǿ"))
681((("dead-acute" "Multi_key" "/" "o"))("ǿ"))
682((("Multi_key" "'" "/" "o"))("ǿ"))
683((("dead-caron" "H"))("Ȟ"))
684((("Multi_key" "c" "H"))("Ȟ"))
685((("dead-caron" "h"))("ȟ"))
686((("Multi_key" "c" "h"))("ȟ"))
687((("dead-abovedot" "A"))("Ȧ"))
688((("Multi_key" "." "A"))("Ȧ"))
689((("dead-abovedot" "a"))("ȧ"))
690((("Multi_key" "." "a"))("ȧ"))
691((("dead-cedilla" "E"))("Ȩ"))
692((("Multi_key" "," "E"))("Ȩ"))
693((("dead-cedilla" "e"))("ȩ"))
694((("Multi_key" "," "e"))("ȩ"))
695((("dead-macron" "dead-diaeresis" "O"))("Ȫ"))
696((("dead-macron" "Multi_key" "\"" "O"))("Ȫ"))
697((("Multi_key" "_" "dead-diaeresis" "O"))("Ȫ"))
698((("Multi_key" "_" "\"" "O"))("Ȫ"))
699((("dead-macron" "dead-diaeresis" "o"))("ȫ"))
700((("dead-macron" "Multi_key" "\"" "o"))("ȫ"))
701((("Multi_key" "_" "dead-diaeresis" "o"))("ȫ"))
702((("Multi_key" "_" "\"" "o"))("ȫ"))
703((("dead-macron" "dead-tilde" "O"))("Ȭ"))
704((("dead-macron" "Multi_key" "~" "O"))("Ȭ"))
705((("Multi_key" "_" "dead-tilde" "O"))("Ȭ"))
706((("Multi_key" "_" "~" "O"))("Ȭ"))
707((("dead-macron" "dead-tilde" "o"))("ȭ"))
708((("dead-macron" "Multi_key" "~" "o"))("ȭ"))
709((("Multi_key" "_" "dead-tilde" "o"))("ȭ"))
710((("Multi_key" "_" "~" "o"))("ȭ"))
711((("dead-abovedot" "O"))("Ȯ"))
712((("Multi_key" "." "O"))("Ȯ"))
713((("dead-abovedot" "o"))("ȯ"))
714((("Multi_key" "." "o"))("ȯ"))
715((("dead-macron" "dead-abovedot" "O"))("Ȱ"))
716((("dead-macron" "Multi_key" "." "O"))("Ȱ"))
717((("Multi_key" "_" "dead-abovedot" "O"))("Ȱ"))
718((("Multi_key" "_" "." "O"))("Ȱ"))
719((("dead-macron" "dead-abovedot" "o"))("ȱ"))
720((("dead-macron" "Multi_key" "." "o"))("ȱ"))
721((("Multi_key" "_" "dead-abovedot" "o"))("ȱ"))
722((("Multi_key" "_" "." "o"))("ȱ"))
723((("dead-macron" "Y"))("Ȳ"))
724((("Multi_key" "_" "Y"))("Ȳ"))
725((("dead-macron" "y"))("ȳ"))
726((("Multi_key" "_" "y"))("ȳ"))
727((("Multi_key" "e" "e"))("ə"))
728((("Multi_key" "/" "i"))("ɨ"))
729((("dead-circumflex" "Multi_key" "_" "h"))("ʰ"))
730((("Multi_key" "^" "_" "h"))("ʰ"))
731((("dead-circumflex" "Multi_key" "_" "j"))("ʲ"))
732((("Multi_key" "^" "_" "j"))("ʲ"))
733((("dead-circumflex" "Multi_key" "_" "r"))("ʳ"))
734((("Multi_key" "^" "_" "r"))("ʳ"))
735((("dead-circumflex" "Multi_key" "_" "w"))("ʷ"))
736((("Multi_key" "^" "_" "w"))("ʷ"))
737((("dead-circumflex" "Multi_key" "_" "y"))("ʸ"))
738((("Multi_key" "^" "_" "y"))("ʸ"))
739((("dead-circumflex" "Multi_key" "_" "l"))("ˡ"))
740((("Multi_key" "^" "_" "l"))("ˡ"))
741((("dead-circumflex" "Multi_key" "_" "s"))("ˢ"))
742((("Multi_key" "^" "_" "s"))("ˢ"))
743((("dead-circumflex" "Multi_key" "_" "x"))("ˣ"))
744((("Multi_key" "^" "_" "x"))("ˣ"))
745((("dead-diaeresis" "'"))("̈́"))
746((("Multi_key" "\"" "dead-acute"))("̈́"))
747((("Multi_key" "\"" "'"))("̈́"))
748((("dead-abovedot" "B"))("Ḃ"))
749((("Multi_key" "." "B"))("Ḃ"))
750((("dead-abovedot" "b"))("ḃ"))
751((("Multi_key" "." "b"))("ḃ"))
752((("dead-belowdot" "B"))("Ḅ"))
753((("Multi_key" "!" "B"))("Ḅ"))
754((("dead-belowdot" "b"))("ḅ"))
755((("Multi_key" "!" "b"))("ḅ"))
756((("dead-acute" "dead-cedilla" "C"))("Ḉ"))
757((("dead-acute" "Multi_key" "," "C"))("Ḉ"))
758((("Multi_key" "'" "dead-cedilla" "C"))("Ḉ"))
759((("Multi_key" "'" "," "C"))("Ḉ"))
760((("dead-acute" "dead-cedilla" "c"))("ḉ"))
761((("dead-acute" "Multi_key" "," "c"))("ḉ"))
762((("Multi_key" "'" "dead-cedilla" "c"))("ḉ"))
763((("Multi_key" "'" "," "c"))("ḉ"))
764((("dead-abovedot" "D"))("Ḋ"))
765((("Multi_key" "." "D"))("Ḋ"))
766((("dead-abovedot" "d"))("ḋ"))
767((("Multi_key" "." "d"))("ḋ"))
768((("dead-belowdot" "D"))("Ḍ"))
769((("Multi_key" "!" "D"))("Ḍ"))
770((("dead-belowdot" "d"))("ḍ"))
771((("Multi_key" "!" "d"))("ḍ"))
772((("dead-cedilla" "D"))("Ḑ"))
773((("Multi_key" "," "D"))("Ḑ"))
774((("dead-cedilla" "d"))("ḑ"))
775((("Multi_key" "," "d"))("ḑ"))
776((("dead-grave" "dead-macron" "E"))("Ḕ"))
777((("dead-grave" "Multi_key" "_" "E"))("Ḕ"))
778((("Multi_key" "`" "dead-macron" "E"))("Ḕ"))
779((("Multi_key" "`" "_" "E"))("Ḕ"))
780((("dead-grave" "dead-macron" "e"))("ḕ"))
781((("dead-grave" "Multi_key" "_" "e"))("ḕ"))
782((("Multi_key" "`" "dead-macron" "e"))("ḕ"))
783((("Multi_key" "`" "_" "e"))("ḕ"))
784((("dead-acute" "dead-macron" "E"))("Ḗ"))
785((("dead-acute" "Multi_key" "_" "E"))("Ḗ"))
786((("Multi_key" "'" "dead-macron" "E"))("Ḗ"))
787((("Multi_key" "'" "_" "E"))("Ḗ"))
788((("dead-acute" "dead-macron" "e"))("ḗ"))
789((("dead-acute" "Multi_key" "_" "e"))("ḗ"))
790((("Multi_key" "'" "dead-macron" "e"))("ḗ"))
791((("Multi_key" "'" "_" "e"))("ḗ"))
792((("dead-breve" "dead-cedilla" "E"))("Ḝ"))
793((("dead-breve" "Multi_key" "," "E"))("Ḝ"))
794((("Multi_key" "U" "dead-cedilla" "E"))("Ḝ"))
795((("Multi_key" "U" "," "E"))("Ḝ"))
796((("Multi_key" "b" "dead-cedilla" "E"))("Ḝ"))
797((("Multi_key" "b" "," "E"))("Ḝ"))
798((("dead-breve" "dead-cedilla" "e"))("ḝ"))
799((("dead-breve" "Multi_key" "," "e"))("ḝ"))
800((("Multi_key" "U" "dead-cedilla" "e"))("ḝ"))
801((("Multi_key" "U" "," "e"))("ḝ"))
802((("Multi_key" "b" "dead-cedilla" "e"))("ḝ"))
803((("Multi_key" "b" "," "e"))("ḝ"))
804((("dead-abovedot" "F"))("Ḟ"))
805((("Multi_key" "." "F"))("Ḟ"))
806((("dead-abovedot" "f"))("ḟ"))
807((("Multi_key" "." "f"))("ḟ"))
808((("dead-macron" "G"))("Ḡ"))
809((("Multi_key" "_" "G"))("Ḡ"))
810((("dead-macron" "g"))("ḡ"))
811((("Multi_key" "_" "g"))("ḡ"))
812((("dead-abovedot" "H"))("Ḣ"))
813((("Multi_key" "." "H"))("Ḣ"))
814((("dead-abovedot" "h"))("ḣ"))
815((("Multi_key" "." "h"))("ḣ"))
816((("dead-belowdot" "H"))("Ḥ"))
817((("Multi_key" "!" "H"))("Ḥ"))
818((("dead-belowdot" "h"))("ḥ"))
819((("Multi_key" "!" "h"))("ḥ"))
820((("dead-diaeresis" "H"))("Ḧ"))
821((("Multi_key" "\"" "H"))("Ḧ"))
822((("dead-diaeresis" "h"))("ḧ"))
823((("Multi_key" "\"" "h"))("ḧ"))
824((("dead-cedilla" "H"))("Ḩ"))
825((("Multi_key" "," "H"))("Ḩ"))
826((("dead-cedilla" "h"))("ḩ"))
827((("Multi_key" "," "h"))("ḩ"))
828((("dead-acute" "dead-diaeresis" "I"))("Ḯ"))
829((("dead-acute" "Multi_key" "\"" "I"))("Ḯ"))
830((("Multi_key" "'" "dead-diaeresis" "I"))("Ḯ"))
831((("Multi_key" "'" "\"" "I"))("Ḯ"))
832((("dead-acute" "dead-diaeresis" "i"))("ḯ"))
833((("dead-acute" "Multi_key" "\"" "i"))("ḯ"))
834((("Multi_key" "'" "dead-diaeresis" "i"))("ḯ"))
835((("Multi_key" "'" "\"" "i"))("ḯ"))
836((("dead-acute" "K"))("Ḱ"))
837((("Multi_key" "'" "K"))("Ḱ"))
838((("dead-acute" "k"))("ḱ"))
839((("Multi_key" "'" "k"))("ḱ"))
840((("dead-belowdot" "K"))("Ḳ"))
841((("Multi_key" "!" "K"))("Ḳ"))
842((("dead-belowdot" "k"))("ḳ"))
843((("Multi_key" "!" "k"))("ḳ"))
844((("dead-belowdot" "L"))("Ḷ"))
845((("Multi_key" "!" "L"))("Ḷ"))
846((("dead-belowdot" "l"))("ḷ"))
847((("Multi_key" "!" "l"))("ḷ"))
848((("dead-macron" "dead-belowdot" "L"))("Ḹ"))
849((("dead-macron" "Multi_key" "!" "L"))("Ḹ"))
850((("Multi_key" "_" "dead-belowdot" "L"))("Ḹ"))
851((("Multi_key" "_" "!" "L"))("Ḹ"))
852((("dead-macron" "dead-belowdot" "l"))("ḹ"))
853((("dead-macron" "Multi_key" "!" "l"))("ḹ"))
854((("Multi_key" "_" "dead-belowdot" "l"))("ḹ"))
855((("Multi_key" "_" "!" "l"))("ḹ"))
856((("dead-acute" "M"))("Ḿ"))
857((("Multi_key" "'" "M"))("Ḿ"))
858((("dead-acute" "m"))("ḿ"))
859((("Multi_key" "'" "m"))("ḿ"))
860((("dead-abovedot" "M"))("Ṁ"))
861((("Multi_key" "." "M"))("Ṁ"))
862((("dead-abovedot" "m"))("ṁ"))
863((("Multi_key" "." "m"))("ṁ"))
864((("dead-belowdot" "M"))("Ṃ"))
865((("Multi_key" "!" "M"))("Ṃ"))
866((("dead-belowdot" "m"))("ṃ"))
867((("Multi_key" "!" "m"))("ṃ"))
868((("dead-abovedot" "N"))("Ṅ"))
869((("Multi_key" "." "N"))("Ṅ"))
870((("dead-abovedot" "n"))("ṅ"))
871((("Multi_key" "." "n"))("ṅ"))
872((("dead-belowdot" "N"))("Ṇ"))
873((("Multi_key" "!" "N"))("Ṇ"))
874((("dead-belowdot" "n"))("ṇ"))
875((("Multi_key" "!" "n"))("ṇ"))
876((("dead-acute" "dead-tilde" "O"))("Ṍ"))
877((("dead-acute" "Multi_key" "~" "O"))("Ṍ"))
878((("Multi_key" "'" "dead-tilde" "O"))("Ṍ"))
879((("Multi_key" "'" "~" "O"))("Ṍ"))
880((("dead-acute" "dead-tilde" "o"))("ṍ"))
881((("dead-acute" "Multi_key" "~" "o"))("ṍ"))
882((("Multi_key" "'" "dead-tilde" "o"))("ṍ"))
883((("Multi_key" "'" "~" "o"))("ṍ"))
884((("dead-diaeresis" "dead-tilde" "O"))("Ṏ"))
885((("dead-diaeresis" "Multi_key" "~" "O"))("Ṏ"))
886((("Multi_key" "\"" "dead-tilde" "O"))("Ṏ"))
887((("Multi_key" "\"" "~" "O"))("Ṏ"))
888((("dead-diaeresis" "dead-tilde" "o"))("ṏ"))
889((("dead-diaeresis" "Multi_key" "~" "o"))("ṏ"))
890((("Multi_key" "\"" "dead-tilde" "o"))("ṏ"))
891((("Multi_key" "\"" "~" "o"))("ṏ"))
892((("dead-grave" "dead-macron" "O"))("Ṑ"))
893((("dead-grave" "Multi_key" "_" "O"))("Ṑ"))
894((("Multi_key" "`" "dead-macron" "O"))("Ṑ"))
895((("Multi_key" "`" "_" "O"))("Ṑ"))
896((("dead-grave" "dead-macron" "o"))("ṑ"))
897((("dead-grave" "Multi_key" "_" "o"))("ṑ"))
898((("Multi_key" "`" "dead-macron" "o"))("ṑ"))
899((("Multi_key" "`" "_" "o"))("ṑ"))
900((("dead-acute" "dead-macron" "O"))("Ṓ"))
901((("dead-acute" "Multi_key" "_" "O"))("Ṓ"))
902((("Multi_key" "'" "dead-macron" "O"))("Ṓ"))
903((("Multi_key" "'" "_" "O"))("Ṓ"))
904((("dead-acute" "dead-macron" "o"))("ṓ"))
905((("dead-acute" "Multi_key" "_" "o"))("ṓ"))
906((("Multi_key" "'" "dead-macron" "o"))("ṓ"))
907((("Multi_key" "'" "_" "o"))("ṓ"))
908((("dead-acute" "P"))("Ṕ"))
909((("Multi_key" "'" "P"))("Ṕ"))
910((("dead-acute" "p"))("ṕ"))
911((("Multi_key" "'" "p"))("ṕ"))
912((("dead-abovedot" "P"))("Ṗ"))
913((("Multi_key" "." "P"))("Ṗ"))
914((("dead-abovedot" "p"))("ṗ"))
915((("Multi_key" "." "p"))("ṗ"))
916((("dead-abovedot" "R"))("Ṙ"))
917((("Multi_key" "." "R"))("Ṙ"))
918((("dead-abovedot" "r"))("ṙ"))
919((("Multi_key" "." "r"))("ṙ"))
920((("dead-belowdot" "R"))("Ṛ"))
921((("Multi_key" "!" "R"))("Ṛ"))
922((("dead-belowdot" "r"))("ṛ"))
923((("Multi_key" "!" "r"))("ṛ"))
924((("dead-macron" "dead-belowdot" "R"))("Ṝ"))
925((("dead-macron" "Multi_key" "!" "R"))("Ṝ"))
926((("Multi_key" "_" "dead-belowdot" "R"))("Ṝ"))
927((("Multi_key" "_" "!" "R"))("Ṝ"))
928((("dead-macron" "dead-belowdot" "r"))("ṝ"))
929((("dead-macron" "Multi_key" "!" "r"))("ṝ"))
930((("Multi_key" "_" "dead-belowdot" "r"))("ṝ"))
931((("Multi_key" "_" "!" "r"))("ṝ"))
932((("dead-abovedot" "S"))("Ṡ"))
933((("Multi_key" "." "S"))("Ṡ"))
934((("dead-abovedot" "s"))("ṡ"))
935((("Multi_key" "." "s"))("ṡ"))
936((("dead-belowdot" "S"))("Ṣ"))
937((("Multi_key" "!" "S"))("Ṣ"))
938((("dead-belowdot" "s"))("ṣ"))
939((("Multi_key" "!" "s"))("ṣ"))
940((("dead-abovedot" "dead-acute" "S"))("Ṥ"))
941((("dead-abovedot" "Multi_key" "'" "S"))("Ṥ"))
942((("Multi_key" "." "dead-acute" "S"))("Ṥ"))
943((("Multi_key" "." "'" "S"))("Ṥ"))
944((("dead-abovedot" "dead-acute" "s"))("ṥ"))
945((("dead-abovedot" "Multi_key" "'" "s"))("ṥ"))
946((("Multi_key" "." "dead-acute" "s"))("ṥ"))
947((("Multi_key" "." "'" "s"))("ṥ"))
948((("dead-abovedot" "dead-caron" "S"))("Ṧ"))
949((("dead-abovedot" "Multi_key" "c" "S"))("Ṧ"))
950((("Multi_key" "." "dead-caron" "S"))("Ṧ"))
951((("Multi_key" "." "c" "S"))("Ṧ"))
952((("dead-abovedot" "dead-caron" "s"))("ṧ"))
953((("dead-abovedot" "Multi_key" "c" "s"))("ṧ"))
954((("Multi_key" "." "dead-caron" "s"))("ṧ"))
955((("Multi_key" "." "c" "s"))("ṧ"))
956((("dead-abovedot" "dead-belowdot" "S"))("Ṩ"))
957((("dead-abovedot" "Multi_key" "!" "S"))("Ṩ"))
958((("Multi_key" "." "dead-belowdot" "S"))("Ṩ"))
959((("Multi_key" "." "!" "S"))("Ṩ"))
960((("dead-abovedot" "dead-belowdot" "s"))("ṩ"))
961((("dead-abovedot" "Multi_key" "!" "s"))("ṩ"))
962((("Multi_key" "." "dead-belowdot" "s"))("ṩ"))
963((("Multi_key" "." "!" "s"))("ṩ"))
964((("dead-abovedot" "T"))("Ṫ"))
965((("Multi_key" "." "T"))("Ṫ"))
966((("dead-abovedot" "t"))("ṫ"))
967((("Multi_key" "." "t"))("ṫ"))
968((("dead-belowdot" "T"))("Ṭ"))
969((("Multi_key" "!" "T"))("Ṭ"))
970((("dead-belowdot" "t"))("ṭ"))
971((("Multi_key" "!" "t"))("ṭ"))
972((("dead-acute" "dead-tilde" "U"))("Ṹ"))
973((("dead-acute" "Multi_key" "~" "U"))("Ṹ"))
974((("Multi_key" "'" "dead-tilde" "U"))("Ṹ"))
975((("Multi_key" "'" "~" "U"))("Ṹ"))
976((("dead-acute" "dead-tilde" "u"))("ṹ"))
977((("dead-acute" "Multi_key" "~" "u"))("ṹ"))
978((("Multi_key" "'" "dead-tilde" "u"))("ṹ"))
979((("Multi_key" "'" "~" "u"))("ṹ"))
980((("dead-diaeresis" "dead-macron" "U"))("Ṻ"))
981((("dead-diaeresis" "Multi_key" "_" "U"))("Ṻ"))
982((("Multi_key" "\"" "dead-macron" "U"))("Ṻ"))
983((("Multi_key" "\"" "_" "U"))("Ṻ"))
984((("dead-diaeresis" "dead-macron" "u"))("ṻ"))
985((("dead-diaeresis" "Multi_key" "_" "u"))("ṻ"))
986((("Multi_key" "\"" "dead-macron" "u"))("ṻ"))
987((("Multi_key" "\"" "_" "u"))("ṻ"))
988((("dead-tilde" "V"))("Ṽ"))
989((("Multi_key" "~" "V"))("Ṽ"))
990((("dead-tilde" "v"))("ṽ"))
991((("Multi_key" "~" "v"))("ṽ"))
992((("dead-belowdot" "V"))("Ṿ"))
993((("Multi_key" "!" "V"))("Ṿ"))
994((("dead-belowdot" "v"))("ṿ"))
995((("Multi_key" "!" "v"))("ṿ"))
996((("dead-grave" "W"))("Ẁ"))
997((("Multi_key" "`" "W"))("Ẁ"))
998((("dead-grave" "w"))("ẁ"))
999((("Multi_key" "`" "w"))("ẁ"))
1000((("dead-acute" "W"))("Ẃ"))
1001((("Multi_key" "'" "W"))("Ẃ"))
1002((("dead-acute" "w"))("ẃ"))
1003((("Multi_key" "'" "w"))("ẃ"))
1004((("dead-diaeresis" "W"))("Ẅ"))
1005((("Multi_key" "\"" "W"))("Ẅ"))
1006((("dead-diaeresis" "w"))("ẅ"))
1007((("Multi_key" "\"" "w"))("ẅ"))
1008((("dead-abovedot" "W"))("Ẇ"))
1009((("Multi_key" "." "W"))("Ẇ"))
1010((("dead-abovedot" "w"))("ẇ"))
1011((("Multi_key" "." "w"))("ẇ"))
1012((("dead-belowdot" "W"))("Ẉ"))
1013((("Multi_key" "!" "W"))("Ẉ"))
1014((("dead-belowdot" "w"))("ẉ"))
1015((("Multi_key" "!" "w"))("ẉ"))
1016((("dead-abovedot" "X"))("Ẋ"))
1017((("Multi_key" "." "X"))("Ẋ"))
1018((("dead-abovedot" "x"))("ẋ"))
1019((("Multi_key" "." "x"))("ẋ"))
1020((("dead-diaeresis" "X"))("Ẍ"))
1021((("Multi_key" "\"" "X"))("Ẍ"))
1022((("dead-diaeresis" "x"))("ẍ"))
1023((("Multi_key" "\"" "x"))("ẍ"))
1024((("dead-abovedot" "Y"))("Ẏ"))
1025((("Multi_key" "." "Y"))("Ẏ"))
1026((("dead-abovedot" "y"))("ẏ"))
1027((("Multi_key" "." "y"))("ẏ"))
1028((("dead-circumflex" "Z"))("Ẑ"))
1029((("Multi_key" "^" "Z"))("Ẑ"))
1030((("dead-circumflex" "z"))("ẑ"))
1031((("Multi_key" "^" "z"))("ẑ"))
1032((("dead-belowdot" "Z"))("Ẓ"))
1033((("Multi_key" "!" "Z"))("Ẓ"))
1034((("dead-belowdot" "z"))("ẓ"))
1035((("Multi_key" "!" "z"))("ẓ"))
1036((("dead-diaeresis" "t"))("ẗ"))
1037((("Multi_key" "\"" "t"))("ẗ"))
1038((("dead-abovering" "w"))("ẘ"))
1039((("Multi_key" "o" "w"))("ẘ"))
1040((("dead-abovering" "y"))("ẙ"))
1041((("Multi_key" "o" "y"))("ẙ"))
1042((("dead-belowdot" "A"))("Ạ"))
1043((("Multi_key" "!" "A"))("Ạ"))
1044((("dead-belowdot" "a"))("ạ"))
1045((("Multi_key" "!" "a"))("ạ"))
1046((("dead-hook" "A"))("Ả"))
1047((("Multi_key" "?" "A"))("Ả"))
1048((("dead-hook" "a"))("ả"))
1049((("Multi_key" "?" "a"))("ả"))
1050((("dead-acute" "dead-circumflex" "A"))("Ấ"))
1051((("dead-acute" "Multi_key" "^" "A"))("Ấ"))
1052((("Multi_key" "'" "dead-circumflex" "A"))("Ấ"))
1053((("Multi_key" "'" "^" "A"))("Ấ"))
1054((("dead-acute" "dead-circumflex" "a"))("ấ"))
1055((("dead-acute" "Multi_key" "^" "a"))("ấ"))
1056((("Multi_key" "'" "dead-circumflex" "a"))("ấ"))
1057((("Multi_key" "'" "^" "a"))("ấ"))
1058((("dead-grave" "dead-circumflex" "A"))("Ầ"))
1059((("dead-grave" "Multi_key" "^" "A"))("Ầ"))
1060((("Multi_key" "`" "dead-circumflex" "A"))("Ầ"))
1061((("Multi_key" "`" "^" "A"))("Ầ"))
1062((("dead-grave" "dead-circumflex" "a"))("ầ"))
1063((("dead-grave" "Multi_key" "^" "a"))("ầ"))
1064((("Multi_key" "`" "dead-circumflex" "a"))("ầ"))
1065((("Multi_key" "`" "^" "a"))("ầ"))
1066((("dead-hook" "dead-circumflex" "A"))("Ẩ"))
1067((("dead-hook" "Multi_key" "^" "A"))("Ẩ"))
1068((("Multi_key" "?" "dead-circumflex" "A"))("Ẩ"))
1069((("Multi_key" "?" "^" "A"))("Ẩ"))
1070((("dead-hook" "dead-circumflex" "a"))("ẩ"))
1071((("dead-hook" "Multi_key" "^" "a"))("ẩ"))
1072((("Multi_key" "?" "dead-circumflex" "a"))("ẩ"))
1073((("Multi_key" "?" "^" "a"))("ẩ"))
1074((("dead-tilde" "dead-circumflex" "A"))("Ẫ"))
1075((("dead-tilde" "Multi_key" "^" "A"))("Ẫ"))
1076((("Multi_key" "~" "dead-circumflex" "A"))("Ẫ"))
1077((("Multi_key" "~" "^" "A"))("Ẫ"))
1078((("dead-tilde" "dead-circumflex" "a"))("ẫ"))
1079((("dead-tilde" "Multi_key" "^" "a"))("ẫ"))
1080((("Multi_key" "~" "dead-circumflex" "a"))("ẫ"))
1081((("Multi_key" "~" "^" "a"))("ẫ"))
1082((("dead-circumflex" "dead-belowdot" "A"))("Ậ"))
1083((("dead-circumflex" "Multi_key" "!" "A"))("Ậ"))
1084((("Multi_key" "^" "dead-belowdot" "A"))("Ậ"))
1085((("Multi_key" "^" "!" "A"))("Ậ"))
1086((("dead-circumflex" "dead-belowdot" "a"))("ậ"))
1087((("dead-circumflex" "Multi_key" "!" "a"))("ậ"))
1088((("Multi_key" "^" "dead-belowdot" "a"))("ậ"))
1089((("Multi_key" "^" "!" "a"))("ậ"))
1090((("dead-acute" "dead-breve" "A"))("Ắ"))
1091((("dead-acute" "Multi_key" "U" "A"))("Ắ"))
1092((("dead-acute" "Multi_key" "b" "A"))("Ắ"))
1093((("Multi_key" "'" "dead-breve" "A"))("Ắ"))
1094((("Multi_key" "'" "U" "A"))("Ắ"))
1095((("Multi_key" "'" "b" "A"))("Ắ"))
1096((("dead-acute" "dead-breve" "a"))("ắ"))
1097((("dead-acute" "Multi_key" "U" "a"))("ắ"))
1098((("dead-acute" "Multi_key" "b" "a"))("ắ"))
1099((("Multi_key" "'" "dead-breve" "a"))("ắ"))
1100((("Multi_key" "'" "U" "a"))("ắ"))
1101((("Multi_key" "'" "b" "a"))("ắ"))
1102((("dead-grave" "dead-breve" "A"))("Ằ"))
1103((("dead-grave" "Multi_key" "U" "A"))("Ằ"))
1104((("dead-grave" "Multi_key" "b" "A"))("Ằ"))
1105((("Multi_key" "`" "dead-breve" "A"))("Ằ"))
1106((("Multi_key" "`" "U" "A"))("Ằ"))
1107((("Multi_key" "`" "b" "A"))("Ằ"))
1108((("dead-grave" "dead-breve" "a"))("ằ"))
1109((("dead-grave" "Multi_key" "U" "a"))("ằ"))
1110((("dead-grave" "Multi_key" "b" "a"))("ằ"))
1111((("Multi_key" "`" "dead-breve" "a"))("ằ"))
1112((("Multi_key" "`" "U" "a"))("ằ"))
1113((("Multi_key" "`" "b" "a"))("ằ"))
1114((("dead-hook" "dead-breve" "A"))("Ẳ"))
1115((("dead-hook" "Multi_key" "U" "A"))("Ẳ"))
1116((("dead-hook" "Multi_key" "b" "A"))("Ẳ"))
1117((("Multi_key" "?" "dead-breve" "A"))("Ẳ"))
1118((("Multi_key" "?" "U" "A"))("Ẳ"))
1119((("Multi_key" "?" "b" "A"))("Ẳ"))
1120((("dead-hook" "dead-breve" "a"))("ẳ"))
1121((("dead-hook" "Multi_key" "U" "a"))("ẳ"))
1122((("dead-hook" "Multi_key" "b" "a"))("ẳ"))
1123((("Multi_key" "?" "dead-breve" "a"))("ẳ"))
1124((("Multi_key" "?" "U" "a"))("ẳ"))
1125((("Multi_key" "?" "b" "a"))("ẳ"))
1126((("dead-tilde" "dead-breve" "A"))("Ẵ"))
1127((("dead-tilde" "Multi_key" "U" "A"))("Ẵ"))
1128((("dead-tilde" "Multi_key" "b" "A"))("Ẵ"))
1129((("Multi_key" "~" "dead-breve" "A"))("Ẵ"))
1130((("Multi_key" "~" "U" "A"))("Ẵ"))
1131((("Multi_key" "~" "b" "A"))("Ẵ"))
1132((("dead-tilde" "dead-breve" "a"))("ẵ"))
1133((("dead-tilde" "Multi_key" "U" "a"))("ẵ"))
1134((("dead-tilde" "Multi_key" "b" "a"))("ẵ"))
1135((("Multi_key" "~" "dead-breve" "a"))("ẵ"))
1136((("Multi_key" "~" "U" "a"))("ẵ"))
1137((("Multi_key" "~" "b" "a"))("ẵ"))
1138((("dead-breve" "dead-belowdot" "A"))("Ặ"))
1139((("dead-breve" "Multi_key" "!" "A"))("Ặ"))
1140((("Multi_key" "U" "dead-belowdot" "A"))("Ặ"))
1141((("Multi_key" "U" "!" "A"))("Ặ"))
1142((("Multi_key" "b" "dead-belowdot" "A"))("Ặ"))
1143((("Multi_key" "b" "!" "A"))("Ặ"))
1144((("dead-breve" "dead-belowdot" "a"))("ặ"))
1145((("dead-breve" "Multi_key" "!" "a"))("ặ"))
1146((("Multi_key" "U" "dead-belowdot" "a"))("ặ"))
1147((("Multi_key" "U" "!" "a"))("ặ"))
1148((("Multi_key" "b" "dead-belowdot" "a"))("ặ"))
1149((("Multi_key" "b" "!" "a"))("ặ"))
1150((("dead-belowdot" "E"))("Ẹ"))
1151((("Multi_key" "!" "E"))("Ẹ"))
1152((("dead-belowdot" "e"))("ẹ"))
1153((("Multi_key" "!" "e"))("ẹ"))
1154((("dead-hook" "E"))("Ẻ"))
1155((("Multi_key" "?" "E"))("Ẻ"))
1156((("dead-hook" "e"))("ẻ"))
1157((("Multi_key" "?" "e"))("ẻ"))
1158((("dead-tilde" "E"))("Ẽ"))
1159((("Multi_key" "~" "E"))("Ẽ"))
1160((("dead-tilde" "e"))("ẽ"))
1161((("Multi_key" "~" "e"))("ẽ"))
1162((("dead-acute" "dead-circumflex" "E"))("Ế"))
1163((("dead-acute" "Multi_key" "^" "E"))("Ế"))
1164((("Multi_key" "'" "dead-circumflex" "E"))("Ế"))
1165((("Multi_key" "'" "^" "E"))("Ế"))
1166((("dead-acute" "dead-circumflex" "e"))("ế"))
1167((("dead-acute" "Multi_key" "^" "e"))("ế"))
1168((("Multi_key" "'" "dead-circumflex" "e"))("ế"))
1169((("Multi_key" "'" "^" "e"))("ế"))
1170((("dead-grave" "dead-circumflex" "E"))("Ề"))
1171((("dead-grave" "Multi_key" "^" "E"))("Ề"))
1172((("Multi_key" "`" "dead-circumflex" "E"))("Ề"))
1173((("Multi_key" "`" "^" "E"))("Ề"))
1174((("dead-grave" "dead-circumflex" "e"))("ề"))
1175((("dead-grave" "Multi_key" "^" "e"))("ề"))
1176((("Multi_key" "`" "dead-circumflex" "e"))("ề"))
1177((("Multi_key" "`" "^" "e"))("ề"))
1178((("dead-hook" "dead-circumflex" "E"))("Ể"))
1179((("dead-hook" "Multi_key" "^" "E"))("Ể"))
1180((("Multi_key" "?" "dead-circumflex" "E"))("Ể"))
1181((("Multi_key" "?" "^" "E"))("Ể"))
1182((("dead-hook" "dead-circumflex" "e"))("ể"))
1183((("dead-hook" "Multi_key" "^" "e"))("ể"))
1184((("Multi_key" "?" "dead-circumflex" "e"))("ể"))
1185((("Multi_key" "?" "^" "e"))("ể"))
1186((("dead-tilde" "dead-circumflex" "E"))("Ễ"))
1187((("dead-tilde" "Multi_key" "^" "E"))("Ễ"))
1188((("Multi_key" "~" "dead-circumflex" "E"))("Ễ"))
1189((("Multi_key" "~" "^" "E"))("Ễ"))
1190((("dead-tilde" "dead-circumflex" "e"))("ễ"))
1191((("dead-tilde" "Multi_key" "^" "e"))("ễ"))
1192((("Multi_key" "~" "dead-circumflex" "e"))("ễ"))
1193((("Multi_key" "~" "^" "e"))("ễ"))
1194((("dead-circumflex" "dead-belowdot" "E"))("Ệ"))
1195((("dead-circumflex" "Multi_key" "!" "E"))("Ệ"))
1196((("Multi_key" "^" "dead-belowdot" "E"))("Ệ"))
1197((("Multi_key" "^" "!" "E"))("Ệ"))
1198((("dead-circumflex" "dead-belowdot" "e"))("ệ"))
1199((("dead-circumflex" "Multi_key" "!" "e"))("ệ"))
1200((("Multi_key" "^" "dead-belowdot" "e"))("ệ"))
1201((("Multi_key" "^" "!" "e"))("ệ"))
1202((("dead-hook" "I"))("Ỉ"))
1203((("Multi_key" "?" "I"))("Ỉ"))
1204((("dead-hook" "i"))("ỉ"))
1205((("Multi_key" "?" "i"))("ỉ"))
1206((("dead-belowdot" "I"))("Ị"))
1207((("Multi_key" "!" "I"))("Ị"))
1208((("dead-belowdot" "i"))("ị"))
1209((("Multi_key" "!" "i"))("ị"))
1210((("dead-belowdot" "O"))("Ọ"))
1211((("Multi_key" "!" "O"))("Ọ"))
1212((("dead-belowdot" "o"))("ọ"))
1213((("Multi_key" "!" "o"))("ọ"))
1214((("dead-hook" "O"))("Ỏ"))
1215((("Multi_key" "?" "O"))("Ỏ"))
1216((("dead-hook" "o"))("ỏ"))
1217((("Multi_key" "?" "o"))("ỏ"))
1218((("dead-acute" "dead-circumflex" "O"))("Ố"))
1219((("dead-acute" "Multi_key" "^" "O"))("Ố"))
1220((("Multi_key" "'" "dead-circumflex" "O"))("Ố"))
1221((("Multi_key" "'" "^" "O"))("Ố"))
1222((("dead-acute" "dead-circumflex" "o"))("ố"))
1223((("dead-acute" "Multi_key" "^" "o"))("ố"))
1224((("Multi_key" "'" "dead-circumflex" "o"))("ố"))
1225((("Multi_key" "'" "^" "o"))("ố"))
1226((("dead-grave" "dead-circumflex" "O"))("Ồ"))
1227((("dead-grave" "Multi_key" "^" "O"))("Ồ"))
1228((("Multi_key" "`" "dead-circumflex" "O"))("Ồ"))
1229((("Multi_key" "`" "^" "O"))("Ồ"))
1230((("dead-grave" "dead-circumflex" "o"))("ồ"))
1231((("dead-grave" "Multi_key" "^" "o"))("ồ"))
1232((("Multi_key" "`" "dead-circumflex" "o"))("ồ"))
1233((("Multi_key" "`" "^" "o"))("ồ"))
1234((("dead-hook" "dead-circumflex" "O"))("Ổ"))
1235((("dead-hook" "Multi_key" "^" "O"))("Ổ"))
1236((("Multi_key" "?" "dead-circumflex" "O"))("Ổ"))
1237((("Multi_key" "?" "^" "O"))("Ổ"))
1238((("dead-hook" "dead-circumflex" "o"))("ổ"))
1239((("dead-hook" "Multi_key" "^" "o"))("ổ"))
1240((("Multi_key" "?" "dead-circumflex" "o"))("ổ"))
1241((("Multi_key" "?" "^" "o"))("ổ"))
1242((("dead-tilde" "dead-circumflex" "O"))("Ỗ"))
1243((("dead-tilde" "Multi_key" "^" "O"))("Ỗ"))
1244((("Multi_key" "~" "dead-circumflex" "O"))("Ỗ"))
1245((("Multi_key" "~" "^" "O"))("Ỗ"))
1246((("dead-tilde" "dead-circumflex" "o"))("ỗ"))
1247((("dead-tilde" "Multi_key" "^" "o"))("ỗ"))
1248((("Multi_key" "~" "dead-circumflex" "o"))("ỗ"))
1249((("Multi_key" "~" "^" "o"))("ỗ"))
1250((("dead-circumflex" "dead-belowdot" "O"))("Ộ"))
1251((("dead-circumflex" "Multi_key" "!" "O"))("Ộ"))
1252((("Multi_key" "^" "dead-belowdot" "O"))("Ộ"))
1253((("Multi_key" "^" "!" "O"))("Ộ"))
1254((("dead-circumflex" "dead-belowdot" "o"))("ộ"))
1255((("dead-circumflex" "Multi_key" "!" "o"))("ộ"))
1256((("Multi_key" "^" "dead-belowdot" "o"))("ộ"))
1257((("Multi_key" "^" "!" "o"))("ộ"))
1258((("dead-acute" "dead-horn" "O"))("Ớ"))
1259((("dead-acute" "Multi_key" "+" "O"))("Ớ"))
1260((("Multi_key" "'" "dead-horn" "O"))("Ớ"))
1261((("Multi_key" "'" "+" "O"))("Ớ"))
1262((("dead-acute" "dead-horn" "o"))("ớ"))
1263((("dead-acute" "Multi_key" "+" "o"))("ớ"))
1264((("Multi_key" "'" "dead-horn" "o"))("ớ"))
1265((("Multi_key" "'" "+" "o"))("ớ"))
1266((("dead-grave" "dead-horn" "O"))("Ờ"))
1267((("dead-grave" "Multi_key" "+" "O"))("Ờ"))
1268((("Multi_key" "`" "dead-horn" "O"))("Ờ"))
1269((("Multi_key" "`" "+" "O"))("Ờ"))
1270((("dead-grave" "dead-horn" "o"))("ờ"))
1271((("dead-grave" "Multi_key" "+" "o"))("ờ"))
1272((("Multi_key" "`" "dead-horn" "o"))("ờ"))
1273((("Multi_key" "`" "+" "o"))("ờ"))
1274((("dead-hook" "dead-horn" "O"))("Ở"))
1275((("dead-hook" "Multi_key" "+" "O"))("Ở"))
1276((("Multi_key" "?" "dead-horn" "O"))("Ở"))
1277((("Multi_key" "?" "+" "O"))("Ở"))
1278((("dead-hook" "dead-horn" "o"))("ở"))
1279((("dead-hook" "Multi_key" "+" "o"))("ở"))
1280((("Multi_key" "?" "dead-horn" "o"))("ở"))
1281((("Multi_key" "?" "+" "o"))("ở"))
1282((("dead-tilde" "dead-horn" "O"))("Ỡ"))
1283((("dead-tilde" "Multi_key" "+" "O"))("Ỡ"))
1284((("Multi_key" "~" "dead-horn" "O"))("Ỡ"))
1285((("Multi_key" "~" "+" "O"))("Ỡ"))
1286((("dead-tilde" "dead-horn" "o"))("ỡ"))
1287((("dead-tilde" "Multi_key" "+" "o"))("ỡ"))
1288((("Multi_key" "~" "dead-horn" "o"))("ỡ"))
1289((("Multi_key" "~" "+" "o"))("ỡ"))
1290((("dead-belowdot" "dead-horn" "O"))("Ợ"))
1291((("dead-belowdot" "Multi_key" "+" "O"))("Ợ"))
1292((("Multi_key" "!" "dead-horn" "O"))("Ợ"))
1293((("Multi_key" "!" "+" "O"))("Ợ"))
1294((("dead-belowdot" "dead-horn" "o"))("ợ"))
1295((("dead-belowdot" "Multi_key" "+" "o"))("ợ"))
1296((("Multi_key" "!" "dead-horn" "o"))("ợ"))
1297((("Multi_key" "!" "+" "o"))("ợ"))
1298((("dead-belowdot" "U"))("Ụ"))
1299((("Multi_key" "!" "U"))("Ụ"))
1300((("dead-belowdot" "u"))("ụ"))
1301((("Multi_key" "!" "u"))("ụ"))
1302((("dead-hook" "U"))("Ủ"))
1303((("Multi_key" "?" "U"))("Ủ"))
1304((("dead-hook" "u"))("ủ"))
1305((("Multi_key" "?" "u"))("ủ"))
1306((("dead-acute" "dead-horn" "U"))("Ứ"))
1307((("dead-acute" "Multi_key" "+" "U"))("Ứ"))
1308((("Multi_key" "'" "dead-horn" "U"))("Ứ"))
1309((("Multi_key" "'" "+" "U"))("Ứ"))
1310((("dead-acute" "dead-horn" "u"))("ứ"))
1311((("dead-acute" "Multi_key" "+" "u"))("ứ"))
1312((("Multi_key" "'" "dead-horn" "u"))("ứ"))
1313((("Multi_key" "'" "+" "u"))("ứ"))
1314((("dead-grave" "dead-horn" "U"))("Ừ"))
1315((("dead-grave" "Multi_key" "+" "U"))("Ừ"))
1316((("Multi_key" "`" "dead-horn" "U"))("Ừ"))
1317((("Multi_key" "`" "+" "U"))("Ừ"))
1318((("dead-grave" "dead-horn" "u"))("ừ"))
1319((("dead-grave" "Multi_key" "+" "u"))("ừ"))
1320((("Multi_key" "`" "dead-horn" "u"))("ừ"))
1321((("Multi_key" "`" "+" "u"))("ừ"))
1322((("dead-hook" "dead-horn" "U"))("Ử"))
1323((("dead-hook" "Multi_key" "+" "U"))("Ử"))
1324((("Multi_key" "?" "dead-horn" "U"))("Ử"))
1325((("Multi_key" "?" "+" "U"))("Ử"))
1326((("dead-hook" "dead-horn" "u"))("ử"))
1327((("dead-hook" "Multi_key" "+" "u"))("ử"))
1328((("Multi_key" "?" "dead-horn" "u"))("ử"))
1329((("Multi_key" "?" "+" "u"))("ử"))
1330((("dead-tilde" "dead-horn" "U"))("Ữ"))
1331((("dead-tilde" "Multi_key" "+" "U"))("Ữ"))
1332((("Multi_key" "~" "dead-horn" "U"))("Ữ"))
1333((("Multi_key" "~" "+" "U"))("Ữ"))
1334((("dead-tilde" "dead-horn" "u"))("ữ"))
1335((("dead-tilde" "Multi_key" "+" "u"))("ữ"))
1336((("Multi_key" "~" "dead-horn" "u"))("ữ"))
1337((("Multi_key" "~" "+" "u"))("ữ"))
1338((("dead-belowdot" "dead-horn" "U"))("Ự"))
1339((("dead-belowdot" "Multi_key" "+" "U"))("Ự"))
1340((("Multi_key" "!" "dead-horn" "U"))("Ự"))
1341((("Multi_key" "!" "+" "U"))("Ự"))
1342((("dead-belowdot" "dead-horn" "u"))("ự"))
1343((("dead-belowdot" "Multi_key" "+" "u"))("ự"))
1344((("Multi_key" "!" "dead-horn" "u"))("ự"))
1345((("Multi_key" "!" "+" "u"))("ự"))
1346((("dead-grave" "Y"))("Ỳ"))
1347((("Multi_key" "`" "Y"))("Ỳ"))
1348((("dead-grave" "y"))("ỳ"))
1349((("Multi_key" "`" "y"))("ỳ"))
1350((("dead-belowdot" "Y"))("Ỵ"))
1351((("Multi_key" "!" "Y"))("Ỵ"))
1352((("dead-belowdot" "y"))("ỵ"))
1353((("Multi_key" "!" "y"))("ỵ"))
1354((("dead-hook" "Y"))("Ỷ"))
1355((("Multi_key" "?" "Y"))("Ỷ"))
1356((("dead-hook" "y"))("ỷ"))
1357((("Multi_key" "?" "y"))("ỷ"))
1358((("dead-tilde" "Y"))("Ỹ"))
1359((("Multi_key" "~" "Y"))("Ỹ"))
1360((("dead-tilde" "y"))("ỹ"))
1361((("Multi_key" "~" "y"))("ỹ"))
1362((("dead-circumflex" "0"))("⁰"))
1363((("Multi_key" "^" "0"))("⁰"))
1364((("dead-circumflex" "Multi_key" "_" "i"))("ⁱ"))
1365((("Multi_key" "^" "_" "i"))("ⁱ"))
1366((("dead-circumflex" "4"))("⁴"))
1367((("Multi_key" "^" "4"))("⁴"))
1368((("dead-circumflex" "5"))("⁵"))
1369((("Multi_key" "^" "5"))("⁵"))
1370((("dead-circumflex" "6"))("⁶"))
1371((("Multi_key" "^" "6"))("⁶"))
1372((("dead-circumflex" "7"))("⁷"))
1373((("Multi_key" "^" "7"))("⁷"))
1374((("dead-circumflex" "8"))("⁸"))
1375((("Multi_key" "^" "8"))("⁸"))
1376((("dead-circumflex" "9"))("⁹"))
1377((("Multi_key" "^" "9"))("⁹"))
1378((("dead-circumflex" "+"))("⁺"))
1379((("Multi_key" "^" "+"))("⁺"))
1380((("dead-circumflex" "="))("⁼"))
1381((("Multi_key" "^" "="))("⁼"))
1382((("dead-circumflex" "("))("⁽"))
1383((("Multi_key" "^" "("))("⁽"))
1384((("dead-circumflex" ")"))("⁾"))
1385((("Multi_key" "^" ")"))("⁾"))
1386((("dead-circumflex" "Multi_key" "_" "n"))("ⁿ"))
1387((("Multi_key" "^" "_" "n"))("ⁿ"))
1388((("Multi_key" "_" "0"))("₀"))
1389((("Multi_key" "_" "1"))("₁"))
1390((("Multi_key" "_" "2"))("₂"))
1391((("Multi_key" "_" "3"))("₃"))
1392((("Multi_key" "_" "4"))("₄"))
1393((("Multi_key" "_" "5"))("₅"))
1394((("Multi_key" "_" "6"))("₆"))
1395((("Multi_key" "_" "7"))("₇"))
1396((("Multi_key" "_" "8"))("₈"))
1397((("Multi_key" "_" "9"))("₉"))
1398((("Multi_key" "_" "+"))("₊"))
1399((("Multi_key" "_" "="))("₌"))
1400((("Multi_key" "_" "("))("₍"))
1401((("Multi_key" "_" ")"))("₎"))
1402((("dead-circumflex" "Multi_key" "S" "M"))("℠"))
1403((("Multi_key" "^" "S" "M"))("℠"))
1404((("dead-circumflex" "Multi_key" "T" "M"))("™"))
1405((("Multi_key" "^" "T" "M"))("™"))
1406((("Multi_key" "(" "1" ")"))("①"))
1407((("Multi_key" "(" "2" ")"))("②"))
1408((("Multi_key" "(" "3" ")"))("③"))
1409((("Multi_key" "(" "4" ")"))("④"))
1410((("Multi_key" "(" "5" ")"))("⑤"))
1411((("Multi_key" "(" "6" ")"))("⑥"))
1412((("Multi_key" "(" "7" ")"))("⑦"))
1413((("Multi_key" "(" "8" ")"))("⑧"))
1414((("Multi_key" "(" "9" ")"))("⑨"))
1415((("Multi_key" "(" "1" "0" ")"))("⑩"))
1416((("Multi_key" "(" "1" "1" ")"))("⑪"))
1417((("Multi_key" "(" "1" "2" ")"))("⑫"))
1418((("Multi_key" "(" "1" "3" ")"))("⑬"))
1419((("Multi_key" "(" "1" "4" ")"))("⑭"))
1420((("Multi_key" "(" "1" "5" ")"))("⑮"))
1421((("Multi_key" "(" "1" "6" ")"))("⑯"))
1422((("Multi_key" "(" "1" "7" ")"))("⑰"))
1423((("Multi_key" "(" "1" "8" ")"))("⑱"))
1424((("Multi_key" "(" "1" "9" ")"))("⑲"))
1425((("Multi_key" "(" "2" "0" ")"))("⑳"))
1426((("Multi_key" "(" "A" ")"))("Ⓐ"))
1427((("Multi_key" "(" "B" ")"))("Ⓑ"))
1428((("Multi_key" "(" "C" ")"))("Ⓒ"))
1429((("Multi_key" "(" "D" ")"))("Ⓓ"))
1430((("Multi_key" "(" "E" ")"))("Ⓔ"))
1431((("Multi_key" "(" "F" ")"))("Ⓕ"))
1432((("Multi_key" "(" "G" ")"))("Ⓖ"))
1433((("Multi_key" "(" "H" ")"))("Ⓗ"))
1434((("Multi_key" "(" "I" ")"))("Ⓘ"))
1435((("Multi_key" "(" "J" ")"))("Ⓙ"))
1436((("Multi_key" "(" "K" ")"))("Ⓚ"))
1437((("Multi_key" "(" "L" ")"))("Ⓛ"))
1438((("Multi_key" "(" "M" ")"))("Ⓜ"))
1439((("Multi_key" "(" "N" ")"))("Ⓝ"))
1440((("Multi_key" "(" "O" ")"))("Ⓞ"))
1441((("Multi_key" "(" "P" ")"))("Ⓟ"))
1442((("Multi_key" "(" "Q" ")"))("Ⓠ"))
1443((("Multi_key" "(" "R" ")"))("Ⓡ"))
1444((("Multi_key" "(" "S" ")"))("Ⓢ"))
1445((("Multi_key" "(" "T" ")"))("Ⓣ"))
1446((("Multi_key" "(" "U" ")"))("Ⓤ"))
1447((("Multi_key" "(" "V" ")"))("Ⓥ"))
1448((("Multi_key" "(" "W" ")"))("Ⓦ"))
1449((("Multi_key" "(" "X" ")"))("Ⓧ"))
1450((("Multi_key" "(" "Y" ")"))("Ⓨ"))
1451((("Multi_key" "(" "Z" ")"))("Ⓩ"))
1452((("Multi_key" "(" "a" ")"))("ⓐ"))
1453((("Multi_key" "(" "b" ")"))("ⓑ"))
1454((("Multi_key" "(" "c" ")"))("ⓒ"))
1455((("Multi_key" "(" "d" ")"))("ⓓ"))
1456((("Multi_key" "(" "e" ")"))("ⓔ"))
1457((("Multi_key" "(" "f" ")"))("ⓕ"))
1458((("Multi_key" "(" "g" ")"))("ⓖ"))
1459((("Multi_key" "(" "h" ")"))("ⓗ"))
1460((("Multi_key" "(" "i" ")"))("ⓘ"))
1461((("Multi_key" "(" "j" ")"))("ⓙ"))
1462((("Multi_key" "(" "k" ")"))("ⓚ"))
1463((("Multi_key" "(" "l" ")"))("ⓛ"))
1464((("Multi_key" "(" "m" ")"))("ⓜ"))
1465((("Multi_key" "(" "n" ")"))("ⓝ"))
1466((("Multi_key" "(" "o" ")"))("ⓞ"))
1467((("Multi_key" "(" "p" ")"))("ⓟ"))
1468((("Multi_key" "(" "q" ")"))("ⓠ"))
1469((("Multi_key" "(" "r" ")"))("ⓡ"))
1470((("Multi_key" "(" "s" ")"))("ⓢ"))
1471((("Multi_key" "(" "t" ")"))("ⓣ"))
1472((("Multi_key" "(" "u" ")"))("ⓤ"))
1473((("Multi_key" "(" "v" ")"))("ⓥ"))
1474((("Multi_key" "(" "w" ")"))("ⓦ"))
1475((("Multi_key" "(" "x" ")"))("ⓧ"))
1476((("Multi_key" "(" "y" ")"))("ⓨ"))
1477((("Multi_key" "(" "z" ")"))("ⓩ"))
1478((("Multi_key" "(" "0" ")"))("⓪"))
1479((("Multi_key" "(" "2" "1" ")"))("㉑"))
1480((("Multi_key" "(" "2" "2" ")"))("㉒"))
1481((("Multi_key" "(" "2" "3" ")"))("㉓"))
1482((("Multi_key" "(" "2" "4" ")"))("㉔"))
1483((("Multi_key" "(" "2" "5" ")"))("㉕"))
1484((("Multi_key" "(" "2" "6" ")"))("㉖"))
1485((("Multi_key" "(" "2" "7" ")"))("㉗"))
1486((("Multi_key" "(" "2" "8" ")"))("㉘"))
1487((("Multi_key" "(" "2" "9" ")"))("㉙"))
1488((("Multi_key" "(" "3" "0" ")"))("㉚"))
1489((("Multi_key" "(" "3" "1" ")"))("㉛"))
1490((("Multi_key" "(" "3" "2" ")"))("㉜"))
1491((("Multi_key" "(" "3" "3" ")"))("㉝"))
1492((("Multi_key" "(" "3" "4" ")"))("㉞"))
1493((("Multi_key" "(" "3" "5" ")"))("㉟"))
1494((("Multi_key" "(" "3" "6" ")"))("㊱"))
1495((("Multi_key" "(" "3" "7" ")"))("㊲"))
1496((("Multi_key" "(" "3" "8" ")"))("㊳"))
1497((("Multi_key" "(" "3" "9" ")"))("㊴"))
1498((("Multi_key" "(" "4" "0" ")"))("㊵"))
1499((("Multi_key" "(" "4" "1" ")"))("㊶"))
1500((("Multi_key" "(" "4" "2" ")"))("㊷"))
1501((("Multi_key" "(" "4" "3" ")"))("㊸"))
1502((("Multi_key" "(" "4" "4" ")"))("㊹"))
1503((("Multi_key" "(" "4" "5" ")"))("㊺"))
1504((("Multi_key" "(" "4" "6" ")"))("㊻"))
1505((("Multi_key" "(" "4" "7" ")"))("㊼"))
1506((("Multi_key" "(" "4" "8" ")"))("㊽"))
1507((("Multi_key" "(" "4" "9" ")"))("㊾"))
1508((("Multi_key" "(" "5" "0" ")"))("㊿"))
1509))
1510
1511(define latin-set-deadkey-representation
1512  (lambda ()
1513    (set-symbol-value! 'dead-grave "`")
1514    (set-symbol-value! 'dead-acute "´")
1515    (set-symbol-value! 'dead-circumflex "ˆ")
1516    (set-symbol-value! 'dead-tilde "˜")
1517    (set-symbol-value! 'dead-macron "¯")
1518    (set-symbol-value! 'dead-breve "˘")
1519    (set-symbol-value! 'dead-abovedot "˙")
1520    (set-symbol-value! 'dead-diaeresis "¨")
1521    (set-symbol-value! 'dead-abovering "˚")
1522    (set-symbol-value! 'dead-doubleacute "˝")
1523    (set-symbol-value! 'dead-caron "ˇ")
1524    (set-symbol-value! 'dead-cedilla "¸")
1525    (set-symbol-value! 'dead-ogonek "˛")
1526    (set-symbol-value! 'dead-iota "ͺ") ;; represented with U+037A
1527    ;; no representation chars below
1528    ;(set-symbol-value! 'dead-belowdot "")
1529    ;(set-symbol-value! 'dead-hook "")
1530    ;(set-symbol-value! 'dead-horn "")
1531))
1532
1533(define latin-im-rule
1534  (append ascii-rule latin-compose-rule))
1535
1536(define ascii-rule
1537  (map (compose (lambda (entry)
1538		  (list (list entry) entry))
1539		list
1540		charcode->string)
1541       (iota 95 32)))
1542
1543;; widgets and actions
1544
1545;; widgets
1546(define latin-widgets '(widget_latin_input_mode))
1547
1548;; default activity for each widgets
1549(define default-widget_latin_input_mode 'action_latin_input)
1550
1551;; actions of widget_latin_input_mode
1552(define latin-input-mode-actions
1553  '(action_latin_input))
1554
1555;;; implementations
1556
1557(register-action 'action_latin_input
1558		 (lambda (lc)
1559		   (list
1560		    'on
1561		    "L"
1562		    (N_ "Latin compose")
1563		    (N_ "Latin Compose Mode")))
1564		 (lambda (lc)
1565		   #t)
1566		 (lambda (lc)
1567		   ;; set deadkey representaion values
1568		   (latin-set-deadkey-representation)))
1569
1570;; Update widget definitions based on action configurations. The
1571;; procedure is needed for on-the-fly reconfiguration involving the
1572;; custom API
1573(define latin-configure-widgets
1574  (lambda ()
1575    (register-widget 'widget_latin_input_mode
1576		     (activity-indicator-new latin-input-mode-actions)
1577		     (actions-new latin-input-mode-actions))))
1578
1579(define latin-context-rec-spec
1580  (append
1581   context-rec-spec
1582   '((rk-context         #f)
1583     (composing?         #f)
1584     (raw-commit         #t))))
1585
1586(define-record 'latin-context latin-context-rec-spec)
1587(define latin-context-new-internal latin-context-new)
1588
1589(define latin-context-new
1590  (lambda (id im)
1591    (let ((lc (latin-context-new-internal id im))
1592	  (rkc (rk-context-new latin-im-rule #f #f)))
1593      (latin-context-set-widgets! lc latin-widgets)
1594      (latin-context-set-rk-context! lc rkc)
1595      lc)))
1596
1597(define latin-init-handler
1598  (lambda (id im arg)
1599    (latin-context-new id im)))
1600
1601(define latin-context-flush
1602  (lambda (lc)
1603    (rk-flush (latin-context-rk-context lc))
1604    (latin-context-set-composing?! lc #f)))
1605
1606(define latin-update-preedit
1607  (lambda (lc)
1608    (if (not (latin-context-raw-commit lc))
1609	(let* ((rkc (latin-context-rk-context lc))
1610	       (cs (rk-current-seq rkc)))
1611	  (im-clear-preedit lc)
1612	  (im-pushback-preedit lc
1613			       preedit-underline
1614			       (if cs
1615				   (nth 0 (cadr cs))
1616				   (rk-pending rkc)))
1617	  (im-pushback-preedit lc
1618			       preedit-cursor
1619			       "")
1620	  (im-update-preedit lc))
1621	(latin-context-set-raw-commit! lc #f))))
1622
1623(define latin-commit-raw
1624  (lambda (lc)
1625    (im-commit-raw lc)
1626    (latin-context-set-raw-commit! lc #t)))
1627
1628(define latin-commit
1629  (lambda (lc)
1630    (let* ((rkc (latin-context-rk-context lc))
1631	   (cs (rk-current-seq rkc)))
1632      (if cs
1633	  (im-commit lc (car (cadr cs)))
1634	  (im-commit lc (rk-pending rkc)))
1635      (latin-context-flush lc))))
1636
1637(define latin-proc-composing-state
1638  (lambda (lc key state)
1639    (let ((rkc (latin-context-rk-context lc)))
1640      (cond
1641       ((latin-backspace-key? key state)
1642	(if (not (rk-backspace rkc))
1643	    (latin-commit-raw lc)
1644	    (if (null? (rk-context-seq rkc))
1645		(latin-context-flush lc))))
1646
1647       ((latin-commit-key? key state)
1648	(latin-commit lc))
1649
1650       ((or (and
1651	     (symbol? key)
1652	     (not (or (dead-keys? key)
1653		      (eq? 'Multi_key key))))
1654	    (and
1655	     (eqv? 32 key) ; space
1656	     (not (rk-expect-key? rkc " "))))
1657	(latin-commit lc)
1658	(im-commit-raw lc)
1659	(latin-context-flush lc))
1660
1661       (else
1662	(let ((res (rk-push-key! rkc (if (symbol? key)
1663					 (symbol->string key)
1664					 (charcode->string key)))))
1665	  (if (not (rk-partial? rkc))
1666	      (let ((cs (rk-current-seq rkc)))
1667		(if (and
1668		     (= (length (cadr cs)) 1)
1669		     (not (= (length (car (car cs))) 1)))
1670		    (latin-commit lc)
1671		    ;; reset invalid sequence
1672		    (latin-context-flush lc))))
1673	  ;; reset invalid sequence
1674	  (if res
1675	      (latin-context-flush lc))))))))
1676
1677(define dead-keys?
1678  (lambda (key)
1679    (if (and
1680	 (symbol? key)
1681	 (> (string-length (symbol->string key)) 5))
1682	(let ((keysym-head
1683	       (string-list-concat
1684		(list-head (reverse (string-to-list (symbol->string key))) 5))))
1685	  (if (string=? keysym-head "-daed") ;;reverse
1686	      #t
1687	      #f))
1688	#f)))
1689
1690(define latin-proc-raw-state
1691  (lambda (lc key state)
1692    (cond
1693     ((or
1694       (eq? 'Multi_key key)
1695       (dead-keys? key))
1696      (latin-context-set-composing?! lc #t)
1697      (latin-context-set-raw-commit! lc #f)
1698      (latin-proc-composing-state lc key state))
1699     (else
1700      (latin-commit-raw lc)))))
1701
1702(define latin-press-key-handler
1703  (lambda (lc key state)
1704    (if (ichar-control? key)
1705	(im-commit-raw lc)
1706	(if (latin-context-composing? lc)
1707	    (latin-proc-composing-state lc key state)
1708	    (latin-proc-raw-state lc key state)))
1709    (latin-update-preedit lc)))
1710
1711(define latin-release-key-handler
1712  (lambda (lc key state)
1713    (if (or (ichar-control? key)
1714	    (not (latin-context-composing? lc)))
1715	;; don't discard key release event for apps
1716	(latin-commit-raw lc))))
1717
1718(define latin-reset-handler
1719  (lambda (lc)
1720    (latin-context-flush lc)))
1721
1722(define latin-focus-in-handler
1723  (lambda (lc)
1724    #f))
1725
1726(define latin-focus-out-handler
1727  (lambda (lc)
1728    (latin-context-flush lc)
1729    (im-clear-preedit lc)
1730    (im-update-preedit lc)))
1731
1732(define latin-place-handler
1733  (lambda (lc)
1734    (im-clear-preedit lc)
1735    (im-update-preedit lc)))
1736
1737(define latin-displace-handler
1738  (lambda (lc)
1739    (let* ((rkc (latin-context-rk-context lc))
1740	   (pend (rk-pending rkc)))
1741      (if pend
1742	  (im-commit lc pend))
1743      (latin-context-flush lc))))
1744
1745(latin-configure-widgets)
1746
1747(register-im
1748 'latin
1749 ""
1750 "UTF-8"
1751 (N_ "Latin characters")
1752 (N_ "Latin characters mainly used for Latin and Germanic languages")
1753 #f
1754 latin-init-handler
1755 #f
1756 context-mode-handler
1757 latin-press-key-handler
1758 latin-release-key-handler
1759 latin-reset-handler
1760 #f
1761 #f
1762 context-prop-activate-handler
1763 #f
1764 latin-focus-in-handler
1765 latin-focus-out-handler
1766 latin-place-handler
1767 latin-displace-handler
1768)
1769