Ejemplo n.º 1
0
        static string KeyStatusString(Windows.UI.Core.CorePhysicalKeyStatus KeyStatus)
        {
            //var shiftState = Window.Current.CoreWindow.GetForCurrentThread().GetKeyState(VirtualKey.Shift);
            //var ctrlState = Window.Current.CoreWindow.GetForCurrentThread().GetKeyState(VirtualKey.Control);

            var shiftState    = Window.Current.CoreWindow.GetKeyState(Windows.System.VirtualKey.Shift).HasFlag(Windows.UI.Core.CoreVirtualKeyStates.Down);
            var ctrlState     = Window.Current.CoreWindow.GetKeyState(Windows.System.VirtualKey.Control).HasFlag(Windows.UI.Core.CoreVirtualKeyStates.Down);
            var altState      = Window.Current.CoreWindow.GetKeyState(Windows.System.VirtualKey.Menu).HasFlag(Windows.UI.Core.CoreVirtualKeyStates.Down);
            var platformState = Window.Current.CoreWindow.GetKeyState(Windows.System.VirtualKey.LeftWindows).HasFlag(Windows.UI.Core.CoreVirtualKeyStates.Down);

            platformState |= Window.Current.CoreWindow.GetKeyState(Windows.System.VirtualKey.RightWindows).HasFlag(Windows.UI.Core.CoreVirtualKeyStates.Down);
            var capsState = Window.Current.CoreWindow.GetKeyState(Windows.System.VirtualKey.CapitalLock).HasFlag(Windows.UI.Core.CoreVirtualKeyStates.Down);
            var numLock   = Window.Current.CoreWindow.GetKeyState(Windows.System.VirtualKey.NumberKeyLock).HasFlag(Windows.UI.Core.CoreVirtualKeyStates.Down);



            return("shft=[" + shiftState + "] ctrl=[" + ctrlState + "] altState=[" + altState + "] pltf=[" + platformState + "] capl=[" + capsState + "] numl=[" + numLock + "] ext:[" + KeyStatus.IsExtendedKey + "] rel:[" + KeyStatus.IsKeyReleased + "] men:[" + KeyStatus.IsMenuKeyDown + "]  rep:[" + KeyStatus.RepeatCount + "] cod:[" + KeyStatus.ScanCode + "] wasDown:[" + KeyStatus.WasKeyDown + "]");
        }
Ejemplo n.º 2
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.º 3
0
 internal KeyEventArgs(string deviceId, VirtualKey virtualKey, CorePhysicalKeyStatus keyStatus)
 {
     DeviceId   = deviceId;
     VirtualKey = virtualKey;
     KeyStatus  = keyStatus;
 }
Ejemplo n.º 4
0
 public KeyDownEvent(VirtualKey key, CorePhysicalKeyStatus keyStatus)
 {
     Key = key;
     KeyStatus = keyStatus;
 }
Ejemplo n.º 5
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 GameContextUWP && ((GameContextUWP)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;
        }