以不同的方式捕获键盘输出

时间:2017-05-28 05:34:35

标签: python linux keyboard

所以我在ubntu中使用python而我正在做的是从我正在实时播放的游戏中读取帧数据(用于生成ML的训练数据)以及我实时捕获的每个帧(从游戏屏幕开始) )我想知道天气是否按下了任何键盘按键,最后哪一个如果没有按键,我也应该得到一个明确的指示。

注意:我的程序在一个单独的窗口中运行,而我将在其他窗口中播放。

我想要一个像:

这样的功能
z=get_current_key_input(event)
if z == None: #This may cause warning form the warnings module
    print 'No key is pressed for this frame move on to the next.'
else:
    print str(z.key_code),'key is pressed for this frame.'

我可以为您提供代码,但它很乱,并且有cv2和几个更痛苦的依赖,所以我想我会按需提供它。

我通过谷歌搜索获得的功能是每次按键时都会被调用的功能,但它是异步的并导致延迟,因此,我使用的传输数据就是废话。

[UPDATE]:

我通过激烈的搜索找到了一个安静有希望的功能,但实际上无法解决它的复杂使用和痛苦的文档。 如果有人能够理解如何使用这些文档,那么对我来说将是一个很大的帮助。 链接到该功能:here!

1 个答案:

答案 0 :(得分:1)

这是一个来自pynput示例的简单程序:

def on_press(key):
    try:
        print('alphanumeric key {0} pressed'.format(key.char))
    except:
        print('special key {0} pressed'.format(key))

def on_release(key):
    print('{0} released'.format(key))
    if key == keyboard.Key.esc:
        return False

def get_current_key_input():
    with keyboard.Listener(on_press=on_press, on_release=on_release) as listener:
        listener.join()