我需要显示,并在类似xbox的屏幕键盘上输入一些文字。可悲的是,当我拨打Guide.BeginShowKeyboardInput
时,只显示了一些有趣的文本框,我必须通过键盘填充它。我知道,在PC上使用键盘非常正常,但在我的情况下,我必须通过游戏手柄输入文本,使用屏幕键盘上的xbox。
有没有办法实现这个目标?在PC上调用xbox屏幕键盘?
答案 0 :(得分:4)
如果您需要一个像触摸屏显示器那样可以
using System.Diagnostics;
using System.IO;
然后使用此功能
Process.Start(Environment.GetFolderPath(Environment.SpecialFolder.System) + Path.DirectorySeparatorChar + "osk.exe");
但如果您需要它像xbox控制器一样工作,您可能需要构建自己的
答案 1 :(得分:2)
没有。这是一个设计决策(在此记录),以便最终用户控制被调用的键盘。因此,最终用户必须触摸文本框(或类似物)以调用虚拟屏幕上键盘。
检查this text f或此链接
Blockquote用户驱动的调用 触摸键盘的调用模型旨在使用户控制键盘。用户通过点击输入控件向系统指示他们想要输入文本,而不是让应用程序代表他们做出决定。这会将键盘意外调用的情况降低到零,这可能是一个痛苦的UI流失源,因为键盘可能会消耗高达50%的屏幕并损害应用程序的用户体验。为了启用用户驱动的调用,我们跟踪最后一个触摸事件的坐标,并将它们与当前具有焦点的元素的边界矩形的位置进行比较。如果该点包含在边界矩形内,则调用触摸键盘。
Blockquote这意味着应用程序无法通过操作焦点以编程方式调用触摸键盘。过去的重大肇事者是网页 - 其中许多人默认将焦点设置为输入字段,但在其页面上提供了许多其他体验供用户欣赏。一个很好的例子是msn.com。该网站有很多内容供消费,但碰巧在其页面顶部有一个Bing搜索栏,默认情况下需要关注。如果自动调用键盘,默认情况下位于搜索栏下方的所有文章都会被遮挡,从而破坏了网站在平板电脑上的体验。在某些情况下,必须点击以获取键盘感觉不太好,例如当用户启动新电子邮件或打开“搜索”窗格时。但是,我们认为要求用户点击输入字段是一种可接受的折衷方案。
答案 2 :(得分:1)
结帐:http://classes.soe.ucsc.edu/cmps020/Winter08/lectures/controller-keyboard-input.pdf
您可以在这里找到答案,它包含有关游戏手柄输入的所有信息等。
答案 3 :(得分:1)
有关如何执行此操作的良好指南here:
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
}
答案 4 :(得分:0)
屏幕键盘不太可能打包在PC的XNA DLL中,但是如果你真的想知道,你可以研究一个免费的.NET反编译程序(比如ILSpy)并查看它。 / p>
此外,you can't use the chatpad either。我建议你制作一个可供控制器使用的自己的屏幕键盘,或者,如果可以的话,可以使用MonoGame框架(XNA的开源版本),并修改它以使屏幕上的键盘可用视窗。 您还可以创建一个单独的程序,作为由控制器控制的虚拟键盘。