1.開発ツール
・VC
2.言語
・C言語(Win32API?)
以上の環境でキーが同時に二つ以上押されたときに、
押されたキーコードを一度にすべて取得する事て、
可能ですか?「peekmessage」とか使っているのですが・・・
例、abcdを同時に押し場合に、
key_buff[]には、a,b,c,dとセットされているようにしたいんです。
簡単な方法があればと思い、アドバイスをよろしくお願いします。
キーボードI/Fの特性上ムリかと
キーボード入力は1キー単位でバッファに送られてくるからです
但し、シフトキー、CTRLキー等の特殊キーならば同時に認識できますよ。
任意のタイミングでキーが押されているかどうかを判別するなら GetAsyncKeyState と
か GetKeyBoardState とかでできそうですが、キーが押されたことを検出するとなる
と… SetWindowsHookEx ですかね?
フックでも通知されるキーコードはひとつずつなので、フックではタイミングだけ検出
して、押されているキーは前述ので、とか。
いい加減なこと言ってたらごめんなさいです
試しにエディタ等でテストしてみてください。
同時にa→bと押す(押しっぱなし)と、abbbbb・・・となります。
押しっぱなしにすると最後に押したキーのデータが入力される。
これは、キーボード側の仕様ですので本体側では検知できないと思います。
キーボード側にもコントローラが入っていて、シリアル通信で本体側に転送しています。
エディタ等がそう動くのは、WM_CHAR 系をもとに動いているからです
>これは、キーボード側の仕様ですので本体側では検知できないと思います。
>キーボード側にもコントローラが入っていて、シリアル通信で本体側に転送しています。
確かにそのとおりですが、その情報を元に、OSが内部的なバッファにすべてのキーが
押されたか押されていないかを溜めこんでいます
それを取り出すのが、GetKeyboardState です
(個別に取り出すのが GetAsyncKeyState)
ゲームのようなものを作りたいのなら
WM_TIMER もしくは、メッセージループの空き時間の中で
GetKeyboardState を呼び出せば出来ます
たみあさんへ
>それを取り出すのが、GetKeyboardState です
こんな関数があったんですね。勉強不足でした。