J'ai un USB HID TouchPad qui recueille une entrée. Par défaut, lorsque j'appuie sur le pavé tactile, il génère Ce que je veux faire, c'est convertir le retour de chariot fort> dans un clic strong> clic de souris strong> et l'état J'ai trouvé le Entrée brute alternative. Cependant, je ne sais pas comment le convertir en souris Voici le code responsable avec la "lecture" de la souris : p> puis la partie du clavier: p> puis la partie de journalisation: p> Remarque: Je ne sais pas si cela est pertinent, mais je souhaite utiliser le cahier pour jouer dans une instance de chrome sur un système Windows. P> P>
3 Réponses :
Pour le clic de souris et le déplacement de la souris - Lorsque vous gérez l'entrée de l'entrée de la HID, utilisez le Le clic est facile, pour que l'évacuation de la souris Essayez d'obtenir les coordonnées de glisser à l'échelle et de les convertir dans les coordonnées actuelles de l'échelle de l'écran et utilisez également la méthode Vous pouvez également suivre le déplacement dans X, Y et faire un étalonnage approprié pour les traduire en écran X, Y P> sendinput p>
Le pavé tactile est juste une souris comme n'importe quel autre. Il génère des événements standard de la souris. Utilisez un code global wh_mouse code> Crochet via
SetWindowshookex () code> pour capturer les événements de la souris globalement. Pour les rejouer, utilisez
souris_event () code>. Alternativement, utilisez
wh_journalrecord code> et
wh_journalplayback code> à la place pour la capture et la lecture, respectivement. P>
Lorsque vous enregistrez le crochet avec wh_mouse_ll, les valeurs possibles de wparam strong> sont: wm_lbuttonown, wm_lbuttonup em> stry>, wm_mousemove, wm_mousehwheel, wm_rbutonwown, wm_rbutonwown , ou wm_rbuttonup. Je m'attends qu'une fois que le wm_lbuttonwown em> est émis, A correspondant wm_lbuttonup em> doit être émis fort> pour empêcher le curseur D'entrer dans l'état de traînée. P> Je n'ai pas l'appareil à tester cela, mais j'essaierais l'appel ci-dessous pour éviter d'entrer dans l'état de traînée. p> ou utilisez Je ne pense pas que l'alternative d'entrée brute est une bonne idée. Je le vois comme une mesure du dernier recours. P> p> souris_event strong> avec mouseeventf_leftup em> pour injecter la sortie du bouton gauche. P>
Comment votre fenêtre transparente serait-elle connue, s'il doit envoyer un
wm_mousemove code> ou un
wm_ncmousemove code> à la fenêtre en dessous?
J'ai supposé que la fenêtre transparente doit "savoir" envoyer un
wm_ncmousemove code> (afin d'avoir un meilleur contrôle sur la "sortie"), mais je n'ai pas considéré que cela est très important. Devrais-je m'inquiéter?
Une fenêtre obtient soit toutes les entrées, soit aucune. Si vous souhaitez filtrer l'entrée, vous devrez passer une partie de cette entrée sur Windows en dessous.
WM_MOUSEMOVE CODE> est l'un des messages que vous souhaitez transmettre, et vous devrez décider, que ce soit
wm_mousemove code> ou
wm_ncmousemove code>.
wm_mouseleave code> est un autre message qui est probablement impossible à obtenir, étant donné votre configuration proposée avec une fenêtre transparente.
Je vois Merci. Votre conseil serait donc de régler cela et de se concentrer sur les deux autres approches?
Vos exemples de code utilisent des crochets de souris / clavier de bas niveau, pas d'une entrée brute. Si vous ouvrez votre appareil pour une entrée RAW, obtenez-vous des structures RIM_TypeKeyboard ou des structures RIM_TYPEHID? (Vous Devriez-vous i> d'obtenir RIM_TYPEHID.) Une fois que vous avez les données HID, vous devriez pouvoir l'analyser (contourner les pilotes) et appelez SendInput le cas échéant.