我们的接待处有一个条形码扫描仪插入Macbook Mini,由接待员使用。当人们“办理登机手续”时,他们会使用条形码扫描仪扫描会员卡,然后写入浏览器窗口。
如果接待员打开了其他内容,因此相关的浏览器窗口不是焦点,则输入将被忽略。
到目前为止,我已经发现输入看起来像OSX一样键盘。我的计划是拦截来自“键盘”的输入并使用AppleScript始终将其发送到同一个浏览器窗口。
我意识到整个事情可以改进 - 使用专用的微型设备,只使用API发出CURL请求。但是,目前还没有API,没有微型设备,我需要尽快找到解决方案。
那么如何拦截特定键盘的输入?或者还有另一种快速解决方案吗?
答案 0 :(得分:4)
我不得不在Windows上做类似的事情。在我的情况下,浏览器窗口通常没有打开,我不得不打开它并浏览特定于条形码数据的地方。
我发现许多条形码扫描仪可以模拟串口,即使它们有USB连接,包括我的连接。
在大多数编程语言中,串口数据非常容易阅读,因此我使用的解决方案是Java Windows服务,它接收串行端口扫描并在扫描时打开相应的URL。我不久前发布了一些裸骨扫描阅读器代码here。
无论如何,您可以看到您的模型是否可以模拟串行端口数据然后您可以为您的目的捕获它,我认为它会比键盘钩更好。
答案 1 :(得分:0)
解决问题的现代方法是将条形码扫描仪配置为使用所谓的HID POS或USB OEM模式。在该模式下,扫描仪仍然通过USB直接连接到计算机,但它不再发送键盘按键,而是代码与串口模式相似。
USB HID规范确定了条形码扫描仪的代码,而某些扫描仪(如GoDEX制造的扫描仪)遵循此协议。为此,您必须在OS X应用程序中实现一些USB特定代码,使用IOKit API进行用户空间处理。但我发现它并不难实现。
然而,一些扫描仪,如Datalogic制造的扫描仪,不使用官方HID协议用于扫描仪。相反,他们使用的私人协议并未公开记录。通过一些逆向工程和挖掘,我也想出了这个协议。
有关详细信息,请参阅my question "Enable USB-OEM (HID POS) mode in a Datalogic barcode scanner"。
但是,如果您不想沿着这条编写自己的USB处理程序的路线走下去,您可以随时获得一个通用的串口转USB适配器并在Mac上安装匹配的串行驱动程序,然后使用扫描仪处于串行模式。获得串行适配器时,有两种常规类型:一种使用Prolific芯片组,另一种使用FTDI芯片组。 Prolific产品得到了制造商的严格支持 - 他们的驱动程序已经过时,甚至不支持全系列的控制线(CTS,RTS等)。但是,我可以推荐一个独立的驱动程序:https://www.mac-usb-serial.com - 它不是免费的,但它得到了很好的支持,我可以确认它是否能够可靠地运行Datalogic条形码扫描器通过串行端口并通过基于Prolific的适配器连接到Mac。