Konvertieren von Ereignissen von einem USB-Human-Interface-Gerät mit C ++

8

Ich habe ein USB-HID-Touchpad, das Eingaben sammelt. Wenn ich auf das Touchpad drücke, wird standardmäßig Wagenrücklauf (Enter) generiert. Wenn ich versuche, es als Maus zu verwenden, wird der schleppende -Zustand angezeigt.

Ich möchte den Wagenrücklauf in ein Mausklick Ereignis und den Ziehvorgang in einen Cursor konvertieren Verschieben Sie ohne den ersten Klick-Teil.

Ich habe die rohe Eingabe gefunden Alternative. Ich weiß jedoch nicht, wie ich es in click und den Cursor move umwandeln kann.

Hier ist der Code verantwortlich mit der Maus 'Lesen':

%Vor%

dann der Tastaturteil:

%Vor%

dann der Logging-Teil:

%Vor%

Hinweis: Ich weiß nicht, ob das relevant ist, aber ich möchte die HID verwenden, um in einer Chromium-Instanz auf einem Windows-System zu spielen.

    
George Netu 25.06.2015, 13:36
quelle

3 Antworten

2

Wenn Sie den Hook mit WH_MOUSE_LL registrieren, lauten die möglichen Werte von wparam : WM_LBUTTONDOWN, WM_LBUTTONUP , WM_MOUSEMOVE, WM_MOUSEWHEEL, WM_MOUSEHWHEEL, WM_RBUTTONDOWN oder WM_RBUTTONUP.

Ich erwarte, dass sobald WM_LBUTTONDOWN ausgegeben wird, eine entsprechende WM_LBUTTONUP ausgegeben werden muss , um zu verhindern, dass der Cursor in den ziehenden Zustand wechselt .

Ich habe nicht das Gerät, um dies zu testen, aber ich würde den folgenden Anruf versuchen, um zu verhindern, dass ich in den Drag-Zustand komme.

%Vor%

oder verwenden Sie mouse_event mit MOUSEEVENTF_LEFTUP , um die Freigabe der linken Schaltfläche zu injizieren.

Ich denke nicht, dass die rohe Eingabealternative eine gute Idee ist. Ich sehe es als eine Maßnahme der letzten Instanz.

    
VAndrei 07.07.2015, 11:27
quelle
2

Das Touchpad ist nur eine Maus wie jede andere. Es generiert Standard-Mausereignisse. Verwenden Sie einen globalen WH_MOUSE -Hook über SetWindowsHookEx() , um Mausereignisse global zu erfassen. Um sie wiederzugeben, verwenden Sie mouse_event() . Alternativ verwenden Sie stattdessen WH_JOURNALRECORD und WH_JOURNALPLAYBACK hooks für die Aufnahme und Wiedergabe.

    
Mihai 06.07.2015 20:08
quelle
2

Für Mausklick und Mausbewegung - wenn Sie mit der Eingabe aus dem HID arbeiten, verwenden Sie SendInput Methode.

Der Klick ist einfach, für die Mausbewegung versuchen Sie, die skalierten Schleppkoordinaten zu erhalten und sie in die aktuellen Bildschirmskalakoordinaten zu konvertieren und verwenden Sie auch die SendInput Methode.

Sie können die Verschiebung auch in x, y verfolgen und eine entsprechende Kalibrierung vornehmen, um sie auf den Bildschirm x, y

zu übertragen     
ahmedsafan86 25.06.2015 14:00
quelle

Tags und Links