如何生成密钥保持&在Windows上按Python事件

时间:2013-05-13 18:08:11

标签: python windows events python-2.7 keyboard

我正在尝试制作一个程序,以便当我按下游戏手柄上的按钮并按住它时,只要我按住按钮就会写入并重复某个角色,就像键盘一样。

到目前为止,我已经设法插入了我想要的任何角色,但困难的部分是保持按下。

我尝试使用pyGame,win32api,win32con,但我找不到任何有用的东西。 (也许我没有完全理解这些库)

此外,我是python编程的新手,所以如果你需要额外的信息来让我的问题更容易理解,请告诉你。

谢谢。

1 个答案:

答案 0 :(得分:1)

对于pygame试试这个: http://www.pygame.org/docs/ref/key.html#pygame.key.set_repeat

在我看来,正是你想要的。

如果您不想以这种方式解决问题,则必须编写一个线程,该线程从按键事件开始,在按键释放事件上停止,并在调用按键事件时反复调用自身。这看起来像这样:

from threading import Thread, Event
from time import sleep

class BtnRepeater(Thread)
    def __init__(self, *args, **kw):
        self.stop = Event()
        if 'startdelay' in kw:
            self.stdelay = kw.pop('startdelay')
        else:
            self.stdelay = 1 default delay
        if 'repeatdelay' in kw:
            self.rpdelay = kw.pop('startdelay')
        else:
            self.rpdelay = 0.2 default delay

        Thead.__init__(self, *args, **kw)

    def run(self):
        sleep(self.stdelay)
        while not self.stop.is_set():
            # invoke event here
            sleep(self.rpdelay)

def event_handler_btn_down(event):
    # needs to be binded somewhen
    br = BtnRepeater()
    bind(event.key,'key_release',br.stop.set) # this is no real pygame call - but you probably know what I'm talking about
    br.start()