HSP命令講座 <onkey命令>

Last Update : 2008/06/xx

PR HSPの書籍 『最新HSP3.2 プログラミング入門』

onkey命令 (キーボードのキー入力割り込み指定)

 キーボードのキー押し割り込み動作を設定する命令です。HSPのウィンドウがアクティブ状態である時、キー押しが行われた場合に指定したラベルへジャンプします。マウスクリックの場合はonclick命令が用意されてます。

 onkey *label

 ジャンプしたラベル先では、HSPのシステム変数のiparam、lparam、wparamに以下の数値が返ってきます。

変数 説明
iparam 押し下げられているキーコード(文字コード)が返ってきます。
キーコードは、getkey命令と同じ数値です。方向キー、ファンクションキー(F1〜)、Shiftキー、Ctrlキーなど文字入力関連以外は、0が返ってきます。(参照、HSPWiKi キーコード表
lparam いくつかのキー押し関連情報がビット単位で返ります。
wparam 押し下げられているキーコード(仮想キーコード)が返ってきます。
方向キー、ファンクションキー(F1〜、F10除く)、Shiftキー、Ctrlキーなども返ります。キーコードは、getkey命令と同じ数値です。(参照、HSPWiKi キーコード表

 onkey命令の第1パラメータ相当の部分に0を指定することで、割り込み処理を一時的に停止することもできます。逆に1を指定すると再開です。

 onkey 0

↑TOP↑

サンプルコード

 押されたキーをチェックするサンプルスクリプト。wparam値、またはiparam値をチェックします。strf関数の「%c」指定子を利用すれば、押したキーをキャラクタ文字へと変換できます。

	onkey *jump
	stop

*jump
	mes ""+wparam+" "+strf("[%c]", iparam)
//	押したキーのキャラクタ文字表示 (HSP3)

	onkey *jump
	stop

*jump
	pos xvalue, 0

	mes strf("%c", iparam)
	xvalue += ginfo(14)

	stop

 lparam値には、いくつかのキー押し情報がビット単位で返ってきます。たとえば、30ビット目には、そのキーが直前に押されている(1)か、離されている(0)か、が返ってきます。(右シフトして30ビット目の値をチェック)

//	長押ししても初回のキー押ししか反応しないコード

	onkey *jump
	stop

*jump
	if lparam >> 30 = 0 {
		mes wparam
	}

	stop
//	長押しのみ反応するコード

	onkey *jump
	stop

*jump
	if lparam >> 30 {
		mes wparam
	}

	stop

↑TOP↑

サブルーチンジャンプ [HSP3]

 HSP3では、onkey命令のラベル名指定の前部分に「gosub」を付けることで、サブルーチンジャンプ処理が加わりました。ラベルジャンプ先では、必ず「return」させなければなりません。

 なお、onkey命令のラベル名指定の前部分に「goto」を指定した場合は、普通のジャンプ処理です(省略可)。

 処理の違いが分かるサンプルコードです。どんどん数値をアップする処理をループ中に行っているので、リセットするため何かしらキーボードのキーを押した場合、数値の動きは・・・。

//	サブルーチンジャンプ

	onkey gosub *jump

	repeat
		wait 10
		title ""+count
		count++
	loop

*jump
	count = 0

;	⇒ループ中に戻る
	return
//	通常ジャンプ

	onkey *jump

	repeat
		wait 10
		title ""+count
		count++
	loop

*jump
	count = 0

;	⇒まんまストップ
	stop

↑TOP↑

(参考) F10キー

 onkey命令で唯一取得できないのがファンクションキーの1つ「F10」キーです。F10キーは、Windowsの特殊なシステムキーで、通常このキーを押し下げた場合、プログラムのフォーカスがウィンドウのメニューバー(存在しなくても)に移り、結果として、プログラムの処理が停止することになります。

;	WM_SYSKEYDOWNメッセージ
	oncmd gosub *syskeydown, $104

	stop

*syskeydown
;	F10キー(キーコード121) or Altキー(キーコード18) で反応
	mes wparam
	return

↑TOP↑

〜HSP3 あれこれ〜
ウィンドウ | オブジェクト | ファイル | フォルダ | キーボード | マウス | メニュー | システム | 文字列 | COM | その他

Copyright © 2005-2011 ゲーム作成ソフトHSPの情報をいろいろと Let's HSP!. All rights reserved.