1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-15 10:30:25 -08:00

Add tamil99 input method (bug#58070)

* lisp/leim/quail/indian.el: Require pcase and seq.
("tamil99"): New input method.
* etc/NEWS: Mention new tamil99 input method.
This commit is contained in:
Arun Isaac 2022-10-18 23:30:59 +05:30 committed by Eli Zaretskii
parent a9111d8670
commit 45ca261c98
2 changed files with 164 additions and 0 deletions

View file

@ -30,6 +30,8 @@
;;; Code:
(require 'pcase)
(require 'seq)
(require 'quail)
(require 'ind-util)
@ -699,6 +701,165 @@ is."
"tamil-inscript-digits" "Tamil" "TmlISD"
"Tamil keyboard Inscript with Tamil digits support.")
;; Tamil99 input method
;;
;; Tamil99 is a keyboard layout and input method that is specifically
;; designed for the Tamil language. Vowels and vowel modifiers are
;; input with your left hand, and consonants are input with your right
;; hand. See https://en.wikipedia.org/wiki/Tamil_99
;;
;; தமிழ்99 உள்ளீட்டு முறை
;;
;; தமிழ்99 தமிழுக்கென்றே உருவாக்கப்பட்ட விசைப்பலகை அமைப்பும் உள்ளீட்டு முறையும்
;; ஆகும். உயிர்களை இடக்கையுடனும் மெய்களை வலக்கையுடனும் தட்டச்சிடும்படி
;; அமைக்கப்பட்டது. https://ta.wikipedia.org/wiki/%E0%AE%A4%E0%AE%AE%E0%AE%BF%E0%AE%B4%E0%AF%8D_99
;; காண்க.
(quail-define-package
"tamil99" "Tamil" "தமிழ்99"
t "Tamil99 input method"
nil t t t t nil nil nil nil nil t)
(defconst tamil99-vowels
'(("q" "")
("w" "")
("e" "")
("r" "")
("t" "")
("a" "")
("s" "")
("d" "")
("g" "")
("z" "")
("x" "")
("c" ""))
"Mapping for vowels.")
(defconst tamil99-vowel-modifiers
'(("q" "")
("w" "")
("e" "")
("r" "")
("t" "")
("a" "")
("s" "ி")
("d" "")
("g" "")
("z" "")
("x" "")
("c" "")
("f" ""))
"Mapping for vowel modifiers.")
(defconst tamil99-hard-consonants
'(("h" "")
("[" "")
("o" "")
("l" "")
("j" "")
("u" ""))
"Mapping for hard consonants (வல்லினம்).")
(defconst tamil99-soft-consonants
'(("b" "")
("]" "")
("p" "")
(";" "")
("k" "")
("i" ""))
"Mapping for soft consonants (மெல்லினம்).")
(defconst tamil99-medium-consonants
'(("'" "")
("m" "")
("n" "")
("v" "")
("/" "")
("y" ""))
"Mapping for medium consonants (இடையினம்).")
(defconst tamil99-grantham-consonants
'(("Q" "")
("W" "")
("E" "")
("R" ""))
"Mapping for grantham consonants (கிரந்தம்).")
(defconst tamil99-consonants
(append tamil99-hard-consonants
tamil99-soft-consonants
tamil99-medium-consonants
tamil99-grantham-consonants)
"Mapping for all consonants.")
(defconst tamil99-other
`(("T" ,(vector "க்ஷ"))
("Y" ,(vector "ஶஂரீ"))
("O" "[")
("P" "]")
("A" "")
("S" "")
("D" "")
("F" "")
("K" "\"")
("L" ":")
(":" ";")
("\"" "'")
("Z" "")
("X" "")
("C" "")
("V" "")
("B" "")
("M" "/"))
"Mapping for miscellaneous characters.")
;; உயிர்
;; vowel
(mapc (pcase-lambda (`(,vowel-key ,vowel))
(quail-defrule vowel-key vowel))
tamil99-vowels)
(mapc (pcase-lambda (`(,consonant-key ,consonant))
;; அகர உயிர்மெய்
;; consonant symbol (consonant combined with the first vowel அ)
(quail-defrule consonant-key consonant)
;; மெய்யொற்று பின் அகர உயிர்மெய்
;; pulli on double consonant
(quail-defrule (concat consonant-key consonant-key)
(vector (concat consonant "" consonant)))
(mapc (pcase-lambda (`(,vowel-key ,vowel-modifier))
;; உயிர்மெய்
;; vowelised consonant
(quail-defrule (concat consonant-key vowel-key)
(vector (concat consonant vowel-modifier)))
;; மெய்யொற்று பின் பிற உயிர்மெய்
;; vowelised consonant after double consonant
(quail-defrule (concat consonant-key consonant-key vowel-key)
(vector (concat consonant "" consonant vowel-modifier))))
tamil99-vowel-modifiers))
tamil99-consonants)
(seq-mapn (pcase-lambda (`(,soft-consonant-key ,soft-consonant)
`(,hard-consonant-key ,hard-consonant))
;; மெல்லினம் பின் வல்லினம்
;; hard consonant after soft consonant
(quail-defrule (concat soft-consonant-key hard-consonant-key)
(vector (concat soft-consonant "" hard-consonant)))
(mapc (pcase-lambda (`(,vowel-key ,vowel-modifier))
;; மெல்லின ஒற்றொட்டிய வல்லினம் பின் உயிர்மெய்
;; vowelised consonant after soft-hard consonant pair
(quail-defrule (concat soft-consonant-key hard-consonant-key vowel-key)
(vector (concat soft-consonant "" hard-consonant vowel-modifier))))
tamil99-vowel-modifiers))
tamil99-soft-consonants
tamil99-hard-consonants)
;; பிற வரியுருக்கள்
;; other characters
(mapc (pcase-lambda (`(,key ,translation))
(quail-defrule key translation))
tamil99-other)
;; Probhat Input Method
(quail-define-package
"bengali-probhat" "Bengali" "BngPB" t