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


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
0424
まいあひキーが押したままになる8解決


まいあひ

リンク

2007/4/24(Tue) 01:00:13|NO.7709


while color 0:boxf stick p,15 color 255:pos 0,0:mes p await 100 wend

とりあえずこれを実行して、shiftキーとテンキーをがちゃがちゃ押してみてください。
しばらくすると、キーがロックしてHSPを終了->再実行させてもpが0を返しません。
どうにかして解決できませんか?



この記事に返信する


りさ

リンク

2007/4/24(Tue) 02:26:23|NO.7711

こんにちわ、りさです。

やってみたのですが、仰られているようにはなりませんでした。

恐らくユーザー補助機能が作動したのではないでしょうか?
(Shiftキーを連打もしくは長押しすると有効になります)

ユーザー補助のオプションから設定変更できると思います。



まいあひ

リンク

2007/4/24(Tue) 08:17:23|NO.7713

ユーザー補助機能はきっています。
キーボードの種類によっては、再現できないようです。



eller

リンク

2007/4/24(Tue) 10:24:17|NO.7715

テンキーから指を離す前にShiftキーから指を離したのではないでしょうか?

指を離すときはテンキーを離してからShiftキーを離してみてください。



まいあひ

リンク

2007/4/24(Tue) 12:43:59|NO.7716

確かにシフトを先に離すと、以後ずっと方向キーが押しっぱなしの
状態になってしまうようです。
この状態をプログラム側で解除する方法はないでしょうか?
aplkey関連でキーコードの押下をon/offにしても無理でした。



eller

リンク

2007/4/26(Thu) 12:22:50|NO.7760

> この状態をプログラム側で解除する方法
ごめんなさい、私にはわかりません。
OS寄りの処理を行う必要がありそうですし、上級者でない限り避けて通る方がいい気がします。

もしテンキーをアローキー代わりに使いたいだけでしたら、↓のような方法も試してみてください。

while
stick key, 15 getkey tmp, 100 // テンキー4 key |= tmp getkey tmp, 104 // テンキー8 key |= tmp << 1 getkey tmp, 102 // テンキー6 key |= tmp << 2 getkey tmp, 98 // テンキー2 key |= tmp << 3 title str(key) wait 10 wend

論理演算(or)が理解できれば非常に簡単な方法です。
Shiftキーを押す必要もありませんし、応用しやすいと思います。



まいあひ

リンク

2007/4/26(Thu) 12:58:01|NO.7761

レスありがとうございます。
テンキーはテンキーとして使い、特殊な移動を行う際
シフト+テンキーとして、キーを取得したかったのです。

シフトキーとテンキーの押下状態を個別に取得しようとしても
シフトキーを押している間は、wparamもgetkeyもテンキーの押下を取得
しないようなので、解決する方法はないのかも。



osakana

リンク

2007/4/26(Thu) 14:39:54|NO.7763

詳しくは無いんですが解除するだけならなんとか出来ました。

#uselib "user32.dll" #func keybd_event "keybd_event" int,int,int screen 0,128,25 objsize 128,25 button gosub "OK",*a while stick p,15 title str.p wait 10 wend *a keybd_event 37,,2 keybd_event 38,,2 keybd_event 39,,2 keybd_event 40,,2 return



まいあひ

リンク

2007/4/26(Thu) 15:10:14|NO.7765

keybd_eventを使ってみたら、ずばり解決しました。
ありがとうございます。



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