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;
   }
}