HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2020
0720
krgrgキー同時押しの個数を取得したいです2解決


krgrg

リンク

2020/7/20(Mon) 06:56:58|NO.91041

キーの同時押しはできるんですが、個数を取得するのが判りません
良い方法はありますか?



この記事に返信する


沢渡

リンク

2020/7/20(Mon) 11:16:20|NO.91042

まず思いつくのはgetkeyで対象となるキーをひとつひとつ調べ、
押されているキーの数を把握するという方法ですが、
これだと負荷がかかりそうなので、GetKeyboardStateで
全キーの状態をまとめて取得する方法にしてみました。

#include "user32.as" sdim keystat,256 //256バイトのバッファを確保 repeat GetKeyboardState varptr(keystat) //キーボードのキー入力状態をまとめて取得しバッファに格納 n=0 //押されているキーの個数 repeat 26,0x41 //例として[A](0x41)〜[Z]の26個のキーを調べる n+=((peek(keystat,cnt)&0x80)!=0) //キーが押されていると、対応するバイトの最上位ビットが1になる。 //よって、&0x80をすれば、キーが押されている場合は0x80が返る。 loop title str(n) await 33 loop
ただし、多数のキーを同時押ししても、大抵のキーボードでは
そのすべてを検出することはできません。
また、どのような組み合わせなら同時押しを認識できるのかも、
キーボードによってまちまちです。
(たとえば私のキーボードは、最大なら6個まで同時押しを取得できますが、
 組み合わせによっては2個同時しか取得できません)
これはキーボードのハードウェア的な仕様なので、
ソフトウェア的にはどうしようもできません。



krgrg

リンク

2020/7/20(Mon) 18:26:58|NO.91046

おおお、確かに全部同時はありえないので、個数限定で行けば軽く済みそうです。
これを足がかりにやってみます。
また機会があればよろしくお願いします、どうも、ありがとうございました!



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.91041への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

解決したら質問者本人がここをチェックしてください。

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

ONION software Copyright 1997-2018(c) All rights reserved.