;;; ogham.el --- Quail method for Ogham alphabet -*- coding: utf-8 -*- ;; Copyright (C) 2008 ;; David De La Harpe Golden ;; Author: David De La Harpe Golden ;; 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 . ;;; Commentary: ;; Ogham, old irish alphabet, now in unicode. ;; Version 2 - now with I.S. 434:1999-like method. ;;; 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-manu") (local-set-key " " 'ogham-insert-space))) (defun ogham-inactivate-ogham-space () (when (string-equal (car quail-current-package) "ogham-manu") (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 alphabet input method with I.S.434:1999-like keyboard layout. Also supports >/< for ᚛ ᚜, similar to the ie(ogam) xkb keymap for X.org. It is assumed rather than the IS434 ogham shift-lock, you toggle this input method on and off with C-\ 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) (quail-define-rules ("/" ? ) ("?" ? ) ("#" ? ) ("~" ? ) ("b" ?ᚁ) ("l" ?ᚂ) ("f" ?ᚃ) ("s" ?ᚄ) ("n" ?ᚅ) ("h" ?ᚆ) ("d" ?ᚇ) ("t" ?ᚈ) ("c" ?ᚉ) ("q" ?ᚊ) ("m" ?ᚋ) ("g" ?ᚌ) ("v" ?ᚍ) ("z" ?ᚎ) ("r" ?ᚏ) ("a" ?ᚐ) ("o" ?ᚑ) ("u" ?ᚒ) ("e" ?ᚓ) ("i" ?ᚔ) ("w" ?ᚕ) ("k" ?ᚖ) ("j" ?ᚗ) ("y" ?ᚘ) ("x" ?ᚙ) ("p" ?ᚚ) ("\\" ?᚛) (">" ?᚛) ("." ?᚛) ("|" ?᚜) ("`" ?᚜) ("¬" ?᚜) ("<" ?᚜) ("," ?᚜) ) (quail-define-package "ogham-manu" "Irish" "᚛ᚈ᚜" t "Ogham alphabet input method by latin transcriptions, with context space. This input method uses the transcriptions of the ogham alphabet to latin in the late/manuscript tradition i.e. you enter nGeadal as ng and the Forfeda as dipthongs: ᚛ ᚁ ᚂ ᚃ ᚄ ᚅ ᚜ >-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 , ᚜ < or .   - or / or ? 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