检测操纵杆按钮

问题描述

我有一个简单的脚本,如果按下按钮,我会显示一条消息。非常简单的脚本,但即使我按下了右键,屏幕上也没有显示任何内容

Joy1::
MsgBox,Joy1

Joy2::
MsgBox,Joy2

Joy3::
MsgBox,Joy3

Joy4::
MsgBox,Joy4

Joy5::
MsgBox,Joy5

这是我实际按下按钮的证据,在本例中为 1 和 2。

enter image description here

解决方法

看起来是因为 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