macos - 如何告诉 OS X 忽略来自两个连接的 USB 鼠标之一的输入?

标签 macos mouse usb hid

我有两个 USB 鼠标连接到我的 Mac,其中一个用作扫描仪。我需要访问通用 X 和 Y 数据,但我不希望该数据移动光标。在碳或 cocoa 环境下,我如何告诉系统忽略鼠标作为指点设备?

编辑:经过一番挖掘,我发现我可以使用 CGAssociateMouseAndMouseCursorPosition() 函数关闭鼠标位置更新,但这不允许我指定单个鼠标。谁能解释 HID 鼠标设备和光标之间的 OS X 关系?在逐个设备的基础上,硬件和软件之间必须有绑定(bind),但我找不到它。

最佳答案

我会考虑为鼠标编写一个基本的用户空间驱动程序。
这将允许您将鼠标作为 USB 设备直接访问。您还可以从系统中控制设备以供您独家使用。

这里有一些文档:

Working With USB Device Interfaces

为了让您开始,连接到 USB 设备的设置步骤如下(我认为,我的 IOKit 生锈了)

包括

  • 使用 IOServiceMatching() 找到您感兴趣的设备.这使您可以根据其属性(包括供应商 ID 等)找到正确的 USB 设备。 (参见下面的 IORegistryExplorer 工具屏幕截图)
  • 使用 plugin 获取 USB 插件实例(我们称之为 IOCreatePlugInInterfaceForService())
  • 使用 plugin从第 2 步开始,使用 device 获取设备接口(interface)(我们称之为 (**plugin)->QueryInterface())
  • device表示您的 USB 设备的连接句柄 -- 首先使用 (**device).USBDeviceOpen 打开它或 (**device).USBDeviceOpenSeize() .从那里你应该能够发送/接收数据。

  • 听起来我知道的很多..可能有更简单的方法,但这就是我想到的。不确定对设备进行这种级别的控制可能有一些好处。祝你好运。

    IORegistryExplorer screen shot

    关于macos - 如何告诉 OS X 忽略来自两个连接的 USB 鼠标之一的输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3516330/

    相关文章:

    xcode - 同一工作区中两个项目之间的目标依赖关系

    macos - .bash_profile 中定义的别名在 OS X 中不起作用

    c++ - 如何使用自定义光标防止系统鼠标光标在 C++ 应用程序中移动?

    java - java中如何获取鼠标中键?

    android - 将纯文本发送到 Android 中的 USB 打印机

    c++ - 由于重新插入设备,如何将 USB HID 句柄测试为无效

    ruby-on-rails - 在 OSX 上安装 PostgreSQL 以进行 Rails 开发

    macos - dateFormatter 在瑞典返回 nil 的 NSDate

    java - LibGDX - Android 上的鼠标按钮

    C++ USB通讯