]> code.delx.au - gnu-emacs/blobdiff - leim/quail/thai.el
Fix last entry.
[gnu-emacs] / leim / quail / thai.el
index b78fb3fa46c1a9c3dfce60e8ef0cf6c07b980f6c..579ac35be0605c05a23cfb9c1bbd8140d85d2d24 100644 (file)
@@ -1,7 +1,8 @@
-;;; quail/thai.el --- Quail package for inputting Thai characters
+;;; thai.el --- Quail package for inputting Thai characters
 
-;; Copyright (C) 1995 Electrotechnical Laboratory, JAPAN.
-;; Licensed to the Free Software Foundation.
+;; Copyright (C) 1995, 1997, 1999, 2005
+;;   National Institute of Advanced Industrial Science and Technology (AIST)
+;;   Registration Number H14PRO021
 
 ;; Keywords: multilingual, input method, Thai
 
 
 ;; You should have received a copy of the GNU General Public License
 ;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
 
 ;;; Code:
 
 (require 'quail)
 (require 'thai-util)
 
-(eval-and-compile
-
-(defvar thai-keyboard-mapping-alist
-  '((kesmanee
-     [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  ; control codes
-      0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  ; control codes
-      0 "#" "\e,TF\e(B" "\e,Tr\e(B" "\e,Ts\e(B" "\e,Tt\e(B" "\e0\e,TQi\e1\e(B" "\e,T'\e(B"   ; SPC .. '
-      "\e,Tv\e(B" "\e,Tw\e(B" "\e,Tu\e(B" "\e,Ty\e(B" "\e,TA\e(B" "\e,T"\e(B" "\e,Tc\e(B" "\e,T=\e(B"  ; ( .. /
-      "\e,T(\e(B" "\e,TE\e(B" "/" "_" "\e,T@\e(B" "\e,T6\e(B" "\e,TX\e(B" "\e,TV\e(B"      ; 0 .. 7
-      "\e,T$\e(B" "\e,T5\e(B" "\e,T+\e(B" "\e,TG\e(B" "\e,T2\e(B" "\e,T*\e(B" "\e,TL\e(B" "\e,TF\e(B"  ; 8 .. ?
-      "\e,Tq\e(B" "\e,TD\e(B" "\e,TZ\e(B" "\e,T)\e(B" "\e,T/\e(B" "\e,T.\e(B" "\e,Tb\e(B" "\e,T,\e(B"  ; @ .. G
-      "\e,Tg\e(B" "\e,T3\e(B" "\e,Tk\e(B" "\e,TI\e(B" "\e,TH\e(B" "\e,Tn\e(B" "\e,Tl\e(B" "\e,TO\e(B"  ; H .. O
-      "\e,T-\e(B" "\e,Tp\e(B" "\e,T1\e(B" "\e,T&\e(B" "\e,T8\e(B" "\e,Tj\e(B" "\e,TN\e(B" "\""       ; P .. W
-      ")" "\e,Tm\e(B" "(" "\e,T:\e(B" "\e,T_\e(B" "\e,TE\e(B" "\e,TY\e(B" "\e,Tx\e(B"      ; X .. _
-      "\e,T#\e(B" "\e,T?\e(B" "\e,TT\e(B" "\e,Ta\e(B" "\e,T!\e(B" "\e,TS\e(B" "\e,T4\e(B" "\e,T`\e(B"  ; ` .. g
-      "\e,Ti\e(B" "\e,TC\e(B" "\e,Th\e(B" "\e,TR\e(B" "\e,TJ\e(B" "\e,T7\e(B" "\e,TW\e(B" "\e,T9\e(B"  ; h .. o
-      "\e,TB\e(B" "\e,Tf\e(B" "\e,T>\e(B" "\e,TK\e(B" "\e,TP\e(B" "\e,TU\e(B" "\e,TM\e(B" "\e,Td\e(B"  ; p .. w
-      "\e,T;\e(B" "\e,TQ\e(B" "\e,T<\e(B" "\e,T0\e(B" "\e,To\e(B" "." "\e,T%\e(B" 0]       ; x .. DEL
-     nil nil)
-
-    (pattachote
-     [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  ; control codes
-      0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  ; control codes
-      0 "+" "\e,T1\e(B" "/" "," "?" "_" "\e,T"\e(B"        ; SPC .. '
-      "(" ")" "." "%" "\e,TP\e(B" "\e,Tq\e(B" "\e,T(\e(B" "\e,T>\e(B"  ; ( .. /
-      "\e,Tp\e(B" "=" "\e,Tr\e(B" "\e,Ts\e(B" "\e,Tt\e(B" "\e,Tu\e(B" "\e,TY\e(B" "\e,Tw\e(B"        ; 0 .. 7
-      "\e,Tx\e(B" "\e,Ty\e(B" "\e,T&\e(B" "\e,Td\e(B" "\e,T?\e(B" "\e,Tv\e(B" "\e,T2\e(B" "\e,TL\e(B"  ; 8 .. ?
-      "\"" "\e,Tk\e(B" "\e,TQ\e(B" "\e,T0\e(B" 0 "\e,Tf\e(B" "\e,T3\e(B" "\e,Tl\e(B"       ; @ .. G
-      "\e,TW\e(B" "\e,T+\e(B" "\e,T<\e(B" "\e,T*\e(B" "\e,Tb\e(B" "\e,TN\e(B" "\e,TH\e(B" "\e,T6\e(B"  ; H .. O
-      "\e,T2\e(B" "\e,Tj\e(B" "\e,T-\e(B" "\e,TS\e(B" "\e,TI\e(B" "\e,T=\e(B" "\e,T@\e(B" "\e,T8\e(B"  ; P .. W
-      "\e,T.\e(B" "\e,TV\e(B" "\e,T.\e(B" "\e,Tc\e(B" "\e,TZ\e(B" "\e,T2\e(B" "\e,TX\e(B" "-"        ; X .. _
-      "\e,T#\e(B" "\e,Ti\e(B" "\e,TT\e(B" "\e,TE\e(B" 0 "\e,TB\e(B" "\e,T!\e(B" "\e,TQ\e(B"  ; ` .. g
-      "\e,TU\e(B" "\e,TA\e(B" "\e,TR\e(B" "\e,T9\e(B" "\e,T`\e(B" "\e,TJ\e(B" "\e,T$\e(B" "\e,TG\e(B"  ; h .. o
-      "\e,Ta\e(B" "\e,Tg\e(B" "\e,TM\e(B" "\e,T'\e(B" "\e,TC\e(B" "\e,T4\e(B" "\e,TK\e(B" "\e,T7\e(B"  ; p .. w
-      "\e,T;\e(B" "\e,Th\e(B" "\e,T:\e(B" "\e,TO\e(B" "\e,Tm\e(B" "\e,TF\e(B" "\e,T%\e(B" 0] ; x .. DEL
-     nil nil)
-    )
-  "Alist of Thai keyboard types vs. corresponding mapping tables.
-Each element is a list of:
-  KEYBOARD-TYPE, ASCII-THAI-TABLE, CONSONANT-MAP-TEMPLATE,
-  and VOWEL-UPPER-LOWER-TEMPLATE.
-
-KEYBOARD-TYPE is a symbol, one of kesmanee or pattachote.
-
-ASCII-THAI-TABLE is a vector indexed by an ASCII key code
-and the value is the one-char string of Thai character
-assigned at the location of ASCII key on the specific Thai keyboard.
-The value is 0 if no Thai character is assigned at the location.
-
-CONSONANT-MAP-TEMPLATE is a template of a cdr part of a Quail map when
-a consonant is entered.
-
-VOWEL-UPPER-LOWER-TEMPLATE is a template of a cdr part of a Quail map
-when a vowel upper or a vowel lower is entered.")
-
-(defmacro thai-keyboard-info (keyboard-type)
-  `(assq ,keyboard-type thai-keyboard-mapping-alist))
-
-)
-
-(defvar thai-current-keyboard-type nil
-  "Thai Keyboard type which Quail is assuming currently.
-This variable is used in Quail internally only.")
-
-;; Template of a cdr part of a Quail map when a consonant is entered.
-(defvar thai-consonant-alist nil)
-;; Template of a cdr part of a Quail map when a vowel upper or a vowel
-;; lower is entered.
-(defvar thai-vowel-upper-lower-alist nil)
-
-;; Return a Quail map corresponding to KEY of length LEN.
-;; The car part of the map is a translation generated automatically.
-;; The cdr part of the map is a copy of ALIST.
-(defun thai-generate-quail-map (key len alist)
-  (let ((str "")
-       (idx 0))
-    (while (< idx len)
-      (setq str (concat str (aref (nth 1 (thai-keyboard-info
-                                         thai-current-keyboard-type))
-                                 (aref key idx)))
-           idx (1+ idx)))
-    (cons (string-to-char (compose-string str)) (copy-alist alist))))
-
-;; Return a Quail map corresponding to KEY of length LEN when Thai
-;; tone mark is entered.
-(defun thai-tone-input (key len)
-  (thai-generate-quail-map key len nil))
+(defmacro thai-generate-quail-map (translation-table)
+  (let (map)
+     (dotimes (i (length translation-table))
+       (let ((trans (aref translation-table i)))
+        (when (not (eq trans 0))
+          (if (> (length trans) 1)
+              (setq trans (vector trans))
+            (setq trans (aref trans 0)))
+          (setq map (cons (list (char-to-string i) trans) map)))))
+     `(quail-define-rules ,@map)))
 
-;; Return a Quail map corresponding to KEY of length LEN when Thai
-;; vowel upper or vowel lower is entered.
-(defun thai-vowel-upper-lower-input (key len)
-  (thai-generate-quail-map
-   key len
-   (nth 3 (thai-keyboard-info thai-current-keyboard-type))))
-
-;; Define RULES in Quail map.  In addition, create
-;; `thai-consonant-alist-KEYBOARD-TYPE' and
-;; `thai-vowel-upper-lower-alist-KEYBOARD-TYPE'.
-
-;; The general composing rules are as follows:
-;;
-;;                          T
-;;       V        T         V                  T
-;; CV -> C, CT -> C, CVT -> C, Cv -> C, CvT -> C
-;;                                   v         v
-;;
-;; where C: consonant, V: vowel upper, v: vowel lower, T: tone mark.
-
-(defmacro thai-quail-define-rules (keyboard-type &rest rules)
-  (let ((l rules)
-       consonant-alist
-       vowel-upper-lower-alist
-       rule trans ch c-set)
-    (while l
-      (setq rule (car l))
-      (setq trans (nth 1 rule))
-      (if (consp trans)
-         (setq trans (car trans)))
-      (setq c-set (char-category-set (string-to-char trans)))
-      (cond ((or (aref c-set ?2)
-                (aref c-set ?3))
-            (setq consonant-alist
-                  (cons (cons (string-to-char (car rule))
-                              'thai-vowel-upper-lower-input)
-                        consonant-alist)))
-           ((aref c-set ?4)
-            (setq consonant-alist
-                  (cons (cons (string-to-char (car rule))
-                              'thai-tone-input)
-                        consonant-alist)
-                  vowel-upper-lower-alist
-                  (cons (cons (string-to-char (car rule))
-                              'thai-tone-input)
-                        vowel-upper-lower-alist))))
-      (setq l (cdr l)))
-    `(progn
-         (quail-define-rules ,@rules)
-         (setcar (nthcdr 2 (thai-keyboard-info ,keyboard-type))
-                 ',consonant-alist)
-         (setcar (nthcdr 3 (thai-keyboard-info ,keyboard-type))
-                 ',vowel-upper-lower-alist))))
-
-;; Return an alist which can be a cdr part of a Quail map
-;; corresponding to the current key when Thai consonant is entered.
-(defun thai-consonant-input (key len)
-  (let ((quail-package-name (quail-name)))
-    (setq thai-current-keyboard-type
-         (cond ((string= quail-package-name "thai-pattachote") 'pattachote)
-               (t (string= quail-package-name "thai-kesmanee") 'kesmanee)))
-    (copy-alist (nth 2 (thai-keyboard-info thai-current-keyboard-type)))))
-\f
 ;; Thai Kesmanee keyboard support.
 
 (quail-define-package
@@ -188,106 +51,41 @@ The difference from the ordinal Thai keyboard:
     '\e,T_\e(B' and '\e,To\e(B' are assigned to '\\' and '|' respectively,
     '\e,T#\e(B' and '\e,T%\e(B' are assigned to '`' and '~' respectively,
     Don't know where to assign characters '\e,Tz\e(B' and '\e,T{\e(B'."
- nil t t nil t)
-
-(thai-quail-define-rules 'kesmanee
- ("1" ("\e,TE\e(B" . thai-consonant-input))
- ("!" "#")
- ("2" "/")
- ("@" "\e,Tq\e(B")
- ("3" "_")
- ("#" "\e,Tr\e(B")
- ("4" ("\e,T@\e(B" . thai-consonant-input))
- ("$" "\e,Ts\e(B")
- ("5" ("\e,T6\e(B" . thai-consonant-input))
- ("%" "\e,Tt\e(B")
- ("6" "\e,TX\e(B")
- ("^" "\e,TY\e(B")
- ("7" "\e,TV\e(B")
- ("&" "\e0\e,TQi\e1\e(B")
- ("8" ("\e,T$\e(B" . thai-consonant-input))
- ("*" "\e,Tu\e(B")
- ("9" ("\e,T5\e(B" . thai-consonant-input))
- ("\(" "\e,Tv\e(B")
- ("0" ("\e,T(\e(B" . thai-consonant-input))
- ("\)" "\e,Tw\e(B")
- ("-" ("\e,T"\e(B" . thai-consonant-input))
- ("_" "\e,Tx\e(B")
- ("=" ("\e,T*\e(B" . thai-consonant-input))
- ("+" "\e,Ty\e(B")
- ("\\" "\e,T_\e(B")
- ("|" "\e,To\e(B")
- ("`" ("\e,T#\e(B" . thai-consonant-input))
- ("~" ("\e,T%\e(B" . thai-consonant-input))
- ("q" "\e,Tf\e(B")
- ("Q" "\e,Tp\e(B")
- ("w" "\e,Td\e(B")
- ("W" "\"")
- ("e" "\e,TS\e(B")
- ("E" ("\e,T.\e(B" . thai-consonant-input))
- ("r" ("\e,T>\e(B" . thai-consonant-input))
- ("R" ("\e,T1\e(B" . thai-consonant-input))
- ("t" "\e,TP\e(B")
- ("T" ("\e,T8\e(B" . thai-consonant-input))
- ("y" "\e,TQ\e(B")
- ("Y" "\e,Tm\e(B")
- ("u" "\e,TU\e(B")
- ("U" "\e,Tj\e(B")
- ("i" ("\e,TC\e(B" . thai-consonant-input))
- ("I" ("\e,T3\e(B" . thai-consonant-input))
- ("o" ("\e,T9\e(B" . thai-consonant-input))
- ("O" "\e,TO\e(B")
- ("p" ("\e,TB\e(B" . thai-consonant-input))
- ("P" ("\e,T-\e(B" . thai-consonant-input))
- ("\[" ("\e,T:\e(B" . thai-consonant-input))
- ("{" ("\e,T0\e(B" . thai-consonant-input))
- ("\]" ("\e,TE\e(B" . thai-consonant-input))
- ("}" ",")
+ nil t t t t nil nil nil nil nil t)
+
+(quail-install-map
+ (thai-generate-quail-map
+  [
+   0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0     ; control codes
+   0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0     ; control codes
+;; This data is quite old.
+;;    0   "#" "." "\e,Tr\e(B" "\e,Ts\e(B" "\e,Tt\e(B" "\e,TQi\e(B" "\e,T'\e(B"   ; SPC .. '
+;;    "\e,Tv\e(B" "\e,Tw\e(B" "\e,Tu\e(B" "\e,Ty\e(B" "\e,TA\e(B" "\e,T"\e(B" "\e,Tc\e(B" "\e,T=\e(B"  ; ( .. /
+;;    "\e,T(\e(B" "\e,TE\e(B" "/" "_" "\e,T@\e(B" "\e,T6\e(B" "\e,TX\e(B" "\e,TV\e(B"      ; 0 .. 7
+;;    "\e,T$\e(B" "\e,T5\e(B" "\e,T+\e(B" "\e,TG\e(B" "\e,T2\e(B" "\e,T*\e(B" "\e,TL\e(B" "\e,TF\e(B"  ; 8 .. ?
+;;    "\e,Tq\e(B" "\e,TD\e(B" "\e,TZ\e(B" "\e,T)\e(B" "\e,T/\e(B" "\e,T.\e(B" "\e,Tb\e(B" "\e,T,\e(B"  ; @ .. G
+;;    "\e,Tg\e(B" "\e,T3\e(B" "\e,Tk\e(B" "\e,TI\e(B" "\e,TH\e(B" "\e,Tn\e(B" "\e,Tl\e(B" "\e,TO\e(B"  ; H .. O
+;;    "\e,T-\e(B" "\e,Tp\e(B" "\e,T1\e(B" "\e,T&\e(B" "\e,T8\e(B" "\e,Tj\e(B" "\e,TN\e(B" "\""       ; P .. W
+;;    ")" "\e,Tm\e(B" "(" "\e,T:\e(B" "\e,T_\e(B" "\e,TE\e(B" "\e,TY\e(B" "\e,Tx\e(B"      ; X .. _
+;;    "\e,T#\e(B" "\e,T?\e(B" "\e,TT\e(B" "\e,Ta\e(B" "\e,T!\e(B" "\e,TS\e(B" "\e,T4\e(B" "\e,T`\e(B"  ; ` .. g
+;;    "\e,Ti\e(B" "\e,TC\e(B" "\e,Th\e(B" "\e,TR\e(B" "\e,TJ\e(B" "\e,T7\e(B" "\e,TW\e(B" "\e,T9\e(B"  ; h .. o
+;;    "\e,TB\e(B" "\e,Tf\e(B" "\e,T>\e(B" "\e,TK\e(B" "\e,TP\e(B" "\e,TU\e(B" "\e,TM\e(B" "\e,Td\e(B"  ; p .. w
+;;    "\e,T;\e(B" "\e,TQ\e(B" "\e,T<\e(B" "\e,T0\e(B" "\e,To\e(B" "," "\e,T%\e(B" 0        ; x .. DEL
+;; This is the correct data nowadays.
+   0  "+" "." "\e,Tr\e(B" "\e,Ts\e(B" "\e,Tt\e(B" "\e,T_\e(B" "\e,T'\e(B"        ; SPC .. '
+   "\e,Tv\e(B" "\e,Tw\e(B" "\e,Tu\e(B" "\e,Ty\e(B" "\e,TA\e(B" "\e,T"\e(B" "\e,Tc\e(B" "\e,T=\e(B"     ; ( .. /
+   "\e,T(\e(B" "\e,Te\e(B" "/" "-" "\e,T@\e(B" "\e,T6\e(B" "\e,TX\e(B" "\e,TV\e(B" ; 0 .. 7
+   "\e,T$\e(B" "\e,T5\e(B" "\e,T+\e(B" "\e,TG\e(B" "\e,T2\e(B" "\e,T*\e(B" "\e,TL\e(B" "\e,TF\e(B"     ; 8 .. ?
+   "\e,Tq\e(B" "\e,TD\e(B" "\e,TZ\e(B" "\e,T)\e(B" "\e,T/\e(B" "\e,T.\e(B" "\e,Tb\e(B" "\e,T,\e(B"     ; @ .. G
+   "\e,Tg\e(B" "\e,T3\e(B" "\e,Tk\e(B" "\e,TI\e(B" "\e,TH\e(B" "?" "\e,Tl\e(B" "\e,TO\e(B"   ; H .. O
+   "\e,T-\e(B" "\e,Tp\e(B" "\e,T1\e(B" "\e,T&\e(B" "\e,T8\e(B" "\e,Tj\e(B" "\e,TN\e(B" "\""  ; P .. W
+   "\)" "\e,Tm\e(B" "\(" "\e,T:\e(B" "\e,T#\e(B" "\e,TE\e(B" "\e,TY\e(B" "\e,Tx\e(B"       ; X .. _
+   "_" "\e,T?\e(B" "\e,TT\e(B" "\e,Ta\e(B" "\e,T!\e(B" "\e,TS\e(B" "\e,T4\e(B" "\e,T`\e(B"   ; ` .. g
+   "\e,Ti\e(B" "\e,TC\e(B" "\e,Th\e(B" "\e,TR\e(B" "\e,TJ\e(B" "\e,T7\e(B" "\e,TW\e(B" "\e,T9\e(B"     ; h .. o
+   "\e,TB\e(B" "\e,Tf\e(B" "\e,T>\e(B" "\e,TK\e(B" "\e,TP\e(B" "\e,TU\e(B" "\e,TM\e(B" "\e,Td\e(B"     ; p .. w
+   "\e,T;\e(B" "\e,TQ\e(B" "\e,T<\e(B" "\e,T0\e(B" "\e,T%\e(B" "," "%" 0 ; x .. DEL
+   ]))
 
- ("a" ("\e,T?\e(B" . thai-consonant-input))
- ("A" "\e,TD\e(B")
- ("s" ("\e,TK\e(B" . thai-consonant-input))
- ("S" ("\e,T&\e(B" . thai-consonant-input))
- ("d" ("\e,T!\e(B" . thai-consonant-input))
- ("D" ("\e,T/\e(B" . thai-consonant-input))
- ("f" ("\e,T4\e(B" . thai-consonant-input))
- ("F" "\e,Tb\e(B")
- ("g" "\e,T`\e(B")
- ("G" ("\e,T,\e(B" . thai-consonant-input))
- ("h" "\e,Ti\e(B")
- ("H" "\e,Tg\e(B")
- ("j" "\e,Th\e(B")
- ("J" "\e,Tk\e(B")
- ("k" "\e,TR\e(B")
- ("K" ("\e,TI\e(B" . thai-consonant-input))
- ("l" ("\e,TJ\e(B" . thai-consonant-input))
- ("L" ("\e,TH\e(B" . thai-consonant-input))
- ("\;" ("\e,TG\e(B" . thai-consonant-input))
- (":" ("\e,T+\e(B" . thai-consonant-input))
- ("'" ("\e,T'\e(B" . thai-consonant-input))
- ("\"" ".")
-
- ("z" ("\e,T<\e(B" . thai-consonant-input))
- ("Z" "(")
- ("x" ("\e,T;\e(B" . thai-consonant-input))
- ("X" ")")
- ("c" "\e,Ta\e(B")
- ("C" ("\e,T)\e(B" . thai-consonant-input))
- ("v" ("\e,TM\e(B" . thai-consonant-input))
- ("V" ("\e,TN\e(B" . thai-consonant-input))
- ("b" "\e,TT\e(B")
- ("B" "\e,TZ\e(B")
- ("n" "\e,TW\e(B")
- ("N" "\e,Tl\e(B")
- ("m" ("\e,T7\e(B" . thai-consonant-input))
- ("M" "\e,Tn\e(B")
- ("," ("\e,TA\e(B" . thai-consonant-input))
- ("<" ("\e,T2\e(B" . thai-consonant-input))
- ("." "\e,Tc\e(B")
- (">" ("\e,TL\e(B" . thai-consonant-input))
- ("/" ("\e,T=\e(B" . thai-consonant-input))
- ("?" "\e,TF\e(B")
- )
 
 \f
 ;; Thai Pattachote keyboard support.
@@ -295,106 +93,25 @@ The difference from the ordinal Thai keyboard:
 (quail-define-package
  "thai-pattachote" "Thai" "\e,T!;\e(B>" t
  "Thai Pattachote input method with TIS620 keyboard layout"
- nil t t nil t)
-
-(thai-quail-define-rules 'pattachote
- ("1" "=")
- ("!" "+")
- ("2" "\e,Tr\e(B")
- ("@" "\"")
- ("3" "\e,Ts\e(B")
- ("#" "/")
- ("4" "\e,Tt\e(B")
- ("$" ",")
- ("5" "\e,Tu\e(B")
- ("%" "?")
- ("6" "\e,TY\e(B")
- ("^" "\e,TX\e(B")
- ("7" "\e,Tw\e(B")
- ("&" "_")
- ("8" "\e,Tx\e(B")
- ("*" ".")
- ("9" "\e,Ty\e(B")
- ("(" "(")
- ("0" "\e,Tp\e(B")
- (")" ")")
- ("-" "\e,Tq\e(B")
- ("_" "-")
- ("=" "\e,Tv\e(B")
- ("+" "%")
- ("\\" "\e,TZ\e(B")
- ("|" "\e,Tm\e(B")
- ("`" ("\e,T#\e(B" . thai-consonant-input))
- ("~" ("\e,T%\e(B" . thai-consonant-input))
-
- ("q" "\e,Tg\e(B")
- ("Q" "\e,Tj\e(B")
- ("w" ("\e,T5\e(B" . thai-consonant-input))
- ("W" "\e,TD\e(B")
- ("e" ("\e,TB\e(B" . thai-consonant-input))
- ("E" "\e,Tf\e(B")
- ("r" ("\e,TM\e(B" . thai-consonant-input))
- ("R" ("\e,T-\e(B" . thai-consonant-input))
- ("t" ("\e,TC\e(B" . thai-consonant-input))
- ("T" ("\e,TI\e(B" . thai-consonant-input))
- ("y" "\e,Th\e(B")
- ("Y" "\e,TV\e(B")
- ("u" ("\e,T4\e(B" . thai-consonant-input))
- ("U" ("\e,T=\e(B" . thai-consonant-input))
- ("i" ("\e,TA\e(B" . thai-consonant-input))
- ("I" ("\e,T+\e(B" . thai-consonant-input))
- ("o" ("\e,TG\e(B" . thai-consonant-input))
- ("O" ("\e,T6\e(B" . thai-consonant-input))
- ("p" "\e,Ta\e(B")
- ("P" ("\e,T2\e(B" . thai-consonant-input))
- ("\[" "\e,Tc\e(B")
- ("{" "\e,TO\e(B")
- ("\]" ("\e,T2\e(B" . thai-consonant-input))
- ("}" "\e,TF\e(B")
-
- ("a" "\e,Ti\e(B")
- ("A" "\e,Tk\e(B")
- ("s" ("\e,T7\e(B" . thai-consonant-input))
- ("S" ("\e,T8\e(B" . thai-consonant-input))
- ("d" ("\e,T'\e(B" . thai-consonant-input))
- ("D" "\e,TS\e(B")
- ("f" ("\e,T!\e(B" . thai-consonant-input))
- ("F" ("\e,T3\e(B" . thai-consonant-input))
- ("g" "\e,TQ\e(B")
- ("G" "\e,Tl\e(B")
- ("h" "\e,TU\e(B")
- ("H" "\e,TW\e(B")
- ("j" "\e,TR\e(B")
- ("J" ("\e,T<\e(B" . thai-consonant-input))
- ("k" ("\e,T9\e(B" . thai-consonant-input))
- ("K" ("\e,T*\e(B" . thai-consonant-input))
- ("l" "\e,T`\e(B")
- ("L" "\e,Tb\e(B")
- (";" "\e,Td\e(B")
- (":" ("\e,T&\e(B" . thai-consonant-input))
- ("'" ("\e,T"\e(B" . thai-consonant-input))
- ("\"" ("\e,T1\e(B" . thai-consonant-input))
-
- ("z" ("\e,T:\e(B" . thai-consonant-input))
- ("Z" ("\e,T.\e(B" . thai-consonant-input))
- ("x" ("\e,T;\e(B" . thai-consonant-input))
- ("X" ("\e,T.\e(B" . thai-consonant-input))
- ("c" ("\e,TE\e(B" . thai-consonant-input))
- ("C" ("\e,T0\e(B" . thai-consonant-input))
- ("v" ("\e,TK\e(B" . thai-consonant-input))
- ("V" ("\e,T@\e(B" . thai-consonant-input))
- ("b" "\e,TT\e(B")
- ("B" "\e,TQ\e(B")
- ("n" ("\e,T$\e(B" . thai-consonant-input))
- ("N" ("\e,TH\e(B" . thai-consonant-input))
- ("m" ("\e,TJ\e(B" . thai-consonant-input))
- ("M" ("\e,TN\e(B" . thai-consonant-input))
- ("," "\e,TP\e(B")
- ("<" ("\e,T?\e(B" . thai-consonant-input))
- ("." ("\e,T(\e(B" . thai-consonant-input))
- (">" ("\e,T2\e(B" . thai-consonant-input))
- ("/" ("\e,T>\e(B" . thai-consonant-input))
- ("?" ("\e,TL\e(B" . thai-consonant-input))
- )
-
-;;; quail/thai.el ends here
+ nil t t t t nil nil nil nil nil t)
+
+(quail-install-map
+ (thai-generate-quail-map
+  [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0    ; control codes
+    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0    ; control codes
+    0 "+" "\e,T1\e(B" "/" "," "?" "_" "\e,T"\e(B"  ; SPC .. '
+    "(" ")" "." "%" "\e,TP\e(B" "\e,Tq\e(B" "\e,T(\e(B" "\e,T>\e(B"    ; ( .. /
+    "\e,Tp\e(B" "=" "\e,Tr\e(B" "\e,Ts\e(B" "\e,Tt\e(B" "\e,Tu\e(B" "\e,TY\e(B" "\e,Tw\e(B"  ; 0 .. 7
+    "\e,Tx\e(B" "\e,Ty\e(B" "\e,T&\e(B" "\e,Td\e(B" "\e,T?\e(B" "\e,Tv\e(B" "\e,T2\e(B" "\e,TL\e(B"    ; 8 .. ?
+    "\"" "\e,Tk\e(B" "\e,TQ\e(B" "\e,T0\e(B" "\e,TS\e(B" "\e,Tf\e(B" "\e,T3\e(B" "\e,Tl\e(B" ; @ .. G
+    "\e,TW\e(B" "\e,T+\e(B" "\e,T<\e(B" "\e,T*\e(B" "\e,Tb\e(B" "\e,TN\e(B" "\e,TH\e(B" "\e,T6\e(B"    ; H .. O
+    "\e,T2\e(B" "\e,Tj\e(B" "\e,T-\e(B" "\e,T8\e(B" "\e,TI\e(B" "\e,T=\e(B" "\e,T@\e(B" "\e,TD\e(B"    ; P .. W
+    "\e,T.\e(B" "\e,TV\e(B" "\e,T.\e(B" "\e,Tc\e(B" "\e,TZ\e(B" "\e,T2\e(B" "\e,TX\e(B" "-"  ; X .. _
+    "\e,T#\e(B" "\e,Ti\e(B" "\e,TT\e(B" "\e,TE\e(B" "\e,T'\e(B" "\e,TB\e(B" "\e,T!\e(B" "\e,TQ\e(B"    ; ` .. g
+    "\e,TU\e(B" "\e,TA\e(B" "\e,TR\e(B" "\e,T9\e(B" "\e,T`\e(B" "\e,TJ\e(B" "\e,T$\e(B" "\e,TG\e(B"    ; h .. o
+    "\e,Ta\e(B" "\e,Tg\e(B" "\e,TM\e(B" "\e,T7\e(B" "\e,TC\e(B" "\e,T4\e(B" "\e,TK\e(B" "\e,T5\e(B"    ; p .. w
+    "\e,T;\e(B" "\e,Th\e(B" "\e,T:\e(B" "\e,TO\e(B" "\e,Tm\e(B" "\e,TF\e(B" "\e,T%\e(B" 0    ; x .. DEL
+    ]))
+
+;;; arch-tag: fed6c468-0616-44b0-88bf-47347bf64825
+;;; thai.el ends here