alt + <arrow-key>的unicodes是什么?

时间:2017-03-23 09:15:10

标签: unicode backspace arrow-keys

我正在考虑创建自定义键盘布局。密钥映射到unicode。我经常使用的一种快捷方式是alt + <arrow>alt + <backspace>。如何使用unicode获得相同的效果?

2 个答案:

答案 0 :(得分:2)

你做不到。 Unicode是描述字符而非键的标准。 F1键甚至没有Unicode代码点,更不用说组合了。

答案 1 :(得分:1)

  

键被映射到unicode。

这种说法是不真实的。密钥映射到 scancodes 。任何到字符集的映射都由OS执行,并且并非所有键或键组合都必须映射到字符。操作系统可以进一步将密钥代码抽象为虚拟密钥代码,以便处理各种键盘布局和特殊密钥。

扫描码是8位值,扩展键产生一个代码对 - 第一个为零(NUL),表示第二个代码跟随,因此允许510个不同的代码。

请注意,扫描码通常适用于特定键,而不是生成的字符。对于“字符”键,shift,alt,ctrl等(它们有自己独特的扫描码)不会修改扫描码,所以“扩展”键如功能键,它们可以作为修饰符。

通常,您不会在扫描码级别访问键盘,而是使用操作系统的键盘服务来确定键状态或字符映射。例如,仅通过扫描码就无法区分Nn - 必须考虑左移,右移,alt-gr和当前大写锁定切换状态的关键状态。扫描码访问主要供键盘驱动程序处理。

更高级别的键盘访问是特定于操作系统的。例如,在Windows中,键盘访问有extensive API and framework。在这种情况下感兴趣的可能是toUnicode()toUnicodeEx()函数将虚拟键代码映射到Unicode(存在这样的翻译)。但是,Alt + AFAIK没有翻译,在GUI消息循环中,您将收到WM_SYSKEYDOWN消息,其中包含VK_UPVK_DOWNVK_LEFTVK_RIGHT参数。实际上,您会收到其他消息,但是WM_SYSKEYDOWN专门针对Alt +序列发布,因此您无需单独处理和维护Alt键WM_KEYDOWN / WM_KEYUP的状态。