何らか(不特定)のキー入力を調べる関数 – プログラミング – Home

何らか(不特定)のキー入力を調べる関数
 
通知
すべてクリア

[解決済] 何らか(不特定)のキー入力を調べる関数


カイナ
 カイナ
(@カイナ)
ゲスト
結合: 18年前
投稿: 8
Topic starter  

環境:xp, vc6, win32API

GetKeyboardState の様に関数呼び出し時に、何らかのキーが押されているか、まったく
押されていないかを調べる関数は無いでしょうか?
押されているキーの情報は必要ありません。

今は下記の様に実装しています。
BOOL isKeyDown() {
BYTE key[256];
::GetKeyboardState( key );
for ( i=0; i<=0xE2; i++ ) {
if ( key[i] & 0x80 ) return TRUE;
}
return FALSE;
}
この様な動作をする関数を望んでいます。


引用未解決
トピックタグ
仲澤@失業者
(@uncle_kei)
Prominent Member
結合: 5年前
投稿: 828
 

無いですね。

一般に、GUIでは任意のキーが押されているかどうかを知る必要は、
まったくないと考えられるので、用意されなかったのでしょう。
その代わり、GetKeyState()で指定のキーの状態は取得できます。

んで、想像力がないもんで、さっぱりわからないのですが、
isKeyDown()って、どんな場面で使うのでしょう。
差し支えなかったら、お教えください。


返信引用
カイナ
 カイナ
(@カイナ)
ゲスト
結合: 18年前
投稿: 8
Topic starter  

ゲームなのですが、ページ送りやデモ画面からプレイ画面に戻るに『-何かキーを押して
ください-』的なことがやりたかったんです。可能性のあるキーの状態を一つ一つチェッ
クしていくのもスマートではないかなと思ってしまったもので。
DxLibというライブラリで CheckHitKeyAll というのがあるようなので同じような関数が
ないかなと思ったのですが残念です。

仲澤@失業者さん、回答ありがとうございました。


返信引用
仲澤@失業者
(@uncle_kei)
Prominent Member
結合: 5年前
投稿: 828
 

あぁ、ゲームならありえますね(vv;)。

さて、isKeyDown() ですが、0xE2( 直前はAXキーですね、なつかし)
まで、検知しているのは良いのですが、先頭部分が0x00からに
なっています。
最初の方は、「マウスのボタン」に割り当てられているので、
純粋にキーボードだけをとりたい場合は 0x08 あたりからに
すべきかも知れません。わかってやっている場合は
かまいませんけど(vv;)。


返信引用
カイナ
 カイナ
(@カイナ)
ゲスト
結合: 18年前
投稿: 8
Topic starter  

最初は何も考えず0~255の範囲でやったのですが、どうも常に最上位ビットが立っている
物があるのか、うまくいかなかったので仮想キーコード表を見てここまででいいかなと
『0xE2』にし、マウスボタンは反応してもいいかなとそのままにしました。
常に最上位ビットが立っている物が中間あたりになくて助かりました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました