我正在阅读在NSTextField中键入的键盘快捷键。
当我按下例如shift + Option + F2时,此方法
class func convertToString(event:NSEvent) -> String {
var shortcut = ""
let intersection = event.modifierFlags.intersection(.deviceIndependentFlagsMask)
if intersection.contains(.control) {
shortcut.append("^ ")
}
if intersection.contains(.option) {
shortcut.append("⌥ ")
}
if intersection.contains(.command) {
shortcut.append("⌘ ")
}
if intersection.contains(.shift) {
shortcut.append("⇧ ")
}
if intersection.contains(.function) {
shortcut.append("fn ")
}
let character = keysCodesToCharacters[event.keyCode]!
shortcut.append(character)
return shortcut
}
对于
评估为true如果intersection.contains(.function)
从理论上讲,这会测试功能键,但最奇怪的是event.keycode
的出现是120
,它对应于F2
。
因此,我完全不需要进行此测试即可测试功能键F1至F12。
最大的问题是:.function
的目的是什么。这是什么测试?
我想到了Mac键盘上的fn
键,但是这些键是无法检测到的,当我按F1到F12中的任何键时,此方法为我提供了该键的键代码以及此功能为true。>
这是什么意思:例如,当我按下F2时,会收到event.keycode
,这意味着按下F2时还收到functionKey
(63)为真吗?为什么要冗余?
答案 0 :(得分:2)
Apple的文档已不再是以前的文档。
如果文档没有帮助,请检查标题。从NSEvents.h复制:
NSEventModifierFlagFunction = 1 << 23, // Set if any function key is pressed.
NSEventModifierFlagFunction
是NSFunctionKeyMask
,文档:
NSFunctionKeyMask
设置是否按下任何功能键。功能键包括大多数键盘顶部的F键(F1,F2等)和大多数键盘中央的导航键(帮助,前进删除,首页,结束,上一页,下一页和箭头键)。
显然,当按下fn键时,.function
标志也会被设置(在我的Apple键盘上,我的Logitech键盘在内部处理fn键)。