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

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

Joysticks report absolute data in their HID reports.

And also, I do not believe that one has to post
“Absolute XY coordinates” in order for mouse events to
be recognized by Microsoft supplied drivers.
-VY

— Jeremy Gale wrote:
> 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
>
>

__________________________________
Do you Yahoo!?
SBC Yahoo! DSL - Now only $29.95 per month!
http://sbc.yahoo.com

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

Joysticks are HID but they do not go through an input stack after
HIDCLASS. They are read directly from DirectInput and then interpreted
raw by the DirectInput application.

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 Venkat Yellepeddy
Sent: Saturday, July 12, 2003 5:07 PM
To: Windows System Software Developers Interest List
Subject: [ntdev] Re: HID Absolute Pointing Device Requirements

Joysticks report absolute data in their HID reports.

And also, I do not believe that one has to post
“Absolute XY coordinates” in order for mouse events to
be recognized by Microsoft supplied drivers.
-VY

— Jeremy Gale wrote:
> 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
>
>

__________________________________
Do you Yahoo!?
SBC Yahoo! DSL - Now only $29.95 per month!
http://sbc.yahoo.com


You are currently subscribed to ntdev as: xxxxx@windows.microsoft.com
To unsubscribe send a blank email to xxxxx@lists.osr.com