【问题标题】:Translating raw mouse/pointer data to something meaningful?将原始鼠标/指针数据翻译成有意义的东西?
【发布时间】:2011-12-30 02:10:10
【问题描述】:

我正在使用 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............|

我的问题是,我怎么知道如何将此字符串转换为鼠标指针的坐标数据?

【问题讨论】:

  • 询问手册或制造商。或者做/很多/试错!
  • 哦,那是每行 16 个 /bytes/,而不是位。
  • 所以它基本上是一个黑匣子?这类数据没有通用格式吗?
  • 肯定是每行十六字节的十六进制数?你想用十六进制转储做什么?右边的字符是数据的 ASCII 表示......它是有意义的(如果它没有意义,它只会留下一个 .)。
  • 你能定义“linux box上的指针设备”吗?

标签: c++ c linux


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 如果是usb鼠标,--> sarnold answer :) 不难处理。
    【解决方案3】:

    也许是反复试验?你知道你的屏幕分辨率,所以这可能会有所帮助。 您可以尝试将鼠标指针放在左上角 (0, 0) 并记录您获得的数据。如果您尝试滚动到屏幕之外(或数据重复),希望它不会改变。然后把它移到右下角,记录你在那里得到的数据。再次,如果您尝试滚动屏幕​​,您希望这些值不会改变。然后你可以查看数据,摆弄字节序,直到值看起来正确,然后确定是否有任何缩放发生。

    也许

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-15
      • 1970-01-01
      • 2023-04-05
      • 2014-01-01
      • 1970-01-01
      相关资源
      最近更新 更多