【问题标题】:Disable Xbox Controller Input in Xamarin UWP App在 Xamarin UWP 应用中禁用 Xbox 控制器输入
【发布时间】:2022-01-04 18:10:31
【问题描述】:
我的应用程序设计为主要使用鼠标和键盘进行交互。这是用户应该设置所有设置和初始条件的方式,但是一旦他们准备好,他们可以单击一个按钮,应用程序将开始基于连接的 Xbox 控制器发送 UDP 消息。此时我根本不希望 Xbox 控制器能够影响 UI,我只想读取它的状态来构造这些 UDP 消息。现在,情况并非如此,用户可能会在无意中按下“停止传输”按钮。我找不到任何关于如何实现这一点的文档。有人问了here 类似的问题,但没有给出答案。
【问题讨论】:
标签:
input
uwp
focus
xamarin.uwp
【解决方案1】:
我设法想出了一个似乎效果很好的解决方法。首先,我做了一个隐藏按钮:
<Button x:Name="nothingButton" IsVisible="false"/>
在代码隐藏中,我将其 Unfocused 处理程序设置为在我不希望 Xbox 控制器影响 UI 时重新关注它(即每当我的 mainPageViewModel.IsTransmitting 布尔值为 true 时):
nothingButton.Unfocused += (sender, e) =>
{
if (mainPageViewModel.IsTransmitting)
{
nothingButton.Focus();
}
};
最后,一旦我想进入这种不影响 UI 的状态,我只需要在将 IsTransmitting 设置为 true 后强制将焦点放在隐藏按钮上。这很笨拙,但它完全符合我的要求。
【解决方案2】:
在 Xamarin UWP 应用中禁用 Xbox 控制器输入
它在 github 中看起来已知 feature request,并且 msft 提供了一种解决方法,即编辑 regedit,派生 cmets,它看起来是仅适用于 windows 11 的新 reg 密钥。
我加入了 Release Preview 频道下的 Windows Insider Program 以获得 Windows 11 和注册表更改工作。
您可以尝试更新到 Windows 11,并在新的 reg 密钥上进行测试。