Hi everyone,

I eventually figured out my previous problem with keyboard event posting when a colleague of mine pointed out the CGPostKeyboardEvent had been deprecated. After digging around some more, we came up with the following:

        [window makeFirstResponder:textfield];
CGEventSourceRef sourceRef = CGEventSourceCreate(kCGEventSourceStateCombinedSessionState);
        if (sourceRef == nil) { return; }
        //40 = "k"
        CGEventRef eventDown = CGEventCreateKeyboardEvent(sourceRef, 40, true);
CGEventSetFlags(eventDown, kCGEventFlagMaskAlternate +kCGEventFlagMaskShift);
        CGEventRef eventUp = CGEventCreateKeyboardEvent(sourceRef, 40, false);
        CGEventPost(kCGAnnotatedSessionEventTap, eventDown);
        CGEventPost(kCGAnnotatedSessionEventTap, eventUp);
        CFRelease(eventDown);
        CFRelease(eventUp);
        CFRelease(sourceRef);

Running that code will correctly produce an apple symbol in the TextField. Other local commands that we send (Command-A, Command-C, Command-Q, etc) all work correctly. Even shortcuts for Services work.

However some keyevents, such as Command-Space to activate Quicksilver on my machine (usually Spotlight) or Shift-Command-3 to take a screenshot or Command-Tab to activate the application switcher, only produce a system beep. Any ideas why and how we can get around that?

We thought it might be the event source state used to create the CGEventSourceRef, but changing it to kCGEventSourceStateHIDSystemState or even kCGEventSourceStatePrivate did not produce the desired results.

Any direction would be appreciated.

Thanks,

Dave
_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [EMAIL PROTECTED]

Reply via email to