如何在键盘上同时读取键?

时间:2012-03-25 21:47:09

标签: input keyboard simultaneous

我的问题表现在我的孩子年龄,当我开始玩新游戏时,给我留下了非常深刻的印象。

游戏能够同时看到并响应超过4,6个有时8个按键。这怎么可能?这个有限吗?或者,如果我按下“a,s,d,f,u,v,shift,0,uparrow,rightcltr,return和backspace”所有thogheter,程序可以“读取”吗?关于它的一些介绍(在C,bashscript,javascript或phyton中)将受到高度赞赏。感谢您的任何努力。

2 个答案:

答案 0 :(得分:2)

通过跟踪按下按键时发生的事件以及释放按键时发生的事件,您当然可以对多个同时按键作出反应。例如,在X11中,这些事件是KeyPress and KeyRelease,在Web浏览器中,它们是KeyDown和KeyUp Javascript事件。但是我想你会发现大多数键盘对可以同时检测到多少按键的物理限制,所以你的例子是“a,s,d,f,u,v,shift,0,uparrow,rightcltr,返回和退格“可能是太多的键。

答案 1 :(得分: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
}