From 3318f744d9803811d6b975613496642a982279e7 Mon Sep 17 00:00:00 2001 From: handa Date: Fri, 18 Jan 2008 02:25:28 +0000 Subject: [PATCH] New file. --- MIM/cmc-kbd.mim | 224 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 224 insertions(+) create mode 100644 MIM/cmc-kbd.mim diff --git a/MIM/cmc-kbd.mim b/MIM/cmc-kbd.mim new file mode 100644 index 0000000..d023598 --- /dev/null +++ b/MIM/cmc-kbd.mim @@ -0,0 +1,224 @@ +;; cmc-kdb.mim -- Cham input method based on Cham keyboard +;; Copyright (C) 2008 +;; National Institute of Advanced Industrial Science and Technology (AIST) +;; Registration Number H15PRO112 + +;; This file is part of the m17n database; a sub-part of the m17n +;; library. + +;; The m17n library is free software; you can redistribute it and/or +;; modify it under the terms of the GNU Lesser General Public License +;; as published by the Free Software Foundation; either version 2.1 of +;; the License, or (at your option) any later version. + +;; The m17n library 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 +;; Lesser General Public License for more details. + +;; You should have received a copy of the GNU Lesser General Public +;; License along with the m17n library; if not, write to the Free +;; Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. + +(input-method cmc kbd) + +(description "Cham input method simulating Cham keyboard.") + +(title "ꨆK") + +(map + ;; Independent vowels and consonants + (independent + ;; Vowels + ("a" "ꨀ") + ("I" "ꨁ") + ("u" "ꨂ") + ("e" "ꨃ") + ("i" "ꨄ") + ("o" "ꨅ") + ;; Cosonants + ("k" "ꨆ") + ("A" "ꨇ") + ("g" "ꨈ") + ("G" "ꨉ") + ("z" "ꨊ") + ("Z" "ꨋ") + ("c" "ꨌ") + ("S" "ꨍ") + ("j" "ꨄ") + ("J" "ꨏ") + ("v" "ꨐ") + ("V" "ꨑ") + ("W" "ꨒ") + ("t" "ꨓ") + ("E" "ꨔ") + ("d" "ꨕ") + ("D" "ꨖ") + ("n" "ꨗ") + ("q" "ꨘ") + ("Q" "ꨙ") + ("p" "ꨚ") + ("F" "ꨛ") + ("f" "ꨜ") + ("b" "ꨝ") + ("B" "ꨞ") + ("m" "ꨟ") + ("M" "ꨠ") + ("O" "ꨡ") + ("y" "ꨢ") + ("r" "ꨣ") + ("l" "ꨤ") + ("w" "ꨥ") + ("x" "ꨦ") + ("s" "ꨧ") + ("h" "ꨨ")) + ;; Dependent vowels + (post-vowel + ("%" "ꨩ") + ("^" "ꨩꨮ") + ("{" "ꨪ") + ("[" "ꨪꩌ") + ("}" "ꨫ") + ("]" "ꨬ") + ("`" "ꨭ") + ("@" "ꨮ") + ("$" "ꨮꩃ") + ("#" "ꨮꩌ") + ("<" "ꨱ") + ("\"" "ꨱꨮ") + (">" "ꨱꩌ") + ("," "ꨲ")) + (pre-vowel + ("-" "ꨯ") + ("=" "ꨰ")) + + ;; Medials + (post-medial + ("~" "ꨳ") + ("*" "ꨵ") + (")" "ꨵꨭ") + ("(" "ꨵꨶ") + ("&" "ꨶ")) + + (pre-medial + ("\\" "ꨴ")) + + ;; (";" ",") + + ;; Final consonants. + (final + ("K" "ꩀ") + ;; ꩁ + ("U" "ꩂ") + ("/" "ꩃ") + ("C" "ꩄ") + ("T" "ꩅ") + ("N" "ꩆ") + ("P" "ꩇ") + ("Y" "ꩈ") + ("R" "ꩉ") + ("L" "ꩊ") + ("X" "ꩋ") + ("'" "ꩌ") + ("H" "ꩍ")) + + (misc + ;; Digits + ("0" "꩐") + ("1" "꩑") + ("2" "꩒") + ("3" "꩓") + ("4" "꩔") + ("5" "꩕") + ("6" "꩖") + ("7" "꩗") + ("8" "꩘") + ("9" "꩙") + + ;; Traditional punctuations. + ("_" "꩜") + ("|" "꩝") + ("||" "꩞") + ("|||" "꩟") + + ;; ASCII remapping. + (";" ",")) + + (edit + ((BackSpace) + (set PREV @-1) + (cond ((= PREV PM) + (set PREV @-2) + (cond ((& (>= PREV 0xAA00) (<= PREV 0xAA28)) + (delete @-2) (insert PM)) + (1 (delete @-1)))) + ((| (= PREV PV1) (= PREV PV2)) + (cond ((= @-2 PM) + (cond ((& (>= @-3 0xAA00) (<= @-3 0xAA28)) + (delete @-4) + (insert PREV) (insert PM)) + (1 (delete @-1)))) + ((& (>= @-2 0xAA00) (<= @-2 0xAA28)) + (delete @-2) + (insert PREV)) + (1 (delete @-1)))) + (1 (delete @-1)))) + + ((Delete) + (set NEXT @+1) + (cond ((& (>= NEXT 0xAA00) (<= NEXT 0xAA28)) + (set N2 @+2) + (cond ((= N2 PM) + (set N3 @+3) + (cond ((| (= N3 PV1) (= N3 PV2)) + (delete @+3) (insert NEXT) (insert N2)) + (1 (delete @+2) (insert NEXT)))) + ((| (= N2 PV1) (= N2 PV2)) + (delete @+2) (insert NEXT)) + (1 (delete @+1)))) + (1 (delete @+1))))) + ) + +(state + (init + (t (set PM 0xAA34) ; PRE-MEDIAL + (set PV1 0xAA2F) ; PRE-VOWEL-1 + (set PV2 0xAA30) ; PRE-VOWEL-2 + ) + + (independent + (set C @-) (set PREV @-2) + (cond ((= PREV PM) + (set PREV @-3) + (cond ((| (= PREV PV1) (= PREV PV2)) + (delete @-3) (insert C) (insert PM) (insert PREV)) + ((| (< PREV 0xAA00) (> PREV 0xAA28)) + (delete @-2) (insert C) (insert PM)))) + ((| (= PREV PV1) (= PREV PV2)) + (cond ((= @-3 PM)) + ((| (< @-3 0xAA00) (> @-3 0xAA28)) + (delete @-2) (insert C) (insert PREV)))))) + + (pre-vowel + (set C @-) (set NEXT @+1) + (cond ((& (>= NEXT 0xAA00) (<= NEXT 0xAA28)) + (delete @-1) (delete @+1) (insert NEXT) (insert C) (set NEXT @+1))) + (cond ((& (>= NEXT 0xAA33) (<= NEXT 0xAA36)) + (delete @-1) (delete @+1) (insert NEXT) (insert C)))) + + (pre-medial + (set C @-) (set NEXT @+1) + (cond ((& (>= NEXT 0xAA00) (<= NEXT 0xAA28)) + (delete @-1) (delete @+1) (insert NEXT) (insert C)))) + + (post-medial) + (post-vowel) + (final) + (misc) + (edit))) + +;; Local Variables: +;; coding: utf-8 +;; mode: emacs-lisp +;; End: -- 1.7.10.4