首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pynput按键积压

pynput按键积压
EN

Stack Overflow用户
提问于 2019-05-20 08:38:26
回答 1查看 604关注 0票数 0

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

我正在尝试写一个python (python 3.7.3,如果有用的话)程序,当反斜杠("\")键被按住时,它会发送垃圾邮件给左键(用于在线游戏)。我将鼠标按键绑定到"\",这样就不必检测鼠标左键并遇到程序检测鼠标点击的问题)。我的代码目前可以工作,但当"\“被释放时,根据它被按住的时间,它需要几秒钟才能停止点击。

下面是我的代码:

代码语言:javascript
复制
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()

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

EN

回答 1

Stack Overflow用户

发布于 2019-05-21 00:06:14

对于将来遇到同样问题的任何人: idk如何通过积压来解决原始问题,但通过线程解决了这个问题。下面是我的代码:

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

代码语言:javascript
复制
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()

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

代码语言:javascript
复制
thrCount = 40
print(thrCount, 'threads')
for _ in range(thrCount):
    clickThreadList.append(Thread(target=click))
for thr in clickThreadList:
    thr.start()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56213125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档