我一直在尝试找到一种方法来重新映射我的键盘并发送 5 位十六进制 unicode 字符,此处描述的方法:ahk Send仅支持 4 位十六进制代码 {U+nnnn},我知道在过去,autohotkey 本身不支持 unicode,因此需要一些功能才能做到这一点,也许这就是我的解决方案。
例子:
#If GetKeyState("CapsLock","T")
+u::Send {U+1D4B0}
结果是 풰 而不是 𝒰,풰 的代码是 {U+D4B0},这意味着 AHK 只读取最后 4 位数字。即使我需要创建新功能来实现它,我该如何修复它?
谢谢
-标记
最佳答案
大于 0xFFFF 的 Unicode 值必须编码为两个代理对:
+u:: SendInput ,{U+D835}{U+DCB0}
这是将 0x10000 到 0x10FFFF 范围内的 Unicode 代码点 转换为代理项对的算法,转述自 wikipedia :
首先从代码点中减去 0x10000,得到一个在 0xFFFFF 范围内的数字。
然后将数右移10位并加上0xD800得到高位代理。
取数的最低十位并向其添加0xDC00以获得低代理项
关于windows - Autohotkey:发送 5 位十六进制 unicode 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36563635/