+;;; its/kata.el --- Katakana Input in Egg Input Method Architecture
+
+;; Copyright (C) 1997, 1998 Mule Project,
+;; Powered by Electrotechnical Laboratory, JAPAN.
+;; Project Leader: Satoru Tomura <tomura@etl.go.jp>
+
+;; Author: Satoru Tomura <tomura@etl.go.jp>
+;; jiro@math.keio.ac.jp (TANAKA Jiro)
+
+;; This file will be part of GNU Emacs (in future).
+
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING. If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Commentary:
+;;
+;; Symbol input is desined by jiro@math.keio.ac.jp (TANAKA Jiro)
+;; This file is based on the rules of its/kata.el in Mule-2.3 distribution.
+;;
+
+;;; Code:
+
+(eval-when-compile
+ (require 'its)
+ (require 'cl))
+
+(defvar its-kata-enable-double-n nil "*Enable \"nn\" input for \"\e$B%s\e(B\" ")
+(defvar its-kata-enable-zenkaku-alphabet t "*Enable Zenkaku alphabet")
+(defvar its-kata-period "\e$B!#\e(B" "*\e$B%T%j%*%I\e(B") ; ". " "\e$B!%\e(B"
+(defvar its-kata-comma "\e$B!"\e(B" "*\e$B%3%s%^\e(B") ; ", " "\e$B!$\e(B"
+(defvar its-kata-open-bracket "\e$B!V\e(B" "*[") ; "\e$B!N\e(B"
+(defvar its-kata-close-bracket "\e$B!W\e(B" "*]") ; "\e$B!O\e(B"
+(defvar its-kata-horizontal "\e$B!<\e(B" "*-") ; "\e$B!]\e(B"
+
+(define-its-state-machine its-kata-map
+ "roma-kata" "\e$B%"\e(B" "Japanese" nil
+ "Map for Romaji-Katakana translation. (Japanese)"
+
+ (defconst its-zenkaku-escape "Z") ;; Escape character to Zenkaku inputs
+ (defconst its-hankaku-escape "~") ;; Escape character to Hankaku inputs
+
+ (its-defrule-select-mode-temporally "q" downcase)
+ (its-defrule-select-mode-temporally "Q" zenkaku-downcase)
+
+;;; k k
+;;; kk \e$B%C\e(Bk
+;;; kka \e$B%C%+\e(B
+;;;
+;;; kkk \e$B%C\e(Bk DING!
+
+ (its-defrule "tch" "\e$B%C\e(B" -2)
+
+;;; \e$B!V%s!W$NF~NO\e(B
+
+ (dolist (q1 '("b" "m" "p"))
+ (its-defrule (concat "m" q1) "\e$B%s\e(B" -1))
+
+ (its-defrule "N" "\e$B%s\e(B")
+
+ (let ((state (its-goto-state "n" nil t)))
+ (its-make-next-state state -1 "n" "\e$B%s\e(B")
+ (its-make-next-state state ?' "n" "\e$B%s\e(B")
+ (its-defrule-otherwise state "\e$B%s\e(B"))
+
+ (let ((small '"x" ))
+ (its-defrule (concat small "a") "\e$B%!\e(B")
+ (its-defrule (concat small "i") "\e$B%#\e(B")
+ (its-defrule (concat small "u") "\e$B%%\e(B")
+ (its-defrule (concat small "e") "\e$B%'\e(B")
+ (its-defrule (concat small "o") "\e$B%)\e(B")
+ (its-defrule (concat small "ya") "\e$B%c\e(B")
+ (its-defrule (concat small "yu") "\e$B%e\e(B")
+ (its-defrule (concat small "yo") "\e$B%g\e(B")
+ (its-defrule (concat small "tu") "\e$B%C\e(B")
+ (its-defrule (concat small "tsu") "\e$B%C\e(B")
+ (its-defrule (concat small "wa") "\e$B%n\e(B")
+ )
+
+ (its-defrule "a" "\e$B%"\e(B")
+ (its-defrule "i" "\e$B%$\e(B")
+ (its-defrule "u" "\e$B%&\e(B")
+ (its-defrule "e" "\e$B%(\e(B")
+ (its-defrule "o" "\e$B%*\e(B")
+
+ (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")
+ ("kya" "\e$B%-%c\e(B") ("kyu" "\e$B%-%e\e(B") ("kye" "\e$B%-%'\e(B") ("kyo" "\e$B%-%g\e(B")))
+ (its-defrule (car k) (cadr k))
+ (its-defrule (concat "k" (car k)) (concat "\e$B%C\e(B" (cadr k))))
+ (its-defoutput "kk" "\e$B%C\e(Bk")
+ (its-defoutput "kky" "\e$B%C\e(Bky")
+
+ (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")
+ ("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")
+ ("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")
+ ("sho" "\e$B%7%g\e(B")))
+ (its-defrule (car s) (cadr s))
+ (its-defrule (concat "s" (car s)) (concat "\e$B%C\e(B" (cadr s))))
+ (its-defoutput "ss" "\e$B%C\e(Bs")
+ (its-defoutput "ssy" "\e$B%C\e(Bsy")
+ (its-defoutput "ssh" "\e$B%C\e(Bsh")
+
+ (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")
+ ("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")
+ ("tyo" "\e$B%A%g\e(B") ("tsu" "\e$B%D\e(B")))
+ (its-defrule (car T) (cadr T))
+ (its-defrule (concat "t" (car T)) (concat "\e$B%C\e(B" (cadr T))))
+ (its-defoutput "tt" "\e$B%C\e(Bt")
+ (its-defoutput "tty" "\e$B%C\e(Bty")
+ (its-defoutput "tts" "\e$B%C\e(Bts")
+
+ (dolist (c '(("cha" "\e$B%A%c\e(B") ("chi" "\e$B%A\e(B") ("chu" "\e$B%A%e\e(B")
+ ("che" "\e$B%A%'\e(B") ("cho" "\e$B%A%g\e(B")))
+ (its-defrule (car c) (cadr c))
+ (its-defrule (concat "c" (car c)) (concat "\e$B%C\e(B" (cadr c))))
+ (its-defoutput "cc" "\e$B%C\e(Bc")
+ (its-defoutput "cch" "\e$B%C\e(Bch")
+
+ (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")
+ ("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")))
+ (its-defrule (car h) (cadr h))
+ (its-defrule (concat "h" (car h)) (concat "\e$B%C\e(B" (cadr h))))
+ (its-defoutput "hh" "\e$B%C\e(Bh")
+ (its-defoutput "hhy" "\e$B%C\e(Bhy")
+
+ (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")
+ ("fo" "\e$B%U%)\e(B")))
+ (its-defrule (car f) (cadr f))
+ (its-defrule (concat "f" (car f)) (concat "\e$B%C\e(B" (cadr f))))
+ (its-defoutput "ff" "\e$B%C\e(Bf")
+
+ (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")
+ ("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")))
+ (its-defrule (car r) (cadr r))
+ (its-defrule (concat "r" (car r)) (concat "\e$B%C\e(B" (cadr r))))
+ (its-defoutput "rr" "\e$B%C\e(Br")
+ (its-defoutput "rry" "\e$B%C\e(Bry")
+
+ (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")
+ ("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")))
+ (its-defrule (car l) (cadr l))
+ (its-defrule (concat "l" (car l)) (concat "\e$B%C\e(B" (cadr l))))
+ (its-defoutput "ll" "\e$B%C\e(Bl")
+ (its-defoutput "lly" "\e$B%C\e(Bly")
+
+ (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")
+ ("gya" "\e$B%.%c\e(B") ("gyu" "\e$B%.%e\e(B") ("gye" "\e$B%.%'\e(B") ("gyo" "\e$B%.%g\e(B")))
+ (its-defrule (car g) (cadr g))
+ (its-defrule (concat "g" (car g)) (concat "\e$B%C\e(B" (cadr g))))
+ (its-defoutput "gg" "\e$B%C\e(Bg")
+ (its-defoutput "ggy" "\e$B%C\e(Bgy")
+
+ (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")
+ ("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")))
+ (its-defrule (car z) (cadr z))
+ (its-defrule (concat "z" (car z)) (concat "\e$B%C\e(B" (cadr z))))
+ (its-defoutput "zz" "\e$B%C\e(Bz")
+ (its-defoutput "zzy" "\e$B%C\e(Bzy")
+
+ (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")
+ ("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")
+ ("jyo" "\e$B%8%g\e(B")))
+ (its-defrule (car j) (cadr j))
+ (its-defrule (concat "j" (car j)) (concat "\e$B%C\e(B" (cadr j))))
+ (its-defoutput "jj" "\e$B%C\e(Bj")
+ (its-defoutput "jjy" "\e$B%C\e(Bjy")
+
+ (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")
+ ("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")
+ ("dyo" "\e$B%B%g\e(B")))
+ (its-defrule (car d) (cadr d))
+ (its-defrule (concat "d" (car d)) (concat "\e$B%C\e(B" (cadr d))))
+ (its-defoutput "dd" "\e$B%C\e(Bd")
+ (its-defoutput "ddy" "\e$B%C\e(Bdy")
+
+ (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")
+ ("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")))
+ (its-defrule (car b) (cadr b))
+ (its-defrule (concat "b" (car b)) (concat "\e$B%C\e(B" (cadr b))))
+ (its-defoutput "bb" "\e$B%C\e(Bb")
+ (its-defoutput "bby" "\e$B%C\e(Bby")
+
+ (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")
+ ("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")))
+ (its-defrule (car p) (cadr p))
+ (its-defrule (concat "p" (car p)) (concat "\e$B%C\e(B" (cadr p))))
+ (its-defoutput "pp" "\e$B%C\e(Bp")
+ (its-defoutput "ppy" "\e$B%C\e(Bpy")
+
+ (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")
+ ("vo" "\e$B%t%)\e(B")))
+ (its-defrule (car v) (cadr v))
+ (its-defrule (concat "v" (car v)) (concat "\e$B%C\e(B" (cadr v))))
+ (its-defoutput "vv" "\e$B%C\e(Bv")
+
+ (its-defrule "ma" "\e$B%^\e(B")
+ (its-defrule "mi" "\e$B%_\e(B")
+ (its-defrule "mu" "\e$B%`\e(B")
+ (its-defrule "me" "\e$B%a\e(B")
+ (its-defrule "mo" "\e$B%b\e(B")
+ (its-defrule "mya" "\e$B%_%c\e(B")
+ (its-defrule "myu" "\e$B%_%e\e(B")
+ (its-defrule "mye" "\e$B%_%'\e(B")
+ (its-defrule "myo" "\e$B%_%g\e(B")
+ (its-defrule "ya" "\e$B%d\e(B")
+ (its-defrule "yi" "\e$B%$\e(B")
+ (its-defrule "yu" "\e$B%f\e(B")
+ (its-defrule "yo" "\e$B%h\e(B")
+ (its-defrule "ye" "\e$B%$%'\e(B")
+ (its-defrule "wa" "\e$B%o\e(B")
+ (its-defrule "wi" "\e$B%p\e(B")
+ (its-defrule "wu" "\e$B%&\e(B")
+ (its-defrule "we" "\e$B%q\e(B")
+ (its-defrule "wo" "\e$B%r\e(B")
+
+ (its-defrule "kwa" "\e$B%/%n\e(B")
+ (its-defrule "kwi" "\e$B%/%#\e(B")
+ (its-defrule "kwu" "\e$B%/\e(B")
+ (its-defrule "kwe" "\e$B%/%'\e(B")
+ (its-defrule "kwo" "\e$B%/%)\e(B")
+ (its-defrule "gwa" "\e$B%0%n\e(B")
+ (its-defrule "gwi" "\e$B%0%#\e(B")
+ (its-defrule "gwu" "\e$B%0\e(B")
+ (its-defrule "gwe" "\e$B%0%'\e(B")
+ (its-defrule "gwo" "\e$B%0%)\e(B")
+ (its-defrule "tsa" "\e$B%D%!\e(B")
+ (its-defrule "tsi" "\e$B%D%#\e(B")
+ (its-defrule "tse" "\e$B%D%'\e(B")
+ (its-defrule "tso" "\e$B%D%)\e(B")
+
+ (its-defrule "na" "\e$B%J\e(B")
+ (its-defrule "ni" "\e$B%K\e(B")
+ (its-defrule "nu" "\e$B%L\e(B")
+ (its-defrule "ne" "\e$B%M\e(B")
+ (its-defrule "no" "\e$B%N\e(B")
+ (its-defrule "nya" "\e$B%K%c\e(B")
+ (its-defrule "nyu" "\e$B%K%e\e(B")
+ (its-defrule "nye" "\e$B%K%'\e(B")
+ (its-defrule "nyo" "\e$B%K%g\e(B")
+
+ (its-defrule "xka" "\e$B%u\e(B")
+ (its-defrule "xke" "\e$B%v\e(B")
+ (its-defrule "xti" "\e$B%F%#\e(B")
+ (its-defrule "xdi" "\e$B%G%#\e(B")
+ (its-defrule "xdu" "\e$B%I%%\e(B")
+ (its-defrule "xde" "\e$B%G%'\e(B")
+ (its-defrule "xdo" "\e$B%I%)\e(B")
+ (its-defrule "xwi" "\e$B%&%#\e(B")
+ (its-defrule "xwe" "\e$B%&%'\e(B")
+ (its-defrule "xwo" "\e$B%&%)\e(B")
+
+;;;
+;;; Zenkaku inputs
+;;;
+
+ (its-defrule (concat its-zenkaku-escape "0") "\e$B#0\e(B")
+ (its-defrule (concat its-zenkaku-escape "1") "\e$B#1\e(B")
+ (its-defrule (concat its-zenkaku-escape "2") "\e$B#2\e(B")
+ (its-defrule (concat its-zenkaku-escape "3") "\e$B#3\e(B")
+ (its-defrule (concat its-zenkaku-escape "4") "\e$B#4\e(B")
+ (its-defrule (concat its-zenkaku-escape "5") "\e$B#5\e(B")
+ (its-defrule (concat its-zenkaku-escape "6") "\e$B#6\e(B")
+ (its-defrule (concat its-zenkaku-escape "7") "\e$B#7\e(B")
+ (its-defrule (concat its-zenkaku-escape "8") "\e$B#8\e(B")
+ (its-defrule (concat its-zenkaku-escape "9") "\e$B#9\e(B")
+
+ (its-defrule (concat its-zenkaku-escape "A") "\e$B#A\e(B")
+ (its-defrule (concat its-zenkaku-escape "B") "\e$B#B\e(B")
+ (its-defrule (concat its-zenkaku-escape "C") "\e$B#C\e(B")
+ (its-defrule (concat its-zenkaku-escape "D") "\e$B#D\e(B")
+ (its-defrule (concat its-zenkaku-escape "E") "\e$B#E\e(B")
+ (its-defrule (concat its-zenkaku-escape "F") "\e$B#F\e(B")
+ (its-defrule (concat its-zenkaku-escape "G") "\e$B#G\e(B")
+ (its-defrule (concat its-zenkaku-escape "H") "\e$B#H\e(B")
+ (its-defrule (concat its-zenkaku-escape "I") "\e$B#I\e(B")
+ (its-defrule (concat its-zenkaku-escape "J") "\e$B#J\e(B")
+ (its-defrule (concat its-zenkaku-escape "K") "\e$B#K\e(B")
+ (its-defrule (concat its-zenkaku-escape "L") "\e$B#L\e(B")
+ (its-defrule (concat its-zenkaku-escape "M") "\e$B#M\e(B")
+ (its-defrule (concat its-zenkaku-escape "N") "\e$B#N\e(B")
+ (its-defrule (concat its-zenkaku-escape "O") "\e$B#O\e(B")
+ (its-defrule (concat its-zenkaku-escape "P") "\e$B#P\e(B")
+ (its-defrule (concat its-zenkaku-escape "Q") "\e$B#Q\e(B")
+ (its-defrule (concat its-zenkaku-escape "R") "\e$B#R\e(B")
+ (its-defrule (concat its-zenkaku-escape "S") "\e$B#S\e(B")
+ (its-defrule (concat its-zenkaku-escape "T") "\e$B#T\e(B")
+ (its-defrule (concat its-zenkaku-escape "U") "\e$B#U\e(B")
+ (its-defrule (concat its-zenkaku-escape "V") "\e$B#V\e(B")
+ (its-defrule (concat its-zenkaku-escape "W") "\e$B#W\e(B")
+ (its-defrule (concat its-zenkaku-escape "X") "\e$B#X\e(B")
+ (its-defrule (concat its-zenkaku-escape "Y") "\e$B#Y\e(B")
+ (its-defrule (concat its-zenkaku-escape "Z") "\e$B#Z\e(B")
+
+ (its-defrule (concat its-zenkaku-escape "a") "\e$B#a\e(B")
+ (its-defrule (concat its-zenkaku-escape "b") "\e$B#b\e(B")
+ (its-defrule (concat its-zenkaku-escape "c") "\e$B#c\e(B")
+ (its-defrule (concat its-zenkaku-escape "d") "\e$B#d\e(B")
+ (its-defrule (concat its-zenkaku-escape "e") "\e$B#e\e(B")
+ (its-defrule (concat its-zenkaku-escape "f") "\e$B#f\e(B")
+ (its-defrule (concat its-zenkaku-escape "g") "\e$B#g\e(B")
+ (its-defrule (concat its-zenkaku-escape "h") "\e$B#h\e(B")
+ (its-defrule (concat its-zenkaku-escape "i") "\e$B#i\e(B")
+ (its-defrule (concat its-zenkaku-escape "j") "\e$B#j\e(B")
+ (its-defrule (concat its-zenkaku-escape "k") "\e$B#k\e(B")
+ (its-defrule (concat its-zenkaku-escape "l") "\e$B#l\e(B")
+ (its-defrule (concat its-zenkaku-escape "m") "\e$B#m\e(B")
+ (its-defrule (concat its-zenkaku-escape "n") "\e$B#n\e(B")
+ (its-defrule (concat its-zenkaku-escape "o") "\e$B#o\e(B")
+ (its-defrule (concat its-zenkaku-escape "p") "\e$B#p\e(B")
+ (its-defrule (concat its-zenkaku-escape "q") "\e$B#q\e(B")
+ (its-defrule (concat its-zenkaku-escape "r") "\e$B#r\e(B")
+ (its-defrule (concat its-zenkaku-escape "s") "\e$B#s\e(B")
+ (its-defrule (concat its-zenkaku-escape "t") "\e$B#t\e(B")
+ (its-defrule (concat its-zenkaku-escape "u") "\e$B#u\e(B")
+ (its-defrule (concat its-zenkaku-escape "v") "\e$B#v\e(B")
+ (its-defrule (concat its-zenkaku-escape "w") "\e$B#w\e(B")
+ (its-defrule (concat its-zenkaku-escape "x") "\e$B#x\e(B")
+ (its-defrule (concat its-zenkaku-escape "y") "\e$B#y\e(B")
+ (its-defrule (concat its-zenkaku-escape "z") "\e$B#z\e(B")
+
+ (its-defrule (concat its-zenkaku-escape " ") "\e$B!!\e(B")
+ (its-defrule (concat its-zenkaku-escape "!") "\e$B!*\e(B")
+ (its-defrule (concat its-zenkaku-escape "@") "\e$B!w\e(B")
+ (its-defrule (concat its-zenkaku-escape "#") "\e$B!t\e(B")
+ (its-defrule (concat its-zenkaku-escape "$") "\e$B!p\e(B")
+ (its-defrule (concat its-zenkaku-escape "%") "\e$B!s\e(B")
+ (its-defrule (concat its-zenkaku-escape "^") "\e$B!0\e(B")
+ (its-defrule (concat its-zenkaku-escape "&") "\e$B!u\e(B")
+ (its-defrule (concat its-zenkaku-escape "*") "\e$B!v\e(B")
+ (its-defrule (concat its-zenkaku-escape "(") "\e$B!J\e(B")
+ (its-defrule (concat its-zenkaku-escape ")") "\e$B!K\e(B")
+ (its-defrule (concat its-zenkaku-escape "-") "\e$B!]\e(B")
+ (its-defrule (concat its-zenkaku-escape "=") "\e$B!a\e(B")
+ (its-defrule (concat its-zenkaku-escape "`") "\e$B!.\e(B")
+ (its-defrule (concat its-zenkaku-escape "\\") "\e$B!o\e(B")
+ (its-defrule (concat its-zenkaku-escape "|") "\e$B!C\e(B")
+ (its-defrule (concat its-zenkaku-escape "_") "\e$B!2\e(B")
+ (its-defrule (concat its-zenkaku-escape "+") "\e$B!\\e(B")
+ (its-defrule (concat its-zenkaku-escape "~") "\e$B!1\e(B")
+ (its-defrule (concat its-zenkaku-escape "[") "\e$B!N\e(B")
+ (its-defrule (concat its-zenkaku-escape "]") "\e$B!O\e(B")
+ (its-defrule (concat its-zenkaku-escape "{") "\e$B!P\e(B")
+ (its-defrule (concat its-zenkaku-escape "}") "\e$B!Q\e(B")
+ (its-defrule (concat its-zenkaku-escape ":") "\e$B!'\e(B")
+ (its-defrule (concat its-zenkaku-escape ";") "\e$B!(\e(B")
+ (its-defrule (concat its-zenkaku-escape "\"") "\e$B!I\e(B")
+ (its-defrule (concat its-zenkaku-escape "'") "\e$B!G\e(B")
+ (its-defrule (concat its-zenkaku-escape "<") "\e$B!c\e(B")
+ (its-defrule (concat its-zenkaku-escape ">") "\e$B!d\e(B")
+ (its-defrule (concat its-zenkaku-escape "?") "\e$B!)\e(B")
+ (its-defrule (concat its-zenkaku-escape "/") "\e$B!?\e(B")
+ (its-defrule (concat its-zenkaku-escape ",") "\e$B!$\e(B")
+ (its-defrule (concat its-zenkaku-escape ".") "\e$B!%\e(B")
+
+;;;
+;;; Hankaku inputs
+;;;
+
+ (dolist (digit '( "1" "2" "3" "4" "5" "6" "7" "8" "9" "0" ))
+ (its-defrule (concat its-hankaku-escape digit) digit))
+
+ (dolist (symbol '( " " "!" "@" "#" "$" "%" "^" "&" "*" "(" ")"
+ "-" "=" "`" "\\" "|" "_" "+" "~" "[" "]" "{" "}"
+ ":" ";" "\"" "'" "<" ">" "?" "/" "," "." ))
+ (its-defrule (concat its-hankaku-escape symbol) symbol))
+
+ (dolist (downcase '("a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n"
+ "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"))
+ (its-defrule (concat its-hankaku-escape downcase) downcase))
+
+ (dolist (upcase '("A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N"
+ "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z"))
+ (its-defrule (concat its-hankaku-escape upcase) upcase))
+
+;; SYMBOL Input
+ (its-defrule "z1" "\e$B!{\e(B") (its-defrule "z!" "\e$B!|\e(B")
+ (its-defrule "z2" "\e$B"&\e(B") (its-defrule "z@" "\e$B"'\e(B")
+ (its-defrule "z3" "\e$B"$\e(B") (its-defrule "z#" "\e$B"%\e(B")
+ (its-defrule "z4" "\e$B""\e(B") (its-defrule "z$" "\e$B"#\e(B")
+ (its-defrule "z5" "\e$B!~\e(B") (its-defrule "z%" "\e$B"!\e(B")
+ (its-defrule "z6" "\e$B!y\e(B") (its-defrule "z^" "\e$B!z\e(B")
+ (its-defrule "z7" "\e$B!}\e(B") (its-defrule "z&" "\e$B!r\e(B")
+ (its-defrule "z8" "\e$B!q\e(B") (its-defrule "z*" "\e$B!_\e(B")
+ (its-defrule "z9" "\e$B!i\e(B") (its-defrule "z(" "\e$B!Z\e(B")
+ (its-defrule "z0" "\e$B!j\e(B") (its-defrule "z)" "\e$B![\e(B")
+ (its-defrule "z-" "\e$B!A\e(B") (its-defrule "z_" "\e$B!h\e(B")
+ (its-defrule "z=" "\e$B!b\e(B") (its-defrule "z+" "\e$B!^\e(B")
+ (its-defrule "z\\" "\e$B!@\e(B") (its-defrule "z|" "\e$B!B\e(B")
+ (its-defrule "z`" "\e$B!-\e(B") (its-defrule "z~" "\e$B!/\e(B")
+
+ (its-defrule "zq" "\e$B!T\e(B") (its-defrule "zQ" "\e$B!R\e(B")
+ (its-defrule "zw" "\e$B!U\e(B") (its-defrule "zW" "\e$B!S\e(B")
+ ; e
+ (its-defrule "zr" "\e$B!9\e(B") (its-defrule "zR" "\e$B!8\e(B")
+ (its-defrule "zt" "\e$B!:\e(B") (its-defrule "zT" "\e$B!x\e(B")
+ ; y u i o
+ (its-defrule "zp" "\e$B")\e(B") (its-defrule "zP" "\e$B",\e(B")
+ (its-defrule "z[" "\e$B!X\e(B") (its-defrule "z{" "\e$B!L\e(B")
+ (its-defrule "z]" "\e$B!Y\e(B") (its-defrule "z}" "\e$B!M\e(B")
+
+ ; a
+ (its-defrule "zs" "\e$B!3\e(B") (its-defrule "zS" "\e$B!4\e(B")
+ (its-defrule "zd" "\e$B!5\e(B") (its-defrule "zD" "\e$B!6\e(B")
+ (its-defrule "zf" "\e$B!7\e(B") (its-defrule "zF" "\e$B"*\e(B")
+ (its-defrule "zg" "\e$B!>\e(B") (its-defrule "zG" "\e$B!=\e(B")
+ (its-defrule "zh" "\e$B"+\e(B")
+ (its-defrule "zj" "\e$B"-\e(B")
+ (its-defrule "zk" "\e$B",\e(B")
+ (its-defrule "zl" "\e$B"*\e(B")
+ (its-defrule "z;" "\e$B!+\e(B") (its-defrule "z:" "\e$B!,\e(B")
+ (its-defrule "z\'" "\e$B!F\e(B") (its-defrule "z\"" "\e$B!H\e(B")
+
+ ; z
+ (its-defrule "zx" ":-") (its-defrule "zX" ":-)")
+ (its-defrule "zc" "\e$B!;\e(B") (its-defrule "zC" "\e$B!n\e(B")
+ (its-defrule "zv" "\e$B"(\e(B") (its-defrule "zV" "\e$B!`\e(B")
+ (its-defrule "zb" "\e$B!k\e(B") (its-defrule "zB" "\e$B"+\e(B")
+ (its-defrule "zn" "\e$B!l\e(B") (its-defrule "zN" "\e$B"-\e(B")
+ (its-defrule "zm" "\e$B!m\e(B") (its-defrule "zM" "\e$B".\e(B")
+ (its-defrule "z," "\e$B!E\e(B") (its-defrule "z<" "\e$B!e\e(B")
+ (its-defrule "z." "\e$B!D\e(B") (its-defrule "z>" "\e$B!f\e(B")
+ (its-defrule "z/" "\e$B!&\e(B") (its-defrule "z?" "\e$B!g\e(B")
+ )
+
+(define-its-state-machine-append its-kata-map
+ (if its-kata-enable-double-n
+ (its-defrule "nn" "\e$B%s\e(B")
+ (its-defrule "nn" "\e$B%s\e(B" -1))
+
+ (its-defrule "-" its-kata-horizontal)
+ (its-defrule "[" its-kata-open-bracket)
+ (its-defrule "]" its-kata-close-bracket)
+ (its-defrule "." its-kata-period)
+ (its-defrule "," its-kata-comma)
+
+ (if its-kata-enable-zenkaku-alphabet
+ (progn
+ (its-defrule "1" "\e$B#1\e(B") (its-defrule "2" "\e$B#2\e(B")
+ (its-defrule "3" "\e$B#3\e(B") (its-defrule "4" "\e$B#4\e(B")
+ (its-defrule "5" "\e$B#5\e(B") (its-defrule "6" "\e$B#6\e(B")
+ (its-defrule "7" "\e$B#7\e(B") (its-defrule "8" "\e$B#8\e(B")
+ (its-defrule "9" "\e$B#9\e(B") (its-defrule "0" "\e$B#0\e(B")
+ (its-defrule "!" "\e$B!*\e(B") (its-defrule "@" "\e$B!w\e(B")
+ (its-defrule "#" "\e$B!t\e(B") (its-defrule "$" "\e$B!p\e(B")
+ (its-defrule "%" "\e$B!s\e(B") (its-defrule "^" "\e$B!0\e(B")
+ (its-defrule "&" "\e$B!u\e(B") (its-defrule "*" "\e$B!v\e(B")
+ (its-defrule "(" "\e$B!J\e(B") (its-defrule ")" "\e$B!K\e(B")
+ (its-defrule "=" "\e$B!a\e(B") (its-defrule "`" "\e$B!.\e(B")
+ (its-defrule "\\" "\e$B!o\e(B") (its-defrule "|" "\e$B!C\e(B")
+ (its-defrule "_" "\e$B!2\e(B") (its-defrule "+" "\e$B!\\e(B")
+ (its-defrule "{" "\e$B!P\e(B") (its-defrule "}" "\e$B!Q\e(B")
+ (its-defrule ":" "\e$B!'\e(B") (its-defrule ";" "\e$B!(\e(B")
+ (its-defrule "\"" "\e$B!I\e(B") (its-defrule "'" "\e$B!G\e(B")
+ (its-defrule "<" "\e$B!c\e(B") (its-defrule ">" "\e$B!d\e(B")
+ (its-defrule "?" "\e$B!)\e(B") (its-defrule "/" "\e$B!?\e(B"))
+ (progn
+ (its-defrule "1" "1") (its-defrule "2" "2")
+ (its-defrule "3" "3") (its-defrule "4" "4")
+ (its-defrule "5" "5") (its-defrule "6" "6")
+ (its-defrule "7" "7") (its-defrule "8" "8")
+ (its-defrule "9" "9") (its-defrule "0" "0")
+ (its-defrule "!" "!") (its-defrule "@" "@")
+ (its-defrule "#" "#") (its-defrule "$" "$")
+ (its-defrule "%" "%") (its-defrule "^" "^")
+ (its-defrule "&" "&") (its-defrule "*" "*")
+ (its-defrule "(" "(") (its-defrule ")" ")")
+ (its-defrule "=" "=") (its-defrule "`" "`")
+ (its-defrule "\\" "\\") (its-defrule "|" "|")
+ (its-defrule "_" "_") (its-defrule "+" "+")
+ (its-defrule "{" "{") (its-defrule "}" "}")
+ (its-defrule ":" ":") (its-defrule ";" ";")
+ (its-defrule "\"" "\"") (its-defrule "'" "'")
+ (its-defrule "<" "<") (its-defrule ">" ">")
+ (its-defrule "?" "?") (its-defrule "/" "/")))
+ )
+
+(provide 'its/kata)
+;;; its/kata.el ends here.