2つのハイフンが短いダッシュをトリガーし、3つのハイフンが長いダッシュをトリガーするようにしようとしています。お気に入り
:*?:---=::—
:*?:--=::–
働くことを除いて。これが私が得たところです:
:*?:11::
SendLevel 1
Send 2
return
SendLevel 0
:*?:21::3
これは機能します(11は2を生成し、111は3を生成します)
:*?:--::
SendLevel 1
Send –
return
SendLevel 0
:*?:–-::—
これは同じスクリプトですが、「1」は「-」に置き換えられ、「2」は「–」に置き換えられ、「3」は「—」に置き換えられました。「-」は「–」を生成するはずです。 「---」は「—」を生成するはずですが、使用しているバージョン(autohotkey.comのAutoHotKey_L v1.1.09.04)ではUnicodeが完全にサポートされていないため、機能しません。
.ahkテキストファイルは、UTF8ではなくUTF8-BOMエンコーディングで保存する必要がありました
このコメント で指摘されているように、より多くの可視性のための回答として投稿します。
編集:わざわざ私の答えを読む必要はありません。UdoKleinの指示に従ってください。はるかに簡単で、正常に機能します。
最後のオートホットキーバージョンを使用してUnicode文字を送信する方法は? (以前のユニコード互換バージョンが機能する必要はありません)
明確な情報を見つけるのは非常に困難です。したがって、初心者(私のような)に明確にするために:
コードA:
SendUnicodeChar(charCode)
{
VarSetCapacity(ki, 28 * 2, 0)
EncodeInteger(&ki + 0, 1)
EncodeInteger(&ki + 6, charCode)
EncodeInteger(&ki + 8, 4)
EncodeInteger(&ki +28, 1)
EncodeInteger(&ki +34, charCode)
EncodeInteger(&ki +36, 4|2)
DllCall("SendInput", "UInt", 2, "UInt", &ki, "Int", 28)
}
EncodeInteger(ref, val)
{
DllCall("ntdll\RtlFillMemoryUlong", "Uint", ref, "Uint", 4, "Uint", val)}
コードB:
!+^D:: ; when press CTRL+ALT+SHIFT will output "≠"
{
SendUnicodeChar(0x2260)
}
return
(スペースを見てください!)
必要な改善:
どういうわけか、このスクリプトは、このWebサイトで提供されているすべてのUnicodeに対して機能するわけではありません http://unicode-table.com/ ですが、誰かが親切に、一部のUnicodeが機能している理由などを教えてくれるでしょう。そうしないでください、そして多分それをこのウェブサイトのユニコード文字のために動かす方法。たとえばこれは http://unicode-table.com/en/0609/ は機能しません。理由は何ですか?
以下のコードを AutoHotKeyフォーラム からコピーしました:
;IMPORTANT, you must save this script as UTF-8 to make it work.
::!?::
::?!::
PutUni("‽")
Return
::neko::
PutUni("猫")
Return
:?:damn::
PutUni("✩☠#‼")
Return
;Paste UTF8 string (Hex encoded or not) as unicode.
;If you don't use Hex encoding, you must save your script as UTF8
PutUni(DataIn)
{
SavedClip := ClipBoardAll
ClipBoard =
If RegExMatch(DataIn, "^[0-9a-fA-F]+$")
{
Loop % StrLen(DataIn) / 2
UTF8Code .= Chr("0x" . SubStr(DataIn, A_Index * 2 - 1, 2))
}
Else
UTF8Code := DataIn
Transform, ClipBoard, Unicode, %UTF8Code%
Send ^v
Sleep 100 ;Generous, less wait or none will often work.
ClipBoard := SavedClip
Return
}
PutUni
関数は、目的の入力を目的のUnicode出力に「変換」します。