From: David De La Harpe Golden <david@harpegolden.net>
To: emacs developers <emacs-devel@gnu.org>
Subject: Ogham input method
Date: Thu, 29 May 2008 09:42:47 +0100 [thread overview]
Message-ID: <483E6C87.3010103@harpegolden.net> (raw)
[-- Attachment #1: Type: text/plain, Size: 628 bytes --]
Ogham is an old irish alphabet that is in unicode
http://en.wikipedia.org/wiki/Ogham
http://www.omniglot.com/writing/ogham.htm
Not exactly a complicated input method or alphabet, nor particularly
vital to support (modern irish is usually written in latin alphabet),
but turned out to be easy to do.
The "smart" ogham vs. ascii space handling (ethiopic does something
conceptually similar but more complicated) is probably wrongly
implemented (though it works for me), but it's nonessential anyway
("-" is also mapped to ogham space, so it might be okay to leave space
alone rather than trying the "smart" space thing).
[-- Attachment #2: ogham.el --]
[-- Type: text/plain, Size: 3832 bytes --]
;;; ogham.el --- Quail method for Ogham alphabet -*- coding: utf-8 -*-
;; Copyright (C) 2008
;; David De La Harpe Golden
;; Author: David De La Harpe Golden <david@harpegolden.net>
;; Keywords: i18n
;; ogham.el 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.
;; ogham.el 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 ogham.el. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;; Ogham, old irish alphabet, now in unicode.
;;; Code:
(require 'quail)
(defun ogham-insert-space ()
"Insert an ascii or ogham space.
If point is preceded by an ogham character other than an
ogham ending (reversed) feather mark (like -<), then insert
an ogham space mark, otherwise insert an ascii space."
(interactive)
(cond
((memq (preceding-char)
'(?á ?á ?á ?á ?á ?á
?á ?á ?á ?á ?á
?á ?á ?á ?á ?á ?á ?á ?á ?á ?á
?á ?á ?á ?á ?á ?á ?á)) ;; excludes this: ?á
(insert ?á))
(t
(insert #x20))))
(defun ogham-activate-ogham-space ()
(when (string-equal (car quail-current-package) "ogham")
(local-set-key " " 'ogham-insert-space)))
(defun ogham-inactivate-ogham-space ()
(when (string-equal (car quail-current-package) "ogham")
(local-unset-key " ")))
;; called at end of this file
(defun ogham-install-quail-hooks ()
"Installs quail hooks for smart ogham space handling."
(interactive)
(add-hook 'quail-activate-hook 'ogham-activate-ogham-space)
(add-hook 'quail-inactivate-hook 'ogham-inactivate-ogham-space))
(defun ogham-remove-quail-hooks ()
"Removes quail hooks for smart ogham space handling."
(interactive)
(remove-hook 'quail-activate-hook 'ogham-activate-ogham-space)
(remove-hook 'quail-inactivate-hook 'ogham-inactivate-ogham-space))
(quail-define-package
"ogham" "Irish"
"ááá"
t
"Ogham (old Irish alphabet) input method (see Latin methods for modern Irish)
Forfeda input as dipthongs (late/manuscript ogham).
ááááááááááá
áá >-b-l-f-s-n-<
ááááááááááááá >-h-d-t-c-q-<
ááááááááááááá >-m-g-ng-z-r-<
ááááááááááááá >-a-o-u-e-i-<
ááááááááááááá >-ea-oi-ui-ia-ae-<
ááááá >-p-<
á >
á <
á - or sometimes SPC (see below).
SPC keypresses are handled specially:
SPC will insert an ogham space mark (`á') when preceded by an
ogham character other than an ogham ending (reversed) feather
mark (`á'), otherise it will insert an ascii space (` ').
Warning: If your ogham font is in a `stemless' ogham style,
the ogham space mark may, logically enough, appear as a blank
character similar to ascii space, rather than as a dash-like
character.
"
nil t nil nil nil nil nil nil nil nil t)
;; helper to generate template to be filled in
;; (dotimes (i #x1d)
;; (insert "(\"\" ?")
;; (insert-char (+ i #x1680) 1)
;; (insert ")\n"))
(quail-define-rules
("-" ?á)
("b" ?á)
("l" ?á)
("f" ?á)
("s" ?á)
("n" ?á
)
("h" ?á)
("d" ?á)
("t" ?á)
("c" ?á)
("q" ?á)
("m" ?á)
("g" ?á)
("ng" ?á)
("z" ?á)
("r" ?á)
("a" ?á)
("o" ?á)
("u" ?á)
("e" ?á)
("i" ?á)
("ea" ?á)
("oi" ?á)
("ui" ?á)
("ia" ?á)
("ae" ?á)
("p" ?á)
(">" ?á)
("<" ?á)
)
(ogham-install-quail-hooks)
(provide 'ogham)
;;; ogham.el ends here
next reply other threads:[~2008-05-29 8:42 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-05-29 8:42 David De La Harpe Golden [this message]
2008-05-29 9:52 ` Ogham input method David De La Harpe Golden
2008-05-29 12:45 ` David De La Harpe Golden
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=483E6C87.3010103@harpegolden.net \
--to=david@harpegolden.net \
--cc=emacs-devel@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 external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.