我正在编写一个简单的实用程序类,它将XNA的KeyboardState.Keys
枚举转换为相应的char值,因此可以在我的游戏中输入文本。
作为测试,我使用以下代码确保Keyboard.GetState().GetPressedKeys()
正确返回Keys.None
或空Key[]
:
foreach (var item in Keyboard.GetState().GetPressedKeys())
Console.WriteLine(item);
不幸的是,这不是发生的事情。我的键盘的默认值似乎是Keys.Kanji
,原因有些奇怪。
我在这台电脑上安装了默认的Microsoft日语键盘/ IME。但是,我尝试在安装和不安装的情况下运行它,这似乎根本不会影响问题。
(旁注: Terraria 也是用XNA编写的,它的键绑定也会遇到同样的问题。)
修改:
在使用我的PC以及两个朋友进行测试后,在Windows 7上安装了日语IME时,XNA会错误地(?)报告Keys.Kanji
始终处于按下状态。这不是什么大问题,因为KeyboardState
对象之间的状态没有变化,所以它是可行的。怪异!
一位朋友没有使用日语IME的Windows 7,另一位朋友使用带有IME的Windows 8,我是唯一一个似乎遇到问题的人。