2

在我的应用程序中,我需要将快捷键映射到键盘上“1”键左侧的键。在标准美式键盘上,这将是反引号字符(“`”),即键码 50。不幸的是,国际键盘(例如法语键盘)在 1 键的左侧有一个不同的键(正斜杠键“/”),因此对键代码进行硬编码会导致不使用美式键盘的用户出现意外结果。

有没有办法在运行时将美国键码转换为国际键盘的键码,或者根据键盘上键的位置以编程方式确定键码?

4

1 回答 1

3

“ 1”左边的键位字符在不同的键盘布局上是不同的,但虚拟键码应该是相同的。如果您查看HIToolbox/Events.h,您可以看到常量kVK_ANSI_Grave,它代表您正在谈论的键;在常量列表上方,有一条注释表明在虚拟键代码级别,相等意味着物理键是相同的,尽管扫描代码可能不同并且发出的字母可能不同。

换句话说:键盘驱动程序从扫描码映射到虚拟键码,键盘布局(您可以在系统偏好设置中更改)从虚拟键码映射到字符。

这一切都可能是错误的。我没有用于验证这些断言的非美国键盘。

于 2011-03-14T04:36:47.643 回答