MMCT TEAM
Server IP : 103.53.40.154  /  Your IP : 3.149.251.26
Web Server : Apache
System : Linux md-in-35.webhostbox.net 4.19.286-203.ELK.el7.x86_64 #1 SMP Wed Jun 14 04:33:55 CDT 2023 x86_64
User : ppcad7no ( 715)
PHP Version : 8.2.25
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON
Directory (0755) :  /usr/share/locale/sal/../csb/../xal/../gl/../tw/../rup/../ru_RU/../../m17n/

[  Home  ][  C0mmand  ][  Upload File  ]

Current File : //usr/share/locale/sal/../csb/../xal/../gl/../tw/../rup/../ru_RU/../../m17n/vi-tcvn.mim
;; vi-tcvn.mim -- Input method for Vietnames with TCVN6064 key sequence
;; Copyright (C) 2008, 2009, 2010
;;   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 vi tcvn)

(description (_"Vietnames input method using the TCVN6064 sequence.
Typing Backslash ('\\') toggles the normal mode and English mode.
The following variables are customizable:
  tone-mark-on-last: control tone mark position in equivocal cases
  backspace-is-undo: control the action of Backspace key (delete or undo)"))

(title "Ắ(TCVN)")

(variable
 (tone-mark-on-last
  (_"Flag to control tone mark position in equivocal cases.
If this variable is 0 (the default), put tone mark on the first vowel
in such equivocal cases as \"oa\", \"oe\", \"uy\".
Otherwise, put tone mark on the last vowel.")
  0 0 1)

 (backspace-is-undo
  (_"Flag to control the action of Backspace key (delete or undo).
If this variable is 0 (the default), Backspace key deletes the previous
character (e.g. \"q u a i s BS\" => \"quá\").
If the value is 1, Backspace key undoes the previous key
\(e.g. \"q u a i s BS\" => \"quai\").")
  0 0 1))

(include (t nil vi-base) macro)
(include (t nil vi-base) map)

(map
 (vowel-ext
  ("2" ("âấầẩẫậ")) ("@" ("ÂẤẦẨẪẬ"))
  ("1" ("ăắằẳẵặ")) ("!" ("ĂẮẰẲẴẶ"))
  ("3" ("êếềểễệ")) ("#" ("ÊẾỀỂỄỆ"))
  ("4" ("ôốồổỗộ")) ("$" ("ÔỐỒỔỖỘ"))
  ("]" ("ơớờởỡợ")) ("}" ("ƠỚỜỞỠỢ"))
  ("[" ("ưứừửữự")) ("{" ("ƯỨỪỬỮỰ")))

 (consonant-ext
  ("0" ?đ) (")" ?Đ))

 (tone-mark
  ("8" (set SELECT 1) ?1)
  ("5" (set SELECT 2) ?2)
  ("6" (set SELECT 3) ?3)
  ("7" (set SELECT 4) ?4)
  ("9" (set SELECT 5) ?5))

 (misc
  ("=" ?₫) ("==" ?=)
  ((A-1) ?1) ((A-2) ?2) ((A-3) ?3) ((A-4) ?4) ((A-5) ?5)
  ((A-6) ?6) ((A-7) ?7) ((A-8) ?8) ((A-9) ?9) ((A-0) ?0)
  ((A--) ?-) ((A-=) ?=) ((A-\\) ?\\) ((A-\[) ?[) ((A-\]) ?])
  ((A-!) ?!) ((A-@) ?@) ((A-\#) ?#) ((A-$) ?$) ((A-%) ?%)
  ((A-^) ?^) ((A-&) ?&) ((A-*) ?*) ((A-\() ?\() ((A-\)) ?\))
  ((A-_) ?_) ((A-+) ?+) ((A-\|) ?\|) ((A-{) ?{) ((A-}) ?}))

 (temporary-escape
  ("22" "2") ("@@" "@")
  ("11" "1") ("!!" "!")
  ("33" "3") ("##" "##")
  ("44" "4") ("$$" "$")
  ("]]" "]") ("}}" "}")
  ("[[" "[") ("{{" "{")
  ("00" "0") ("))" ")")))

(state
 (init
  ;; Initialize variables.  C is the initial consonant.  V-N is the
  ;; (N-1)th vowel from the last.  C-AFTER-V is a number of consonants
  ;; typed after vowel.  NST is 1 iff surrounding text is not supported.
  (t (set C @-1) (set V-1 0) (set V-2 0) (set V-3 0) (set C-AFTER-V 0)
     (set SELECT 0) (set NST (= @-0 -2)))

  (consonant (set C @-1) (cond (NST (shift after-c))))
  (consonant-ext (set C @-1) (cond (NST (shift after-c))))
  ;; Mark M remembers the preedit position after the last vowel.
  (vowel (mark M) (set V-2 V-1) (set V-1 @-1) (shift after-v))
  (vowel-ext (mark M) (set V-2 V-1) (set V-1 @-1) (shift after-v))
  (temporary-escape (shift temporary-escape))
  (permanent-escape (shift escape-in-normal-mode))
  (misc)
  (smart-quotes))

 ;; The state shifted to when an initial consonants is typed and
 ;; surrounding text is not supported.
 (after-c
  (vowel (mark M) (set V-2 V-1) (set V-1 @-1) (shift after-v))
  (vowel-ext (mark M) (set V-2 V-1) (set V-1 @-1) (shift after-v)))

 ;; The state shifted to when a vowel is typed.
 (after-v
  (consonant (shift after-vc))
  (consonant-ext (shift after-vc))
  (vowel (mark M) (set V-3 V-2) (set V-2 V-1) (set V-1 @-1)
	 (move T) (select 0) (handle-mark) (move M))
  (vowel-ext (mark M) (set V-3 V-2) (set V-2 V-1) (set V-1 @-1)
	     (move T) (select 0) (handle-mark) (move M))
  (tone-mark (delete @-) (pushback 1) (shift after-t))
  (backspace (delete @-)
	     (cond (V-3 (set V-1 V-2) (set V-2 V-3) (set V-3 0)
			(cond ((> TPLACE 2) (set SELECT 0))))
		   (V-2 (set V-1 V-2) (set V-2 0)
			(cond ((> TPLACE 1) (set SELECT 0))))
		   (1 (shift init)))))

 ;; The state shifted to when a consonant is typed after a vowel.
 (after-vc
  (t (set C-AFTER-V 1))
  (consonant (add C-AFTER-V 1))
  (consonant-ext (add C-AFTER-V 1))
  (tone-mark (delete @-) (pushback 1) (shift after-t))
  (backspace (delete @-)
	     (sub C-AFTER-V 1)
	     (cond ((= C-AFTER-V 0) (shift after-v)))))

 ;; The state shifted to when a tone-mark is typed.
 (after-t
  (t (set CURRENT-SELECT -1))
  (tone-mark (cond ((= CURRENT-SELECT SELECT) (move T) (select 0) (move @>)
		    (shift temporary-escape))
		   (1 (delete @-) (handle-mark) (set CURRENT-SELECT SELECT))))
  (nil (cond (C-AFTER-V (shift after-vc))
	     (1 (shift after-v)))))

 (temporary-escape
  "en"
  (t (commit))
  (alnum (commit)))

 (escape-in-normal-mode
  "EN"
  (permanent-escape (insert "\\") (shift init))
  ;; Any other key force shifting to permanent-escape.
  (nil (shift permanent-escape)))

 (permanent-escape
  "EN"
  (t (set ESCAPE 1))
  (permanent-escape (shift escape-in-permanent-escape))
  ;; Unhandle any characters.
  (nil (unhandle)))

 (escape-in-permanent-escape
  "Ắ"
  (permanent-escape (insert "\\") (commit) (shift permanent-escape))
  ;; Any other key force shifting to init
  ))

;; Local Variables:
;; coding: utf-8
;; mode: lisp
;; End:

MMCT - 2023