如何找到自动按住某个键的

问题描述 投票:0回答:2

假设我想在特定持续时间内自动按住按键

h
,例如 10 秒。

我的第一个想法是

AutoHotKey
,然后我尝试了。

#Requires AutoHotkey v2.0
*s::
{
    Send "{h down}" 
    Sleep 10000
    Send "{h up}" 
}

它有效。但它点击的是

h
,而不是按住它。我查看了 AutoHotKey 论坛,没有人知道如何使其自动,最好的解决方案是按住扳机,这达不到目的。

然后我去了

PyAutoGUI
,尝试制定一个简单的解决方案,例如

import pyautogui
import time


pyautogui.keyDown('h')
time.sleep(10)
pyautogui.keyUp('h')

不知何故,它只点击

h
,而不是按住它。

我尝试了 AutoHotKey 和 PyAutoGUI,它们只能点击按键,而不能按住它。

python automation macros autohotkey pyautogui
2个回答
2
投票

这是 AHK 的标准行为。
请参阅重复或按住某个键

要像使用真实键盘一样模拟重复按键,您必须使用循环或计时器。

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
#SingleInstance force

settimer, fire, 50
settimer, fire, off

F2::
    send h
    sleep 500
    settimer, fire, on
    keywait, F2
    settimer, fire, off
return

fire:
    send h
return

0
投票

可能有2个问题:

1。程序是这样的

制作您的游戏的游戏引擎可能不关心获得 按住事件。通常他们会检查钥匙是否处于按下状态。

2。有虚拟键盘预防系统

这不太可能,但可以解释为什么它不成立。

指定按住操作的上下文将帮助我们了解问题所在并重新创建它。

© www.soinside.com 2019 - 2024. All rights reserved.