1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-12-13 09:32:47 +00:00
emacs/lisp/leim/quail/lao.el

215 lines
5.9 KiB
EmacsLisp
Raw Normal View History

;;; lao.el --- Quail package for inputting Lao characters -*-coding: utf-8;-*-
1997-07-08 01:48:20 +00:00
;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
2011-01-02 23:50:46 +00:00
;; 2006, 2007, 2008, 2009, 2010, 2011
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
1997-07-08 01:48:20 +00:00
;; Keywords: multilingual, input method, Lao
;; This file is part of GNU Emacs.
;; GNU Emacs is free software: you can redistribute it and/or modify
1997-07-08 01:48:20 +00:00
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
1997-07-08 01:48:20 +00:00
;; 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. If not, see <https://www.gnu.org/licenses/>.
1997-07-08 01:48:20 +00:00
;;; Commentary:
1997-07-08 01:48:20 +00:00
;;; Code:
(require 'quail)
(require 'lao-util)
1999-12-15 00:32:16 +00:00
(defun quail-lao-update-translation (control-flag)
(if (integerp control-flag)
;; Non-composable character typed.
(setq quail-current-str
(buffer-substring (overlay-start quail-overlay)
(overlay-end quail-overlay))
unread-command-events
(append
(substring quail-current-key control-flag)
unread-command-events))
1999-12-15 00:32:16 +00:00
(setq quail-current-str
(compose-string (quail-lookup-map-and-concat quail-current-key))))
control-flag)
(defvar lao-key-alist
1999-12-15 00:32:16 +00:00
'(("!" . "1")
("\"" . "=")
("#" . "3")
("$" . "4")
("&" . "5")
("%" . "")
("'" . "")
1999-12-15 00:32:16 +00:00
("(" . "7")
(")" . "8")
("*" . "6")
("+" . ["ໍ່"])
("," . "")
("-" . "")
("." . "")
("/" . "")
("0" . "")
("1" . "")
("2" . "")
("3" . "")
("4" . "")
("5" . "")
("6" . "")
("7" . "")
("8" . "")
("9" . "")
1999-12-15 00:32:16 +00:00
(":" . "%")
(";" . "")
("<" . "")
("=" . "")
1999-12-15 00:32:16 +00:00
(">" . "$")
("?" . ")")
("@" . "2")
("A" . ["ັ້"])
("B" . ["ຶ້"])
("C" . "")
1999-12-15 00:32:16 +00:00
("D" . ".")
("E" . ["ຳ້"])
1999-12-15 00:32:16 +00:00
("F" . ",")
("G" . ":")
("H" . "")
("I" . "")
("J" . "")
1999-12-15 00:32:16 +00:00
("K" . "!")
("L" . "?")
("M" . "")
("N" . ["ື້"])
("O" . "")
("P" . "")
("Q" . ["ົ້"])
1999-12-15 00:32:16 +00:00
("R" . "_")
("S" . ";")
("T" . "+")
("U" . ["ີ້"])
1999-12-15 00:32:16 +00:00
("V" . "x")
("W" . "0")
("X" . "(")
("Y" . ["ິ້"])
1999-12-15 00:32:16 +00:00
("Z" . "\"")
("[" . "")
("]" . "")
("^" . "")
1999-12-15 00:32:16 +00:00
("_" . "9")
("`" . "")
("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" . "")
1999-12-15 00:32:16 +00:00
("{" . "-")
("|" . ["ຫຼ"])
1999-12-15 00:32:16 +00:00
("}" . "/")
("~" . "")
("\\0" . "")
("\\1" . "")
("\\2" . "")
("\\3" . "")
("\\4" . "")
("\\5" . "")
("\\6" . "")
("\\7" . "")
("\\8" . "")
("\\9" . "")
)
"Alist of key sequences vs the corresponding Lao string to input.
This variable is for the input method \"lao\".
If you change the value of this variable while quail/lao is already loaded,
you need to re-load it to properly re-initialize related alists.")
;; Temporary variable to initialize lao-consonant-key-alist, etc.
(defconst lao-key-alist-vector
(let ((tail lao-key-alist)
consonant-key-alist semivowel-key-alist vowel-key-alist
voweltone-key-alist tone-key-alist other-key-alist
elt phonetic-type)
(while tail
(setq elt (car tail) tail (cdr tail))
(if (stringp (cdr elt))
(setq phonetic-type (get-char-code-property (aref (cdr elt) 0)
'phonetic-type))
(setq phonetic-type (get-char-code-property (aref (aref (cdr elt) 0) 0)
1999-12-15 00:32:16 +00:00
'phonetic-type))
(aset (cdr elt) 0 (compose-string (aref (cdr elt) 0))))
(cond ((eq phonetic-type 'consonant)
(setq consonant-key-alist (cons elt consonant-key-alist)))
((memq phonetic-type '(vowel-upper vowel-lower))
(if (stringp (cdr elt))
(setq vowel-key-alist (cons elt vowel-key-alist))
(setq voweltone-key-alist (cons elt voweltone-key-alist))))
((eq phonetic-type 'tone)
(setq tone-key-alist (cons elt tone-key-alist)))
((eq phonetic-type 'semivowel-lower)
(setq semivowel-key-alist (cons elt semivowel-key-alist)))
(t
(setq other-key-alist (cons elt other-key-alist)))))
(vector consonant-key-alist semivowel-key-alist vowel-key-alist
voweltone-key-alist tone-key-alist other-key-alist)))
(defconst lao-consonant-key-alist (aref lao-key-alist-vector 0))
(defconst lao-semivowel-key-alist (aref lao-key-alist-vector 1))
(defconst lao-vowel-key-alist (aref lao-key-alist-vector 2))
(defconst lao-voweltone-key-alist (aref lao-key-alist-vector 3))
(defconst lao-tone-key-alist (aref lao-key-alist-vector 4))
(defconst lao-other-key-alist (aref lao-key-alist-vector 5))
;; Done with it.
(makunbound 'lao-key-alist-vector)
1997-07-08 01:48:20 +00:00
(quail-define-package
"lao" "Lao" "" t
1997-07-08 01:48:20 +00:00
"Lao input method simulating Lao keyboard layout based on Thai TIS620"
1999-12-15 00:32:16 +00:00
nil t t t t nil nil nil 'quail-lao-update-translation nil t)
(quail-install-map
(quail-map-from-table
'((base-state (lao-consonant-key-alist . svt-state)
lao-vowel-key-alist
lao-voweltone-key-alist
lao-tone-key-alist
lao-other-key-alist)
(svt-state (lao-semivowel-key-alist . v-state)
(lao-vowel-key-alist . t-state)
lao-voweltone-key-alist
lao-tone-key-alist)
1999-12-15 00:32:16 +00:00
(v-state (lao-vowel-key-alist . t-state))
(t-state lao-tone-key-alist))))
1997-07-08 01:48:20 +00:00
;;; lao.el ends here