キー入力の検出

 キー操作を取得するために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