13

を使用してアクティブなアプリの上部Macbookキーをシミュレートしようとしています

CGEventCreateKeyboardEvent (NULL, (CGKeyCode)keycode, true);
CGEventCreateKeyboardEvent (NULL, (CGKeyCode)keycode, false);

これまでのところ、最初の4つのキーのイベントを見つけて送信しました。

keycode / Key

107 - Brightness Down
113 - Brightness Up
130 - Mission Control / Expose
160 - Dashboard / Launchpad
 ?? - Keyboard lit Down
 ?? - Keyboard lit Up
 ?? - Previous Track
 ?? - Play/Pause
 ?? - Next Track
 ?? - Mute
 ?? - Volume Down
 ?? - Volume Up
 ?? - Eject

しかし、他のキーコードは見つかりません。私は1000の整数を繰り返してその数値をイベントとして送信しますが、誰も動作していないようです= P

では、これらのイベントをシミュレートする方法はありますか?

ありがとうございました

4

2 に答える 2

6

メディアキーは、何らかの理由で通常のキーボードイベントとして扱われません。この投稿は、イベントがどのように見えるかを示しています。

于 2012-05-07T20:14:10.970 に答える
2

2017/2018の時点で、一部のAPIが変更されています。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に送られます)

これは、https://github.com/pirate/mac-keyboard-brightnessを使用してキーボードの明るさをプログラムで制御する方法に関するディスカッションからのものです。

また、このSOの答え:ココアでMacメディアキーをシミュレートする方法

于 2018-05-28T22:38:47.997 に答える