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

Xbox平台UWP应用中模拟游戏手柄输入问题求助

Xbox UWP应用手柄输入注入无响应的解决方案

我之前也碰到过一模一样的问题——UWP里模拟键盘输入完全正常,手柄按键却毫无反应,后来排查出几个关键的点,你可以照着试试:

1. 必须完整初始化手柄输入对象

Xbox平台对手柄输入的校验比PC严格很多,只设置Buttons字段是不够的,系统会要求所有参数都有合法的默认值,否则会直接忽略注入请求。修正后的代码应该是这样的:

var inputInjector = InputInjector.TryCreate();
if (inputInjector != null)
{
    // 初始化完整的手柄输入结构,未用到的轴/触发器全部设为0
    var gamepadPress = new InjectedInputGamepadInfo
    {
        Buttons = GamepadButtons.A,
        LeftTrigger = 0,
        RightTrigger = 0,
        LeftThumbstickX = 0,
        LeftThumbstickY = 0,
        RightThumbstickX = 0,
        RightThumbstickY = 0
    };
    // 注入按下动作
    inputInjector.InjectGamepadInput(gamepadPress);

    // 模拟释放按键(很多Xbox游戏需要检测完整的按下-释放周期才会响应)
    var gamepadRelease = new InjectedInputGamepadInfo
    {
        Buttons = GamepadButtons.None,
        LeftTrigger = 0,
        RightTrigger = 0,
        LeftThumbstickX = 0,
        LeftThumbstickY = 0,
        RightThumbstickX = 0,
        RightThumbstickY = 0
    };
    inputInjector.InjectGamepadInput(gamepadRelease);
}

2. 再次确认权限配置的细节

虽然你已经添加了inputInjectionBrokered权限,但要确保包清单的配置没有遗漏:

  • 根Package节点必须包含rescap命名空间:xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
  • IgnorableNamespaces要包含rescap:IgnorableNamespaces="rescap"
  • <Capabilities>节点下的权限声明不能嵌套在其他节点里,必须是直接子节点:
    <Capabilities>
        <rescap:Capability Name="inputInjectionBrokered" />
    </Capabilities>
    

3. 确认输入注入的时机

有些Xbox游戏或应用只会在前台激活状态下监听输入,所以要确保你是在目标应用处于前台、或者自己的UWP应用处于激活状态时执行注入代码。

另外,你的应用和Xbox系统版本都是16299,这个版本对InputInjector的手柄注入支持是完整的,版本匹配度没问题。

内容的提问来源于stack exchange,提问作者Jakub Krampl

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:50:08