【问题标题】:Capture keyboard outputs in a different way以不同的方式捕获键盘输出
【发布时间】:2017-10-28 16:19:58
【问题描述】:

所以我在 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 和一些更痛苦的依赖项,所以我想我会按需提供。

我通过谷歌搜索得到的只是一个函数,每次我按下一个键时都会调用它,但它是异步的并且会导致延迟,因此,我使用它生成的传输数据简直是垃圾。

[更新]:

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

【问题讨论】:

标签: python linux keyboard


【解决方案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()

【讨论】:

  • 这就是这里的目的,别担心。
  • 这里有个问题,只要我按下任何键,它就会激活,但我想要一个功能,就像我在检查天气是否按下键的功能中解释的那样,而不是一个键时调用的功能被按下。你能做这样的事情吗?
  • 如果没有按键你想做什么?
  • 我只想得到一个输出,比如 False 或“现在没有按下任何键”,当我调用检查键时,如果在我检查我想要 true 或类似的东西时按下了键.
  • 这可能吗?
猜你喜欢
  • 2011-05-05
  • 1970-01-01
  • 2011-10-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多