在Swift中,Cocoa框架中是否有一个函数来处理印刷机,以便您可以注册哪个键盘键被击中?
我想获得转义键
更新: 我刚刚发现噪音已经消失了 super.keyDown(with:event) 这个东西不需要工作 为什么你加上那条线?
答案 0 :(得分:1)
创建NSWindow
的子类并实现keyDown
事件:
import Cocoa
import Carbon.HIToolbox
class CustomWindow: NSWindow {
override func keyDown(with event: NSEvent) {
switch Int(event.keyCode) {
case kVK_Escape:
print("Esc pressed")
default:
break
}
super.keyDown(with: event)
}
}
这一行:
import Carbon.HIToolbox
允许您为键使用方便的常量,例如kVK_Escape
。
在Interface Builder中将此类设置为主窗口类,您可以全部设置:
P.S。要在NSViewController
中执行相同的格式viewDidLoad
:
NSEvent.addLocalMonitorForEvents(matching: .keyDown) {
self.keyDown(with: $0)
return $0
}
P.P.S。静音" bang"声音,请不要在Escape键按下时调用super - 将超级调用移至默认值:
default:
super.keyDown(with: event)
修改强>
如果您在Escape键按下时不想要任何声音,则应使用以下方法:
创建一个NSView
子类并将其设置为视图控制器的主视图:
import Cocoa
import Carbon.HIToolbox
class CustomView: NSView {
override func performKeyEquivalent(with event: NSEvent) -> Bool {
switch Int(event.keyCode) {
case kVK_Escape:
print("Esc pressed")
return true
default:
return super.performKeyEquivalent(with: event)
}
}
}