windows - Autohotkey:发送 5 位十六进制 unicode 字符

标签 windows unicode scripting keyboard-shortcuts autohotkey

我一直在尝试找到一种方法来重新映射我的键盘并发送 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/

相关文章:

c# - 通过 Marshal.GetFunctionPointerForDelegate 返回的指针进行调用会导致访问冲突

java - 如何从 Java 中的字符串中删除\u200B(零长度空白 Unicode 字符)?

Vim "paste once"没有更新撤消

c# - 如何在 SQL Server 2000 TEXT 列中存储 C# 字符串中的 UTF-8 字节

python - 使用python3查找表情符号的宽度

ios - 如何自动检查 ipa 的嵌入.mobileprovision 中的字段?

http - 这是什么脚本语言? <%if $(http.request 方法 ='POST' ) >

windows - 使用公钥身份验证为 Windows 设置 OpenSSH

c++ - 在不引用 Windows 上的当前目录的情况下解析相对路径

c++ - 读取互锁变量