In Mac OS/Cocoa, si può sintetizzare le voci della tastiera - stringhe - per l'applicazione in primo piano in modo trasparente?Generare eventi di tastiera per l'applicazione in primo piano
Per essere più precisi, non voglio inviare caratteri speciali o sequenze di controllo. Il mio unico bisogno è di inviare caratteri standard.
appena appreso here, che AppleScript può fare il trucco in questo modo:
tell application "TextEdit"
activate
tell application "System Events"
keystroke "f" using {command down}
end tell
end tell
D: Come posso fare questo usando objC/cacao?
UPDATE 2012-02-18 - proposta Nicks rafforzata
Basato sul codice Nick s' al di sotto, ecco la soluzione definitiva:
// First, get the PSN of the currently front app
ProcessSerialNumber psn;
GetFrontProcess(&psn);
// make some key events
CGEventRef keyup, keydown;
keydown = CGEventCreateKeyboardEvent (NULL, (CGKeyCode)6, true);
keyup = CGEventCreateKeyboardEvent (NULL, (CGKeyCode)6, false);
// forward them to the frontmost app
CGEventPostToPSN (&psn, keydown);
CGEventPostToPSN (&psn, keyup);
// and finally behave friendly
CFRelease(keydown);
CFRelease(keyup);
Utilizzando questo metodo, un clic su un il pulsante di un pannello non attivo indirizza l'evento all'applicazione frontale effettiva. Perfettamente quello che voglio fare
Grazie! Mai fatto nulla a un livello così basso. – SteAp