Electronic – Mouse dots-per-inch… how to tell

hidmouse

I'm creating an embedded application that hosts a USB mouse. I'm trying to make it generic for any USB HID mouse/trackball/whatever. I've discovered that mice report differently… while they mostly all report +-127 relative X/Y coordinates the 'feel' of the application changes drastically between different models, in that some move very slowly and others move very quickly. I'm assuming that this relates to the physical size of the logical space the mouse reports.

While HID descriptors have specific fields for this, mice never use them… at least, for the boot-mode I'm using (no drivers here!) (edit: mice don't start out in boot mode, my mistake). At this point I'm reduced to creating tables keyed on VID/PID; this means that I'll have to test each mouse and create tunings for it, something I'm already tired of (and the customer's tired too!).

You can take these mice and plug them into Windows and get decently equivalent movement from them. I'm watching for special drivers and the normal driver I see is the generic 2006 HID from MS.

My main question: how is this handled in typical OS's? Am I missing something, like perhaps that mice that move more quickly have a shorter reporting interval (I haven't read the endpoint descriptor)? Or did someone have to go through and make a table of DPI for all VID/PID combinations? If they'd just put in physical vs. logical into the report descriptor then this would work like it should! Please help…

Best Answer

Try the word MICKEY http://www.webopedia.com/TERM/M/mickey.html

Note, some OS (I believe Windows and Mac does this too) automatically change different "dot-per-inch" depending on the speed of human-user movement. if user move mouse fast, it increase "dot-per-inch". When user move mouse slowly, like doing fine painting on photoshop, it decrease so that user can control/move one or a few pixels.