Мнемонический набор диакритических символов. (Есть ли? Можно ли реализовать самомму?)

Модератор: /dev/random

vipermagi
Сообщения: 83
ОС: AgiliaLinux

Мнемонический набор диакритических символов.

Сообщение vipermagi » 10.01.2011 21:27

Есть ли в емаксе такое расширение, чтобы можно было печатать сложные знаки не уместившиеся на клавиатуре через набор нескольких других знаков?

Например набор .rr отобразит символ . Если кому не видно это латинская r с точкой под и минусом над.

Вобщем нужна реализация ввода таким образом IAST транслитерации санскрита, хинди и т.д. Обыкновенный композит не предлагать.

На всякий случай ссылка на файлик с полным списком комбинаций: Gaudiya Input Solution Ru.pdf

Если нету, то можно ли самому такое прикрутить, и как?
Спасибо сказали:

Аватара пользователя
.Serj.
Сообщения: 127
ОС: Gentoo, Win7

Re: Мнемонический набор диакритических символов.

Сообщение .Serj. » 11.01.2011 19:05

Копать в сторону различных input method'ов (ibus, например).
Спасибо сказали:

vipermagi
Сообщения: 83
ОС: AgiliaLinux

Re: Мнемонический набор диакритических символов.

Сообщение vipermagi » 13.01.2011 01:13

ibus не подходит. Надо средствами емакса. С трудом нашёл решение, мне просто повезло.

1. Создаём файл sa-translit.el с содержимым

Код: Выделить всё

 (quail-define-package
 "sa-translit" "Sanskrit Transliteration" "sa-translit" t
 "Converts Harvard-Kyoto and ITRANS scheme to IAST diacritics.
" nil t nil nil nil nil nil nil nil nil t)

(quail-define-rules
("aa" ?ā)
("A" ?ā)
("AA" ?Ā)
("AAA" ?A)
("ii" ?ī)
("I" ?ī)
("II" ?Ī)
("III" ?I)
("uu" ?ū)
("U" ?ū)
("UU" ?Ū)
("UUU" ?U)
(".r" ?ṛ)
("R" ?ṛ)
(".rr" ?ṝ)
("RR" ?Ṛ)
("RRR" ?R)
("RRRR" ?Ṝ)
(".l" ?ḷ)
("L" ?ḷ)
("LL" ?Ḷ)
(".ll" ?ḹ)
("LLLL" ?Ḹ)
("LLL" ?L)
(".m" ?ṃ)
("M" ?ṃ)
("MM" ?Ṃ)
("MMM" ?M)
(".h" ?ḥ)
("H" ?ḥ)
("HH" ?Ḥ)
("HHH" ?H)
(";n" ?ṅ)
(",n" ?ṅ)
("G" ?ṅ)
("GG" ?Ṅ)
("GGG" ?G)
("~n" ?с)
("J" ?с)
("JJ" ?С)
("JJJ" ?J)
(".t" ?ṭ)
("T" ?ṭ)
("TT" ?Ṭ)
("TTT" ?T)
(".d" ?ḍ)
("D" ?ḍ)
("DD" ?Ḍ)
("DDD" ?D)
(".n" ?ṇ)
("N" ?ṇ)
("NN" ?Ṇ)
("NNN" ?N)
(";s" ?ś)
(",s" ?ś)
("z" ?ś)
("zz" ?ś)
("zzz" ?z)
("Z" ?Ś)
("ZZ" ?Ś)
("ZZZ" ?Z)
(".s" ?ṣ)
("S" ?ṣ)
(".S" ?Ṣ)
("SS" ?Ṣ)
("SSS" ?S)
)

и копируем его в /usr/share/emacs/<version>/leim/quail

2. Прописываем его добавляя в файл /usr/share/emacs/<version>/leim/leim-list.el строки

Код: Выделить всё

(register-input-method
"sa-translit" "Sanskrit Transliteration" 'quail-use-package
"sa-translit" "Converts Harvard-Kyoto and ITRANS scheme to IAST diacritics."
"quail/sa-translit")


Теперь метод ввода можно поменять набрав M-x set-input-method.

3. Добавляем нижеследующий текст в файл ~/.emacs

Код: Выделить всё

;; Bind Input Methods to Custom Keystrokes
(defun toggle-sa-translit-input-method ()
"toggle  Sanskrit  input method, HK and ITRANS -> IAST"
(interactive)
(set-input-method "sa-translit"))

(global-set-key (kbd "C-c i") 'toggle-sa-translit-input-method)


А теперь можно включить этот метод ввода по нажатию C-c i.
Спасибо сказали: