protected virtual void KeyDownInternal(KeyEventInfo info)
 {
 }
 public void KeyDown(KeyEventInfo info)
 {
     InputDevice = InputDevice.Keyboard;
     State.KeyDown(info);
 }
        public void KeyDown(KeyEventInfo info)
        {
            カレントアイテムを強調表示する = true;

            Window.MouseCursor = MouseCursor.Hidden;

            var controlAltShiftAreNotPressed = !info.Alt && !info.Control && !info.Shift;

            /*
            #if TEST
            // デバッグ用再描画コマンド
            if (Keys.F5 == info.KeyCode)
            {
                Invalidate();
                return;
            }
            #endif // TEST
            */

            var keyData = info.KeyCode | (info.Alt ? Keys.Alt : 0) | (info.Control ? Keys.Control : 0) | (info.Shift ? Keys.Shift : 0);
            foreach (var keyBinding in Window.EPuzzleData.CurrentUserInfo.GetKeyBindings(keyData))
            {
                switch (keyBinding.Command)
                {
                    case Command.Action0 : OnAction0(); break;
                    case Command.Action1 : OnAction1(); break;
                    case Command.Action2 : OnAction2(); break;
                    case Command.Action3 : OnAction3(); break;
                    case Command.Action4 : OnAction4(); break;
                    case Command.Action5 : OnAction5(); break;
                    case Command.Action6 : OnAction6(); break;
                    case Command.Action7 : OnAction7(); break;
                    case Command.Action8 : OnAction8(); break;
                    case Command.Action9 : OnAction9(); break;
                    case Command.Action10 : OnAction10(); break;
                    case Command.Action11 : OnAction11(); break;

                    case Command.ActionLeft : OnActionLeft(); break;
                    case Command.ActionRight : OnActionRight(); break;
                    case Command.ActionUp : OnActionUp(); break;
                    case Command.ActionDown : OnActionDown(); break;

                    case Command.MoveLeft : OnMoveLeft(); break;
                    case Command.MoveRight : OnMoveRight(); break;
                    case Command.MoveUp : OnMoveUp(); break;
                    case Command.MoveDown : OnMoveDown(); break;

                    default : throw new ApplicationException("never reach here.");
                }
            }
            KeyDownInternal(info);
        }