キー入力の検出
キー入力の検出
キー操作を取得するためにEasy3DではE3DGetKeyboardState命令が用意されています。
基本的にはgetkey命令と同じような機能ですが、複数のキーの状態を一度の呼び出しで取得できる点が
異なります。
使い方
使うときは次のように実行します。
dim keybuf, 256 ... E3DGetKeyboardState keybuf
とすると、配列変数keybufに256個全てのキーの入力状況が代入されます。
各キーの情報が入っている要素番号は多くてとても覚えられません。しかし便利なことにE3Dでは要素番号がわかりやすいキーワードで定数としてあらかじめ宣言されています。(キーワードとの対応は後で書きます。)
そのため実際に任意のキーが押されているかどうか確認する場合は次のようにします。
- キーボードの「A」が押されているか確認したいとき。
keybuf.'A'
が0のときは押されていません。1のときは押されています。 - キーボードの「スペース」が押されているか確認したいとき。
keybuf.VK_SPACE
が0のときは押されていません。1のときは押されています。 - …
バーチャルキー情報
キー情報が入っている配列変数の要素番号はE3DGetKeyboardState命令で使いやすいように定数として登録されています。
ここではこのバーチャルキー情報をあらわすための定数を書き出してみました。定数の宣言は e3dhsp3.asに記載されています。
内容はWindowsの、WinUser.h と同様のものらしいのですが、
WinUser.hの内容がよく分からないので実際にキーボードを使いながら確かめてみました。
同時押し制限の注意
E3DGetKeyboardState命令は複数キーの同時押しを検出することが出来ます。
しかし、一般的なキーボードは2~3キーロールオーバー(2~3個のキーまで同時押し可能、それより多いと検出できない。)です。
使用するキーボードによってはキーボードのハードウェア的な制限上、3個以上の同時押しは場合によっては検出できません。
プログラミングするときはこのこと十分理解した上で操作方法を決める必要があります。
どうしても同時押しが必要な場合は、ゲームパッド(ゲーム用コントローラ、ジョイパッド)を
使ってください。(E3Dでは検出命令はありません。)
HSP開発Wikiなどでゲームパッド情報取得モジュールが入手できます。
普通のキーボードで対応しているキーと要素番号の対応一覧
一般的なPC用のキーボードで対応しているキーです。
通常はこれらのキーだけを使うようにするといいと思います。
ただし、ノートPCのテンキーは非常に押しにくいので、テンキーはあまり多用しないほうがいいでしょう。
定数 | キー操作 | キー操作 |
---|---|---|
VK_LBUTTON | マウス 左クリック | |
VK_RBUTTON | マウス 右クリック | |
VK_CANCEL | Ctrl + Break | |
VK_MBUTTON | ホイールクリック | |
VK_BACK | Back Space | |
VK_TAB | Tabキー | |
VK_CLEAR | NumLock を外した状態のテンキー5 | |
VK_RETURN | Enter | |
VK_SHIFT | Shift | |
VK_CONTROL | Ctrl | |
VK_MENU | Alt | |
VK_PAUSE | Pause | Ctrl + NumLock |
VK_CAPITAL | Shift + CapsLock | |
VK_HANJA | Alt + 半角/全角(漢字) | |
VK_KANJI | Alt + 半角/全角(漢字) | |
VK_ESCAPE | Esc | |
VK_SPACE | スペースキー | |
VK_PRIOR | PageUp | |
VK_NEXT | PageDown | |
VK_END | End | Shift + テンキー1 |
VK_HOME | Home | Shift + テンキー7 |
VK_LEFT | 左矢印キー | Shift + テンキー4 |
VK_UP | 上矢印キー | Shift + テンキー8 |
VK_RIGHT | 右矢印キー | Shift + テンキー6 |
VK_DOWN | 下矢印キー | Shift + テンキー2 |
VK_SNAPSHOT | PrintScreen | |
VK_INSERT | Insert | Shift + テンキー0 |
VK_DELETE | Delete | Shift + テンキー. |
'0' | 0 | |
... | ... | |
'9' | 9 | |
'A' | A | |
... | ... | |
'Z' | Z | |
VK_LWIN | ウィンドウズキー(左) | |
VK_RWIN | ウィンドウズキー(右) | |
VK_APPS | Applicationキー (右クリックと同等機能のキーのことです。) | |
VK_NUMPAD0 | テンキーの0 | |
VK_NUMPAD1 | テンキーの1 | |
VK_NUMPAD2 | テンキーの2 | |
VK_NUMPAD3 | テンキーの3 | |
VK_NUMPAD4 | テンキーの4 | |
VK_NUMPAD5 | テンキーの5 | |
VK_NUMPAD6 | テンキーの6 | |
VK_NUMPAD7 | テンキーの7 | |
VK_NUMPAD8 | テンキーの8 | |
VK_NUMPAD9 | テンキーの9 | |
VK_MULTIPLY | テンキーの * | |
VK_ADD | テンキーの + | |
VK_SUBTRACT | テンキーの - | |
VK_DECIMAL | テンキーの . | |
VK_DIVIDE | テンキーの / | |
VK_F1 | F1 | |
VK_F2 | F2 | |
VK_F3 | F3 | |
VK_F4 | F4 | |
VK_F5 | F5 | |
VK_F6 | F6 | |
VK_F7 | F7 | |
VK_F8 | F8 | |
VK_F9 | F9 | |
VK_F10 | F10 | |
VK_F11 | F11 | |
VK_F12 | F12 | |
VK_NUMLOCK | NumLock | |
VK_SCROLL | ScrollLock |
定数 | キー操作 | キー操作 |
---|---|---|
VK_LSHIFT | Shift(左) | |
VK_RSHIFT | Shift(右) | |
VK_LCONTROL | Ctrl(左) | |
VK_RCONTROL | Ctrl(右) | |
VK_LMENU | Alt(左) | |
VK_RMENU | Alt(右) | |
VK_OEM_1 | ';:' for US | :* |
VK_OEM_PLUS | '+' any country | ;+ |
VK_OEM_COMMA | ',' any country | ,< |
VK_OEM_MINUS | '-' any country | -= |
VK_OEM_PERIOD | '.' any country | .> |
VK_OEM_2 | '/?' for US | /? |
VK_OEM_3 | '`~' for US | @` |
VK_OEM_4 | '[{' for US | [{ |
VK_OEM_5 | '\|' for US | \ | |
VK_OEM_6 | ']}' for US | ]} |
VK_OEM_7 | ''"' for US | ^~ |
定数 | キー操作 | キー操作 |
---|---|---|
VK_OEM_102 | "<>" or "\|" on RT 102-key kbd. | _ろ |
キーボード依存なキーと要素番号の対応一覧
定数 | キー操作 | キー操作 |
---|---|---|
VK_KANA | KANA | |
VK_HANGEUL | HANGEUL | |
VK_HANGUL | HANGUL | |
VK_JUNJA | ||
VK_FINAL | ||
CONVERT | 前候補、変換(次候補) | |
NONCONVERT | 無変換 | |
ACCEPT | ||
MODECHANGE | ||
VK_SELECT | ||
VK_PRINT | ||
VK_EXECUTE | ||
VK_HELP | ||
VK_SLEEP | ||
VK_SEPARATOR | ||
VK_F13 | ||
VK_F14 | ||
VK_F15 | ||
VK_F16 | ||
VK_F17 | ||
VK_F18 | ||
VK_F19 | ||
VK_F20 | ||
VK_F21 | ||
VK_F22 | ||
VK_F23 | ||
VK_F24 |
定数 | キー操作 | キー操作 |
---|---|---|
VK_OEM_8 |
定数 | キー操作 | キー操作 |
---|---|---|
VK_OEM_AX | 'AX' key on Japanese AX kbd | |
VK_ICO_HELP | Help key on ICO | |
VK_ICO_00 | 00 key on ICO | |
VK_ICO_CLEAR |
なかなか出会えないキーボードのキーと要素番号の対応一覧
ここから下のは普通使わないんじゃないかと思います。
普通の109キーボードでは対応するキーは無いと思います。
参考程度にどうぞ。
NEC PC-9800 キーボード
定数 | キー操作 | キー操作 |
---|---|---|
VK_OEM_NEC_EQUAL | '=' key on numpad |
Fujitsu/OASYS キーボード
定数 | キー操作 | キー操作 |
---|---|---|
VK_OEM_FJ_JISHO | Dictionary キー | |
VK_OEM_FJ_MASSHOU | Unregister word キー | |
VK_OEM_FJ_TOUROKU | Register word キー | |
VK_OEM_FJ_LOYA | 左親指 キー | |
VK_OEM_FJ_ROYA | 右親指 キー |
Nokia/Ericsson definitions
定数 | キー操作 | キー操作 |
---|---|---|
VK_OEM_RESET | ||
VK_OEM_JUMP | ||
VK_OEM_PA1 | ||
VK_OEM_PA2 | ||
VK_OEM_PA3 | ||
VK_OEM_WSCTRL | ||
VK_OEM_CUSEL | ||
VK_OEM_ATTN | ||
VK_OEM_FINISH | ||
VK_OEM_COPY | ||
VK_OEM_AUTO | ||
VK_OEM_ENLW | ||
VK_OEM_BACKTAB | ||
VK_ATTN | ||
VK_CRSEL | ||
VK_EXSEL | ||
VK_EREOF | ||
VK_PLAY | ||
VK_ZOOM | ||
VK_NONAME | ||
VK_PA1 | ||
VK_OEM_CLEAR |
サンプル
適当にキーを押してください。
押した結果が表示されます。
; ; キー情報取得 ; #include "e3dhsp3.as" ;///////////////// ; ; 初期化 ; wid = 0 ;ウインドウID objid = -1 ;オブジェクトID fullscreenflag = 0 ;フルスクリーンフラグ bits = 16 ;色数ビット数(fullscreenflag = 1 のときのみ有効) multisamplenum = 0 ;アンチエイリアスのマルチサンプル数(0,2~16) ;scid スワップチェインID E3DInit wid, objid, fullscreenflag, bits, multisamplenum, scid dim keybuf, 256 ;キー入力 camdegxz = 135 ;カメラ向き ;フォントの設定 ; E3DCreateFont 24,, 400, , , , "MS ゴシック", fontid E3DCreateFont 24,, 400, , , , msgothic, fontid ;///////////////// ; ; メインループ ; *main E3DGetKeyboardState keybuf ;キー状態取得 E3DBeginScene ;-----シーンスタート ;バックバッファへの書き込み作業を行う if keybuf.VK_ESCAPE = 1 : goto *bye ; [ESC]で終了 gosub *text E3DEndScene ;-----シーン終了 E3DPresent scid1 ;バックバッファの内容を、プライマリバッファに転送。描画する。 E3DWaitByFPS 60, chkfps1 : await 0 title ""+chkfps1 + " FPS" goto *main ;///////////////// ; ; 終了処理 ; *bye E3DBye end ;///////////////// ; ; テキスト表示 ; *text if keybuf.VK_LBUTTON = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_LBUTTON", 255,255,255,255 if keybuf.VK_RBUTTON = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_RBUTTON", 255,255,255,255 if keybuf.VK_CANCEL = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_CANCEL", 255,255,255,255 if keybuf.VK_MBUTTON = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_MBUTTON", 255,255,255,255 if keybuf.VK_BACK = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_BACK", 255,255,255,255 if keybuf.VK_TAB = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_TAB", 255,255,255,255 if keybuf.VK_CLEAR = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_CLEAR", 255,255,255,255 if keybuf.VK_RETURN = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_RETURN", 255,255,255,255 if keybuf.VK_SHIFT = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_SHIFT", 255,255,255,255 if keybuf.VK_CONTROL = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_CONTROL", 255,255,255,255 if keybuf.VK_MENU = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_MENU", 255,255,255,255 if keybuf.VK_PAUSE = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_PAUSE", 255,255,255,255 if keybuf.VK_CAPITAL = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_CAPITAL", 255,255,255,255 if keybuf.VK_KANA = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_KANA", 255,255,255,255 if keybuf.VK_HANGEUL = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_HANGEUL", 255,255,255,255 if keybuf.VK_HANGUL = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_HANGUL", 255,255,255,255 if keybuf.VK_JUNJA = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_JUNJA", 255,255,255,255 if keybuf.VK_FINAL = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_FINAL", 255,255,255,255 if keybuf.VK_HANJA = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_HANJA", 255,255,255,255 if keybuf.VK_KANJI = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_KANJI", 255,255,255,255 if keybuf.VK_ESCAPE = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_ESCAPE", 255,255,255,255 if keybuf.CONVERT = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "CONVERT", 255,255,255,255 if keybuf.NONCONVERT = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "NONCONVERT", 255,255,255,255 if keybuf.ACCEPT = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "ACCEPT", 255,255,255,255 if keybuf.MODECHANGE = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "MODECHANGE", 255,255,255,255 if keybuf.VK_SPACE = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_SPACE", 255,255,255,255 if keybuf.VK_PRIOR = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_PRIOR", 255,255,255,255 if keybuf.VK_NEXT = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_NEXT", 255,255,255,255 if keybuf.VK_END = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_END", 255,255,255,255 if keybuf.VK_HOME = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_HOME", 255,255,255,255 if keybuf.VK_LEFT = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_LEFT", 255,255,255,255 if keybuf.VK_UP = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_UP", 255,255,255,255 if keybuf.VK_RIGHT = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_RIGHT", 255,255,255,255 if keybuf.VK_DOWN = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_DOWN", 255,255,255,255 if keybuf.VK_SELECT = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_SELECT", 255,255,255,255 if keybuf.VK_PRINT = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_PRINT", 255,255,255,255 if keybuf.VK_EXECUTE = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_EXECUTE", 255,255,255,255 if keybuf.VK_SNAPSHOT = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_SNAPSHOT", 255,255,255,255 if keybuf.VK_INSERT = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_INSERT", 255,255,255,255 if keybuf.VK_DELETE = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_DELETE", 255,255,255,255 if keybuf.VK_HELP = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_HELP", 255,255,255,255 if keybuf.'0' = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "'0'", 255,255,255,255 if keybuf.'1' = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "'1'", 255,255,255,255 if keybuf.'2' = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "'2'", 255,255,255,255 if keybuf.'3' = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "'3'", 255,255,255,255 if keybuf.'4' = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "'4'", 255,255,255,255 if keybuf.'5' = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "'5'", 255,255,255,255 if keybuf.'6' = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "'6'", 255,255,255,255 if keybuf.'7' = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "'7'", 255,255,255,255 if keybuf.'8' = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "'8'", 255,255,255,255 if keybuf.'9' = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "'9'", 255,255,255,255 if keybuf.'A' = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "'A'", 255,255,255,255 if keybuf.'B' = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "'B'", 255,255,255,255 if keybuf.'C' = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "'C'", 255,255,255,255 if keybuf.'D' = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "'D'", 255,255,255,255 if keybuf.'E' = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "'E'", 255,255,255,255 if keybuf.'F' = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "'F'", 255,255,255,255 if keybuf.'G' = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "'G'", 255,255,255,255 if keybuf.'H' = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "'H'", 255,255,255,255 if keybuf.'I' = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "'I'", 255,255,255,255 if keybuf.'J' = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "'J'", 255,255,255,255 if keybuf.'K' = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "'K'", 255,255,255,255 if keybuf.'L' = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "'L'", 255,255,255,255 if keybuf.'M' = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "'M'", 255,255,255,255 if keybuf.'N' = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "'N'", 255,255,255,255 if keybuf.'O' = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "'O'", 255,255,255,255 if keybuf.'P' = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "'P'", 255,255,255,255 if keybuf.'Q' = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "'Q'", 255,255,255,255 if keybuf.'R' = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "'R'", 255,255,255,255 if keybuf.'S' = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "'S'", 255,255,255,255 if keybuf.'T' = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "'T'", 255,255,255,255 if keybuf.'U' = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "'U'", 255,255,255,255 if keybuf.'V' = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "'V'", 255,255,255,255 if keybuf.'W' = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "'W'", 255,255,255,255 if keybuf.'X' = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "'X'", 255,255,255,255 if keybuf.'Y' = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "'Y'", 255,255,255,255 if keybuf.'Z' = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "'Z'", 255,255,255,255 if keybuf.VK_LWIN = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_LWIN", 255,255,255,255 if keybuf.VK_RWIN = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_RWIN", 255,255,255,255 if keybuf.VK_APPS = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_APPS", 255,255,255,255 if keybuf.VK_SLEEP = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_SLEEP", 255,255,255,255 if keybuf.VK_NUMPAD0 = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_NUMPAD0", 255,255,255,255 if keybuf.VK_NUMPAD1 = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_NUMPAD1", 255,255,255,255 if keybuf.VK_NUMPAD2 = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_NUMPAD2", 255,255,255,255 if keybuf.VK_NUMPAD3 = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_NUMPAD3", 255,255,255,255 if keybuf.VK_NUMPAD4 = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_NUMPAD4", 255,255,255,255 if keybuf.VK_NUMPAD5 = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_NUMPAD5", 255,255,255,255 if keybuf.VK_NUMPAD6 = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_NUMPAD6", 255,255,255,255 if keybuf.VK_NUMPAD7 = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_NUMPAD7", 255,255,255,255 if keybuf.VK_NUMPAD8 = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_NUMPAD8", 255,255,255,255 if keybuf.VK_NUMPAD9 = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_NUMPAD9", 255,255,255,255 if keybuf.VK_MULTIPLY = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_MULTIPLY", 255,255,255,255 if keybuf.VK_ADD = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_ADD", 255,255,255,255 if keybuf.VK_SEPARATOR= 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_SEPARATOR", 255,255,255,255 if keybuf.VK_SUBTRACT = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_SUBTRACT", 255,255,255,255 if keybuf.VK_DECIMAL = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_DECIMAL", 255,255,255,255 if keybuf.VK_DIVIDE = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_DIVIDE", 255,255,255,255 if keybuf.VK_F1 = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_F1", 255,255,255,255 if keybuf.VK_F2 = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_F2", 255,255,255,255 if keybuf.VK_F3 = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_F3", 255,255,255,255 if keybuf.VK_F4 = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_F4", 255,255,255,255 if keybuf.VK_F5 = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_F5", 255,255,255,255 if keybuf.VK_F6 = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_F6", 255,255,255,255 if keybuf.VK_F7 = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_F7", 255,255,255,255 if keybuf.VK_F8 = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_F8", 255,255,255,255 if keybuf.VK_F9 = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_F9", 255,255,255,255 if keybuf.VK_F10 = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_F10", 255,255,255,255 if keybuf.VK_F11 = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_F11", 255,255,255,255 if keybuf.VK_F12 = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_F12", 255,255,255,255 if keybuf.VK_F13 = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_F13", 255,255,255,255 if keybuf.VK_F14 = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_F14", 255,255,255,255 if keybuf.VK_F15 = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_F15", 255,255,255,255 if keybuf.VK_F16 = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_F16", 255,255,255,255 if keybuf.VK_F17 = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_F17", 255,255,255,255 if keybuf.VK_F18 = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_F18", 255,255,255,255 if keybuf.VK_F19 = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_F19", 255,255,255,255 if keybuf.VK_F20 = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_F20", 255,255,255,255 if keybuf.VK_F21 = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_F21", 255,255,255,255 if keybuf.VK_F22 = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_F22", 255,255,255,255 if keybuf.VK_F23 = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_F23", 255,255,255,255 if keybuf.VK_F24 = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_F24", 255,255,255,255 if keybuf.VK_NUMLOCK = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_NUMLOCK", 255,255,255,255 if keybuf.VK_SCROLL = 1 : E3DDrawTextByFontID scid, fontid, 10,10, "VK_SCROLL", 255,255,255,255 if keybuf.VK_LSHIFT = 1 : E3DDrawTextByFontID scid, fontid, 10,40, "VK_LSHIFT", 255,255,255,255 if keybuf.VK_RSHIFT = 1 : E3DDrawTextByFontID scid, fontid, 10,40, "VK_RSHIFT", 255,255,255,255 if keybuf.VK_LCONTROL = 1 : E3DDrawTextByFontID scid, fontid, 10,40, "VK_LCONTROL", 255,255,255,255 if keybuf.VK_RCONTROL = 1 : E3DDrawTextByFontID scid, fontid, 10,40, "VK_RCONTROL", 255,255,255,255 if keybuf.VK_LMENU = 1 : E3DDrawTextByFontID scid, fontid, 10,40, "VK_LMENU", 255,255,255,255 if keybuf.VK_RMENU = 1 : E3DDrawTextByFontID scid, fontid, 10,40, "VK_RMENU", 255,255,255,255 if keybuf.VK_OEM_1 = 1 : E3DDrawTextByFontID scid, fontid, 10,40, "VK_OEM_1", 255,255,255,255 if keybuf.VK_OEM_PLUS = 1 : E3DDrawTextByFontID scid, fontid, 10,40, "VK_OEM_PLUS", 255,255,255,255 if keybuf.VK_OEM_COMMA= 1 : E3DDrawTextByFontID scid, fontid, 10,40, "VK_OEM_COMMA", 255,255,255,255 if keybuf.VK_OEM_MINUS= 1 : E3DDrawTextByFontID scid, fontid, 10,40, "VK_OEM_MINUS", 255,255,255,255 if keybuf.VK_OEM_PERIOD=1 : E3DDrawTextByFontID scid, fontid, 10,40, "VK_OEM_PERIOD", 255,255,255,255 if keybuf.VK_OEM_2 = 1 : E3DDrawTextByFontID scid, fontid, 10,40, "VK_OEM_2", 255,255,255,255 if keybuf.VK_OEM_3 = 1 : E3DDrawTextByFontID scid, fontid, 10,40, "VK_OEM_3", 255,255,255,255 if keybuf.VK_OEM_4 = 1 : E3DDrawTextByFontID scid, fontid, 10,40, "VK_OEM_4", 255,255,255,255 if keybuf.VK_OEM_5 = 1 : E3DDrawTextByFontID scid, fontid, 10,40, "VK_OEM_5", 255,255,255,255 if keybuf.VK_OEM_6 = 1 : E3DDrawTextByFontID scid, fontid, 10,40, "VK_OEM_6", 255,255,255,255 if keybuf.VK_OEM_7 = 1 : E3DDrawTextByFontID scid, fontid, 10,40, "VK_OEM_7", 255,255,255,255 if keybuf.VK_OEM_8 = 1 : E3DDrawTextByFontID scid, fontid, 10,40, "VK_OEM_8", 255,255,255,255 if keybuf.VK_OEM_AX = 1 : E3DDrawTextByFontID scid, fontid, 10,70, "VK_OEM_AX", 255,255,255,255 if keybuf.VK_OEM_102 = 1 : E3DDrawTextByFontID scid, fontid, 10,70, "VK_OEM_102", 255,255,255,255 if keybuf.VK_ICO_HELP= 1 : E3DDrawTextByFontID scid, fontid, 10,70, "VK_ICO_HELP", 255,255,255,255 if keybuf.VK_ICO_00 = 1 : E3DDrawTextByFontID scid, fontid, 10,70, "VK_ICO_00", 255,255,255,255 if keybuf.VK_ICO_CLEAR= 1 : E3DDrawTextByFontID scid, fontid, 10,70, "VK_ICO_CLEAR", 255,255,255,255 return