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


HSPTV!掲示板


未解決 解決 停止 削除要請

2025
0111
ハリサカgetkey の小さな疑問9解決


ハリサカ

リンク

2025/1/11(Sat) 20:11:41|NO.102896

以下のスクリプトは getkey で
テンキーの0 / SHIFT / ALT
の押下情報を表示したものですが、
2つ疑問があります。

SHIFT を先に押したまま、テンキー0 も同時に押すと、SHIFTは0になり、テンキーも反応していません。
逆にテンキーを先に押したまま、SHIFTを押し、そのままSHIFTを押しながらテンキーを離すと、
テンキーは検出されっぱなしです。しかもウィンドウを閉じて F5 で実行してもなお検出されっぱなしです。

もうひとつは ALT は何度も連打していると、たまにトグルスイッチ切り替えのように、離しても検出されっぱなしになってしまいます。

これは、私のキーボードや、SHIFT同時押し設定のOS側の環境依存なのか、これが getkeyの 正常な挙動なのかが
分かりません。 どうぞよろしくお願いいたします。




*main title " テンキー0 / SHIFT / ALT の押下情報" getkey numpad0, 96 getkey shift, $A0 getkey alt, 18 color 255,255,255 pos 200, 100 mes " numpad 0 = " + numpad0 mes " shift = " + shift mes " alt = " + alt redraw 1 : redraw 2 : color : boxf : await 30 goto *main



この記事に返信する


ハリサカ

リンク

2025/1/11(Sat) 20:18:04|NO.102897

ごめんなさい、上記の

左シフトのみを示すキーコード $A0
になっておりましたが、getkeyマニュアルにある
左右シフトを示す 16 でも結果は同じです



窓月らら

リンク

2025/1/11(Sat) 21:37:15|NO.102898

ああ・・それはおそらくキーボード(ハードウェア)のほうの仕様ではないでしょうか。
他のキーボードがあれば比較してみるといいと思います。
2つまでとか3つまでとかしか反応しないの結構あります・・・



名無し

リンク

2025/1/11(Sat) 22:12:59|NO.102899

>NO.102898
同時押しの認識数についての話をしていると思うのですが、
今回の質問にある状況的にそれは関係ないと思います。少なくとも、
>逆にテンキーを先に押したまま、SHIFTを押し、そのままSHIFTを押しながらテンキーを離すと、
>テンキーは検出されっぱなしです。しかもウィンドウを閉じて F5 で実行してもなお検出されっぱなしです。
この内容は関係無いはずです。
テンキー押してSHIFTを押した時点ではどちらも1で検出されるわけですし、
テンキー離してもテンキーが検出され続ける話が、認識する数の上限とは関係ある気がしません。
それとも自分が知らないだけで同時押しの上限数に応じてずっと検出されたりする挙動をするという
仕様があるのでしょうか・・・?
横からすみませんが気になってしまいました。

一応ですが、自分の環境でも全ての内容においてハリサカさんと全く同じ状況を再現しました。
Win10、HSP3.6



名無し

リンク

2025/1/11(Sat) 22:51:03|NO.102900

HSP以外だとどうだろうと思い、ブラウザでキーの入力を確認できるサイトを使用して確認。
https://www.onlinemictest.com/ja/keyboard-test/
https://keyboard-test.space/jp/
上記2サイトでは、ALT連打の件は確認できなかったものの、
同時押しの件はやや違う所あるものの、似たような現象が確認できました。
(Num0→SHIFT→Num0離した時のテンキーが常時押された状態になる件は1つ目のサイトで確認できず)

なので、ALT連打は別として、それ以外はGetkeyやHSP側の問題と言うよりは、
OSや(同時押しの上限数とは別の)キーボード側による問題な気がしました。連投失礼しました



窓月らら

リンク

2025/1/11(Sat) 22:58:47|NO.102901

おやあ本当だ・・・
うちの環境はテンキーがないノート(CF-SX4)のWindows10 Pro 64bitですが
NumLockキーを押してテンキーに相当する0を押してからShiftを押して放すと
確かに0が押しっぱなしになります。もういちど0を押して放すと戻る。



zakki

リンク

2025/1/11(Sat) 23:04:38|NO.102903

shift+numpadはGetAsyncKeyStateでもそうなるのでWindowsの仕様で、
Altは単体を押して放すとループ停止してるように見えます。


count = 0 *main title " テンキー0 / SHIFT / ALT の押下情報" getkey numpad0, 96 ; GetAsyncKeyState 96 : numpad0 = stat getkey shift, $A0 ; GetAsyncKeyState $A0 : shift = stat getkey alt, 18 ; GetAsyncKeyState $a4 : alt = stat getkey key_a, 65 ; GetAsyncKeyState 65 : key_a = stat color 255,255,255 pos 200, 100 mes count mes " numpad 0 = " + numpad0 mes " shift = " + shift mes " alt = " + alt mes " A = " + key_a count + redraw 1 : redraw 2 : color : boxf : await 30 goto *main



名無し

リンク

2025/1/11(Sat) 23:21:56|NO.102904

確かにALT単押しでループが止まり、再度押すと再開してますね。
でふと思ったのですが、F10キーでもループが止まるようです。
更に、それでループが止まっている場合にESCキーを押すとループが再開します。
ということは、Windowsのメニューにフォーカスが移っている(矢印キーでメニューが出る)状態の時、
ループが止まっているという仕様なのでは無いかと思いました。



窓月らら

リンク

2025/1/11(Sat) 23:51:26|NO.102905

Altについてはこちらなどが参考になりそうです。
http://hsp.tv/play/pforum.php?mode=pastwch&num=31910

仕様ですねー。
しかし音楽と同期をとっている場合など困るケースもありそう。



ハリサカ

リンク

2025/1/11(Sat) 23:58:04|NO.102906

皆様、検証していただきありがとうございます。

名無し様の2番目のサイトで分かりましたが、
SHIFT -> テンキー だと、それぞれ別のショートカットキーとして認識されている事が原因だと分かりました。
( SHIFT + テンキー0 だと Insertキー / SHIFT + テンキー8 だと 矢印上キー ..... の様に )
ALT や F10 で 検出されっぱなしになっていたのも、まさかループが止まっているとは思いませんでした。

今回自分が作っているもので、テンキー+SHIFTの操作を入れようとして、今回の疑問が浮かびましたが、
原因が分かりスッキリしました。>>窓月らら様 >>名無し様 >>zakki様、ありがとうございました。



>>NO.102905
過去に話題に上がっていた事なのですね。
今回は別の操作方法に代替しようと思います。



記事削除

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

NO.102896への返信

マスコット

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

名前

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

削除用パスワード

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

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

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