New file.
authorhanda <handa>
Fri, 18 Jan 2008 02:25:28 +0000 (02:25 +0000)
committerhanda <handa>
Fri, 18 Jan 2008 02:25:28 +0000 (02:25 +0000)
MIM/cmc-kbd.mim [new file with mode: 0644]

diff --git a/MIM/cmc-kbd.mim b/MIM/cmc-kbd.mim
new file mode 100644 (file)
index 0000000..d023598
--- /dev/null
@@ -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: