Ejemplo n.º 1
0
 private void graphicsControl_KeyUp(object sender, KeyEventArgs e)
 {
     if (this.activeState.EngineUserInput)
     {
         Key inputKey = e.KeyCode.ToDualityKey();
         this.inputKeyPressed[(int)inputKey] = false;
     }
 }
Ejemplo n.º 2
0
        private void graphicsControl_KeyDown(object sender, KeyEventArgs e)
        {
            if (!this.RenderableControl.Focused)
            {
                this.RenderableControl.Focus();
            }

            if (e.KeyCode == Keys.Escape || e.KeyCode == Keys.Tab || e.KeyCode == Keys.Alt)
            {
                this.inputMouseCapture = false;
            }

            if (this.activeState.EngineUserInput)
            {
                Key inputKey = e.KeyCode.ToDualityKey();
                this.inputKeyPressed[(int)inputKey] = true;
            }
        }
Ejemplo n.º 3
0
		bool IKeyboardInputSource.this[Key key]
		{
			get { return this.inputKeyPressed[(int)key]; }
		}
Ejemplo n.º 4
0
        static ExtMethodsVirtualKeyCode()
        {
            virtualKeyToDualityKey = new Dictionary <VirtualKeyCode, DualityKey>();

            // Build a mapping from virtual keycodes to physical scancodes
            foreach (VirtualKeyCode virtualKey in Enum.GetValues(typeof(VirtualKeyCode)))
            {
                uint scancode = NativeMethods.MapVirtualKey((uint)virtualKey, NativeMethods.KeyMapType.MAPVK_VK_TO_VSC);
                if (scancode == 0)
                {
                    continue;
                }

                DualityKey dualityKey = ParseScanCode(scancode);
                if (dualityKey == DualityKey.Unknown)
                {
                    continue;
                }

                virtualKeyToDualityKey[virtualKey] = dualityKey;
            }

            // Override some specific keys where we really need the virtual key information
            virtualKeyToDualityKey[VirtualKeyCode.None]        = DualityKey.Unknown;
            virtualKeyToDualityKey[VirtualKeyCode.Return]      = DualityKey.Enter;
            virtualKeyToDualityKey[VirtualKeyCode.ShiftKey]    = DualityKey.ShiftLeft;
            virtualKeyToDualityKey[VirtualKeyCode.LShiftKey]   = DualityKey.ShiftLeft;
            virtualKeyToDualityKey[VirtualKeyCode.RShiftKey]   = DualityKey.ShiftRight;
            virtualKeyToDualityKey[VirtualKeyCode.ControlKey]  = DualityKey.ControlLeft;
            virtualKeyToDualityKey[VirtualKeyCode.LControlKey] = DualityKey.ControlLeft;
            virtualKeyToDualityKey[VirtualKeyCode.RControlKey] = DualityKey.ControlRight;
            virtualKeyToDualityKey[VirtualKeyCode.Menu]        = DualityKey.AltLeft;
            virtualKeyToDualityKey[VirtualKeyCode.LMenu]       = DualityKey.AltLeft;
            virtualKeyToDualityKey[VirtualKeyCode.RMenu]       = DualityKey.AltRight;
            virtualKeyToDualityKey[VirtualKeyCode.NumPad0]     = DualityKey.Keypad0;
            virtualKeyToDualityKey[VirtualKeyCode.NumPad1]     = DualityKey.Keypad1;
            virtualKeyToDualityKey[VirtualKeyCode.NumPad2]     = DualityKey.Keypad2;
            virtualKeyToDualityKey[VirtualKeyCode.NumPad3]     = DualityKey.Keypad3;
            virtualKeyToDualityKey[VirtualKeyCode.NumPad4]     = DualityKey.Keypad4;
            virtualKeyToDualityKey[VirtualKeyCode.NumPad5]     = DualityKey.Keypad5;
            virtualKeyToDualityKey[VirtualKeyCode.NumPad6]     = DualityKey.Keypad6;
            virtualKeyToDualityKey[VirtualKeyCode.NumPad7]     = DualityKey.Keypad7;
            virtualKeyToDualityKey[VirtualKeyCode.NumPad8]     = DualityKey.Keypad8;
            virtualKeyToDualityKey[VirtualKeyCode.NumPad9]     = DualityKey.Keypad9;
            virtualKeyToDualityKey[VirtualKeyCode.Multiply]    = DualityKey.KeypadMultiply;
            virtualKeyToDualityKey[VirtualKeyCode.Add]         = DualityKey.KeypadAdd;
            virtualKeyToDualityKey[VirtualKeyCode.Subtract]    = DualityKey.KeypadSubtract;
            virtualKeyToDualityKey[VirtualKeyCode.Divide]      = DualityKey.KeypadDivide;
            virtualKeyToDualityKey[VirtualKeyCode.Decimal]     = DualityKey.KeypadDecimal;
            virtualKeyToDualityKey[VirtualKeyCode.PageDown]    = DualityKey.PageDown;
            virtualKeyToDualityKey[VirtualKeyCode.Back]        = DualityKey.BackSpace;

            //
            // Note that the above virtual key mapping is by definition incomplete:
            // Virtual keys do not distinguish between left and right modifiers.
            // Therefore it is not possible to map from a virtual key to the correct
            // scancode in all cases. The only way around this would be to parse
            // scancodes directly.
            //
            // The reason we're preferring scancodes over virtual keys is detailed here:
            // https://github.com/AdamsLair/duality/issues/289#issuecomment-184367749
            //
        }
Ejemplo n.º 5
0
 bool IKeyboardInputSource.this[Key key]
 {
     get { return(this.inputKeyPressed[(int)key]); }
 }