Points de souris par pouce… comment savoir?


11

Je crée une application intégrée qui héberge une souris USB. J'essaie de le rendre générique pour n'importe quelle souris / trackball / autre USB HID. J'ai découvert que les souris rapportent différemment ... alors qu'elles signalent toutes + -127 par rapport aux coordonnées X / Y, la "sensation" des changements d'application varie considérablement entre les différents modèles, en ce que certaines se déplacent très lentement et d'autres se déplacent très rapidement. Je suppose que cela se rapporte à la taille physique de l'espace logique signalé par la souris.

Bien que les descripteurs HID aient des champs spécifiques pour cela, les souris ne les utilisent jamais ... au moins, pour le mode de démarrage que j'utilise (pas de pilotes ici!) (Edit: les souris ne démarrent pas en mode de démarrage, mon erreur) . À ce stade, je suis réduit à créer des tables basées sur VID / PID; cela signifie que je devrai tester chaque souris et créer des réglages pour elle, quelque chose dont je suis déjà fatigué (et le client est fatigué aussi!).

Vous pouvez prendre ces souris et les brancher sur Windows et obtenir un mouvement décent équivalent de leur part. Je recherche des pilotes spéciaux et le pilote normal que je vois est le HID 2006 générique de MS.

Ma question principale: comment cela est-il géré dans les systèmes d'exploitation typiques? Suis-je en train de manquer quelque chose, comme peut-être que les souris qui se déplacent plus rapidement ont un intervalle de rapport plus court (je n'ai pas lu le descripteur de point final)? Ou quelqu'un a-t-il dû passer par un tableau DPI pour toutes les combinaisons VID / PID? S'ils venaient de mettre physique contre logique dans le descripteur de rapport, cela fonctionnerait comme il se doit! Veuillez aider ...


Avez-vous implémenté "l'accélération" de la souris?
pjc50

2
Les souris ont leur résolution inhérente, mais le système d'exploitation hôte peut également interroger à des taux différents. Pour cette raison, les systèmes d'exploitation vous permettent généralement de régler avec précision la vitesse et l'accélération de la souris. Je suis sûr qu'il n'y a pas de norme sur ce qu'une souris doit signaler en termes de conversion d'unité ... et je serais prêt à parier que vous êtes coincé à faire ces mappages de tableaux personnalisés si vous souhaitez normaliser la réponse de la souris.
Toby Lawrence

1
@TobyLawrence - La résolution de la souris et les taux de sondage ne sont pas les mêmes! Si vous interrogez une souris plus souvent, elle rapportera des valeurs de position delta plus petites par interrogation. Cependant, le DPI sous-jacent ne changera pas . Pour simuler un DPI inférieur, vous devez diviser les valeurs de position delta par le rapport du DPI matériel au DPI souhaité.
Connor Wolf

1
@TobyLawrence - Le taux d'interrogation ne devrait pas du tout influencer le mouvement de la souris. Cela affecte juste la réactivité. C'est le point sur lequel j'essayais d'arriver.
Connor Wolf

1
Essentiellement, la souris intègre les et , et renvoie les valeurs chaque fois que l'ordinateur les demande. Si vous interrogez plus souvent, les deltas signalés sont plus petits, mais si vous les additionnez dans le temps (comme vous le faites pour dessiner le curseur), le résultat global est le même. ΔXΔY
Connor Wolf

Réponses:


1

Essayez le mot MICKEY http://www.webopedia.com/TERM/M/mickey.html

Notez que certains systèmes d'exploitation (je crois que Windows et Mac le font également) modifient automatiquement différents "points par pouce" en fonction de la vitesse de déplacement de l'utilisateur humain. si l'utilisateur déplace la souris rapidement, cela augmente le "point par pouce". Lorsque l'utilisateur déplace lentement la souris, comme faire de la peinture fine sur photoshop, il diminue afin que l'utilisateur puisse contrôler / déplacer un ou quelques pixels.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.