155
|
1 ;;; quail/japanese.el --- Quail package for inputting Japanese
|
|
2
|
|
3 ;; Copyright (C) 1995 Free Software Foundation, Inc.
|
|
4 ;; Copyright (C) 1995 Electrotechnical Laboratory, JAPAN.
|
|
5
|
|
6 ;; Keywords: multilingual, input method, Japanese
|
|
7
|
|
8 ;; This file is part of GNU Emacs.
|
|
9
|
|
10 ;; GNU Emacs is free software; you can redistribute it and/or modify
|
|
11 ;; it under the terms of the GNU General Public License as published by
|
|
12 ;; the Free Software Foundation; either version 2, or (at your option)
|
|
13 ;; any later version.
|
|
14
|
|
15 ;; GNU Emacs is distributed in the hope that it will be useful,
|
|
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
18 ;; GNU General Public License for more details.
|
|
19
|
|
20 ;; You should have received a copy of the GNU General Public License
|
|
21 ;; along with GNU Emacs; see the file COPYING. If not, write to
|
|
22 ;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
23
|
|
24 ;;; Code:
|
|
25
|
|
26 (require 'quail)
|
|
27 (require 'kkc)
|
|
28
|
|
29 ;; Update Quail translation region for Japanese bizarre translation
|
|
30 ;; rules.
|
|
31 (defun quail-japanese-update-translation (control-flag)
|
|
32 (cond ((eq control-flag t)
|
|
33 (insert quail-current-str)
|
|
34 (quail-terminate-translation))
|
|
35 ((null control-flag)
|
|
36 (if (/= (aref quail-current-key 0) ?q)
|
|
37 (insert (or quail-current-str quail-current-key))))
|
|
38 (t ; i.e. (numberp control-flag)
|
|
39 (cond ((= (aref quail-current-key 0) ?n)
|
|
40 (insert ?$B$s(B))
|
|
41 ((= (aref quail-current-key 0) (aref quail-current-key 1))
|
|
42 (insert ?$B$C(B))
|
|
43 (t
|
|
44 (insert (aref quail-current-key 0))))
|
|
45 (setq unread-command-events
|
|
46 (list (aref quail-current-key control-flag)))
|
|
47 (quail-terminate-translation))))
|
|
48
|
|
49 ;; Flag to control the behavior of `quail-japanese-toggle-kana'.
|
|
50 (defvar quail-japanese-kana-state nil)
|
|
51 (make-variable-buffer-local 'quail-japanese-kana-state)
|
|
52
|
|
53 ;; Convert Hiragana <-> Katakana in the current translation region.
|
|
54 (defun quail-japanese-toggle-kana ()
|
|
55 (interactive)
|
|
56 (if (quail-point-in-conversion-region)
|
|
57 (let ((start (overlay-start quail-conv-overlay))
|
|
58 (end (overlay-end quail-conv-overlay)))
|
|
59 (setq quail-japanese-kana-state
|
|
60 (if (eq last-command this-command)
|
|
61 (not quail-japanese-kana-state)))
|
|
62 (if quail-japanese-kana-state
|
|
63 (japanese-hiragana-region start end)
|
|
64 (japanese-katakana-region start end))
|
|
65 (goto-char (overlay-end quail-conv-overlay))
|
|
66 (setq quail-exit-conversion-mode t))
|
|
67 ;; When this command is invoked, the point is not in a valid
|
|
68 ;; region. Try the event which invoked this command again out of
|
|
69 ;; conversion mode.
|
|
70 (setq unread-command-events (list last-command-event))
|
|
71 (throw 'exit nil)))
|
|
72
|
|
73 ;; Convert Hiragana in the current translation region to Kanji by KKC
|
|
74 ;; (Kana Kanji Converter) utility.
|
|
75 (defun quail-japanese-kanji-kkc ()
|
|
76 (interactive)
|
|
77 (if (quail-point-in-conversion-region)
|
|
78 (let ((from (overlay-start quail-conv-overlay))
|
|
79 (to (overlay-end quail-conv-overlay))
|
|
80 newfrom)
|
|
81 (delete-overlay quail-overlay)
|
|
82 (delete-overlay quail-conv-overlay)
|
|
83 (unwind-protect
|
|
84 (setq newfrom (kkc-region from to))
|
|
85 ;; Activate the original (or shrinked) conversion region
|
|
86 ;; again.
|
|
87 (if newfrom
|
|
88 ;; `kkc-region' is canceled.
|
|
89 (move-overlay quail-conv-overlay newfrom (point))
|
|
90 ;; `kkc-region' is terminated normally.
|
|
91 (move-overlay quail-conv-overlay from (point))
|
|
92 (throw 'exit nil))))
|
|
93 ;; When this command is invoked, the point is not in a valid
|
|
94 ;; region. Try the event which invoked this command again out of
|
|
95 ;; conversion mode.
|
|
96 (setq unread-command-events (list last-command-event))
|
|
97 (throw 'exit nil)))
|
|
98
|
|
99 (defun quail-japanese-self-insert-and-switch-to-alpha (key idx)
|
|
100 (quail-delete-region)
|
|
101 (setq unread-command-events (list (aref key (1- idx))))
|
|
102 (quail-japanese-switch-package "q" 1))
|
|
103
|
|
104 (defvar quail-japanese-switch-table
|
|
105 '((?z . "quail-ja-zenkaku")
|
|
106 (?k . "quail-ja-hankaku-kana")
|
|
107 (?h . "quail-ja")
|
|
108 (?q . ("quail-ja-alpha"))))
|
|
109
|
|
110 (defvar quail-japanese-package-saved nil)
|
|
111 (make-variable-buffer-local 'quail-japanese-package-saved)
|
|
112 (put 'quail-japanese-package-saved 'permanent-local t)
|
|
113
|
|
114 (defun quail-japanese-switch-package (key idx)
|
|
115 (let ((pkg (cdr (assq (aref key (1- idx)) quail-japanese-switch-table))))
|
|
116 (if (null pkg)
|
|
117 (error "No package to be switched")
|
|
118 (quail-delete-region)
|
|
119 (if (stringp pkg)
|
|
120 (select-input-method "Japanese" pkg)
|
|
121 (if (string= (car pkg) (cdr current-input-method))
|
|
122 (if quail-japanese-package-saved
|
|
123 (select-input-method "Japanese" quail-japanese-package-saved))
|
|
124 (setq quail-japanese-package-saved (cdr current-input-method))
|
|
125 (select-input-method "Japanese" (car pkg))))
|
|
126 (throw 'quail-tag nil))))
|
|
127
|
|
128 (quail-define-package "quail-ja" "Japanese" "$B$"(B"
|
|
129 nil
|
|
130 "Romaji -> Hiragana -> Kanji&Kana
|
|
131 ---- Special key bindings ----
|
|
132 qq: toggle between `quail-ja' and `quail-ja-alpha'
|
|
133 qz: use `quail-ja-zenkaku' package, \"qh\" puts you back to `quail-ja'
|
|
134 K: convert to Katakana
|
|
135 SPC: convert to Kanji&Kana
|
|
136 z: insert one Japanese symbol according to a following key
|
|
137 "
|
|
138 nil t t nil nil nil nil nil
|
|
139 'quail-japanese-update-translation
|
|
140 '(("K" . quail-japanese-toggle-kana)
|
|
141 (" " . quail-japanese-kanji-kkc)
|
|
142 ("\C-m" . quail-no-conversion)
|
|
143 ([return] . quail-no-conversion))
|
|
144 )
|
|
145
|
|
146 (quail-define-rules
|
|
147
|
|
148 ( "a" "$B$"(B") ( "i" "$B$$(B") ( "u" "$B$&(B") ( "e" "$B$((B") ( "o" "$B$*(B")
|
|
149 ("ka" "$B$+(B") ("ki" "$B$-(B") ("ku" "$B$/(B") ("ke" "$B$1(B") ("ko" "$B$3(B")
|
|
150 ("sa" "$B$5(B") ("si" "$B$7(B") ("su" "$B$9(B") ("se" "$B$;(B") ("so" "$B$=(B")
|
|
151 ("ta" "$B$?(B") ("ti" "$B$A(B") ("tu" "$B$D(B") ("te" "$B$F(B") ("to" "$B$H(B")
|
|
152 ("na" "$B$J(B") ("ni" "$B$K(B") ("nu" "$B$L(B") ("ne" "$B$M(B") ("no" "$B$N(B")
|
|
153 ("ha" "$B$O(B") ("hi" "$B$R(B") ("hu" "$B$U(B") ("he" "$B$X(B") ("ho" "$B$[(B")
|
|
154 ("ma" "$B$^(B") ("mi" "$B$_(B") ("mu" "$B$`(B") ("me" "$B$a(B") ("mo" "$B$b(B")
|
|
155 ("ya" "$B$d(B") ("yu" "$B$f(B") ("yo" "$B$h(B")
|
|
156 ("ra" "$B$i(B") ("ri" "$B$j(B") ("ru" "$B$k(B") ("re" "$B$l(B") ("ro" "$B$m(B")
|
|
157 ("la" "$B$i(B") ("li" "$B$j(B") ("lu" "$B$k(B") ("le" "$B$l(B") ("lo" "$B$m(B")
|
|
158 ("wa" "$B$o(B") ("wi" "$B$p(B") ("wu" "$B$&(B") ("we" "$B$q(B") ("wo" "$B$r(B")
|
|
159 ("n'" "$B$s(B")
|
|
160 ("ga" "$B$,(B") ("gi" "$B$.(B") ("gu" "$B$0(B") ("ge" "$B$2(B") ("go" "$B$4(B")
|
|
161 ("za" "$B$6(B") ("zi" "$B$8(B") ("zu" "$B$:(B") ("ze" "$B$<(B") ("zo" "$B$>(B")
|
|
162 ("da" "$B$@(B") ("di" "$B$B(B") ("du" "$B$E(B") ("de" "$B$G(B") ("do" "$B$I(B")
|
|
163 ("ba" "$B$P(B") ("bi" "$B$S(B") ("bu" "$B$V(B") ("be" "$B$Y(B") ("bo" "$B$\(B")
|
|
164 ("pa" "$B$Q(B") ("pi" "$B$T(B") ("pu" "$B$W(B") ("pe" "$B$Z(B") ("po" "$B$](B")
|
|
165
|
|
166 ("kya" ["$B$-$c(B"]) ("kyu" ["$B$-$e(B"]) ("kye" ["$B$-$'(B"]) ("kyo" ["$B$-$g(B"])
|
|
167 ("sya" ["$B$7$c(B"]) ("syu" ["$B$7$e(B"]) ("sye" ["$B$7$'(B"]) ("syo" ["$B$7$g(B"])
|
|
168 ("sha" ["$B$7$c(B"]) ("shu" ["$B$7$e(B"]) ("she" ["$B$7$'(B"]) ("sho" ["$B$7$g(B"])
|
|
169 ("cha" ["$B$A$c(B"]) ("chu" ["$B$A$e(B"]) ("che" ["$B$A$'(B"]) ("cho" ["$B$A$g(B"])
|
|
170 ("tya" ["$B$A$c(B"]) ("tyu" ["$B$A$e(B"]) ("tye" ["$B$A$'(B"]) ("tyo" ["$B$A$g(B"])
|
|
171 ("nya" ["$B$K$c(B"]) ("nyu" ["$B$K$e(B"]) ("nye" ["$B$K$'(B"]) ("nyo" ["$B$K$g(B"])
|
|
172 ("hya" ["$B$R$c(B"]) ("hyu" ["$B$R$e(B"]) ("hye" ["$B$R$'(B"]) ("hyo" ["$B$R$g(B"])
|
|
173 ("mya" ["$B$_$c(B"]) ("myu" ["$B$_$e(B"]) ("mye" ["$B$_$'(B"]) ("myo" ["$B$_$g(B"])
|
|
174 ("rya" ["$B$j$c(B"]) ("ryu" ["$B$j$e(B"]) ("rye" ["$B$j$'(B"]) ("ryo" ["$B$j$g(B"])
|
|
175 ("lya" ["$B$j$c(B"]) ("lyu" ["$B$j$e(B"]) ("lye" ["$B$j$'(B"]) ("lyo" ["$B$j$g(B"])
|
|
176 ("gya" ["$B$.$c(B"]) ("gyu" ["$B$.$e(B"]) ("gye" ["$B$.$'(B"]) ("gyo" ["$B$.$g(B"])
|
|
177 ("zya" ["$B$8$c(B"]) ("zyu" ["$B$8$e(B"]) ("zye" ["$B$8$'(B"]) ("zyo" ["$B$8$g(B"])
|
|
178 ("jya" ["$B$8$c(B"]) ("jyu" ["$B$8$e(B"]) ("jye" ["$B$8$'(B"]) ("jyo" ["$B$8$g(B"])
|
|
179 ( "ja" ["$B$8$c(B"]) ( "ju" ["$B$8$e(B"]) ( "je" ["$B$8$'(B"]) ( "jo" ["$B$8$g(B"])
|
|
180 ("bya" ["$B$S$c(B"]) ("byu" ["$B$S$e(B"]) ("bye" ["$B$S$'(B"]) ("byo" ["$B$S$g(B"])
|
|
181 ("pya" ["$B$T$c(B"]) ("pyu" ["$B$T$e(B"]) ("pye" ["$B$T$'(B"]) ("pyo" ["$B$T$g(B"])
|
|
182
|
|
183 ("kwa" ["$B$/$n(B"]) ("kwi" ["$B$/$#(B"]) ("kwe" ["$B$/$'(B"]) ("kwo" ["$B$/$)(B"])
|
|
184 ("tsa" ["$B$D$!(B"]) ("tsi" ["$B$D$#(B"]) ("tse" ["$B$D$'(B"]) ("tso" ["$B$D$)(B"])
|
|
185 ( "fa" ["$B$U$!(B"]) ( "fi" ["$B$U$#(B"]) ( "fe" ["$B$U$'(B"]) ( "fo" ["$B$U$)(B"])
|
|
186 ("gwa" ["$B$0$n(B"]) ("gwi" ["$B$0$#(B"]) ("gwe" ["$B$0$'(B"]) ("gwo" ["$B$0$)(B"])
|
|
187
|
|
188 ("dyi" ["$B$G$#(B"]) ("dyu" ["$B$I$%(B"]) ("dye" ["$B$G$'(B"]) ("dyo" ["$B$I$)(B"])
|
|
189 ("xwi" ["$B$&$#(B"]) ("xwe" ["$B$&$'(B"]) ("xwo" ["$B$&$)(B"])
|
|
190
|
|
191 ("shi" "$B$7(B") ("tyi" ["$B$F$#(B"]) ("chi" "$B$A(B") ("tsu" "$B$D(B") ("ji" "$B$8(B")
|
|
192 ("fu" "$B$U(B")
|
|
193 ("ye" ["$B$$$'(B"])
|
|
194
|
|
195 ("va" ["$B%t$!(B"]) ("vi" ["$B%t$#(B"]) ("vu" "$B%t(B") ("ve" ["$B%t$'(B"]) ("vo" ["$B%t$)(B"])
|
|
196
|
|
197 ("xa" "$B$!(B") ("xi" "$B$#(B") ("xu" "$B$%(B") ("xe" "$B$'(B") ("xo" "$B$)(B")
|
|
198 ("xtu" "$B$C(B") ("xya" "$B$c(B") ("xyu" "$B$e(B") ("xyo" "$B$g(B") ("xwa" "$B$n(B")
|
|
199 ("xka" "$B%u(B") ("xke" "$B%v(B")
|
|
200
|
|
201 ("1" "$B#1(B") ("2" "$B#2(B") ("3" "$B#3(B") ("4" "$B#4(B") ("5" "$B#5(B")
|
|
202 ("6" "$B#6(B") ("7" "$B#7(B") ("8" "$B#8(B") ("9" "$B#9(B") ("0" "$B#0(B")
|
|
203
|
|
204 ("!" "$B!*(B") ("@" "$B!w(B") ("#" "$B!t(B") ("$" "$B!p(B") ("%" "$B!s(B")
|
|
205 ("^" "$B!0(B") ("&" "$B!u(B") ("*" "$B!v(B") ("(" "$B!J(B") (")" "$B!K(B")
|
|
206 ("-" "$B!<(B") ("=" "$B!a(B") ("`" "$B!.(B") ("\\" "$B!o(B") ("|" "$B!C(B")
|
|
207 ("_" "$B!2(B") ("+" "$B!\(B") ("~" "$B!1(B") ("[" "$B!V(B") ("]" "$B!W(B")
|
|
208 ("{" "$B!P(B") ("}" "$B!Q(B") (":" "$B!'(B") (";" "$B!((B") ("\"" "$B!I(B")
|
|
209 ("'" "$B!G(B") ("." "$B!#(B") ("," "$B!"(B") ("<" "$B!c(B") (">" "$B!d(B")
|
|
210 ("?" "$B!)(B") ("/" "$B!?(B")
|
|
211
|
|
212 ("z1" "$B!{(B") ("z!" "$B!|(B")
|
|
213 ("z2" "$B"&(B") ("z@" "$B"'(B")
|
|
214 ("z3" "$B"$(B") ("z#" "$B"%(B")
|
|
215 ("z4" "$B""(B") ("z$" "$B"#(B")
|
|
216 ("z5" "$B!~(B") ("z%" "$B"!(B")
|
|
217 ("z6" "$B!y(B") ("z^" "$B!z(B")
|
|
218 ("z7" "$B!}(B") ("z&" "$B!r(B")
|
|
219 ("z8" "$B!q(B") ("z*" "$B!_(B")
|
|
220 ("z9" "$B!i(B") ("z(" "$B!Z(B")
|
|
221 ("z0" "$B!j(B") ("z)" "$B![(B")
|
|
222 ("z-" "$B!A(B") ("z_" "$B!h(B")
|
|
223 ("z=" "$B!b(B") ("z+" "$B!^(B")
|
|
224 ("z\\" "$B!@(B") ("z|" "$B!B(B")
|
|
225 ("z`" "$B!-(B") ("z~" "$B!/(B")
|
|
226
|
|
227 ("zq" "$B!T(B") ("zQ" "$B!R(B")
|
|
228 ("zw" "$B!U(B") ("zW" "$B!S(B")
|
|
229 ("zr" "$B!9(B") ("zR" "$B!8(B")
|
|
230 ("zt" "$B!:(B") ("zT" "$B!x(B")
|
|
231 ("zp" "$B")(B") ("zP" "$B",(B")
|
|
232 ("z[" "$B!X(B") ("z{" "$B!L(B")
|
|
233 ("z]" "$B!Y(B") ("z}" "$B!M(B")
|
|
234
|
|
235 ("zs" "$B!3(B") ("zS" "$B!4(B")
|
|
236 ("zd" "$B!5(B") ("zD" "$B!6(B")
|
|
237 ("zf" "$B!7(B") ("zF" "$B"*(B")
|
|
238 ("zg" "$B!>(B") ("zG" "$B!=(B")
|
|
239 ("zh" "$B"+(B")
|
|
240 ("zj" "$B"-(B")
|
|
241 ("zk" "$B",(B")
|
|
242 ("zl" "$B"*(B")
|
|
243 ("z;" "$B!+(B") ("z:" "$B!,(B")
|
|
244 ("z\'" "$B!F(B") ("z\"" "$B!H(B")
|
|
245
|
|
246 ("zx" ":-") ("zX" ":-)")
|
|
247 ("zc" "$B!;(B") ("zC" "$B!n(B")
|
|
248 ("zv" "$B"((B") ("zV" "$B!`(B")
|
|
249 ("zb" "$B!k(B") ("zB" "$B"+(B")
|
|
250 ("zn" "$B!l(B") ("zN" "$B"-(B")
|
|
251 ("zm" "$B!m(B") ("zM" "$B".(B")
|
|
252 ("z," "$B!E(B") ("z<" "$B!e(B")
|
|
253 ("z." "$B!D(B") ("z>" "$B!f(B")
|
|
254 ("z/" "$B!&(B") ("z?" "$B!g(B")
|
|
255
|
|
256 ("\\\\" quail-japanese-self-insert-and-switch-to-alpha)
|
|
257 ("{{" quail-japanese-self-insert-and-switch-to-alpha)
|
|
258 ("}}" quail-japanese-self-insert-and-switch-to-alpha)
|
|
259
|
|
260 ("qq" quail-japanese-switch-package)
|
|
261 ("qz" quail-japanese-switch-package)
|
|
262
|
|
263 )
|
|
264
|
|
265 (quail-define-package "quail-ja-alpha" "Japanese" "Aa"
|
|
266 nil
|
|
267 "Temporary ASCII input mode.
|
|
268 Type \"qq\" to go back to previous package.
|
|
269 "
|
|
270 nil t t)
|
|
271
|
|
272 (quail-define-rules ("qq" quail-japanese-switch-package))
|
|
273
|
|
274 (quail-define-package "quail-ja-zenkaku" "Japanese" "$B#A(B"
|
|
275 nil
|
|
276 "Zenkaku alpha numeric character input method.
|
|
277 ---- Special key bindings ----
|
|
278 qq: toggle between `quail-ja-zenkaku' and `quail-ja-alpha'
|
|
279 qh: use `quail-ja' package, \"qz\" puts you back to `quail-ja-zenkaku'
|
|
280 "
|
|
281 nil t t)
|
|
282
|
|
283 (quail-define-rules
|
|
284
|
|
285 (" " "$B!!(B") ("!" "$B!*(B") ("\"" "$B!m(B") ("#" "$B!t(B")
|
|
286 ("$" "$B!p(B") ("%" "$B!s(B") ("&" "$B!u(B") ("'" "$B!l(B")
|
|
287 ("(" "$B!J(B") (")" "$B!K(B") ("*" "$B!v(B") ("+" "$B!\(B")
|
|
288 ("," "$B!$(B") ("-" "$B!](B") ("." "$B!%(B") ("/" "$B!?(B")
|
|
289 ("0" "$B#0(B") ("1" "$B#1(B") ("2" "$B#2(B") ("3" "$B#3(B")
|
|
290 ("4" "$B#4(B") ("5" "$B#5(B") ("6" "$B#6(B") ("7" "$B#7(B")
|
|
291 ("8" "$B#8(B") ("9" "$B#9(B") (":" "$B!'(B") (";" "$B!((B")
|
|
292 ("<" "$B!c(B") ("=" "$B!a(B") (">" "$B!d(B") ("?" "$B!)(B")
|
|
293 ("@" "$B!w(B") ("A" "$B#A(B") ("B" "$B#B(B") ("C" "$B#C(B")
|
|
294 ("D" "$B#D(B") ("E" "$B#E(B") ("F" "$B#F(B") ("G" "$B#G(B")
|
|
295 ("H" "$B#H(B") ("I" "$B#I(B") ("J" "$B#J(B") ("K" "$B#K(B")
|
|
296 ("L" "$B#L(B") ("M" "$B#M(B") ("N" "$B#N(B") ("O" "$B#O(B")
|
|
297 ("P" "$B#P(B") ("Q" "$B#Q(B") ("R" "$B#R(B") ("S" "$B#S(B")
|
|
298 ("T" "$B#T(B") ("U" "$B#U(B") ("V" "$B#V(B") ("W" "$B#W(B")
|
|
299 ("X" "$B#X(B") ("Y" "$B#Y(B") ("Z" "$B#Z(B") ("[" "$B!N(B")
|
|
300 ("\\" "$B!o(B") ("]" "$B!O(B") ("^" "$B!0(B") ("_" "$B!2(B")
|
|
301 ("`" "$B!F(B") ("a" "$B#a(B") ("b" "$B#b(B") ("c" "$B#c(B")
|
|
302 ("d" "$B#d(B") ("e" "$B#e(B") ("f" "$B#f(B") ("g" "$B#g(B")
|
|
303 ("h" "$B#h(B") ("i" "$B#i(B") ("j" "$B#j(B") ("k" "$B#k(B")
|
|
304 ("l" "$B#l(B") ("m" "$B#m(B") ("n" "$B#n(B") ("o" "$B#o(B")
|
|
305 ("p" "$B#p(B") ("q" "$B#q(B") ("r" "$B#r(B") ("s" "$B#s(B")
|
|
306 ("t" "$B#t(B") ("u" "$B#u(B") ("v" "$B#v(B") ("w" "$B#w(B")
|
|
307 ("x" "$B#x(B") ("y" "$B#y(B") ("z" "$B#z(B") ("{" "$B!P(B")
|
|
308 ("|" "$B!C(B") ("}" "$B!Q(B") ("~" "$B!A(B")
|
|
309
|
|
310 ("qq" quail-japanese-switch-package)
|
|
311 ("qh" quail-japanese-switch-package)
|
|
312 )
|
|
313
|
|
314 (defun quail-japanese-hankaku-update-translation (control-flag)
|
|
315 (cond ((eq control-flag t)
|
|
316 (insert (japanese-hankaku quail-current-str))
|
|
317 (quail-terminate-translation))
|
|
318 ((null control-flag)
|
|
319 (insert (if quail-current-str
|
|
320 (japanese-hankaku quail-current-str)
|
|
321 quail-current-key)))
|
|
322 (t ; i.e. (numberp control-flag)
|
|
323 (cond ((= (aref quail-current-key 0) ?n)
|
|
324 (insert ?(I](B))
|
|
325 ((= (aref quail-current-key 0) (aref quail-current-key 1))
|
|
326 (insert ?(I/(B))
|
|
327 (t
|
|
328 (insert (aref quail-current-key 0))))
|
|
329 (setq unread-command-events
|
|
330 (list (aref quail-current-key control-flag)))
|
|
331 (quail-terminate-translation))))
|
|
332
|
|
333
|
|
334 (quail-define-package "quail-ja-hankaku-kana" "Japanese" "(I11(B"
|
|
335 nil
|
|
336 "Hankaku katakana input method.
|
|
337 ---- Special key bindings ----
|
|
338 qq: toggle between `quail-ja-zenkaku' and `quail-ja-alpha'
|
|
339 "
|
|
340 nil t t nil nil nil nil nil
|
|
341 'quail-japanese-hankaku-update-translation)
|
|
342
|
|
343 ;; Use the same map as that of `quail-ja'.
|
|
344 (setcar (cdr (cdr quail-current-package))
|
|
345 (nth 2 (assoc "quail-ja" quail-package-alist)))
|
|
346
|
|
347 (quail-define-package "quail-ja-hiragana" "Japanese" "$B$"(B"
|
|
348 nil
|
|
349 "Hiragana input method by Roman transliteration."
|
|
350 nil t t nil nil nil nil nil
|
|
351 'quail-japanese-update-translation)
|
|
352 ;; Use the same map as that of `quail-ja'.
|
|
353 (setcar (cdr (cdr quail-current-package))
|
|
354 (nth 2 (assoc "quail-ja" quail-package-alist)))
|
|
355
|
|
356 ;; Update Quail translation region while converting Hiragana to Katakana.
|
|
357 (defun quail-japanese-katakana-update-translation (control-flag)
|
|
358 (cond ((eq control-flag t)
|
|
359 (insert (japanese-katakana quail-current-str))
|
|
360 (quail-terminate-translation))
|
|
361 ((null control-flag)
|
|
362 (insert (if quail-current-str
|
|
363 (japanese-katakana quail-current-str)
|
|
364 quail-current-key)))
|
|
365 (t ; i.e. (numberp control-flag)
|
|
366 (cond ((= (aref quail-current-key 0) ?n)
|
|
367 (insert ?$B%s(B))
|
|
368 ((= (aref quail-current-key 0) (aref quail-current-key 1))
|
|
369 (insert ?$B%C(B))
|
|
370 (t
|
|
371 (insert (aref quail-current-key 0))))
|
|
372 (setq unread-command-events
|
|
373 (list (aref quail-current-key control-flag)))
|
|
374 (quail-terminate-translation))))
|
|
375
|
|
376 (quail-define-package "quail-ja-katakana" "Japanese" "$B%"(B"
|
|
377 nil
|
|
378 "Katakana input method by Roman Transliteration."
|
|
379 nil t t nil nil nil nil nil
|
|
380 'quail-japanese-katakana-update-translation)
|
|
381
|
|
382 ;; Use the same map as that of `quail-ja'.
|
|
383 (setcar (cdr (cdr quail-current-package))
|
|
384 (nth 2 (assoc "quail-ja" quail-package-alist)))
|