* egg-com.el (ccl-decode-fixed-euc-jp): Make it XEmacs compatible.
[elisp/tamago.git] / its / hira.el
1 ;;; its/hira.el --- Hiragana Input in Egg Input Method Architecture
2
3 ;; Copyright (C) 1999, 2000 Free Software Foundation, Inc
4
5 ;; Author: NIIBE Yutaka <gniibe@chroot.org>
6
7 ;; Maintainer: TOMURA Satoru <tomura@etl.go.jp>
8
9 ;; This file is part of EGG.
10
11 ;; EGG is free software; you can redistribute it and/or modify
12 ;; it under the terms of the GNU General Public License as published by
13 ;; the Free Software Foundation; either version 2, or (at your option)
14 ;; any later version.
15
16 ;; EGG is distributed in the hope that it will be useful,
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19 ;; GNU General Public License for more details.
20
21 ;; You should have received a copy of the GNU General Public License
22 ;; along with GNU Emacs; see the file COPYING.  If not, write to the
23 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
24 ;; Boston, MA 02111-1307, USA.
25
26 ;;; Commentary:
27 ;;
28 ;; Symbol input is desined by jiro@math.keio.ac.jp (TANAKA Jiro)
29 ;; This file is based on the rules of its/hira.el in Mule-2.3 distribution.
30 ;;
31
32 ;;; Code:
33
34 (eval-when-compile
35   (require 'its)
36   (require 'cl))
37
38 (eval-when (compile)
39   (defconst its-compaction-enable t))
40
41 (defgroup hira nil
42   "Hiragana Input Method"
43   :group 'its)
44
45 (defvar its-hira-enable-zenkaku-alphabet
46   (if (boundp 'its-enable-fullwidth-alphabet)
47       its-enable-fullwidth-alphabet
48     t)
49   "*Enable Zenkaku alphabet")
50
51 (defcustom its-hira-enable-double-n t
52   "*Enable \"nn\" input for \"\e$B$s\e(B\" "
53   :group 'hira :type 'boolean)
54
55 (defcustom its-hira-period "\e$B!#\e(B" 
56   "* .(\e$B%T%j%*%I\e(B)\e$B$rF~NO$7$?$H$-$N6gE@$NJ8;z\e(B: \"\e$B!#\e(B\"  \". \" \"\e$B!%\e(B\""
57   :group 'hira :type 'string)
58
59 (defcustom its-hira-comma  "\e$B!"\e(B"
60  "* ,(\e$B%3%s%^\e(B)\e$B$rF~NO$7$?$H$-$NFIE@$NJ8;z\e(B: \"\e$B!"\e(B\" \", \" \"\e$B!$\e(B\""
61   :group 'hira :type 'string)
62
63 (defcustom its-hira-open-bracket  "\e$B!V\e(B"
64  "* [ \e$B$rF~NO$7$?$H$-$N$+$.3g8L3+$1$NJ8;z\e(B: \"\e$B!V\e(B\" \"\e$B!N\e(B\""
65   :group 'hira :type 'string)
66
67 (defcustom its-hira-close-bracket "\e$B!W\e(B"
68  "* ] \e$B$rF~NO$7$?$H$-$N$+$.3g8LJD$8$NJ8;z\e(B: \"\e$B!W\e(B\" \"\e$B!O\e(B\""
69   :group 'hira :type 'string)
70
71 (defcustom its-hira-horizontal  "\e$B!<\e(B"
72   "* - \e$B$rF~NO$7$?$H$-$ND92;5-9f$NJ8;z\e(B: \"\e$B!<\e(B\" \"\e$B!]\e(B\""
73   :group 'hira :type 'string)
74
75 (define-its-state-machine its-hira-map
76   "roma-kana" "\e$B$"\e(B" Japanese
77   "Map for Romaji-Hiragana translation. (Japanese)"
78
79   (defconst its-zenkaku-escape "Z")  ;; Escape character to Zenkaku inputs
80   (defconst its-hankaku-escape "~")  ;; Escape character to Hankaku inputs
81
82   (its-defrule-select-mode-temporally "q" downcase)
83   (its-defrule-select-mode-temporally "Q" zenkaku-downcase)
84
85 ;;; k      k
86 ;;; kk     \e$B$C\e(Bk
87 ;;; kka    \e$B$C$+\e(B
88 ;;;
89 ;;; kkk    \e$B$C\e(Bk DING!
90
91   (its-defrule "tch"  "\e$B$C\e(B" -2)
92
93 ;;; \e$B!V$s!W$NF~NO\e(B
94
95   (dolist (q1 '("b" "m" "p"))
96     (its-defrule (concat "m" q1) "\e$B$s\e(B" -1))
97
98   (its-defrule* "n"  "\e$B$s\e(B")
99   (its-defrule  "n'" "\e$B$s\e(B")
100   (its-defrule  "N"  "\e$B$s\e(B")
101
102   (let ((small '"x" ))
103     (its-defrule (concat small "a") "\e$B$!\e(B")
104     (its-defrule (concat small "i") "\e$B$#\e(B")
105     (its-defrule (concat small "u") "\e$B$%\e(B")
106     (its-defrule (concat small "e") "\e$B$'\e(B")
107     (its-defrule (concat small "o") "\e$B$)\e(B")
108     (its-defrule (concat small "ya") "\e$B$c\e(B")
109     (its-defrule (concat small "yu") "\e$B$e\e(B")
110     (its-defrule (concat small "yo") "\e$B$g\e(B")
111     (its-defrule (concat small "tu") "\e$B$C\e(B")
112     (its-defrule (concat small "tsu") "\e$B$C\e(B")
113     (its-defrule (concat small "wa") "\e$B$n\e(B")
114     )
115
116   (its-defrule   "a"    "\e$B$"\e(B")
117   (its-defrule   "i"    "\e$B$$\e(B")
118   (its-defrule   "u"    "\e$B$&\e(B")
119   (its-defrule   "e"    "\e$B$(\e(B")
120   (its-defrule   "o"    "\e$B$*\e(B")
121
122   (dolist (k '(("ka"  "\e$B$+\e(B") ("ki"  "\e$B$-\e(B") ("ku"  "\e$B$/\e(B") ("ke"  "\e$B$1\e(B") ("ko"  "\e$B$3\e(B")
123                ("kya" "\e$B$-$c\e(B") ("kyu"  "\e$B$-$e\e(B") ("kye"  "\e$B$-$'\e(B") ("kyo"  "\e$B$-$g\e(B")))
124     (its-defrule (car k) (cadr k))
125     (its-defrule (concat "k" (car k)) (concat "\e$B$C\e(B" (cadr k))))
126   (its-defoutput "kk" "\e$B$C\e(Bk")
127   (its-defoutput "kky" "\e$B$C\e(Bky")
128
129   (dolist (s '(("sa"  "\e$B$5\e(B") ("si"  "\e$B$7\e(B") ("su"  "\e$B$9\e(B") ("se"  "\e$B$;\e(B") ("so"  "\e$B$=\e(B")
130                ("sya"  "\e$B$7$c\e(B") ("syu"  "\e$B$7$e\e(B") ("sye"  "\e$B$7$'\e(B") ("syo"  "\e$B$7$g\e(B")
131                ("sha"  "\e$B$7$c\e(B") ("shi"  "\e$B$7\e(B") ("shu"  "\e$B$7$e\e(B") ("she"  "\e$B$7$'\e(B")
132                ("sho"  "\e$B$7$g\e(B")))
133     (its-defrule (car s) (cadr s))
134     (its-defrule (concat "s" (car s)) (concat "\e$B$C\e(B" (cadr s))))
135   (its-defoutput "ss" "\e$B$C\e(Bs")
136   (its-defoutput "ssy" "\e$B$C\e(Bsy")
137   (its-defoutput "ssh" "\e$B$C\e(Bsh")
138
139   (dolist (T '(("ta"  "\e$B$?\e(B") ("ti"  "\e$B$A\e(B") ("tu"  "\e$B$D\e(B") ("te"  "\e$B$F\e(B") ("to"  "\e$B$H\e(B")
140                ("tya"  "\e$B$A$c\e(B") ("tyi"  "\e$B$F$#\e(B") ("tyu"  "\e$B$A$e\e(B") ("tye"  "\e$B$A$'\e(B")
141                ("tyo"  "\e$B$A$g\e(B") ("tsu"  "\e$B$D\e(B")))
142     (its-defrule (car T) (cadr T))
143     (its-defrule (concat "t" (car T)) (concat "\e$B$C\e(B" (cadr T))))
144   (its-defoutput "tt" "\e$B$C\e(Bt")
145   (its-defoutput "tty" "\e$B$C\e(Bty")
146   (its-defoutput "tts" "\e$B$C\e(Bts")
147
148   (dolist (c '(("cha"  "\e$B$A$c\e(B") ("chi"  "\e$B$A\e(B") ("chu"  "\e$B$A$e\e(B")
149                ("che"  "\e$B$A$'\e(B") ("cho"  "\e$B$A$g\e(B")))
150     (its-defrule (car c) (cadr c))
151     (its-defrule (concat "c" (car c)) (concat "\e$B$C\e(B" (cadr c))))
152   (its-defoutput "cc" "\e$B$C\e(Bc")
153   (its-defoutput "cch" "\e$B$C\e(Bch")
154
155   (dolist (h '(("ha"  "\e$B$O\e(B") ("hi"  "\e$B$R\e(B") ("hu"  "\e$B$U\e(B") ("he"  "\e$B$X\e(B") ("ho"  "\e$B$[\e(B")
156                ("hya"  "\e$B$R$c\e(B") ("hyu"  "\e$B$R$e\e(B") ("hye"  "\e$B$R$'\e(B") ("hyo"  "\e$B$R$g\e(B")))
157     (its-defrule (car h) (cadr h))
158     (its-defrule (concat "h" (car h)) (concat "\e$B$C\e(B" (cadr h))))
159   (its-defoutput "hh" "\e$B$C\e(Bh")
160   (its-defoutput "hhy" "\e$B$C\e(Bhy")
161
162   (dolist (f '(("fa"  "\e$B$U$!\e(B") ("fi"  "\e$B$U$#\e(B") ("fu"  "\e$B$U\e(B") ("fe"  "\e$B$U$'\e(B")
163                ("fo"  "\e$B$U$)\e(B")))
164     (its-defrule (car f) (cadr f))
165     (its-defrule (concat "f" (car f)) (concat "\e$B$C\e(B" (cadr f))))
166   (its-defoutput "ff" "\e$B$C\e(Bf")
167
168   (dolist (r '(("ra"  "\e$B$i\e(B") ("ri"  "\e$B$j\e(B") ("ru"  "\e$B$k\e(B") ("re"  "\e$B$l\e(B") ("ro"  "\e$B$m\e(B")
169                ("rya"  "\e$B$j$c\e(B") ("ryu"  "\e$B$j$e\e(B") ("rye"  "\e$B$j$'\e(B") ("ryo"  "\e$B$j$g\e(B")))
170     (its-defrule (car r) (cadr r))
171     (its-defrule (concat "r" (car r)) (concat "\e$B$C\e(B" (cadr r))))
172   (its-defoutput "rr" "\e$B$C\e(Br")
173   (its-defoutput "rry" "\e$B$C\e(Bry")
174
175   (dolist (l '(("la"  "\e$B$i\e(B") ("li"  "\e$B$j\e(B") ("lu"  "\e$B$k\e(B") ("le"  "\e$B$l\e(B") ("lo"  "\e$B$m\e(B")
176                ("lya"  "\e$B$j$c\e(B") ("lyu"  "\e$B$j$e\e(B") ("lye"  "\e$B$j$'\e(B") ("lyo"  "\e$B$j$g\e(B")))
177     (its-defrule (car l) (cadr l))
178     (its-defrule (concat "l" (car l)) (concat "\e$B$C\e(B" (cadr l))))
179   (its-defoutput "ll" "\e$B$C\e(Bl")
180   (its-defoutput "lly" "\e$B$C\e(Bly")
181
182   (dolist (g '(("ga"  "\e$B$,\e(B") ("gi"  "\e$B$.\e(B") ("gu"  "\e$B$0\e(B") ("ge"  "\e$B$2\e(B") ("go"  "\e$B$4\e(B")
183                ("gya"  "\e$B$.$c\e(B") ("gyu"  "\e$B$.$e\e(B") ("gye"  "\e$B$.$'\e(B") ("gyo"  "\e$B$.$g\e(B")))
184     (its-defrule (car g) (cadr g))
185     (its-defrule (concat "g" (car g)) (concat "\e$B$C\e(B" (cadr g))))
186   (its-defoutput "gg" "\e$B$C\e(Bg")
187   (its-defoutput "ggy" "\e$B$C\e(Bgy")
188
189   (dolist (z '(("za"  "\e$B$6\e(B") ("zi"  "\e$B$8\e(B") ("zu"  "\e$B$:\e(B") ("ze"  "\e$B$<\e(B") ("zo"  "\e$B$>\e(B")
190                ("zya"  "\e$B$8$c\e(B") ("zyu"  "\e$B$8$e\e(B") ("zye"  "\e$B$8$'\e(B") ("zyo"  "\e$B$8$g\e(B")))
191     (its-defrule (car z) (cadr z))
192     (its-defrule (concat "z" (car z)) (concat "\e$B$C\e(B" (cadr z))))
193   (its-defoutput "zz" "\e$B$C\e(Bz")
194   (its-defoutput "zzy" "\e$B$C\e(Bzy")
195
196   (dolist (j '(("ja"  "\e$B$8$c\e(B") ("ji"  "\e$B$8\e(B") ("ju"  "\e$B$8$e\e(B") ("je"  "\e$B$8$'\e(B")
197                ("jo"  "\e$B$8$g\e(B") ("jya"  "\e$B$8$c\e(B") ("jyu"  "\e$B$8$e\e(B") ("jye"  "\e$B$8$'\e(B")
198                ("jyo"  "\e$B$8$g\e(B")))
199     (its-defrule (car j) (cadr j))
200     (its-defrule (concat "j" (car j)) (concat "\e$B$C\e(B" (cadr j))))
201   (its-defoutput "jj" "\e$B$C\e(Bj")
202   (its-defoutput "jjy" "\e$B$C\e(Bjy")
203
204   (dolist (d '(("da"  "\e$B$@\e(B") ("di"  "\e$B$B\e(B") ("du"  "\e$B$E\e(B") ("de"  "\e$B$G\e(B") ("do"  "\e$B$I\e(B")
205                ("dya"  "\e$B$B$c\e(B") ("dyi"  "\e$B$G$#\e(B") ("dyu"  "\e$B$B$e\e(B") ("dye"  "\e$B$B$'\e(B")
206                ("dyo"  "\e$B$B$g\e(B")))
207     (its-defrule (car d) (cadr d))
208     (its-defrule (concat "d" (car d)) (concat "\e$B$C\e(B" (cadr d))))
209   (its-defoutput "dd" "\e$B$C\e(Bd")
210   (its-defoutput "ddy" "\e$B$C\e(Bdy")
211
212   (dolist (b '(("ba"  "\e$B$P\e(B") ("bi"  "\e$B$S\e(B") ("bu"  "\e$B$V\e(B") ("be"  "\e$B$Y\e(B") ("bo"  "\e$B$\\e(B")
213                ("bya"  "\e$B$S$c\e(B") ("byu"  "\e$B$S$e\e(B") ("bye"  "\e$B$S$'\e(B") ("byo"  "\e$B$S$g\e(B")))
214     (its-defrule (car b) (cadr b))
215     (its-defrule (concat "b" (car b)) (concat "\e$B$C\e(B" (cadr b))))
216   (its-defoutput "bb" "\e$B$C\e(Bb")
217   (its-defoutput "bby" "\e$B$C\e(Bby")
218
219   (dolist (p '(("pa"  "\e$B$Q\e(B") ("pi"  "\e$B$T\e(B") ("pu"  "\e$B$W\e(B") ("pe"  "\e$B$Z\e(B") ("po"   "\e$B$]\e(B")
220                ("pya"  "\e$B$T$c\e(B") ("pyu"  "\e$B$T$e\e(B") ("pye"  "\e$B$T$'\e(B") ("pyo"  "\e$B$T$g\e(B")))
221     (its-defrule (car p) (cadr p))
222     (its-defrule (concat "p" (car p)) (concat "\e$B$C\e(B" (cadr p))))
223   (its-defoutput "pp" "\e$B$C\e(Bp")
224   (its-defoutput "ppy" "\e$B$C\e(Bpy")
225
226   (dolist (v '(("va" "\e$B%t$!\e(B") ("vi" "\e$B%t$#\e(B") ("vu" "\e$B%t\e(B") ("ve" "\e$B%t$'\e(B")
227                ("vo" "\e$B%t$)\e(B")))
228     (its-defrule (car v) (cadr v))
229     (its-defrule (concat "v" (car v)) (concat "\e$B$C\e(B" (cadr v))))
230   (its-defoutput "vv" "\e$B$C\e(Bv")
231
232   (its-defrule   "ma"   "\e$B$^\e(B")
233   (its-defrule   "mi"   "\e$B$_\e(B")
234   (its-defrule   "mu"   "\e$B$`\e(B")
235   (its-defrule   "me"   "\e$B$a\e(B")
236   (its-defrule   "mo"   "\e$B$b\e(B")
237   (its-defrule   "mya"  "\e$B$_$c\e(B")
238   (its-defrule   "myu"  "\e$B$_$e\e(B")
239   (its-defrule   "mye"  "\e$B$_$'\e(B")
240   (its-defrule   "myo"  "\e$B$_$g\e(B")
241   (its-defrule   "ya"   "\e$B$d\e(B")
242   (its-defrule   "yi"   "\e$B$$\e(B")
243   (its-defrule   "yu"   "\e$B$f\e(B")
244   (its-defrule   "yo"   "\e$B$h\e(B")
245   (its-defrule   "ye"   "\e$B$$$'\e(B")
246   (its-defrule   "wa"   "\e$B$o\e(B")
247   (its-defrule   "wi"   "\e$B$p\e(B")
248   (its-defrule   "wu"   "\e$B$&\e(B")
249   (its-defrule   "we"   "\e$B$q\e(B")
250   (its-defrule   "wo"   "\e$B$r\e(B")
251
252   (its-defrule   "kwa"  "\e$B$/$n\e(B")
253   (its-defrule   "kwi"  "\e$B$/$#\e(B")
254   (its-defrule   "kwu"  "\e$B$/\e(B")
255   (its-defrule   "kwe"  "\e$B$/$'\e(B")
256   (its-defrule   "kwo"  "\e$B$/$)\e(B")
257   (its-defrule   "gwa"  "\e$B$0$n\e(B")
258   (its-defrule   "gwi"  "\e$B$0$#\e(B")
259   (its-defrule   "gwu"  "\e$B$0\e(B")
260   (its-defrule   "gwe"  "\e$B$0$'\e(B")
261   (its-defrule   "gwo"  "\e$B$0$)\e(B")
262   (its-defrule   "tsa"  "\e$B$D$!\e(B")
263   (its-defrule   "tsi"  "\e$B$D$#\e(B")
264   (its-defrule   "tse"  "\e$B$D$'\e(B")
265   (its-defrule   "tso"  "\e$B$D$)\e(B")
266
267   (its-defrule   "na"   "\e$B$J\e(B")
268   (its-defrule   "ni"   "\e$B$K\e(B")
269   (its-defrule   "nu"   "\e$B$L\e(B")
270   (its-defrule   "ne"   "\e$B$M\e(B")
271   (its-defrule   "no"   "\e$B$N\e(B")
272   (its-defrule   "nya"  "\e$B$K$c\e(B")
273   (its-defrule   "nyu"  "\e$B$K$e\e(B")
274   (its-defrule   "nye"  "\e$B$K$'\e(B")
275   (its-defrule   "nyo"  "\e$B$K$g\e(B")
276
277   (its-defrule   "xka"  "\e$B%u\e(B")
278   (its-defrule   "xke"  "\e$B%v\e(B")
279   (its-defrule   "xti"  "\e$B$F$#\e(B")
280   (its-defrule   "xdi"  "\e$B$G$#\e(B")
281   (its-defrule   "xdu"  "\e$B$I$%\e(B")
282   (its-defrule   "xde"  "\e$B$G$'\e(B")
283   (its-defrule   "xdo"  "\e$B$I$)\e(B")
284   (its-defrule   "xwi"  "\e$B$&$#\e(B")
285   (its-defrule   "xwe"  "\e$B$&$'\e(B")
286   (its-defrule   "xwo"  "\e$B$&$)\e(B")
287
288 ;;;
289 ;;; Zenkaku inputs
290 ;;;
291
292   (its-defrule (concat its-zenkaku-escape "0") "\e$B#0\e(B")
293   (its-defrule (concat its-zenkaku-escape "1") "\e$B#1\e(B")
294   (its-defrule (concat its-zenkaku-escape "2") "\e$B#2\e(B")
295   (its-defrule (concat its-zenkaku-escape "3") "\e$B#3\e(B")
296   (its-defrule (concat its-zenkaku-escape "4") "\e$B#4\e(B")
297   (its-defrule (concat its-zenkaku-escape "5") "\e$B#5\e(B")
298   (its-defrule (concat its-zenkaku-escape "6") "\e$B#6\e(B")
299   (its-defrule (concat its-zenkaku-escape "7") "\e$B#7\e(B")
300   (its-defrule (concat its-zenkaku-escape "8") "\e$B#8\e(B")
301   (its-defrule (concat its-zenkaku-escape "9") "\e$B#9\e(B")
302
303   (its-defrule (concat its-zenkaku-escape "A") "\e$B#A\e(B")
304   (its-defrule (concat its-zenkaku-escape "B") "\e$B#B\e(B")
305   (its-defrule (concat its-zenkaku-escape "C") "\e$B#C\e(B")
306   (its-defrule (concat its-zenkaku-escape "D") "\e$B#D\e(B")
307   (its-defrule (concat its-zenkaku-escape "E") "\e$B#E\e(B")
308   (its-defrule (concat its-zenkaku-escape "F") "\e$B#F\e(B")
309   (its-defrule (concat its-zenkaku-escape "G") "\e$B#G\e(B")
310   (its-defrule (concat its-zenkaku-escape "H") "\e$B#H\e(B")
311   (its-defrule (concat its-zenkaku-escape "I") "\e$B#I\e(B")
312   (its-defrule (concat its-zenkaku-escape "J") "\e$B#J\e(B")
313   (its-defrule (concat its-zenkaku-escape "K") "\e$B#K\e(B")
314   (its-defrule (concat its-zenkaku-escape "L") "\e$B#L\e(B")
315   (its-defrule (concat its-zenkaku-escape "M") "\e$B#M\e(B")
316   (its-defrule (concat its-zenkaku-escape "N") "\e$B#N\e(B")
317   (its-defrule (concat its-zenkaku-escape "O") "\e$B#O\e(B")
318   (its-defrule (concat its-zenkaku-escape "P") "\e$B#P\e(B")
319   (its-defrule (concat its-zenkaku-escape "Q") "\e$B#Q\e(B")
320   (its-defrule (concat its-zenkaku-escape "R") "\e$B#R\e(B")
321   (its-defrule (concat its-zenkaku-escape "S") "\e$B#S\e(B")
322   (its-defrule (concat its-zenkaku-escape "T") "\e$B#T\e(B")
323   (its-defrule (concat its-zenkaku-escape "U") "\e$B#U\e(B")
324   (its-defrule (concat its-zenkaku-escape "V") "\e$B#V\e(B")
325   (its-defrule (concat its-zenkaku-escape "W") "\e$B#W\e(B")
326   (its-defrule (concat its-zenkaku-escape "X") "\e$B#X\e(B")
327   (its-defrule (concat its-zenkaku-escape "Y") "\e$B#Y\e(B")
328   (its-defrule (concat its-zenkaku-escape "Z") "\e$B#Z\e(B")
329
330   (its-defrule (concat its-zenkaku-escape "a") "\e$B#a\e(B")
331   (its-defrule (concat its-zenkaku-escape "b") "\e$B#b\e(B")
332   (its-defrule (concat its-zenkaku-escape "c") "\e$B#c\e(B")
333   (its-defrule (concat its-zenkaku-escape "d") "\e$B#d\e(B")
334   (its-defrule (concat its-zenkaku-escape "e") "\e$B#e\e(B")
335   (its-defrule (concat its-zenkaku-escape "f") "\e$B#f\e(B")
336   (its-defrule (concat its-zenkaku-escape "g") "\e$B#g\e(B")
337   (its-defrule (concat its-zenkaku-escape "h") "\e$B#h\e(B")
338   (its-defrule (concat its-zenkaku-escape "i") "\e$B#i\e(B")
339   (its-defrule (concat its-zenkaku-escape "j") "\e$B#j\e(B")
340   (its-defrule (concat its-zenkaku-escape "k") "\e$B#k\e(B")
341   (its-defrule (concat its-zenkaku-escape "l") "\e$B#l\e(B")
342   (its-defrule (concat its-zenkaku-escape "m") "\e$B#m\e(B")
343   (its-defrule (concat its-zenkaku-escape "n") "\e$B#n\e(B")
344   (its-defrule (concat its-zenkaku-escape "o") "\e$B#o\e(B")
345   (its-defrule (concat its-zenkaku-escape "p") "\e$B#p\e(B")
346   (its-defrule (concat its-zenkaku-escape "q") "\e$B#q\e(B")
347   (its-defrule (concat its-zenkaku-escape "r") "\e$B#r\e(B")
348   (its-defrule (concat its-zenkaku-escape "s") "\e$B#s\e(B")
349   (its-defrule (concat its-zenkaku-escape "t") "\e$B#t\e(B")
350   (its-defrule (concat its-zenkaku-escape "u") "\e$B#u\e(B")
351   (its-defrule (concat its-zenkaku-escape "v") "\e$B#v\e(B")
352   (its-defrule (concat its-zenkaku-escape "w") "\e$B#w\e(B")
353   (its-defrule (concat its-zenkaku-escape "x") "\e$B#x\e(B")
354   (its-defrule (concat its-zenkaku-escape "y") "\e$B#y\e(B")
355   (its-defrule (concat its-zenkaku-escape "z") "\e$B#z\e(B")
356
357   (its-defrule (concat its-zenkaku-escape " ")  "\e$B!!\e(B")
358   (its-defrule (concat its-zenkaku-escape "!")  "\e$B!*\e(B")
359   (its-defrule (concat its-zenkaku-escape "@")  "\e$B!w\e(B")
360   (its-defrule (concat its-zenkaku-escape "#")  "\e$B!t\e(B")
361   (its-defrule (concat its-zenkaku-escape "$")  "\e$B!p\e(B")
362   (its-defrule (concat its-zenkaku-escape "%")  "\e$B!s\e(B")
363   (its-defrule (concat its-zenkaku-escape "^")  "\e$B!0\e(B")
364   (its-defrule (concat its-zenkaku-escape "&")  "\e$B!u\e(B")
365   (its-defrule (concat its-zenkaku-escape "*")  "\e$B!v\e(B")
366   (its-defrule (concat its-zenkaku-escape "(")  "\e$B!J\e(B")
367   (its-defrule (concat its-zenkaku-escape ")")  "\e$B!K\e(B")
368   (its-defrule (concat its-zenkaku-escape "-")  "\e$B!]\e(B")
369   (its-defrule (concat its-zenkaku-escape "=")  "\e$B!a\e(B")
370   (its-defrule (concat its-zenkaku-escape "`")  "\e$B!.\e(B")
371   (its-defrule (concat its-zenkaku-escape "\\") "\e$B!o\e(B")
372   (its-defrule (concat its-zenkaku-escape "|")  "\e$B!C\e(B")
373   (its-defrule (concat its-zenkaku-escape "_")  "\e$B!2\e(B")
374   (its-defrule (concat its-zenkaku-escape "+")  "\e$B!\\e(B")
375   (its-defrule (concat its-zenkaku-escape "~")  "\e$B!1\e(B")
376   (its-defrule (concat its-zenkaku-escape "[")  "\e$B!N\e(B")
377   (its-defrule (concat its-zenkaku-escape "]")  "\e$B!O\e(B")
378   (its-defrule (concat its-zenkaku-escape "{")  "\e$B!P\e(B")
379   (its-defrule (concat its-zenkaku-escape "}")  "\e$B!Q\e(B")
380   (its-defrule (concat its-zenkaku-escape ":")  "\e$B!'\e(B")
381   (its-defrule (concat its-zenkaku-escape ";")  "\e$B!(\e(B")
382   (its-defrule (concat its-zenkaku-escape "\"") "\e$B!I\e(B")
383   (its-defrule (concat its-zenkaku-escape "'")  "\e$B!G\e(B")
384   (its-defrule (concat its-zenkaku-escape "<")  "\e$B!c\e(B")
385   (its-defrule (concat its-zenkaku-escape ">")  "\e$B!d\e(B")
386   (its-defrule (concat its-zenkaku-escape "?")  "\e$B!)\e(B")
387   (its-defrule (concat its-zenkaku-escape "/")  "\e$B!?\e(B")
388   (its-defrule (concat its-zenkaku-escape ",")  "\e$B!$\e(B")
389   (its-defrule (concat its-zenkaku-escape ".")  "\e$B!%\e(B")
390
391 ;;;
392 ;;; Hankaku inputs
393 ;;;
394
395   (dolist (digit '( "1"  "2"  "3"  "4" "5"  "6"  "7"  "8"  "9"  "0" ))
396     (its-defrule (concat its-hankaku-escape digit)  digit))
397
398   (dolist (symbol '( " "  "!"  "@"  "#"  "$"  "%"  "^"  "&"  "*"  "("  ")"
399                      "-"  "="  "`"  "\\" "|"  "_"  "+"  "~" "["  "]"  "{"  "}"
400                      ":"  ";"  "\"" "'"  "<"  ">"  "?"  "/"  ","  "." ))
401     (its-defrule (concat its-hankaku-escape symbol) symbol))
402
403   (dolist (downcase '("a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n"
404                       "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"))
405     (its-defrule (concat its-hankaku-escape downcase) downcase))
406
407   (dolist (upcase    '("A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N"
408                        "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z"))
409     (its-defrule (concat its-hankaku-escape upcase) upcase))
410
411 ;; SYMBOL Input
412   (its-defrule   "z1"   "\e$B!{\e(B")     (its-defrule   "z!"   "\e$B!|\e(B")
413   (its-defrule   "z2"   "\e$B"&\e(B")     (its-defrule   "z@"   "\e$B"'\e(B")
414   (its-defrule   "z3"   "\e$B"$\e(B")     (its-defrule   "z#"   "\e$B"%\e(B")
415   (its-defrule   "z4"   "\e$B""\e(B")     (its-defrule   "z$"   "\e$B"#\e(B")
416   (its-defrule   "z5"   "\e$B!~\e(B")     (its-defrule   "z%"   "\e$B"!\e(B")
417   (its-defrule   "z6"   "\e$B!y\e(B")     (its-defrule   "z^"   "\e$B!z\e(B")
418   (its-defrule   "z7"   "\e$B!}\e(B")     (its-defrule   "z&"   "\e$B!r\e(B")
419   (its-defrule   "z8"   "\e$B!q\e(B")     (its-defrule   "z*"   "\e$B!_\e(B")
420   (its-defrule   "z9"   "\e$B!i\e(B")     (its-defrule   "z("   "\e$B!Z\e(B")
421   (its-defrule   "z0"   "\e$B!j\e(B")     (its-defrule   "z)"   "\e$B![\e(B")
422   (its-defrule   "z-"   "\e$B!A\e(B")     (its-defrule   "z_"   "\e$B!h\e(B")
423   (its-defrule   "z="   "\e$B!b\e(B")     (its-defrule   "z+"   "\e$B!^\e(B")
424   (its-defrule   "z\\"  "\e$B!@\e(B")     (its-defrule   "z|"   "\e$B!B\e(B")
425   (its-defrule   "z`"   "\e$B!-\e(B")     (its-defrule   "z~"   "\e$B!/\e(B")
426
427   (its-defrule   "zq"   "\e$B!T\e(B")     (its-defrule   "zQ"   "\e$B!R\e(B")
428   (its-defrule   "zw"   "\e$B!U\e(B")     (its-defrule   "zW"   "\e$B!S\e(B")
429                                         ; e
430   (its-defrule   "zr"   "\e$B!9\e(B")     (its-defrule   "zR"   "\e$B!8\e(B")
431   (its-defrule   "zt"   "\e$B!:\e(B")     (its-defrule   "zT"   "\e$B!x\e(B")
432                                         ; y u i o
433   (its-defrule   "zp"   "\e$B")\e(B")     (its-defrule   "zP"   "\e$B",\e(B")
434   (its-defrule   "z["   "\e$B!X\e(B")     (its-defrule   "z{"   "\e$B!L\e(B")
435   (its-defrule   "z]"   "\e$B!Y\e(B")     (its-defrule   "z}"   "\e$B!M\e(B")
436
437                                         ; a
438   (its-defrule   "zs"   "\e$B!3\e(B")     (its-defrule   "zS"   "\e$B!4\e(B")
439   (its-defrule   "zd"   "\e$B!5\e(B")     (its-defrule   "zD"   "\e$B!6\e(B")
440   (its-defrule   "zf"   "\e$B!7\e(B")     (its-defrule   "zF"   "\e$B"*\e(B")
441   (its-defrule   "zg"   "\e$B!>\e(B")     (its-defrule   "zG"   "\e$B!=\e(B")
442   (its-defrule   "zh"   "\e$B"+\e(B")
443   (its-defrule   "zj"   "\e$B"-\e(B")
444   (its-defrule   "zk"   "\e$B",\e(B")
445   (its-defrule   "zl"   "\e$B"*\e(B")
446   (its-defrule   "z;"   "\e$B!+\e(B")     (its-defrule   "z:"   "\e$B!,\e(B")
447   (its-defrule   "z\'"  "\e$B!F\e(B")     (its-defrule   "z\""  "\e$B!H\e(B")
448
449                                         ; z
450   (its-defrule   "zx"   ":-")   (its-defrule   "zX"   ":-)")
451   (its-defrule   "zc"   "\e$B!;\e(B")     (its-defrule   "zC"   "\e$B!n\e(B")
452   (its-defrule   "zv"   "\e$B"(\e(B")     (its-defrule   "zV"   "\e$B!`\e(B")
453   (its-defrule   "zb"   "\e$B!k\e(B")     (its-defrule   "zB"   "\e$B"+\e(B")
454   (its-defrule   "zn"   "\e$B!l\e(B")     (its-defrule   "zN"   "\e$B"-\e(B")
455   (its-defrule   "zm"   "\e$B!m\e(B")     (its-defrule   "zM"   "\e$B".\e(B")
456   (its-defrule   "z,"   "\e$B!E\e(B")     (its-defrule   "z<"   "\e$B!e\e(B")
457   (its-defrule   "z."   "\e$B!D\e(B")     (its-defrule   "z>"   "\e$B!f\e(B")
458   (its-defrule   "z/"   "\e$B!&\e(B")     (its-defrule   "z?"   "\e$B!g\e(B")
459   )
460
461 (define-its-state-machine-append its-hira-map
462   (if its-hira-enable-double-n
463       (its-defrule "nn" "\e$B$s\e(B"))
464
465   (its-defrule "-" its-hira-horizontal)
466   (its-defrule "[" its-hira-open-bracket)
467   (its-defrule "]" its-hira-close-bracket)
468   (its-defrule "." its-hira-period)
469   (its-defrule "," its-hira-comma)
470
471   (if its-hira-enable-zenkaku-alphabet
472       (progn
473         (its-defrule   "1"   "\e$B#1\e(B")  (its-defrule   "2"   "\e$B#2\e(B")
474         (its-defrule   "3"   "\e$B#3\e(B")  (its-defrule   "4"   "\e$B#4\e(B")
475         (its-defrule   "5"   "\e$B#5\e(B")  (its-defrule   "6"   "\e$B#6\e(B")
476         (its-defrule   "7"   "\e$B#7\e(B")  (its-defrule   "8"   "\e$B#8\e(B")
477         (its-defrule   "9"   "\e$B#9\e(B")  (its-defrule   "0"   "\e$B#0\e(B")
478         (its-defrule   "!"   "\e$B!*\e(B")  (its-defrule   "@"   "\e$B!w\e(B")
479         (its-defrule   "#"   "\e$B!t\e(B")  (its-defrule   "$"   "\e$B!p\e(B")
480         (its-defrule   "%"   "\e$B!s\e(B")  (its-defrule   "^"   "\e$B!0\e(B")
481         (its-defrule   "&"   "\e$B!u\e(B")  (its-defrule   "*"   "\e$B!v\e(B")
482         (its-defrule   "("   "\e$B!J\e(B")  (its-defrule   ")"   "\e$B!K\e(B")
483         (its-defrule   "="   "\e$B!a\e(B")  (its-defrule   "`"   "\e$B!.\e(B")
484         (its-defrule   "\\"  "\e$B!o\e(B")  (its-defrule   "|"   "\e$B!C\e(B")
485         (its-defrule   "_"   "\e$B!2\e(B")  (its-defrule   "+"   "\e$B!\\e(B")
486         (its-defrule   "{"   "\e$B!P\e(B")  (its-defrule   "}"   "\e$B!Q\e(B")
487         (its-defrule   ":"   "\e$B!'\e(B")  (its-defrule   ";"   "\e$B!(\e(B")
488         (its-defrule   "\""  "\e$B!I\e(B")  (its-defrule   "'"   "\e$B!G\e(B")
489         (its-defrule   "<"   "\e$B!c\e(B")  (its-defrule   ">"   "\e$B!d\e(B")
490         (its-defrule   "?"   "\e$B!)\e(B")  (its-defrule   "/"   "\e$B!?\e(B"))
491     (progn
492       (its-defrule   "1"   "1")  (its-defrule   "2"   "2")
493       (its-defrule   "3"   "3")  (its-defrule   "4"   "4")
494       (its-defrule   "5"   "5")  (its-defrule   "6"   "6")
495       (its-defrule   "7"   "7")  (its-defrule   "8"   "8")
496       (its-defrule   "9"   "9")  (its-defrule   "0"   "0")
497       (its-defrule   "!"   "!")  (its-defrule   "@"   "@")
498       (its-defrule   "#"   "#")  (its-defrule   "$"   "$")
499       (its-defrule   "%"   "%")  (its-defrule   "^"   "^")
500       (its-defrule   "&"   "&")  (its-defrule   "*"   "*")
501       (its-defrule   "("   "(")  (its-defrule   ")"   ")")
502       (its-defrule   "="   "=")  (its-defrule   "`"   "`")
503       (its-defrule   "\\"  "\\") (its-defrule   "|"   "|")
504       (its-defrule   "_"   "_")  (its-defrule   "+"   "+")
505       (its-defrule   "{"   "{")  (its-defrule   "}"   "}")
506       (its-defrule   ":"   ":")  (its-defrule   ";"   ";")
507       (its-defrule   "\""  "\"") (its-defrule   "'"   "'")
508       (its-defrule   "<"   "<")  (its-defrule   ">"   ">")
509       (its-defrule   "?"   "?")  (its-defrule   "/"   "/")))
510   )
511
512 (provide 'its/hira)
513 ;;; its/hira.el ends here.