ツールを作っていましてユーザー定義のホットキーを設定したいのですが、
適当な方法が分かりませんでしたので質問させていただきました。
現在僕が考えている方法は、
オプション画面のキー割り当て受付中に「すべてのキーを取得する関数」で取得した値を、
同じく「すべてのキーを取得する関数」と所得した値を常時比較して判定するといったものです。
自分で言っておきながらなんですが、とても気持ちの悪いプログラムだと思います。(重そう)
ここで問題になる「すべてのキーを取得する関数」ですが、onkeyだと漏れがありますし、
これは使えそうと思ったGetKeyboardState関数も、僕の知識不足のために使い方が分からず。
(常時押されたままのキー(変動する)が複数あり、調べてみるとF17とか何とか……???)
※参考にしたキーコード一覧
http://kts.sakaiweb.com/virtualkeycodes.html
僕が使用しているキーボードは、
Acer aspire(ノート型)付属のものです。
yahooブログでホットキー(?)のhspモジュールを公開している方を見かけましたが、
/* 元のサンプル以下より http://hsp.tv/play/pforum.php?mode=pastwch&num=36534#36554 */ #uselib "user32" #func GetKeyboardState "GetKeyboardState" var title "キーの状態を取得" sdim keys,256 repeat redraw 0 color 255,255,255 boxf 0,0,640,480 color 0,0,0 GetKeyboardState keys sumkeystate=0; for y,0,16 for x,0,16 if peek(keys,y*16+x) & 0x80 { pos x*30,y*20 mes str(y*16+x) } sumkeystate+=peek(keys,y*16+x); next next if gettime(7)<980: pos 0,460: mes "SUM="+sumkeystate; redraw 1 await 10 loop
動作がいまいちで納得の行くような結果を得られませんでした。
他に正規のホットキーの実装方法があるのではないかとも考えました。
(自力では見つけることができませんでしたが)
hspでホットキーのような動作を実現する方法について、ご教示くださいませんか?