Come per simulare la pressione dei tasti di basso livello su OS X?
-
20-09-2019 - |
Domanda
Sto cercando di generare keydown tastiera e gli eventi KeyUp programmazione. Attualmente sto usando CGPostKeyboardEvent per fare questo, ma sto cercando un modo per fare questo a un livello inferiore. Ho guardato DDHidLib, ma non sono riuscito a trovare un modo per creare un evento falso. Chiunque può aiutare?
Aggiorna : Grazie ai consigli di Weichsel ora sto creando un evento premuto il tasto con il seguente:
CGEventRef e = CGEventCreateKeyboardEvent (NULL, (CGKeyCode)52, true);
CGEventPost(kCGSessionEventTap, e);
CFRelease(e);
che ho trovato qui .
Tuttavia , il mio problema si è fermato così ho dilungherò un po '. L'applicazione (3a parte) che vorrei inviare pressioni di tasto per attrezzi funzione di cattura chiave di DDHidLib:
- (void) ddhidKeyboard: (DDHidKeyboard *) keyboard
keyDown: (unsigned) usageId;
E questo non viene mai chiamato con il metodo corrente. La mia ipotesi è che la chiave verso il basso simulato con CGEventCreateKeyboardEvent è troppo alto di un livello per essere catturato dai ddhidKeyboard: keyDown. Quindi quello che sto cercando di fare è creare l'evento KeyDown ad un livello sufficientemente basso in modo tale che sarà riconosciuto dal ddhidKeyboard: keyDown.
Soluzione
Cosa c'è di sbagliato con i servizi per eventi al quarzo?
Penso che tu sia sulla strada giusta, ma è necessario utilizzare CGEventCreateKeyboardEvent
invece di CGPostKeyboardEvent
perché quest'ultimo è deprecato a partire da Mac OS X 10.6.
Altri suggerimenti
rubinetti di eventi possono iniettare a livello HID se si esegue come root