Convert consecutive FSF copyright years to ranges.
[bpt/emacs.git] / leim / quail / japanese.el
CommitLineData
123f4a5e 1;;; japanese.el --- Quail package for inputting Japanese -*-coding: iso-2022-7bit;-*-
24b31c88 2
73b0cd50 3;; Copyright (C) 2001-2011
03ba6797
GM
4;; Free Software Foundation, Inc.
5;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
5df4f04c 6;; 2006, 2007, 2008, 2009, 2010, 2011
698218a2
KH
7;; National Institute of Advanced Industrial Science and Technology (AIST)
8;; Registration Number H14PRO021
24b31c88
KH
9
10;; Keywords: multilingual, input method, Japanese
11
12;; This file is part of GNU Emacs.
13
3d544458 14;; GNU Emacs is free software: you can redistribute it and/or modify
24b31c88 15;; it under the terms of the GNU General Public License as published by
3d544458
GM
16;; the Free Software Foundation, either version 3 of the License, or
17;; (at your option) any later version.
24b31c88
KH
18
19;; GNU Emacs is distributed in the hope that it will be useful,
20;; but WITHOUT ANY WARRANTY; without even the implied warranty of
21;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22;; GNU General Public License for more details.
23
24;; You should have received a copy of the GNU General Public License
3d544458 25;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
24b31c88 26
be567141
PJ
27;;; Commentary:
28
24b31c88
KH
29;;; Code:
30
31(require 'quail)
32(require 'kkc)
33
efc1d64f
KH
34(defvar quail-japanese-use-double-n nil
35 "If non-nil, use type \"nn\" to insert \e$B$s\e(B.")
36
afc53a91
KH
37;; Update Quail translation region while considering Japanese bizarre
38;; translation rules.
24b31c88 39(defun quail-japanese-update-translation (control-flag)
efc1d64f
KH
40 (if (null control-flag)
41 (setq quail-current-str
42 (if (/= (aref quail-current-key 0) ?q)
43 (or quail-current-str quail-current-key)
44 ""))
45 (if (integerp control-flag)
f2b38ae6
KH
46 (let ((keylen (length quail-current-key)))
47 (cond ((= control-flag 0)
48 (setq quail-current-str (aref quail-current-key 0)
49 control-flag t))
50 ((= (aref quail-current-key 0) ?n)
efc1d64f
KH
51 (setq quail-current-str ?\e$B$s\e(B)
52 (if (and quail-japanese-use-double-n
f2b38ae6 53 (> keylen 0)
efc1d64f
KH
54 (= (aref quail-current-key 1) ?n))
55 (setq control-flag t)))
f2b38ae6
KH
56 ((and (> keylen 1)
57 (= (aref quail-current-key 0) (aref quail-current-key 1)))
efc1d64f
KH
58 (setq quail-current-str ?\e$B$C\e(B))
59 (t
60 (setq quail-current-str (aref quail-current-key 0))))
61 (if (integerp control-flag)
62 (setq unread-command-events
f2b38ae6
KH
63 (string-to-list
64 (substring quail-current-key control-flag)))))))
efc1d64f 65 control-flag)
177c0ea7 66
24b31c88
KH
67;; Convert Hiragana <-> Katakana in the current translation region.
68(defun quail-japanese-toggle-kana ()
69 (interactive)
ebe8a0da 70 (setq quail-translating nil)
afc53a91
KH
71 (let ((start (overlay-start quail-conv-overlay))
72 (end (overlay-end quail-conv-overlay)))
bda0f1b3
KH
73 (save-excursion
74 (goto-char start)
75 (if (re-search-forward "\\cH" end t)
76 (japanese-katakana-region start end)
77 (japanese-hiragana-region start end)))
efc1d64f
KH
78 (setq quail-conversion-str
79 (buffer-substring (overlay-start quail-conv-overlay)
80 (overlay-end quail-conv-overlay)))))
24b31c88
KH
81
82;; Convert Hiragana in the current translation region to Kanji by KKC
83;; (Kana Kanji Converter) utility.
84(defun quail-japanese-kanji-kkc ()
85 (interactive)
5f1e183e
KH
86 (when (= (char-before (overlay-end quail-conv-overlay)) ?n)
87 ;; The last char is `n'. We had better convert it to `\e$B$s\e(B'
88 ;; before kana-kanji conversion.
9495add8
KH
89 (goto-char (1- (overlay-end quail-conv-overlay)))
90 (insert ?\e$B$s\e(B)
91 (delete-char 1))
5f1e183e
KH
92 (let* ((from (copy-marker (overlay-start quail-conv-overlay)))
93 (len (- (overlay-end quail-conv-overlay) from)))
afc53a91 94 (quail-delete-overlays)
73f30cdb 95 (setq quail-current-str nil)
5f1e183e
KH
96 (unwind-protect
97 (let ((result (kkc-region from (+ from len))))
98 (move-overlay quail-conv-overlay from (point))
99 (setq quail-conversion-str (buffer-substring from (point)))
100 (if (= (+ from result) (point))
101 (setq quail-converting nil))
102 (setq quail-translating nil))
103 (set-marker from nil))))
24b31c88
KH
104
105(defun quail-japanese-self-insert-and-switch-to-alpha (key idx)
106 (quail-delete-region)
107 (setq unread-command-events (list (aref key (1- idx))))
108 (quail-japanese-switch-package "q" 1))
109
110(defvar quail-japanese-switch-table
111 '((?z . "japanese-zenkaku")
112 (?k . "japanese-hankaku-kana")
113 (?h . "japanese")
114 (?q . ("japanese-ascii"))))
115
116(defvar quail-japanese-package-saved nil)
117(make-variable-buffer-local 'quail-japanese-package-saved)
118(put 'quail-japanese-package-saved 'permanent-local t)
119
120(defun quail-japanese-switch-package (key idx)
9dda7cad 121 (quail-delete-region)
efc1d64f
KH
122 (setq quail-current-str nil
123 quail-converting nil
124 quail-conversion-str "")
24b31c88
KH
125 (let ((pkg (cdr (assq (aref key (1- idx)) quail-japanese-switch-table))))
126 (if (null pkg)
b528110c 127 (quail-error "No package to be switched")
24b31c88 128 (if (stringp pkg)
afc53a91 129 (activate-input-method pkg)
24b31c88
KH
130 (if (string= (car pkg) current-input-method)
131 (if quail-japanese-package-saved
afc53a91 132 (activate-input-method quail-japanese-package-saved))
24b31c88 133 (setq quail-japanese-package-saved current-input-method)
afc53a91
KH
134 (activate-input-method (car pkg))))))
135 (throw 'quail-tag nil))
24b31c88 136
18a5ee60
KH
137(defvar quail-japanese-transliteration-rules
138 '(( "a" "\e$B$"\e(B") ( "i" "\e$B$$\e(B") ( "u" "\e$B$&\e(B") ( "e" "\e$B$(\e(B") ( "o" "\e$B$*\e(B")
139 ("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")
140 ("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")
141 ("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")
142 ("na" "\e$B$J\e(B") ("ni" "\e$B$K\e(B") ("nu" "\e$B$L\e(B") ("ne" "\e$B$M\e(B") ("no" "\e$B$N\e(B")
143 ("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")
144 ("ma" "\e$B$^\e(B") ("mi" "\e$B$_\e(B") ("mu" "\e$B$`\e(B") ("me" "\e$B$a\e(B") ("mo" "\e$B$b\e(B")
145 ("ya" "\e$B$d\e(B") ("yu" "\e$B$f\e(B") ("yo" "\e$B$h\e(B")
146 ("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")
147 ("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")
148 ("wa" "\e$B$o\e(B") ("wi" "\e$B$p\e(B") ("wu" "\e$B$&\e(B") ("we" "\e$B$q\e(B") ("wo" "\e$B$r\e(B")
177c0ea7 149 ("n'" "\e$B$s\e(B")
18a5ee60
KH
150 ("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")
151 ("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")
152 ("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")
153 ("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")
154 ("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")
155
156 ("kya" ["\e$B$-$c\e(B"]) ("kyu" ["\e$B$-$e\e(B"]) ("kye" ["\e$B$-$'\e(B"]) ("kyo" ["\e$B$-$g\e(B"])
157 ("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"])
158 ("sha" ["\e$B$7$c\e(B"]) ("shu" ["\e$B$7$e\e(B"]) ("she" ["\e$B$7$'\e(B"]) ("sho" ["\e$B$7$g\e(B"])
159 ("cha" ["\e$B$A$c\e(B"]) ("chu" ["\e$B$A$e\e(B"]) ("che" ["\e$B$A$'\e(B"]) ("cho" ["\e$B$A$g\e(B"])
160 ("tya" ["\e$B$A$c\e(B"]) ("tyu" ["\e$B$A$e\e(B"]) ("tye" ["\e$B$A$'\e(B"]) ("tyo" ["\e$B$A$g\e(B"])
161 ("nya" ["\e$B$K$c\e(B"]) ("nyu" ["\e$B$K$e\e(B"]) ("nye" ["\e$B$K$'\e(B"]) ("nyo" ["\e$B$K$g\e(B"])
162 ("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"])
163 ("mya" ["\e$B$_$c\e(B"]) ("myu" ["\e$B$_$e\e(B"]) ("mye" ["\e$B$_$'\e(B"]) ("myo" ["\e$B$_$g\e(B"])
164 ("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"])
165 ("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"])
166 ("gya" ["\e$B$.$c\e(B"]) ("gyu" ["\e$B$.$e\e(B"]) ("gye" ["\e$B$.$'\e(B"]) ("gyo" ["\e$B$.$g\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 ("jya" ["\e$B$8$c\e(B"]) ("jyu" ["\e$B$8$e\e(B"]) ("jye" ["\e$B$8$'\e(B"]) ("jyo" ["\e$B$8$g\e(B"])
169 ( "ja" ["\e$B$8$c\e(B"]) ( "ju" ["\e$B$8$e\e(B"]) ( "je" ["\e$B$8$'\e(B"]) ( "jo" ["\e$B$8$g\e(B"])
170 ("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"])
171 ("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"])
172
173 ("kwa" ["\e$B$/$n\e(B"]) ("kwi" ["\e$B$/$#\e(B"]) ("kwe" ["\e$B$/$'\e(B"]) ("kwo" ["\e$B$/$)\e(B"])
174 ("tsa" ["\e$B$D$!\e(B"]) ("tsi" ["\e$B$D$#\e(B"]) ("tse" ["\e$B$D$'\e(B"]) ("tso" ["\e$B$D$)\e(B"])
175 ( "fa" ["\e$B$U$!\e(B"]) ( "fi" ["\e$B$U$#\e(B"]) ( "fe" ["\e$B$U$'\e(B"]) ( "fo" ["\e$B$U$)\e(B"])
176 ("gwa" ["\e$B$0$n\e(B"]) ("gwi" ["\e$B$0$#\e(B"]) ("gwe" ["\e$B$0$'\e(B"]) ("gwo" ["\e$B$0$)\e(B"])
177
178 ("dyi" ["\e$B$G$#\e(B"]) ("dyu" ["\e$B$I$%\e(B"]) ("dye" ["\e$B$G$'\e(B"]) ("dyo" ["\e$B$I$)\e(B"])
179 ("xwi" ["\e$B$&$#\e(B"]) ("xwe" ["\e$B$&$'\e(B"]) ("xwo" ["\e$B$&$)\e(B"])
180
181 ("shi" "\e$B$7\e(B") ("tyi" ["\e$B$F$#\e(B"]) ("chi" "\e$B$A\e(B") ("tsu" "\e$B$D\e(B") ("ji" "\e$B$8\e(B")
182 ("fu" "\e$B$U\e(B")
183 ("ye" ["\e$B$$$'\e(B"])
184
185 ("va" ["\e$B%t$!\e(B"]) ("vi" ["\e$B%t$#\e(B"]) ("vu" "\e$B%t\e(B") ("ve" ["\e$B%t$'\e(B"]) ("vo" ["\e$B%t$)\e(B"])
186
187 ("xa" "\e$B$!\e(B") ("xi" "\e$B$#\e(B") ("xu" "\e$B$%\e(B") ("xe" "\e$B$'\e(B") ("xo" "\e$B$)\e(B")
188 ("xtu" "\e$B$C\e(B") ("xya" "\e$B$c\e(B") ("xyu" "\e$B$e\e(B") ("xyo" "\e$B$g\e(B") ("xwa" "\e$B$n\e(B")
189 ("xka" "\e$B%u\e(B") ("xke" "\e$B%v\e(B")
190
191 ("1" "\e$B#1\e(B") ("2" "\e$B#2\e(B") ("3" "\e$B#3\e(B") ("4" "\e$B#4\e(B") ("5" "\e$B#5\e(B")
192 ("6" "\e$B#6\e(B") ("7" "\e$B#7\e(B") ("8" "\e$B#8\e(B") ("9" "\e$B#9\e(B") ("0" "\e$B#0\e(B")
193
194 ("!" "\e$B!*\e(B") ("@" "\e$B!w\e(B") ("#" "\e$B!t\e(B") ("$" "\e$B!p\e(B") ("%" "\e$B!s\e(B")
195 ("^" "\e$B!0\e(B") ("&" "\e$B!u\e(B") ("*" "\e$B!v\e(B") ("(" "\e$B!J\e(B") (")" "\e$B!K\e(B")
196 ("-" "\e$B!<\e(B") ("=" "\e$B!a\e(B") ("`" "\e$B!.\e(B") ("\\" "\e$B!o\e(B") ("|" "\e$B!C\e(B")
197 ("_" "\e$B!2\e(B") ("+" "\e$B!\\e(B") ("~" "\e$B!1\e(B") ("[" "\e$B!V\e(B") ("]" "\e$B!W\e(B")
198 ("{" "\e$B!P\e(B") ("}" "\e$B!Q\e(B") (":" "\e$B!'\e(B") (";" "\e$B!(\e(B") ("\"" "\e$B!I\e(B")
199 ("'" "\e$B!G\e(B") ("." "\e$B!#\e(B") ("," "\e$B!"\e(B") ("<" "\e$B!c\e(B") (">" "\e$B!d\e(B")
200 ("?" "\e$B!)\e(B") ("/" "\e$B!?\e(B")
201
202 ("z1" "\e$B!{\e(B") ("z!" "\e$B!|\e(B")
203 ("z2" "\e$B"&\e(B") ("z@" "\e$B"'\e(B")
204 ("z3" "\e$B"$\e(B") ("z#" "\e$B"%\e(B")
205 ("z4" "\e$B""\e(B") ("z$" "\e$B"#\e(B")
206 ("z5" "\e$B!~\e(B") ("z%" "\e$B"!\e(B")
207 ("z6" "\e$B!y\e(B") ("z^" "\e$B!z\e(B")
208 ("z7" "\e$B!}\e(B") ("z&" "\e$B!r\e(B")
209 ("z8" "\e$B!q\e(B") ("z*" "\e$B!_\e(B")
210 ("z9" "\e$B!i\e(B") ("z(" "\e$B!Z\e(B")
211 ("z0" "\e$B!j\e(B") ("z)" "\e$B![\e(B")
212 ("z-" "\e$B!A\e(B") ("z_" "\e$B!h\e(B")
213 ("z=" "\e$B!b\e(B") ("z+" "\e$B!^\e(B")
214 ("z\\" "\e$B!@\e(B") ("z|" "\e$B!B\e(B")
215 ("z`" "\e$B!-\e(B") ("z~" "\e$B!/\e(B")
216
217 ("zq" "\e$B!T\e(B") ("zQ" "\e$B!R\e(B")
218 ("zw" "\e$B!U\e(B") ("zW" "\e$B!S\e(B")
219 ("zr" "\e$B!9\e(B") ("zR" "\e$B!8\e(B")
220 ("zt" "\e$B!:\e(B") ("zT" "\e$B!x\e(B")
221 ("zp" "\e$B")\e(B") ("zP" "\e$B",\e(B")
222 ("z[" "\e$B!X\e(B") ("z{" "\e$B!L\e(B")
223 ("z]" "\e$B!Y\e(B") ("z}" "\e$B!M\e(B")
224
225 ("zs" "\e$B!3\e(B") ("zS" "\e$B!4\e(B")
226 ("zd" "\e$B!5\e(B") ("zD" "\e$B!6\e(B")
227 ("zf" "\e$B!7\e(B") ("zF" "\e$B"*\e(B")
228 ("zg" "\e$B!>\e(B") ("zG" "\e$B!=\e(B")
229 ("zh" "\e$B"+\e(B")
230 ("zj" "\e$B"-\e(B")
231 ("zk" "\e$B",\e(B")
232 ("zl" "\e$B"*\e(B")
233 ("z;" "\e$B!+\e(B") ("z:" "\e$B!,\e(B")
234 ("z\'" "\e$B!F\e(B") ("z\"" "\e$B!H\e(B")
235
236 ("zx" [":-"]) ("zX" [":-)"])
237 ("zc" "\e$B!;\e(B") ("zC" "\e$B!n\e(B")
238 ("zv" "\e$B"(\e(B") ("zV" "\e$B!`\e(B")
239 ("zb" "\e$B!k\e(B") ("zB" "\e$B"+\e(B")
240 ("zn" "\e$B!l\e(B") ("zN" "\e$B"-\e(B")
241 ("zm" "\e$B!m\e(B") ("zM" "\e$B".\e(B")
242 ("z," "\e$B!E\e(B") ("z<" "\e$B!e\e(B")
243 ("z." "\e$B!D\e(B") ("z>" "\e$B!f\e(B")
244 ("z/" "\e$B!&\e(B") ("z?" "\e$B!g\e(B")
245
246 ("\\\\" quail-japanese-self-insert-and-switch-to-alpha)
247 ("{{" quail-japanese-self-insert-and-switch-to-alpha)
248 ("}}" quail-japanese-self-insert-and-switch-to-alpha)
249
250 ("qq" quail-japanese-switch-package)
251 ("qz" quail-japanese-switch-package)
252 ))
253
254
0ccb76ee
KH
255;; \e$B%m!<%^;zF~NO5Z$S2>L>4A;zJQ49$K$h$kF|K\8lF~NO%a%=%C%I\e(B
256;;
257;; \e$B$3$NF~NO%a%=%C%I$G$NF|K\8l$NF~NO$OFs$D$N%9%F!<%8!V%m!<%^;z2>L>JQ49!W\e(B
258;; \e$B$H!V2>L>4A;zJQ49!W$+$i$J$k!#:G=i$O%m!<%^;z2>L>JQ49$N%9%F!<%8$G!"%9\e(B
259;; \e$B%Z!<%9%-!<$r2!$9$3$H$K$h$j!"<!$N%9%F!<%8!V2>L>4A;zJQ49!W$X?J$`!#\e(B
260;;
261;; \e$B!V%m!<%^;z2>L>JQ49!W\e(B
262;;
263;; \e$BJ?2>L>$O>.J8;z%-!<!JNs!K$rBG$D$3$H$K$h$jF~NO!#6gFIE@!"3g8LN`$OBP1~\e(B
264;; \e$B$9$k1Q;z%-!<$rBG$D$3$H$K$h$jF~NO!#$=$NB>$N%7%s%\%k$O\e(B `z' \e$B$KB3$1$F2?\e(B
265;; \e$B$l$+$N%-!<$rBG$D$3$H$K$h$jF~NO!#2<$KA4$F$N2DG=$J%-!<%7!<%1%s%9%j%9\e(B
266;; \e$B%H%"%C%W$5$l$F$$$k!#F~NO$5$l$?J8;z$O2<@~$G<($5$l$k!#\e(B
267;;
268;; \e$B$5$i$K0J2<$N%-!<$GFCJL$J=hM}$r9T$&!#\e(B
269;;
270;; K \e$BJ?2>L>$rJR2>L>$K!"$"$k$$$OJR2>L>$rJ?2>L>$KJQ49\e(B
271;; qq \e$B$3$NF~NO%a%=%C%I$H\e(B `japanese-ascii' \e$BF~NO%a%=%C%I$r%H%0%k@ZBX\e(B
272;; qz `japanese-zenkaku' \e$BF~NO%a%=%C%I$K%7%U%H\e(B
273;; qh \e$B$HBG$F$P85$KLa$k\e(B
274;; RET \e$B8=:_$NF~NOJ8;zNs$r3NDj\e(B
275;; SPC \e$B2>L>4A;zJQ49$K?J$`\e(B
276;;
277;; `japanese-ascii' \e$BF~NO%a%=%C%I$O\e(B ASCII \e$BJ8;z$rF~NO$9$k$N$K;H$&!#$3$l\e(B
278;; \e$B$OF~NO%a%=%C%I$r%*%U$K$9$k$N$H$[$H$s$IF1$8$G$"$k!#0[$J$k$N$O\e(B qq \e$B$H\e(B
279;; \e$BBG$D$3$H$K$h$j!"\e(B`japanese' \e$BF~NO%a%=%C%I$KLa$l$kE@$G$"$k!#\e(B
280;;
281;; `japanese-zenkaku' \e$BF~NO%a%=%C%I$OA43Q1Q?t;z$rF~NO$9$k$N$K;H$&!#\e(B
282;;
57a53150
KH
283;; \e$B!V%m!<%^;z2>L>JQ49!W%9%F!<%8$G$N%-!<%7!<%1%s%9$N%j%9%H$O:G8e$KIU$1\e(B
284;; \e$B$F$"$k!#\e(B
0ccb76ee
KH
285;;
286;; \e$B!V2>L>4A;zJQ49!W\e(B
287;;
288;; \e$B$3$N%9%F!<%8$G$O!"A0%9%F!<%8$GF~NO$5$l$?J8;zNs$r2>L>4A;zJQ49$9$k!#\e(B
289;; \e$BJQ49$5$l$?J8;zNs$O!"CmL\J8@a!JH?E>I=<(!K$H;D$j$NF~NO!J2<@~I=<(!K$K\e(B
290;; \e$BJ,$1$i$l$k!#CmL\J8@a$KBP$7$F$O0J2<$N%3%^%s%I$,;H$($k!#\e(B
291;;
292;; SPC, C-n kkc-next
293;; \e$B<!$NJQ498uJd$rI=<(\e(B
099a5e88
KH
294;; kkc-show-conversion-list-count \e$B0J>eB3$1$FBG$F$P!"JQ498uJd%j%9\e(B
295;; \e$B%H$r%(%3!<%(%j%"$KI=<(\e(B
0ccb76ee
KH
296;; C-p kkc-prev
297;; \e$BA0$NJQ498uJd$rI=<(\e(B
099a5e88
KH
298;; kkc-show-conversion-list-count \e$B0J>eB3$1$FBG$F$P!"JQ498uJd%j%9\e(B
299;; \e$B%H$r%(%3!<%(%j%"$KI=<(\e(B
0ccb76ee
KH
300;; l kkc-show-conversion-list-or-next-group
301;; \e$B:G9b#1#08D$^$G$NJQ498uJd$r%(%3!<%(%j%"$KI=<(!#\e(B
302;; \e$BB3$1$FBG$?$l$l$P!"<!$N#1#08uJd$rI=<(!#\e(B
303;; L kkc-show-conversion-list-or-prev-group
304;; \e$B:G9b#1#08D$^$G$NJQ498uJd$r%(%3!<%(%j%"$KI=<(!#\e(B
305;; \e$BB3$1$FBG$?$l$l$P!"A0$N#1#08uJd$rI=<(!#\e(B
306;; 0..9 kkc-select-from-list
307;; \e$BBG$?$l$??t;z$NJQ498uJd$rA*Br\e(B
308;; H kkc-hiragana
309;; \e$BCmL\J8@a$rJ?2>L>$KJQ49\e(B
310;; K kkc-katakana
311;; \e$BCmL\J8@a$rJR2>L>$KJQ49\e(B
312;; C-o kkc-longer
313;; \e$BCmL\J8@a$r8e$m$K0lJ8;z?-$P$9\e(B
314;; C-i kkc-shorter
315;; \e$BCmL\J8@a$r8e$m$+$i0lJ8;z=L$a$k\e(B
316;; C-f kkc-next-phrase
317;; \e$BCmL\J8@a$r3NDj$5$;$k!#$b$7;D$j$NF~NO$,$^$@$"$l$P!":G=i$NJ8@a$r\e(B
318;; \e$BA*Br$7!"$=$l$rCmL\J8@a$H$7!"$=$N:G=i$NJQ498uJd$rI=<($9$k!#\e(B
319;; DEL, C-c kkc-cancel
320;; \e$B2>L>4A;zJQ49$r%-%c%s%;%k$7!"%m!<%^;z2>L>JQ49$N%9%F!<%8$KLa$k!#\e(B
321;; return kkc-terminate
322;; \e$BA4J8@a$r3NDj$5$;$k!#\e(B
323;; C-SPC, C-@ kkc-first-char-only
324;; \e$B:G=i$NJ8;z$r3NDj$5$;!";D$j$O:o=|$9$k!#\e(B
325;; C-h kkc-help
326;; \e$B$3$l$i$N%-!<%P%$%s%I$N%j%9%H$rI=<($9$k!#$"\e(B
327
24b31c88
KH
328(quail-define-package
329 "japanese" "Japanese" "A\e$B$"\e(B"
330 nil
57a53150 331 "Japanese input method by Roman transliteration and Kana-Kanji conversion.
0ccb76ee
KH
332
333When you use this input method, text entry proceeds in two stages:
334Roman-Kana transliteration and Kana-Kanji conversion. When you start
335to enter text, you are in the first stage, Roman-Kana transliteration.
336Type SPC to proceed to the next stage, Kana-Kanji conversion.
337
338:: Roman-Kana transliteration ::
339
340You can input any Hiragana character as a sequence of lower-case
341letters, Japanese punctuation characters by typing punctuation keys,
342Japanese symbols by typing `z' followed by another key. See below for
343a list of all available sequences. The characters you input are
344underlined.
345
346In addition, the following keys provide special effects:
347
348K Change Hiragana to Katakana or Katakana to Hiragana.
57a53150
KH
349qq Toggle between this input method and the input method `japanese-ascii'.
350qz Shift to the input method `japanese-zenkaku'.
0ccb76ee
KH
351 Typing \"qh\" will put you back to this input method.
352RET Accept the current character sequence.
353SPC Proceed to the next stage, Kana-Kanji conversion.
354
57a53150 355The input method `japanese-ascii' is used to enter ASCII characters.
0ccb76ee
KH
356This is almost the same as turning off the input method. The only
357difference is that typing `qq' will put you back into the Japanese
358input method.
359
57a53150 360The input method `japanese-zenkaku' is used to enter full width
0ccb76ee
KH
361JISX0208 characters corresponding to typed ASCII characters.
362
57a53150
KH
363List of the all key sequences for Roman-Kana transliteration is shown
364at the tail.
0ccb76ee
KH
365
366:: Kana-Kanji conversion ::
367
368You can convert the current Japanese characters (underlined) to
369Kana-Kanji mixed text. In this stage, the converted text is divided
370into two parts, the current phrase (highlighted) and the remaining
371input (underlined). The following commands can be used on the
372current phrase.
373
374SPC, C-n kkc-next
375 Show the next candidate for the current phrase.
7a3fd467 376 If successively typed `kkc-show-conversion-list-count' times,
099a5e88 377 conversion candidates are shown in the echo area.
0ccb76ee
KH
378C-p kkc-prev
379 Show the previous candidate for the current phrase.
7a3fd467 380 If successively typed `kkc-show-conversion-list-count' times,
099a5e88 381 conversion candidates are shown in the echo area.
0ccb76ee 382l kkc-show-conversion-list-or-next-group
a8ab9a6f 383 Show at most 10 candidates for the current phrase in echo area.
0ccb76ee
KH
384 If typed repeatedly, show the next 10 candidates.
385L kkc-show-conversion-list-or-prev-group
386 Show at most 10 candidates for the current phrase in echo area.
387 If typed repeatedly, show the previous 10 candidates.
3880..9 kkc-select-from-list
389 Select a candidate corresponding to the typed number.
390H kkc-hiragana
391 Convert the current phrase to Hiragana
392K kkc-katakana
393 Convert the current phrase to Katakana
394C-o kkc-longer
395 Extend the current phrase; pull in the first character of
396 the remaining input.
397C-i kkc-shorter
398 Contract the current phrase; drop its last character
399 back into the remaining input.
400C-f kkc-next-phrase
401 Accept the current phrase. If there remains input, select
402 the first phrase as the current one, and show the first
403 candidate for the conversion.
404DEL, C-c kkc-cancel
405 Cancel the conversion, shift back to the Roman-Kana
406 transliteration.
407return kkc-terminate
408 Accept the whole conversion.
409C-SPC, C-@ kkc-first-char-only
410 Accept the first character of the current conversion,
411 delete the remaining input.
412C-h kkc-help
413 List these key bindings.
24b31c88
KH
414"
415 nil t t nil nil nil nil nil
416 'quail-japanese-update-translation
417 '(("K" . quail-japanese-toggle-kana)
418 (" " . quail-japanese-kanji-kkc)
419 ("\C-m" . quail-no-conversion)
420 ([return] . quail-no-conversion))
421 )
422
18a5ee60
KH
423(dolist (elt quail-japanese-transliteration-rules)
424 (quail-defrule (car elt) (nth 1 elt)))
24b31c88
KH
425
426(quail-define-package
427 "japanese-ascii" "Japanese" "Aa"
428 nil
57a53150
KH
429 "Temporary ASCII input mode used within the input method `japanese'.
430Type \"qq\" to go back to previous input method."
24b31c88
KH
431 nil t t)
432
433(quail-define-rules ("qq" quail-japanese-switch-package))
434
435(quail-define-package
436 "japanese-zenkaku" "Japanese" "\e$B#A\e(B"
437 nil
57a53150 438 "Japanese zenkaku alpha numeric character input method.
24b31c88 439---- Special key bindings ----
57a53150
KH
440qq: toggle between this input method and the input method `japanese-ascii'.
441qh: shift to the input method `japanese',
442 typing \"qz\" puts you back to this input method.
24b31c88
KH
443"
444 nil t t)
445
446(quail-define-rules
447
448(" " "\e$B!!\e(B") ("!" "\e$B!*\e(B") ("\"" "\e$B!m\e(B") ("#" "\e$B!t\e(B")
449("$" "\e$B!p\e(B") ("%" "\e$B!s\e(B") ("&" "\e$B!u\e(B") ("'" "\e$B!l\e(B")
450("(" "\e$B!J\e(B") (")" "\e$B!K\e(B") ("*" "\e$B!v\e(B") ("+" "\e$B!\\e(B")
451("," "\e$B!$\e(B") ("-" "\e$B!]\e(B") ("." "\e$B!%\e(B") ("/" "\e$B!?\e(B")
452("0" "\e$B#0\e(B") ("1" "\e$B#1\e(B") ("2" "\e$B#2\e(B") ("3" "\e$B#3\e(B")
453("4" "\e$B#4\e(B") ("5" "\e$B#5\e(B") ("6" "\e$B#6\e(B") ("7" "\e$B#7\e(B")
454("8" "\e$B#8\e(B") ("9" "\e$B#9\e(B") (":" "\e$B!'\e(B") (";" "\e$B!(\e(B")
455("<" "\e$B!c\e(B") ("=" "\e$B!a\e(B") (">" "\e$B!d\e(B") ("?" "\e$B!)\e(B")
456("@" "\e$B!w\e(B") ("A" "\e$B#A\e(B") ("B" "\e$B#B\e(B") ("C" "\e$B#C\e(B")
457("D" "\e$B#D\e(B") ("E" "\e$B#E\e(B") ("F" "\e$B#F\e(B") ("G" "\e$B#G\e(B")
458("H" "\e$B#H\e(B") ("I" "\e$B#I\e(B") ("J" "\e$B#J\e(B") ("K" "\e$B#K\e(B")
459("L" "\e$B#L\e(B") ("M" "\e$B#M\e(B") ("N" "\e$B#N\e(B") ("O" "\e$B#O\e(B")
460("P" "\e$B#P\e(B") ("Q" "\e$B#Q\e(B") ("R" "\e$B#R\e(B") ("S" "\e$B#S\e(B")
461("T" "\e$B#T\e(B") ("U" "\e$B#U\e(B") ("V" "\e$B#V\e(B") ("W" "\e$B#W\e(B")
462("X" "\e$B#X\e(B") ("Y" "\e$B#Y\e(B") ("Z" "\e$B#Z\e(B") ("[" "\e$B!N\e(B")
463("\\" "\e$B!o\e(B") ("]" "\e$B!O\e(B") ("^" "\e$B!0\e(B") ("_" "\e$B!2\e(B")
464("`" "\e$B!F\e(B") ("a" "\e$B#a\e(B") ("b" "\e$B#b\e(B") ("c" "\e$B#c\e(B")
465("d" "\e$B#d\e(B") ("e" "\e$B#e\e(B") ("f" "\e$B#f\e(B") ("g" "\e$B#g\e(B")
466("h" "\e$B#h\e(B") ("i" "\e$B#i\e(B") ("j" "\e$B#j\e(B") ("k" "\e$B#k\e(B")
467("l" "\e$B#l\e(B") ("m" "\e$B#m\e(B") ("n" "\e$B#n\e(B") ("o" "\e$B#o\e(B")
468("p" "\e$B#p\e(B") ("q" "\e$B#q\e(B") ("r" "\e$B#r\e(B") ("s" "\e$B#s\e(B")
469("t" "\e$B#t\e(B") ("u" "\e$B#u\e(B") ("v" "\e$B#v\e(B") ("w" "\e$B#w\e(B")
470("x" "\e$B#x\e(B") ("y" "\e$B#y\e(B") ("z" "\e$B#z\e(B") ("{" "\e$B!P\e(B")
177c0ea7 471("|" "\e$B!C\e(B") ("}" "\e$B!Q\e(B") ("~" "\e$B!A\e(B")
24b31c88
KH
472
473("qq" quail-japanese-switch-package)
474("qh" quail-japanese-switch-package)
475)
476
477(defun quail-japanese-hankaku-update-translation (control-flag)
bcc1e378
KH
478 (setq control-flag
479 (quail-japanese-update-translation control-flag))
480 (if (or (and (stringp quail-current-str)
481 (> (length quail-current-str) 0))
482 (integerp quail-current-str))
483 (setq quail-current-str (japanese-hankaku quail-current-str)))
484 control-flag)
24b31c88
KH
485
486(quail-define-package
487 "japanese-hankaku-kana"
488 "Japanese" "\e(I1\e(B"
489 nil
57a53150 490 "Japanese hankaku katakana input method by Roman transliteration.
24b31c88 491---- Special key bindings ----
57a53150 492qq: toggle between this input method and the input method `japanese-ascii'.
24b31c88
KH
493"
494 nil t t nil nil nil nil nil
495 'quail-japanese-hankaku-update-translation)
496
5853ec9c
GM
497(dolist (elt quail-japanese-transliteration-rules)
498 (quail-defrule (car elt)
499 (let ((trans (nth 1 elt)))
500 (when (or (stringp trans) (vectorp trans))
501 (let ((s (japanese-hankaku (if (stringp trans)
502 trans
503 (aref trans 0)))))
504 ;; If the result of the conversion is a string
505 ;; containing more than one character, make the
506 ;; result a vector, so that quail-defrule
507 ;; recognizes the whole string is the
508 ;; translation, instead of interpreting
509 ;; individual characters as alternative
510 ;; translations.
511 (if (and (stringp s) (> (length s) 1))
512 (setq trans (vector s))
513 (setq trans s))))
514 trans)))
24b31c88
KH
515
516(quail-define-package
517 "japanese-hiragana" "Japanese" "\e$B$"\e(B"
518 nil
57a53150 519 "Japanese hiragana input method by Roman transliteration."
24b31c88
KH
520 nil t t nil nil nil nil nil
521 'quail-japanese-update-translation)
522
523;; Use the same map as that of `japanese'.
524(setcar (cdr (cdr quail-current-package))
525 (nth 2 (assoc "japanese" quail-package-alist)))
526
527;; Update Quail translation region while converting Hiragana to Katakana.
528(defun quail-japanese-katakana-update-translation (control-flag)
0dced2c9
KH
529 (setq control-flag
530 (quail-japanese-update-translation control-flag))
531 (if (or (and (stringp quail-current-str)
532 (> (length quail-current-str) 0))
533 (integerp quail-current-str))
534 (setq quail-current-str (japanese-katakana quail-current-str)))
535 control-flag)
24b31c88 536
177c0ea7 537(quail-define-package
24b31c88
KH
538 "japanese-katakana" "Japanese" "\e$B%"\e(B"
539 nil
57a53150 540 "Japanese katakana input method by Roman transliteration."
24b31c88
KH
541 nil t t nil nil nil nil nil
542 'quail-japanese-katakana-update-translation)
543
18a5ee60
KH
544(dolist (elt quail-japanese-transliteration-rules)
545 (quail-defrule (car elt)
546 (let ((trans (nth 1 elt)))
5853ec9c
GM
547 (cond ((stringp trans)
548 (japanese-katakana trans))
549 ((vectorp trans)
550 (vector (japanese-katakana (aref trans 0))))
551 (t trans)))))
18a5ee60 552
be567141 553;;; japanese.el ends here