【问题标题】:Pynput and pyAutoGui can't hold keysPynput 和 pyAutoGui 不能保持键
【发布时间】:2021-05-22 19:55:03
【问题描述】:

我想制作一个简单的宏来按住'W'一段时间,但即使是这样的简单脚本也不起作用。

import time
import pyautogui
from pynput.keyboard import Key, Controller
keyboard = Controller()
pyautogui.keyDown('w')
time.sleep(3)
pyautogui.keyUp('w')
time.sleep(5)
keyboard.press('w')
time.sleep(3)
keyboard.release('w')

如果我在任何文本编辑器/文本输入窗口中对其进行测试,它将在脚本启动时写入一个“w”,并在 8 秒后写入另一个,而不保留/发送垃圾邮件。因此,它不适用于任何游戏,这应该是该脚本的全部目的。我在各种不同的游戏(Java Minecraft、源 Gmod、Roblox 和一些统一游戏)中尝试过,但这个脚本在其中任何一个中都不起作用,但如果游戏有聊天、搜索框或任何其他文本输入窗口, 这个脚本会在里面写一个'w',然后再写一个。

我真的不知道为什么会这样,但我记得两年前我尝试在 pynput 上制作类似的脚本并且它确实有效,所以我尝试安装旧版本的 pynput,但这对我也没有帮助...

【问题讨论】:

  • 这能回答你的问题吗? How to hold keys down with pynput?
  • @ack 不,我看过这篇文章,但它对我没有帮助,因为我在我的脚本中做同样的事情

标签: python python-3.x keyboard pyautogui pynput


【解决方案1】:

这可能是一个开始:

#https://stackoverflow.com/questions/66284097/pynput-and-pyautogui-cant-hold-keys
#simulate keystroke for some amount of time

import msvcrt
import time

def press(char, duration, sleep, limit=None):
    while True:
        lim = limit
        t1 = time.time()
        while time.time() - t1 < duration:  # do for duration specified
            msvcrt.putch(char)  # output character, putch() awaits a byte string
            if lim:  #  limit specified?
                lim -= 1
                if lim == 0:  # limit reached
                    break
        time.sleep(SLEEP)

        if msvcrt.kbhit():  # key pressed?
            char = msvcrt.getch()

press(b'w', .001, 2, None)

【讨论】:

  • 抱歉这么长的回复,但这种方法对我来说是行不通的。事实上,我尝试了不同的宏软件,但它并没有工作,所以我猜这是我将尝试追踪的一些系统错误......
  • 这种方法对我不起作用 - 究竟是什么不起作用?发生了什么不应该发生的事情?什么不应该发生?
【解决方案2】:

所以经过很长时间,我终于可以解决这个问题,我发现问题的根源在于微软的 DirectInput。基本上 pynput 和 pyAutoGUI 无法进入 DirectInput 并且根本没有信号,而我认为有信号,但是时间太短以至于游戏无法接收它。多亏了这个人PyAutoGUI not working? Use DirectInput,这个问题的解决方案非常简单。感谢他的 PyDirectInput 库,您可以使用 python 来模拟游戏中的按钮按下和按住!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-17
    • 1970-01-01
    • 2021-03-12
    • 2021-08-11
    • 2019-02-02
    • 2019-08-02
    • 2020-11-03
    • 2022-12-07
    相关资源
    最近更新 更多