Search code examples
macoscopy-pastenspasteboard

"Paste" Text to External Mac App First Responder


Is there any (App Store safe) way of automatically filling another app's first responder text field with text? For example, using a hot-key specified by an NSStatusBar application, a user highlights text in a separate app, like TextEdit, and pastes new text into TextEdit that the status bar app has generated based on situational data.


Solution

  • Is there any way of automatically filling another app's first responder text field with text?

    Yes, checkout the following AppleScript:

    tell application "System Events" to keystroke "Hello World"
    

    Use NSTask to run from Objective-C:

    NSString *theText = @"Hello World";
    NSString *theSource = [NSString stringWithFormat:@"tell application \"System Events\" to keystroke \"%@\"",theText];
    NSAppleScript *theScript = [[NSAppleScript alloc] initWithSource:theSource]; 
    [theScript executeAndReturnError:nil];
    

    Note that the script requires access for assistive devices:

    System Preferences → Universal Acces → Enable access for assistive devices

    Applications using the code above won't rejected by Apple.