如何在cocoa中模拟mac媒体密钥

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在cocoa中模拟mac媒体密钥相关的知识,希望对你有一定的参考价值。

我需要模拟按下Mac键盘上的媒体/功能键。从亮度到音量上/下的一切。

这可能吗?如果是这样怎么样?我读了一堆关于如何触发他们的新闻,但不是这个。

如果可能的话,当你改变东西时,id就像半透明的图标仍会出现在屏幕上。

答案

在Swift中试试这个:

// Simulate illumination up
let code = NX_KEYTYPE_ILLUMINATION_UP
let event1 = NSEvent.otherEvent(with: .systemDefined, location: NSPoint.zero, modifierFlags: NSEventModifierFlags(rawValue: 0xa00), timestamp: 0, windowNumber: 0, context: nil, subtype: 8, data1: (Int((code << 16 as Int32) | (0xa << 8 as Int32))), data2: -1)
event1?.cgEvent?.post(tap: .cghidEventTap)
let event2 = NSEvent.otherEvent(with: .systemDefined, location: NSPoint.zero, modifierFlags: NSEventModifierFlags(rawValue: 0xb00), timestamp: 0, windowNumber: 0, context: nil, subtype: 8, data1: (Int((code << 16 as Int32) | (0xb << 8 as Int32))), data2: -1)
event2?.cgEvent?.post(tap: .cghidEventTap)



// Simulate illumination down
let code = NX_KEYTYPE_ILLUMINATION_DOWN
let event1 = NSEvent.otherEvent(with: .systemDefined, location: NSPoint.zero, modifierFlags: NSEventModifierFlags(rawValue: 0xa00), timestamp: 0, windowNumber: 0, context: nil, subtype: 8, data1: (Int((code << 16 as Int32) | (0xa << 8 as Int32))), data2: -1)
event1?.cgEvent?.post(tap: .cghidEventTap)
let event2 = NSEvent.otherEvent(with: .systemDefined, location: NSPoint.zero, modifierFlags: NSEventModifierFlags(rawValue: 0xb00), timestamp: 0, windowNumber: 0, context: nil, subtype: 8, data1: (Int((code << 16 as Int32) | (0xb << 8 as Int32))), data2: -1)
event2?.cgEvent?.post(tap: .cghidEventTap)

(功劳归于@Alex293

这是来自我们的discussion关于以编程方式控制键盘亮度的方法:https://github.com/pirate/mac-keyboard-brightness

以上是关于如何在cocoa中模拟mac媒体密钥的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS/Cocoa 应用程序中安全地包含密钥/签名

如何修改 Mac OS X Cocoa 布局约束

如何使用 Cocoa (Mac) 在 Swift 中创建 PDF

如何使用 Cocoa 和 CGDisplayCreateImageForRect 在 Mac OS X 中截取区域截图?

Cocoa - 如何检测泛在容器中的变化

如何在 WebView Cocoa / Mac OS 上加载带有图像、js 和 css 的本地 html 文件