在Swift中实现按键

问题描述 投票:0回答:1

我正在编写一个应用程序,它将使用您的手机作为触摸板,并通过 Mac 上的 Swift 代码模拟不同触摸板的手势。但是,当我尝试在工作区之间实现滑动(与三指滑动触摸板相同)时,由于可以使用 control + arrow 调用,我遇到了调用按键的问题。

我看过这个讨论并写成这样

func rightScreen() {
    let key = CGEvent(keyboardEventSource: nil, virtualKey: 0x7C, keyDown: true)
    key?.flags = .maskControl
        
    key?.post(tap: .cghidEventTap)
}

但它的工作原理就像简单的箭头单击一样。我怎样才能让它正常工作?

swift macos cocoa keypress
1个回答
0
投票

发布按键事件时,您需要同时考虑

keyDown
keyUp
事件。
keyUp
必须在
keyDown
之后手动发布,否则密钥将被无限阻止。

所以,用这个代替:

func rightScreen() {
    let keyDown = CGEvent(keyboardEventSource: nil, virtualKey: 0x7C, keyDown: true)
    key?.flags = .maskControl
    let keyUp = CGEvent(keyboardEventSource: nil, virtualKey: 0x7C, keyDown: false)
    keyUp?.flags = .maskControl
        
    keyDown?.post(tap: .cghidEventTap)
    keyUp?.post(tap: .cghidEventTap)
}

参考:init(keyboardEventSource:virtualKey:keyDown:)

© www.soinside.com 2019 - 2024. All rights reserved.