2012-03-25 58 views
0

我的問題表現在我的孩子的年齡,當我有一個新的遊戲玩,並留下深刻的印象。如何同時閱讀鍵盤上的按鍵?

遊戲能夠看到和反應超過4,6,有時8鍵同時按下。這怎麼可能?這是有限制的嗎?或者如果我按下「a,s,d,f,u,v,shift,0,uparrow,rightcltr,return和backspace」,程序就可以「讀取」它?關於它的一些介紹(在C,bashscript,JavaScript或者phyton中)將不勝感激。感謝這裏的任何努力。

回答

2

您可以通過跟蹤按下按鍵時發生的事件並分別釋放按鍵時發生的事件來確定對多個同時按下按鍵的反應。例如,在X11中,這些事件是KeyPress and KeyRelease,而在Web瀏覽器中,它們是KeyDown和KeyUp Javascript事件。但是我認爲你會發現大多數鍵盤對於同時有多少按鍵可以被電檢測到有物理限制,所以你的例子「a,s,d,f,u,v,shift 0,uparrow,rightcltr,返回和退格「可能是太多密鑰。

+0

感謝您的回答!我真的很想知道這個限制。對不起,但這個物理限制看起來像是一個神話。如果這是真的,那麼極限在哪裏?我正在計劃一個遊戲,我需要知道,因爲遊戲可以是鍵盤上的2個玩家。 – 2012-03-25 22:10:58

+0

對不起,我不知道限制。正如你所說,這可能是一個神話。過去老式鍵盤肯定是這樣,我只是假定它仍然是真的。 – Celada 2012-03-25 22:34:25

2

如果我們談論Windows,GetKeyboardState()會將256個虛擬鍵的狀態複製到指定的緩衝區。

BYTE keys[256]; 

if(GetKeyboardState(keys)) 
{ 

    //check if A key is pressed 
    if((keys[VK_A]&0xF0) && !(prevKeys[VK_A]&0xF0)) 
    { 
    DoAPressed(); 
    } 
    //check if S key is pressed too 
    if((keys[VK_S]&0xF0) && !(prevKeys[VK_S]&0xF0)) 
    { 
    DoSPressed(); 
    } 
    // the same goes for all keys you want to check 
} 
+0

所以沒有限制! Weeeeee ..!-D – 2012-03-26 13:37:21

相關問題