在哪里可以找到 Mac 虚拟按键代码列表?
我正在使用 CGEventCreateKeyboardEvent
并且需要知道要使用什么 CGKeyCode
值。
具体来说,我正在寻找 Command 键的键代码。文档给出了其他键的示例:z 是 6
,shift 是 56
。
某处一定有 Mac 虚拟键码列表?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
下面是供快速参考的常用关键代码列表,取自
Events.h
。如果您需要在应用程序中使用这些键码,您应该包含 Carbon 框架:
Objective-C:
#include
Swift:
import Carbon.HIToolbox
然后您可以直接使用
kVK_ANSI_A
常量。警告
键常量引用键盘上的物理键。如果打字员使用不同的键盘布局,它们的输出就会改变。常量中的字母仅对应于美国 QWERTY 键盘布局。
例如,主行上的左手无名指键:
QWERTY键盘布局
> s>kVK_ANSI_S
> >“s”
德沃夏克键盘布局
> o > >kVK_ANSI_S
> >"o"
此处讨论与布局无关的键码到字符串转换的策略,反之亦然:
如何将 ASCII 字符转换为 CGKeyCode?
来自
Events.h
:Macintosh Toolbox Essentials 在
图 2-10 中说明了 Apple 扩展键盘 II 的这些虚拟键代码的物理位置
:Below is a list of the common key codes for quick reference, taken from
Events.h
.If you need to use these keycodes in an application, you should include the Carbon framework:
Objective-C:
#include <Carbon/Carbon.h>
Swift:
import Carbon.HIToolbox
You can then use the
kVK_ANSI_A
constants directly.WARNING
The key constants reference physical keys on the keyboard. Their output changes if the typist is using a different keyboard layout. The letters in the constants correspond only to the U.S. QWERTY keyboard layout.
For example, the left ring-finger key on the homerow:
QWERTY keyboard layout
> s >kVK_ANSI_S
>"s"
Dvorak keyboard layout
> o >kVK_ANSI_S
>"o"
Strategies for layout-agnostic conversion of keycode to string, and vice versa, are discussed here:
How to convert ASCII character to CGKeyCode?
From
Events.h
:Macintosh Toolbox Essentials illustrates the physical locations of these virtual key codes for the Apple Extended Keyboard II in
Figure 2-10
:更规范的参考位于
中:在较新版本的 MacOS 中,“Events.h”移至此处:
The more canonical reference is in
<HIToolbox/Events.h>
:In newer Versions of MacOS the "Events.h" moved to here:
在此处找到答案 。
所以:
Found an answer here.
So:
这是所有的键码。
http://web.archive.org /web/20100501161453/http://www.classicteck.com/rbarticles/mackeyboard.php
或者,Mac App Store 中有一个名为“Key Codes”的应用程序。下载它以查看您按下的按键的键码。
关键代码:
https://itunes.apple.com/tr /app/key-codes/id414568915?l=tr&mt=12
Here are the all keycodes.
http://web.archive.org/web/20100501161453/http://www.classicteck.com/rbarticles/mackeyboard.php
Or, there is an app in the Mac App Store named "Key Codes". Download it to see the keycodes of the keys you press.
Key Codes:
https://itunes.apple.com/tr/app/key-codes/id414568915?l=tr&mt=12
我在研究文章时发现了这篇精彩的LibOS。
PS:Mac的虚拟键码最差
I found this wonderful article while doing the research for LibOS.
P.S: Mac's virtual key codes are the worst
除了其他答案中提供的键码之外,macOS Sierra 中引入的较新 API 中还有用于键重新映射的“使用 ID”:
In addition to the keycodes supplied in other answers, there are also "usage IDs" used for key remapping in the newer APIs introduced in macOS Sierra:
如果有人想输入 ansi 字符,这里有一些预先构建的 Objective-C 字典:
Here's some prebuilt Objective-C dictionaries if anyone wants to type ansi characters:
macOS 10.12+
自 macOS Sierra 10.12 起,
keyCode
已根据 通用串行总线 HID 使用表(转至第 51 页,10 键盘/小键盘页面)。macOS 10.12+
Since macOS Sierra 10.12,
keyCode
has been according to the Universal Serial Bus HID Usage Tables (go to section: 10 Keyboard/Keypad Page, page 51).