Ejemplo n.º 1
0
        private static Keys KeyTranslate(Windows.System.VirtualKey inkey, CorePhysicalKeyStatus keyStatus)
        {
            switch (inkey)
            {
            // WinRT does not distinguish between left/right keys
            // We have to check for special keys such as control/shift/alt/ etc
            case Windows.System.VirtualKey.Control:
                // we can detect right Control by checking the IsExtendedKey value.
                return((keyStatus.IsExtendedKey) ? Keys.RightControl : Keys.LeftControl);

            case Windows.System.VirtualKey.Shift:
                // we can detect right shift by checking the scancode value.
                // left shift is 0x2A, right shift is 0x36. IsExtendedKey is always false.
                return((keyStatus.ScanCode == 0x36) ? Keys.RightShift : Keys.LeftShift);

            // Note that the Alt key is now refered to as Menu.
            // ALT key doesn't get fired by KeyUp/KeyDown events.
            // One solution could be to check CoreWindow.GetKeyState(...) on every tick.
            case Windows.System.VirtualKey.Menu:
                return(Keys.LeftAlt);

            default:
                return((Keys)inkey);
            }
        }
Ejemplo n.º 2
0
        public void ReadKey(VirtualKey key, CorePhysicalKeyStatus keyStatus)
        {
            _lastReadTime = DateTime.Now;

            if (key.ToString() == "186")
            {
                _isSemiColonEntered = true;
            }

            if (key == VirtualKey.Shift)
            {
                _isShift = true;
            }
            else
            {
                char?character = Helper.ToChar(key, _isShift);
                if (character.HasValue)
                {
                    _msrData += character;
                }
                _isShift = false;
            }

            if (key.ToString() == "191" && _isSemiColonEntered)
            {
                _readMSRComplete    = true;
                _isSemiColonEntered = false;
            }
        }
 public static void CopyKey(KeyRoutedEventArgs e)
 {
     DeviceId    = e.DeviceId;
     Key         = e.Key;
     OriginalKey = e.OriginalKey;
     KeyStatus   = e.KeyStatus;
 }
        private void HandleKey(bool isDown, VirtualKey virtualKey, CorePhysicalKeyStatus status)
        {
            switch (virtualKey)
            {
            case VirtualKey.Control:
                virtualKey = status.IsExtendedKey ? VirtualKey.RightControl : VirtualKey.LeftControl;
                break;

            case VirtualKey.Menu:
                virtualKey = status.IsExtendedKey ? VirtualKey.RightMenu : VirtualKey.LeftMenu;
                break;

            case VirtualKey.Shift:
                virtualKey = status.ScanCode == 0x36 ? VirtualKey.RightShift : VirtualKey.LeftShift;
                break;
            }

            var key = (Keys)virtualKey;

            if (isDown)
            {
                this.KeyDown(key);
            }
            else
            {
                this.KeyUp(key);
            }
        }
Ejemplo n.º 5
0
 private uint GetPs2Set1ScanCodeFromStatus(CorePhysicalKeyStatus keyStatus)
 {
     if (keyStatus.IsExtendedKey)
     {
         return(0xE000 | keyStatus.ScanCode);
     }
     else
     {
         return(keyStatus.ScanCode);
     }
 }
Ejemplo n.º 6
0
        private bool HandleKey(VirtualKey virtualKey, CorePhysicalKeyStatus keyStatus, InputEventType type)
        {
            // If our EditText TextBox is active, let's ignore all key events
            if (Game.Context is GameContextWindowsRuntime && ((GameContextWindowsRuntime)Game.Context).EditTextBox.Parent != null)
            {
                return(false);
            }

            // Remap certain keys
            switch (virtualKey)
            {
            case VirtualKey.Shift:
                // Only way to differentiate left and right shift is through the scan code
                virtualKey = keyStatus.ScanCode == 54 ? VirtualKey.RightShift : VirtualKey.LeftShift;
                break;

            case VirtualKey.Control:
                virtualKey = keyStatus.IsExtendedKey ? VirtualKey.RightControl : VirtualKey.LeftControl;
                break;

            case VirtualKey.Menu:
                virtualKey = keyStatus.IsExtendedKey ? VirtualKey.RightMenu : VirtualKey.LeftMenu;
                break;
            }

            // Let Alt + F4 go through
            if (virtualKey == VirtualKey.F4 && IsKeyDownNow(Keys.LeftAlt))
            {
                return(false);
            }

            Keys key;

            if (!mapKeys.TryGetValue(virtualKey, out key))
            {
                key = Keys.None;
            }

            lock (KeyboardInputEvents)
            {
                KeyboardInputEvents.Add(new KeyboardInputEvent {
                    Key = key, Type = type
                });
            }

            return(true);
        }
