【发布时间】:2016-07-05 13:50:46
【问题描述】:
我想写Translit.net,但要使用自动热键。所以我成功地完成了我只有一封信的部分:
:*:a::а
:*:b::б
:*:v::в
:*:g::г
:*:d::д
...
但现在我在将“shh”翻译成“щ”和其他“二对一”字符翻译时遇到了问题。当我开始输入 shh 时,我得到了 схх,但我想得到 щ。我能做什么?
我目前的想法:当我按下一个键时,它应该写下字母并将未翻译的字母添加到 3 元素数组中,并检查数组元素是否创建 shh ,ch、sh 或任何其他大于一的组合。然后我可以删除最后 3 或 2 个键入的字母并发送我需要的俄文字母。也许有人知道一种更简单的方法来做到这一点。我希望我的脚本能够像我发布的那个页面一样工作。用 C 或 C# 代替 AutoHotkey 的解决方案也会对我有所帮助。
【问题讨论】:
-
正确的实现将实现 IME(这似乎已经完成了不止一次 - bing.com/search?q=ime+translit)。如果你想自己做,你需要显示你想要帮助的代码和你试图解决的确切问题(特别是因为根据你的描述你已经有代码工作了——“什么是更好的方法”在 SO 上很少是好的问题,除非一个从非常糟糕的方法开始,这似乎不是你的情况)
-
这是完整代码 #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::т :*:u::у :*:f::ф :*:h::х :*:c::ц :*:y::ы :*:'::ь
标签: c# c autohotkey transliteration