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