Exemple #1
0
        public KeyChar Find(Key key)
        {
            KeyChar finded = null;

            finded = keyChars.Find(keyChar => keyChar.VirtualKey == key);
            return(finded);
        }
        private void CoreWindow_KeyDown(object sender, KeyEventArgs args)
        {
            var xnaKey = KeyTranslate(args.VirtualKey, args.KeyStatus);

            Keyboard.SetKey(xnaKey);

            _lastEnqueuedKeyChar     = new KeyChar();
            _lastEnqueuedKeyChar.Key = xnaKey;
            TextQueue.Enqueue(_lastEnqueuedKeyChar);
        }
Exemple #3
0
        private void View_KeyLoaded(object sender, KeyboardKeyEventArgs e)
        {
            KeyChar keyChar = keyCharsProvider.Find(e.Key);

            if (keyChar is AlphabeticKey alphabeticKey)
            {
                alphabeticKey.UpperCase = e.IsCapsToggled;
            }
            view.UpdateKey(e.Key, keyChar.Content);
        }
Exemple #4
0
 public unsafe void Subscribe(GlfwEvents events)
 {
     _handle      = events.Handle;
     events.Char += _char = (_, c) => KeyChar?.Invoke(this, (char)c);
     events.Key  += _key = (_, key, code, action, mods) =>
                           (action switch
     {
         InputAction.Press => KeyDown,
         InputAction.Release => KeyUp,
         InputAction.Repeat => null,
         _ => null
     })?.Invoke(this, ConvertKey(key), code);
        public unsafe void DoEvent(Event @event)
        {
            switch ((EventType)@event.Type)
            {
            case EventType.Keydown:
            {
                if (@event.Key.Repeat != 1 && _keyMap.TryGetValue((KeyCode)@event.Key.Keysym.Sym, out var key))
                {
                    _keysDown.Add(key);
                    KeyDown?.Invoke(this, key, (int)@event.Key.Keysym.Scancode);
                }

                break;
            }

            case EventType.Keyup:
            {
                if (@event.Key.Repeat != 1 && _keyMap.TryGetValue((KeyCode)@event.Key.Keysym.Sym, out var key))
                {
                    _keysDown.Remove(key);
                    KeyUp?.Invoke(this, key, (int)@event.Key.Keysym.Scancode);
                }

                break;
            }

            case EventType.Textediting:
            {
                break;
            }

            case EventType.Textinput:
            {
                for (int i = 0; i < 32; i++)
                {
                    var @char = @event.Text.Text[i];
                    if (@char == 0)
                    {
                        break;
                    }

                    KeyChar?.Invoke(this, (char)@char);
                }

                break;
            }

            case EventType.Keymapchanged:
                break;
            }
        }
Exemple #6
0
        private void View_KeyboardKeyUp(object sender, KeyboardKeyEventArgs e)
        {
            KeyChar pressedKey = keyCharsProvider.Find(e.Key);

            if (e.Key == Key.CapsLock)
            {
                ChangeAlphabeticKeyRegister(e.IsCapsToggled);
            }
            else if (e.Key == Key.LeftShift || e.Key == Key.RightShift)
            {
                ChangeAlphabeticKeyRegister(e.IsCapsToggled);
                ChangeSymbolKeys(false);
            }
            else if (pressedKey is SymbolKey || pressedKey is AlphabeticKey)
            {
                CheckInput(pressedKey);
            }
        }
Exemple #7
0
 private void CheckInput(KeyChar key)
 {
     if (Convert.ToChar(key.Content) == sourceString.Next)
     {
         sourceString.Move();
         view.UpdateInputString(sourceString.PassedSubstring);
         view.UpdateLeftedString(sourceString.LeftedSubString);
         if (!sourceString.HasNext)
         {
             view.UpdateLeftedString(null);
             view.Finish();
             timer.Stop();
         }
         speedCalculator.ActionDone();
     }
     else
     {
         view.Fails = ++view.Fails;
     }
 }
Exemple #8
0
 /// <summary>
 /// Raises the OnChar event. Override this method to add code to handle when a WM_CHAR message is received
 /// </summary>
 /// <param name="e">InputEventCKB for the OnChar event</param>
 private void invokeChar(InputEventKeyboard e)
 {
     KeyChar?.Invoke(e);
 }
 public void FireKeyChar(KeyCharEventArgs e)
 {
     KeyChar?.Invoke(this, e);
 }
Exemple #10
0
 public void RaiseCharEvent(char c)
 {
     KeyChar?.Invoke(this, c);
 }
 public override int GetHashCode() => KeyChar.HasValue ? KeyChar.GetHashCode() : KeyType.GetHashCode();
        //====== override: Object

        public override string ToString() => "Key: " + (KeyChar.HasValue ? KeyChar.ToString() : KeyType.ToString());