получил ответ от Бриджабаси прабху:
Вот метод ввода для m17n. Нужно скопировать это в текстовый файл, назвать его sa-cyrillic.mim и поместить его в usr/share/m17n/. После этого нужно перелогиниться и добавить в ibus созданную нами раскладку (sa-cyrillic). Она будет в конце в меню Other. Например, для набора «ӯ» нужно дважды нажать «u» в этой раскладке.
Код: Выделить всё
;;;
sa-cyrillic.mim
;;;
;;; Input method for Sanskrit transliteration using the ITRANS scheme.
(title «sa-cyrillic»)
(map
(trans
(«aa» «а̄»)
(«AA» «А̄»)
(«ii» «ӣ»)
(«II» «Ӣ»)
(«uu» «ӯ»)
(«UU» «Ӯ»)
(«.r» «р̣»)
(«.R» «Р̣»)
(«.rr» «р̣̄»)
(«.RR» «Р̣̄»)
(«.l» «л̣»)
(«.L» «Л̣»)
(«.ll» «л̣̄»)
(«.LL» «Л̣̄»)
(«.m» «м̣»)
(«.M» «М̣»)
(«;m» «м̇»)
(«;M» «М̇»)
(«.h» «х̣»)
(«.H» «Х̣»)
(«;n» «н̇»)
(«;N» «Н̇»)
(«~n» «н̃»)
(«~N» «Н̃»)
(«.t» «т̣»)
(«.T» «Т̣»)
(«.d» «д̣»)
(«.D» «Д̣»)
(«.n» «н̣»)
(«.N» «Н̣»)
(«;s» «ш́»)
(«;S» «Ш́»)
(«a» ?а)
(«b» ?б)
(«v» ?в)
(«g» ?г)
(«d» ?д)
(«e» ?е)
(«j» «дж»)
(«i» ?и)
(«y» ?й)
(«k» ?к)
(«l» ?л)
(«m» ?м)
(«n» ?н)
(«o» ?о)
(«p» ?п)
(«r» ?р)
(«s» ?с)
(«t» ?т)
(«u» ?у)
(«h» ?х)
(«c» ?ч)
(«sh» ?ш)
(«.e» ?э)
(«A» ?А)
(«B» ?Б)
(«V» ?В)
(«G» ?Г)
(«D» ?Д)
(«E» ?Е)
(«I» ?И)
(«J» «Дж»)
(«Y» ?Й)
(«K» ?К)
(«L» ?Л)
(«M» ?М)
(«N» ?Н)
(«O» ?О)
(«P» ?П)
(«R» ?Р)
(«S» ?С)
(«T» ?Т)
(«U» ?У)
(«H» ?Х)
(«C» ?Ч)
(«Sh» ?Ш)
(«SH» ?Ш)
(«.E» ?Э)
))
(state
(init
(trans)))
А вот макросы для ЛибреОффиса:
1) Из Баларама в кириллицу:
Код: Выделить всё
*********************
Sub BalaramToCyrillicUnicode
Dim balaram(5) As String, cyrillic(5) As String
Dim n as long
Dim oDoc as object, oReplace as object
balaram() = Array(» eva», «ñ», «ä», «é», «ü», «å», «è», «ÿ», «ì», «ï», «ö», «ò», «ë», «ç», «ù», «à», «Ä», «É», «Ü», «Å», «È», «Ì», «Ï», «Ö», «Ò», «Ë», «Ç», «Ñ», «Ù», «a», «b», «c», «d», «e», » e», «g», «h», «i», «j», «k», «l», «m», «n», «o», «p», «r», «s», «t», «u», «v», «y», «A», «B», «C», «D», «E», » E», «G», «H», «I», «J», «K», «L», «M», «N», «O», «P», «R», «S», «T», «U», «V», «Y»)
cyrillic() = Array(» эва», «ш», «ā», «ӣ», «ӯ», «р̣», «р̣̄», «л̣», «н̇», «н̃», «т̣», «д̣», «н̣», «ш́», «х̣», «м̇», «Ā», «Ӣ», «Ӯ», «Р̣», «Р̣̄», «Н̇», «Н̃», «Т̣», «Д̣», «Н̣», «Ш́», «Ш», «Х̣», «а», «б», «ч», «д», «е», «э», «г», «х», «и», «дж», «к», «л», «м», «н», «о», «п», «р», «с», «т», «у», «в», «й», «А», «Б», «Ч», «Д», «Е», » Э», «Г», «Х», «И», «Дж», «К», «Л», «М», «Н», «О», «П», «Р», «С», «Т», «У», «В», «Й»)
oReplace = ThisComponent.createReplaceDescriptor()
For n = LBound(balaram()) To UBound(cyrillic())
oReplace.SearchCaseSensitive = True
oReplace.SearchString = balaram(n)
oReplace.ReplaceString = cyrillic(n)
ThisComponent.ReplaceAll(oReplace)
Next n
End Sub
***********************
2) Из юникода в Баларам:
Код: Выделить всё
Sub UnicodeToBalaram
Dim Balaram(5) As String, IAST(5) As String
Dim n as long
Dim oDoc as object, oReplace as object
IAST() = Array(«ā», «ī», «ū», «ṛ», «ṝ», «ḷ», «ṅ», «ñ», «ṭ», «ḍ», «ṇ», «ś», «ḥ», «ṁ», «Ā», «Ī», «Ū», «Ṛ», «Ṝ», «Ṅ», «Ñ», «Ṭ», «Ḍ», «Ṇ», «Ś», «Ṣ», «Ḥ», «ṃ»)
Balaram() = Array(«ä», «é», «ü», «å», «è», «ÿ», «ì», «ï», «ö», «ò», «ë», «ç», «ù», «à», «Ä», «É», «Ü», «Å», «È», «Ì», «Ï», «Ö», «Ò», «Ë», «Ç», «Ñ», «Ù», «à»)
oReplace = ThisComponent.createReplaceDescriptor()
For n = LBound(IAST()) To UBound(Balaram())
oReplace.SearchCaseSensitive = True
oReplace.SearchString = IAST(n)
oReplace.ReplaceString = Balaram(n)
ThisComponent.ReplaceAll(oReplace)
Next n
IAST() = Array(«ṣ»)
Balaram() = Array(«ñ»)
oReplace = ThisComponent.createReplaceDescriptor()
For n = LBound(IAST()) To UBound(Balaram())
oReplace.SearchCaseSensitive = True
oReplace.SearchString = IAST(n)
oReplace.ReplaceString = Balaram(n)
ThisComponent.ReplaceAll(oReplace)
Next n
End Sub
***********************
3) Из Баларама в юникод:
Код: Выделить всё
Sub BalaramToUnicode
Dim Balaram(5) As String, IAST(5) As String
Dim n as long
Dim oDoc as object, oReplace as object
Balaram() = Array(«ñ», «ä», «é», «ü», «å», «è», «ÿ», «ì», «ï», «ö», «ò», «ë», «ç», «ù», «à», «Ä», «É», «Ü», «Å», «È», «Ì», «Ï», «Ö», «Ò», «Ë», «Ç», «Ñ», «Ù»)
IAST() = Array(«ṣ», «ā», «ī», «ū», «ṛ», «ṝ», «ḷ», «ṅ», «ñ», «ṭ», «ḍ», «ṇ», «ś», «ḥ», «ṁ», «Ā», «Ī», «Ū», «Ṛ», «Ṝ», «Ṅ», «Ñ», «Ṭ», «Ḍ», «Ṇ», «Ś», «Ṣ», «Ḥ»)
oReplace = ThisComponent.createReplaceDescriptor()
For n = LBound(Balaram()) To UBound(IAST())
oReplace.SearchCaseSensitive = True
oReplace.SearchString = Balaram(n)
oReplace.ReplaceString = IAST(n)
ThisComponent.ReplaceAll(oReplace)
Next n
Balaram() = Array(«jṣ», «Jṣ», «ṣj», «cṣ», «ṣc», «haṣā», «laṣā», «JṢ», «ṢJ», «CṢ», «ṢC», «osāṣi», «muṣi», «pāṣā», «tuṣi», «jhañ»)
IAST() = Array(«jñ», «Jñ», «ñj», «cñ», «ñc», «hañā», «lañā», «JÑ», «ÑJ», «CÑ», «ÑC», «osāñi», «muñi», «pāñā», «tuñi», «jhaṣ»)
oReplace = ThisComponent.createReplaceDescriptor()
For n = LBound(Balaram()) To UBound(IAST())
oReplace.SearchCaseSensitive = True
oReplace.SearchString = Balaram(n)
oReplace.ReplaceString = IAST(n)
ThisComponent.ReplaceAll(oReplace)
Next n
End Sub