解决问题的现代方法是将条形码扫描仪配置为使用所谓的 HID POS 或 USB OEM 模式。在该模式下,扫描仪仍然通过 USB 直接连接到计算机,但它不会再发送键盘按键,而是发送类似于您在串行端口模式下获得的代码。
USB HID 规范确实定义了条码扫描仪的代码,并且一些扫描仪,如 GoDEX 制造的扫描仪,遵循此协议。为此,您必须在您的 OS X 应用程序中实现一些 USB 特定代码,使用 IOKit API 进行用户空间处理。但我发现完成起来并不难。
但是,某些扫描仪,例如 Datalogic 制造的扫描仪,不使用扫描仪的官方 HID 协议。相反,他们使用未公开记录的私有协议。不过,通过一些逆向工程和挖掘,我也发现了该协议。
有关详细信息,请参阅我的问题“在 Datalogic 条码扫描仪中启用 USB-OEM (HID POS) 模式”。
但是,如果您不想走这条编写自己的 USB 处理程序的路线,您总是可以获取一个通用的串行到 USB 适配器并在您的 Mac 上安装匹配的串行驱动程序,然后在串行模式下使用扫描仪. 获取串行适配器时,一般有两种类型:一种使用 Prolific 芯片组,另一种使用 FTDI 芯片组。制造商对 Prolific 的支持很差——他们的驱动程序已经过时,甚至不支持全系列的控制线(CTS、RTS 等)。但是,我可以推荐一个独立的驱动程序:https ://www.mac-usb-serial.com - 它不是免费的,但它得到了很好的支持,我可以确认它在串行端口上与 Datalogic 条形码扫描仪一起可靠地工作,并且通过基于 Prolific 的适配器连接到 Mac。