Macos Mac Catalyst无法捕获。按开始覆盖的命令键修改器

Macos Mac Catalyst无法捕获。按开始覆盖的命令键修改器,macos,command,key,catalyst,modifier,Macos,Command,Key,Catalyst,Modifier,我正在为iOS(以及通过Mac Catalyst的MacOS)开发一个远程桌面控制应用程序,当应用程序位于前台时,该应用程序必须能够捕获设备上的所有键盘输入,包括Cmd键(相当于非Mac键盘上的Super/Start键),以便将其发送到远程桌面 我还没有尝试查看带有外部键盘的iOS设备是否可以看到.command key修改器,但当我启用Mac Catalyst支持并在Mac上安装应用程序并向AppDelegate添加以下方法时: override func pressesBegan(_

我正在为iOS(以及通过Mac Catalyst的MacOS)开发一个远程桌面控制应用程序,当应用程序位于前台时,该应用程序必须能够捕获设备上的所有键盘输入,包括Cmd键(相当于非Mac键盘上的Super/Start键),以便将其发送到远程桌面

我还没有尝试查看带有外部键盘的iOS设备是否可以看到.command key修改器,但当我启用Mac Catalyst支持并在Mac上安装应用程序并向AppDelegate添加以下方法时:

    override func pressesBegan(_ presses: Set<UIPress>,
                           with event: UIPressesEvent?) {
    super.pressesBegan(presses, with: event)
    print(presses.first?.key, presses.first?.key?.modifierFlags)
}
override func pressesEnded(_ presses: Set<UIPress>,
                           with event: UIPressesEvent?) {
    super.pressesEnded(presses, with: event)
    print(presses.first?.key, presses.first?.key?.modifierFlags)
}
override func pressesCancelled(_ presses: Set<UIPress>,
                               with event: UIPressesEvent?) {
    super.pressesCancelled(presses, with: event)
    print(presses.first?.key, presses.first?.key?.modifierFlags)
}
我也尝试过将应用程序置于全屏模式,但没有效果

关于如何捕获.command修饰符还有其他建议吗

接下来,我将尝试通过AppKit包捕获输入,但这并不理想


多谢各位

希望您已经有了答案,但万一没有: 您需要使用如下代码检查压力机

override func pressesBegan(_ presses: Set<UIPress>, with event: UIPressesEvent?) {

    var didHandleEvent : Bool = true
    print("presses began \(presses.count)")
    for press in presses {
        guard let key = press.key else { continue }

        if key.modifierFlags.contains(.command) {
            commandDown = true
            print("commandDown")
        }
     ...
override func PressesBegined(uPress:Set,事件:UIPresseEvent?){
var didHandleEvent:Bool=true
打印(“印刷开始\(印刷次数.计数)”)
用于印刷机中的印刷{
guard let key=press.key else{continue}
如果key.modifierFlags.contains(.command){
commandDown=true
打印(“命令关闭”)
}
...
如果您希望系统在处理代码的同时还处理按键,那么您也应该只调用super.pressesStart。在您的情况下,我怀疑您不希望系统执行此操作,因此请跟踪您已处理的按键,只有在未处理的情况下,您才会调用super。 您可能还希望将视图控制器设置为
。becomeFirstResponder()

(假设您使用的是UIVIewController)

希望您已经有了答案,但万一没有: 您需要使用如下代码检查压力机

override func pressesBegan(_ presses: Set<UIPress>, with event: UIPressesEvent?) {

    var didHandleEvent : Bool = true
    print("presses began \(presses.count)")
    for press in presses {
        guard let key = press.key else { continue }

        if key.modifierFlags.contains(.command) {
            commandDown = true
            print("commandDown")
        }
     ...
override func PressesBegined(uPress:Set,事件:UIPresseEvent?){
var didHandleEvent:Bool=true
打印(“印刷开始\(印刷次数.计数)”)
用于印刷机中的印刷{
guard let key=press.key else{continue}
如果key.modifierFlags.contains(.command){
commandDown=true
打印(“命令关闭”)
}
...
如果您希望系统在处理代码的同时还处理按键,那么您也应该只调用super.pressesStart。在您的情况下,我怀疑您不希望系统执行此操作,因此请跟踪您已处理的按键,只有在未处理的情况下,您才会调用super。 您可能还希望将视图控制器设置为
。becomeFirstResponder()
(假设您使用的是UIVIewController)