您最好的选择是购买操纵杆“键盘”,以便您可以将设备(USB HID)作为非键盘/非鼠标读取(因为键盘和鼠标受操作系统限制,不可绕过,因为它是硬编码的进入设备管理。)
我推荐的是寻找 PI Engineering 的键盘,因为他们的键盘可以注册为操纵杆。他们有自定义映射软件,可以模拟在他们的设备上按下一个键以在 Windows 消息队列中发送一个键(模拟键盘)。相反,您可以使用他们的 SDK 直接对设备进行编程(因为每个键只是一个操纵杆按钮),并且不会干扰 POS 软件。
PI Engineering 可编程键盘
USB 访问描述(下面列出的相关部分,以防链接失效)
微软Windows
Windows 驱动程序开发工具包 HID
Windows DDK HID API 类似于 Apple HID 管理器,它是一个复杂的低级 API,与 USB HID 非常相似。程序可以访问或多或少的每一个设备,包括输入和输出,除了键盘和鼠标,微软故意阻止了这个 API。与目前介绍的其他 API 不同,读取机制的性质使得如果没有专门用于从队列中读取事件的线程,则很难使用。虽然乍一看似乎需要购买 Microsoft 的驱动程序开发工具包才能使用此 API,但可以将其与免费的 MinGW 工具一起使用。
在 Windows 中,设备插入和拔出事件的通知被发送到窗口句柄,因此为了接收它们,hidio 对象需要它自己的(不可见)窗口,然后可以接收通知。在当前实现中,对象在收到此类通知时会自动重建设备列表。此外,如果设备当前处于打开状态,它会检查设备是否仍处于连接状态或已被移除。
直接输入
Microsoft 的 DirectInput API 提供了一个相对简单的接口,但以牺牲灵活性为代价。它对 USB HID 设备类型的支持有限,主要针对最流行的游戏设备;在 USB HID-speak 中,它只支持“通用桌面页面”。它确实提供了对鼠标和键盘数据的访问,但不是作为单独的设备。如果连接了多个鼠标或键盘,则所有数据都集中到一个虚拟设备中。它确实支持力反馈,但不支持任何其他输出类型。与 Linux input.h 一样,它有自己的简化事件方案,并且还会自动缩放一些传入的数据,这可能会出现问题。
Windows 原始输入
Raw Input 是从 Windows XP 开始提供的新 API,旨在响应开发人员对键盘和鼠标进行原始访问的愿望。这是从 Windows 上的鼠标和键盘获取原始数据的唯一方法。使用原始输入,可以获得任何 USB HID 设备的输入事件,但根本不支持输出。出于这个原因,我们还没有深入探索 Raw Input,但我们可能会使用它来完全支持 Windows 上的键盘和鼠标。