113 lines
4.4 KiB
EmacsLisp
113 lines
4.4 KiB
EmacsLisp
;;; thai.el --- Quail package for inputting Thai characters -*- lexical-binding: t; -*-
|
||
|
||
;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
||
;; 2005, 2006, 2007, 2008, 2009, 2010, 2011
|
||
;; National Institute of Advanced Industrial Science and Technology (AIST)
|
||
;; Registration Number H14PRO021
|
||
|
||
;; Keywords: multilingual, input method, Thai
|
||
|
||
;; This file is part of GNU Emacs.
|
||
|
||
;; GNU Emacs is free software: you can redistribute it and/or modify
|
||
;; 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.
|
||
|
||
;; 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/>.
|
||
|
||
;;; Commentary:
|
||
|
||
;;; Code:
|
||
|
||
(require 'quail)
|
||
|
||
(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)))
|
||
|
||
;; Thai Kesmanee keyboard support.
|
||
|
||
(quail-define-package
|
||
"thai-kesmanee" "Thai" "กก>" t
|
||
"Thai Kesmanee input method with TIS620 keyboard layout
|
||
|
||
The difference from the ordinal Thai keyboard:
|
||
`฿' and `๏' are assigned to `\\' and `|' respectively,
|
||
`ฃ' and `ฅ' are assigned to `\\=`' and `~' respectively,
|
||
Don't know where to assign characters `๚' and `๛'."
|
||
nil t t t t nil nil nil nil nil t)
|
||
|
||
(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 "#" "." "๒" "๓" "๔" "ั้" "ง" ; SPC .. '
|
||
;; "๖" "๗" "๕" "๙" "ม" "ข" "ใ" "ฝ" ; ( .. /
|
||
;; "จ" "ล" "/" "_" "ภ" "ถ" "ุ" "ึ" ; 0 .. 7
|
||
;; "ค" "ต" "ซ" "ว" "ฒ" "ช" "ฬ" "ฦ" ; 8 .. ?
|
||
;; "๑" "ฤ" "ฺ" "ฉ" "ฏ" "ฎ" "โ" "ฌ" ; @ .. G
|
||
;; "็" "ณ" "๋" "ษ" "ศ" "๎" "์" "ฯ" ; H .. O
|
||
;; "ญ" "๐" "ฑ" "ฆ" "ธ" "๊" "ฮ" "\"" ; P .. W
|
||
;; ")" "ํ" "(" "บ" "฿" "ล" "ู" "๘" ; X .. _
|
||
;; "ฃ" "ฟ" "ิ" "แ" "ก" "ำ" "ด" "เ" ; ` .. g
|
||
;; "้" "ร" "่" "า" "ส" "ท" "ื" "น" ; h .. o
|
||
;; "ย" "ๆ" "พ" "ห" "ะ" "ี" "อ" "ไ" ; p .. w
|
||
;; "ป" "ั" "ผ" "ฐ" "๏" "," "ฅ" 0 ; x .. DEL
|
||
;; This is the correct data nowadays.
|
||
0 "+" "." "๒" "๓" "๔" "฿" "ง" ; SPC .. '
|
||
"๖" "๗" "๕" "๙" "ม" "ข" "ใ" "ฝ" ; ( .. /
|
||
"จ" "ๅ" "/" "-" "ภ" "ถ" "ุ" "ึ" ; 0 .. 7
|
||
"ค" "ต" "ซ" "ว" "ฒ" "ช" "ฬ" "ฦ" ; 8 .. ?
|
||
"๑" "ฤ" "ฺ" "ฉ" "ฏ" "ฎ" "โ" "ฌ" ; @ .. G
|
||
"็" "ณ" "๋" "ษ" "ศ" "?" "์" "ฯ" ; H .. O
|
||
"ญ" "๐" "ฑ" "ฆ" "ธ" "๊" "ฮ" "\"" ; P .. W
|
||
")" "ํ" "(" "บ" "ฃ" "ล" "ู" "๘" ; X .. _
|
||
"_" "ฟ" "ิ" "แ" "ก" "ำ" "ด" "เ" ; ` .. g
|
||
"้" "ร" "่" "า" "ส" "ท" "ื" "น" ; h .. o
|
||
"ย" "ๆ" "พ" "ห" "ะ" "ี" "อ" "ไ" ; p .. w
|
||
"ป" "ั" "ผ" "ฐ" "ฅ" "," "%" 0 ; x .. DEL
|
||
])
|
||
|
||
|
||
;; Thai Pattachote keyboard support.
|
||
|
||
(quail-define-package
|
||
"thai-pattachote" "Thai" "กป>" t
|
||
"Thai Pattachote input method with TIS620 keyboard layout"
|
||
nil t t t t nil nil nil nil nil t)
|
||
|
||
(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 "+" "ฑ" "/" "," "?" "_" "ข" ; SPC .. '
|
||
"(" ")" "." "%" "ะ" "๑" "จ" "พ" ; ( .. /
|
||
"๐" "=" "๒" "๓" "๔" "๕" "ู" "๗" ; 0 .. 7
|
||
"๘" "๙" "ฆ" "ไ" "ฟ" "๖" "ฒ" "ฬ" ; 8 .. ?
|
||
"\"" "๋" "ั" "ฐ" "ำ" "ๆ" "ณ" "์" ; @ .. G
|
||
"ื" "ซ" "ผ" "ช" "โ" "ฮ" "ศ" "ถ" ; H .. O
|
||
"ฒ" "๊" "ญ" "ธ" "ษ" "ฝ" "ภ" "ฤ" ; P .. W
|
||
"ฎ" "ึ" "ฎ" "ใ" "ฺ" "ฒ" "ุ" "-" ; X .. _
|
||
"ฃ" "้" "ิ" "ล" "ง" "ย" "ก" "ั" ; ` .. g
|
||
"ี" "ม" "า" "น" "เ" "ส" "ค" "ว" ; h .. o
|
||
"แ" "็" "อ" "ท" "ร" "ด" "ห" "ต" ; p .. w
|
||
"ป" "่" "บ" "ฯ" "ํ" "ฦ" "ฅ" 0 ; x .. DEL
|
||
])
|
||
|
||
;;; thai.el ends here
|