;;; skk-jisx0201.el --- JIS X 0201 (I6E(B, Roman -*- coding: iso-2022-7bit -*- ;; Copyright (C) 1999-2007 SKK Development Team ;; Author: Tsukamoto Tetsuo ;; Maintainer: SKK Development Team ;; Keywords: japanese, mule, input method ;; Created: Oct. 30, 1999. ;; This file is part of Daredevil SKK. ;; Daredevil SKK 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. ;; Daredevil SKK 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 Daredevil SKK, see the file COPYING. If not, write to ;; the Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; <$B4JC1$J@bL@(B> ;; ;; ~/.skk $B$K(B ;; ;; (setq skk-use-jisx0201-input-method t) ;; ;; $B$H=q$/$3$H$G%$%s%9%H!<%k$5$l$^$9!#;H$$J}$O0J2<$N$h$&$K$J$j$^$9!#(B ;; ;; $B!}%+%?%+%J%b!<%I$K$*$$$F!"(B ;; $B!&(B"C-q" $B$GA43Q%+%J%b!<%I$HH>3Q%+%J%b!<%I$r@Z$j$+$($^$9!#(B ;; ;; $B!}$R$i$,$J(B/$B%+%?%+%JN>%b!<%IFb$G$N"&%b!<%I$K$*$$$F!"(B ;; $B!&(B"C-q" $B$r2!$9$H(I$$B8+=P$78l$H$7$FF~NO$5$l$?$R$i$,$J(B/$B%+%?%+%J$r(IJ]686@6E$B$KJQ(B ;; $B49$7$^$9!#(B ;; ;; `skk-jisx0201-roman-rule-list' $B$K(B JISX0201.1976 Japanese Roman ;; (latin-jisx0201) $B$NJ8;zNs$rDj5A$7$F$$$^$9!#$?$@$7(B GNU Emacs 23 $B0J9_!"%U%!(B ;; $B%$%kJ]B8;~$K(B JIS X 0201 Roman $B$H(B ASCII $B$N6hJL$,$5$l$J$/$J$C$?$h$&$G$9(B ($B1_(B ;; $B5-9f$*$h$S%*!<%P!<%i%$%s$r=|$/(B)$B!#$7$?$,$C$F$3$N%U%!%$%k$N8=9THG$G$O!"$3$l(B ;; $B$i$N(B 2 $BJ8;z0J30$O(B ASCII $B$NJ8;z$,Dj5A$5$l$F$$$^$9!#(B ;; ;; (I6E(B $B$H(B roman $B$r@Z$jBX$($k5!G=(B `skk-toggle-jisx0201' $B$K$O%-! ;; ;; GNU Emacs 20.3 $B!A(B 22 $B$G$3$N%U%!%$%k$rJT=8$9$k>l9g$O!"%U%!%$%k$r3+$/A0$K(B ;; ;; (setq standard-translation-table-for-decode (make-translation-table nil)) ;; ;; $B$rI>2A$7$F$/$@$5$$!#(B ;;; Code: (eval-when-compile (require 'skk-macs) (require 'skk-vars)) (require 'japan-util) ;; $B=tHL$N;v>p$K$h$j(B skk-vars.el $B$KF~$l$k$Y$-$G$J$$JQ?t(B (defvar skk-jisx0201-base-rule-list '(("a" nil "(I1(B") ("bb" "b" "(I/(B") ("ba" nil "(IJ^(B") ("be" nil "(IM^(B") ("bi" nil "(IK^(B") ("bo" nil "(IN^(B") ("bu" nil "(IL^(B") ("bya" nil "(IK^,(B") ("bye" nil "(IK^*(B") ("byi" nil "(IK^((B") ("byo" nil "(IK^.(B") ("byu" nil "(IK^-(B") ("cc" "c" "(I/(B") ("cha" nil "(IA,(B") ("che" nil "(IA*(B") ("chi" nil "(IA(B") ("cho" nil "(IA.(B") ("chu" nil "(IA-(B") ("cya" nil "(IA,(B") ("cye" nil "(IA*(B") ("cyi" nil "(IA((B") ("cyo" nil "(IA.(B") ("cyu" nil "(IA-(B") ("dd" "d" "(I/(B") ("da" nil "(I@^(B") ("de" nil "(IC^(B") ("dha" nil "(IC^,(B") ("dhe" nil "(IC^*(B") ("dhi" nil "(IC^((B") ("dho" nil "(IC^.(B") ("dhu" nil "(IC^-(B") ("di" nil "(IA^(B") ("do" nil "(ID^(B") ("du" nil "(IB^(B") ("dya" nil "(IA^,(B") ("dye" nil "(IA^*(B") ("dyi" nil "(IA^((B") ("dyo" nil "(IA^.(B") ("dyu" nil "(IA^-(B") ("e" nil "(I4(B") ("ff" "f" "(I/(B") ("fa" nil "(IL'(B") ("fe" nil "(IL*(B") ("fi" nil "(IL((B") ("fo" nil "(IL+(B") ("fu" nil "(IL(B") ("fya" nil "(IL,(B") ("fye" nil "(IL*(B") ("fyi" nil "(IL((B") ("fyo" nil "(IL.(B") ("fyu" nil "(IL-(B") ("gg" "g" "(I/(B") ("ga" nil "(I6^(B") ("ge" nil "(I9^(B") ("gi" nil "(I7^(B") ("go" nil "(I:^(B") ("gu" nil "(I8^(B") ("gya" nil "(I7^,(B") ("gye" nil "(I7^*(B") ("gyi" nil "(I7^((B") ("gyo" nil "(I7^.(B") ("gyu" nil "(I7^-(B") ("ha" nil "(IJ(B") ("he" nil "(IM(B") ("hi" nil "(IK(B") ("ho" nil "(IN(B") ("hu" nil "(IL(B") ("hya" nil "(IK,(B") ("hye" nil "(IK*(B") ("hyi" nil "(IK((B") ("hyo" nil "(IK.(B") ("hyu" nil "(IK-(B") ("i" nil "(I2(B") ("jj" "j" "(I/(B") ("ja" nil "(I<^,(B") ("je" nil "(I<^*(B") ("ji" nil "(I<^(B") ("jo" nil "(I<^.(B") ("ju" nil "(I<^-(B") ("jya" nil "(I<^,(B") ("jye" nil "(I<^*(B") ("jyi" nil "(I<^((B") ("jyo" nil "(I<^.(B") ("jyu" nil "(I<^-(B") ("kk" "k" "(I/(B") ("ka" nil "(I6(B") ("ke" nil "(I9(B") ("ki" nil "(I7(B") ("ko" nil "(I:(B") ("ku" nil "(I8(B") ("kya" nil "(I7,(B") ("kye" nil "(I7*(B") ("kyi" nil "(I7((B") ("kyo" nil "(I7.(B") ("kyu" nil "(I7-(B") ("mm" "c" "(I/(B") ("ma" nil "(IO(B") ("me" nil "(IR(B") ("mi" nil "(IP(B") ("mo" nil "(IS(B") ("mu" nil "(IQ(B") ("mya" nil "(IP,(B") ("mye" nil "(IP*(B") ("myi" nil "(IP((B") ("myo" nil "(IP.(B") ("myu" nil "(IP-(B") ("n" nil "(I](B") ("n'" nil "(I](B") ("na" nil "(IE(B") ("ne" nil "(IH(B") ("ni" nil "(IF(B") ("nn" nil "(I](B") ("no" nil "(II(B") ("nu" nil "(IG(B") ("nya" nil "(IF,(B") ("nye" nil "(IF*(B") ("nyi" nil "(IF((B") ("nyo" nil "(IF.(B") ("nyu" nil "(IF-(B") ("o" nil "(I5(B") ("pp" "p" "(I/(B") ("pa" nil "(IJ_(B") ("pe" nil "(IM_(B") ("pi" nil "(IK_(B") ("po" nil "(IN_(B") ("pu" nil "(IL_(B") ("pya" nil "(IK_,(B") ("pye" nil "(IK_*(B") ("pyi" nil "(IK_((B") ("pyo" nil "(IK_.(B") ("pyu" nil "(IK_-(B") ("rr" "r" "(I/(B") ("ra" nil "(IW(B") ("re" nil "(IZ(B") ("ri" nil "(IX(B") ("ro" nil "(I[(B") ("ru" nil "(IY(B") ("rya" nil "(IX,(B") ("rye" nil "(IX*(B") ("ryi" nil "(IX((B") ("ryo" nil "(IX.(B") ("ryu" nil "(IX-(B") ("ss" "s" "(I/(B") ("sa" nil "(I;(B") ("se" nil "(I>(B") ("sha" nil "(I<,(B") ("she" nil "(I<*(B") ("shi" nil "(I<(B") ("sho" nil "(I<.(B") ("shu" nil "(I<-(B") ("si" nil "(I<(B") ("so" nil "(I?(B") ("su" nil "(I=(B") ("sya" nil "(I<,(B") ("sye" nil "(I<*(B") ("syi" nil "(I<((B") ("syo" nil "(I<.(B") ("syu" nil "(I<-(B") ("tt" "t" "(I/(B") ("ta" nil "(I@(B") ("te" nil "(IC(B") ("tha" nil "(IC'(B") ("the" nil "(IC*(B") ("thi" nil "(IC((B") ("tho" nil "(IC.(B") ("thu" nil "(IC-(B") ("ti" nil "(IA(B") ("to" nil "(ID(B") ("tsu" nil "(IB(B") ("tu" nil "(IB(B") ("tya" nil "(IA,(B") ("tye" nil "(IA*(B") ("tyi" nil "(IA((B") ("tyo" nil "(IA.(B") ("tyu" nil "(IA-(B") ("u" nil "(I3(B") ("vv" "v" "(I/(B") ("va" nil "(I3^'(B") ("ve" nil "(I3^*(B") ("vi" nil "(I3^((B") ("vo" nil "(I3^+(B") ("vu" nil "(I3^(B") ("ww" "w" "(I/(B") ("wa" nil "(I\(B") ("we" nil "(I3*(B") ("wi" nil "(I3((B") ("wo" nil "(I&(B") ("wu" nil "(I3(B") ("xx" "x" "(I/(B") ("xa" nil "(I'(B") ("xe" nil "(I*(B") ("xi" nil "(I((B") ("xka" nil "(I6(B") ("xke" nil "(I9(B") ("xo" nil "(I+(B") ("xtsu" nil "(I/(B") ("xtu" nil "(I/(B") ("xu" nil "(I)(B") ("xwa" nil "(I\(B") ("xwe" nil "(I*(B") ("xwi" nil "(I((B") ("xya" nil "(I,(B") ("xyo" nil "(I.(B") ("xyu" nil "(I-(B") ("yy" "y" "(I/(B") ("ya" nil "(IT(B") ("ye" nil "(I2*(B") ("yo" nil "(IV(B") ("yu" nil "(IU(B") ("zz" "z" "(I/(B") ("z," nil "$B!E(B") ("z-" nil "$B!A(B") ("z." nil "$B!D(B") ("z/" nil "(I%(B") ("z[" nil "$B!X(B") ("z]" nil "$B!Y(B") ("za" nil "(I;^(B") ("ze" nil "(I>^(B") ("zh" nil "$B"+(B") ("zi" nil "(I<^(B") ("zj" nil "$B"-(B") ("zk" nil "$B",(B") ("zl" nil "$B"*(B") ("zo" nil "(I?^(B") ("zu" nil "(I=^(B") ("zya" nil "(I<^,(B") ("zye" nil "(I<^*(B") ("zyi" nil "(I<^((B") ("zyo" nil "(I<^.(B") ("zyu" nil "(I<^-(B") ("," nil "(I$(B") ("." nil "(I!(B") ("-" nil "(I0(B") (":" nil ":") (";" nil ";") ("?" nil "?") ("[" nil "(I"(B") ("]" nil "(I#(B") ("l" nil skk-latin-mode) ("q" nil skk-toggle-katakana) ("L" nil skk-jisx0208-latin-mode) ("Q" nil skk-set-henkan-point-subr) ("X" nil skk-purge-from-jisyo) ("/" nil skk-abbrev-mode) ("$" nil skk-display-code-for-char-at-point) ("@" nil skk-today) ("\\" nil skk-input-by-code-or-menu) (skk-kakutei-key nil skk-kakutei)) "*SKK JISX0201 $B%b!<%I$N%Y!<%9$N%k!<%k!#(B") (defvar skk-jisx0201-roman-rule-list '(("!" nil "!") ("\"" nil "\"") ("#" nil "#") ("$" nil "$") ("%" nil "%") ("&" nil "&") ("'" nil "'") ("\(" nil "(") ("\)" nil ")") ("*" nil "*") ("+" nil "+") ("," nil ",") ("-" nil "-") ("." nil ".") ("/" nil "/") ("0" nil "0") ("1" nil "1") ("2" nil "2") ("3" nil "3") ("4" nil "4") ("5" nil "5") ("6" nil "6") ("7" nil "7") ("8" nil "8") ("9" nil "9") (":" nil ":") (";" nil ";") ("<" nil "<") ("=" nil "=") (">" nil ">") ("?" nil "?") ("@" nil "@") ("A" nil "A") ("B" nil "B") ("C" nil "C") ("D" nil "D") ("E" nil "E") ("F" nil "F") ("G" nil "G") ("H" nil "H") ("I" nil "I") ("J" nil "J") ("K" nil "K") ("L" nil "L") ("M" nil "M") ("N" nil "N") ("O" nil "O") ("P" nil "P") ("Q" nil "Q") ("R" nil "R") ("S" nil "S") ("T" nil "T") ("U" nil "U") ("V" nil "V") ("W" nil "W") ("X" nil "X") ("Y" nil "Y") ("Z" nil "Z") ("[" nil "[") ("\\" nil "\(J\(B") ("]" nil "]") ("^" nil "^") ("_" nil "_") ("`" nil "`") ("a" nil "a") ("b" nil "b") ("c" nil "c") ("d" nil "d") ("e" nil "e") ("f" nil "f") ("g" nil "g") ("h" nil "h") ("i" nil "i") ("j" nil "j") ("k" nil "k") ("l" nil "l") ("m" nil "m") ("n" nil "n") ("o" nil "o") ("p" nil "p") ("q" nil "q") ("r" nil "r") ("s" nil "s") ("t" nil "t") ("u" nil "u") ("v" nil "v") ("w" nil "w") ("x" nil "x") ("y" nil "y") ("z" nil "z") ("{" nil "{") ("|" nil "|") ("}" nil "}") ("~" nil "(J~(B")) "*SKK JISX0201 $B%b!<%I$N(B Roman $B$N%k!<%k!#(B") (defvar skk-jisx0201-rule-list '(("\(" nil "(") ("{" nil "{")) "*SKK JISX0201 $B%b!<%I$NDI2C$N%k!<%k!#(B") (setq skk-jisx0201-base-rule-tree (skk-compile-rule-list skk-jisx0201-base-rule-list skk-jisx0201-rule-list)) (setq skk-jisx0201-roman-rule-tree (skk-compile-rule-list skk-jisx0201-roman-rule-list)) ;; Hooks. ;; inline functions. (defsubst skk-jisx0201-mode-on (&optional arg) "SKK JIS X 0201 ($B%+%J(B) $B%b!<%I$r5/F0$9$k!#(B" (make-local-variable 'skk-rule-tree) (setq skk-mode t skk-jisx0201-mode t skk-jisx0201-roman arg skk-rule-tree (if arg skk-jisx0201-roman-rule-tree skk-jisx0201-base-rule-tree) skk-abbrev-mode nil skk-latin-mode nil skk-j-mode nil skk-jisx0208-latin-mode nil skk-katakana nil) (skk-update-modeline 'jisx0201) (skk-cursor-set)) ;; Pieces of advice. (defadvice skk-mode (before skk-jisx0201-ad activate) (setq skk-jisx0201-mode nil) (kill-local-variable 'skk-rule-tree)) (defadvice skk-kakutei (around skk-jisx0201-ad activate) (let ((jisx0201 skk-jisx0201-mode)) ad-do-it (when jisx0201 (skk-jisx0201-mode-on skk-jisx0201-roman)))) (defadvice skk-latin-mode (before skk-jisx0201-ad activate) (setq skk-jisx0201-mode nil) (kill-local-variable 'skk-rule-tree)) (defadvice skk-jisx0208-latin-mode (before skk-jisx0201-ad activate) (setq skk-jisx0201-mode nil) (kill-local-variable 'skk-rule-tree)) (defadvice skk-abbrev-mode (before skk-jisx0201-ad activate) (setq skk-jisx0201-mode nil) (kill-local-variable 'skk-rule-tree)) (defadvice skk-set-okurigana (around skk-jisx0201-ad activate) "$BH>3Q%+%J$NAw$j2>L>$r@5$7$/L>$rH>3Q%+%J$K$9$k!#(B" (when skk-jisx0201-mode (ad-set-arg 0 '("(I;(B" "(I<(B" "(I=(B" "(I>(B")))) ;; functions. ;;;###autoload (defun skk-jisx0201-mode (arg) "SKK $B$N%b!<%I$r(B JIS X 0201 $B%b!<%I$KJQ99$9$k!#(B" (interactive "P") (skk-kakutei) (skk-jisx0201-mode-on)) (defun skk-toggle-jisx0201 (arg) "$BH>3Q%+%J%b!<%I$H%m!<%^;z%b!<%I$r@Z$jBX$($k!#(B" (interactive "P") (cond ((eq skk-henkan-mode 'on) (skk-jisx0201-henkan arg)) (skk-jisx0201-roman (setq skk-rule-tree skk-jisx0201-base-rule-tree skk-jisx0201-roman nil)) (t (setq skk-rule-tree skk-jisx0201-roman-rule-tree skk-jisx0201-roman t)))) (defun skk-jisx0201-string-conversion (str func) (with-temp-buffer (insert str) (funcall func 1 (point)) (buffer-string))) (defun skk-jisx0201-zenkaku (str) "STR $B$N(B JIS X 0201 $B%+%JJ8;z$rBP1~$9$k(B JIS X 0208 $B$NJ8;z$GCV$-49$($k!#(B" (skk-jisx0201-string-conversion str #'skk-jisx0201-zenkaku-region)) (defun skk-jisx0201-hankaku (str) "STR $B$N(B JIS X 0208 $BJ8;z$rBP1~$9$k(B JIS X 0201 $B%+%J$NJ8;z$GCV$-49$($k!#(B" (skk-jisx0201-string-conversion str #'japanese-hankaku-region)) ;;;###autoload (defun skk-toggle-katakana (arg) (interactive "P") (cond ((eq skk-henkan-mode 'on) (skk-jisx0201-henkan arg)) (skk-jisx0201-mode (when (eq skk-henkan-mode 'active) (skk-kakutei)) (setq skk-jisx0201-mode nil) (skk-j-mode-on) (kill-local-variable 'skk-rule-tree)) (t (when (eq skk-henkan-mode 'active) (skk-kakutei)) (skk-jisx0201-mode-on)))) (defun skk-jisx0201-zenkaku-region (start end) (japanese-zenkaku-region start end 'katakana-only)) (defun skk-jisx0201-henkan (arg) "$B"&%b!<%I$G$"$l$P!"NN0h$N$R$i$,$J(B/$B%+%?%+%J$r(B (IJ]686@6E(B $B$KJQ49$9$k!#(B $B"'%b!<%I$G$O2?$b$7$J$$!#(B $B$=$NB>$N%b!<%I$G$O!"%*%j%8%J%k$N%-!<3d$jIU$1$G%P%$%s%I$5$l$F$$$k%3%^%s%I$r