Что-то вроде translit.net, но на автохоткее

Я хочу написать Translit.net, но на автогорячую клавишу. Так что я успешно сделал часть, где у меня есть только одна буква:

:*:a::а

:*:b::б

:*:v::в

:*:g::г

:*:d::д

...

Но теперь у меня проблема с переводом shh в щ и другими переводами «два в один». Когда я начинаю печатать шш, я получаю схх обратно, но я хочу получить щ. Что я мог сделать?

Моя текущая идея: когда я нажимаю клавишу, она должна записывать букву и добавлять непереведенную букву в массив из 3 элементов и проверять, создают ли элементы массива shh ,ch , sh или любая другая комбинация, превышающая единицу. Тогда я мог бы удалить последние 3 или 2 набранные буквы и отправить русское письмо, что мне нужно. Может кто знает более простой способ. Я хочу, чтобы мой скрипт работал точно так же, как на той странице, которую я опубликовал. Мне бы тоже помогло решение на C или C# вместо AutoHotkey.


person MyName    schedule 18.03.2016    source источник
comment
Правильная реализация будет реализовывать IME (что, кажется, уже сделано не раз - bing.com/ search?q=ime+translit). Если вы хотите сделать это самостоятельно, вам нужно показать код, с которым вам нужна помощь, и точную проблему, которую вы пытаетесь решить (тем более, что на основе вашего описания у вас уже есть работающий код - какой подход лучше редко подходит для вопроса SO, если только он не начинается с действительно ужасным подходом, который, похоже, не ваш случай)   -  person Alexei Levenkov    schedule 18.03.2016
comment
Это полный код #SingleInstance force //Эта часть не работает :*:shh::щ :*:ja::я :*:ju::ю :*:je::э :*:ch:: ч :*:zh::ж :*:jo::ё Эта часть работает так, как я хочу :*:a::а :*:b::б :*:v::в :*:g::г : *:d::д :*:e::е :*:z::з :*:i::и :*:j::й :*:k::к :*:l::л :* :m::м :*:n::н :*:o::о :*:p::п :*:r::р :*:s::с :*:t::т :*: и::у :*:f::ф :*:h::х :*:c::ц :*:y::ы :*:'::ь   -  person MyName    schedule 18.03.2016


Ответы (1)


У меня такая же проблема при использовании версии Autohotkey для юникода, но только если файл сохранен в UTF-8 без формата спецификации.

Сохранение файла как UNICODE (UCS-2, должен быть Little Endian) решает проблему.

Он также работает с UTF-8 с BOM, поэтому, по-видимому, у autohotkey есть проблемы с определением порядка следования байтов самостоятельно.

person 2501    schedule 18.03.2016
comment
Я думаю, вы что-то неправильно понимаете. Если у вас есть работающий аналогичный код, пожалуйста, напишите его. Спасибо - person MyName; 18.03.2016
comment
@nKlar Я этого не делал. Я взял ваш код, и он работал при тех условиях, которые указаны в ответе. Вы поняли ответ? - person 2501; 18.03.2016