• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
How does chromium simulate keyboard events using CGEventPost in pre login agent?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

How does chromium simulate keyboard events using CGEventPost in pre login agent?


  • Subject: How does chromium simulate keyboard events using CGEventPost in pre login agent?
  • From: Sai Prasanna <email@hidden>
  • Date: Thu, 05 Jan 2017 13:06:34 +0530

I have created a pre-login agent which uses CGEventPost for simulating
keyboard. FYI I am developing a remote control app similar to teamviewer.

Keyboard (I tried other event sources too)

CGEventRef keyEvent = CGEventCreateKeyboardEvent( NULL, keyCode, down ) ;
CGEventPost( kCGHIDEventTap, keyEvent ) ;
CFRelease( keyEvent ) ;

Mouse

CGEventRef event = CGEventCreateMouseEvent(eventSource, eventType,
mouseLocation, mouseButton );
CGEventPost(kCGHIDEventTap, event);
CFRelease(event);

Pre-login launch agent

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd";>
<plist version="1.0">
<dict>
        <key>Label</key>
        <string>my app label</string>
        <key>LimitLoadToSessionType</key>
        <string>LoginWindow</string>
        <key>RunAtLoad</key>
        <true/>
        <key>WorkingDirectory</key>
        <string>My app directory</string>
        <key>ProgramArguments</key>
        <array>
                <string>app absolute path</string>
                <string>service</string>
                <string>myservice</string>
        </array>
        <key>KeepAlive</key>
        <true/>
</dict>
</plist>

CGEventPost is not working, I get the following in the Console logs after
login

Untrusted apps are not allowed to connect to
Window Server before login.

I have searched o chromium's remote control (which has keyboard and mouse
simulation working) source code. They use CGEventPost for keyboard, but it
works in login window.

https://cs.chromium.org/chromium/src/remoting/host/
input_injector_mac.cc?rcl=0&l=42

They seem to use a sh file in privileged helper tools directory and use to
to load the service, I tried putting our service in privileged helpers
tool, but still the event handling fails.

The Deprecated API CGPostMouseEvent, CGPostKeyBoardEvent work without
problem , but would really like to know how non deprecated keyboard API
works in chromium.
_______________________________________________

Cocoa-dev mailing list (email@hidden)

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:

This email sent to email@hidden


  • Follow-Ups:
    • Re: How does chromium simulate keyboard events using CGEventPost in pre login agent?
      • From: Doug Hill <email@hidden>
    • Re: How does chromium simulate keyboard events using CGEventPost in pre login agent?
      • From: Jens Alfke <email@hidden>
  • Prev by Date: Re: Cocoa-dev Digest, Vol 14, Issue 7
  • Next by Date: Re: Custom NSCollectionViewLayout isn't causing scrollbars to appear
  • Previous by thread: Re: Cocoa-dev Digest, Vol 14, Issue 7
  • Next by thread: Re: How does chromium simulate keyboard events using CGEventPost in pre login agent?
  • Index(es):
    • Date
    • Thread