unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Kierin Bell <fernseed@fernseed.me>
To: Eli Zaretskii <eliz@gnu.org>
Cc: 74170@debbugs.gnu.org
Subject: bug#74170: [PATCH] Add input methods for Northern Iroquoian languages
Date: Sat, 02 Nov 2024 23:45:34 -0400	[thread overview]
Message-ID: <87o72xou8x.fsf@fernseed.me> (raw)
In-Reply-To: <871pztq91x.fsf@fernseed.me> (Kierin Bell's message of "Sat, 02 Nov 2024 23:40:26 -0400")

[-- Attachment #1: Type: text/plain, Size: 95 bytes --]


Apologies, the patch likely did not attach properly in the previous
email. Here it is again.


[-- Attachment #2: 0001-Add-input-methods-for-Northern-Iroquoian-languages.patch --]
[-- Type: text/x-patch, Size: 36967 bytes --]

From 6125fcedf4dac3e1c23dfe28e1cef19d9fef0e94 Mon Sep 17 00:00:00 2001
From: Kierin Bell <fernseed@fernseed.me>
Date: Fri, 1 Nov 2024 21:56:36 -0400
Subject: [PATCH] Add input methods for Northern Iroquoian languages

---
 etc/NEWS                     |  11 +
 lisp/leim/quail/iroquoian.el | 959 +++++++++++++++++++++++++++++++++++
 2 files changed, 970 insertions(+)
 create mode 100644 lisp/leim/quail/iroquoian.el

diff --git a/etc/NEWS b/etc/NEWS
index 22f11037453..9b8908e82ef 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -815,6 +815,17 @@ DirectWrite rendering parameters.
 To show color Emoji in Emacs, customize the default fontset to use a
 color Emoji font installed on your system for the 'emoji' script.
 
+---
+** New input methods for Northern Iroquoian languages.
+Input methods are now implemented for all Five Nations Iroquois
+languages in the Northern Iroquoian language family: 'mohawk-postfix'
+(Mohawk [Kanien’kéha / Onkwehonwe’néha]), 'oneida-postfix' (Oneida
+[Onʌyota:ká: / Ukwehuwehnéha]), 'cayuga-postfix' (Cayuga
+[Gayogo̱ho:nǫhnéha:ˀ]), 'onondaga-postfix (Onondaga [[Onųdaʔgegáʔ]), and
+`seneca-postfix' [Onödowá’ga:’]).  Additionally, there is a
+general-purpose 'iroquoian-postfix' input method to facilitate writing
+in the orthographies of the five languages simultaneously.
+
 \f
 ----------------------------------------------------------------------
 This file is part of GNU Emacs.
diff --git a/lisp/leim/quail/iroquoian.el b/lisp/leim/quail/iroquoian.el
new file mode 100644
index 00000000000..e205f22f759
--- /dev/null
+++ b/lisp/leim/quail/iroquoian.el
@@ -0,0 +1,959 @@
+;;; iroquoian.el --- Quail packages for inputting Iroquoian languages  -*- lexical-binding: t; coding: utf-8; -*-
+
+;; Copyright (C) 2024  Free Software Foundation, Inc.
+
+;; Author: Kierin Bell <fernseed@fernseed.me>
+;; Keywords: i18n
+
+;; This file is part of GNU Emacs.
+
+;; This program 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.
+
+;; This program 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 this program.  If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file implements input methods for Northern Iroquoian languages.
+
+;; Input methods are implemented for all Five Nations Iroquois
+;; languages:
+
+;; - Mohawk (Kanien’kéha / Onkwehonwe’néha)
+;; - Oneida (Onʌyota:ká: / Ukwehuwehnéha)
+;; - Cayuga (Gayogo̱ho:nǫhnéha:ˀ)
+;; - Onondaga (Onųdaʔgegáʔ)
+;; - Seneca (Onödowá’ga:’)
+
+;; Input methods are not yet implemented for the remaining Northern
+;; Iroquoian languages, including:
+
+;; - Tuscarora (Skarù:ręʔ)
+;; - Wendat (Huron) / Wyandot
+
+;;; Code:
+
+(require 'quail)
+(require 'seq)
+(require 'pcase)
+
+(defun quail-iroquoian-permute-rules (letters modifiers)
+  "Return rules from all permutations of LETTERS and MODIFIERS
+
+LETTERS and MODIFIERS are lists or rules where each entry is of the
+form:
+
+(KEY TRANSLATION)
+
+KEY is a string containing the sequence of keys to be translated.
+TRANSLATE is a character representing the translation for KEY."
+  (let (result)
+    (pcase-dolist (`(,l-k ,l-t) letters)
+      (pcase-dolist (`(,m-k ,m-t) modifiers)
+        ;; Converting translation into vector ensures that keys that are
+        ;;  equal to prefixes of another key will not overshadow it.
+        (push (list (concat l-k m-k) (vector (string l-t m-t)))
+              result)))
+    (append letters
+            (nreverse result))))
+
+\f
+;;; Mohawk
+
+;;
+;; There are several orthographies used today to write Mohawk in
+;; different communities, but differences are small and mainly involve
+;; differences in representation of the palatal glide [j] (written <i>
+;; in Eastern/Central dialects and <y> in Western dialects).  The
+;; following input method should work for all of variants.
+;;
+;; Reference work for orthographies used by speakers of Eastern
+;; (Kahnawà:ke, Kanehsatà:ke, Wáhta) and Central (Ahkwesahsne) dialects
+;; of Mohawk:
+;;
+;; Lazore, Dorothy Karihwénhawe. 1993. The Mohawk language
+;; Standardisation Project, Conference Report. Ontario: Literacy
+;; Ontario.
+;;
+;; Reference work for the orthography commonly used by speakers of
+;; Western dialects of Mohawk (Tyendinaga, Ohswé:ken):
+;;
+;; Brian Maracle. 2021. 1st Year Adult Immersion Program 2020-21.
+;; Ohsweken, ON, Canada: Onkwawenna Kentyohkwa.  Unpublished curriculum
+;; document written by staff for the Okwawenna Kentyohkwa adult
+;; immersion program.
+;;
+
+(defconst iroquoian-mohawk-modifier-alist
+  '((":" ?:)))
+
+(defconst iroquoian-mohawk-vowel-alist
+  '(("a" ?a)
+    ("A" ?A)
+    ("e" ?e)
+    ("E" ?E)
+    ("i" ?i)
+    ("I" ?I)
+    ("o" ?o)
+    ("O" ?O)))
+
+(defconst iroquoian-mohawk-consonant-alist
+  '((";;" ?\N{RIGHT SINGLE QUOTATION MARK})
+    ("h" ?h)
+    ("H" ?H)
+    ("k" ?k)
+    ("K" ?K)
+    ("m" ?m)
+    ("M" ?M)
+    ("n" ?n)
+    ("N" ?N)
+    ("r" ?r)
+    ("R" ?R)
+    ("s" ?s)
+    ("S" ?S)
+    ("t" ?t)
+    ("T" ?T)
+    ("w" ?w)
+    ("W" ?W)
+    ("Y" ?Y)
+    ("y" ?y)
+    ;; Rare (ideophones and loan words):
+    ("b" ?b)
+    ("B" ?B)
+    ("m" ?m)
+    ("M" ?M)))
+
+(defconst iroquoian-mohawk-diacritic-alist
+  '(("'" ?\N{COMBINING ACUTE ACCENT})
+    ("`" ?\N{COMBINING GRAVE ACCENT})))
+
+(quail-define-package
+ "mohawk-postfix" "Mohawk" "MOH<" nil
+ "Mohawk input method with postfix modifiers
+
+Modifiers:
+
+| Key | Translation | Description  |
+|-----+-------------+--------------|
+| :   | :           | Vowel length |
+
+Stress diacritics:
+
+| Key  | Description  | Example |
+|------+--------------+---------|
+| \\='    | Acute accent | a' -> á |
+| \\=`    | Grave accent | a` -> à |
+
+Vowels:
+
+a, e, i, and o are bound to a single key.
+
+Consonants:
+
+| Key | Translation | Description  |
+|-----+-------------+--------------|
+| ;;  | \\=’           | Glottal stop |
+
+h, k, n, r, s, t, w, and y are bound to a single key.
+
+b, m, and p are used rarely in ideophones and loan words.  They are also
+each bound to a single key.
+
+Alternatively, an apostrophe can represent a glottal stop.  To enter an
+apostrophe directly after a vowel without adding an acute accent to that
+vowel, first use \\<quail-translation-keymap>\\[quail-select-current] to terminate the translation and then type the
+apostrophe."
+ nil t nil nil nil nil nil nil nil nil t)
+
+(pcase-dolist (`(,key ,trans)
+               (append iroquoian-mohawk-modifier-alist
+                       iroquoian-mohawk-consonant-alist
+                       (quail-iroquoian-permute-rules
+                        iroquoian-mohawk-vowel-alist
+                        iroquoian-mohawk-diacritic-alist)))
+  (quail-defrule key trans))
+
+\f
+;;; Oneida
+
+;;
+;; There are slight variations in the orthographies used today to write
+;; Oneida.  The differences mainly involve in representation of vowel
+;; length and glottal stops.
+;;
+;; Reference work for Oneida orthography:
+;;
+;; Michelson, K., Doxtator, M. and Doxtator, M.A.. 2002.
+;; Oneida-English/English-Oneida dictionary. Toronto: University of
+;; Toronto Press.
+;;
+;; Orthographic variation from personal familiarity with community
+;; language programs and curricula.
+;;
+
+(defconst iroquoian-oneida-modifier-alist
+  '(("::" ?\N{MIDDLE DOT})
+    ;; Alternative vowel length modifier:
+    (":" ?:)))
+
+(defconst iroquoian-oneida-vowel-alist
+  '(("a" ?a)
+    ("A" ?A)
+    ("e" ?e)
+    ("E" ?E)
+    ("i" ?i)
+    ("I" ?I)
+    ("o" ?o)
+    ("O" ?O)
+    ("u" ?u)
+    ("U" ?U)
+    ("e/" ?ʌ)
+    ("E/" ?Ʌ)))
+
+(defconst iroquoian-oneida-consonant-alist
+  '((";;" ?\N{MODIFIER LETTER GLOTTAL STOP})
+    (";'" ?\N{RIGHT SINGLE QUOTATION MARK})
+    ("h" ?h)
+    ("H" ?H)
+    ("k" ?k)
+    ("K" ?K)
+    ("l" ?l)
+    ("L" ?L)
+    ("n" ?n)
+    ("N" ?N)
+    ("s" ?s)
+    ("S" ?S)
+    ("t" ?t)
+    ("T" ?T)
+    ("w" ?w)
+    ("W" ?W)
+    ("y" ?y)
+    ("Y" ?Y)))
+
+(defconst iroquoian-oneida-diacritic-alist
+  '(("'" ?\N{COMBINING ACUTE ACCENT})))
+
+(defconst iroquoian-oneida-devoicing-alist
+  '(("_" ?\N{COMBINING LOW LINE})
+    ("__" ?_)))
+
+(quail-define-package
+ "oneida-postfix" "Oneida" "ONE<" nil
+ "Oneida input method with postfix modifiers
+
+Modifiers:
+
+| Key | Translation | Description              |
+|-----+-------------+--------------------------|
+| ::  | ·           | Vowel length             |
+| :   | :           | Vowel length (alternate) |
+
+Stress diacritics:
+
+| Key  | Description  | Example |
+|------+--------------+---------|
+| \\='    | Acute accent | a' -> á|
+
+Vowels:
+
+| Key | Translation | Description                       |
+|-----+-------------+-----------------------------------|
+| e/  | ʌ           | Mid central nasal vowel           |
+| E/  | Ʌ           | Mid central nasal vowel (capital) |
+
+a, e, i, o, and u are bound to a single key.
+
+Consonants:
+
+| Key | Translation | Description              |
+|-----+-------------+--------------------------|
+| ;;  | ˀ           | Glottal stop             |
+| ;\\='     | \\=’           | Glottal stop (alternate) |
+
+h, k, l, n, s, t, w, and y are bound to a single key.
+
+Alternatively, an apostrophe can represent a glottal stop.  To enter an
+apostrophe directly after a vowel without adding an acute accent to that
+vowel, first use \\<quail-translation-keymap>\\[quail-select-current] to terminate the translation and then type the
+apostrophe.
+
+Devoicing:
+
+| Key | Description        | Example  |
+|-----+--------------------+----------|
+| _   | Combining low line | a_ -> a̲ |
+
+Note: Not all fonts can properly display a combining low line on all
+letters.
+
+Underlining is commonly used in Oneida to indicate devoiced syllables on
+pre-pausal forms (also called utterance-final forms).  Alternatively,
+markup or other methods can be used to create an underlining effect.
+
+To enter a plain underscore, type _ twice."
+ nil t nil nil nil nil nil nil nil nil t)
+
+(pcase-dolist (`(,key ,trans)
+               (append iroquoian-oneida-modifier-alist
+                       iroquoian-oneida-consonant-alist
+                       (quail-iroquoian-permute-rules
+                        iroquoian-oneida-vowel-alist
+                        iroquoian-oneida-diacritic-alist)
+                       iroquoian-oneida-devoicing-alist))
+  (quail-defrule key trans))
+
+\f
+;;; Onondaga
+
+;;
+;; There are three main orthographies for Onondaga in contemporary use:
+;; the community orthography used at Six Nations of the Grand River, the
+;; community orthography used at Onondaga Nation in New York, and the
+;; orthography used by Hanni Woodbury in her 2003 dictionary (see
+;; below).  The latter is included because of its adoption in academia
+;; and also by some contemporary second-language learners.
+;; Additionally, Woodbury's dictionary provides a helpful description of
+;; the community orthographies that is still applicable today.
+;;
+;; The differences between the orthographies are small, involving
+;; representation of nasal vowels (ęand ǫat Six Nations of the Grand
+;; River, eñ and oñ at Onondaga in New York, and ęand ųfollowing
+;; Woodbury's dictionary), the low front rounded vowel (äat Six Nations
+;; and Onondaga Nation and æ following Woodbury), vowel length (:
+;; [colon] after a vowel in community orthographies and · [middle dot]
+;; following Woodbury), and glottal stops (’ [right single quotation
+;; mark] in community orthographies and ʔ [latin letter glottal stop]
+;; following Woodbury).  The input method here aims to accommodate all
+;; three of these orthographies.
+;;
+;; Reference work for Onondaga orthography:
+;;
+;; Hanni Woodbury. 2003. Onondaga-English/English-Onondaga
+;; Dictionary. Toronto: University of Toronto Press.
+;;
+
+(defconst iroquoian-onondaga-modifier-alist
+  '((":" ?:)
+    ;; Alternative vowel length modifier:
+    ("::" ?\N{MIDDLE DOT})))
+
+(defconst iroquoian-onondaga-vowel-alist
+  '(("a" ?a)
+    ("A" ?A)
+    ("e" ?e)
+    ("E" ?E)
+    ("i" ?i)
+    ("I" ?I)
+    ("o" ?o)
+    ("O" ?O)
+    ("e," ?ę)
+    ("E," ?Ę)
+    ("o," ?ǫ)
+    ("O," ?Ǫ)
+    ("a\"" ?ä)
+    ("A\"" ?Ä)
+    ;; From Woodbury (2003) orthography:
+    ("a/" ?æ)
+    ("A/" ?Æ)
+    ("u," ?ų)
+    ("U," ?Ų)))
+
+(defconst iroquoian-onondaga-consonant-alist
+  '((";;" ?\N{RIGHT SINGLE QUOTATION MARK})
+    (";:" ?\N{LATIN LETTER GLOTTAL STOP})
+    ("c" ?c)
+    ("C" ?C)
+    ("d" ?d)
+    ("D" ?D)
+    ("g" ?g)
+    ("G" ?G)
+    ("h" ?h)
+    ("H" ?H)
+    ("j" ?j)
+    ("J" ?J)
+    ("k" ?k)
+    ("K" ?K)
+    ("n" ?n)
+    ("N" ?N)
+    ("s" ?s)
+    ("S" ?S)
+    ("t" ?t)
+    ("T" ?T)
+    ("w" ?w)
+    ("W" ?W)
+    ("y" ?y)
+    ("Y" ?Y)))
+
+(defconst iroquoian-onondaga-nasal-alist
+  '(("n-" ?ñ)
+    ("N-" ?Ñ)))
+
+(defconst iroquoian-onondaga-diacritic-alist
+  '(("'" ?\N{COMBINING ACUTE ACCENT})))
+
+(quail-define-package
+ "onondaga-postfix" "Onondaga" "ONO<" nil
+ "Onondaga input method with postfix modifiers
+
+Modifiers:
+
+| Key | Translation | Description              |
+|-----+-------------+--------------------------|
+| :   | :           | Vowel length             |
+| ::  | ·           | Vowel length (alternate) |
+
+Stress diacritics:
+
+| Key  | Description  | Example |
+|------+--------------+---------|
+| \\='    | Acute accent | a' -> á|
+
+Vowels:
+
+| Key | Translation | Description                           |
+|-----+-------------+---------------------------------------|
+| Six Nations of the Grand River orthography                |
+|-----------------------------------------------------------|
+| e,  | ę | Mid front nasal vowel                           |
+| E,  | Ę | Mid front nasal vowel (capital)                 |
+| o,  | ǫ | Back high nasal vowel                           |
+| O,  | Ǫ | Back high nasal vowel (capital)                 |
+| a\"  | ä | Low front rounded vowel                         |
+| A\"  | Ä | Low front rounded vowel (capital)               |
+|-----------------------------------------------------------|
+| Onondaga Nation, New York orthography                     |
+|-----------------------------------------------------------|
+| en- | eñ | Mid front nasal vowel                          |
+| EN- | EÑ | Mid front nasal vowel (capital)                |
+| on- | oñ | Back high nasal vowel                          |
+| ON- | OÑ | Back high nasal vowel (capital)                |
+| a\"  | ä  | Low front rounded vowel                        |
+| A\"  | Ä  | Low front rounded vowel (capital)              |
+|-----------------------------------------------------------|
+| Dictionary orthography (Hanni Woodbury, 2003)             |
+|-----------------------------------------------------------|
+| e, | ę | Mid front nasal vowel                            |
+| E, | Ę | Mid front nasal vowel (capital)                  |
+| u, | ų | Back high nasal vowel                            |
+| U, | Ų | Back high nasal vowel (capital)                  |
+| a/ | æ | Low front rounded vowel                          |
+| A/ | Æ | Low front rounded vowel (capital)                |
+
+a, e, i, and o are bound to a single key.
+
+Consonants:
+
+| Key | Translation | Description              |
+|-----+-------------+--------------------------|
+| ;;  | \\=’           | Glottal stop             |
+| ;:  | ʔ           | Glottal stop (alternate) |
+
+c, d, g, h, j, k, n, s, t, w, and y are bound to a single key.
+
+Alternatively, an apostrophe can represent a glottal stop.  To enter an
+apostrophe directly after a vowel without adding an acute accent to that
+vowel, first use \\<quail-translation-keymap>\\[quail-select-current] to terminate the translation and then type the
+apostrophe."
+ nil t nil nil nil nil nil nil nil nil t)
+
+(pcase-dolist (`(,key ,trans)
+               (append iroquoian-onondaga-modifier-alist
+                       iroquoian-onondaga-consonant-alist
+                       iroquoian-onondaga-nasal-alist
+                       (quail-iroquoian-permute-rules
+                        iroquoian-onondaga-vowel-alist
+                        iroquoian-onondaga-diacritic-alist)))
+  (quail-defrule key trans))
+
+\f
+;;; Cayuga
+
+;;
+;; The primary community orthography used for the Cayuga language is
+;; called the Henry orthography, after important language revitalist
+;; Reginald Henry.  There are slight variations, particularly in which
+;; letter is used to represent the glottal stop.  While the most common
+;; seems to be <ˀ> [modifier letter glottal stop], this input method
+;; provides mappings for other glottal stop letters in common use.
+;; Other common orthographies should be covered by this input method as
+;; well.
+;;
+;; Reference work for Cayuga orthography:
+;;
+;; Carrie Dyck, Frances Froman, Alfred Keye & Lottie Keye. 2024. A
+;; grammar and dictionary of Gayogo̱hó:nǫˀ (Cayuga) (Estudios de
+;; Lingüística Amerindia 1).  Berlin: Language Science Press.
+;;
+
+(defconst iroquoian-cayuga-modifier-alist
+  '((":" ?:)))
+
+(defconst iroquoian-cayuga-vowel-alist
+  '(("a" ?a)
+    ("A" ?A)
+    ("e" ?e)
+    ("E" ?E)
+    ("i" ?i)
+    ("I" ?I)
+    ("o" ?o)
+    ("O" ?O)
+    ("u" ?u)
+    ("U" ?U)
+    ("e," ?ę)
+    ("E," ?Ę)
+    ("o," ?ǫ)
+    ("O," ?Ǫ)))
+
+(defconst iroquoian-cayuga-consonant-alist
+  '((";;" ?\N{MODIFIER LETTER GLOTTAL STOP})
+    (";'" ?\N{RIGHT SINGLE QUOTATION MARK})
+    ("d" ?d)
+    ("D" ?D)
+    ("g" ?g)
+    ("G" ?G)
+    ("h" ?h)
+    ("H" ?H)
+    ("j" ?j)
+    ("J" ?J)
+    ("k" ?k)
+    ("K" ?K)
+    ("n" ?n)
+    ("N" ?N)
+    ("r" ?r)
+    ("R" ?R)
+    ("s" ?s)
+    ("S" ?S)
+    ("t" ?t)
+    ("T" ?T)
+    ("w" ?w)
+    ("W" ?W)
+    ("y" ?y)
+    ("Y" ?Y)
+    ;; Rare (examples?)
+    ("f" ?f)
+    ("F" ?F)))
+
+(defconst iroquoian-cayuga-diacritic-alist
+  '(("'" ?\N{COMBINING ACUTE ACCENT})
+    ("-" ?\N{COMBINING MACRON BELOW})))
+
+(quail-define-package
+ "cayuga-postfix" "Cayuga" "CAY<" nil
+ "Cayuga input method with postfix modifiers
+
+Modifiers:
+
+| Key | Translation | Description              |
+|-----+-------------+--------------------------|
+| :   | :           | Vowel length             |
+
+Stress diacritics:
+
+| Key  | Description  | Example |
+|------+--------------+---------|
+| \\='    | Acute accent | a' -> á|
+
+Vowels:
+
+| Key | Translation | Description                     |
+|-----+-------------+---------------------------------|
+| e,  | ę           | Mid front nasal vowel           |
+| E,  | Ę           | Mid front nasal vowel (capital) |
+| o,  | ǫ           | Mid back nasal vowel            |
+| O,  | Ǫ           | Mid back nasal vowel (capital)  |
+
+a, e, i, o, and u are bound to a single key.
+
+Consonants:
+
+| Key   | Translation | Description              |
+|-------+-------------+--------------------------|
+| ;;    | ˀ           | Glottal stop             |
+| ;\\='    | \\=’           | Glottal stop (alternate) |
+
+d, g, h, j, k, n, r, s, t, w, y, and f are bound to a single key.
+
+Alternatively, an apostrophe can represent a glottal stop.  To enter an
+apostrophe directly after a vowel without adding an acute accent to that
+vowel, first use \\<quail-translation-keymap>\\[quail-select-current] to terminate the translation and then type the
+apostrophe.
+
+Devoicing:
+
+| Key | Description            | Example  |
+|-----+------------------------+----------|
+| -   | Combining macron below | a- -> a̱  |
+
+Note: Not all fonts can properly display a combining macron low on all
+vowels.
+
+To enter a plain hyphen after a vowel, first use \\<quail-translation-keymap>\\[quail-select-current] to terminate the
+translation and then type the hyphen."
+ nil t nil nil nil nil nil nil nil nil t)
+
+(pcase-dolist (`(,key ,trans)
+               (append iroquoian-cayuga-modifier-alist
+                       iroquoian-cayuga-consonant-alist
+                       (quail-iroquoian-permute-rules
+                        iroquoian-cayuga-vowel-alist
+                        iroquoian-cayuga-diacritic-alist)))
+  (quail-defrule key trans))
+
+\f
+;;; Seneca
+
+;;
+;; The orthography for the Seneca language is fairly stable with only
+;; minor variations (for example, <š> vs. <sy> for the voiceless
+;; postalveolar fricative).
+;;
+;; Reference works for Seneca orthography:
+;;
+;; Phyllis E. Wms. Bardeau. 2002. Onondowa'ga:' Gawe:no': New Reference
+;; Edition. Salamanca, NY: The Seneca Nation of Indians Allegany
+;; Education Department.
+;;
+;; Wallace Chafe. 2015. A Grammar of the Seneca Language. Oakland, CA:
+;; University of California Press.
+;;
+
+(defconst iroquoian-seneca-modifier-alist
+  '((":" ?:)))
+
+(defconst iroquoian-seneca-vowel-alist
+  '(("a" ?a)
+    ("A" ?A)
+    ("e" ?e)
+    ("E" ?E)
+    ("i" ?i)
+    ("I" ?I)
+    ("o" ?o)
+    ("O" ?O)
+    ("a\"" ?ä)
+    ("A\"" ?Ä)
+    ("e\"" ?ë)
+    ("E\"" ?Ë)
+    ("o\"" ?ö)
+    ("O\"" ?Ö)
+    ;; Rare (e.g., niwú’u:h 'it is tiny'):
+    ("u" ?u)
+    ("U" ?U)))
+
+(defconst iroquoian-seneca-consonant-alist
+  `((";;" ?\N{RIGHT SINGLE QUOTATION MARK})
+    ("d" ?d)
+    ("D" ?D)
+    ("g" ?g)
+    ("G" ?G)
+    ("h" ?h)
+    ("H" ?H)
+    ("j" ?j)
+    ("J" ?J)
+    ("k" ?k)
+    ("K" ?K)
+    ("n" ?n)
+    ("N" ?N)
+    ("s" ?s)
+    ("S" ?S)
+    ("s/" ?š)
+    ("S/" ?Š)
+    ("t" ?t)
+    ("T" ?T)
+    ("w" ?w)
+    ("W" ?W)
+    ("y" ?y)
+    ("Y" ?Y)
+    ("z" ?z)
+    ("Z" ?Z)
+    ;; Rare (e.g., ideophones: ba’s, plo’ts; nicknames: Gó’bit, Dagam,
+    ;; Jita:m):
+    ("b" ?b)
+    ("m" ?m)
+    ("p" ?p)))
+
+(defconst iroquoian-seneca-diacritic-alist
+  '(("'" ?\N{COMBINING ACUTE ACCENT})
+    ("`" ?\N{COMBINING GRAVE ACCENT})))
+
+(quail-define-package
+ "seneca-postfix" "Seneca" "SEE<" nil
+ "Seneca input method with postfix modifiers
+
+Modifiers:
+
+| Key | Translation | Description              |
+|-----+-------------+--------------------------|
+| :   | :           | Vowel length             |
+
+Stress diacritics:
+
+| Key  | Description  | Example |
+|------+--------------+---------|
+| \\='    | Acute accent | a' -> á|
+| \\=`    | Grave accent | a` -> à|
+
+Vowels:
+
+| Key | Translation | Description                        |
+|-----+-------------+------------------------------------|
+| e\"  | ë           | Mid front nasal vowel              |
+| E\"  | Ë           | Mid front nasal vowel (capital)    |
+| o\"  | ö           | Low-mid back nasal vowel           |
+| O\"  | Ö           | Low-mid back nasal vowel (capital) |
+| a\"  | ä           | Low front vowel                    |
+| A\"  | Ä           | Low front vowel (capital)          |
+
+a, e, i, o, and u are bound to a single key.
+
+Consonants:
+
+| Key   | Translation | Description                                |
+|-------+-------------+--------------------------------------------|
+| ;;    | \\=’           | Glottal stop                               |
+| s/    | š           | Voiceless postalveolar fricative           |
+| S/    | Š           | Voiceless postalveolar fricative (capital) |
+
+d, g, h, j, k, n, s, t, w, y, and z are bound to a single key.
+
+b, m, and p are used rarely in ideophones and nicknames.  They are also
+each bound to a single key.
+
+Alternatively, an apostrophe can represent a glottal stop.  To enter an
+apostrophe directly after a vowel without adding an acute accent to that
+vowel, first use \\<quail-translation-keymap>\\[quail-select-current] to terminate the translation and then type the
+apostrophe."
+ nil t nil nil nil nil nil nil nil nil t)
+
+(pcase-dolist (`(,key ,trans)
+               (append iroquoian-seneca-modifier-alist
+                       iroquoian-seneca-consonant-alist
+                       (quail-iroquoian-permute-rules
+                        iroquoian-seneca-vowel-alist
+                        iroquoian-seneca-diacritic-alist)))
+  (quail-defrule key trans))
+
+\f
+;;; Composite Iroquoian
+
+;;
+;; This input method represents a composite input method for all of the
+;; Northern Iroquoian languages included above.
+;;
+
+(defconst iroquoian-composite-modifier-alist
+  (seq-uniq (append iroquoian-mohawk-modifier-alist
+                    iroquoian-oneida-modifier-alist
+                    iroquoian-onondaga-modifier-alist
+                    iroquoian-cayuga-modifier-alist
+                    iroquoian-seneca-modifier-alist)))
+
+(defconst iroquoian-composite-vowel-alist
+  (seq-uniq (append iroquoian-mohawk-vowel-alist
+                    iroquoian-oneida-vowel-alist
+                    iroquoian-onondaga-vowel-alist
+                    iroquoian-cayuga-vowel-alist
+                    iroquoian-seneca-vowel-alist)))
+
+(defconst iroquoian-composite-consonant-alist
+  (seq-uniq (append
+             '((";;" ?\N{RIGHT SINGLE QUOTATION MARK})
+               (";'" ?\N{MODIFIER LETTER GLOTTAL STOP})
+               (";:" ?\N{LATIN LETTER GLOTTAL STOP}))
+             iroquoian-mohawk-consonant-alist
+             iroquoian-oneida-consonant-alist
+             iroquoian-onondaga-consonant-alist
+             iroquoian-cayuga-consonant-alist
+             iroquoian-seneca-consonant-alist)
+            (lambda (c1 c2)
+              (equal (car c1) (car c2)))))
+
+(defconst iroquoian-composite-diacritic-alist
+  '(("'" ?\N{COMBINING ACUTE ACCENT})
+    ("`" ?\N{COMBINING GRAVE ACCENT})
+    ("-" ?\N{COMBINING MACRON BELOW})))
+
+(defconst iroquoian-composite-devoicing-alist
+  '(("_" ?\N{COMBINING LOW LINE})
+    ("__" ?_)))
+
+(defconst iroquoian-composite-nasal-alist
+  ;; Use ~ modifier instead of - (in contrast with `onondaga-postfix'),
+  ;; because the obtrusiveness of not being able to input literal
+  ;; hyphens after n outweighs benefits of being able to type a
+  ;; relatively obscure orthography easily.
+  '(("n~" ?ñ)
+    ("N~" ?Ñ)))
+
+(quail-define-package
+ "iroquoian-postfix" "Iroquoian" "IRO<" nil
+ "Composite input method for Northern Iroquoian languages
+
+This input method can be used to enter the following Northern Iroquoian
+languages:
+
+- Mohawk (Kanien’kéha / Onkwehonwe’néha)
+- Oneida (Onʌyota:ká: / Ukwehuwehnéha)
+- Cayuga (Gayogo̱ho:nǫhnéha:ˀ)
+- Onondaga (Onųdaʔgegáʔ)
+- Seneca (Onödowá’ga:’)
+
+Modifiers:
+
+| Key | Translation | Description              |
+|-----+-------------+--------------------------|
+| :   | :           | Vowel length             |
+| ::  | ·           | Vowel length (alternate) |
+
+Stress diacritics:
+
+| Key  | Description  | Example |
+|------+--------------+---------|
+| \\='    | Acute accent | a' -> á|
+| \\=`    | Grave accent | a` -> à|
+
+Vowels:
+
+| Key  | Translation | Description                                     |
+|----------------------------------------------------------------------|
+| Mohawk                                                               |
+| -------------------------------------------------------------------- |
+| Single-key vowels: a e i o                                           |
+|----------------------------------------------------------------------|
+| Oneida                                                               |
+| -------------------------------------------------------------------- |
+| e/   | ʌ           | Mid central nasal vowel                         |
+| E/   | Ʌ           | Mid central nasal vowel (capital)               |
+| Single-key vowels: a e i o u                                         |
+|----------------------------------------------------------------------|
+| Onondaga                                                             |
+| (Six Nations of the Grand River)                                     |
+| -------------------------------------------------------------------- |
+| e,   | ę           | Mid front nasal vowel                           |
+| E,   | Ę           | Mid front nasal vowel (capital)                 |
+| o,   | ǫ           | Back high nasal vowel                           |
+| O,   | Ǫ           | Back high nasal vowel (capital)                 |
+| a\"   | ä           | Low front rounded vowel                         |
+| A\"   | Ä           | Low front rounded vowel (capital)               |
+| -------------------------------------------------------------------- |
+| (Onondaga Nation, New York)                                          |
+| -------------------------------------------------------------------- |
+| en~  | eñ          | Mid front nasal vowel                           |
+| EN~  | EÑ          | Mid front nasal vowel (capital)                 |
+| on~  | oñ          | Back high nasal vowel                           |
+| ON~  | OÑ          | Back high nasal vowel (capital)                 |
+| a\"   | ä           | Low front rounded vowel                         |
+| A\"   | Ä           | Low front rounded vowel (capital)               |
+| -------------------------------------------------------------------- |
+| (Hanni Woodbury, 2003)                                               |
+| -------------------------------------------------------------------- |
+| e,   | ę           | Mid front nasal vowel                           |
+| E,   | Ę           | Mid front nasal vowel (capital)                 |
+| u,   | ų           | Back high nasal vowel                           |
+| U,   | Ų           | Back high nasal vowel (capital)                 |
+| a/   | æ           | Low front rounded vowel                         |
+| A/   | Æ           | Low front rounded vowel (capital)               |
+| -------------------------------------------------------------------- |
+| (all)                                                                |
+| -------------------------------------------------------------------- |
+| Single-key vowels: a e i o                                           |
+|----------------------------------------------------------------------|
+| Cayuga                                                               |
+| -------------------------------------------------------------------- |
+| e,   | ę           | Mid front nasal vowel                           |
+| E,   | Ę           | Mid front nasal vowel (capital)                 |
+| o,   | ǫ           | Mid back nasal vowel                            |
+| O,   | Ǫ           | Mid back nasal vowel (capital)                  |
+| Single-key vowels: a e i o u                                         |
+|----------------------------------------------------------------------|
+| Seneca                                                               |
+| -------------------------------------------------------------------- |
+| e\"   | ë           | Mid front nasal vowel                           |
+| E\"   | Ë           | Mid front nasal vowel (capital)                 |
+| o\"   | ö           | Low-mid back nasal vowel                        |
+| O\"   | Ö           | Low-mid back nasal vowel (capital)              |
+| a\"   | ä           | Low front vowel                                 |
+| A\"   | Ä           | Low front vowel (capital)                       |
+| Single-key vowels: a e i o u                                         |
+
+Consonants:
+
+| Key   | Translation | Description                                    |
+|----------------------------------------------------------------------|
+| Mohawk                                                               |
+| -------------------------------------------------------------------- |
+| ;;    | \\=’           | Glottal stop                                   |
+| Single-key consonants: h k n r s t w y (b m p)                       |
+|----------------------------------------------------------------------|
+| Oneida                                                               |
+| -------------------------------------------------------------------- |
+| ;\\='    | ˀ           | Glottal stop                                   |
+| ;;    | \\=’           | Glottal stop (alternate)                       |
+| Single-key consonants: h k l n s t w y                               |
+|----------------------------------------------------------------------|
+| Onondaga                                                             |
+| -------------------------------------------------------------------- |
+| ;;    | \\=’           | Glottal stop                                   |
+| ;:    | ʔ           | Glottal stop (alternate)                       |
+| Single-key consonants: c d g h j k n s t w y                         |
+|----------------------------------------------------------------------|
+| Cayuga                                                               |
+| -------------------------------------------------------------------- |
+| ;\\='    | ˀ           | Glottal stop                                   |
+| ;;    | \\=’           | Glottal stop (alternate)                       |
+| Single-key consonants: d g h j k n r s t w y (f)                     |
+|----------------------------------------------------------------------|
+| Seneca                                                               |
+| -------------------------------------------------------------------- |
+| ;;    | \\=’           | Glottal stop                                   |
+| s/    | š           | Voiceless postalveolar fricative               |
+| S/    | Š           | Voiceless postalveolar fricative (capital)     |
+| Single-key consonants: d g h j k n s t w y z (b m p)                 |
+
+Alternatively, an apostrophe can represent a glottal stop.  To enter an
+apostrophe directly after a vowel without adding an acute accent to that
+vowel, first use \\<quail-translation-keymap>\\[quail-select-current] to terminate the translation and then type the
+apostrophe.
+
+Devoicing:
+
+| Key | Description            | Examples                     |
+|-----+------------------------+------------------------------|
+| _   | Combining low line     | a_ -> a̲, · -> ·̲           |
+| -   | Combining macron below | a- -> a̱(after vowels only)  |
+
+Note: Not all fonts can properly display a combining low line on all
+letters and a combining macron below on all vowels.
+
+Underlining is commonly used in Oneida to indicate devoiced syllables on
+pre-pausal forms (also called utterance-final forms).  Alternatively,
+markup or other methods can be used to create an underlining effect.
+
+To enter a plain underscore, type _ twice.
+
+Macron below is commonly used in Cayuga to indicate devoiced vowels.
+
+To enter a plain hyphen after a vowel, first use \\<quail-translation-keymap>\\[quail-select-current] to terminate the
+translation and then type the hyphen.  After any other character, simply
+type a hyphen (it will not be translated into a combining macron below)."
+ nil t nil nil nil nil nil nil nil nil t)
+
+(pcase-dolist (`(,key ,trans)
+               (append iroquoian-composite-modifier-alist
+                       iroquoian-composite-consonant-alist
+                       iroquoian-composite-nasal-alist
+                       (quail-iroquoian-permute-rules
+                        iroquoian-composite-vowel-alist
+                        iroquoian-composite-diacritic-alist)
+                       iroquoian-composite-devoicing-alist))
+  (quail-defrule key trans))
+
+(provide 'iroquoian)
+;;; iroquoian.el ends here
-- 
2.46.0


[-- Attachment #3: Type: text/plain, Size: 16 bytes --]


Thanks,
Kierin

  reply	other threads:[~2024-11-03  3:45 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-11-02  2:34 bug#74170: [PATCH] Add input methods for Northern Iroquoian languages Kierin Bell
2024-11-02  8:16 ` Eli Zaretskii
2024-11-03  3:40   ` Kierin Bell
2024-11-03  3:45     ` Kierin Bell [this message]
2024-11-03  7:10       ` Eli Zaretskii
2024-11-03 16:43         ` Kierin Bell
2024-11-03 18:52           ` Eli Zaretskii
2024-11-03 20:46             ` Kierin Bell
2024-11-07  4:07             ` Kierin Bell
2024-11-07  9:25               ` Eli Zaretskii
2024-11-07  9:34                 ` Robert Pluim
2024-11-07 13:10                   ` Kierin Bell
2024-11-07 13:48                     ` Robert Pluim
2024-11-07 16:20                       ` Robert Pluim
2024-11-03 22:11 ` bug#74170: [PATCH] Add input methods for Northern Iroquoian Kierin Bell

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=87o72xou8x.fsf@fernseed.me \
    --to=fernseed@fernseed.me \
    --cc=74170@debbugs.gnu.org \
    --cc=eliz@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).