2012-03-25 72 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

相关问题