Я доделал Яро-раскладку под офтопик на базе AutoHotkey, и она вроде работает. Теперь хочу такую же под Linux. У меня какой-то из довольно новых дебианов с Lxde, раскладка должна органично вписаться в эту среду, ну и вообще, быть совместимой.
Вот веб-версия: http://программирование-по-русски.рф/яроклава-js.яргт
Вот текущая версия для AutoHotkey (Win only).
;;;; Этот файл должен быть в кодировке utf-8 с BOM.
;;;; Яро-раскладка
;;;; Общая идея такова:
;;;; Пробел становится модификатором, который
;;;; позволяет, не выходя из русской раскладки набивать латиницу и некоторые спец.значки
;;;; При этом оставлен только один способ набивать
;;;; знаки препинания .,:;/\, это позволяет меньше путаться.
;;;;
;;;; Проверено на AutoHotkey v1.1.29.01 (Unicode 64-bit),
;;;; под Windows 10.
;;;;
;;;; https://bitbucket.org/budden/iaroklava-js
;;;; http://программирование-по-русски/яроклава-js.яргт
;;;;
;;;; (C) Денис Будяк 2018, budden73@mail.ru
;;;; Код распространяется по лицензии MIT
;;;;
;;;; Установка: инсталлируйте программу AutoHotkey
;;;; скопируйте этот файл в свою папку "документы"
;;;; и запустите AutoHotkey.
#UseHook, On
; $vk41:: Print("{vk41}","{U+263C}") ; Space+A -> Sun
;;; Нижеследующий фрагмент генерируется так:
;;; - откройте пример.html в браузере
;;; - откройте консоль (F12)
;;; - вызовите ГенерируйКодДляAutoHotKey()
$vkc0:: Нажато("{vkc0}","~")
$+vkc0:: Нажато("+{vkc0}","`")
$vk31:: Нажато("{vk31}","☼")
$+vk31:: Нажато("+{vk31}","≠")
$vk32:: Нажато("{vk32}","@")
$+vk32:: Нажато("+{vk32}","@")
$vk33:: Нажато("{vk33}","#")
$+vk33:: Нажато("+{vk33}","§")
$vk34:: Нажато("{vk34}","$")
$+vk34:: Нажато("+{vk34}","†")
$vk35:: Нажато("{vk35}","°")
$+vk35:: Нажато("+{vk35}","<НЕТ>")
$vk36:: Нажато("{vk36}","^")
$+vk36:: Нажато("+{vk36}","☭")
$vk37:: Нажато("{vk37}","&")
$+vk37:: Нажато("+{vk37}","¿")
$vk38:: Нажато("{vk38}","<НЕТ>")
$+vk38:: Нажато("+{vk38}","<НЕТ>")
$vk39:: Нажато("{vk39}","<НЕТ>")
$+vk39:: Нажато("+{vk39}","<НЕТ>")
$vk30:: Нажато("{vk30}","<НЕТ>")
$+vk30:: Нажато("+{vk30}","<НЕТ>")
$vkbd:: Нажато("{vkbd}","<НЕТ>")
$+vkbd:: Нажато("+{vkbd}","<НЕТ>")
$vkbb:: Нажато("{vkbb}","≈")
$+vkbb:: Нажато("+{vkbb}","≡")
$vk51:: Нажато("{vk51}","q")
$+vk51:: Нажато("+{vk51}","Q")
$vk57:: Нажато("{vk57}","w")
$+vk57:: Нажато("+{vk57}","W")
$vk45:: Нажато("{vk45}","e")
$+vk45:: Нажато("+{vk45}","E")
$vk52:: Нажато("{vk52}","r")
$+vk52:: Нажато("+{vk52}","R")
$vk54:: Нажато("{vk54}","t")
$+vk54:: Нажато("+{vk54}","T")
$vk59:: Нажато("{vk59}","y")
$+vk59:: Нажато("+{vk59}","Y")
$vk55:: Нажато("{vk55}","u")
$+vk55:: Нажато("+{vk55}","U")
$vk49:: Нажато("{vk49}","i")
$+vk49:: Нажато("+{vk49}","I")
$vk4f:: Нажато("{vk4f}","o")
$+vk4f:: Нажато("+{vk4f}","O")
$vk50:: Нажато("{vk50}","p")
$+vk50:: Нажато("+{vk50}","P")
$vkdb:: Нажато("{vkdb}","[")
$+vkdb:: Нажато("+{vkdb}","{{}")
$vkdd:: Нажато("{vkdd}","]")
$+vkdd:: Нажато("+{vkdd}","{}}")
$vkdc:: Нажато("{vkdc}","|")
$+vkdc:: Нажато("+{vkdc}","<НЕТ>")
$vk41:: Нажато("{vk41}","a")
$+vk41:: Нажато("+{vk41}","A")
$vk53:: Нажато("{vk53}","s")
$+vk53:: Нажато("+{vk53}","S")
$vk44:: Нажато("{vk44}","d")
$+vk44:: Нажато("+{vk44}","D")
$vk46:: Нажато("{vk46}","f")
$+vk46:: Нажато("+{vk46}","F")
$vk47:: Нажато("{vk47}","g")
$+vk47:: Нажато("+{vk47}","G")
$vk48:: Нажато("{vk48}","h")
$+vk48:: Нажато("+{vk48}","H")
$vk4a:: Нажато("{vk4a}","j")
$+vk4a:: Нажато("+{vk4a}","J")
$vk4b:: Нажато("{vk4b}","k")
$+vk4b:: Нажато("+{vk4b}","K")
$vk4c:: Нажато("{vk4c}","l")
$+vk4c:: Нажато("+{vk4c}","L")
$vkba:: Нажато("{vkba}","<НЕТ>")
$+vkba:: Нажато("+{vkba}","<НЕТ>")
$vkde:: Нажато("{vkde}","'")
$+vkde:: Нажато("+{vkde}","<НЕТ>")
$vk5a:: Нажато("{vk5a}","z")
$+vk5a:: Нажато("+{vk5a}","Z")
$vk58:: Нажато("{vk58}","x")
$+vk58:: Нажато("+{vk58}","X")
$vk43:: Нажато("{vk43}","c")
$+vk43:: Нажато("+{vk43}","C")
$vk56:: Нажато("{vk56}","v")
$+vk56:: Нажато("+{vk56}","V")
$vk42:: Нажато("{vk42}","b")
$+vk42:: Нажато("+{vk42}","B")
$vk4e:: Нажато("{vk4e}","n")
$+vk4e:: Нажато("+{vk4e}","N")
$vk4d:: Нажато("{vk4d}","m")
$+vk4d:: Нажато("+{vk4d}","M")
$vkbc:: Нажато("{vkbc}","<")
$+vkbc:: Нажато("+{vkbc}","«")
$vkbe:: Нажато("{vkbe}",">")
$+vkbe:: Нажато("+{vkbe}","»")
;;; !!!! ИЗМЕНЕНО ВРУЧНУЮ, СМ. НИЖЕ! $vkbf:: Нажато("{vkbf}","<НЕТ>")
$+vkbf:: Нажато("+{vkbf}","♥")
;;; Конец сгенерированного фрагмента
;; дублируем пробел, как "пробел+буква справа от ю"
$vkbf:: Нажато("{vkbf}"," ")
ПробелУдерживается := 0
ДругаяКнопкаБылаНажатаВоВремяУдержанияПробелаЛи := 0
$Space::
; Critical
ПробелУдерживается := 1
ДругаяКнопкаБылаНажатаВоВремяУдержанияПробелаЛи := 0
; Critical off
Return
$+Space::
; Critical
ПробелУдерживается := 1
ДругаяКнопкаБылаНажатаВоВремяУдержанияПробелаЛи := 0
; Critical off
Return
$Space Up::
; Critical
if (ДругаяКнопкаБылаНажатаВоВремяУдержанияПробелаЛи == 0) {
; Critical off
Send, {Space}
}
ПробелУдерживается := 0
ДругаяКнопкаБылаНажатаВоВремяУдержанияПробелаЛи := 0
; Critical off
Return
$+Space Up::
; Critical
if (ДругаяКнопкаБылаНажатаВоВремяУдержанияПробелаЛи == 0) {
; Critical off
Send, +{Space}
}
ПробелУдерживается := 0
ДругаяКнопкаБылаНажатаВоВремяУдержанияПробелаЛи := 0
; Critical off
Return
Нажато(vk,s)
{
Global
if (ПробелУдерживается == 1) {
ДругаяКнопкаБылаНажатаВоВремяУдержанияПробелаЛи := 1
; Critical off
SendInput, %s%
} Else {
; Critical off
SendEvent, %vk%
}
}
Теперь попробую воспроизвести под Linux
P.S. для тех, кто нагуглит эту тему подвожу итог: решение находится здесь (но, возможно, переедет на gitlab или github в связи с нестабильностью bitbucket): https://bitbucket.org/budden/iaroklava-js/src/master/linux/Яроклава-для-debia...