示例#1
0
        internal KeyAction(SDL.SDL_KeyboardEvent ev)
        {
            SDL.SDL_Keymod modifiers = ev.keysym.mod;
            KeyFlags       cflags    = KeyFlags.Null;

            if ((modifiers & SDL.SDL_Keymod.KMOD_SHIFT) != 0)
            {
                cflags |= KeyFlags.Shift;
            }
            if ((modifiers & SDL.SDL_Keymod.KMOD_ALT) != 0)
            {
                cflags |= KeyFlags.Alt;
            }
            if ((modifiers & SDL.SDL_Keymod.KMOD_CTRL) != 0)
            {
                cflags |= KeyFlags.Ctrl;
            }
            if ((modifiers & SDL.SDL_Keymod.KMOD_CAPS) != 0)
            {
                cflags |= KeyFlags.CapsLock;
            }
            Flags  = cflags;
            Key    = MapSDLKeycode(ev.keysym.sym);
            Repeat = ev.repeat != 0;
        }
示例#2
0
 private void InputOnKeyDown(object sender, SDL.SDL_KeyboardEvent e)
 {
     if (e.keysym.sym == SDL.SDL_Keycode.SDLK_KP_ENTER || e.keysym.sym == SDL.SDL_Keycode.SDLK_RETURN)
     {
         OnButtonClick((int)Buttons.OK);
     }
 }
示例#3
0
 private void InputOnKeyDown(object sender, SDL.SDL_KeyboardEvent e)
 {
     if (e.keysym.sym == SDL.SDL_Keycode.SDLK_KP_ENTER || e.keysym.sym == SDL.SDL_Keycode.SDLK_RETURN)
     {
         Engine.SceneManager.ChangeScene(ScenesType.Login);
     }
 }
示例#4
0
 private void InputOnKeyDown(object sender, SDL.SDL_KeyboardEvent e)
 {
     if (e.keysym.mod == SDL.SDL_Keymod.KMOD_LSHIFT)
     {
         _shiftPressed = true;
     }
 }
        private void OnKeyUp(object sender, SDL.SDL_KeyboardEvent e)
        {
            bool isshift = (e.keysym.mod & SDL.SDL_Keymod.KMOD_SHIFT) != SDL.SDL_Keymod.KMOD_NONE;
            bool isalt   = (e.keysym.mod & SDL.SDL_Keymod.KMOD_ALT) != SDL.SDL_Keymod.KMOD_NONE;
            bool isctrl  = (e.keysym.mod & SDL.SDL_Keymod.KMOD_CTRL) != SDL.SDL_Keymod.KMOD_NONE;

            _isShiftDown = isshift;

            _useObjectHandles = isctrl && isshift;

            if (e.keysym.sym == SDL.SDL_Keycode.SDLK_TAB)
            {
                if (Engine.Profile.Current.HoldDownKeyTab)
                {
                    if (World.Player.InWarMode)
                    {
                        GameActions.SetWarMode(false);
                    }
                }
                else
                {
                    GameActions.ToggleWarMode();
                }
            }
        }
示例#6
0
 private void InputOnKeyUp(object sender, SDL.SDL_KeyboardEvent e)
 {
     if (e.keysym.sym == SDL.SDL_Keycode.SDLK_LSHIFT || e.keysym.sym == SDL.SDL_Keycode.SDLK_RSHIFT)
     {
         _shiftPressed = false;
     }
 }
示例#7
0
 private void GameFormSDL_KeyDownActions(SDL.SDL_KeyboardEvent e)
 {
     if ((e.keysym.sym == SDL.SDL_Keycode.SDLK_RETURN) && ((e.keysym.mod & SDL.SDL_Keymod.KMOD_ALT) != 0))
     {
         FullscreenToggle?.Invoke(this, EventArgs.Empty);
     }
 }
示例#8
0
 private void InputOnKeyDown(object sender, SDL.SDL_KeyboardEvent e)
 {
     if (Input.Keyboard.IsModPressed(e.keysym.mod, SDL.SDL_Keymod.KMOD_SHIFT))
     {
         _shiftPressed = true;
     }
 }
示例#9
0
        private void OnKeyUp(object sender, SDL.SDL_KeyboardEvent e)
        {
            bool isshift = (e.keysym.mod & SDL.SDL_Keymod.KMOD_SHIFT) != SDL.SDL_Keymod.KMOD_NONE;
            bool isalt   = (e.keysym.mod & SDL.SDL_Keymod.KMOD_ALT) != SDL.SDL_Keymod.KMOD_NONE;
            bool isctrl  = (e.keysym.mod & SDL.SDL_Keymod.KMOD_CTRL) != SDL.SDL_Keymod.KMOD_NONE;

            if (Engine.Profile.Current.EnableScaleZoom && Engine.Profile.Current.RestoreScaleAfterUnpressCtrl && _isCtrlDown && !isctrl)
            {
                Engine.SceneManager.GetScene <GameScene>().Scale = Engine.Profile.Current.RestoreScaleValue;
            }

            _isShiftDown = isshift;
            _isCtrlDown  = isctrl;

            _useObjectHandles = isctrl && isshift;

            if (e.keysym.sym == SDL.SDL_Keycode.SDLK_TAB)
            {
                if (Engine.Profile.Current.HoldDownKeyTab)
                {
                    if (World.Player.InWarMode)
                    {
                        GameActions.SetWarMode(false);
                    }
                }
                else
                {
                    GameActions.ToggleWarMode();
                }
            }
        }
示例#10
0
        public static void OnKeyUp(SDL.SDL_KeyboardEvent e)
        {
            Shift = (e.keysym.mod & SDL.SDL_Keymod.KMOD_SHIFT) != SDL.SDL_Keymod.KMOD_NONE;
            Alt   = (e.keysym.mod & SDL.SDL_Keymod.KMOD_ALT) != SDL.SDL_Keymod.KMOD_NONE;
            Ctrl  = (e.keysym.mod & SDL.SDL_Keymod.KMOD_CTRL) != SDL.SDL_Keymod.KMOD_NONE;

            _code = SDL.SDL_Keycode.SDLK_UNKNOWN;
        }
        private void OnKeyDown(object sender, SDL.SDL_KeyboardEvent e)
        {
            if (TargetManager.IsTargeting && e.keysym.sym == SDL.SDL_Keycode.SDLK_ESCAPE && Input.Keyboard.IsModPressed(e.keysym.mod, SDL.SDL_Keymod.KMOD_NONE))
            {
                TargetManager.CancelTarget();
            }

            _isShiftDown = Input.Keyboard.IsModPressed(e.keysym.mod, SDL.SDL_Keymod.KMOD_SHIFT);

            if (e.keysym.sym == SDL.SDL_Keycode.SDLK_TAB)
            {
                if (!World.Player.InWarMode && Engine.Profile.Current.HoldDownKeyTab)
                {
                    GameActions.SetWarMode(true);
                }
            }

            if (_keycodeDirection.TryGetValue(e.keysym.sym, out Direction dWalk))
            {
                WorldViewportGump viewport = Engine.UI.GetByLocalSerial <WorldViewportGump>();
                SystemChatControl chat     = viewport?.FindControls <SystemChatControl>().SingleOrDefault();
                if (chat != null && chat.textBox.Text.Length == 0)
                {
                    World.Player.Walk(dWalk, false);
                }
            }

            if ((e.keysym.mod & SDL2.SDL.SDL_Keymod.KMOD_NUM) != SDL2.SDL.SDL_Keymod.KMOD_NUM)
            {
                if (_keycodeDirectionNum.TryGetValue(e.keysym.sym, out Direction dWalkN))
                {
                    World.Player.Walk(dWalkN, false);
                }
            }

            bool isshift = (e.keysym.mod & SDL.SDL_Keymod.KMOD_SHIFT) != SDL.SDL_Keymod.KMOD_NONE;
            bool isalt   = (e.keysym.mod & SDL.SDL_Keymod.KMOD_ALT) != SDL.SDL_Keymod.KMOD_NONE;
            bool isctrl  = (e.keysym.mod & SDL.SDL_Keymod.KMOD_CTRL) != SDL.SDL_Keymod.KMOD_NONE;


            _useObjectHandles = isshift && isctrl;

            Macro macro = _macroManager.FindMacro(e.keysym.sym, isalt, isctrl, isshift);

            if (macro != null)
            {
                _macroManager.SetMacroToExecute(macro.FirstNode);
                _macroManager.WaitForTargetTimer = 0;
                _macroManager.Update();
            }

            //if (_hotkeysManager.TryExecuteIfBinded(e.keysym.sym, e.keysym.mod, out Action action))
            //{
            //    action();
            //}
        }
示例#12
0
        private void GameFormSDL_KeyDownActions(SDL.SDL_KeyboardEvent e)
        {
            var altReturn = (e.keysym.sym == SDL.SDL_Keycode.SDLK_RETURN) && ((e.keysym.mod & SDL.SDL_Keymod.KMOD_ALT) != 0);
            var altEnter  = (e.keysym.sym == SDL.SDL_Keycode.SDLK_KP_ENTER) && ((e.keysym.mod & SDL.SDL_Keymod.KMOD_ALT) != 0);

            if (altReturn || altEnter)
            {
                FullscreenToggle?.Invoke(this, EventArgs.Empty);
            }
        }
示例#13
0
        internal void ProcessKeyboardEvent(SDL.SDL_KeyboardEvent e)
        {
            Key  key;
            bool pressed = e.state != 0;

            if (KeyMap.TryGetValue(e.keysym.scancode, out key))
            {
                state.SetKeyState(key, (byte)e.keysym.scancode, pressed);
            }
        }
示例#14
0
        public static void OnKeyDown(SDL.SDL_KeyboardEvent e)
        {
            Shift = (e.keysym.mod & SDL.SDL_Keymod.KMOD_SHIFT) != SDL.SDL_Keymod.KMOD_NONE;
            Alt   = (e.keysym.mod & SDL.SDL_Keymod.KMOD_ALT) != SDL.SDL_Keymod.KMOD_NONE;
            Ctrl  = (e.keysym.mod & SDL.SDL_Keymod.KMOD_CTRL) != SDL.SDL_Keymod.KMOD_NONE;

            if (e.keysym.sym != SDL.SDL_Keycode.SDLK_UNKNOWN)
            {
                _code = e.keysym.sym;
            }
        }
示例#15
0
    static void HandleKeydown(SDL.SDL_KeyboardEvent kb)
    {
        switch (kb.keysym.sym)
        {
        case SDL.SDL_Keycode.SDLK_ESCAPE:
            gDone = true;
            break;

        default:
            break;
        }
    }
示例#16
0
        private void OnKeyUp(object sender, SDL.SDL_KeyboardEvent e)
        {
            _isShiftDown = Input.Keyboard.IsModPressed(e.keysym.mod, SDL.SDL_Keymod.KMOD_SHIFT);

            if (e.keysym.sym == SDL.SDL_Keycode.SDLK_TAB)
            {
                if (World.Player.InWarMode)
                {
                    GameActions.SetWarMode(false);
                }
            }
        }
示例#17
0
 private void OnKeyEvent(SDL.SDL_KeyboardEvent e, bool isKeyUp)
 {
     lock (KeyboardInputEvents)
     {
         Keys key;
         if (SDLKeys.mapKeys.TryGetValue(e.keysym.sym, out key) && key != Keys.None)
         {
             var type = isKeyUp ? InputEventType.Up : InputEventType.Down;
             KeyboardInputEvents.Add(new KeyboardInputEvent {
                 Key = key, Type = type
             });
         }
     }
 }
示例#18
0
        //public static bool IsKeyPressed(SDL.SDL_Keycode code)
        //{
        //    return code != SDL.SDL_Keycode.SDLK_UNKNOWN && _code == code;
        //}

        //public static bool IsModPressed(SDL.SDL_Keymod mod, SDL.SDL_Keymod tocheck)
        //{
        //    mod ^= mod & IgnoreKeyMod;

        //    return tocheck == mod || mod != SDL.SDL_Keymod.KMOD_NONE && (mod & tocheck) != 0;
        //}

        public static void OnKeyUp(SDL.SDL_KeyboardEvent e)
        {
            SDL.SDL_Keymod mod = e.keysym.mod & ~IgnoreKeyMod;

            if ((mod & (SDL.SDL_Keymod.KMOD_RALT | SDL.SDL_Keymod.KMOD_LCTRL)) == (SDL.SDL_Keymod.KMOD_RALT | SDL.SDL_Keymod.KMOD_LCTRL))
            {
                e.keysym.sym = SDL.SDL_Keycode.SDLK_UNKNOWN;
                e.keysym.mod = SDL.SDL_Keymod.KMOD_NONE;
            }

            Shift = (e.keysym.mod & SDL.SDL_Keymod.KMOD_SHIFT) != SDL.SDL_Keymod.KMOD_NONE;
            Alt   = (e.keysym.mod & SDL.SDL_Keymod.KMOD_ALT) != SDL.SDL_Keymod.KMOD_NONE;
            Ctrl  = (e.keysym.mod & SDL.SDL_Keymod.KMOD_CTRL) != SDL.SDL_Keymod.KMOD_NONE;

            _code = SDL.SDL_Keycode.SDLK_UNKNOWN;
        }
示例#19
0
        private void OnKeyDown(object sender, SDL.SDL_KeyboardEvent e)
        {
            if (TargetManager.IsTargeting && e.keysym.sym == SDL.SDL_Keycode.SDLK_ESCAPE && Input.Keyboard.IsModPressed(e.keysym.mod, SDL.SDL_Keymod.KMOD_NONE))
            {
                TargetManager.CancelTarget();
            }

            _isShiftDown = Input.Keyboard.IsModPressed(e.keysym.mod, SDL.SDL_Keymod.KMOD_SHIFT);

            if (e.keysym.sym == SDL.SDL_Keycode.SDLK_TAB)
            {
                if (!World.Player.InWarMode)
                {
                    GameActions.SetWarMode(true);
                }
            }
        }
示例#20
0
        private void OnKeyEvent(SDL.SDL_KeyboardEvent e)
        {
            // Try to map to a xenko key
            Keys key;

            if (SDLKeys.MapKeys.TryGetValue(e.keysym.sym, out key) && key != Keys.None)
            {
                if (e.type == SDL.SDL_EventType.SDL_KEYDOWN)
                {
                    HandleKeyDown(key);
                }
                else
                {
                    HandleKeyUp(key);
                }
            }
        }
示例#21
0
        private void OnKeyUp(object sender, SDL.SDL_KeyboardEvent e)
        {
            _isShiftDown = Input.Keyboard.IsModPressed(e.keysym.mod, SDL.SDL_Keymod.KMOD_SHIFT);

            if (e.keysym.sym == SDL.SDL_Keycode.SDLK_TAB)
            {
                if (Engine.Profile.Current.HoldDownKeyTab)
                {
                    if (World.Player.InWarMode)
                    {
                        GameActions.SetWarMode(false);
                    }
                }
                else
                {
                    GameActions.ToggleWarMode();
                }
            }
        }
示例#22
0
        private void OnKeyEvent(SDL.SDL_KeyboardEvent e)
        {
            // wait, do we want to filter repeating keys?
            if (e.repeat > 0 && KeyEvent.DisableRepeats)
            {
                return;
            }
            // Try to map to a xenko key
            Keys key = ConvertSDLKey(e.keysym.sym);

            if (key != Keys.None)
            {
                if (e.type == SDL.SDL_EventType.SDL_KEYDOWN)
                {
                    HandleKeyDown(key);
                }
                else
                {
                    HandleKeyUp(key);
                }
            }
        }
示例#23
0
 public KeyDownEventArgs(SDL.SDL_KeyboardEvent evt)
 {
     _evt = evt;
 }
示例#24
0
 public static RKeyEvent ToRKeyEvent(this SDL.SDL_KeyboardEvent e)
 {
     return(new RKeyEvent((e.keysym.mod & SDL.SDL_Keymod.KMOD_CTRL) != 0, e.keysym.sym == SDL.SDL_Keycode.SDLK_a, e.keysym.sym == SDL.SDL_Keycode.SDLK_c));
 }
示例#25
0
 internal virtual void OnKeyUp(SDL.SDL_KeyboardEvent e)
 {
 }
示例#26
0
 private void InputOnKeyDown(object sender, SDL.SDL_KeyboardEvent e)
 {
 }
示例#27
0
 public static void OnKeyDown(SDL.SDL_KeyboardEvent e)
 {
     Shift = (e.keysym.mod & SDL.SDL_Keymod.KMOD_SHIFT) != SDL.SDL_Keymod.KMOD_NONE;
     Alt   = (e.keysym.mod & SDL.SDL_Keymod.KMOD_ALT) != SDL.SDL_Keymod.KMOD_NONE;
     Ctrl  = (e.keysym.mod & SDL.SDL_Keymod.KMOD_CTRL) != SDL.SDL_Keymod.KMOD_NONE;
 }
示例#28
0
        public void ProcessKeyboardEvent(SDL.SDL_KeyboardEvent e)
        {
            if (e.repeat > 0)
            {
                return;
            }

            var state = e.state == SDL.SDL_PRESSED ? GameControllerButtonState.Down : GameControllerButtonState.Up;

            switch (e.keysym.sym)
            {
            case SDL.SDL_Keycode.SDLK_c:
                A = state;
                break;

            case SDL.SDL_Keycode.SDLK_d:
                B = state;
                break;

            case SDL.SDL_Keycode.SDLK_2:
                Back = state;
                break;

            case SDL.SDL_Keycode.SDLK_DOWN:
                DpadDown = state;
                break;

            case SDL.SDL_Keycode.SDLK_LEFT:
                DpadLeft = state;
                break;

            case SDL.SDL_Keycode.SDLK_RIGHT:
                DpadRight = state;
                break;

            case SDL.SDL_Keycode.SDLK_UP:
                DpadUp = state;
                break;

            case SDL.SDL_Keycode.SDLK_ESCAPE:
                Guide = state;
                break;

            case SDL.SDL_Keycode.SDLK_w:
                LeftShoulder = state;
                break;

            case SDL.SDL_Keycode.SDLK_q:
                LeftTrigger = short.MaxValue;
                break;

            case SDL.SDL_Keycode.SDLK_a:
                LeftStick = state;
                break;

            case SDL.SDL_Keycode.SDLK_e:
                RightShoulder = state;
                break;

            case SDL.SDL_Keycode.SDLK_r:
                RightTrigger = short.MaxValue;
                break;

            case SDL.SDL_Keycode.SDLK_f:
                RightStick = state;
                break;

            case SDL.SDL_Keycode.SDLK_1:
                Start = state;
                break;

            case SDL.SDL_Keycode.SDLK_x:
                X = state;
                break;

            case SDL.SDL_Keycode.SDLK_s:
                Y = state;
                break;
            }
        }
示例#29
0
 private static void InputOnKeyDown(object sender, SDL.SDL_KeyboardEvent e)
 {
     Shift = (e.keysym.mod & SDL.SDL_Keymod.KMOD_SHIFT) != SDL.SDL_Keymod.KMOD_NONE;
     Alt   = (e.keysym.mod & SDL.SDL_Keymod.KMOD_ALT) != SDL.SDL_Keymod.KMOD_NONE;
     Ctrl  = (e.keysym.mod & SDL.SDL_Keymod.KMOD_CTRL) != SDL.SDL_Keymod.KMOD_NONE;
 }
示例#30
0
 /// <summary>
 /// Handle key down event for selection and copy.
 /// </summary>
 /// <param name="parent">the control hosting the html to invalidate</param>
 /// <param name="e">the pressed key</param>
 public void HandleKeyDown(SDL.SDL_KeyboardEvent e)
 {
     _htmlContainerInt.HandleKeyDown(new ControlAdapter(SDL2Adapter.Instance), e.ToRKeyEvent());
 }