読者です 読者をやめる 読者になる 読者になる

マイクロスクリプトでキーのリリースを検出するには

(参考資料 超漢字(B-right/V R4)仕様書、第4編 デバイス制御、第6章 KB / PD、6.6 属性データhttp://www.chokanji.com/developer/doc/brightv.r4/device/kbpd.html#ack
超漢字付属のマイクロスクリプトでは ACTION 〈手続き名〉 KEY とすることで、キー押下のイベントを取得することができますが、キーが離されたことを取得する手段は、普通の方法では存在しません。
ごく基本的なゲームであるブロック崩しやインベーダーですら、まるで FM-7 のゲームのごとく、「5」キーを押して移動を止める、といった操作にせざるをえませんでした。
しかし、以下で紹介する手法を使えば、キーの押下状況を kbpd ドライバから直接取得できるので、リアルタイムゲームも問題なく作れるようになります。
まず、読み込みバッファを確保しておきます。

VARIABLE keyMap:B[32]
または
LOCAL keyMap:B[32]

kbpd デバイスを open して、属性データを read します。

DOPEN "kbpd", "R"
DREAD "kbpd", -102, 32, keyMap  # -102 == DN_KEYMAP
DCLOSE "kbpd"

keyMap の中に、リアルタイムのキー押下状況が読み込まれますので、このコードを、ゲームのメインループから呼ぶか、周期的に実行するかして、変化を確認すれば、キーのリリースを検出できます。仕様書には実際のキー配置などは書かれていないので、LOG 文などで確認すれば良いでしょう。
なお、キーボードの仕様により(特に USB キーボード)、多数のキーを同時押しすると、先に押したキーから順番に離されたことになるキーボードもあります。そういうのはどうしようもありません。