You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows 10下如何读取有线Xbox One控制器的原始数据?

读取Windows 10上有线Xbox One控制器的原始数据

嘿,针对你要读取Xbox One有线控制器原始输入数据(不是封装好的按键触发事件)的需求,给你几个靠谱的实现思路:

方法1:用XInput API(微软官方推荐,最适配Xbox控制器)

Xbox控制器原生适配XInput,它能直接返回未加工的摇杆、扳机数值,还有按键的原始状态位:

  • 先初始化XInput,然后调用XInputGetState()获取控制器状态,返回的XINPUT_STATE结构体里全是你要的原始数据:
    • Gamepad.wButtons:按键的原始位掩码,每个按键对应一个二进制位,比如XINPUT_GAMEPAD_A对应第0位,直接读这个值就能知道按键的实时原始状态(非0就是按下)
    • Gamepad.sThumbLX/Gamepad.sThumbLY:左摇杆X/Y轴的原始16位整数,范围是**-32768到32767**
    • Gamepad.sThumbRX/Gamepad.sThumbRY:右摇杆的原始数据,范围同上
    • Gamepad.bLeftTrigger/Gamepad.bRightTrigger:扳机的原始8位数值,范围0到255(完全松开是0,按到底拉满255)
  • 给你个C++的极简示例片段:
#include <Xinput.h>
#pragma comment(lib, "Xinput.lib")

int main() {
    XINPUT_STATE controllerState;
    ZeroMemory(&controllerState, sizeof(XINPUT_STATE));
    
    // 读取第0个控制器的状态(最多支持4个)
    DWORD status = XInputGetState(0, &controllerState);
    if (status == ERROR_SUCCESS) {
        // 左摇杆X轴原始值
        short leftStickX = controllerState.Gamepad.sThumbLX;
        // A键原始状态(非0表示按下)
        bool aButtonPressed = (controllerState.Gamepad.wButtons & XINPUT_GAMEPAD_A) != 0;
        // 左扳机原始值
        BYTE leftTriggerRaw = controllerState.Gamepad.bLeftTrigger;
    }
    return 0;
}

方法2:用Raw Input API(更底层,拿HID原始报告)

如果你需要最底层的原始数据(比如控制器直接发送的HID字节流),可以用Windows的Raw Input API:

  • 先注册Raw Input设备,指定RIDEV_INPUTSINK标志来监听Xbox控制器的HID输入
  • 在窗口程序里处理WM_INPUT消息,从RAWINPUT结构体里提取HID报告数据——这就是控制器发给系统的最原始的字节数据
  • 这个方法需要你自己解析Xbox One控制器的HID报告格式,相对麻烦,但能拿到完全未加工的输入

方法3:Python快速验证(不用写编译代码,适合快速测试)

如果只是想快速拿到原始数据看看效果,用Python的inputs库最方便,它直接输出每个输入的原始状态值:

from inputs import get_gamepad

while True:
    # 获取所有控制器的原始输入事件
    rawEvents = get_gamepad()
    for event in rawEvents:
        # 输出原始数据:输入类型 + 原始值
        print(f"原始输入: {event.code} = {event.state}")

注:先通过pip install inputs安装库,运行后你会看到摇杆的原始整数、按键的按下/释放原始状态(1=按下,0=释放)、扳机的原始数值等。


内容的提问来源于stack exchange,提问作者James A

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:22:43