2013-01-11 6 views
63

Wir machen einen User-Space-Gerätetreiber für OS X, der den Cursor mit Quartz Events bewegt, und wir hatten ein Problem, wenn Spiele - insbesondere solche, die im Fenstermodus laufen - den Capture nicht richtig erfassen können Mauszeiger (= enthält/behält sie innerhalb der Grenzen ihrer Fenster). Zum Beispiel würde es außerhalb des Spielfensters gehen und auf den Desktop oder die inaktiven Anwendungen in der Nähe klicken.Erkennen von CGAssociateMouseAndMouseCursorPosition

Wir könnten das beheben, wenn wir nur erkennen könnten, wenn eine aktive Anwendung CGAssociateMouseAndMouseCursorPosition aufruft.

Wie würden Sie das tun? Irgendwelche Ideen werden geschätzt.

+0

gibt es keine Möglichkeit als HID-Treiber/Gerät zu präsentieren, anstatt Ihre eigenen Veranstaltungen veröffentlichen? Das könnte ein Ansatz sein ... – nielsbot

Antwort

-1

Ich habe ein paar verschiedene Maus logische Schichten (für die Überbrückung verschiedener Eingabegeräte, etc.) geschrieben. Ich habe festgestellt, dass das Einhängen in das Ereignis WM_INPUT der Betriebssystemebene eine sichere Möglichkeit ist, sehr Echtzeit-Mauspositionsinformationen zu erhalten. Es gibt auch eine weniger rigorose Lösung, nur die Mausdaten abzurufen, die Sie von einer der sehr primitiven DLLs von Windows benötigen. Sie sind blitzschnell. Sie könnten mit einem 10ms-Timer abfragen und nie einen Leistungsverlust auf einem modernen Computer sehen.

+0

Ich verstehe nicht, wie dies für mein Problem in OS X gilt. – Dae