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

如何通过类似Sendkeys的方式对Xinput已接入手柄发送按键指令?

向物理XINPUT手柄注入输入的可行方案

首先明确核心前提:Windows公开API没有提供直接向物理XINPUT设备发送模拟输入的原生接口,XINPUT协议的设计定位是向上层应用读取物理手柄的输入数据,不存在类似键盘扫描码的通用输入注入链路,你之前的键盘模拟方案无法直接复用到XINPUT设备上。

目前有两种落地性最高的实现路径:

方案1:HID底层报文注入(仅适用于标准HID协议的第三方XINPUT手柄)

  • 适用场景:你使用的是第三方非Xbox官方的XINPUT兼容手柄,这类手柄大多遵循标准HID设备规范
  • 实现逻辑:直接向物理手柄对应的HID设备端点写入模拟按键的HID报告报文,无需创建虚拟控制器
  • 操作步骤:
    1. 安装pyhidapi库,枚举当前系统连接的HID设备,通过手柄的VID/PID定位到目标设备实例
    2. 查询对应手柄的HID报告描述符,明确按键、摇杆、扳机对应的报文位定义
    3. 构造符合协议的按键触发报文,调用hid_write接口发送给设备即可完成输入模拟
  • 限制:不支持Xbox第一方手柄,这类手柄走专有XUSB协议,不支持标准HID报文写入

方案2:应用层XINPUT API Hook(全设备兼容,优先级最高)

  • 适用场景:你需要将模拟的输入提供给特定目标应用使用,兼容所有XINPUT设备(包括Xbox官方手柄)
  • 实现逻辑:不直接操作硬件,而是拦截目标应用读取手柄输入的API调用,修改返回的输入数据结构,应用会完全认为是物理手柄触发的输入
  • 操作步骤:
    1. 使用pymem或frida库挂载到目标应用进程
    2. Hook目标进程调用的XInputGetState系列API,修改返回的XINPUT_STATE结构体数据:例如要按下A键,就将Gamepad.wButtons字段的XINPUT_GAMEPAD_A标志位置1
    3. 将修改后的结构体返回给应用即可完成输入注入
  • 优势:无需适配不同手柄的硬件协议,兼容性覆盖所有XINPUT设备,实现成本更低

内容的提问来源于stack exchange,提问作者Regretful YouTuber

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:00:05