2016-03-18 7 views
0

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

:*:a::а 

:*:b::б 

:*:v::в 

:*:g::г 

:*:d::д 

...

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

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

+0

Надлежащая реализация реализовала бы IME (который, кажется, уже выполняется более одного раза - https://www.bing.com/search?q=ime+translit). Если вы хотите сделать это сами, вам нужно показать код, с которым вы хотите получить помощь, и точную проблему, которую вы пытаетесь решить (особенно, поскольку на основе вашего описания у вас уже есть код, который работает - «что лучше подходит» редко бывает вопросом о SO, если один начинается с действительно ужасного подхода, который, кажется, не ваш случай) –

+0

Это полный код #SingleInstance force // Эта часть не работает : *: shh :: щ : *: ja :: я : *: дзю :: ю: *: JE :: э : *: ч :: ч : *: ж :: ж : *: джо :: ё Эта часть работы, как я хочу : *: a :: а : *: b :: б : *: v :: в: *: г :: г : *: д :: д : *: е е :: : *: г :: з : *: я :: и : *: J :: й : *: K :: к : *: л :: л : *: м :: м : *: н :: н : *: о :: о : *: р :: п : *: г :: р : *: s :: с : *: т :: т : *: и у :: : *: F :: ф : *: ч :: х : *: C: : ц : *: y :: ы : *: ':: ь – MyName

ответ

1

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

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

Он также работает с UTF-8 с спецификацией, поэтому, очевидно, autohotkey имеет truble, определяющий endianness самостоятельно.

+0

Я думаю, вы что-то неправильно поняли. Если у вас есть рабочий код, напишите его. Спасибо – MyName

+0

@nKlar Я этого не сделал. Я взял ваш код, и он работал в этих условиях, указанных в ответе. Вы поняли ответ? – 2501