Ho allegato un MBA a un iMac utilizzando un cavo Thunderbolt. Premendo CMD + F2 su iMac, la modalità di visualizzazione target consente di utilizzare l'iMac come display per l'MBA. Qualcuno ha informazioni su come attivare quell'evento a livello di programmazione?Come accedere in modo programmatico alla modalità di visualizzazione target?
Il mio primo approccio è stato quello di inviare un CGEventPost
a kCGHIDEventTap
CGEventRef f2CommandDown = CGEventCreateKeyboardEvent(src, (CGKeyCode)120, YES);
CGEventSetFlags(f2CommandDown, kCGEventFlagMaskCommand);
CGEventRef f2CommandUp = CGEventCreateKeyboardEvent(src, (CGKeyCode)120, NO);
CGEventPost(kCGHIDEventTap, f2CommandDown);
CGEventPost(kCGHIDEventTap, f2CommandUp);
che non funziona. Tutto ciò che fa è un errore "bip". (provato anche a girare come utente root). Penso che, kCGHIDEventTap
sia solo l'obiettivo sbagliato e CMD + F2 potrebbe vivere a un livello più alto del sistema operativo (noto come "da qualche parte")
L'esecuzione di un codice di cattura di eventi chiave non mostra nulla per CMD + F2.
Qualcuno ha un suggerimento? Grazie in anticipo!
ci avrei scommesso più di un dollaro che pressione dei tasti non è mai sempre al server della finestra, quindi sì, 'kCGHIDEventTap' è troppo tardi. Avrete bisogno di guardare un passo indietro, a [IOKit] (http://developer.apple.com/library/mac/#documentation/DeviceDrivers/Conceptual/AccessingHardware/AH_Intro/AH_Intro.html%23/). Penso che un [IOHIDManager] (http://developer.apple.com/library/mac/#documentation/IOKit/Reference/IOHIDManager_header_reference/Reference/reference.html) ti permetterà di essere _notified_ di questi tasti, ma sarei sorpreso se tu potessi simularli senza creare un'estensione del kernel. –
Vedere anche: http://www.cocoabuilder.com/archive/cocoa/166322-eject-key-code.html –