--- /dev/null
+;; This file serves Emacs version dependent definitions
+
+(if (and (fboundp 'set-buffer-multibyte)
+ (subrp (symbol-function 'set-buffer-multibyte)))
+ ;; Emacs 20.3
+ (progn
+ (defun egg-char-bytes (x) 1)
+ (defun egg-charset-bytes (x) 1)
+ (defun egg-char-bytes-at (str pos) 1)
+ (defun egg-chars-in-period (str pos len) len)
+ (defalias 'egg-string-to-vector 'identity)
+ (defalias 'egg-string-to-char-at 'aref)
+ )
+ ;; Emacs 20.2
+ (defun set-buffer-multibyte (flag)
+ (setq enable-multibyte-characters flag))
+ (defalias 'string-as-unibyte 'identity)
+ (defalias 'string-as-multibyte 'identity)
+ (defalias 'coding-system-put 'put)
+
+ (defalias 'egg-char-bytes 'char-bytes)
+ (defalias 'egg-charset-bytes 'charset-bytes)
+ (defun egg-char-bytes-at (str pos)
+ (char-bytes (egg-string-to-char-at str pos)))
+ (defun egg-chars-in-period (str pos len)
+ (chars-in-string (substring str pos (+ pos len))))
+ (defalias 'egg-string-to-vector 'string-to-vector)
+ (defun egg-string-to-char-at (str pos)
+ (let ((c (aref str pos)))
+ (if (or (< c ?\200)
+ (>= c ?\240)
+ (>= (1+ pos) (length str))
+ (< (aref str (1+ pos)) ?\240))
+ c
+ (string-match "[\240-\377]+" str (1+ pos))
+ (string-to-char (substring str pos (match-end 0))))))
+ )
+
+;; Elisp bug fix
+
+(defun egg-next-single-property-change (pos prop &optional object limit)
+ (min limit (next-single-property-change pos prop object (1+ limit))))
+
+(provide 'egg-edep)
--- /dev/null
+;;; egg/canna.el --- Canna Support (high level interface) in
+;;; Egg Input Method Architecture
+
+;; Copyright (C) 1998 Mule Project,
+;; Powered by Electrotechnical Laboratory, JAPAN.
+;; Project Leader: Satoru Tomura <tomura@etl.go.jp>
+
+;; Author: NIIBE Yutaka <gniibe@mri.co.jp>
+;; Maintainer: NIIBE Yutaka <gniibe@mri.co.jp>
+
+;; This file is part of EGG.
+
+;; EGG 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.
+
+;; EGG 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:
+
+;;; Code:
+
+(require 'egg-edep)
+
+(defconst canna-support-languages '(Japanese))
+
+(eval-when-compile
+ (defmacro CANNA-const (c)
+ (cond ((eq c 'FileNotExist) xxxxxxxxxxxxxx)
+ )))
+
+(defconst canna-conversion-backend
+ [ canna-init
+
+ canna-start-conversion
+ canna-get-bunsetsu-converted
+ canna-get-bunsetsu-source
+ canna-list-candidates
+ canna-get-number-of-candidates
+ canna-get-current-candidate-number
+ canna-get-all-candidates
+ canna-decide-candidate
+ canna-change-bunsetsu-length
+ canna-end-conversion
+ nil
+
+ canna-fini
+ ])
+
+(defconst canna-server-port 5680 "Port number of Canna server")
+(defvar canna-hostname "localhost"
+ "Hostname of Canna server")
+
+(defun canna-open (hostname)
+ "Establish the connection to CANNA server. Return environment object."
+ (let* ((buf (generate-new-buffer " *CANNA*"))
+ (proc (open-network-stream "CANNA" buf hostname canna-server-port))
+ result)
+ (process-kill-without-query proc)
+ (set-process-coding-system proc 'no-conversion 'no-conversion)
+ (set-marker-insertion-type (process-mark proc) t)
+ (save-excursion
+ (set-buffer buf)
+ (erase-buffer)
+ (buffer-disable-undo)
+ (set-buffer-multibyte nil))
+ (setq result (cannarpc-open proc (user-login-name)))
+ (if (< result 0)
+ (let ((msg (cannarpc-get-error-message (- result))))
+ (delete-process proc)
+ (kill-buffer buf)
+ (error "Can't open CANNA session (%s): %s" hostname msg)))
+ (vector proc result)))
+
+;; XXX: Should support multiple outstanding context
+;; <env> ::= [ <proc> <context> ]
+(defvar canna-environment nil
+ "Environment for CANNA kana-kanji conversion")
+
+(defsubst cannaenv-get-proc (env)
+ (aref env 0))
+(defsubst cannaenv-get-context (env)
+ (aref env 1))
+
+;; <bunsetsu> ::=
+;; [ <env> <converted> <bunsetsu-pos>
+;; <source> <zenkouho-pos> <zenkouho> ]
+(defsubst canna-make-bunsetsu (env converted bunsetsu-pos)
+ (vector env converted bunsetsu-pos nil nil nil))
+
+(defsubst cannabunsetsu-get-env (b)
+ (aref b 0))
+(defsubst cannabunsetsu-get-converted (b)
+ (aref b 1))
+(defsubst cannabunsetsu-get-bunsetsu-pos (b)
+ (aref b 2))
+(defsubst cannabunsetsu-get-source (b)
+ (aref b 3))
+(defsubst cannabunsetsu-set-source (b s)
+ (aset b 3 s))
+(defsubst cannabunsetsu-get-zenkouho-pos (b)
+ (aref b 4))
+(defsubst cannabunsetsu-set-zenkouho-pos (b p)
+ (aset b 4 p))
+(defsubst cannabunsetsu-get-zenkouho (b)
+ (aref b 5))
+(defsubst cannabunsetsu-set-zenkouho (b z)
+ (aset b 5 z))
+
+(defun canna-get-bunsetsu-source (b)
+ (let ((s (cannabunsetsu-get-source b)))
+ (or s
+ (let* ((env (cannabunsetsu-get-env b))
+ (bp (cannabunsetsu-get-bunsetsu-pos b))
+ (s (cannarpc-get-bunsetsu-source env bp)))
+ (cannabunsetsu-set-source b s)))))
+
+(defun canna-get-bunsetsu-converted (b)
+ (cannabunsetsu-get-converted b))
+
+(defconst canna-dictionary-specification
+ '("iroha"
+ "fuzokugo"
+ "hojomwd"
+ "hojoswd"
+ "bushu"
+ ("user")
+ )
+ "Dictionary specification of CANNA.")
+
+(defun canna-filename (p)
+ ""
+ (cond ((consp p) (concat (car p) "/" (user-login-name)))
+ (t p)))
+
+(defun canna-get-environment ()
+ "Return the backend of CANNA environment."
+ (if canna-environment
+ canna-environment
+ (let* ((env (canna-open canna-hostname))
+ (l canna-dictionary-specification)
+ dict-list)
+ (while l
+ (let ((dic (car l))
+ result)
+ (setq result
+ (canna-open-dictionary env (canna-filename dic)))
+ (if (= result 255)
+ (error "Damedamedame") ; XXX
+ (setq l (cdr l)))))
+ (setq canna-environment env))))
+
+(defun canna-open-dictionary (env name)
+ (let ((trying t)
+ ret)
+ (while trying
+ (setq ret (cannarpc-open-dictionary env name 0)) ; XXX MODE=0
+ (if (= ret 0)
+ (setq trying nil)
+ (message "\e$B<-=q%U%!%$%k\e(B(%s)\e$B$,$"$j$^$;$s\e(B" name)
+ (setq ret (- ret)) ; Get error code.
+ (if (and (y-or-n-p
+ (format "\e$B<-=q%U%!%$%k\e(B(%s)\e$B$,$"$j$^$;$s!#:n$j$^$9$+\e(B? "
+ name))
+ (= (cannarpc-make-dictionary env name) 0))
+ (message "\e$B<-=q%U%!%$%k\e(B(%s)\e$B$r:n$j$^$7$?\e(B" name)
+ (error "Fatal"))))
+ ret))
+
+(defun canna-init ()
+ )
+
+(defun canna-start-conversion (yomi lang)
+ "Convert YOMI string to kanji, and enter conversion mode.
+Return the list of bunsetsu."
+ (let ((env (canna-get-environment)))
+ (cannarpc-begin-conversion env yomi)))
+
+(defun canna-end-conversion (bunsetsu-list abort)
+ (let* ((env (cannabunsetsu-get-env (car bunsetsu-list)))
+ (l bunsetsu-list)
+ (len (length bunsetsu-list))
+ (zenkouho-pos-vector (make-vector (* 2 len) 0))
+ (i 0)
+ (mode 1) ;XXX MODE=1 attru?
+ bunsetsu zenkouho-pos)
+ (if abort
+ (setq mode 0))
+ (while l
+ (setq bunsetsu (car l))
+ (setq l (cdr l))
+ (setq zenkouho-pos (cannabunsetsu-get-zenkouho-pos bunsetsu))
+ (if (null zenkouho-pos)
+ () ; XXX: NIL--> 0 atteru???
+ (aset zenkouho-pos-vector i 0) ; XXX Don't support >=256
+ (aset zenkouho-pos-vector (1+ i) zenkouho-pos))
+ (setq i (+ i 2)))
+ (cannarpc-end-conversion env len zenkouho-pos-vector 0)))
+
+(defun canna-list-candidates (bunsetsu prev-bunsetsu)
+ (let* ((env (cannabunsetsu-get-env bunsetsu))
+ (bunsetsu-pos (cannabunsetsu-get-bunsetsu-pos bunsetsu))
+ (z (cannarpc-get-bunsetsu-candidates env bunsetsu-pos)))
+ (cannabunsetsu-set-zenkouho bunsetsu z)
+ (cannabunsetsu-set-zenkouho-pos bunsetsu 0)
+ 0))
+
+(defun canna-get-number-of-candidates (bunsetsu)
+ (let ((l (cannabunsetsu-get-zenkouho bunsetsu)))
+ (if l
+ (length l)
+ nil)))
+
+(defun canna-decide-candidate (bunsetsu candidate-pos)
+ (let* ((candidate-list (cannabunsetsu-get-zenkouho bunsetsu))
+ (candidate (nth candidate-pos candidate-list)))
+ (cannabunsetsu-set-zenkouho candidate candidate-list)
+ (cannabunsetsu-set-zenkouho-pos candidate candidate-pos)
+ candidate))
+
+(defun canna-get-current-candidate-number (bunsetsu)
+ (cannabunsetsu-get-zenkouho-pos bunsetsu))
+
+(defun canna-get-all-candidates (bunsetsu)
+ (let* ((l (cannabunsetsu-get-zenkouho bunsetsu))
+ (result (cons nil nil))
+ (r result))
+ (catch 'break
+ (while t
+ (let ((candidate (car l)))
+ (setcar r (cannabunsetsu-get-converted candidate))
+ (if (null (setq l (cdr l)))
+ (throw 'break nil)
+ (setq r (setcdr r (cons nil nil)))))))
+ result))
+
+;;;;;;;;;;;;;;;;;;;;;;; MADAMADA zenzendame, just copy from SJ3
+(defun canna-change-bunsetsu-length (b0 b1 b2 len)
+ (let ((yomi (concat
+ (cannabunsetsu-get-source b1)
+ (if b2 (cannabunsetsu-get-source b2))))
+ (env (cannabunsetsu-get-env b1))
+ yomi1 yomi2
+ bunsetsu1 bunsetsu2)
+ (setq yomi1 (substring yomi 0 len)
+ yomi2 (substring yomi len))
+ (setq bunsetsu1
+ (cannarpc-tanbunsetsu-conversion env yomi1))
+ ;; Only set once (memory original length of the bunsetsu).
+ (cannabunsetsu-set-kugiri-changed bunsetsu1
+ (or (cannabunsetsu-get-kugiri-changed b1)
+ (length (cannabunsetsu-get-source b1))))
+ (if (< 0 (length yomi2))
+ (setq bunsetsu2 (cannarpc-tanbunsetsu-conversion env yomi2))
+ (setq bunsetsu2 nil))
+ (if bunsetsu2
+ (list bunsetsu1 bunsetsu2)
+ (list bunsetsu1))))
+
+;;;;;;;;;;;;;; MADAMADA
+(defun canna-fini (lang)
+)
+
+;;; setup
+
+(require 'egg)
+(load "egg/cannarpc")
+
+;;;###autoload
+(defun egg-activate-canna (&rest arg)
+ "Activate CANNA backend of Tamagotchy."
+ (egg-set-support-languages canna-support-languages)
+ (egg-set-conversion-backend canna-conversion-backend
+ canna-support-languages
+ nil)
+ (apply 'egg-mode arg))
+
+;;; egg/canna.el ends here.
--- /dev/null
+;;; egg/cannarpc.el --- Canna Support (low level interface) 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: NIIBE Yutaka <gniibe@mri.co.jp>
+;; Maintainer: NIIBE Yutaka <gniibe@mri.co.jp>
+
+;; This file is part of EGG.
+
+;; EGG 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.
+
+;; EGG 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:
+
+;;; Code:
+
+(eval-when-compile
+ (require 'egg-com)
+;; (load-library "egg/canna")
+ (defmacro canna-const (c)
+ (cond ((eq c 'Initialize) 1)
+ ((eq c 'Finalize) 2)
+ ((eq c 'CreateContext) 3)
+ ((eq c 'CloseContext) 5)
+ ((eq c 'GetDictionaryList) 6)
+ ((eq c 'GetDirectoryList) 7)
+ ((eq c 'MountDictionary) 8)
+ ((eq c 'UnmountDictionary) 9)
+ ((eq c 'BeginConvert) 15)
+ ((eq c 'EndConvert) 16)
+ ((eq c 'GetCandidacyList) 17)
+ ((eq c 'GetYomi) 18)
+ ((eq c 'ResizePause) 26)
+
+ ((eq c 'CreateDictionary) 3)
+ (t (error "No such constant")))))
+
+(defun cannarpc-get-error-message (errno)
+ (or (aref cannarpc-error-message errno) (format "#%d" errno)))
+
+(defmacro cannarpc-call-with-environment (e vlist send-expr &rest receive-exprs)
+ (let ((v (append
+ `((proc (cannaenv-get-proc ,e))
+ (context (cannaenv-get-context ,e)))
+ vlist)))
+ (list
+ 'let v
+ (append
+ `(save-excursion
+ (set-buffer (process-buffer proc))
+ (erase-buffer)
+ ,send-expr
+ (process-send-region proc (point-min) (point-max))
+ (goto-char (prog1 (point) (accept-process-output proc))))
+ receive-exprs))))
+\f
+(defconst canna-version-fmt "2.0:%s")
+
+(defun cannarpc-open (proc username)
+ "Open the session. Return 0 on success, error code on failure."
+ (let ((verusr (format canna-version-fmt username)))
+ (comm-call-with-proc proc (result)
+ (comm-format (u u v) (canna-const Initialize) (length verusr) verusr)
+ (comm-unpack (u) result)
+ result)))
+
+(defun cannarpc-close (proc)
+ (comm-call-with-proc proc (dummy result)
+ (comm-format (b b w) (canna-const Finalize) 0 0)
+ (comm-unpack (b b w b) dummy dummy dummy result)
+ result))
+
+(defun cannarpc-create-context (proc)
+ (comm-call-with-proc proc (dummy result)
+ (comm-format (b b w) (canna-const CreateContext) 0 0)
+ (comm-unpack (b b w w) dummy dummy dummy result)
+ result))
+
+(defun cannarpc-close-context (proc context)
+ (comm-call-with-proc proc (dummy result)
+ (comm-format (b b w w) (canna-const CloseContext) 0 2 context)
+ (comm-unpack (b b w b) dummy dummy dummy result)
+ result))
+
+;; XXX: Not implemented fully
+(defun cannarpc-get-dictionary-list (env)
+ (cannarpc-call-with-environment env (dymmy result)
+ (comm-format (b b w w w) (canna-const GetDictionaryList) 0 4
+ context 1024)
+ (comm-unpack (u w) dummy result)
+ ;; follow list of dictionaries
+ result))
+
+;; XXX: Not implemented fully
+(defun cannarpc-get-directory-list (env)
+ (cannarpc-call-with-environment env (dymmy result)
+ (comm-format (b b w w w) (canna-const GetDirectoryList) 0 4
+ context 1024)
+ (comm-unpack (u w) dummy result)
+ ;; follow list of directories
+ result))
+
+(defun cannarpc-open-dictionary (env dict-file-name mode)
+ (cannarpc-call-with-environment env (dymmy result)
+ (comm-format (b b w u w s) (canna-const MountDictionary) 0
+ (+ (length dict-file-name) 7)
+ mode context dict-file-name)
+ (comm-unpack (u b) dummy result)
+ result))
+
+(defun cannarpc-close-dictionary (env dict-file-name mode)
+ (cannarpc-call-with-environment env (dymmy result)
+ (comm-format (b b w u w s) (canna-const UnmountDictionary) 0
+ (+ (length dict-file-name) 6)
+ mode context dict-file-name)
+ (comm-unpack (u b) dummy result)
+ result))
+
+(defun cannarpc-begin-conversion (env yomi)
+ "Begin conversion."
+ (let ((yomi-ext (encode-coding-string yomi 'euc-japan))
+ (i 0)
+ converted bunsetsu-list bl)
+ (cannarpc-call-with-environment env (dummy result)
+ (comm-format (b b w u w S) (canna-const BeginConvert) 0
+ (+ (length yomi-ext) 8) 0 context yomi)
+ (comm-unpack (u w) dummy result)
+ (if (= result 65535)
+ -1 ; failure
+ (while (< i result)
+ (comm-unpack (S) converted)
+ (let ((bl1 (cons (canna-make-bunsetsu env converted i)
+ nil)))
+ (if bl
+ (setq bl (setcdr bl bl1))
+ (setq bunsetsu-list (setq bl bl1))))
+ (setq i (1+ i)))
+ bunsetsu-list))))
+
+(defun cannarpc-end-conversion (env len zenkouho-pos-vector mode)
+ "End conversion."
+ (cannarpc-call-with-environment env (dummy result)
+ (comm-format (b b w w w u v) (canna-const EndConvert) 0
+ (+ (* len 2) 8) context len mode zenkouho-pos-vector)
+ (comm-unpack (u b) dummy result)
+ (if (= result 255)
+ -1 ; failure
+ result)))
+
+(defun cannarpc-make-dictionary (env dict-name)
+ (cannarpc-call-with-environment env (dummy result)
+ (comm-format (b b w u w s) (canna-const CreateDictionary) 1
+ (+ (length dict-name) 7) 0 context dict-name)
+ (comm-unpack (u b) dummy result)
+ result))
+
+(defun cannarpc-get-bunsetsu-source (env bunsetsu-pos)
+ (cannarpc-call-with-environment env (dummy result)
+ (comm-format (b b w w w w) (canna-const GetYomi) 0 6 context
+ bunsetsu-pos 1024)
+ (comm-unpack (u w) dummy result)
+ (if (= result 65535)
+ -1
+ (comm-unpack (S) result)
+ result)))
+
+(defun cannarpc-get-bunsetsu-candidates (env bunsetsu-pos)
+ (let ((i 0)
+ converted bunsetsu-list bl)
+ (cannarpc-call-with-environment env (dummy result)
+ (comm-format (b b w w w w) (canna-const GetCandidacyList) 0 6 context
+ bunsetsu-pos 1024)
+ (comm-unpack (u w) dymmy result)
+ (if (= result 65535)
+ -1 ; failure
+ (while (< i result)
+ (comm-unpack (S) converted)
+ (let ((bl1 (cons (canna-make-bunsetsu env converted bunsetsu-pos)
+ nil)))
+ (if bl
+ (setq bl (setcdr bl bl1))
+ (setq bunsetsu-list (setq bl bl1))))
+ (setq i (1+ i)))
+ bunsetsu-list))))
+
+;;; egg/cannarpc.el ends here.
--- /dev/null
+;;; its/ascii.el --- ASCII 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: KATAYAMA Yoshio <kate@pfu.co.jp>
+
+;; 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/hira.el in Mule-2.3 distribution.
+;;
+
+;;; Code:
+
+(eval-when-compile
+ (require 'its))
+
+(define-its-state-machine its-up-map
+ "upcase" "aA" nil nil
+ "Map for upcase input."
+
+ (let ((i ? ))
+ (while (<= i ?~)
+ (its-defrule (char-to-string i) (upcase (char-to-string i)))
+ (setq i (1+ i)))))
+
+(define-its-state-machine its-down-map
+ "downcase" "aa" nil nil
+ "Map for downcase input."
+
+ (let ((i ? ))
+ (while (<= i ?~)
+ (its-defrule (char-to-string i) (char-to-string i))
+ (setq i (1+ i)))))
+
+(provide 'its/ascii)
--- /dev/null
+(eval-when-compile
+ (require 'its)
+ (require 'cl))
+
+(defvar its-erpin-cn-enable-quanjioao-alphabet t "*Enable Quanjiao alphabet")
+(defvar its-erpin-cn-open-braket "\e$A!8\e(B" "*[") ; "\e$A#[\e(B"
+(defvar its-erpin-cn-close-braket "\e$A!9\e(B" "*]") ; "\e$A#]\e(B"
+
+(defvar its-erpin-tw-enable-quanjioao-alphabet t "*Enable Quanjiao alphabet")
+(defvar its-erpin-tw-open-braket "\e$(G!V\e(B" "*[") ; "\e$(G!b\e(B "
+(defvar its-erpin-tw-close-braket "\e$(G!W\e(B" "*]") ; "\e$(G!c\e(B"
+
+(eval-when-compile
+ (defsubst its-defoutput* (input display)
+ (its-set-output (its-goto-state input nil t) display))
+
+ (defun its-define-erpin-qingsheng (shengmu yunmu &optional y)
+ (let ((input (concat (car shengmu) yunmu))
+ (output (concat (cdr shengmu) (if y y yunmu) "\e(0@\e(B"))
+ state)
+ (setq state (its-goto-state input nil t))
+ (its-set-output state output)
+ (its-make-next-state state -1 input output)
+ (its-make-next-state state ? (concat input " ") output)
+ (its-make-next-state state ?0 (concat input "0") output)
+ (its-define-otherwise state (its-make-otherwise output
+ its-otherwise-back-one))
+ state))
+
+ (defmacro its-do-erpin-table (list)
+ `(progn
+ ,@(mapcar (lambda (syl)
+ `(its-define-erpin ,(car syl) ,(cdr syl)))
+ list)))
+
+ (defmacro its-define-erpin (shengmu yunmu)
+ `(let ((y1 (nth 1 ,yunmu)) (y2 (nth 2 ,yunmu)) (y3 (nth 3 ,yunmu))
+ (y4 (nth 4 ,yunmu)) (y5 (nth 5 ,yunmu)) (y (car ,yunmu))
+ (ss (list ,@shengmu)) sa sd state)
+ (while ss
+ (setq sa (caar ss) sd (cdar ss)
+ state (its-define-erpin-qingsheng (car ss) y y5))
+ (its-make-next-state state ?1 (concat sa y 1) (concat sd y1 "\e(0@\e(B"))
+ (its-make-next-state state ?2 (concat sa y 2) (concat sd y2 "\e(0@\e(B"))
+ (its-make-next-state state ?3 (concat sa y 3) (concat sd y3 "\e(0@\e(B"))
+ (its-make-next-state state ?4 (concat sa y 4) (concat sd y4 "\e(0@\e(B"))
+ (setq ss (cdr ss)))))
+
+ (defmacro its-define-erpin-table ()
+ '(let ((O '("o" . "")) (B '("b" . "B")) (C '("c" . "C")) (D '("d" . "D"))
+ (F '("f" . "F")) (G '("g" . "G")) (H '("h" . "H")) (J '("j" . "J"))
+ (K '("k" . "K")) (L '("l" . "L")) (M '("m" . "M")) (N '("n" . "N"))
+ (P '("p" . "P")) (Q '("q" . "Q")) (R '("r" . "R")) (S '("s" . "S"))
+ (T '("t" . "T")) (W '("w" . "W")) (X '("x" . "X")) (Y '("y" . "Y"))
+ (Z '("z" . "Z"))
+ (I '("i" . "Ch")) (U '("u" . "Sh")) (V '("v" . "Zh"))
+
+ (a '("a" "\e(0!\e(B" "\e(0"\e(B" "\e(0#\e(B" "\e(0$\e(B" "a" ))
+ (ai '("s" "\e(0!\e(Bi" "\e(0"\e(Bi" "\e(0#\e(Bi" "\e(0$\e(Bi" "ai" ))
+ (an '("f" "\e(0!\e(Bn" "\e(0"\e(Bn" "\e(0#\e(Bn" "\e(0$\e(Bn" "an" ))
+ (ang '("g" "\e(0!\e(Bng" "\e(0"\e(Bng" "\e(0#\e(Bng" "\e(0$\e(Bng" "ang" ))
+ (ao '("d" "\e(0!\e(Bo" "\e(0"\e(Bo" "\e(0#\e(Bo" "\e(0$\e(Bo" "ao" ))
+ (e '("e" "\e(0%\e(B" "\e(0&\e(B" "\e(0'\e(B" "\e(0(\e(B" "e" ))
+ (ei '("w" "\e(0%\e(Bi" "\e(0&\e(Bi" "\e(0'\e(Bi" "\e(0(\e(Bi" "ei" ))
+ (en '("r" "\e(0%\e(Bn" "\e(0&\e(Bn" "\e(0'\e(Bn" "\e(0(\e(Bn" "en" ))
+ (eng '("t" "\e(0%\e(Bng" "\e(0&\e(Bng" "\e(0'\e(Bng" "\e(0(\e(Bng" "eng" ))
+ (er '("y" "\e(0%\e(Br" "\e(0&\e(Br" "\e(0'\e(Br" "\e(0(\e(Br" "er" ))
+ (i '("i" "\e(0)\e(B" "\e(0*\e(B" "\e(0+\e(B" "\e(0,\e(B" "i" ))
+ (ia '("p" "i\e(0!\e(B" "i\e(0"\e(B" "i\e(0#\e(B" "i\e(0$\e(B" "ia" ))
+ (ian '("h" "i\e(0!\e(Bn" "i\e(0"\e(Bn" "i\e(0#\e(Bn" "i\e(0$\e(Bn" "ian" ))
+ (iang '("j" "i\e(0!\e(Bng" "i\e(0"\e(Bng" "i\e(0#\e(Bng" "i\e(0$\e(Bng" "iang"))
+ (iao '("k" "i\e(0!\e(Bo" "i\e(0"\e(Bo" "i\e(0#\e(Bo" "i\e(0$\e(Bo" "iao" ))
+ (ie '("l" "i\e(0%\e(B" "i\e(0&\e(B" "i\e(0'\e(B" "i\e(0(\e(B" "ie" ))
+ (in '("m" "\e(0)\e(Bn" "\e(0*\e(Bn" "\e(0+\e(Bn" "\e(0,\e(Bn" "in" ))
+ (ing '("n" "\e(0)\e(Bng" "\e(0*\e(Bng" "\e(0+\e(Bng" "\e(0,\e(Bng" "ing" ))
+ (iong '("b" "i\e(0-\e(Bng" "i\e(0.\e(Bng" "i\e(0/\e(Bng" "i\e(00\e(Bng" "iong"))
+ (iu '("y" "i\e(01\e(B" "i\e(02\e(B" "i\e(03\e(B" "i\e(04\e(B" "iu" ))
+ (o '("o" "\e(0-\e(B" "\e(0.\e(B" "\e(0/\e(B" "\e(00\e(B" "o" ))
+ (ong '("b" "\e(0-\e(Bng" "\e(0.\e(Bng" "\e(0/\e(Bng" "\e(00\e(Bng" "ong" ))
+ (ou '("q" "\e(0-\e(Bu" "\e(0.\e(Bu" "\e(0/\e(Bu" "\e(00\e(Bu" "ou" ))
+ (u '("u" "\e(01\e(B" "\e(02\e(B" "\e(03\e(B" "\e(04\e(B" "u" ))
+ (v '("v" "\e(05\e(B" "\e(06\e(B" "\e(07\e(B" "\e(08\e(B" "\e(09\e(B" ))
+ (ua '("p" "u\e(0!\e(B" "u\e(0"\e(B" "u\e(0#\e(B" "u\e(0$\e(B" "ua" ))
+ (uai '("k" "u\e(0!\e(Bi" "u\e(0"\e(Bi" "u\e(0#\e(Bi" "u\e(0$\e(Bi" "uai" ))
+ (uan '("x" "u\e(0!\e(Bn" "u\e(0"\e(Bn" "u\e(0#\e(Bn" "u\e(0$\e(Bn" "uan" ))
+ (uang '("j" "u\e(0!\e(Bng" "u\e(0"\e(Bng" "u\e(0#\e(Bng" "u\e(0$\e(Bng" "uang"))
+ (ue '("c" "u\e(0%\e(B" "u\e(0&\e(B" "u\e(0'\e(B" "u\e(0(\e(B" "ue" ))
+ (ve '("c" "\e(09%\e(B" "\e(09&\e(B" "\e(09'\e(B" "\e(09(\e(B" "\e(09\e(Be" ))
+ (ui '("c" "u\e(0)\e(B" "u\e(0*\e(B" "u\e(0+\e(B" "u\e(0,\e(B" "ui" ))
+ (un '("z" "\e(01\e(Bn" "\e(02\e(Bn" "\e(03\e(Bn" "\e(04\e(Bn" "un" ))
+ (uo '("o" "u\e(0-\e(B" "u\e(0.\e(B" "u\e(0/\e(B" "u\e(00\e(B" "uo" )))
+
+ (dolist (SHENG (list B C D F G H J K L M N P Q R S T W X Y Z I U V))
+ (its-defrule (car SHENG) (cdr SHENG)))
+
+ (its-do-erpin-table
+ (((O B C D F G H K L M N P S T W Y Z I U V) . a)
+ ((O B C D G H K L M N P S T W Z I U V) . ai)
+ ((O B C D F G H K L M N P R S T W Y Z I U V) . an)
+ ((O B C D F G H K L M N P R S T W Y Z I U V) . ang)
+ ((O B C D G H K L M N P R S T Y Z I U V) . ao)
+ ((O C D G H K L M N R S T Y Z I U V) . e)
+ ((O B C D F G H K L M N P T W Z U V) . ei)
+ ((O B C D F G H K M N P R S W Z I U V) . en)
+ ((O B C D F G H K L M N P R S T W Z I U V) . eng)
+ ((O ) . er)
+ (( B C D J L M N P Q R S T X Y Z I U V) . i)
+ (( D J L Q X ) . ia)
+ (( B D J L M N P Q T X ) . ian)
+ (( J L N Q X ) . iang)
+ (( B D J L M N P Q T X ) . iao)
+ (( B D J L M N P Q T X ) . ie)
+ (( B J L M N P Q X Y ) . in)
+ (( B D J L M N P Q T X Y ) . ing)
+ (( J Q X ) . iong)
+ (( D J L M N Q X ) . iu)
+ ((O B F M P W Y ) . o)
+ (( C D G H K L N R S T Y Z I V) . ong)
+ ((O C D F G H K L M N P R S T Y Z I U V) . ou)
+ (( B C D F G H J K L M N P Q R S T W X Y Z I U V) . u)
+ (( L N ) . v)
+ (( G H K R I U V) . ua)
+ (( G H K I U V) . uai)
+ (( C D G H J K L N Q R S T X Y Z I U V) . uan)
+ (( G H K I U V) . uang)
+ (( J Q X Y ) . ue)
+ (( L N ) . ve)
+ (( C D G H K R S T Z I U V) . ui)
+ (( C D G H J K L Q R S T X Y Z I U V) . un)
+ (( C D G H K L N R S T Z I U V) . uo)
+
+ (('("" . "")) . (cons "er" (cdr er)))
+
+ ((J Q X) . (cons "a" (cdr ia )))
+ ((J Q X) . (cons "s" (cdr ia )))
+ ((J Q X) . (cons "f" (cdr ian )))
+ ((J Q X) . (cons "g" (cdr iang)))
+ ((J Q X) . (cons "d" (cdr iao )))
+ ((J Q X) . (cons "e" (cdr ie )))
+ ((J Q X) . (cons "w" (cdr ie )))
+ ((J Q X) . (cons "r" (cdr in )))
+ ((J Q X) . (cons "t" (cdr ing )))
+ ((J Q X) . (cons "q" (cdr iu )))))
+
+ (its-define-erpin-qingsheng H "m")
+ (its-define-erpin-qingsheng H "n" "ng")
+ (its-define-erpin-qingsheng O "m")
+ (its-define-erpin-qingsheng O "n")
+
+ (its-defrule "on5" "ng\e(0@\e(B")
+ (its-defrule "on2" "\e(0=@\e(B")
+ (its-defrule "on3" "\e(0>@\e(B")
+ (its-defrule "on4" "\e(0?@\e(B"))))
+
+(define-its-state-machine its-erpin-cn-map
+ "erpin-cn" "\e$A6~\e(BG" "Chinese-GB"
+ "Map for Erpin input. (Chinese-GB)"
+
+ (defconst its-quanjiao-escape "Z")
+ (defconst its-banjiao-escape "X")
+
+ (its-defrule-select-mode-temporally "B" downcase)
+ (its-defrule-select-mode-temporally "Q" quanjiao-downcase-cn)
+
+ (its-define-erpin-table)
+ (its-defoutput* "b " "\e$A2;\e(B")
+ (its-defoutput* "c " "\e$A2E\e(B")
+ (its-defoutput* "ch " "\e$A3v\e(B")
+ (its-defoutput* "d " "\e$A5D\e(B")
+ (its-defoutput* "f " "\e$A74\e(B")
+ (its-defoutput* "g " "\e$A8v\e(B")
+ (its-defoutput* "h " "\e$A:M\e(B")
+ (its-defoutput* "i " "\e$AR;\e(B")
+ (its-defoutput* "j " "\e$A>M\e(B")
+ (its-defoutput* "k " "\e$A?I\e(B")
+ (its-defoutput* "l " "\e$AAK\e(B")
+ (its-defoutput* "m " "\e$AC?\e(B")
+ (its-defoutput* "n " "\e$ADj\e(B")
+ (its-defoutput* "p " "\e$AEz\e(B")
+ (its-defoutput* "q " "\e$AH%\e(B")
+ (its-defoutput* "r " "\e$AHU\e(B")
+ (its-defoutput* "s " "\e$AJG\e(B")
+ (its-defoutput* "u " "\e$AIO\e(B")
+ (its-defoutput* "t " "\e$AK{\e(B")
+ (its-defoutput* "w " "\e$ANR\e(B")
+ (its-defoutput* "x " "\e$AOr\e(B")
+ (its-defoutput* "y " "\e$ASV\e(B")
+ (its-defoutput* "z " "\e$ATZ\e(B")
+ (its-defoutput* "v " "\e$AWE\e(B")
+
+ (dolist (ascii '(("0" . "\e$A#0\e(B") ("1" . "\e$A#1\e(B") ("2" . "\e$A#2\e(B") ("3" . "\e$A#3\e(B")
+ ("4" . "\e$A#4\e(B") ("5" . "\e$A#5\e(B") ("6" . "\e$A#6\e(B") ("7" . "\e$A#7\e(B")
+ ("8" . "\e$A#8\e(B") ("9" . "\e$A#9\e(B")
+ (" " . "\e$A!!\e(B") ("!" . "\e$A#!\e(B") ("@" . "\e$A#@\e(B") ("#" . "\e$A##\e(B")
+ ("$" . "\e$A!g\e(B") ("%" . "\e$A#%\e(B") ("^" . "\e$A#^\e(B") ("&" . "\e$A#&\e(B")
+ ("*" . "\e$A#*\e(B") ("(" . "\e$A#(\e(B") (")" . "\e$A#)\e(B")
+ ("-" . "\e$A#-\e(B") ("=" . "\e$A#=\e(B") ("`" . "\e$A#`\e(B") ("\\" . "\e$A#\\e(B")
+ ("|" . "\e$A#|\e(B") ("_" . "\e$A#_\e(B") ("+" . "\e$A#+\e(B") ("~" . "\e$A!+\e(B")
+ ("[" . "\e$A#[\e(B") ("]" . "\e$A#]\e(B") ("{" . "\e$A#{\e(B") ("}" . "\e$A#}\e(B")
+ (":" . "\e$A#:\e(B") (";" . "\e$A#;\e(B") ("\"" . "\e$A#"\e(B") ("'" . "\e$A#'\e(B")
+ ("<" . "\e$A#<\e(B") (">" . "\e$A#>\e(B") ("?" . "\e$A#?\e(B") ("/" . "\e$A#/\e(B")
+ ("," . "\e$A#,\e(B") ("." . "\e$A#.\e(B")
+ ("a" . "\e$A#a\e(B") ("b" . "\e$A#b\e(B") ("c" . "\e$A#c\e(B") ("d" . "\e$A#d\e(B")
+ ("e" . "\e$A#e\e(B") ("f" . "\e$A#f\e(B") ("g" . "\e$A#g\e(B") ("h" . "\e$A#h\e(B")
+ ("i" . "\e$A#i\e(B") ("j" . "\e$A#j\e(B") ("k" . "\e$A#k\e(B") ("l" . "\e$A#l\e(B")
+ ("m" . "\e$A#m\e(B") ("n" . "\e$A#n\e(B") ("o" . "\e$A#o\e(B") ("p" . "\e$A#p\e(B")
+ ("q" . "\e$A#q\e(B") ("r" . "\e$A#r\e(B") ("s" . "\e$A#s\e(B") ("t" . "\e$A#t\e(B")
+ ("u" . "\e$A#u\e(B") ("v" . "\e$A#v\e(B") ("w" . "\e$A#w\e(B") ("x" . "\e$A#x\e(B")
+ ("y" . "\e$A#y\e(B") ("z" . "\e$A#z\e(B")
+ ("A" . "\e$A#A\e(B") ("B" . "\e$A#B\e(B") ("C" . "\e$A#C\e(B") ("D" . "\e$A#D\e(B")
+ ("E" . "\e$A#E\e(B") ("F" . "\e$A#F\e(B") ("G" . "\e$A#G\e(B") ("H" . "\e$A#H\e(B")
+ ("I" . "\e$A#I\e(B") ("J" . "\e$A#J\e(B") ("K" . "\e$A#K\e(B") ("L" . "\e$A#L\e(B")
+ ("M" . "\e$A#M\e(B") ("N" . "\e$A#N\e(B") ("O" . "\e$A#O\e(B") ("P" . "\e$A#P\e(B")
+ ("Q" . "\e$A#Q\e(B") ("R" . "\e$A#R\e(B") ("S" . "\e$A#S\e(B") ("T" . "\e$A#T\e(B")
+ ("U" . "\e$A#U\e(B") ("V" . "\e$A#V\e(B") ("W" . "\e$A#W\e(B") ("X" . "\e$A#X\e(B")
+ ("Y" . "\e$A#Y\e(B") ("Z" . "\e$A#Z\e(B")))
+ (let ((in (car ascii)) (out (cdr ascii)))
+ (its-defrule (concat its-banjiao-escape in) in)
+ (its-defrule (concat its-quanjiao-escape in) out)))
+
+ (its-defrule "," "\e$A#,\e(B")
+ (its-defrule "." "\e$A!#\e(B")
+ (its-defrule "/" "\e$A!"\e(B")
+ (its-defrule ":" "\e$A#:\e(B")
+ (its-defrule ";" "\e$A#;\e(B")
+ (its-defrule "?" "\e$A#?\e(B")
+ (its-defrule "!" "\e$A#!\e(B"))
+
+(define-its-state-machine its-erpin-tw-map
+ "erpin-tw" "\e$(GD(\e(BC" "Chinese-CNS"
+ "Map for Erpin input."
+
+ (defconst its-quanjiao-escape "Z")
+ (defconst its-banjiao-escape "X")
+
+ (its-defrule-select-mode-temporally "B" downcase)
+ (its-defrule-select-mode-temporally "Q" quanjiao-downcase-cn)
+
+ (its-define-erpin-table)
+ (its-defoutput* "b " "\e$(GDb\e(B")
+ (its-defoutput* "c " "\e$(GD_\e(B")
+ (its-defoutput* "ch " "\e$(GEx\e(B")
+ (its-defoutput* "d " "\e$(GN{\e(B")
+ (its-defoutput* "f " "\e$(GE0\e(B")
+ (its-defoutput* "g " "\e$(GT6\e(B")
+ (its-defoutput* "h " "\e$(GLO\e(B")
+ (its-defoutput* "i " "\e$(GD!\e(B")
+ (its-defoutput* "j " "\e$(G^s\e(B")
+ (its-defoutput* "k " "\e$(GF+\e(B")
+ (its-defoutput* "l " "\e$(GD'\e(B")
+ (its-defoutput* "m " "\e$(GJd\e(B")
+ (its-defoutput* "n " "\e$(GH!\e(B")
+ (its-defoutput* "p " "\e$(GJG\e(B")
+ (its-defoutput* "q " "\e$(GF*\e(B")
+ (its-defoutput* "r " "\e$(GEJ\e(B")
+ (its-defoutput* "s " "\e$(GQR\e(B")
+ (its-defoutput* "u " "\e$(GD8\e(B")
+ (its-defoutput* "t " "\e$(GEl\e(B")
+ (its-defoutput* "w " "\e$(GJ<\e(B")
+ (its-defoutput* "x " "\e$(GGW\e(B")
+ (its-defoutput* "y " "\e$(GD4\e(B")
+ (its-defoutput* "z " "\e$(GGc\e(B")
+ (its-defoutput* "v " "\e$(Gaa\e(B")
+
+ (dolist (ascii '(("0" . "\e$(G$!\e(B") ("1" . "\e$(G$"\e(B") ("2" . "\e$(G$#\e(B") ("3" . "\e$(G$$\e(B")
+ ("4" . "\e$(G$%\e(B") ("5" . "\e$(G$&\e(B") ("6" . "\e$(G$'\e(B") ("7" . "\e$(G$(\e(B")
+ ("8" . "\e$(G$)\e(B") ("9" . "\e$(G$*\e(B")
+ (" " . "\e$(G!!\e(B") ("!" . "\e$(G!*\e(B") ("@" . "\e$(G"i\e(B") ("#" . "\e$(G!l\e(B")
+ ("$" . "\e$(G"c\e(B") ("%" . "\e$(G"h\e(B") ("^" . "\e$(G!T\e(B") ("&" . "\e$(G!m\e(B")
+ ("*" . "\e$(G!n\e(B") ("(" . "\e$(G!>\e(B") (")" . "\e$(G!?\e(B")
+ ("-" . "\e$(G"1\e(B") ("=" . "\e$(G"8\e(B") ("`" . "\e$(G!j\e(B") ("\\" . "\e$(G"b\e(B")
+ ("|" . "\e$(G"^\e(B") ("_" . "\e$(G"%\e(B") ("+" . "\e$(G"0\e(B") ("~" . "\e$(G"D\e(B")
+ ("[" . "\e$(G!b\e(B") ("]" . "\e$(G!c\e(B") ("{" . "\e$A#{\e(B") ("}" . "\e$(G!a\e(B")
+ (":" . "\e$(G!(\e(B") (";" . "\e$(G!'\e(B") ("\"" . "\e$(G!i\e(B") ("'" . "\e$(G!k\e(B")
+ ("<" . "\e$(G"6\e(B") (">" . "\e$(G"7\e(B") ("?" . "\e$(G!)\e(B") ("/" . "\e$(G"a\e(B")
+ ("," . "\e$(G!"\e(B") ("." . "\e$(G!%\e(B")
+ ("a" . "\e$(G$[\e(B") ("b" . "\e$(G$\\e(B") ("c" . "\e$(G$]\e(B") ("d" . "\e$(G$^\e(B")
+ ("e" . "\e$(G$_\e(B") ("f" . "\e$(G$`\e(B") ("g" . "\e$(G$a\e(B") ("h" . "\e$(G$b\e(B")
+ ("i" . "\e$(G$c\e(B") ("j" . "\e$(G$d\e(B") ("k" . "\e$(G$e\e(B") ("l" . "\e$(G$f\e(B")
+ ("m" . "\e$(G$g\e(B") ("n" . "\e$(G$h\e(B") ("o" . "\e$(G$i\e(B") ("p" . "\e$(G$j\e(B")
+ ("q" . "\e$(G$k\e(B") ("r" . "\e$(G$l\e(B") ("s" . "\e$(G$m\e(B") ("t" . "\e$(G$n\e(B")
+ ("u" . "\e$(G$o\e(B") ("v" . "\e$(G$p\e(B") ("w" . "\e$(G$q\e(B") ("x" . "\e$(G$r\e(B")
+ ("y" . "\e$(G$s\e(B") ("z" . "\e$(G$t\e(B")
+ ("A" . "\e$(G$A\e(B") ("B" . "\e$(G$B\e(B") ("C" . "\e$(G$C\e(B") ("D" . "\e$(G$D\e(B")
+ ("E" . "\e$(G$E\e(B") ("F" . "\e$(G$F\e(B") ("G" . "\e$(G$G\e(B") ("H" . "\e$(G$H\e(B")
+ ("I" . "\e$(G$I\e(B") ("J" . "\e$(G$J\e(B") ("K" . "\e$(G$K\e(B") ("L" . "\e$(G$L\e(B")
+ ("M" . "\e$(G$M\e(B") ("N" . "\e$(G$N\e(B") ("O" . "\e$(G$O\e(B") ("P" . "\e$(G$P\e(B")
+ ("Q" . "\e$(G$Q\e(B") ("R" . "\e$(G$R\e(B") ("S" . "\e$(G$S\e(B") ("T" . "\e$(G$T\e(B")
+ ("U" . "\e$(G$U\e(B") ("V" . "\e$(G$V\e(B") ("W" . "\e$(G$W\e(B") ("X" . "\e$(G$X\e(B")
+ ("Y" . "\e$(G$Y\e(B") ("Z" . "\e$(G$Z\e(B")))
+ (let ((in (car ascii)) (out (cdr ascii)))
+ (its-defrule (concat its-banjiao-escape in) in)
+ (its-defrule (concat its-quanjiao-escape in) out)))
+
+ (its-defrule "," "\e$(G!"\e(B")
+ (its-defrule "." "\e$(G!$\e(B")
+ (its-defrule "/" "\e$(G!#\e(B")
+ (its-defrule ":" "\e$(G!(\e(B")
+ (its-defrule ";" "\e$(G!'\e(B")
+ (its-defrule "?" "\e$(G!)\e(B")
+ (its-defrule "!" "\e$(G!*\e(B"))
+
+(define-its-state-machine-append its-erpin-cn-map
+ (its-defrule "[" its-erpin-cn-open-braket)
+ (its-defrule "]" its-erpin-cn-close-braket)
+
+ (if its-erpin-cn-enable-quanjioao-alphabet
+ (progn
+ (its-defrule "1" "\e$A#1\e(B") (its-defrule "2" "\e$A#2\e(B")
+ (its-defrule "3" "\e$A#3\e(B") (its-defrule "4" "\e$A#4\e(B")
+ (its-defrule "5" "\e$A#5\e(B") (its-defrule "6" "\e$A#6\e(B")
+ (its-defrule "7" "\e$A#7\e(B") (its-defrule "8" "\e$A#8\e(B")
+ (its-defrule "9" "\e$A#9\e(B") (its-defrule "0" "\e$A#0\e(B")
+ (its-defrule "@" "\e$A#@\e(B")
+ (its-defrule "#" "\e$A##\e(B") (its-defrule "$" "\e$A!g\e(B")
+ (its-defrule "%" "\e$A#%\e(B") (its-defrule "^" "\e$A#^\e(B")
+ (its-defrule "&" "\e$A#&\e(B") (its-defrule "*" "\e$A#*\e(B")
+ (its-defrule "(" "\e$A#(\e(B") (its-defrule ")" "\e$A#)\e(B")
+ (its-defrule "-" "\e$A#-\e(B") (its-defrule "~" "\e$A!+\e(B")
+ (its-defrule "=" "\e$A#=\e(B") (its-defrule "`" "\e$A#`\e(B")
+ (its-defrule "\\" "\e$A#\\e(B") (its-defrule "|" "\e$A#|\e(B")
+ (its-defrule "_" "\e$A#_\e(B") (its-defrule "+" "\e$A#+\e(B")
+ (its-defrule "{" "\e$A#{\e(B") (its-defrule "}" "\e$A#}\e(B")
+ (its-defrule "\"" "\e$A#"\e(B") (its-defrule "'" "\e$A#'\e(B")
+ (its-defrule "<" "\e$A#<\e(B") (its-defrule ">" "\e$A#>\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 ">" ">"))))
+
+(define-its-state-machine-append its-erpin-tw-map
+ (its-defrule "[" its-erpin-tw-open-braket)
+ (its-defrule "]" its-erpin-tw-close-braket)
+
+ (if its-erpin-tw-enable-quanjioao-alphabet
+ (progn
+ (its-defrule "1" "\e$(G$"\e(B") (its-defrule "2" "\e$(G$#\e(B")
+ (its-defrule "3" "\e$(G$$\e(B") (its-defrule "4" "\e$(G$%\e(B")
+ (its-defrule "5" "\e$(G$&\e(B") (its-defrule "6" "\e$(G$'\e(B")
+ (its-defrule "7" "\e$(G$(\e(B") (its-defrule "8" "\e$(G$)\e(B")
+ (its-defrule "9" "\e$(G$*\e(B") (its-defrule "0" "\e$(G$!\e(B")
+ (its-defrule "@" "\e$(G"i\e(B")
+ (its-defrule "#" "\e$(G!l\e(B") (its-defrule "$" "\e$(G"c\e(B")
+ (its-defrule "%" "\e$(G"h\e(B") (its-defrule "^" "\e$(G!T\e(B")
+ (its-defrule "&" "\e$(G!m\e(B") (its-defrule "*" "\e$(G!n\e(B")
+ (its-defrule "(" "\e$(G!>\e(B") (its-defrule ")" "\e$(G!?\e(B")
+ (its-defrule "-" "\e$(G"1\e(B") (its-defrule "~" "\e$(G"D\e(B")
+ (its-defrule "=" "\e$(G"8\e(B") (its-defrule "`" "\e$(G!j\e(B")
+ (its-defrule "\\" "\e$(G"b\e(B") (its-defrule "|" "\e$(G"^\e(B")
+ (its-defrule "_" "\e$(G"%\e(B") (its-defrule "+" "\e$(G"0\e(B")
+ (its-defrule "{" "\e$A#{\e(B") (its-defrule "}" "\e$(G!a\e(B")
+ (its-defrule "\"" "\e$(G!i\e(B") (its-defrule "'" "\e$(G!k\e(B")
+ (its-defrule "<" "\e$(G"6\e(B") (its-defrule ">" "\e$(G"7\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 ">" ">"))))
+
+(provide 'its/erpin)
--- /dev/null
+;;; its/hankata.el --- Hnakaku 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>
+
+;; 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(I!\e(B" "*\e$B%T%j%*%I\e(B") ; ". " "\e$B!%\e(B"
+(defvar its-kata-comma "\e(I$\e(B" "*\e$B%3%s%^\e(B") ; ", " "\e$B!$\e(B"
+(defvar its-kata-open-bracket "\e(I"\e(B" "*[") ; "\e$B!N\e(B"
+(defvar its-kata-close-bracket "\e(I#\e(B" "*]") ; "\e$B!O\e(B"
+(defvar its-kata-horizontal "\e(I0\e(B" "*-") ; "\e$B!]\e(B"
+
+(define-its-state-machine its-han-kata-map
+ "roma-han-kata" "\e(I11\e(B" "Japanese" nil
+ "Map for Romaji-Hankaku-Katakana translation. (Japanese)"
+
+ (defconst its-hankaku-escape "~") ;; Escape character to Hankaku inputs
+
+ (its-defrule-select-mode-temporally "q" 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(I/\e(B" -2)
+
+;;; \e$B!V%s!W$NF~NO\e(B
+
+ (dolist (q1 '("b" "m" "p"))
+ (its-defrule (concat "m" q1) "\e(I]\e(B" -1))
+
+ (its-defrule "N" "\e(I]\e(B")
+
+ (let ((state (its-goto-state "n" nil t)))
+ (its-make-next-state state -1 "n" "\e(I]\e(B")
+ (its-make-next-state state ?' "n" "\e(I]\e(B")
+ (its-defrule-otherwise state "\e(I]\e(B"))
+
+ (let ((small '"x" ))
+ (its-defrule (concat small "a") "\e(I'\e(B")
+ (its-defrule (concat small "i") "\e(I(\e(B")
+ (its-defrule (concat small "u") "\e(I)\e(B")
+ (its-defrule (concat small "e") "\e(I*\e(B")
+ (its-defrule (concat small "o") "\e(I+\e(B")
+ (its-defrule (concat small "ya") "\e(I,\e(B")
+ (its-defrule (concat small "yu") "\e(I-\e(B")
+ (its-defrule (concat small "yo") "\e(I.\e(B")
+ (its-defrule (concat small "tu") "\e(I/\e(B")
+ (its-defrule (concat small "tsu") "\e(I/\e(B")
+ (its-defrule (concat small "wa") "\e(I\\e(B")
+ )
+
+ (its-defrule "a" "\e(I1\e(B")
+ (its-defrule "i" "\e(I2\e(B")
+ (its-defrule "u" "\e(I3\e(B")
+ (its-defrule "e" "\e(I4\e(B")
+ (its-defrule "o" "\e(I5\e(B")
+
+ (dolist (k '(("ka" "\e(I6\e(B") ("ki" "\e(I7\e(B") ("ku" "\e(I8\e(B") ("ke" "\e(I9\e(B") ("ko" "\e(I:\e(B")
+ ("kya" "\e(I7,\e(B") ("kyu" "\e(I7-\e(B") ("kye" "\e(I7*\e(B") ("kyo" "\e(I7.\e(B")))
+ (its-defrule (car k) (cadr k))
+ (its-defrule (concat "k" (car k)) (concat "\e(I/\e(B" (cadr k))))
+ (its-defoutput "kk" "\e(I/\e(Bk")
+ (its-defoutput "kky" "\e(I/\e(Bky")
+
+ (dolist (s '(("sa" "\e(I;\e(B") ("si" "\e(I<\e(B") ("su" "\e(I=\e(B") ("se" "\e(I>\e(B") ("so" "\e(I?\e(B")
+ ("sya" "\e(I<,\e(B") ("syu" "\e(I<-\e(B") ("sye" "\e(I<*\e(B") ("syo" "\e(I<.\e(B")
+ ("sha" "\e(I<,\e(B") ("shi" "\e(I<\e(B") ("shu" "\e(I<-\e(B") ("she" "\e(I<*\e(B")
+ ("sho" "\e(I<.\e(B")))
+ (its-defrule (car s) (cadr s))
+ (its-defrule (concat "s" (car s)) (concat "\e(I/\e(B" (cadr s))))
+ (its-defoutput "ss" "\e(I/\e(Bs")
+ (its-defoutput "ssy" "\e(I/\e(Bsy")
+ (its-defoutput "ssh" "\e(I/\e(Bsh")
+
+ (dolist (T '(("ta" "\e(I@\e(B") ("ti" "\e(IA\e(B") ("tu" "\e(IB\e(B") ("te" "\e(IC\e(B") ("to" "\e(ID\e(B")
+ ("tya" "\e(IA,\e(B") ("tyi" "\e(IC(\e(B") ("tyu" "\e(IA-\e(B") ("tye" "\e(IA*\e(B")
+ ("tyo" "\e(IA.\e(B") ("tsu" "\e(IB\e(B")))
+ (its-defrule (car T) (cadr T))
+ (its-defrule (concat "t" (car T)) (concat "\e(I/\e(B" (cadr T))))
+ (its-defoutput "tt" "\e(I/\e(Bt")
+ (its-defoutput "tty" "\e(I/\e(Bty")
+ (its-defoutput "tts" "\e(I/\e(Bts")
+
+ (dolist (c '(("cha" "\e(IA,\e(B") ("chi" "\e(IA\e(B") ("chu" "\e(IA-\e(B")
+ ("che" "\e(IA*\e(B") ("cho" "\e(IA.\e(B")))
+ (its-defrule (car c) (cadr c))
+ (its-defrule (concat "c" (car c)) (concat "\e(I/\e(B" (cadr c))))
+ (its-defoutput "cc" "\e(I/\e(Bc")
+ (its-defoutput "cch" "\e(I/\e(Bch")
+
+ (dolist (h '(("ha" "\e(IJ\e(B") ("hi" "\e(IK\e(B") ("hu" "\e(IL\e(B") ("he" "\e(IM\e(B") ("ho" "\e(IN\e(B")
+ ("hya" "\e(IK,\e(B") ("hyu" "\e(IK-\e(B") ("hye" "\e(IK*\e(B") ("hyo" "\e(IK.\e(B")))
+ (its-defrule (car h) (cadr h))
+ (its-defrule (concat "h" (car h)) (concat "\e(I/\e(B" (cadr h))))
+ (its-defoutput "hh" "\e(I/\e(Bh")
+ (its-defoutput "hhy" "\e(I/\e(Bhy")
+
+ (dolist (f '(("fa" "\e(IL'\e(B") ("fi" "\e(IL(\e(B") ("fu" "\e(IL\e(B") ("fe" "\e(IL*\e(B")
+ ("fo" "\e(IL+\e(B")))
+ (its-defrule (car f) (cadr f))
+ (its-defrule (concat "f" (car f)) (concat "\e(I/\e(B" (cadr f))))
+ (its-defoutput "ff" "\e(I/\e(Bf")
+
+ (dolist (r '(("ra" "\e(IW\e(B") ("ri" "\e(IX\e(B") ("ru" "\e(IY\e(B") ("re" "\e(IZ\e(B") ("ro" "\e(I[\e(B")
+ ("rya" "\e(IX,\e(B") ("ryu" "\e(IX-\e(B") ("rye" "\e(IX*\e(B") ("ryo" "\e(IX.\e(B")))
+ (its-defrule (car r) (cadr r))
+ (its-defrule (concat "r" (car r)) (concat "\e(I/\e(B" (cadr r))))
+ (its-defoutput "rr" "\e(I/\e(Br")
+ (its-defoutput "rry" "\e(I/\e(Bry")
+
+ (dolist (l '(("la" "\e(IW\e(B") ("li" "\e(IX\e(B") ("lu" "\e(IY\e(B") ("le" "\e(IZ\e(B") ("lo" "\e(I[\e(B")
+ ("lya" "\e(IX,\e(B") ("lyu" "\e(IX-\e(B") ("lye" "\e(IX*\e(B") ("lyo" "\e(IX.\e(B")))
+ (its-defrule (car l) (cadr l))
+ (its-defrule (concat "l" (car l)) (concat "\e(I/\e(B" (cadr l))))
+ (its-defoutput "ll" "\e(I/\e(Bl")
+ (its-defoutput "lly" "\e(I/\e(Bly")
+
+ (dolist (g '(("ga" "\e(I6^\e(B") ("gi" "\e(I7^\e(B") ("gu" "\e(I8^\e(B") ("ge" "\e(I9^\e(B") ("go" "\e(I:^\e(B")
+ ("gya" "\e(I7^,\e(B") ("gyu" "\e(I7^-\e(B") ("gye" "\e(I7^*\e(B") ("gyo" "\e(I7^.\e(B")))
+ (its-defrule (car g) (cadr g))
+ (its-defrule (concat "g" (car g)) (concat "\e(I/\e(B" (cadr g))))
+ (its-defoutput "gg" "\e(I/\e(Bg")
+ (its-defoutput "ggy" "\e(I/\e(Bgy")
+
+ (dolist (z '(("za" "\e(I;^\e(B") ("zi" "\e(I<^\e(B") ("zu" "\e(I=^\e(B") ("ze" "\e(I>^\e(B") ("zo" "\e(I?^\e(B")
+ ("zya" "\e(I<^,\e(B") ("zyu" "\e(I<^-\e(B") ("zye" "\e(I<^*\e(B") ("zyo" "\e(I<^.\e(B")))
+ (its-defrule (car z) (cadr z))
+ (its-defrule (concat "z" (car z)) (concat "\e(I/\e(B" (cadr z))))
+ (its-defoutput "zz" "\e(I/\e(Bz")
+ (its-defoutput "zzy" "\e(I/\e(Bzy")
+
+ (dolist (j '(("ja" "\e(I<^,\e(B") ("ji" "\e(I<^\e(B") ("ju" "\e(I<^-\e(B") ("je" "\e(I<^*\e(B")
+ ("jo" "\e(I<^.\e(B") ("jya" "\e(I<^,\e(B") ("jyu" "\e(I<^-\e(B") ("jye" "\e(I<^*\e(B")
+ ("jyo" "\e(I<^.\e(B")))
+ (its-defrule (car j) (cadr j))
+ (its-defrule (concat "j" (car j)) (concat "\e(I/\e(B" (cadr j))))
+ (its-defoutput "jj" "\e(I/\e(Bj")
+ (its-defoutput "jjy" "\e(I/\e(Bjy")
+
+ (dolist (d '(("da" "\e(I@^\e(B") ("di" "\e(IA^\e(B") ("du" "\e(IB^\e(B") ("de" "\e(IC^\e(B") ("do" "\e(ID^\e(B")
+ ("dya" "\e(IA^,\e(B") ("dyi" "\e(IC^(\e(B") ("dyu" "\e(IA^-\e(B") ("dye" "\e(IA^*\e(B")
+ ("dyo" "\e(IA^.\e(B")))
+ (its-defrule (car d) (cadr d))
+ (its-defrule (concat "d" (car d)) (concat "\e(I/\e(B" (cadr d))))
+ (its-defoutput "dd" "\e(I/\e(Bd")
+ (its-defoutput "ddy" "\e(I/\e(Bdy")
+
+ (dolist (b '(("ba" "\e(IJ^\e(B") ("bi" "\e(IK^\e(B") ("bu" "\e(IL^\e(B") ("be" "\e(IM^\e(B") ("bo" "\e(IN^\e(B")
+ ("bya" "\e(IK^,\e(B") ("byu" "\e(IK^-\e(B") ("bye" "\e(IK^*\e(B") ("byo" "\e(IK^.\e(B")))
+ (its-defrule (car b) (cadr b))
+ (its-defrule (concat "b" (car b)) (concat "\e(I/\e(B" (cadr b))))
+ (its-defoutput "bb" "\e(I/\e(Bb")
+ (its-defoutput "bby" "\e(I/\e(Bby")
+
+ (dolist (p '(("pa" "\e(IJ_\e(B") ("pi" "\e(IK_\e(B") ("pu" "\e(IL_\e(B") ("pe" "\e(IM_\e(B") ("po" "\e(IN_\e(B")
+ ("pya" "\e(IK_,\e(B") ("pyu" "\e(IK_-\e(B") ("pye" "\e(IK_*\e(B") ("pyo" "\e(IK_.\e(B")))
+ (its-defrule (car p) (cadr p))
+ (its-defrule (concat "p" (car p)) (concat "\e(I/\e(B" (cadr p))))
+ (its-defoutput "pp" "\e(I/\e(Bp")
+ (its-defoutput "ppy" "\e(I/\e(Bpy")
+
+ (dolist (v '(("va" "\e(I3^'\e(B") ("vi" "\e(I3^(\e(B") ("vu" "\e(I3^\e(B") ("ve" "\e(I3^*\e(B")
+ ("vo" "\e(I3^+\e(B")))
+ (its-defrule (car v) (cadr v))
+ (its-defrule (concat "v" (car v)) (concat "\e(I/\e(B" (cadr v))))
+ (its-defoutput "vv" "\e(I/\e(Bv")
+
+ (its-defrule "ma" "\e(IO\e(B")
+ (its-defrule "mi" "\e(IP\e(B")
+ (its-defrule "mu" "\e(IQ\e(B")
+ (its-defrule "me" "\e(IR\e(B")
+ (its-defrule "mo" "\e(IS\e(B")
+ (its-defrule "mya" "\e(IP,\e(B")
+ (its-defrule "myu" "\e(IP-\e(B")
+ (its-defrule "mye" "\e(IP*\e(B")
+ (its-defrule "myo" "\e(IP.\e(B")
+ (its-defrule "ya" "\e(IT\e(B")
+ (its-defrule "yi" "\e(I2\e(B")
+ (its-defrule "yu" "\e(IU\e(B")
+ (its-defrule "yo" "\e(IV\e(B")
+ (its-defrule "ye" "\e(I2*\e(B")
+ (its-defrule "wa" "\e(I\\e(B")
+ (its-defrule "wi" "\e(I(\e(B")
+ (its-defrule "wu" "\e(I3\e(B")
+ (its-defrule "we" "\e(I*\e(B")
+ (its-defrule "wo" "\e(I&\e(B")
+
+ (its-defrule "kwa" "\e(I8\\e(B")
+ (its-defrule "kwi" "\e(I8(\e(B")
+ (its-defrule "kwu" "\e(I8\e(B")
+ (its-defrule "kwe" "\e(I8*\e(B")
+ (its-defrule "kwo" "\e(I8+\e(B")
+ (its-defrule "gwa" "\e(I8^\\e(B")
+ (its-defrule "gwi" "\e(I8^(\e(B")
+ (its-defrule "gwu" "\e(I8^\e(B")
+ (its-defrule "gwe" "\e(I8^*\e(B")
+ (its-defrule "gwo" "\e(I8^+\e(B")
+ (its-defrule "tsa" "\e(IB'\e(B")
+ (its-defrule "tsi" "\e(IB(\e(B")
+ (its-defrule "tse" "\e(IB*\e(B")
+ (its-defrule "tso" "\e(IB+\e(B")
+
+ (its-defrule "na" "\e(IE\e(B")
+ (its-defrule "ni" "\e(IF\e(B")
+ (its-defrule "nu" "\e(IG\e(B")
+ (its-defrule "ne" "\e(IH\e(B")
+ (its-defrule "no" "\e(II\e(B")
+ (its-defrule "nya" "\e(IF,\e(B")
+ (its-defrule "nyu" "\e(IF-\e(B")
+ (its-defrule "nye" "\e(IF*\e(B")
+ (its-defrule "nyo" "\e(IF.\e(B")
+
+ (its-defrule "xti" "\e(IC(\e(B")
+ (its-defrule "xdi" "\e(IC^(\e(B")
+ (its-defrule "xdu" "\e(ID^)\e(B")
+ (its-defrule "xde" "\e(IC^*\e(B")
+ (its-defrule "xdo" "\e(ID^+\e(B")
+ (its-defrule "xwi" "\e(I3(\e(B")
+ (its-defrule "xwe" "\e(I3*\e(B")
+ (its-defrule "xwo" "\e(I3+\e(B")
+
+;;;
+;;; Symbol 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)))
+
+(define-its-state-machine-append its-han-kata-map
+ (if its-kata-enable-double-n
+ (its-defrule "nn" "\e(I]\e(B")
+ (its-defrule "nn" "\e(I]\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)
+ )
+
+(provide 'its/hankata)
+;;; its/kata.el ends here.
--- /dev/null
+;;; its/jeonkak.el --- Jeonkak ASCII 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: KATAYAMA Yoshio <kate@pfu.co.jp>
+
+;; 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/hira.el in Mule-2.3 distribution.
+;;
+
+;;; Code:
+
+(eval-when-compile
+ (require 'its))
+
+(define-its-state-machine its-jeonkak-up-map
+ "jeonkak-upcase" "\e$(C#A\e(B" "Korean" nil
+ "Map for jeonkak-upcase input."
+
+ (dolist (ascii '(("1" . "\e$(C#1\e(B") ("2" . "\e$(C#2\e(B") ("3" . "\e$(C#3\e(B") ("4" . "\e$(C#4\e(B")
+ ("5" . "\e$(C#5\e(B") ("6" . "\e$(C#6\e(B") ("7" . "\e$(C#7\e(B") ("8" . "\e$(C#8\e(B")
+ ("9" . "\e$(C#9\e(B") ("0" . "\e$(C#0\e(B")
+ (" " . "\e$(C!!\e(B") ("!" . "\e$(C#!\e(B") ("@" . "\e$(C#@\e(B") ("#" . "\e$(C##\e(B")
+ ("$" . "\e$(C#$\e(B") ("%" . "\e$(C#%\e(B") ("^" . "\e$(C#^\e(B") ("&" . "\e$(C#&\e(B")
+ ("*" . "\e$(C#*\e(B") ("(" . "\e$(C#(\e(B") (")" . "\e$(C#)\e(B")
+ ("-" . "\e$(C#-\e(B") ("=" . "\e$(C#=\e(B") ("`" . "\e$(C#`\e(B") ("\\" . "\e$(C#\\e(B")
+ ("|" . "\e$(C#|\e(B") ("_" . "\e$(C#_\e(B") ("+" . "\e$(C#+\e(B") ("~" . "\e$(C#~\e(B")
+ ("[" . "\e$(C!8\e(B") ("]" . "\e$(C!9\e(B") ("{" . "\e$(C#{\e(B") ("}" . "\e$(C#}\e(B")
+ (":" . "\e$(C#:\e(B") (";" . "\e$(C#;\e(B") ("\"" . "\e$(C#"\e(B") ("'" . "\e$(C#'\e(B")
+ ("<" . "\e$(C#<\e(B") (">" . "\e$(C#>\e(B") ("?" . "\e$(C#?\e(B") ("/" . "\e$(C#/\e(B")
+ ("," . "\e$(C#,\e(B") ("." . "\e$(C#.\e(B")
+ ("a" . "\e$(C#A\e(B") ("b" . "\e$(C#B\e(B") ("c" . "\e$(C#C\e(B") ("d" . "\e$(C#D\e(B")
+ ("e" . "\e$(C#E\e(B") ("f" . "\e$(C#F\e(B") ("g" . "\e$(C#G\e(B") ("h" . "\e$(C#H\e(B")
+ ("i" . "\e$(C#I\e(B") ("j" . "\e$(C#J\e(B") ("k" . "\e$(C#K\e(B") ("l" . "\e$(C#L\e(B")
+ ("m" . "\e$(C#M\e(B") ("n" . "\e$(C#N\e(B") ("o" . "\e$(C#O\e(B") ("p" . "\e$(C#P\e(B")
+ ("q" . "\e$(C#Q\e(B") ("r" . "\e$(C#R\e(B") ("s" . "\e$(C#S\e(B") ("t" . "\e$(C#T\e(B")
+ ("u" . "\e$(C#U\e(B") ("v" . "\e$(C#V\e(B") ("w" . "\e$(C#W\e(B") ("x" . "\e$(C#X\e(B")
+ ("y" . "\e$(C#Y\e(B") ("z" . "\e$(C#Z\e(B")
+ ("A" . "\e$(C#A\e(B") ("B" . "\e$(C#B\e(B") ("C" . "\e$(C#C\e(B") ("D" . "\e$(C#D\e(B")
+ ("E" . "\e$(C#E\e(B") ("F" . "\e$(C#F\e(B") ("G" . "\e$(C#G\e(B") ("H" . "\e$(C#H\e(B")
+ ("I" . "\e$(C#I\e(B") ("J" . "\e$(C#J\e(B") ("K" . "\e$(C#K\e(B") ("L" . "\e$(C#L\e(B")
+ ("M" . "\e$(C#M\e(B") ("N" . "\e$(C#N\e(B") ("O" . "\e$(C#O\e(B") ("P" . "\e$(C#P\e(B")
+ ("Q" . "\e$(C#Q\e(B") ("R" . "\e$(C#R\e(B") ("S" . "\e$(C#S\e(B") ("T" . "\e$(C#T\e(B")
+ ("U" . "\e$(C#U\e(B") ("V" . "\e$(C#V\e(B") ("W" . "\e$(C#W\e(B") ("X" . "\e$(C#X\e(B")
+ ("Y" . "\e$(C#Y\e(B") ("Z" . "\e$(C#Z\e(B")))
+ (let ((in (car ascii)) (out (cdr ascii)))
+ (its-defrule in out))))
+
+(define-its-state-machine its-jeonkak-down-map
+ "jeonkak-downcase" "\e$(C#a\e(B" "Korean" nil
+ "Map for jeonkak-downcase input."
+
+ (dolist (ascii '(("1" . "\e$(C#1\e(B") ("2" . "\e$(C#2\e(B") ("3" . "\e$(C#3\e(B") ("4" . "\e$(C#4\e(B")
+ ("5" . "\e$(C#5\e(B") ("6" . "\e$(C#6\e(B") ("7" . "\e$(C#7\e(B") ("8" . "\e$(C#8\e(B")
+ ("9" . "\e$(C#9\e(B") ("0" . "\e$(C#0\e(B")
+ (" " . "\e$(C!!\e(B") ("!" . "\e$(C#!\e(B") ("@" . "\e$(C#@\e(B") ("#" . "\e$(C##\e(B")
+ ("$" . "\e$(C#$\e(B") ("%" . "\e$(C#%\e(B") ("^" . "\e$(C#^\e(B") ("&" . "\e$(C#&\e(B")
+ ("*" . "\e$(C#*\e(B") ("(" . "\e$(C#(\e(B") (")" . "\e$(C#)\e(B")
+ ("-" . "\e$(C#-\e(B") ("=" . "\e$(C#=\e(B") ("`" . "\e$(C#`\e(B") ("\\" . "\e$(C#\\e(B")
+ ("|" . "\e$(C#|\e(B") ("_" . "\e$(C#_\e(B") ("+" . "\e$(C#+\e(B") ("~" . "\e$(C#~\e(B")
+ ("[" . "\e$(C!8\e(B") ("]" . "\e$(C!9\e(B") ("{" . "\e$(C#{\e(B") ("}" . "\e$(C#}\e(B")
+ (":" . "\e$(C#:\e(B") (";" . "\e$(C#;\e(B") ("\"" . "\e$(C#"\e(B") ("'" . "\e$(C#'\e(B")
+ ("<" . "\e$(C#<\e(B") (">" . "\e$(C#>\e(B") ("?" . "\e$(C#?\e(B") ("/" . "\e$(C#/\e(B")
+ ("," . "\e$(C#,\e(B") ("." . "\e$(C#.\e(B")
+ ("a" . "\e$(C#a\e(B") ("b" . "\e$(C#b\e(B") ("c" . "\e$(C#c\e(B") ("d" . "\e$(C#d\e(B")
+ ("e" . "\e$(C#e\e(B") ("f" . "\e$(C#f\e(B") ("g" . "\e$(C#g\e(B") ("h" . "\e$(C#h\e(B")
+ ("i" . "\e$(C#i\e(B") ("j" . "\e$(C#j\e(B") ("k" . "\e$(C#k\e(B") ("l" . "\e$(C#l\e(B")
+ ("m" . "\e$(C#m\e(B") ("n" . "\e$(C#n\e(B") ("o" . "\e$(C#o\e(B") ("p" . "\e$(C#p\e(B")
+ ("q" . "\e$(C#q\e(B") ("r" . "\e$(C#r\e(B") ("s" . "\e$(C#s\e(B") ("t" . "\e$(C#t\e(B")
+ ("u" . "\e$(C#u\e(B") ("v" . "\e$(C#v\e(B") ("w" . "\e$(C#w\e(B") ("x" . "\e$(C#x\e(B")
+ ("y" . "\e$(C#y\e(B") ("z" . "\e$(C#z\e(B")
+ ("A" . "\e$(C#A\e(B") ("B" . "\e$(C#B\e(B") ("C" . "\e$(C#C\e(B") ("D" . "\e$(C#D\e(B")
+ ("E" . "\e$(C#E\e(B") ("F" . "\e$(C#F\e(B") ("G" . "\e$(C#G\e(B") ("H" . "\e$(C#H\e(B")
+ ("I" . "\e$(C#I\e(B") ("J" . "\e$(C#J\e(B") ("K" . "\e$(C#K\e(B") ("L" . "\e$(C#L\e(B")
+ ("M" . "\e$(C#M\e(B") ("N" . "\e$(C#N\e(B") ("O" . "\e$(C#O\e(B") ("P" . "\e$(C#P\e(B")
+ ("Q" . "\e$(C#Q\e(B") ("R" . "\e$(C#R\e(B") ("S" . "\e$(C#S\e(B") ("T" . "\e$(C#T\e(B")
+ ("U" . "\e$(C#U\e(B") ("V" . "\e$(C#V\e(B") ("W" . "\e$(C#W\e(B") ("X" . "\e$(C#X\e(B")
+ ("Y" . "\e$(C#Y\e(B") ("Z" . "\e$(C#Z\e(B")))
+ (let ((in (car ascii)) (out (cdr ascii)))
+ (its-defrule in out))))
+
+(provide 'its/jeonkak)
--- /dev/null
+;;; 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.
--- /dev/null
+;;; its/quanjiao.el --- Quanjiao ASCII 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: KATAYAMA Yoshio <kate@pfu.co.jp>
+
+;; 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/hira.el in Mule-2.3 distribution.
+;;
+
+;;; Code:
+
+(eval-when-compile
+ (require 'its))
+
+(define-its-state-machine its-quanjiao-up-cn-map
+ "quanjiao-upcase-cn" "\e$A#A\e(B" "Chinese-GB" nil
+ "Map for quanjiao-upcase input. (Chinese-GB)"
+
+ (dolist (ascii '(("0" . "\e$A#0\e(B") ("1" . "\e$A#1\e(B") ("2" . "\e$A#2\e(B") ("3" . "\e$A#3\e(B")
+ ("4" . "\e$A#4\e(B") ("5" . "\e$A#5\e(B") ("6" . "\e$A#6\e(B") ("7" . "\e$A#7\e(B")
+ ("8" . "\e$A#8\e(B") ("9" . "\e$A#9\e(B")
+ (" " . "\e$A!!\e(B") ("!" . "\e$A#!\e(B") ("@" . "\e$A#@\e(B") ("#" . "\e$A##\e(B")
+ ("$" . "\e$A!g\e(B") ("%" . "\e$A#%\e(B") ("^" . "\e$A#^\e(B") ("&" . "\e$A#&\e(B")
+ ("*" . "\e$A#*\e(B") ("(" . "\e$A#(\e(B") (")" . "\e$A#)\e(B")
+ ("-" . "\e$A#-\e(B") ("=" . "\e$A#=\e(B") ("`" . "\e$A#`\e(B") ("\\" . "\e$A#\\e(B")
+ ("|" . "\e$A#|\e(B") ("_" . "\e$A#_\e(B") ("+" . "\e$A#+\e(B") ("~" . "\e$A!+\e(B")
+ ("[" . "\e$A#[\e(B") ("]" . "\e$A#]\e(B") ("{" . "\e$A#{\e(B") ("}" . "\e$A#}\e(B")
+ (":" . "\e$A#:\e(B") (";" . "\e$A#;\e(B") ("\"" . "\e$A#"\e(B") ("'" . "\e$A#'\e(B")
+ ("<" . "\e$A#<\e(B") (">" . "\e$A#>\e(B") ("?" . "\e$A#?\e(B") ("/" . "\e$A#/\e(B")
+ ("," . "\e$A#,\e(B") ("." . "\e$A#.\e(B")
+ ("a" . "\e$A#A\e(B") ("b" . "\e$A#B\e(B") ("c" . "\e$A#C\e(B") ("d" . "\e$A#D\e(B")
+ ("e" . "\e$A#E\e(B") ("f" . "\e$A#F\e(B") ("g" . "\e$A#G\e(B") ("h" . "\e$A#H\e(B")
+ ("i" . "\e$A#I\e(B") ("j" . "\e$A#J\e(B") ("k" . "\e$A#K\e(B") ("l" . "\e$A#L\e(B")
+ ("m" . "\e$A#M\e(B") ("n" . "\e$A#N\e(B") ("o" . "\e$A#O\e(B") ("p" . "\e$A#P\e(B")
+ ("q" . "\e$A#Q\e(B") ("r" . "\e$A#R\e(B") ("s" . "\e$A#S\e(B") ("t" . "\e$A#T\e(B")
+ ("u" . "\e$A#U\e(B") ("v" . "\e$A#V\e(B") ("w" . "\e$A#W\e(B") ("x" . "\e$A#X\e(B")
+ ("y" . "\e$A#Y\e(B") ("z" . "\e$A#Z\e(B")
+ ("A" . "\e$A#A\e(B") ("B" . "\e$A#B\e(B") ("C" . "\e$A#C\e(B") ("D" . "\e$A#D\e(B")
+ ("E" . "\e$A#E\e(B") ("F" . "\e$A#F\e(B") ("G" . "\e$A#G\e(B") ("H" . "\e$A#H\e(B")
+ ("I" . "\e$A#I\e(B") ("J" . "\e$A#J\e(B") ("K" . "\e$A#K\e(B") ("L" . "\e$A#L\e(B")
+ ("M" . "\e$A#M\e(B") ("N" . "\e$A#N\e(B") ("O" . "\e$A#O\e(B") ("P" . "\e$A#P\e(B")
+ ("Q" . "\e$A#Q\e(B") ("R" . "\e$A#R\e(B") ("S" . "\e$A#S\e(B") ("T" . "\e$A#T\e(B")
+ ("U" . "\e$A#U\e(B") ("V" . "\e$A#V\e(B") ("W" . "\e$A#W\e(B") ("X" . "\e$A#X\e(B")
+ ("Y" . "\e$A#Y\e(B") ("Z" . "\e$A#Z\e(B")))
+ (let ((in (car ascii)) (out (cdr ascii)))
+ (its-defrule in out))))
+
+(define-its-state-machine its-quanjiao-down-cn-map
+ "quanjiao-downcase-cn" "\e$A#a\e(B" "Chinese-GB" nil
+ "Map for quanjiao-downcase input. (Chinese-GB)"
+
+ (dolist (ascii '(("0" . "\e$A#0\e(B") ("1" . "\e$A#1\e(B") ("2" . "\e$A#2\e(B") ("3" . "\e$A#3\e(B")
+ ("4" . "\e$A#4\e(B") ("5" . "\e$A#5\e(B") ("6" . "\e$A#6\e(B") ("7" . "\e$A#7\e(B")
+ ("8" . "\e$A#8\e(B") ("9" . "\e$A#9\e(B")
+ (" " . "\e$A!!\e(B") ("!" . "\e$A#!\e(B") ("@" . "\e$A#@\e(B") ("#" . "\e$A##\e(B")
+ ("$" . "\e$A!g\e(B") ("%" . "\e$A#%\e(B") ("^" . "\e$A#^\e(B") ("&" . "\e$A#&\e(B")
+ ("*" . "\e$A#*\e(B") ("(" . "\e$A#(\e(B") (")" . "\e$A#)\e(B")
+ ("-" . "\e$A#-\e(B") ("=" . "\e$A#=\e(B") ("`" . "\e$A#`\e(B") ("\\" . "\e$A#\\e(B")
+ ("|" . "\e$A#|\e(B") ("_" . "\e$A#_\e(B") ("+" . "\e$A#+\e(B") ("~" . "\e$A!+\e(B")
+ ("[" . "\e$A#[\e(B") ("]" . "\e$A#]\e(B") ("{" . "\e$A#{\e(B") ("}" . "\e$A#}\e(B")
+ (":" . "\e$A#:\e(B") (";" . "\e$A#;\e(B") ("\"" . "\e$A#"\e(B") ("'" . "\e$A#'\e(B")
+ ("<" . "\e$A#<\e(B") (">" . "\e$A#>\e(B") ("?" . "\e$A#?\e(B") ("/" . "\e$A#/\e(B")
+ ("," . "\e$A#,\e(B") ("." . "\e$A#.\e(B")
+ ("a" . "\e$A#a\e(B") ("b" . "\e$A#b\e(B") ("c" . "\e$A#c\e(B") ("d" . "\e$A#d\e(B")
+ ("e" . "\e$A#e\e(B") ("f" . "\e$A#f\e(B") ("g" . "\e$A#g\e(B") ("h" . "\e$A#h\e(B")
+ ("i" . "\e$A#i\e(B") ("j" . "\e$A#j\e(B") ("k" . "\e$A#k\e(B") ("l" . "\e$A#l\e(B")
+ ("m" . "\e$A#m\e(B") ("n" . "\e$A#n\e(B") ("o" . "\e$A#o\e(B") ("p" . "\e$A#p\e(B")
+ ("q" . "\e$A#q\e(B") ("r" . "\e$A#r\e(B") ("s" . "\e$A#s\e(B") ("t" . "\e$A#t\e(B")
+ ("u" . "\e$A#u\e(B") ("v" . "\e$A#v\e(B") ("w" . "\e$A#w\e(B") ("x" . "\e$A#x\e(B")
+ ("y" . "\e$A#y\e(B") ("z" . "\e$A#z\e(B")
+ ("A" . "\e$A#A\e(B") ("B" . "\e$A#B\e(B") ("C" . "\e$A#C\e(B") ("D" . "\e$A#D\e(B")
+ ("E" . "\e$A#E\e(B") ("F" . "\e$A#F\e(B") ("G" . "\e$A#G\e(B") ("H" . "\e$A#H\e(B")
+ ("I" . "\e$A#I\e(B") ("J" . "\e$A#J\e(B") ("K" . "\e$A#K\e(B") ("L" . "\e$A#L\e(B")
+ ("M" . "\e$A#M\e(B") ("N" . "\e$A#N\e(B") ("O" . "\e$A#O\e(B") ("P" . "\e$A#P\e(B")
+ ("Q" . "\e$A#Q\e(B") ("R" . "\e$A#R\e(B") ("S" . "\e$A#S\e(B") ("T" . "\e$A#T\e(B")
+ ("U" . "\e$A#U\e(B") ("V" . "\e$A#V\e(B") ("W" . "\e$A#W\e(B") ("X" . "\e$A#X\e(B")
+ ("Y" . "\e$A#Y\e(B") ("Z" . "\e$A#Z\e(B")))
+ (let ((in (car ascii)) (out (cdr ascii)))
+ (its-defrule in out))))
+
+(define-its-state-machine its-quanjiao-up-tw-map
+ "quanjiao-upcase-tw" "\e$(G$A\e(B" "Chinese-CNS" nil
+ "Map for quanjiao-upcase input. (Chinese-CNS)"
+
+ (dolist (ascii '(("0" . "\e$(G$!\e(B") ("1" . "\e$(G$"\e(B") ("2" . "\e$(G$#\e(B") ("3" . "\e$(G$$\e(B")
+ ("4" . "\e$(G$%\e(B") ("5" . "\e$(G$&\e(B") ("6" . "\e$(G$'\e(B") ("7" . "\e$(G$(\e(B")
+ ("8" . "\e$(G$)\e(B") ("9" . "\e$(G$*\e(B")
+ (" " . "\e$(G!!\e(B") ("!" . "\e$(G!*\e(B") ("@" . "\e$(G"i\e(B") ("#" . "\e$(G!l\e(B")
+ ("$" . "\e$(G"c\e(B") ("%" . "\e$(G"h\e(B") ("^" . "\e$(G!T\e(B") ("&" . "\e$(G!m\e(B")
+ ("*" . "\e$(G!n\e(B") ("(" . "\e$(G!>\e(B") (")" . "\e$(G!?\e(B")
+ ("-" . "\e$(G"1\e(B") ("=" . "\e$(G"8\e(B") ("`" . "\e$(G!j\e(B") ("\\" . "\e$(G"b\e(B")
+ ("|" . "\e$(G"^\e(B") ("_" . "\e$(G"%\e(B") ("+" . "\e$(G"0\e(B") ("~" . "\e$(G"D\e(B")
+ ("[" . "\e$(G!b\e(B") ("]" . "\e$(G!c\e(B") ("{" . "\e$A#{\e(B") ("}" . "\e$(G!a\e(B")
+ (":" . "\e$(G!(\e(B") (";" . "\e$(G!'\e(B") ("\"" . "\e$(G!i\e(B") ("'" . "\e$(G!k\e(B")
+ ("<" . "\e$(G"6\e(B") (">" . "\e$(G"7\e(B") ("?" . "\e$(G!)\e(B") ("/" . "\e$(G"a\e(B")
+ ("," . "\e$(G!"\e(B") ("." . "\e$(G!%\e(B")
+ ("a" . "\e$(G$A\e(B") ("b" . "\e$(G$B\e(B") ("c" . "\e$(G$C\e(B") ("d" . "\e$(G$D\e(B")
+ ("e" . "\e$(G$E\e(B") ("f" . "\e$(G$F\e(B") ("g" . "\e$(G$G\e(B") ("h" . "\e$(G$H\e(B")
+ ("i" . "\e$(G$I\e(B") ("j" . "\e$(G$J\e(B") ("k" . "\e$(G$K\e(B") ("l" . "\e$(G$L\e(B")
+ ("m" . "\e$(G$M\e(B") ("n" . "\e$(G$N\e(B") ("o" . "\e$(G$O\e(B") ("p" . "\e$(G$P\e(B")
+ ("q" . "\e$(G$Q\e(B") ("r" . "\e$(G$R\e(B") ("s" . "\e$(G$S\e(B") ("t" . "\e$(G$T\e(B")
+ ("u" . "\e$(G$U\e(B") ("v" . "\e$(G$V\e(B") ("w" . "\e$(G$W\e(B") ("x" . "\e$(G$X\e(B")
+ ("y" . "\e$(G$Y\e(B") ("z" . "\e$(G$Z\e(B")
+ ("A" . "\e$(G$A\e(B") ("B" . "\e$(G$B\e(B") ("C" . "\e$(G$C\e(B") ("D" . "\e$(G$D\e(B")
+ ("E" . "\e$(G$E\e(B") ("F" . "\e$(G$F\e(B") ("G" . "\e$(G$G\e(B") ("H" . "\e$(G$H\e(B")
+ ("I" . "\e$(G$I\e(B") ("J" . "\e$(G$J\e(B") ("K" . "\e$(G$K\e(B") ("L" . "\e$(G$L\e(B")
+ ("M" . "\e$(G$M\e(B") ("N" . "\e$(G$N\e(B") ("O" . "\e$(G$O\e(B") ("P" . "\e$(G$P\e(B")
+ ("Q" . "\e$(G$Q\e(B") ("R" . "\e$(G$R\e(B") ("S" . "\e$(G$S\e(B") ("T" . "\e$(G$T\e(B")
+ ("U" . "\e$(G$U\e(B") ("V" . "\e$(G$V\e(B") ("W" . "\e$(G$W\e(B") ("X" . "\e$(G$X\e(B")
+ ("Y" . "\e$(G$Y\e(B") ("Z" . "\e$(G$Z\e(B")))
+ (let ((in (car ascii)) (out (cdr ascii)))
+ (its-defrule in out))))
+
+(define-its-state-machine its-quanjiao-down-tw-map
+ "quanjiao-downcase-tw" "\e$(G$[\e(B" "Chinese-CNS" nil
+ "Map for quanjiao-downcase input. (Chinese-CNS)"
+
+ (dolist (ascii '(("0" . "\e$(G$!\e(B") ("1" . "\e$(G$"\e(B") ("2" . "\e$(G$#\e(B") ("3" . "\e$(G$$\e(B")
+ ("4" . "\e$(G$%\e(B") ("5" . "\e$(G$&\e(B") ("6" . "\e$(G$'\e(B") ("7" . "\e$(G$(\e(B")
+ ("8" . "\e$(G$)\e(B") ("9" . "\e$(G$*\e(B")
+ (" " . "\e$(G!!\e(B") ("!" . "\e$(G!*\e(B") ("@" . "\e$(G"i\e(B") ("#" . "\e$(G!l\e(B")
+ ("$" . "\e$(G"c\e(B") ("%" . "\e$(G"h\e(B") ("^" . "\e$(G!T\e(B") ("&" . "\e$(G!m\e(B")
+ ("*" . "\e$(G!n\e(B") ("(" . "\e$(G!>\e(B") (")" . "\e$(G!?\e(B")
+ ("-" . "\e$(G"1\e(B") ("=" . "\e$(G"8\e(B") ("`" . "\e$(G!j\e(B") ("\\" . "\e$(G"b\e(B")
+ ("|" . "\e$(G"^\e(B") ("_" . "\e$(G"%\e(B") ("+" . "\e$(G"0\e(B") ("~" . "\e$(G"D\e(B")
+ ("[" . "\e$(G!b\e(B") ("]" . "\e$(G!c\e(B") ("{" . "\e$A#{\e(B") ("}" . "\e$(G!a\e(B")
+ (":" . "\e$(G!(\e(B") (";" . "\e$(G!'\e(B") ("\"" . "\e$(G!i\e(B") ("'" . "\e$(G!k\e(B")
+ ("<" . "\e$(G"6\e(B") (">" . "\e$(G"7\e(B") ("?" . "\e$(G!)\e(B") ("/" . "\e$(G"a\e(B")
+ ("," . "\e$(G!"\e(B") ("." . "\e$(G!%\e(B")
+ ("a" . "\e$(G$[\e(B") ("b" . "\e$(G$\\e(B") ("c" . "\e$(G$]\e(B") ("d" . "\e$(G$^\e(B")
+ ("e" . "\e$(G$_\e(B") ("f" . "\e$(G$`\e(B") ("g" . "\e$(G$a\e(B") ("h" . "\e$(G$b\e(B")
+ ("i" . "\e$(G$c\e(B") ("j" . "\e$(G$d\e(B") ("k" . "\e$(G$e\e(B") ("l" . "\e$(G$f\e(B")
+ ("m" . "\e$(G$g\e(B") ("n" . "\e$(G$h\e(B") ("o" . "\e$(G$i\e(B") ("p" . "\e$(G$j\e(B")
+ ("q" . "\e$(G$k\e(B") ("r" . "\e$(G$l\e(B") ("s" . "\e$(G$m\e(B") ("t" . "\e$(G$n\e(B")
+ ("u" . "\e$(G$o\e(B") ("v" . "\e$(G$p\e(B") ("w" . "\e$(G$q\e(B") ("x" . "\e$(G$r\e(B")
+ ("y" . "\e$(G$s\e(B") ("z" . "\e$(G$t\e(B")
+ ("A" . "\e$(G$A\e(B") ("B" . "\e$(G$B\e(B") ("C" . "\e$(G$C\e(B") ("D" . "\e$(G$D\e(B")
+ ("E" . "\e$(G$E\e(B") ("F" . "\e$(G$F\e(B") ("G" . "\e$(G$G\e(B") ("H" . "\e$(G$H\e(B")
+ ("I" . "\e$(G$I\e(B") ("J" . "\e$(G$J\e(B") ("K" . "\e$(G$K\e(B") ("L" . "\e$(G$L\e(B")
+ ("M" . "\e$(G$M\e(B") ("N" . "\e$(G$N\e(B") ("O" . "\e$(G$O\e(B") ("P" . "\e$(G$P\e(B")
+ ("Q" . "\e$(G$Q\e(B") ("R" . "\e$(G$R\e(B") ("S" . "\e$(G$S\e(B") ("T" . "\e$(G$T\e(B")
+ ("U" . "\e$(G$U\e(B") ("V" . "\e$(G$V\e(B") ("W" . "\e$(G$W\e(B") ("X" . "\e$(G$X\e(B")
+ ("Y" . "\e$(G$Y\e(B") ("Z" . "\e$(G$Z\e(B")))
+ (let ((in (car ascii)) (out (cdr ascii)))
+ (its-defrule in out))))
+
+(provide 'its/quanjiao)
--- /dev/null
+;;; its/zenkau.el --- Zenkaku ASCII 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: KATAYAMA Yoshio <kate@pfu.co.jp>
+
+;; 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/hira.el in Mule-2.3 distribution.
+;;
+
+;;; Code:
+
+(eval-when-compile
+ (require 'its))
+
+(define-its-state-machine its-zenkaku-up-map
+ "zenkaku-upcase" "\e$B#A\e(B" "Japanese" nil
+ "Map for zenkaku-upcase input."
+
+ (dolist (ascii '(("0" . "\e$B#0\e(B") ("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") ("6" . "\e$B#6\e(B") ("7" . "\e$B#7\e(B")
+ ("8" . "\e$B#8\e(B") ("9" . "\e$B#9\e(B")
+ (" " . "\e$B!!\e(B") ("!" . "\e$B!*\e(B") ("@" . "\e$B!w\e(B") ("#" . "\e$B!t\e(B")
+ ("$" . "\e$B!p\e(B") ("%" . "\e$B!s\e(B") ("^" . "\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")
+ ("-" . "\e$B!]\e(B") ("=" . "\e$B!a\e(B") ("`" . "\e$B!.\e(B") ("\\" . "\e$B!@\e(B")
+ ("|" . "\e$B!C\e(B") ("_" . "\e$B!2\e(B") ("+" . "\e$B!\\e(B") ("~" . "\e$B!A\e(B")
+ ("[" . "\e$B!N\e(B") ("]" . "\e$B!O\e(B") ("{" . "\e$B!P\e(B") ("}" . "\e$B!Q\e(B")
+ (":" . "\e$B!'\e(B") (";" . "\e$B!(\e(B") ("\"" . "\e$B!I\e(B") ("'" . "\e$B!-\e(B")
+ ("<" . "\e$B!c\e(B") (">" . "\e$B!d\e(B") ("?" . "\e$B!)\e(B") ("/" . "\e$B!?\e(B")
+ ("," . "\e$B!$\e(B") ("." . "\e$B!%\e(B")
+ ("a" . "\e$B#A\e(B") ("b" . "\e$B#B\e(B") ("c" . "\e$B#C\e(B") ("d" . "\e$B#D\e(B")
+ ("e" . "\e$B#E\e(B") ("f" . "\e$B#F\e(B") ("g" . "\e$B#G\e(B") ("h" . "\e$B#H\e(B")
+ ("i" . "\e$B#I\e(B") ("j" . "\e$B#J\e(B") ("k" . "\e$B#K\e(B") ("l" . "\e$B#L\e(B")
+ ("m" . "\e$B#M\e(B") ("n" . "\e$B#N\e(B") ("o" . "\e$B#O\e(B") ("p" . "\e$B#P\e(B")
+ ("q" . "\e$B#Q\e(B") ("r" . "\e$B#R\e(B") ("s" . "\e$B#S\e(B") ("t" . "\e$B#T\e(B")
+ ("u" . "\e$B#U\e(B") ("v" . "\e$B#V\e(B") ("w" . "\e$B#W\e(B") ("x" . "\e$B#X\e(B")
+ ("y" . "\e$B#Y\e(B") ("z" . "\e$B#Z\e(B")
+ ("A" . "\e$B#A\e(B") ("B" . "\e$B#B\e(B") ("C" . "\e$B#C\e(B") ("D" . "\e$B#D\e(B")
+ ("E" . "\e$B#E\e(B") ("F" . "\e$B#F\e(B") ("G" . "\e$B#G\e(B") ("H" . "\e$B#H\e(B")
+ ("I" . "\e$B#I\e(B") ("J" . "\e$B#J\e(B") ("K" . "\e$B#K\e(B") ("L" . "\e$B#L\e(B")
+ ("M" . "\e$B#M\e(B") ("N" . "\e$B#N\e(B") ("O" . "\e$B#O\e(B") ("P" . "\e$B#P\e(B")
+ ("Q" . "\e$B#Q\e(B") ("R" . "\e$B#R\e(B") ("S" . "\e$B#S\e(B") ("T" . "\e$B#T\e(B")
+ ("U" . "\e$B#U\e(B") ("V" . "\e$B#V\e(B") ("W" . "\e$B#W\e(B") ("X" . "\e$B#X\e(B")
+ ("Y" . "\e$B#Y\e(B") ("Z" . "\e$B#Z\e(B")))
+ (let ((in (car ascii)) (out (cdr ascii)))
+ (its-defrule in out))))
+
+(define-its-state-machine its-zenkaku-down-map
+ "zenkaku-downcase" "\e$B#a\e(B" "Japanese" nil
+ "Map for zenkaku-downcase input."
+
+ (dolist (ascii '(("0" . "\e$B#0\e(B") ("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") ("6" . "\e$B#6\e(B") ("7" . "\e$B#7\e(B")
+ ("8" . "\e$B#8\e(B") ("9" . "\e$B#9\e(B")
+ (" " . "\e$B!!\e(B") ("!" . "\e$B!*\e(B") ("@" . "\e$B!w\e(B") ("#" . "\e$B!t\e(B")
+ ("$" . "\e$B!p\e(B") ("%" . "\e$B!s\e(B") ("^" . "\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")
+ ("-" . "\e$B!]\e(B") ("=" . "\e$B!a\e(B") ("`" . "\e$B!.\e(B") ("\\" . "\e$B!@\e(B")
+ ("|" . "\e$B!C\e(B") ("_" . "\e$B!2\e(B") ("+" . "\e$B!\\e(B") ("~" . "\e$B!A\e(B")
+ ("[" . "\e$B!N\e(B") ("]" . "\e$B!O\e(B") ("{" . "\e$B!P\e(B") ("}" . "\e$B!Q\e(B")
+ (":" . "\e$B!'\e(B") (";" . "\e$B!(\e(B") ("\"" . "\e$B!I\e(B") ("'" . "\e$B!-\e(B")
+ ("<" . "\e$B!c\e(B") (">" . "\e$B!d\e(B") ("?" . "\e$B!)\e(B") ("/" . "\e$B!?\e(B")
+ ("," . "\e$B!$\e(B") ("." . "\e$B!%\e(B")
+ ("a" . "\e$B#a\e(B") ("b" . "\e$B#b\e(B") ("c" . "\e$B#c\e(B") ("d" . "\e$B#d\e(B")
+ ("e" . "\e$B#e\e(B") ("f" . "\e$B#f\e(B") ("g" . "\e$B#g\e(B") ("h" . "\e$B#h\e(B")
+ ("i" . "\e$B#i\e(B") ("j" . "\e$B#j\e(B") ("k" . "\e$B#k\e(B") ("l" . "\e$B#l\e(B")
+ ("m" . "\e$B#m\e(B") ("n" . "\e$B#n\e(B") ("o" . "\e$B#o\e(B") ("p" . "\e$B#p\e(B")
+ ("q" . "\e$B#q\e(B") ("r" . "\e$B#r\e(B") ("s" . "\e$B#s\e(B") ("t" . "\e$B#t\e(B")
+ ("u" . "\e$B#u\e(B") ("v" . "\e$B#v\e(B") ("w" . "\e$B#w\e(B") ("x" . "\e$B#x\e(B")
+ ("y" . "\e$B#y\e(B") ("z" . "\e$B#z\e(B")
+ ("A" . "\e$B#A\e(B") ("B" . "\e$B#B\e(B") ("C" . "\e$B#C\e(B") ("D" . "\e$B#D\e(B")
+ ("E" . "\e$B#E\e(B") ("F" . "\e$B#F\e(B") ("G" . "\e$B#G\e(B") ("H" . "\e$B#H\e(B")
+ ("I" . "\e$B#I\e(B") ("J" . "\e$B#J\e(B") ("K" . "\e$B#K\e(B") ("L" . "\e$B#L\e(B")
+ ("M" . "\e$B#M\e(B") ("N" . "\e$B#N\e(B") ("O" . "\e$B#O\e(B") ("P" . "\e$B#P\e(B")
+ ("Q" . "\e$B#Q\e(B") ("R" . "\e$B#R\e(B") ("S" . "\e$B#S\e(B") ("T" . "\e$B#T\e(B")
+ ("U" . "\e$B#U\e(B") ("V" . "\e$B#V\e(B") ("W" . "\e$B#W\e(B") ("X" . "\e$B#X\e(B")
+ ("Y" . "\e$B#Y\e(B") ("Z" . "\e$B#Z\e(B")))
+ (let ((in (car ascii)) (out (cdr ascii)))
+ (its-defrule in out))))
+
+(provide 'its/zenkaku)
--- /dev/null
+;;; its/zhuyin.el --- Zhuyin 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: KATAYAMA Yoshio <kate@pfu.co.jp>
+
+;; 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:
+
+
+;;; Code:
+
+(eval-when-compile
+ (require 'its)
+ (require 'cl))
+
+(defvar its-zhuyin-cn-enable-quanjioao-alphabet t "*Enable Quanjiao alphabet")
+(defvar its-zhuyin-cn-open-braket "\e$A!8\e(B" "*[") ; "\e$A#[\e(B"
+(defvar its-zhuyin-cn-close-braket "\e$A!9\e(B" "*]") ; "\e$A#]\e(B"
+
+(defvar its-zhuyin-tw-enable-quanjioao-alphabet t "*Enable Quanjiao alphabet")
+(defvar its-zhuyin-tw-open-braket "\e$(G!V\e(B" "*[") ; "\e$(G!b\e(B "
+(defvar its-zhuyin-tw-close-braket "\e$(G!W\e(B" "*]") ; "\e$(G!c\e(B"
+
+(eval-when-compile
+ (defmacro its-do-zhuyin-table (list)
+ `(progn
+ ,@(mapcar (lambda (syl) `(its-define-zhuyin ,@syl))
+ list)))
+
+ (defmacro its-define-zhuyin (shengmu yunmu1 &optional yunmu2 qing-only)
+ `(let ((s (list ,@shengmu))
+ (yi (concat (car ,yunmu1) (car ,yunmu2)))
+ (yo (concat (nth 1 ,yunmu1) (nth 1 ,yunmu2)))
+ (tone (if ,qing-only "\e(0A\e(B" "\e(0@\e(B"))
+ in out out1 state)
+ (while s
+ (setq in (concat (car (car s)) yi)
+ out (concat (nth 1 (car s)) yo)
+ out1 (concat out tone)
+ state (its-goto-state in nil t))
+ (if (and ,qing-only (its-get-kst/t state))
+ (its-set-output state out)
+ (its-set-output state out1))
+ (its-make-next-state state -1 in out1)
+ (its-make-next-state state ? (concat in " ") out1)
+ (its-define-otherwise state (its-make-otherwise
+ out1
+ its-otherwise-back-one))
+ ,(if qing-only
+ nil
+ '(progn
+ (its-make-next-state state ?1 (concat in 1) (concat out "\e(0A\e(B"))
+ (its-make-next-state state ?2 (concat in 2) (concat out "\e(0B\e(B"))
+ (its-make-next-state state ?3 (concat in 3) (concat out "\e(0C\e(B"))
+ (its-make-next-state state ?4 (concat in 4) (concat out "\e(0D\e(B"))))
+ (setq s (cdr s)))))
+
+ (defmacro its-define-zhuyin-table ()
+ '(let ((- '("" ""))
+ (B '("b" "\e(0E\e(B")) (P '("p" "\e(0F\e(B")) (M '("m" "\e(0G\e(B")) (F '("f" "\e(0H\e(B"))
+ (D '("d" "\e(0I\e(B")) (T '("t" "\e(0J\e(B")) (N '("n" "\e(0K\e(B")) (L '("l" "\e(0L\e(B"))
+ (G '("v" "\e(0M\e(B")) (K '("k" "\e(0N\e(B")) (H '("h" "\e(0O\e(B"))
+ (J '("g" "\e(0P\e(B")) (Q '("7" "\e(0Q\e(B")) (X '("c" "\e(0R\e(B"))
+ (ZH '("," "\e(0S\e(B")) (CH '("." "\e(0T\e(B")) (SH '("/" "\e(0U\e(B")) (R '("j" "\e(0V\e(B"))
+ (Z '(";" "\e(0W\e(B")) (C '(":" "\e(0X\e(B")) (S '("s" "\e(0Y\e(B"))
+
+ (A '("a" "\e(0Z\e(B")) (O '("o" "\e(0[\e(B")) (e '("r" "\e(0\\e(B")) (E '("w" "\e(0]\e(B"))
+ (AI '("i" "\e(0^\e(B")) (EI '("q" "\e(0_\e(B")) (AO '("z" "\e(0`\e(B"))
+ (AN '("8" "\e(0b\e(B")) (EN '("9" "\e(0c\e(B")) (ANG '("0" "\e(0d\e(B")) (ENG '("-" "\e(0e\e(B"))
+ (ER '("^" "\e(0f\e(B")) (OU '("y" "\e(0a\e(B"))
+ (I '("e" "\e(0g\e(B")) (U '("x" "\e(0h\e(B")) (V '("u" "\e(0i\e(B")))
+
+ (mapcar (lambda (s) (its-defrule (car s) (nth 1 s)))
+ (list B P M F D T N L G K H J Q X))
+
+ (its-do-zhuyin-table
+ (((- B P M F D T N L G K H ZH CH SH Z C S ) A)
+ ((- B P M F L ) O)
+ ((- M D T N L G K H ZH CH SH R Z C S ) e)
+ ((- B P M D T N L G K H ZH CH SH Z C S ) AI)
+ ((- B P M F D T N L G K H ZH SH Z C ) EI)
+ ((- B P M D T N L G K H ZH CH SH R Z C S ) AO)
+ ((- B P M F D T N L G K H ZH CH SH R Z C S ) AN)
+ ((- B P M F D N G K H ZH CH SH R Z C S ) EN)
+ ((- B P M F D T N L G K H ZH CH SH R Z C S ) ANG)
+ ((- B P M F D T N L G K H ZH CH SH R Z C S ) ENG)
+ ((- ) ER)
+ ((- P M F D T N L G K H ZH CH SH R Z C S ) OU)
+ (( ZH CH SH R Z C S ) -)
+ ((- B P M D T N L J Q X ) I)
+ ((- D L J Q X ) I A)
+ ((- ) I O)
+ ((- B P M D T N L J Q X ) I E)
+ ((- B P M D T N L J Q X ) I AO)
+ ((- M D N L J Q X ) I OU)
+ ((- B P M D T N L J Q X ) I AN)
+ ((- B P M N L J Q X ) I EN)
+ ((- N L J Q X ) I ANG)
+ ((- B P M D T N L J Q X ) I ENG)
+ ((- B P M F D T N L G K H ZH CH SH R Z C S ) U)
+ ((- G K H ZH CH SH R ) U A)
+ ((- D T N L G K H ZH CH SH R Z C S ) U O)
+ ((- G K H ZH CH SH ) U AI)
+ ((- D T G K H ZH CH SH R Z C S ) U EI)
+ ((- D T N L G K H ZH CH SH R Z C S ) U AN)
+ ((- D T L G K H ZH CH SH R Z C S ) U EN)
+ ((- G K H ZH CH SH ) U ANG)
+ ((- D T N L G K H ZH CH R Z C S ) U ENG)
+ ((- N L J Q X ) V)
+ ((- N L J Q X ) V E)
+ ((- J Q X ) V AN)
+ ((- J Q X ) V EN)
+ ((- J Q X ) V ENG)
+
+ ((- H) M nil t)
+ ((- H) '("@" "@") nil t)
+ ((- ) N nil t)))
+
+ (its-defrule (concat (car N) 2) (concat (nth 1 N) "\e(0B\e(B"))
+ (its-defrule (concat (car N) 3) (concat (nth 1 N) "\e(0C\e(B"))
+ (its-defrule (concat (car N) 4) (concat (nth 1 N) "\e(0D\e(B")))))
+
+(define-its-state-machine its-zhuyin-cn-map
+ "zhuyin-cn" "\e$AW"\e(BG" "Chinese-GB"
+ "Map for Zhuyin input. (Chinese-GB)"
+
+ (defconst its-quanjiao-escape "Z")
+ (defconst its-banjiao-escape "X")
+
+ (its-defrule-select-mode-temporally "B" downcase)
+ (its-defrule-select-mode-temporally "Q" quanjiao-downcase-cn)
+
+ (its-define-zhuyin-table)
+ (dolist (ascii '(("0" . "\e$A#0\e(B") ("1" . "\e$A#1\e(B") ("2" . "\e$A#2\e(B") ("3" . "\e$A#3\e(B")
+ ("4" . "\e$A#4\e(B") ("5" . "\e$A#5\e(B") ("6" . "\e$A#6\e(B") ("7" . "\e$A#7\e(B")
+ ("8" . "\e$A#8\e(B") ("9" . "\e$A#9\e(B")
+ (" " . "\e$A!!\e(B") ("!" . "\e$A#!\e(B") ("@" . "\e$A#@\e(B") ("#" . "\e$A##\e(B")
+ ("$" . "\e$A!g\e(B") ("%" . "\e$A#%\e(B") ("^" . "\e$A#^\e(B") ("&" . "\e$A#&\e(B")
+ ("*" . "\e$A#*\e(B") ("(" . "\e$A#(\e(B") (")" . "\e$A#)\e(B")
+ ("-" . "\e$A#-\e(B") ("=" . "\e$A#=\e(B") ("`" . "\e$A#`\e(B") ("\\" . "\e$A#\\e(B")
+ ("|" . "\e$A#|\e(B") ("_" . "\e$A#_\e(B") ("+" . "\e$A#+\e(B") ("~" . "\e$A!+\e(B")
+ ("[" . "\e$A#[\e(B") ("]" . "\e$A#]\e(B") ("{" . "\e$A#{\e(B") ("}" . "\e$A#}\e(B")
+ (":" . "\e$A#:\e(B") (";" . "\e$A#;\e(B") ("\"" . "\e$A#"\e(B") ("'" . "\e$A#'\e(B")
+ ("<" . "\e$A#<\e(B") (">" . "\e$A#>\e(B") ("?" . "\e$A#?\e(B") ("/" . "\e$A#/\e(B")
+ ("," . "\e$A#,\e(B") ("." . "\e$A#.\e(B")
+ ("a" . "\e$A#a\e(B") ("b" . "\e$A#b\e(B") ("c" . "\e$A#c\e(B") ("d" . "\e$A#d\e(B")
+ ("e" . "\e$A#e\e(B") ("f" . "\e$A#f\e(B") ("g" . "\e$A#g\e(B") ("h" . "\e$A#h\e(B")
+ ("i" . "\e$A#i\e(B") ("j" . "\e$A#j\e(B") ("k" . "\e$A#k\e(B") ("l" . "\e$A#l\e(B")
+ ("m" . "\e$A#m\e(B") ("n" . "\e$A#n\e(B") ("o" . "\e$A#o\e(B") ("p" . "\e$A#p\e(B")
+ ("q" . "\e$A#q\e(B") ("r" . "\e$A#r\e(B") ("s" . "\e$A#s\e(B") ("t" . "\e$A#t\e(B")
+ ("u" . "\e$A#u\e(B") ("v" . "\e$A#v\e(B") ("w" . "\e$A#w\e(B") ("x" . "\e$A#x\e(B")
+ ("y" . "\e$A#y\e(B") ("z" . "\e$A#z\e(B")
+ ("A" . "\e$A#A\e(B") ("B" . "\e$A#B\e(B") ("C" . "\e$A#C\e(B") ("D" . "\e$A#D\e(B")
+ ("E" . "\e$A#E\e(B") ("F" . "\e$A#F\e(B") ("G" . "\e$A#G\e(B") ("H" . "\e$A#H\e(B")
+ ("I" . "\e$A#I\e(B") ("J" . "\e$A#J\e(B") ("K" . "\e$A#K\e(B") ("L" . "\e$A#L\e(B")
+ ("M" . "\e$A#M\e(B") ("N" . "\e$A#N\e(B") ("O" . "\e$A#O\e(B") ("P" . "\e$A#P\e(B")
+ ("Q" . "\e$A#Q\e(B") ("R" . "\e$A#R\e(B") ("S" . "\e$A#S\e(B") ("T" . "\e$A#T\e(B")
+ ("U" . "\e$A#U\e(B") ("V" . "\e$A#V\e(B") ("W" . "\e$A#W\e(B") ("X" . "\e$A#X\e(B")
+ ("Y" . "\e$A#Y\e(B") ("Z" . "\e$A#Z\e(B")))
+ (let ((in (car ascii)) (out (cdr ascii)))
+ (its-defrule (concat its-banjiao-escape in) in)
+ (its-defrule (concat its-quanjiao-escape in) out)))
+
+ (its-defrule "<" "\e$A#,\e(B")
+ (its-defrule ">" "\e$A!#\e(B")
+ (its-defrule "?" "\e$A!"\e(B"))
+
+(define-its-state-machine its-zhuyin-tw-map
+ "zhuyin-tw" "\e$(GNC\e(BC" "Chinese-CNS"
+ "Map for Zhuyin input."
+
+ (defconst its-quanjiao-escape "Z")
+ (defconst its-banjiao-escape "X")
+
+ (its-defrule-select-mode-temporally "B" downcase)
+ (its-defrule-select-mode-temporally "Q" quanjiao-downcase-tw)
+
+ (its-define-zhuyin-table)
+ (dolist (ascii '(("0" . "\e$(G$!\e(B") ("1" . "\e$(G$"\e(B") ("2" . "\e$(G$#\e(B") ("3" . "\e$(G$$\e(B")
+ ("4" . "\e$(G$%\e(B") ("5" . "\e$(G$&\e(B") ("6" . "\e$(G$'\e(B") ("7" . "\e$(G$(\e(B")
+ ("8" . "\e$(G$)\e(B") ("9" . "\e$(G$*\e(B")
+ (" " . "\e$(G!!\e(B") ("!" . "\e$(G!*\e(B") ("@" . "\e$(G"i\e(B") ("#" . "\e$(G!l\e(B")
+ ("$" . "\e$(G"c\e(B") ("%" . "\e$(G"h\e(B") ("^" . "\e$(G!T\e(B") ("&" . "\e$(G!m\e(B")
+ ("*" . "\e$(G!n\e(B") ("(" . "\e$(G!>\e(B") (")" . "\e$(G!?\e(B")
+ ("-" . "\e$(G"1\e(B") ("=" . "\e$(G"8\e(B") ("`" . "\e$(G!j\e(B") ("\\" . "\e$(G"b\e(B")
+ ("|" . "\e$(G"^\e(B") ("_" . "\e$(G"%\e(B") ("+" . "\e$(G"0\e(B") ("~" . "\e$(G"D\e(B")
+ ("[" . "\e$(G!b\e(B") ("]" . "\e$(G!c\e(B") ("{" . "\e$A#{\e(B") ("}" . "\e$(G!a\e(B")
+ (":" . "\e$(G!(\e(B") (";" . "\e$(G!'\e(B") ("\"" . "\e$(G!i\e(B") ("'" . "\e$(G!k\e(B")
+ ("<" . "\e$(G"6\e(B") (">" . "\e$(G"7\e(B") ("?" . "\e$(G!)\e(B") ("/" . "\e$(G"a\e(B")
+ ("," . "\e$(G!"\e(B") ("." . "\e$(G!%\e(B")
+ ("a" . "\e$(G$[\e(B") ("b" . "\e$(G$\\e(B") ("c" . "\e$(G$]\e(B") ("d" . "\e$(G$^\e(B")
+ ("e" . "\e$(G$_\e(B") ("f" . "\e$(G$`\e(B") ("g" . "\e$(G$a\e(B") ("h" . "\e$(G$b\e(B")
+ ("i" . "\e$(G$c\e(B") ("j" . "\e$(G$d\e(B") ("k" . "\e$(G$e\e(B") ("l" . "\e$(G$f\e(B")
+ ("m" . "\e$(G$g\e(B") ("n" . "\e$(G$h\e(B") ("o" . "\e$(G$i\e(B") ("p" . "\e$(G$j\e(B")
+ ("q" . "\e$(G$k\e(B") ("r" . "\e$(G$l\e(B") ("s" . "\e$(G$m\e(B") ("t" . "\e$(G$n\e(B")
+ ("u" . "\e$(G$o\e(B") ("v" . "\e$(G$p\e(B") ("w" . "\e$(G$q\e(B") ("x" . "\e$(G$r\e(B")
+ ("y" . "\e$(G$s\e(B") ("z" . "\e$(G$t\e(B")
+ ("A" . "\e$(G$A\e(B") ("B" . "\e$(G$B\e(B") ("C" . "\e$(G$C\e(B") ("D" . "\e$(G$D\e(B")
+ ("E" . "\e$(G$E\e(B") ("F" . "\e$(G$F\e(B") ("G" . "\e$(G$G\e(B") ("H" . "\e$(G$H\e(B")
+ ("I" . "\e$(G$I\e(B") ("J" . "\e$(G$J\e(B") ("K" . "\e$(G$K\e(B") ("L" . "\e$(G$L\e(B")
+ ("M" . "\e$(G$M\e(B") ("N" . "\e$(G$N\e(B") ("O" . "\e$(G$O\e(B") ("P" . "\e$(G$P\e(B")
+ ("Q" . "\e$(G$Q\e(B") ("R" . "\e$(G$R\e(B") ("S" . "\e$(G$S\e(B") ("T" . "\e$(G$T\e(B")
+ ("U" . "\e$(G$U\e(B") ("V" . "\e$(G$V\e(B") ("W" . "\e$(G$W\e(B") ("X" . "\e$(G$X\e(B")
+ ("Y" . "\e$(G$Y\e(B") ("Z" . "\e$(G$Z\e(B")))
+ (let ((in (car ascii)) (out (cdr ascii)))
+ (its-defrule (concat its-banjiao-escape in) in)
+ (its-defrule (concat its-quanjiao-escape in) out)))
+
+ (its-defrule "<" "\e$(G!"\e(B")
+ (its-defrule ">" "\e$(G!$\e(B")
+ (its-defrule "?" "\e$(G!#\e(B"))
+
+(define-its-state-machine-append its-zhuyin-cn-map
+ (its-defrule "[" its-zhuyin-cn-open-braket nil t)
+ (its-defrule "]" its-zhuyin-cn-close-braket nil t)
+
+(if its-zhuyin-cn-enable-quanjioao-alphabet
+ (progn
+ (its-defrule "#" "\e$A##\e(B") (its-defrule "$" "\e$A!g\e(B")
+ (its-defrule "%" "\e$A#%\e(B")
+ (its-defrule "&" "\e$A#&\e(B") (its-defrule "*" "\e$A#*\e(B")
+ (its-defrule "(" "\e$A#(\e(B") (its-defrule ")" "\e$A#)\e(B")
+ (its-defrule "~" "\e$A!+\e(B")
+ (its-defrule "=" "\e$A#=\e(B") (its-defrule "`" "\e$A#`\e(B")
+ (its-defrule "\\" "\e$A#\\e(B") (its-defrule "|" "\e$A#|\e(B")
+ (its-defrule "_" "\e$A#_\e(B") (its-defrule "+" "\e$A#+\e(B")
+ (its-defrule "{" "\e$A#{\e(B") (its-defrule "}" "\e$A#}\e(B")
+ (its-defrule "\"" "\e$A#"\e(B") (its-defrule "'" "\e$A#'\e(B"))
+ (progn
+ (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 "'" "'"))))
+
+(define-its-state-machine-append its-zhuyin-tw-map
+ (its-defrule "[" its-zhuyin-tw-open-braket nil t)
+ (its-defrule "]" its-zhuyin-tw-close-braket nil t)
+
+ (if its-zhuyin-tw-enable-quanjioao-alphabet
+ (progn
+ (its-defrule "#" "\e$(G!l\e(B") (its-defrule "$" "\e$(G"c\e(B")
+ (its-defrule "%" "\e$(G"h\e(B")
+ (its-defrule "&" "\e$(G!m\e(B") (its-defrule "*" "\e$(G!n\e(B")
+ (its-defrule "(" "\e$(G!>\e(B") (its-defrule ")" "\e$(G!?\e(B")
+ (its-defrule "~" "\e$(G"D\e(B")
+ (its-defrule "=" "\e$(G"8\e(B") (its-defrule "`" "\e$(G!j\e(B")
+ (its-defrule "\\" "\e$(G"b\e(B") (its-defrule "|" "\e$(G"^\e(B")
+ (its-defrule "_" "\e$(G"%\e(B") (its-defrule "+" "\e$(G"0\e(B")
+ (its-defrule "{" "\e$A#{\e(B") (its-defrule "}" "\e$(G!a\e(B")
+ (its-defrule "\"" "\e$(G!i\e(B") (its-defrule "'" "\e$(G!k\e(B"))
+ (progn
+ (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/zhuyin)