问题描述
我有一个简单的脚本,如果按下按钮,我会显示一条消息。非常简单的脚本,但即使我按下了右键,屏幕上也没有显示任何内容。
Joy1::
MsgBox,Joy1
Joy2::
MsgBox,Joy2
Joy3::
MsgBox,Joy3
Joy4::
MsgBox,Joy4
Joy5::
MsgBox,Joy5
这是我实际按下按钮的证据,在本例中为 1 和 2。
解决方法
看起来是因为 AutoHotkey 使用旧 API 来检测密钥,至少在 Windows 10 中,reference。如果 AutoHotkey 窗口处于活动状态,它会检测到它们,例如当您右键单击 AutoHotkey 图标并选择“打开”时。我还能够使用 Lexikos 的 xinput library 以及该论坛 topic 的一些帖子制作一些东西,当在我的控制器(xbox 之一)上按下 'a' 时,下面会生成一个 MsgBox。
#Include path to xinput.ahk
SetTimer,checkForJoy1,100
checkForJoy1:
XInput_Init()
state := Xinput_GetState(0)
if(state) {
a_pressed := state.wButtons & 4096
if(a_pressed) {
Msgbox,Does this work [%a_pressed%]
}
}
return