API version 1
- ‐
KeyDown¶
キーボードのキーの押下で発生します。
イベントハンドラの戻り値としてtrueを返すと以降の処理は行われません。
KeyDownイベントのEventオブジェクトは以下の構造を持ちます。
型 |
名前 |
説明 |
---|---|---|
string |
key |
キー名。文字入力キーの場合は入力される文字が入ります(アルファベットは大文字固定)。特殊キーは下表を参照してください。 |
boolean |
shiftKey |
Shiftキーが押されている場合はtrue、それ以外はfalse |
boolean |
ctrlKey |
Ctrlキーが押されている場合はtrue、それ以外はfalse |
boolean |
altKey |
Altキーが押されている場合はtrue、それ以外はfalse |
keyプロパティに格納される値(特殊キー)
キーの種類 |
格納される値 |
---|---|
Esc |
"ESCAPE" |
Tab |
"TAB" |
BackSpace |
"BACK" |
Return |
"RETURN" |
Enter |
"ENTER" |
Insert |
"INSERT" |
Delete |
"DELETE" |
Pause |
"PAUSE" |
Home |
"HOME" |
End |
"END" |
← |
"LEFT" |
↑ |
"UP" |
→ |
"RIGHT" |
↓ |
"DOWN" |
PageUp |
"PRIOR" |
PageDown |
"NEXT" |
Shift |
"SHIFT" |
Control |
"CONTROL" |
Windowsキー |
"LWIN" |
Alt |
"ALT" |
CapsLock |
"CAPITAL" |
NumLock |
"NUMLOCK" |
ScrollLock |
"SCROLL" |
F1~F12 |
"F1"~"F12" |
メニューキー |
"MENU" |
Space |
"SPACE" |
キー操作における優先順序
ひとつのキー操作に対して複数の意味が割り当てられている状態で、実際にそのキー操作を行った場合、実行の優先順序は以下のようになっています。
KeyDownイベントが発生します。
イベントハンドラでtrueを返した場合、処理は終了します。
Tabキー、Shift+Tabキー、またはnextTabKeyプロパティ、prevTabKeyプロパティに設定されているキー操作は、優先的にフォーカス移動が実行されます。
Button系オブジェクトのaltKeyプロパティに割り当てられているキー操作が実行されます。
オブジェクト固有のキー操作が実行されます。
KeyDownイベント利用時の注意点
文字入力で使用される特殊キー(漢字、無変換、BackSpaceなど)はIMEの種類やオブジェクトの状態の影響を強く受けるため、KeyDownイベントでは使用しないことを推奨します。
システムキー(システムメニュー Alt+Spaceやウィンドウ切り替え Alt+Tabなど)と同じキーを使用すると、操作性の混乱を招きますので使用しないことを推奨します。
PrintScreenやPauseなど、キーに固有の意味のあるキーは、操作に混乱を招きますので使用しないことを推奨します。
KeyDownイベントは、Windowsが認識したキー操作に対して発生します。Windowsのキー操作の認識は、キーボードのハードウェアの影響を受けます。例えば、NumLockキーとScrollLockキーを1個のボタンで兼用してShiftキーで選択している機種もあります。こうしたキーボードでは、Shift+ScrollLockは、発生しません。
Pause、NumLockなどの特殊キーでは、機種によっては、Ctrl、Shift、Altキーと同時に押下したとき、別のキーとして認識されることがあります。これらの特殊キーを利用する場合、実際に使用するキーボードで、KeyDownイベントが正しく発生することを必ず確認してください。
使用例
function onKeyDown(e) {
if (e.ctrlKey == true && e.key == "G") {
/* Ctrl+Gを押したときForm2に画面を切り替えます */
//.Form1.delete();
//.get("Form2.crs");
}
}
使用例
CRSダウンロード
Form DisplayObj_eve {
x = 0;
y = 0;
width = 800;
height = 600;
/* Form1上で操作します */
Form Form1 {
x = 15;
y = 15;
width = 600;
height = 300;
function onMouseEnter(e) {
bgColor = "#CCFFCC" ;
}
function onMouseLeave(e) {
bgColor = "#ffffff" ;
}
}
EditBox chkScroll {
x = 15;
y = 390;
width = 192;
height = 82;
value = "スクロールバーの白部分をクリックして挙動を確認" ;
/* contextMenu = false ; */
Function OnScrolled( e ) {
//.MessageBox( "スクロール発生 " );
}
}
CheckBox chkGesture {
x = 15;
y = 325;
width = 192;
height = 62;
UseChange = true;
CheckItem item[2] {
height = 25;
Width = 170;
Function OnTouch( e ) {
try {
^.^.Form1.UseMouseMove = chkGesture.item[0].Selected ? DisplayObject.MOVE_ANYTIME : DisplayObject.MOVE_STD;
^.^.Form1.UseMouseWheel = chkGesture.item[1].Selected ? Form.WHEEL_ANYTIME : Form.WHEEL_STD;
} catch( e ) {
//.MessageBox( e.message );
}
}
}
item[0].Title = "UseMouseMove=ANYTIME";
item[1].Title = "UseMouseWheel=ANYTIME";
}
EditBox edEvent {
x = 210;
y = 325;
width = 405;
height = 196;
}
Button Button1 {
x = 119;
y = 491;
width = 88;
height = 32;
Title = "クリア";
Function OnTouch( e ) {
^.edEvent.Clear();
}
}
/*マウス関係のイベントが多く記述されています。必要なものを選んで確認ください */
Function OnDoubleClicked( e ) {
edEvent = String.format( "[%1] DoubleClicked xpos=%2 ypos=%3\r\n", e.from.name, e.xPos, e.yPos ) + edEvent;
}
Function OnRClicked( e ) {
edEvent = String.format( "[%1] RClicked xpos=%2 ypos=%3\r\n", e.from.name, e.xPos, e.yPos ) + edEvent;
}
Function OnMouseWheel( e ) {
edEvent = String.format( "[%1] MouseWheel xpos=%2 ypos=%3\r\n", e.from.name, e.xPos, e.yPos ) + edEvent;
}
Function OnClicked( e ) {
edEvent = String.format( "[%1] Clicked xpos=%2 ypos=%3\n", e.from.name, e.xPos, e.yPos ) + edEvent;
}
Function OnMouseMove( e ) {
edEvent = String.format( "[%1] MouseMove xpos=%2 ypos=%3\n", e.from.name, e.xPos, e.yPos ) + edEvent;
}
Function OnContextMenu( e ) {
edEvent = String.format( "[%1] ContextMenu xpos=%2 ypos=%3\r\n", e.from.name, e.xPos, e.yPos ) + edEvent;
}
Function OnLButtonUp( e ) {
edEvent = String.format( "[%1] LButtonUp xpos=%2 ypos=%3\r\n", e.from.name, e.xPos, e.yPos ) + edEvent;
}
Function OnRButtonUp( e ) {
edEvent = String.format( "[%1] RButtonUp xpos=%2 ypos=%3\r\n", e.from.name, e.xPos, e.yPos ) + edEvent;
}
Function OnKeyDown( e ) {
edEvent = String.format( "[%1] KeyDown \r\n", e.key ) + edEvent;
}
Function OnKeyUp( e ) {
edEvent = String.format( "[%1] KeyUp \r\n", e.key ) + edEvent;
}
}