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); } }
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); } }
private uint GetPs2Set1ScanCodeFromStatus(CorePhysicalKeyStatus keyStatus) { if (keyStatus.IsExtendedKey) { return(0xE000 | keyStatus.ScanCode); } else { return(keyStatus.ScanCode); } }
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); }
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); } }
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); } }
//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); } } }
internal CharacterReceivedRoutedEventArgs(char character, CorePhysicalKeyStatus keyStatus) { Character = character; KeyStatus = keyStatus; }