在两个热键之间捕获键盘输入(来自条形码扫描仪)

2024-09-24 00:32:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个USB条形码扫描仪(摩托罗拉DS9208),我想用它来自动记录扫描信息到SQL数据库。我正试图设置这样的扫描信息将被记录,无论什么应用程序有重点,这是我正在努力。扫描器配置了一个前缀和两个后缀,我正试图使用它们作为热键。你知道吗

我试过几种方法,读了几十个线程,但似乎无法破解这个。我试过VB.net版解决方案(https://www.dreamincode.net/forums/topic/94406-global-hotkey/),并用pynput进行了实验。我对其他解决方案持开放态度,迄今为止,python中的键盘库似乎是最简单的解决方案,我觉得我只是缺少一些简单的东西。你知道吗

import keyboard

prefix = 'alt+O'     #define prefix hotkey
suffix = 'alt+Q'    #define suffix hotkey
print('Waiting for barcode scan')

def startBarcode():
    print('prefix')
    #recorded = keyboard.record(until='~')
    #keyboard.play(recorded, speed_factor=0)    
def stopBarcode():
    print('suffix')


keyboard.add_hotkey(prefix, startBarcode) #<-- attach the function to hot-key

keyboard.add_hotkey(suffix, stopBarcode) #<-- attach the function to hot-key

keyboard.wait()

我的扫描仪配置为前缀“alt+o”,后缀“~”,然后是另一个后缀“alt+q”。使用如图所示的代码,我在控制台上得到了“prefix”和“suffix”的输出,而不管哪个窗口具有我所期望的焦点。你知道吗

当我在startBarcode中取消对这两行的注释时,我将在控制台上得到一个'prefix'输出,其他什么都没有。它似乎从未停止录制。你知道吗

我应该注意到,我最初只使用了一个后缀,然后添加了第二个后缀,希望能解决我的问题。我还尝试了不同的后缀值(包括类似于提供的键盘示例的'esc'。我还尝试了键盘github页面上的示例代码—将它们的代码与物理键盘escape键配合使用,效果与预期一样。你知道吗

我应该注意到,理想情况下,我真的希望将记录的输入存储到一个变量中,而不是回放它。我把它去掉是为了消除另一个潜在的错误源。有我遗漏的东西吗?任何其他图书馆或其他策略,任何人可能已经使用了类似的问题?任何建议将不胜感激!你知道吗


Tags: 代码信息prefix记录键盘解决方案altsuffix