4

我正在 microsoft visual studio c# 中编写游戏,我必须同时捕捉很多键。我无法同时检测到 Q、W、E、R、T、Y,但我可以检测到 Q、W、E、R、T、A。

我尝试使用 KeyDown,[DllImport("user32.dll")]但它们都有相同的结果。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");
}
4

2 回答 2

5

它可能与您的键盘有关。当我还是一名游戏玩家时,我知道能够同时发送多个击键是键盘的属性;根据键盘的不同,数字会有所不同,但不同的组合也会起作用或不起作用。

于 2013-05-21T15:28:53.730 回答
3

这称为密钥翻转。USB 键盘仅支持有限键翻转,而一些设计巧妙的 PS/2 键盘具有 n 键翻转(可以同时按下许多键而无需使额外按键静音)

阅读:维基百科描述

于 2013-05-21T15:39:05.383 回答