Sure thing. Here is the report descriptor in 8051 assembly.
When I use this descriptor, the top left quarter of my digitizer maps to my
full monitor. When I add a Physical Min/Max, with the same range (0 to
4095), the top 1/4 of my digitizer maps to the top 1/4 of my monitor. (But
the rest doesn’t work). If I change the Logical Max to 2047 and divide all
my coordinates by two, it works correctly (regardless of whether I add
Physical Min/Max of 0-2047 or not).
For reference, I am using Windows 2000 SP3. I’ve heard that it may behave
differently on other OSes but haven’t confirmed this for myself.
I’m still very much interested in any documentation because I am basically
guessing this descriptor based on the HID spec/examples. Thanks very much
for your help!
Jeremy
db 05h, 01h ;; USAGE_PAGE (Generic Desktop)
db 09h, 02h ;; USAGE (Mouse)
db 0A1h, 01h ;; COLLECTION (Application)
db 09h, 01h ;; Usage(pointer)
db 0A1h, 00h ;; COLLECTION(Physical)
db 05h, 09h ;; USAGE Page (Buttons)
db 19h, 01h ;; Usage Minimum(01)
db 29h, 03h ;; Usage Maximum(03)
db 15h, 00h ;; Logical Minimum(0)
db 25h, 01h ;; Logical Maximum(1)
db 75h, 01h ;; REPORT_SIZE (1) ;; Button Off or On
db 95h, 03h ;; REPORT_COUNT (3) ;; 3 mouse buttons
db 81h, 02h ;; INPUT (Data,Var,Abs)
;; Padding to fill a Byte
db 95h, 01h ;; Report Count(1)
db 75h, 05h ;; Report Size(5)
db 81h, 01h ;; Input (constant,array, absolute)
db 05h, 01h ;; USAGE Page(Generic Desktop)
db 09h, 30h ;; Usage(X)
db 09h, 31h ;; Usage(Y)
db 15h, 00h ;; Logical Minimum(0)
db 26h, 0ffh, 0Fh ;; Logical Maximum(4095)
db 75h, 0Ch ;; REPORT_SIZE (12)
db 95h, 02h ;; REPORT_COUNT (2)
db 81h, 02h ;; INPUT (Data,Var,Abs)
db 0C0h ;; End Collection(Physical)
db 0C0h ;; End Collection(Application)
-----Original Message-----
From: Doron Holan [mailto:xxxxx@windows.microsoft.com]
Sent: July 11, 2003 3:26 PM
To: Windows System Software Developers Interest List
Subject: [ntdev] RE: HID Absolute Pointing Device Requirements
Please post the descriptor and I can see if there is anything wrong with
it, the problem is likely within it.
D
This posting is provided “AS IS” with no warranties, and confers no
rights.
-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Jeremy Gale
Sent: Thursday, July 10, 2003 5:19 PM
To: NT Developers Interest List
Subject: [ntdev] HID Absolute Pointing Device Requirements
Hi all,
I’m trying to find some sort of documentation on the Windows
requirements for HID pointing devices that report absolute coordinates,
but I have been unsuccessful. The HID relative mouse report descriptor
is basically a standard and seems to be used widely by HID mice.
However, I haven’t seen any absolute HID pointing devices.
I am trying to make our USB based digitizer-like device’s firmware post
absolute XY coordinates so that mouse events are recognized by Windows
using only Microsoft-supplied drivers (so that no 3rd party drivers need
to be installed). I saw this posting from Doron Holan on the list:
http://www.ntdev.org/archive/ntdev0205/msg0492.html
It mentions setting the Physical Min/Max in the report descriptor. I’m
surprised the physical min/max should affect anything, I thought the
scaling of the coordinates would be only based on the Logical Min/Max.
I am currently setting the Logical Min == Physical Min and Logical Max
== Physical Max. It seems to work best that way. I’ve had problems
reporting 12 bit XY data. (0 to 4095). Only top left quarter of my
digitizer maps to the top left quarter of the screen. When I use 11 bits
and under, it seems to work properly, mapping the full digitizer area to
the full screen.
Does anyone have any insights why 12-bit data doesn’t seem to work? Is
there any sort of documentation on what Windows expects from absolute
HID pointing devices? Thanks in advance!
Jeremy Gale
You are currently subscribed to ntdev as: xxxxx@windows.microsoft.com
To unsubscribe send a blank email to xxxxx@lists.osr.com
You are currently subscribed to ntdev as: xxxxx@smarttech.com
To unsubscribe send a blank email to xxxxx@lists.osr.com