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