将原始鼠标/指针数据转换为有意义的内容

Translating raw mouse/pointer data to something meaningful?

本文关键字:有意义 转换 数据 原始 鼠标 指针      更新时间:2023-10-16

我正在使用hexdump -C来显示来自linux机器上的指向设备的实时数据。它返回的信息是每行16字节的十六进制。这样的:

000001b0  a9 1c fd 4e f1 2c 0f 00  01 00 3e 00 01 00 00 00  |...N.,....>.....|
000001c0  a9 1c fd 4e 0e 2d 0f 00  01 00 3e 00 00 00 00 00  |...N.-....>.....|
000001d0  a9 1c fd 4e 16 2d 0f 00  00 00 00 00 00 00 00 00  |...N.-..........|
000001e0  aa 1c fd 4e b1 9a 05 00  01 00 3d 00 01 00 00 00  |...N......=.....|
000001f0  aa 1c fd 4e ce 9a 05 00  01 00 3d 00 00 00 00 00  |...N......=.....|
00000200  aa 1c fd 4e d5 9a 05 00  00 00 00 00 00 00 00 00  |...N............|

我的问题是,我怎么知道如何翻译这个字符串从鼠标指针的坐标数据?

大多数USB输入设备符合USB HID规范。Xorg evdev(4)驱动程序应该能够使用几乎任何指向设备。

如果您正在编写自己的驱动程序,libusb可能是一个好的起点。

你需要找出x和y坐标的周期性和大小(以字节为单位)

你可以写一个程序来计算坐标写入的频率(在移动设备的时候)。然后你必须校准……移动指针,看看坐标的变化……这是我在全球范围内会做的事情。

试错?你知道你的屏幕分辨率,所以这可能会有帮助。您可以尝试将鼠标指针放在左上角(0,0)并记录您获得的数据。如果您尝试进一步滚动屏幕(或数据重复),希望它不会改变。然后把它移到右下角,记录你在那里得到的数据。同样,您希望当您尝试滚动屏幕时这些值不会改变。然后,您可以查看数据,摆弄端序,直到值看起来正确,并找出是否有任何缩放。

也许