2013-05-21 45 views
4

我正在編程微軟視覺工作室c#遊戲,我必須同時捕捉很多按鍵。我無法同時檢測到Q,W,E,R,T,Y,但我可以檢測到Q,W,E,R,T,A。多個同時按鍵c#

我試圖使用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"); 
} 
+3

你能告訴我們你的代碼嗎? – GrandMasterFlush

+2

可能是您的鍵盤上的硬件限制? – pascalhein

+0

另外,你使用什麼技術? XNA? – pascalhein

回答

5

它可能與您的鍵盤有關。當我是一名玩家時,我知道這是鍵盤的一個屬性,可以同時發送多個擊鍵;根據鍵盤的不同,數字可能會有所不同,但不同的組合將會或不會起作用。

+0

感謝您的回答 – halil12

3

這就是所謂的重點滾動。 USB鍵盤只支持有限的鍵翻轉,而一些巧妙設計的PS/2鍵盤有n個鍵翻轉(很多很多的按鍵可以在同一時間被壓抑而不靜音額外的按鍵)

有一個讀:Wikipedia Description