C#中同时按下多个按键

4
我正在使用Microsoft Visual Studio C#编程游戏,需要同时捕获许多按键。我无法同时检测到Q,W,E,R,T,Y键,但可以检测到Q,W,E,R,T,A键。
我尝试使用KeyDown和,但两者的结果相同。 Y键和A键有什么区别,我该如何解决这个问题?
int code1 = GetVirtualKeyCode(Keys.Q);
int code2 = GetVirtualKeyCode(Keys.W);
int code3 = GetVirtualKeyCode(Keys.E);
int code4 = GetVirtualKeyCode(Keys.R);
int code5 = GetVirtualKeyCode(Keys.T);
int code6 = GetVirtualKeyCode(Keys.Y);
if ((array[code1] & 0x80) != 0 &&
    (array[code2] & 0x80) != 0 &&
    (array[code3] & 0x80) != 0 &&
    (array[code4] & 0x80) != 0 &&
    (array[code5] & 0x80) != 0 &&
    (array[code6] & 0x80) != 0)
{
    listBox1.Items.Add("asdasdasd");
}

3
你能展示一下你的代码吗? - GrandMasterFlush
2
你的键盘可能存在硬件限制? - pascalhein
不要在注释中放置代码。正如您所看到的那样,它是无法阅读的。在您的问题下面有一个编辑按钮。点击它,将代码粘贴到您的问题中,并通过突出显示它并单击编辑器窗口上方的“{}”按钮来缩进四个空格。 - Robert Harvey
1
这可能是硬件限制。当您同时按下某些键时,某些组合可能无法正常工作。 - Matthew Watson
@RoberHarvey - 有道理,当然逻辑会指出,字节就是字节,所以两者都不应该起作用。我们只是按照作者的话去做,如果另一个方法不起作用,这更有意义。 - Security Hound
显示剩余5条评论
2个回答

5

这可能与您的键盘有关。当我是一名游戏玩家时,我知道键盘可以同时发送多个按键;根据键盘的不同,发送的按键数量和组合情况也会有所不同。


3
这被称为按键换位。USB键盘只支持有限的按键换位,而一些设计巧妙的PS/2键盘具有n键换位(可以同时按下许多键而不会屏蔽其他按键)。请参阅:维基百科描述

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接