objective-c - 将 OS X 键码转换为键位置? (与系统键盘语言/布局无关)

标签 objective-c macos cocoa macos-carbon

我想检测 Mac 键盘上按键的物理位置。查看键码可以告诉我字符等,但不能告诉我位置,位置因语言/键盘布局而异。我需要像键的行索引之类的东西。

我可以使用以下代码查看键盘布局语言:

TISInputSourceRef source = TISCopyCurrentKeyboardInputSource();
NSLog(@"localized name: %@", TISGetInputSourceProperty(source, kTISPropertyLocalizedName));

我可以通过为每种语言构建键码位置字典来映射位置,但这可能需要大量工作来覆盖大多数键盘。

有什么捷径的想法吗?

最佳答案

您对 key 代码的理解不正确。在 OS X 上,虚拟键码对应于键位置。它指示键盘布局将生成哪个字符。

例如, key 代码 0 为 kVK_ANSI_A。这意味着不是它是产生“A”字符的键。这意味着该键的位置与 ANSI 标准键盘上“A”键的位置相同。它是中间一排字母键中最左边的键。

当通过不带修饰符的法语键盘布局翻译键代码 0 时,它会生成“q”字符。

关于objective-c - 将 OS X 键码转换为键位置? (与系统键盘语言/布局无关),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24976294/

相关文章:

ios - 使用 AVCaptureSessionPreset 时如何更改图像质量

ios - 在 SpriteKit 中重置场景

c++ - 使用 CMake 和 C++ 运行 mysql-connector?

c++ - 如何更改当前工作目录?

cocoa - 当用户清空垃圾箱时,如何通知我的 Cocoa 应用程序?

cocoa - 实现类似 Finder 的 TreeView ,并使用 NSOutlineview 延迟加载来表示其节点

objective-c - 在 Swift 中检查 [NSObject : AnyObject]! 是否为 NSNull

objective-c - NSUserDefaultsController 键返回 nil

java - 使用 IntelliJ 设置 Scala

cocoa - NSApp的keyWindow是什么时候创建的?