我想检测Mac键盘上实际按下的键在哪里。查看键控代码会告诉我字符等,但不会告诉我位置,它随语言/键盘布局的不同而不同。我需要类似行索引的键。
我可以使用以下代码查看键盘布局语言:
TISInputSourceRef source = TISCopyCurrentKeyboardInputSource();
NSLog(@"localized name: %@", TISGetInputSourceProperty(source, kTISPropertyLocalizedName));
通过构建每种语言的键控代码位置字典,可以从中映射位置,但是要覆盖大多数键盘可能需要做很多工作。
有捷径的想法吗?
最佳答案
您对键码不正确。在OS X上,虚拟键代码对应于键位置。它不指示键盘布局将生成哪个字符。
例如,键代码0为kVK_ANSI_A
。这意味着不是产生“ A”字符的密钥。这意味着该键位于ANSI标准键盘上的“ A”键上。它是字母键中间行中最左边的键。
如果在没有修饰符的情况下通过法语键盘布局翻译了键代码0,则会生成“ q”字符。
关于objective-c - 将OS X key 代码转换为 key 位置? (与系统键盘语言/布局无关),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24976294/