FR0*_*73N 3 autohotkey special-characters
因为有时,我需要使用键盘上不存在的特殊字符将文本翻译成不同的语言,例如\xc4\xb1, \xc5\x9f, \xc3\xb1, \xc4\x9f。
我创建了一个脚本,将->AutoHotKey的组合转换为,以与其他字符相同的方式。^ + ^ + s\xc5\x9f
该脚本工作正常,但仅当第一个字符之前的字符^是空格或第一个字母时才有效。例如,当输入ma^^n<- 时,这不会改变我的角色,而^^n<- 会改变它。
这是脚本,我在创建脚本时指定我只学习了这种语言:
\n\n:*c:^^S::\nSendUnicodeChar(0x015E)\nReturn\n\n:*c:^^s::\nSendUnicodeChar(0x015F)\nReturn\n\n:*c:^^i::\nSendUnicodeChar(0x131)\nReturn\n\n:*c:^^I::\nSendUnicodeChar(0x130)\nReturn\n\n:*c:^^g::\nSendUnicodeChar(0x011F)\nReturn\n\n:*c:^^G::\nSendUnicodeChar(0x011E)\nReturn\n\n:*c:^^n::\nSendUnicodeChar(0x00F1)\nReturn\n\n:*c:^^N::\nSendUnicodeChar(0x00D1)\nReturn\n\n:*c:^^c::\nSendUnicodeChar(0x00E7)\nReturn\n\n:*c:^^C::\nSendUnicodeChar(0x00C7)\nReturn\n\n; Find the corresponding letter from the unicode\n; and send the input back\nSendUnicodeChar(charCode)\n{\n VarSetCapacity(ki, 28 * 2, 0)\n EncodeInteger(&ki + 0, 1)\n EncodeInteger(&ki + 6, charCode)\n EncodeInteger(&ki + 8, 4)\n EncodeInteger(&ki +28, 1)\n EncodeInteger(&ki +34, charCode)\n EncodeInteger(&ki +36, 4|2)\n\n DllCall("SendInput", "UInt", 2, "UInt", &ki, "Int", 28)\n}\n\nEncodeInteger(ref, val)\n{\n DllCall("ntdll\\RtlFillMemoryUlong", "Uint", ref, "Uint", 4, "Uint", val)\n} \nRun Code Online (Sandbox Code Playgroud)\n
?(问号):热字串即使在另一个单词内部也会被触发;也就是说,当紧邻其之前键入的字符是字母数字时。例如,如果 :?:al::airline 是热字符串,则输入“practical”将产生“practicairline”。使用 ?0 关闭此选项。
因此,您的热字符串应该如下所示:
:?*c:^^S::
SendUnicodeChar(0x015E)
Return
Run Code Online (Sandbox Code Playgroud)
您可能还想全局设置选项,这样您就不必将它们单独应用于每个热字符串:
#Hotstring ?*c
::^^S::
SendUnicodeChar(0x015E)
Return
::^^s::
SendUnicodeChar(0x015F)
Return
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1363 次 |
| 最近记录: |