FreeBASIC マニュアルのトップに戻る

FreeBASIC Multikey

目次→描画ライブラリー参考→ユーザ入力関連MULTIKEY←オリジナル・サイト

MULTIKEY 左にメニュー・フレームが表示されていない場合は、ここをクリックして下さい

←リンク元に戻る プログラム開発関連に戻る

キーボードのスキャンコードを使って、キーの状態を検出します。

構文:
declare function Multikey ( byval scancode as long ) as long

用法:
result = Multikey (scancode)

パラメタ:
scancode
チェックするキーの scan code

戻り値:
指定した scan code のキーが押されると、 -1 を返します。そうでなければ、0 を返します。

記述:
Multikey は、scancode で指定したキーの状態を検出する関数で、いつでも使えます。
キーが押されると、-1 を返し、そうでないときは、0 を返します。

Multikey を使用している間、キーボード入力バッファは無効になりません:つまり、押されたキーは保存され、その後、次の InkeyGetkeyInput の呼び出しによって返されます。
つまり、Multikey の使用を終了するときは、次のような方法で、手動でキーボード入力バッファを空にする必要があります:

While Inkey <> "": Wend '' キーボード入力バッファが空になるまで、繰り返しします


キーボード入力を取得する FB の組み込み機能については、キーボード入力 (基本) を参照してください。

画面の描画モードを Screen (描画) 命令文で設定した場合に、Multikey を使って、Inkey を働かせておくと、柔軟性が高まり、画面を閉じるボタンのクリックで返される Chr(255)+"k" コンボを検出するのに、役に立ちます。
使える scancodes のリストは、DOS keyboard scancodes を参照ください。
これらは、FreeBASIC が使えるすべてのプラットホームで有効です。

Multikey は、画面を unlocked にしておけば、描画モードでもいつも使うことができます。
実行画面でのサポートは、プログラムが動いているプラットホームに依存します。いつでも使えるという保証は、ありません。

例:
注:FreeBASIC 1.08〜 で、SetEnviron を追加しなくても、日本語環境で描画画面が表示されるように改善されました。
' Sets the graphics method GDI
' 描画方法を GDI に設定
SetEnviron("fbgfx=GDI")

#include "fbgfx.bi"
#if __FB_LANG__ = "fb"
   Using FB '' スキャンコード定数は、lang FBの、FB名前空間に格納されます。
#endif

Dim As Integer x, y

ScreenRes 640, 480

Color 2, 15

x = 320: y = 240

Do
    '矢印キー(←→↑↓)をチェックします。そして、それに従って、(x、y)の位置を変えます。
    If MultiKey(SC_LEFT ) And x >   0 Then x = x - 1
    If MultiKey(SC_RIGHT) And x < 639 Then x = x + 1
    If MultiKey(SC_UP   ) And y >   0 Then y = y - 1
    If MultiKey(SC_DOWN ) And y < 479 Then y = y + 1

    'これに取り組んでいる間、ページをロックします
    ScreenLock
        '画面の表示内容を消去します。そして、(x, y)の位置に円を描きます。
        Cls
        Circle(x, y), 30, , , , ,F
    ScreenUnlock
   
    Sleep 15, 1
   
    'ユーザが Escape を押すまで、繰り返しします
Loop Until MultiKey (SC_ESCAPE)

' Inkeyバッファを消去します
While Inkey <> "": Wend

Print "Press CTRL and H to exit..."

Do
    Sleep 25

    '' ユーザが、CTRLとHを同時に押さえるまで、繰り返しを続けます
    If MultiKey(SC_CONTROL) And MultiKey(SC_H) Then Exit Do

Loop



方言差:
QBからの違い:
参照:

ユーザ入力関連に戻る
←リンク元に戻る プログラム開発関連に戻る
ページ歴史:2023-07-09 00:08:56
日本語翻訳:WATANABE Makoto、原文著作者:SysOp

ホームページのトップに戻る

表示-非営利-継承