Ejemplo n.º 7
0
        private void HandleKey(bool isDown, VirtualKey virtualKey, CorePhysicalKeyStatus keyStatus)
        {
            // Remap certain keys
            switch (virtualKey)
            {
            case VirtualKey.Shift:
                // Only way to differentiate left and right shift is through the scan code
                virtualKey = keyStatus.ScanCode == 54 ? VirtualKey.RightShift : VirtualKey.LeftShift;
                break;

            case VirtualKey.Control:
                virtualKey = keyStatus.IsExtendedKey ? VirtualKey.RightControl : VirtualKey.LeftControl;
                break;

            case VirtualKey.Menu:
                virtualKey = keyStatus.IsExtendedKey ? VirtualKey.RightMenu : VirtualKey.LeftMenu;
                break;
            }

            // Let Alt + F4 go through
            if (virtualKey == VirtualKey.F4 && this.IsKeyDown(Keys.LeftAlt))
            {
                return;
            }

            // Map key to stride key
            Keys strideKey;

            if (!mapKeys.TryGetValue(virtualKey, out strideKey))
            {
                return;
            }

            if (isDown)
            {
                HandleKeyDown(strideKey);
            }
            else
            {
                HandleKeyUp(strideKey);
            }
        }
Ejemplo n.º 8
0
        private void Handle(bool down, VirtualKey key, CorePhysicalKeyStatus status)
        {
            switch (key)
            {
            case VirtualKey.LeftShift: lshift = down; break;

            case VirtualKey.RightShift: rshift = down; break;

            case VirtualKey.Shift: lshift = rshift = down; break;

            case VirtualKey.LeftControl: lcontrol = down; break;

            case VirtualKey.RightControl: rcontrol = down; break;

            case VirtualKey.Control: lcontrol = rcontrol = down; break;

            case VirtualKey.LeftMenu: lalt = down; break;

            case VirtualKey.RightMenu: ralt = down; break;

            case VirtualKey.Menu: lalt = ralt = down; break;

            case VirtualKey.LeftWindows: lwin = down; break;

            case VirtualKey.RightWindows: rwin = down; break;
            }

            if (charMap.ContainsKey(key))
            {
                var elem = charMap[key];
                InjectNS(shift ? elem.Item1 : elem.Item2, down);
            }
            else if (specialMap.ContainsKey(key))
            {
                Inject(specialMap[key], down);
            }
            else
            {
                Debug.WriteLine("Unknown key: {0}", key);
            }
        }
Ejemplo n.º 9
0
        //keyboard input
        private void KeyboardInput(CoreWindow sender, KeyEventArgs args)
        {
            CorePhysicalKeyStatus cpk = args.KeyStatus;

            if (cpk.IsKeyReleased)
            {
                if (args.VirtualKey == Windows.System.VirtualKey.Up)
                {
                    game.TryRotate();
                }
                else if (args.VirtualKey == Windows.System.VirtualKey.Down)
                {
                    game.Move(Movement.Bottom);
                }
                else if (args.VirtualKey == Windows.System.VirtualKey.Left)
                {
                    game.Move(Movement.Left);
                }
                else if (args.VirtualKey == Windows.System.VirtualKey.Right)
                {
                    game.Move(Movement.Right);
                }
            }
        }
Ejemplo n.º 10
0
 internal CharacterReceivedRoutedEventArgs(char character, CorePhysicalKeyStatus keyStatus)
 {
     Character = character;
     KeyStatus = keyStatus;
 }