unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Arun Isaac <arunisaac@systemreboot.net>
To: 58070@debbugs.gnu.org
Cc: Arun Isaac <arunisaac@systemreboot.net>
Subject: bug#58070: [PATCH] Add tamil99 input method
Date: Sun, 25 Sep 2022 15:32:44 +0530	[thread overview]
Message-ID: <20220925100244.13482-1-arunisaac@systemreboot.net> (raw)
In-Reply-To: <20220925100020.13229-1-arunisaac@systemreboot.net>

* lisp/leim/quail/tamil99.el: New file.
* etc/NEWS: Mention new tamil99 input method.
---
 etc/NEWS                   |   3 +
 lisp/leim/quail/tamil99.el | 200 +++++++++++++++++++++++++++++++++++++
 2 files changed, 203 insertions(+)
 create mode 100644 lisp/leim/quail/tamil99.el

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/tamil99.el b/lisp/leim/quail/tamil99.el
new file mode 100644
index 0000000000..780ef968ee
--- /dev/null
+++ b/lisp/leim/quail/tamil99.el
@@ -0,0 +1,200 @@
+;;; tamil99.el --- Quail package for the tamil99 input method -*- lexical-binding: t -*-
+
+;; Copyright (C) 2022 Free Software Foundation, Inc.
+;;
+;; Author: Arun Isaac <arunisaac@systemreboot.net>
+;; Keywords: multilingual, input method, Indian, Tamil
+
+;; 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:
+;;
+;; 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 தமிழுக்கென்றே உருவாக்கப்பட்ட விசைப்பலகை அமைப்பும் உள்ளீட்டு முறையும்
+;; ஆகும். உயிர்களை இடக்கையுடனும் மெய்களை வலக்கையுடனும் தட்டச்சிடும்படி
+;; அமைக்கப்பட்டது. https://ta.wikipedia.org/wiki/%E0%AE%A4%E0%AE%AE%E0%AE%BF%E0%AE%B4%E0%AF%8D_99
+;; காண்க.
+;;
+;; Usage:
+;;
+;; Switch to the tamil99 input method using M-x set-input-method
+;; tamil99 RET and enjoy typing in Tamil!
+;;
+;; பயன்பாடு:
+;;
+;; tamil99 உள்ளீட்டு முறைக்கு மாற M-x set-input-method tamil99 RET கட்டளையை
+;; இயக்கித் தமிழில் தட்டச்சிட்டு மகிழ்க!
+
+;;; Code:
+
+(require 'pcase)
+(require 'quail)
+(require 'seq)
+
+(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-vallinam-consonants
+  '(("h" "க")
+    ("[" "ச")
+    ("o" "ட")
+    ("l" "த")
+    ("j" "ப")
+    ("u" "ற"))
+  "Mapping for vallinam consonants.")
+
+(defconst tamil99-mellinam-consonants
+  '(("b" "ங")
+    ("]" "ஞ")
+    ("p" "ண")
+    (";" "ந")
+    ("k" "ம")
+    ("i" "ன"))
+  "Mapping for mellinam consonants.")
+
+(defconst tamil99-idaiinam-consonants
+  '(("'" "ய")
+    ("m" "ர")
+    ("n" "ல")
+    ("v" "வ")
+    ("/" "ழ")
+    ("y" "ள"))
+  "Mapping for idaiinam consonants.")
+
+(defconst tamil99-grantham-consonants
+  '(("Q" "ஸ")
+    ("W" "ஷ")
+    ("E" "ஜ")
+    ("R" "ஹ"))
+  "Mapping for grantham consonants.")
+
+(defconst tamil99-consonants
+  (append tamil99-vallinam-consonants
+          tamil99-mellinam-consonants
+          tamil99-idaiinam-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.")
+
+(defun tamil99-install ()
+  "Install tamil99 input method."
+  (quail-define-rules)
+  ;; உயிர்
+  ;; vowel
+  (mapc (pcase-lambda (`(,vowel-key ,vowel))
+          (quail-defrule vowel-key vowel))
+        tamil99-vowels)
+  (mapc (pcase-lambda (`(,consonant-key ,consonant))
+          ;; அகர உயிர்மெய்
+          ;; consonant with agaram (அ)
+          (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))
+                  ;; உயிர்மெய்
+                  ;; vowel+consonant
+                  (quail-defrule (concat consonant-key vowel-key)
+                                 (vector (concat consonant vowel-modifier)))
+                  ;; மெய்யொற்று பின் உயிர்மெய்
+                  ;; vowel+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 (`(,mellinam-consonant-key ,mellinam-consonant)
+                           `(,vallinam-consonant-key ,vallinam-consonant))
+              ;; மெல்லினம் பின் வல்லினம்
+              ;; vallinam after mellinam
+              (quail-defrule (concat mellinam-consonant-key vallinam-consonant-key)
+                             (vector (concat mellinam-consonant "்" vallinam-consonant)))
+              (mapc (pcase-lambda (`(,vowel-key ,vowel-modifier))
+                      ;; மெல்லின ஒற்றொட்டிய வல்லினம் பின் உயிர்மெய்
+                      ;; vowel+consonant after mellinam-vallinam consonant
+                      (quail-defrule (concat mellinam-consonant-key vallinam-consonant-key vowel-key)
+                                     (vector (concat mellinam-consonant "்" vallinam-consonant vowel-modifier))))
+                    tamil99-vowel-modifiers))
+            tamil99-mellinam-consonants
+            tamil99-vallinam-consonants)
+  ;; பிற வரியுருக்கள்
+  ;; other characters
+  (mapc (pcase-lambda (`(,key ,translation))
+          (quail-defrule key translation))
+        tamil99-other))
+
+(tamil99-install)
+
+(provide 'tamil99)
+
+;;; tamil99.el ends here
-- 
2.37.2






  reply	other threads:[~2022-09-25 10:02 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 ` Arun Isaac [this message]
2022-09-25 11:38   ` bug#58070: [PATCH] " 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               ` bug#58070: [PATCH v3] " Arun Isaac
2022-10-19 11:41                 ` 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=20220925100244.13482-1-arunisaac@systemreboot.net \
    --to=arunisaac@systemreboot.net \
    --cc=58070@debbugs.gnu.org \
    /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).