Tastatureingabe simulieren

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Tastatureingabe simulieren

    hi leute!
    In meiner App muss ich eine Taste (z.B. T) drücken und erst nach einer gewissen zeit loslassen. Bisher hab ich das so gemacht:

    Quellcode

    1. CGEventSourceRef source = CGEventSourceCreate(kCGEventSourceStateCombinedSessionState);
    2. CGEventRef event = CGEventCreateKeyboardEvent(source, (CGKeyCode)message.tag, YES);
    3. CGEventPost(kCGAnnotatedSessionEventTap, event);
    4. CFRelease(event);
    5. CFRelease(source);

    Um die Taste wieder loszulassen brauch ich das selbe, nur dasses statt YES NO ist.
    Dieses System funktioniert ansich nicht schlecht. Jedoch werden diese virtuellen Tastatureingaben nicht von allen Programmen erhalten. Kennt jemand eine bessere Methode? Danke!
  • Welche Programme bekommen den Event denn nicht?

    Ich würde mal probieren, kCGEventSourceStateHIDSystemState statt kCGEventSourceStateCombinedSessionState und kCGHIDEventTap statt kCGAnnotatedSessionEventTap zu nehmen. Damit sollte der Event an einer früheren Stelle ins System gelangen und sich ähnlicher zu einer physikalischen Tastatur verhalten.
    Multigrad - 360°-Produktfotografie für den Mac
  • Kann, muss aber nicht. Wenn die Spiele direkt per IOHIDLib an die Geräte gehen, wird's eng - wenn ich das richtig verstanden habe, gehen Event Taps frühestens an der Stelle rein, wo die Events der verschiedenen Geräte schon zusammengeführt sind. Logischerweise lassen sie sich nicht zu einem spezifischen HID zuordnen. In dem Fall müsste man wirklich eine virtuelle Tastatur ins IOKit reinpflanzen, das würde ich aber an Deiner Stelle vermeiden wollen, wenn's irgendwie anders geht.
    Multigrad - 360°-Produktfotografie für den Mac
  • Dann am besten gar nicht. Dazu müsste man eine Kernel Extension schreiben, einen virtuellen Gerätetreiber. Kernelland ist rauh und regnerisch - wenig Doku, wenig Service und man kann sehr schnell sehr viel kaputt machen. Wenn Du das wirklich angehen willst, ist es ein guter Anfang, alles zu lesen, was Apple jemals zum Kernel geschrieben hat. Das mag abschreckend klingen (soll es auch), aber das ist dafür leider notwendig (es sei denn, jemand anders hier hat eine grandiose andere Idee).
    Multigrad - 360°-Produktfotografie für den Mac