1 ;;; quail/japanese.el --- Quail package for inputting Japanese
3 ;; Copyright (C) 1997 Electrotechnical Laboratory, JAPAN.
4 ;; Licensed to the Free Software Foundation.
6 ;; Keywords: multilingual, input method, Japanese
8 ;; This file is part of GNU Emacs.
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)
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.
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 the
22 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
23 ;; Boston, MA 02111-1307, USA.
30 ;; Update Quail translation region for Japanese bizarre translation
32 (defun quail-japanese-update-translation (control-flag)
33 (cond ((eq control-flag t)
34 (insert quail-current-str)
35 (quail-terminate-translation))
37 (if (/= (aref quail-current-key 0) ?q)
38 (insert (or quail-current-str quail-current-key))))
39 (t ; i.e. (numberp control-flag)
40 (cond ((= (aref quail-current-key 0) ?n)
42 ((= (aref quail-current-key 0) (aref quail-current-key 1))
45 (insert (aref quail-current-key 0))))
46 (setq unread-command-events
47 (list (aref quail-current-key control-flag)))
48 (quail-terminate-translation))))
50 ;; Flag to control the behavior of `quail-japanese-toggle-kana'.
51 (defvar quail-japanese-kana-state nil)
52 (make-variable-buffer-local 'quail-japanese-kana-state)
54 ;; Convert Hiragana <-> Katakana in the current translation region.
55 (defun quail-japanese-toggle-kana ()
57 (if (quail-point-in-conversion-region)
58 (let ((start (overlay-start quail-conv-overlay))
59 (end (overlay-end quail-conv-overlay)))
60 (setq quail-japanese-kana-state
61 (if (eq last-command this-command)
62 (not quail-japanese-kana-state)))
63 (if quail-japanese-kana-state
64 (japanese-hiragana-region start end)
65 (japanese-katakana-region start end))
66 (goto-char (overlay-end quail-conv-overlay))
67 (setq quail-exit-conversion-mode t))
68 ;; When this command is invoked, the point is not in a valid
69 ;; region. Try the event which invoked this command again out of
71 (setq unread-command-events (list last-command-event))
74 ;; Convert Hiragana in the current translation region to Kanji by KKC
75 ;; (Kana Kanji Converter) utility.
76 (defun quail-japanese-kanji-kkc ()
78 (if (quail-point-in-conversion-region)
79 (let ((from (overlay-start quail-conv-overlay))
80 (to (overlay-end quail-conv-overlay))
82 (delete-overlay quail-overlay)
83 (delete-overlay quail-conv-overlay)
85 (setq newfrom (kkc-region from to))
86 ;; Activate the original (or shrinked) conversion region
89 ;; `kkc-region' is canceled.
90 (move-overlay quail-conv-overlay newfrom (point))
91 ;; `kkc-region' is terminated normally.
92 (move-overlay quail-conv-overlay from (point))
94 ;; When this command is invoked, the point is not in a valid
95 ;; region. Try the event which invoked this command again out of
97 (setq unread-command-events (list last-command-event))
100 (defun quail-japanese-self-insert-and-switch-to-alpha (key idx)
101 (quail-delete-region)
102 (setq unread-command-events (list (aref key (1- idx))))
103 (quail-japanese-switch-package "q" 1))
105 (defvar quail-japanese-switch-table
106 '((?z . "japanese-zenkaku")
107 (?k . "japanese-hankaku-kana")
109 (?q . ("japanese-ascii"))))
111 (defvar quail-japanese-package-saved nil)
112 (make-variable-buffer-local 'quail-japanese-package-saved)
113 (put 'quail-japanese-package-saved 'permanent-local t)
115 (defun quail-japanese-switch-package (key idx)
116 (let ((pkg (cdr (assq (aref key (1- idx)) quail-japanese-switch-table))))
118 (error "No package to be switched")
119 (quail-delete-region)
121 (select-input-method pkg)
122 (if (string= (car pkg) current-input-method)
123 (if quail-japanese-package-saved
124 (select-input-method quail-japanese-package-saved))
125 (setq quail-japanese-package-saved current-input-method)
126 (select-input-method (car pkg))))
127 (throw 'quail-tag nil))))
129 (quail-define-package
130 "japanese" "Japanese" "A
\e$B$"
\e(B"
132 "Romaji -> Hiragana -> Kanji&Kana
133 ---- Special key bindings ----
134 qq: toggle between input methods `japanese' and `japanese-ascii'
135 qz: use `japanese-zenkaku' package, \"qh\" puts you back to `japanese'
136 K: toggle converting region between Katakana and Hiragana
137 SPC: convert to Kanji&Kana
138 z: insert one Japanese symbol according to a key which follows
140 nil t t nil nil nil nil nil
141 'quail-japanese-update-translation
142 '(("K" . quail-japanese-toggle-kana)
143 (" " . quail-japanese-kanji-kkc)
144 ("\C-m" . quail-no-conversion)
145 ([return] . quail-no-conversion))
150 ( "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")
151 ("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")
152 ("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")
153 ("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")
154 ("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")
155 ("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 ("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")
157 ("ya" "
\e$B$d
\e(B") ("yu" "
\e$B$f
\e(B") ("yo" "
\e$B$h
\e(B")
158 ("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")
159 ("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")
160 ("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")
162 ("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")
163 ("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")
164 ("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")
165 ("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")
166 ("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")
168 ("kya" ["
\e$B$-$c
\e(B"]) ("kyu" ["
\e$B$-$e
\e(B"]) ("kye" ["
\e$B$-$'
\e(B"]) ("kyo" ["
\e$B$-$g
\e(B"])
169 ("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"])
170 ("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"])
171 ("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"])
172 ("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"])
173 ("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"])
174 ("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"])
175 ("mya" ["
\e$B$_$c
\e(B"]) ("myu" ["
\e$B$_$e
\e(B"]) ("mye" ["
\e$B$_$'
\e(B"]) ("myo" ["
\e$B$_$g
\e(B"])
176 ("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"])
177 ("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"])
178 ("gya" ["
\e$B$.$c
\e(B"]) ("gyu" ["
\e$B$.$e
\e(B"]) ("gye" ["
\e$B$.$'
\e(B"]) ("gyo" ["
\e$B$.$g
\e(B"])
179 ("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"])
180 ("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"])
181 ( "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"])
182 ("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"])
183 ("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"])
185 ("kwa" ["
\e$B$/$n
\e(B"]) ("kwi" ["
\e$B$/$#
\e(B"]) ("kwe" ["
\e$B$/$'
\e(B"]) ("kwo" ["
\e$B$/$)
\e(B"])
186 ("tsa" ["
\e$B$D$!
\e(B"]) ("tsi" ["
\e$B$D$#
\e(B"]) ("tse" ["
\e$B$D$'
\e(B"]) ("tso" ["
\e$B$D$)
\e(B"])
187 ( "fa" ["
\e$B$U$!
\e(B"]) ( "fi" ["
\e$B$U$#
\e(B"]) ( "fe" ["
\e$B$U$'
\e(B"]) ( "fo" ["
\e$B$U$)
\e(B"])
188 ("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"])
190 ("dyi" ["
\e$B$G$#
\e(B"]) ("dyu" ["
\e$B$I$%
\e(B"]) ("dye" ["
\e$B$G$'
\e(B"]) ("dyo" ["
\e$B$I$)
\e(B"])
191 ("xwi" ["
\e$B$&$#
\e(B"]) ("xwe" ["
\e$B$&$'
\e(B"]) ("xwo" ["
\e$B$&$)
\e(B"])
193 ("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")
195 ("ye" ["
\e$B$$$'
\e(B"])
197 ("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"])
199 ("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")
200 ("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")
201 ("xka" "
\e$B%u
\e(B") ("xke" "
\e$B%v
\e(B")
203 ("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")
204 ("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")
206 ("!" "
\e$B!*
\e(B") ("@" "
\e$B!w
\e(B") ("#" "
\e$B!t
\e(B") ("$" "
\e$B!p
\e(B") ("%" "
\e$B!s
\e(B")
207 ("^" "
\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")
208 ("-" "
\e$B!<
\e(B") ("=" "
\e$B!a
\e(B") ("`" "
\e$B!.
\e(B") ("\\" "
\e$B!o
\e(B") ("|" "
\e$B!C
\e(B")
209 ("_" "
\e$B!2
\e(B") ("+" "
\e$B!\
\e(B") ("~" "
\e$B!1
\e(B") ("[" "
\e$B!V
\e(B") ("]" "
\e$B!W
\e(B")
210 ("{" "
\e$B!P
\e(B") ("}" "
\e$B!Q
\e(B") (":" "
\e$B!'
\e(B") (";" "
\e$B!(
\e(B") ("\"" "
\e$B!I
\e(B")
211 ("'" "
\e$B!G
\e(B") ("." "
\e$B!#
\e(B") ("," "
\e$B!"
\e(B") ("<" "
\e$B!c
\e(B") (">" "
\e$B!d
\e(B")
212 ("?" "
\e$B!)
\e(B") ("/" "
\e$B!?
\e(B")
214 ("z1" "
\e$B!{
\e(B") ("z!" "
\e$B!|
\e(B")
215 ("z2" "
\e$B"&
\e(B") ("z@" "
\e$B"'
\e(B")
216 ("z3" "
\e$B"$
\e(B") ("z#" "
\e$B"%
\e(B")
217 ("z4" "
\e$B""
\e(B") ("z$" "
\e$B"#
\e(B")
218 ("z5" "
\e$B!~
\e(B") ("z%" "
\e$B"!
\e(B")
219 ("z6" "
\e$B!y
\e(B") ("z^" "
\e$B!z
\e(B")
220 ("z7" "
\e$B!}
\e(B") ("z&" "
\e$B!r
\e(B")
221 ("z8" "
\e$B!q
\e(B") ("z*" "
\e$B!_
\e(B")
222 ("z9" "
\e$B!i
\e(B") ("z(" "
\e$B!Z
\e(B")
223 ("z0" "
\e$B!j
\e(B") ("z)" "
\e$B![
\e(B")
224 ("z-" "
\e$B!A
\e(B") ("z_" "
\e$B!h
\e(B")
225 ("z=" "
\e$B!b
\e(B") ("z+" "
\e$B!^
\e(B")
226 ("z\\" "
\e$B!@
\e(B") ("z|" "
\e$B!B
\e(B")
227 ("z`" "
\e$B!-
\e(B") ("z~" "
\e$B!/
\e(B")
229 ("zq" "
\e$B!T
\e(B") ("zQ" "
\e$B!R
\e(B")
230 ("zw" "
\e$B!U
\e(B") ("zW" "
\e$B!S
\e(B")
231 ("zr" "
\e$B!9
\e(B") ("zR" "
\e$B!8
\e(B")
232 ("zt" "
\e$B!:
\e(B") ("zT" "
\e$B!x
\e(B")
233 ("zp" "
\e$B")
\e(B") ("zP" "
\e$B",
\e(B")
234 ("z[" "
\e$B!X
\e(B") ("z{" "
\e$B!L
\e(B")
235 ("z]" "
\e$B!Y
\e(B") ("z}" "
\e$B!M
\e(B")
237 ("zs" "
\e$B!3
\e(B") ("zS" "
\e$B!4
\e(B")
238 ("zd" "
\e$B!5
\e(B") ("zD" "
\e$B!6
\e(B")
239 ("zf" "
\e$B!7
\e(B") ("zF" "
\e$B"*
\e(B")
240 ("zg" "
\e$B!>
\e(B") ("zG" "
\e$B!=
\e(B")
245 ("z;" "
\e$B!+
\e(B") ("z:" "
\e$B!,
\e(B")
246 ("z\'" "
\e$B!F
\e(B") ("z\"" "
\e$B!H
\e(B")
248 ("zx" ":-") ("zX" ":-)")
249 ("zc" "
\e$B!;
\e(B") ("zC" "
\e$B!n
\e(B")
250 ("zv" "
\e$B"(
\e(B") ("zV" "
\e$B!`
\e(B")
251 ("zb" "
\e$B!k
\e(B") ("zB" "
\e$B"+
\e(B")
252 ("zn" "
\e$B!l
\e(B") ("zN" "
\e$B"-
\e(B")
253 ("zm" "
\e$B!m
\e(B") ("zM" "
\e$B".
\e(B")
254 ("z," "
\e$B!E
\e(B") ("z<" "
\e$B!e
\e(B")
255 ("z." "
\e$B!D
\e(B") ("z>" "
\e$B!f
\e(B")
256 ("z/" "
\e$B!&
\e(B") ("z?" "
\e$B!g
\e(B")
258 ("\\\\" quail-japanese-self-insert-and-switch-to-alpha)
259 ("{{" quail-japanese-self-insert-and-switch-to-alpha)
260 ("}}" quail-japanese-self-insert-and-switch-to-alpha)
262 ("qq" quail-japanese-switch-package)
263 ("qz" quail-japanese-switch-package)
267 (quail-define-package
268 "japanese-ascii" "Japanese" "Aa"
270 "Temporary ASCII input mode while using Quail package `japanese'
271 Type \"qq\" to go back to previous package."
274 (quail-define-rules ("qq" quail-japanese-switch-package))
276 (quail-define-package
277 "japanese-zenkaku" "Japanese" "
\e$B#A
\e(B"
279 "Japanese zenkaku alpha numeric character input method
280 ---- Special key bindings ----
281 qq: toggle between `japanese-zenkaku' and `japanese-ascii'
282 qh: use `japanese' package, \"qz\" puts you back to `japanese-zenkaku'
288 (" " "
\e$B!!
\e(B") ("!" "
\e$B!*
\e(B") ("\"" "
\e$B!m
\e(B") ("#" "
\e$B!t
\e(B")
289 ("$" "
\e$B!p
\e(B") ("%" "
\e$B!s
\e(B") ("&" "
\e$B!u
\e(B") ("'" "
\e$B!l
\e(B")
290 ("(" "
\e$B!J
\e(B") (")" "
\e$B!K
\e(B") ("*" "
\e$B!v
\e(B") ("+" "
\e$B!\
\e(B")
291 ("," "
\e$B!$
\e(B") ("-" "
\e$B!]
\e(B") ("." "
\e$B!%
\e(B") ("/" "
\e$B!?
\e(B")
292 ("0" "
\e$B#0
\e(B") ("1" "
\e$B#1
\e(B") ("2" "
\e$B#2
\e(B") ("3" "
\e$B#3
\e(B")
293 ("4" "
\e$B#4
\e(B") ("5" "
\e$B#5
\e(B") ("6" "
\e$B#6
\e(B") ("7" "
\e$B#7
\e(B")
294 ("8" "
\e$B#8
\e(B") ("9" "
\e$B#9
\e(B") (":" "
\e$B!'
\e(B") (";" "
\e$B!(
\e(B")
295 ("<" "
\e$B!c
\e(B") ("=" "
\e$B!a
\e(B") (">" "
\e$B!d
\e(B") ("?" "
\e$B!)
\e(B")
296 ("@" "
\e$B!w
\e(B") ("A" "
\e$B#A
\e(B") ("B" "
\e$B#B
\e(B") ("C" "
\e$B#C
\e(B")
297 ("D" "
\e$B#D
\e(B") ("E" "
\e$B#E
\e(B") ("F" "
\e$B#F
\e(B") ("G" "
\e$B#G
\e(B")
298 ("H" "
\e$B#H
\e(B") ("I" "
\e$B#I
\e(B") ("J" "
\e$B#J
\e(B") ("K" "
\e$B#K
\e(B")
299 ("L" "
\e$B#L
\e(B") ("M" "
\e$B#M
\e(B") ("N" "
\e$B#N
\e(B") ("O" "
\e$B#O
\e(B")
300 ("P" "
\e$B#P
\e(B") ("Q" "
\e$B#Q
\e(B") ("R" "
\e$B#R
\e(B") ("S" "
\e$B#S
\e(B")
301 ("T" "
\e$B#T
\e(B") ("U" "
\e$B#U
\e(B") ("V" "
\e$B#V
\e(B") ("W" "
\e$B#W
\e(B")
302 ("X" "
\e$B#X
\e(B") ("Y" "
\e$B#Y
\e(B") ("Z" "
\e$B#Z
\e(B") ("[" "
\e$B!N
\e(B")
303 ("\\" "
\e$B!o
\e(B") ("]" "
\e$B!O
\e(B") ("^" "
\e$B!0
\e(B") ("_" "
\e$B!2
\e(B")
304 ("`" "
\e$B!F
\e(B") ("a" "
\e$B#a
\e(B") ("b" "
\e$B#b
\e(B") ("c" "
\e$B#c
\e(B")
305 ("d" "
\e$B#d
\e(B") ("e" "
\e$B#e
\e(B") ("f" "
\e$B#f
\e(B") ("g" "
\e$B#g
\e(B")
306 ("h" "
\e$B#h
\e(B") ("i" "
\e$B#i
\e(B") ("j" "
\e$B#j
\e(B") ("k" "
\e$B#k
\e(B")
307 ("l" "
\e$B#l
\e(B") ("m" "
\e$B#m
\e(B") ("n" "
\e$B#n
\e(B") ("o" "
\e$B#o
\e(B")
308 ("p" "
\e$B#p
\e(B") ("q" "
\e$B#q
\e(B") ("r" "
\e$B#r
\e(B") ("s" "
\e$B#s
\e(B")
309 ("t" "
\e$B#t
\e(B") ("u" "
\e$B#u
\e(B") ("v" "
\e$B#v
\e(B") ("w" "
\e$B#w
\e(B")
310 ("x" "
\e$B#x
\e(B") ("y" "
\e$B#y
\e(B") ("z" "
\e$B#z
\e(B") ("{" "
\e$B!P
\e(B")
311 ("|" "
\e$B!C
\e(B") ("}" "
\e$B!Q
\e(B") ("~" "
\e$B!A
\e(B")
313 ("qq" quail-japanese-switch-package)
314 ("qh" quail-japanese-switch-package)
317 (defun quail-japanese-hankaku-update-translation (control-flag)
318 (cond ((eq control-flag t)
319 (insert (japanese-hankaku quail-current-str))
320 (quail-terminate-translation))
322 (insert (if quail-current-str
323 (japanese-hankaku quail-current-str)
325 (t ; i.e. (numberp control-flag)
326 (cond ((= (aref quail-current-key 0) ?n)
328 ((= (aref quail-current-key 0) (aref quail-current-key 1))
331 (insert (aref quail-current-key 0))))
332 (setq unread-command-events
333 (list (aref quail-current-key control-flag)))
334 (quail-terminate-translation))))
337 (quail-define-package
338 "japanese-hankaku-kana"
339 "Japanese" "
\e(I1
\e(B"
341 "Japanese hankaku katakana input method by Roman transliteration
342 ---- Special key bindings ----
343 qq: toggle between `japanese-hankaku-kana' and `japanese-ascii'
345 nil t t nil nil nil nil nil
346 'quail-japanese-hankaku-update-translation)
348 ;; Use the same map as that of `japanese'.
349 (setcar (cdr (cdr quail-current-package))
350 (nth 2 (assoc "japanese" quail-package-alist)))
352 (quail-define-package
353 "japanese-hiragana" "Japanese" "
\e$B$"
\e(B"
355 "Japanese hiragana input method by Roman transliteration"
356 nil t t nil nil nil nil nil
357 'quail-japanese-update-translation)
359 ;; Use the same map as that of `japanese'.
360 (setcar (cdr (cdr quail-current-package))
361 (nth 2 (assoc "japanese" quail-package-alist)))
363 ;; Update Quail translation region while converting Hiragana to Katakana.
364 (defun quail-japanese-katakana-update-translation (control-flag)
365 (cond ((eq control-flag t)
366 (insert (japanese-katakana quail-current-str))
367 (quail-terminate-translation))
369 (insert (if quail-current-str
370 (japanese-katakana quail-current-str)
372 (t ; i.e. (numberp control-flag)
373 (cond ((= (aref quail-current-key 0) ?n)
374 (insert ?
\e$B%s
\e(B))
375 ((= (aref quail-current-key 0) (aref quail-current-key 1))
376 (insert ?
\e$B%C
\e(B))
378 (insert (aref quail-current-key 0))))
379 (setq unread-command-events
380 (list (aref quail-current-key control-flag)))
381 (quail-terminate-translation))))
383 (quail-define-package
384 "japanese-katakana" "Japanese" "
\e$B%"
\e(B"
386 "Japanese katakana input method by Roman transliteration"
387 nil t t nil nil nil nil nil
388 'quail-japanese-katakana-update-translation)
390 ;; Use the same map as that of `japanese'.
391 (setcar (cdr (cdr quail-current-package))
392 (nth 2 (assoc "japanese" quail-package-alist)))