Sync to HEAD
[bpt/emacs.git] / leim / quail / indian.el
1 ;;; indian.el --- Quail packages for inputting Indian
2
3 ;; Copyright (C) 2000, 2001 Free Software Foundation, Inc.
4
5 ;; Author: KAWABATA, Taichi <kawabata@m17n.org>
6
7 ;; Keywords: multilingual, input method, Indian, Devanagari
8
9 ;; This file is part of GNU Emacs.
10
11 ;; GNU Emacs is free software; you can redistribute it and/or modify
12 ;; it under the terms of the GNU General Public License as published by
13 ;; the Free Software Foundation; either version 2, or (at your option)
14 ;; any later version.
15
16 ;; GNU Emacs is distributed in the hope that it will be useful,
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 ;; GNU General Public License for more details.
20
21 ;; You should have received a copy of the GNU General Public License
22 ;; along with GNU Emacs; see the file COPYING. If not, write to the
23 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
24 ;; Boston, MA 02111-1307, USA.
25
26 ;;; Commentary:
27
28 ;; History:
29
30 ;; 2000.12.12
31 ;; Totally re-written from devanagari.el to handle multiple Indian Scripts.
32
33 ;;; Code:
34
35 (require 'quail)
36 (require 'ind-util)
37 (require 'devan-util)
38
39 ;;;
40 ;;; Input by transliteration
41 ;;;
42
43 (defun quail-define-indian-trans-package (hashtbls pkgname
44 lang title doc)
45 (funcall 'quail-define-package pkgname lang title t doc
46 nil nil nil nil nil nil t nil)
47 (maphash
48 (lambda (key val)
49 (quail-defrule key (if (= (length val) 1)
50 (string-to-char val)
51 (vector val))))
52 (cdr hashtbls)))
53
54 ;; This needs to be seen by quail-update-leim-list-file, but cannot be
55 ;; commented out because quail-update-leim-list-file ignores
56 ;; commented-out lines.
57 (if nil
58 (quail-define-package "devanagari-itrans" "Devanagari" "DevIT" t "Devanagari ITRANS"))
59 (quail-define-indian-trans-package
60 indian-dev-itrans-v5-hash "devanagari-itrans" "Devanagari" "DevIT"
61 "Devanagari transliteration by ITRANS method.")
62
63 (if nil
64 (quail-define-package "devanagari-kyoto-harvard" "Devanagari" "DevKH" t "Devanagari Kyoto-Harvard"))
65 (quail-define-indian-trans-package
66 indian-dev-kyoto-harvard-hash
67 "devanagari-kyoto-harvard" "Devanagari" "DevKH"
68 "Devanagari transliteration by Kyoto-Harvard method.")
69
70 (if nil
71 (quail-define-package "devanagari-aiba" "Devanagari" "DevAB" t "Devanagari Aiba"))
72 (quail-define-indian-trans-package
73 indian-dev-aiba-hash "devanagari-aiba" "Devanagari" "DevAB"
74 "Devanagari transliteration by Aiba-method.")
75
76 (if nil
77 (quail-define-package "punjabi-itrans" "Punjabi" "PnjIT" t "Punjabi ITRANS"))
78 (quail-define-indian-trans-package
79 indian-pnj-itrans-v5-hash "punjabi-itrans" "Punjabi" "PnjIT"
80 "Punjabi transliteration by ITRANS method.")
81
82 (if nil
83 (quail-define-package "gujarati-itrans" "Gujarati" "GjrIT" t "Gujarati ITRANS"))
84 (quail-define-indian-trans-package
85 indian-gjr-itrans-v5-hash "gujarati-itrans" "Gujarati" "GjrIT"
86 "Gujarati transliteration by ITRANS method.")
87
88 (if nil
89 (quail-define-package "oriya-itrans" "Oriya" "OriIT" t "Oriya ITRANS"))
90 (quail-define-indian-trans-package
91 indian-ori-itrans-v5-hash "oriya-itrans" "Oriya" "OriIT"
92 "Oriya transliteration by ITRANS method.")
93
94 (if nil
95 (quail-define-package "bengali-itrans" "Bengali" "BngIT" t "Bengali ITRANS"))
96 (quail-define-indian-trans-package
97 indian-bng-itrans-v5-hash "bengali-itrans" "Bengali" "BngIT"
98 "Bengali transliteration by ITRANS method.")
99
100 (if nil
101 (quail-define-package "assamese-itrans" "Assamese" "AsmIT" t "Assamese ITRANS"))
102 (quail-define-indian-trans-package
103 indian-asm-itrans-v5-hash "assamese-itrans" "Assamese" "AsmIT"
104 "Assamese transliteration by ITRANS method.")
105
106 (if nil
107 (quail-define-package "telugu-itrans" "Telugu" "TlgIT" t "Telugu ITRANS"))
108 (quail-define-indian-trans-package
109 indian-tlg-itrans-v5-hash "telugu-itrans" "Telugu" "TlgIT"
110 "Telugu transliteration by ITRANS method.")
111
112 (if nil
113 (quail-define-package "kannada-itrans" "Kannada" "KndIT" t "Kannada ITRANS"))
114 (quail-define-indian-trans-package
115 indian-knd-itrans-v5-hash "kannada-itrans" "Kannada" "KndIT"
116 "Kannada transliteration by ITRANS method.")
117
118 (if nil
119 (quail-define-package "malayalam-itrans" "Malayalam" "MlmIT" t "Malayalam ITRANS"))
120 (quail-define-indian-trans-package
121 indian-mlm-itrans-v5-hash "malayalam-itrans" "Malayalam" "MlmIT"
122 "Malayalam transliteration by ITRANS method.")
123
124 (if nil
125 (quail-define-package "tamil-itrans" "Tamil" "TmlIT" t "Tamil ITRANS"))
126 (quail-define-indian-trans-package
127 indian-tml-itrans-v5-hash "tamil-itrans" "Tamil" "TmlIT"
128 "Tamil transliteration by ITRANS method.")
129
130
131 ;;;
132 ;;; Input by Inscript
133 ;;;
134
135 (defun quail-define-inscript-package (char-tables key-tables pkgname lang
136 title docstring)
137 (funcall 'quail-define-package pkgname lang title nil docstring
138 nil nil nil nil nil nil nil nil)
139 (let (char-table key-table char key)
140 (while (and char-tables key-tables)
141 (setq char-table (car char-tables)
142 char-tables (cdr char-tables)
143 key-table (car key-tables)
144 key-tables (cdr key-tables))
145 (while (and char-table key-table)
146 (setq char (car char-table)
147 char-table (cdr char-table)
148 key (car key-table)
149 key-table (cdr key-table))
150 (if (and (consp char) (consp key))
151 (setq char-table (append char char-table)
152 key-table (append key key-table))
153 (if (and key char)
154 (quail-defrule
155 (if (characterp key) (char-to-string key) key)
156 (if (stringp char) (vector char) char))))))))
157
158 ;;
159
160 (defvar inscript-dev-keytable
161 '(
162 (;; VOWELS (18)
163 (?D nil) (?E ?e) (?F ?f) (?R ?r) (?G ?g) (?T ?t)
164 (?+ ?=) ("F]" "f]") (?! ?@) (?Z ?z) (?S ?s) (?W ?w)
165 (?| ?\\) (?~ ?`) (?A ?a) (?Q ?q) ("+]" "=]") ("R]" "r]"))
166 (;; CONSONANTS (42)
167 ?k ?K ?i ?I ?U ;; GRUTTALS
168 ?\; ?: ?p ?P ?} ;; PALATALS
169 ?' ?\" ?\[ ?{ ?C ;; CEREBRALS
170 ?l ?L ?o ?O ?v ?V ;; DENTALS
171 ?h ?H ?y ?Y ?c ;; LABIALS
172 ?/ ?j ?J ?n ?N "N]" ?b ;; SEMIVOWELS
173 ?M ?< ?m ?u ;; SIBILANTS
174 "k]" "K]" "i]" "p]" "[]" "{]" "H]" "/]" ;; NUKTAS
175 ?% ?&)
176 (;; Misc Symbols (7)
177 ?X ?x ?_ ">]" ?d "X]" ?>)
178 (;; Digits
179 ?0 ?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9)
180 (;; Inscripts
181 ?# ?$ ?^ ?* ?\])))
182
183 (defvar inscript-tml-keytable
184 '(
185 (;; VOWELS (18)
186 (?D nil) (?E ?e) (?F ?f) (?R ?r) (?G ?g) (?T ?t)
187 nil nil nil (?S ?s) (?Z ?z) (?W ?w)
188 nil (?A ?a) (?~ ?`) (?Q ?q) nil nil)
189 (;; CONSONANTS (42)
190 ?k ?K ?i ?I ?U ;; GRUTTALS
191 ?\; ?: ?p ?P ?} ;; PALATALS
192 ?' ?\" ?\[ ?{ ?C ;; CEREBRALS
193 ?l ?L ?o ?O ?v ?V ;; DENTALS
194 ?h ?H ?y ?Y ?c ;; LABIALS
195 ?/ ?j ?J ?n ?N "N]" ?b ;; SEMIVOWELS
196 ?M ?< ?m ?u ;; SIBILANTS
197 "k]" "K]" "i]" "p]" "[]" "{]" "H]" "/]" ;; NUKTAS
198 ?% ?&)
199 (;; Misc Symbols (7)
200 ?X ?x ?_ ">]" ?d "X]" ?>)
201 (;; Digits
202 ?0 ?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9)
203 (;; Inscripts
204 ?# ?$ ?^ ?* ?\])))
205
206 (if nil
207 (quail-define-package "devanagari-inscript" "Devanagari" "DevIS" t "Devanagari keyboard Inscript"))
208 (quail-define-inscript-package
209 indian-dev-base-table inscript-dev-keytable
210 "devanagari-inscript" "Devanagari" "DevIS"
211 "Devanagari keyboard Inscript.")
212
213 (if nil
214 (quail-define-package "punjabi-inscript" "Punjabi" "PnjIS" t "Punjabi keyboard Inscript"))
215 (quail-define-inscript-package
216 indian-pnj-base-table inscript-dev-keytable
217 "punjabi-inscript" "Punjabi" "PnjIS"
218 "Punjabi keyboard Inscript.")
219
220 (if nil
221 (quail-define-package "gujarati-inscript" "Gujarati" "GjrIS" t "Gujarati keyboard Inscript"))
222 (quail-define-inscript-package
223 indian-gjr-base-table inscript-dev-keytable
224 "gujarati-inscript" "Gujarati" "GjrIS"
225 "Gujarati keyboard Inscript.")
226
227 (if nil
228 (quail-define-package "oriya-inscript" "Oriya" "OriIS" t "Oriya keyboard Inscript"))
229 (quail-define-inscript-package
230 indian-ori-base-table inscript-dev-keytable
231 "oriya-inscript" "Oriya" "OriIS"
232 "Oriya keyboard Inscript.")
233
234 (if nil
235 (quail-define-package "bengali-inscript" "Bengali" "BngIS" t "Bengali keyboard Inscript"))
236 (quail-define-inscript-package
237 indian-bng-base-table inscript-dev-keytable
238 "bengali-inscript" "Bengali" "BngIS"
239 "Bengali keyboard Inscript.")
240
241 (if nil
242 (quail-define-package "assamese-inscript" "Assamese" "AsmIS" t "Assamese keyboard Inscript"))
243 (quail-define-inscript-package
244 indian-asm-base-table inscript-dev-keytable
245 "assamese-inscript" "Assamese" "AsmIS"
246 "Assamese keyboard Inscript.")
247
248 (if nil
249 (quail-define-package "telugu-inscript" "Telugu" "TlgIS" t "Telugu keyboard Inscript"))
250 (quail-define-inscript-package
251 indian-dev-base-table inscript-dev-keytable
252 "telugu-inscript" "Telugu" "TlgIS"
253 "Telugu keyboard Inscript.")
254
255 (if nil
256 (quail-define-package "kannada-inscript" "Kannada" "KndIS" t "Kannada keyboard Inscript"))
257 (quail-define-inscript-package
258 indian-knd-base-table inscript-dev-keytable
259 "kannada-inscript" "Kannada" "KndIS"
260 "Kannada keyboard Inscript.")
261
262 (if nil
263 (quail-define-package "malayalam-inscript" "Malayalam" "MlmIS" t "Malayalam keyboard Inscript"))
264 (quail-define-inscript-package
265 indian-mlm-base-table inscript-dev-keytable
266 "malayalam-inscript" "Malayalam" "MlmIS"
267 "Malayalam keyboard Inscript.")
268
269 (if nil
270 (quail-define-package "tamil-inscript" "Tamil" "TmlIS" t "Tamil keyboard Inscript"))
271 (quail-define-inscript-package
272 indian-tml-base-table inscript-tml-keytable
273 "tamil-inscript" "Tamil" "TmlIS"
274 "Tamil keyboard Inscript.")
275
276 ;;; arch-tag: 9e5a621e-f7d5-4fce-9543-0a51b407c940
277 ;;; indian.el ends here