From: Arun Isaac <arunisaac@systemreboot.net>
To: Arun Isaac <arunisaac@systemreboot.net>, Visuwesh <visuweshm@gmail.com>
Cc: Eli Zaretskii <eliz@gnu.org>, 58070@debbugs.gnu.org
Subject: bug#58070: [PATCH v3] Add tamil99 input method
Date: Tue, 18 Oct 2022 23:30:59 +0530 [thread overview]
Message-ID: <20221018180059.22329-1-arunisaac@systemreboot.net> (raw)
In-Reply-To: <87h701ip1x.fsf@systemreboot.net>
* lisp/leim/quail/indian.el: Require pcase and seq.
("tamil99"): New input method.
* etc/NEWS: Mention new tamil99 input method.
---
etc/NEWS | 3 +
lisp/leim/quail/indian.el | 161 ++++++++++++++++++++++++++++++++++++++
2 files changed, 164 insertions(+)
diff --git a/etc/NEWS b/etc/NEWS
index 3d1af8bd6f..bcdc991ea3 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1279,6 +1279,9 @@ The default input method for the Tamil language environment is now
change the input method's translation rules, customize the user option
'tamil-translation-rules'.
+---
+*** New tamil99 input method for the Tamil language
+
\f
* Changes in Specialized Modes and Packages in Emacs 29.1
diff --git a/lisp/leim/quail/indian.el b/lisp/leim/quail/indian.el
index 431d8369c1..84a3c7cd7e 100644
--- a/lisp/leim/quail/indian.el
+++ b/lisp/leim/quail/indian.el
@@ -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
--
2.37.3
next prev parent reply other threads:[~2022-10-18 18:00 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-25 10:00 bug#58070: [PATCH 0/1] Add tamil99 input method Arun Isaac
2022-09-25 10:02 ` bug#58070: [PATCH] " Arun Isaac
2022-09-25 11:38 ` Visuwesh
2022-09-25 13:59 ` Eli Zaretskii
2022-09-25 14:14 ` Visuwesh
2022-09-25 14:23 ` Eli Zaretskii
2022-09-25 14:38 ` Visuwesh
2022-09-25 15:55 ` Eli Zaretskii
2022-09-26 20:59 ` Arun Isaac
2022-09-27 6:25 ` Eli Zaretskii
2022-09-27 20:34 ` Arun Isaac
2022-09-26 20:55 ` Arun Isaac
2022-09-27 1:49 ` Visuwesh
2022-09-27 2:29 ` Visuwesh
2022-09-27 6:37 ` Eli Zaretskii
2022-09-27 7:34 ` Visuwesh
2022-09-27 7:53 ` Eli Zaretskii
2022-09-27 9:24 ` Robert Pluim
2022-09-27 9:40 ` Eli Zaretskii
2022-09-27 10:11 ` Visuwesh
2022-09-27 20:32 ` Arun Isaac
2022-09-27 6:23 ` Eli Zaretskii
2022-09-27 7:52 ` Visuwesh
2022-09-27 8:03 ` Eli Zaretskii
2022-09-27 10:15 ` Visuwesh
2022-10-12 8:40 ` Arun Isaac
2022-10-12 14:00 ` Eli Zaretskii
2022-10-15 8:23 ` Arun Isaac
2022-09-27 20:19 ` Arun Isaac
2022-09-27 20:26 ` Arun Isaac
2022-09-28 2:30 ` Eli Zaretskii
2022-09-25 10:13 ` bug#58070: [PATCH 0/1] " Eli Zaretskii
2022-09-25 11:16 ` Arun Isaac
2022-10-12 8:41 ` Arun Isaac
2022-10-12 13:55 ` Eli Zaretskii
2022-10-15 8:34 ` Arun Isaac
2022-10-15 9:16 ` bug#58070: [PATCH v2] " Arun Isaac
2022-10-15 14:42 ` bug#58070: [PATCH 0/1] " Visuwesh
2022-10-18 7:11 ` Arun Isaac
2022-10-18 18:00 ` Arun Isaac [this message]
2022-10-19 11:41 ` bug#58070: [PATCH v3] " Eli Zaretskii
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20221018180059.22329-1-arunisaac@systemreboot.net \
--to=arunisaac@systemreboot.net \
--cc=58070@debbugs.gnu.org \
--cc=eliz@gnu.org \
--cc=visuweshm@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).