XNA 在 PC 中显示 Xbox 屏幕键盘
本文关键字:Xbox 屏幕 键盘 显示 PC XNA | 更新日期: 2023-09-27 17:56:37
我需要显示,并在类似xbox的屏幕键盘中输入一些文本。可悲的是,当我打电话给Guide.BeginShowKeyboardInput
时,只显示了一些有趣的文本框,我必须通过键盘填充它。我知道,在PC iv上使用键盘非常正常,但就我而言,我必须使用屏幕键盘上的xbox通过游戏手柄输入文本。
有什么办法可以做到这一点吗?在PC上呼叫xbox屏幕键盘?
如果您需要像触摸屏显示器一样的显示器,您可以这样做
using System.Diagnostics;
using System.IO;
然后使用此功能
Process.Start(Environment.GetFolderPath(Environment.SpecialFolder.System) + Path.DirectorySeparatorChar + "osk.exe");
但是,如果您需要它像Xbox控制器一样使用,则可能需要构建自己的控制器。
No.这是一个设计决策(记录在此处),旨在让最终用户控制正在调用的键盘。因此,最终用户必须触摸文本框(或类似内容)才能调用虚拟屏幕键盘。
检查此文本形成此链接
块引用 用户驱动的调用 触摸键盘的调用模型旨在让用户控制键盘。用户通过点击输入控件而不是让应用程序代表他们做出该决定来向系统指示他们想要输入文本。这会将意外调用键盘的情况减少到零,这可能是 UI 改动的痛苦来源,因为键盘可能会占用多达 50% 的屏幕并损害应用程序的用户体验。为了启用用户驱动的调用,我们跟踪上次触摸事件的坐标,并将其与当前具有焦点的元素的边界矩形的位置进行比较。如果该点包含在边界矩形内,则调用触摸键盘。
块引用 这意味着应用程序无法通过操作焦点以编程方式调用触摸键盘。过去,这里的罪魁祸首是网页 - 其中许多默认将焦点设置为输入字段,但在其页面上提供了许多其他体验供用户享受。一个很好的例子是 msn.com。该网站有很多可供消费的内容,但碰巧在其页面顶部有一个 Bing 搜索栏,默认情况下会获得焦点。如果自动调用键盘,则默认情况下,位于该搜索栏下方的所有文章都将被遮挡,从而破坏网站在平板电脑上的体验。在某些情况下,必须点击以获取键盘感觉不太好,例如当用户启动新电子邮件或打开"搜索"窗格时。但是,我们认为要求用户点击输入字段是可以接受的折衷方案。
退房: http://classes.soe.ucsc.edu/cmps020/Winter08/lectures/controller-keyboard-input.pdf
您可能会在这里找到答案,它包含有关游戏手柄输入等的所有信息。
这里有一个关于如何做到这一点的很好的指南:
static public string GetKeyboardInput()
{
if (HandleInput.currentState.IsButtonDown(Buttons.B))
{
useKeyboardResult = false;
}
if (KeyboardResult == null && !Guide.IsVisible)
{
string title = "Name";
string description = "Pick a name for this game";
string defaultText = "Your name here";
pauseType = PauseType.pauseAll;
KeyboardResult = Guide.BeginShowKeyboardInput(HandleInput.playerIndex, title,
description, defaultText, null, null);
useKeyboardResult = true;
pauseType = PauseType.pauseAll;
}
else if (KeyboardResult != null && KeyboardResult.IsCompleted)
{
pauseType = PauseType.none;
KeyboardInputRquested = false;
string input = Guide.EndShowKeyboardInput(KeyboardResult);
KeyboardResult = null;
if (useKeyboardResult)
{
return input;
}
}
return null;
}
您的 Update 方法应包含如下内容:
if (KeyboardInputRequested)
{
string result = GetKeyboardInput();
}
if (result != null)
{
//use result here
}
屏幕键盘不太可能打包在PC的XNA DLL中,但如果你真的想找出答案,你可以研究一个免费的.NET反编译程序(如ILSpy)并查看它。
此外,您也不能使用聊天小键盘。我建议要么制作自己的屏幕键盘,控制器可以使用,或者,如果可以的话,使用MonoGame框架(XNA的开源版本),并将其修改为在Windows上具有屏幕键盘。您还可以创建一个单独的程序,充当由控制器控制的虚拟键盘。