在MacOS中模拟Media-Key按[复制]

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

这个问题在这里已有答案:

我想在Mac OS上的应用程序中模拟媒体按键。我在Mojave 10.14.4上使用Xcode 10中的Swift

使用Simulate keypress using Swift等答案我可以模拟各种键,但不能模拟媒体传输键(播放/暂停,VolumeUp等)。

import Carbon.HIToolbox.Events

    @IBAction func buttonPressed(_ sender: AnyObject) {

        //let keyCode = CGKeyCode(kVK_F11)
        let keyCode = CGKeyCode(kVK_VolumeUp)
        let keySource = CGEventSource(stateID: .hidSystemState)

        let keyDownEvent = CGEvent(keyboardEventSource: keySource,
                                   virtualKey: keyCode,
                                   keyDown: true)
        //keyDownEvent?.flags = .maskCommand
        //keyDownEvent?.flags = .maskControl
        //keyDownEvent?.flags = .maskAlternate
        //keyDownEvent?.flags = .maskSecondaryFn
        //keyDownEvent?.flags = .maskShift
        //keyDownEvent?.flags = .maskNumericPad
        //keyDownEvent?.flags = .maskHelp

        let keyUpEvent = CGEvent(keyboardEventSource: keySource,
                                 virtualKey: keyCode,
                                 keyDown: false)

        keyDownEvent?.post(tap: .cghidEventTap)
        keyUpEvent?.post(tap: .cghidEventTap)
    }

如果我为密钥kVK_F11创建一个事件(默认情况下是VolumeUp密钥),它将执行其非媒体功能,即使所有窗口都逃到屏幕边缘。我确实在keyDown事件上尝试了不同的标志修饰符无济于事。

有没有办法以编程方式为Play / Pause,VolumeUp / Down等生成按键事件?

swift macos keypress media-keys
1个回答
0
投票

emulate media key press on Mac在上面的评论中提出的建议的重复问题https://stackoverflow.com/users/4244136/willeke包括我的问题的python解决方案。我把它翻译成Swift并在那里发布了工作代码。谢谢!

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