]> code.delx.au - gnu-emacs/blob - leim/quail/indian.el
*** empty log message ***
[gnu-emacs] / 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-indian-flatten-list (lst)
136 "Flatten the nested LIST so that there would be no innner list."
137 (if (listp lst)
138 (apply 'append (mapcar 'quail-indian-flatten-list lst))
139 (list lst)))
140
141 (defun quail-define-inscript-package (char-table key-table pkgname lang title
142 docstring)
143 (setq char-table (quail-indian-flatten-list char-table))
144 (setq key-table (quail-indian-flatten-list key-table))
145 (funcall 'quail-define-package pkgname lang title nil docstring
146 nil nil nil nil nil nil nil nil)
147 (dolist (key key-table)
148 (let ((val (pop char-table)))
149 (if (and key val)
150 (quail-defrule
151 (if (characterp key) (char-to-string key) key)
152 (if (stringp val) (vector val) val))))))
153
154 ;;
155
156 (defvar inscript-dev-keytable
157 '(
158 (;; VOWELS (18)
159 (?D nil) (?E ?e) (?F ?f) (?R ?r) (?G ?g) (?T ?t)
160 (?+ ?=) ("F]" "f]") (?! ?@) (?Z ?z) (?S ?s) (?W ?w)
161 (?| ?\\) (?~ ?`) (?A ?a) (?Q ?q) ("+]" "=]") ("R]" "r]"))
162 (;; CONSONANTS (42)
163 ?k ?K ?i ?I ?U ;; GRUTTALS
164 ?\; ?: ?p ?P ?} ;; PALATALS
165 ?' ?\" ?\[ ?{ ?C ;; CEREBRALS
166 ?l ?L ?o ?O ?v ?V ;; DENTALS
167 ?h ?H ?y ?Y ?c ;; LABIALS
168 ?/ ?j ?J ?n ?N "N]" ?b ;; SEMIVOWELS
169 ?M ?< ?m ?u ;; SIBILANTS
170 "k]" "K]" "i]" "p]" "[]" "{]" "H]" "/]" ;; NUKTAS
171 ?% ?&)
172 (;; Misc Symbols (7)
173 ?X ?x ?_ ">]" ?d "X]" ?>)
174 (;; Digits
175 ?0 ?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9)
176 (;; Inscripts
177 ?# ?$ ?^ ?* ?\])))
178
179 (if nil
180 (quail-define-package "devanagari-inscript" "Devanagari" "DevIS" t "Devanagari keyboard Inscript"))
181 (quail-define-inscript-package
182 indian-dev-base-table inscript-dev-keytable
183 "devanagari-inscript" "Devanagari" "DevIS"
184 "Devanagari keyboard Inscript.")
185
186 (if nil
187 (quail-define-package "punjabi-inscript" "Punjabi" "PnjIS" t "Punjabi keyboard Inscript"))
188 (quail-define-inscript-package
189 indian-pnj-base-table inscript-dev-keytable
190 "punjabi-inscript" "Punjabi" "PnjIS"
191 "Punjabi keyboard Inscript.")
192
193 (if nil
194 (quail-define-package "gujarati-inscript" "Gujarati" "GjrIS" t "Gujarati keyboard Inscript"))
195 (quail-define-inscript-package
196 indian-gjr-base-table inscript-dev-keytable
197 "gujarati-inscript" "Gujarati" "GjrIS"
198 "Gujarati keyboard Inscript.")
199
200 (if nil
201 (quail-define-package "oriya-inscript" "Oriya" "OriIS" t "Oriya keyboard Inscript"))
202 (quail-define-inscript-package
203 indian-ori-base-table inscript-dev-keytable
204 "oriya-inscript" "Oriya" "OriIS"
205 "Oriya keyboard Inscript.")
206
207 (if nil
208 (quail-define-package "bengali-inscript" "Bengali" "BngIS" t "Bengali keyboard Inscript"))
209 (quail-define-inscript-package
210 indian-bng-base-table inscript-dev-keytable
211 "bengali-inscript" "Bengali" "BngIS"
212 "Bengali keyboard Inscript.")
213
214 (if nil
215 (quail-define-package "assamese-inscript" "Assamese" "AsmIS" t "Assamese keyboard Inscript"))
216 (quail-define-inscript-package
217 indian-asm-base-table inscript-dev-keytable
218 "assamese-inscript" "Assamese" "AsmIS"
219 "Assamese keyboard Inscript.")
220
221 (if nil
222 (quail-define-package "telugu-inscript" "Telugu" "TlgIS" t "Telugu keyboard Inscript"))
223 (quail-define-inscript-package
224 indian-dev-base-table inscript-dev-keytable
225 "telugu-inscript" "Telugu" "TlgIS"
226 "Telugu keyboard Inscript.")
227
228 (if nil
229 (quail-define-package "kannada-inscript" "Kannada" "KndIS" t "Kannada keyboard Inscript"))
230 (quail-define-inscript-package
231 indian-knd-base-table inscript-dev-keytable
232 "kannada-inscript" "Kannada" "KndIS"
233 "Kannada keyboard Inscript.")
234
235 (if nil
236 (quail-define-package "malayalam-inscript" "Malayalam" "MlmIS" t "Malayalam keyboard Inscript"))
237 (quail-define-inscript-package
238 indian-mlm-base-table inscript-dev-keytable
239 "malayalam-inscript" "Malayalam" "MlmIS"
240 "Malayalam keyboard Inscript.")
241
242 (if nil
243 (quail-define-package "tamil-inscript" "Tamil" "TmlIS" t "Tamil keyboard Inscript"))
244 (quail-define-inscript-package
245 indian-tml-base-table inscript-dev-keytable
246 "tamil-inscript" "Tamil" "TmlIS"
247 "Tamil keyboard Inscript.")
248
249 ;;; indian.el ends here