Discussion:
Absolute Mouse Data Input
(too old to reply)
Abjad Hawwaz
2008-05-30 02:41:05 UTC
Permalink
Does anyone know if there is documentation on how the Windows input
subsystem interprets absolute mouse data?

I am trying to make my HID touchpad send absolute cursor positioning data to
the system. I have absolute X and Y reported in a mouse top-level
collection. What I have found is that my coordinates do not get scaled based
on the logical minimum and maximum values. The top left corner of the screen
seems to always be (0,0), and the bottom right always (1023,1023) or close
to that, no matter what my minimum and maximum are. If I set the minimum to
0 and maximum to a number below 1023, I will make areas adjacent to the
right and bottom edges of the screen unavailable to the cursor. If I set the
maximum above 1023, part of my touchpad becomes useless because it maps to
the area outside the screen.

I am surprised that Windows doesn't map my absolute data to the entire
screen based on my logical minimum and maximum. Instead, it expects the data
to be within the range between 0 and 1023 (or so -- I am not sure on the
maximum value, but 1023 just makes sense). This effectively limits the
cursor position resolution to 1/1024 of the screen dimension.

I basically have two questions:

1. What are the absolute coordinates of the screen corners? Are they really
(0,0) and (1023,1023)?

2. Is there any way to change that without having to write my own HID
client?

Any helpful information will be sincerely appreciated.
Ray Trent
2008-05-30 16:12:27 UTC
Permalink
Hmmm. I'm surprised that it's not 65535, which is what absolute mouse
coordinates are supposed to be mapped to according to the documentation.

Anyway, no, if you don't want to change your device to report the
correct coordinate range, you'll need to make a HID filter.

Also, you'll be entertained to find that you have to make a HID filter
in order to map any but the primary display to an absolute mode device.
Post by Abjad Hawwaz
Does anyone know if there is documentation on how the Windows input
subsystem interprets absolute mouse data?
I am trying to make my HID touchpad send absolute cursor positioning data to
the system. I have absolute X and Y reported in a mouse top-level
collection. What I have found is that my coordinates do not get scaled based
on the logical minimum and maximum values. The top left corner of the screen
seems to always be (0,0), and the bottom right always (1023,1023) or close
to that, no matter what my minimum and maximum are. If I set the minimum to
0 and maximum to a number below 1023, I will make areas adjacent to the
right and bottom edges of the screen unavailable to the cursor. If I set the
maximum above 1023, part of my touchpad becomes useless because it maps to
the area outside the screen.
I am surprised that Windows doesn't map my absolute data to the entire
screen based on my logical minimum and maximum. Instead, it expects the data
to be within the range between 0 and 1023 (or so -- I am not sure on the
maximum value, but 1023 just makes sense). This effectively limits the
cursor position resolution to 1/1024 of the screen dimension.
1. What are the absolute coordinates of the screen corners? Are they really
(0,0) and (1023,1023)?
2. Is there any way to change that without having to write my own HID
client?
Any helpful information will be sincerely appreciated.
--
Ray
Abjad Hawwaz
2008-05-31 02:36:50 UTC
Permalink
Thank you, Ray, for your reply.

Meanwhile, experimenting with my report descriptor, I have discovered that
the maximum coordinate number is determined by the bit size reserved for the
x and y data in the report descriptor (the Report Size value) rather than
the Logical Maximum (as I originally expected). Still, the highest logical
maximum I can get is 32,767, but that's plenty for me.
Post by Ray Trent
Hmmm. I'm surprised that it's not 65535, which is what absolute mouse
coordinates are supposed to be mapped to according to the documentation.
Anyway, no, if you don't want to change your device to report the correct
coordinate range, you'll need to make a HID filter.
Also, you'll be entertained to find that you have to make a HID filter in
order to map any but the primary display to an absolute mode device.
Post by Abjad Hawwaz
Does anyone know if there is documentation on how the Windows input
subsystem interprets absolute mouse data?
I am trying to make my HID touchpad send absolute cursor positioning data to
the system. I have absolute X and Y reported in a mouse top-level
collection. What I have found is that my coordinates do not get scaled based
on the logical minimum and maximum values. The top left corner of the screen
seems to always be (0,0), and the bottom right always (1023,1023) or close
to that, no matter what my minimum and maximum are. If I set the minimum to
0 and maximum to a number below 1023, I will make areas adjacent to the
right and bottom edges of the screen unavailable to the cursor. If I set the
maximum above 1023, part of my touchpad becomes useless because it maps to
the area outside the screen.
I am surprised that Windows doesn't map my absolute data to the entire
screen based on my logical minimum and maximum. Instead, it expects the data
to be within the range between 0 and 1023 (or so -- I am not sure on the
maximum value, but 1023 just makes sense). This effectively limits the
cursor position resolution to 1/1024 of the screen dimension.
1. What are the absolute coordinates of the screen corners? Are they really
(0,0) and (1023,1023)?
2. Is there any way to change that without having to write my own HID
client?
Any helpful information will be sincerely appreciated.
--
Ray
v s
2011-02-08 17:34:44 UTC
Permalink
hi, were you able to find solution to absolute moused data mapiing on windows ce
Post by Abjad Hawwaz
Does anyone know if there is documentation on how the Windows input
subsystem interprets absolute mouse data?
I am trying to make my HID touchpad send absolute cursor positioning data to
the system. I have absolute X and Y reported in a mouse top-level
collection. What I have found is that my coordinates do not get scaled based
on the logical minimum and maximum values. The top left corner of the screen
seems to always be (0,0), and the bottom right always (1023,1023) or close
to that, no matter what my minimum and maximum are. If I set the minimum to
0 and maximum to a number below 1023, I will make areas adjacent to the
right and bottom edges of the screen unavailable to the cursor. If I set the
maximum above 1023, part of my touchpad becomes useless because it maps to
the area outside the screen.
I am surprised that Windows doesn't map my absolute data to the entire
screen based on my logical minimum and maximum. Instead, it expects the data
to be within the range between 0 and 1023 (or so -- I am not sure on the
maximum value, but 1023 just makes sense). This effectively limits the
cursor position resolution to 1/1024 of the screen dimension.
1. What are the absolute coordinates of the screen corners? Are they really
(0,0) and (1023,1023)?
2. Is there any way to change that without having to write my own HID
client?
Any helpful information will be sincerely appreciated.
Post by Ray Trent
Hmmm. I'm surprised that it's not 65535, which is what absolute mouse
coordinates are supposed to be mapped to according to the documentation.
Anyway, no, if you don't want to change your device to report the
correct coordinate range, you'll need to make a HID filter.
Also, you'll be entertained to find that you have to make a HID filter
in order to map any but the primary display to an absolute mode device.
--
Ray
Post by Abjad Hawwaz
Thank you, Ray, for your reply.
Meanwhile, experimenting with my report descriptor, I have discovered that
the maximum coordinate number is determined by the bit size reserved for the
x and y data in the report descriptor (the Report Size value) rather than
the Logical Maximum (as I originally expected). Still, the highest logical
maximum I can get is 32,767, but that's plenty for me.
Submitted via EggHeadCafe
SQL Operations on a Text File with ADO.NET
http://www.eggheadcafe.com/tutorials/aspnet/37ed9e1b-c5de-4c0b-afbe-d8f78f9a6ecf/sql-operations-on-a-text-file-with-adonet.aspx
Loading...