如何在Swift中检测fn键?

apeeds0o  于 11个月前  发布在  Swift
关注(0)|答案(2)|浏览(107)

我想检测用户何时按下fn键并执行一些任务。我尝试了下面的方法,但不起作用:

if event.keyCode == kVK_Function {
   print("fn key pressed")
}

字符串
我有类似的代码为其他键,如左括号,右括号,斜线,字母,和数字。对于这些键,代码,如上所示,工作正常,但它不工作fn键。我认为这是不同的处理。

ajsxfq5m

ajsxfq5m1#

您需要检查NSEventmodifierFlags

if event.modifierFlags.contains(.function) {
   print("fn key pressed")
}

字符串

2izufjch

2izufjch2#

是的,您可以检测用户何时按下fn键。下面是区分“fn”按下事件和“fn”释放事件的解决方案。

NSEvent.addGlobalMonitorForEvents(matching: .flagsChanged, handler: { [weak self] event in

 if event.keyCode == 63 &&
  event.modifierFlags.intersection(.deviceIndependentFlagsMask).contains(.function) {
  print("fn key pressed")
 }

 if event.keyCode == 63 &&
  event.modifierFlags.intersection(.deviceIndependentFlagsMask) == [] {
  print("fn key released")
 }
}

字符串
通过监视匹配.flagsChanged的事件,您会收到modifier(shift、option、fn等)按键事件的通知。
对键码(63)进行过滤可确保按下的修饰符为Fn。

相关问题