pynput按键记录

2024-04-25 19:45:27 发布

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

(注:编程初学者和堆栈溢出初学者,如果我做错了什么,很抱歉)

我正在尝试编写一个python(python3.7.3,如果有用的话)程序,当按住反斜杠(“\”)键时,它会弹出左键(用于在线游戏)。我将一个鼠标键绑定到“\”,这样就不必检测到鼠标左键单击,从而遇到程序检测鼠标单击的问题)。 我的代码目前可以工作,但是当“\”被释放时,根据它被持有的时间,它需要几秒钟的时间来停止单击。在

这是我的代码:

from pynput.keyboard import Key, Listener
import pyautogui


def key_down(key):
    if str(key) == "'\\\\'":
        pyautogui.click()

def key_up(key):
    if str(key) == "'\\\\'":
        print('key has been lifted')

with Listener(on_press=key_down,on_release=key_up) as l:
    l.join()

我做错什么了吗?有办法解决这个问题吗?在


Tags: key代码import程序ifdef时间鼠标
1条回答
网友
1楼 · 发布于 2024-04-25 19:45:27

对于将来有同样问题的人来说:idk如何用backlog解决最初的问题,但是用线程来解决它。下面是我的代码:

注意:“\\\”用来检查是否按下了反斜杠键,但pynput模块将其存储为“\\”,因此,由于反斜杠是转义字符,因此需要键入“\\\”,使其实际为“'\\”

from pynput.keyboard import Key, Listener
import pyautogui
from threading import Thread

shouldClick = False

def click():
    while True:
        while shouldClick:
            pyautogui.click()


def key_down(key):
    global shouldClick
    if str(key) == "'\\\\'":
        shouldClick = True


def key_up(key):
    global shouldClick
    if str(key) == "'\\\\'":
        shouldClick = False
        print('key has been lifted')


def listen():
    with Listener(on_press=key_down,on_release=key_up) as l:
        l.join()


listenThread = Thread(target=listen)
clickThread = Thread(target=click)

listenThread.start()
clickThread.start()

或者,如果要将单击的限制发挥到极致,可以添加以下代码:

^{pr2}$

相关问题 更多 >