2016-03-18 3 views
0

Ich möchte Translit.net aber auf autohotkey schreiben. So erfolgreich ich mit dem Teil getan, wo ich nur einen Brief:Etwas wie translit.net, aber auf autohotkey

:*:a::а 

:*:b::б 

:*:v::в 

:*:g::г 

:*:d::д 

...

Aber jetzt habe ich ein Problem mit der Übersetzung von „Shh“ auf „щ“ und andere ‚zwei bis eine Char Übersetzung. Wenn ich shh tippe, bekomme ich схх zurück, aber ich will bekommen. Was könnte ich tuen?

Meine aktuelle Idee: Wenn ich eine Taste drücken, sollte es den Buchstaben aufschreiben und nicht übersetzt Brief an ein 3-Element-Array hinzufügen und überprüfen, ob die Array-Elemente ein shh, erstellen ch, sh oder jede andere Kombination größer als eins. Dann könnte ich den letzten 3 oder 2 geschriebenen Buchstaben entfernen und einen russischen Brief schicken, was ich brauche. Vielleicht weiß jemand einen einfacheren Weg, das zu tun. Ich möchte, dass mein Skript genauso funktioniert wie die Seite, die ich gepostet habe. Eine Lösung in C oder C# anstelle von AutoHotkey würde mir auch helfen.

+0

Korrekte Implementierung würde IME implementieren (die scheinen bereits mehr als einmal getan werden - https://www.bing.com/search?q=ime+translit). Wenn Sie es selbst machen wollen, müssen Sie Code zeigen, mit dem Sie Hilfe wollen und genau das Problem, das Sie ansprechen wollen (vor allem da auf Ihrer Beschreibung Sie bereits Code arbeiten - "Was ist besser Ansatz" ist selten OK Frage auf SO außer man beginnt mit wirklich schrecklichen Ansatz, der nicht Ihr Fall zu sein scheint) –

+0

Dies ist der vollständige Code #SingleInstance Kraft // Dieser Teil funktioniert nicht : *: shh :: 0 : *: ja :: я : *: ju :: ю : *: je :: э : *: ch :: ч : *: zh :: ж : *: jo :: ё Dieser Teil der Arbeit, wie ich wollen: *: a :: а : *: b :: á : *: v :: в : *: :: g г : *: :: d д : *: E :: е : *: :: Z з : *: :: i и : *: :: j й : *: :: k к : *: :: l л : *: :: m м : *: :: n н : *: :: o о : *: p :: п : *: r :: р : *: :: s с : *: :: t т : *: :: u ó : *: :: f ф : *: :: h х : *: c: : ö : *: y :: ы : *: ':: ь – MyName

Antwort

1

Ich habe das gleiche Problem, wenn Sie die Unicode-Version von Autohotkey verwenden, aber nur wenn die Datei in UTF-8 ohne BOM-Format gespeichert ist.

Das Speichern der Datei als UNICODE (UCS-2, muss Little Endian sein) löst das Problem.

Es funktioniert auch mit UTF-8 mit BOM, also Autohotkey hat offensichtlich Trubel, der Endianess selbst bestimmt.

+0

Ich denke, Sie missverstehen etwas. Wenn Sie einen ähnlichen Code haben, schreiben Sie ihn bitte. Danke – MyName

+0

@nKlar habe ich nicht. Ich nahm Ihren Code und es funktionierte unter den in der Antwort aufgeführten Bedingungen. Hast du die Antwort verstanden? – 2501