Пример #1
0
        private void GenerateKeyboard(KeyboardContext context)
        {
            // Build grid
            this.keysGrid.Children.Clear();
            this.keysGrid.RowDefinitions.Clear();
            this.keysGrid.ColumnDefinitions.Clear();

            for (int row = 0; row < context.Rows; row++)
            {
                this.keysGrid.RowDefinitions.Add(new RowDefinition
                {
                    Height = GridLength.Auto
                });

                StackPanel insideGrid = new StackPanel
                {
                    HorizontalAlignment = HorizontalAlignment.Center,
                    Orientation         = Orientation.Horizontal
                };
                Grid.SetRow(insideGrid, row);
                keysGrid.Children.Add(insideGrid);

                List <KeyMapping> keyMappings = context.KeyboardMapping.GetKeyMappingsByRow(row);
                foreach (KeyMapping keyMapping in keyMappings)
                {
                    KeyboardButton keyboardButton = new KeyboardButton
                    {
                        Content = keyMapping.Symbol
                    };
                    keyboardButton.Click += this.OnKeyButtonClicked;
                    insideGrid.Children.Add(keyboardButton);
                }
            }
        }
Пример #2
0
        public override void OnApplyTemplate()
        {
            base.OnApplyTemplate();

            this.keysGrid        = this.GetTemplateChild("PART_KeysGrid") as Grid;
            this.shiftButton     = this.GetTemplateChild("PART_ShiftButton") as Button;
            this.symbolButton    = this.GetTemplateChild("PART_SymbolButton") as Button;
            this.spaceButton     = this.GetTemplateChild("PART_SpaceButton") as Button;
            this.backspaceButton = this.GetTemplateChild("PART_BackspaceButton") as Button;
            this.enterButton     = this.GetTemplateChild("PART_EnterButton") as Button;

            if (keysGrid == null)
            {
                throw new InvalidOperationException("Cannot find PART_KeysGrid.");
            }

            if (shiftButton == null)
            {
                throw new InvalidOperationException("Cannot find PART_ShiftButton.");
            }

            if (symbolButton == null)
            {
                throw new InvalidOperationException("Cannot find PART_SymbolButton.");
            }

            if (spaceButton == null)
            {
                throw new InvalidOperationException("Cannot find PART_SpaceButton.");
            }

            if (backspaceButton == null)
            {
                throw new InvalidOperationException("Cannot find PART_BackspaceButton.");
            }

            if (enterButton == null)
            {
                throw new InvalidOperationException("Cannot find PART_EnterButton.");
            }

            this.shiftButton.Click     += OnShiftButtonClick;
            this.symbolButton.Click    += OnSymbolButtonClick;
            this.spaceButton.Click     += OnSpaceButtonClick;
            this.backspaceButton.Click += OnBackspaceButtonClick;
            this.enterButton.Click     += OnEnterButtonClick;

            this.keyboardContext         = this.GenerateKeyboardContext();
            this.secondaryKeybordContext = this.GenerateSecondaryKeyboardContext();
            this.GenerateKeyboard(this.keyboardContext);
        }
Пример #3
0
        protected override KeyboardContext GenerateKeyboardContext()
        {
            KeyboardContext keyboardContext = new KeyboardContext();

            keyboardContext.Rows = 3;

            keyboardContext.KeyboardMapping.Add(new KeyMapping(0, "ქ"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(0, "წ"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(0, "ე"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(0, "რ"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(0, "ტ"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(0, "ყ"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(0, "უ"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(0, "ი"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(0, "ო"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(0, "პ"));

            keyboardContext.KeyboardMapping.Add(new KeyMapping(1, "ა"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(1, "ს"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(1, "დ"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(1, "ფ"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(1, "გ"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(1, "ჰ"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(1, "ჯ"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(1, "კ"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(1, "ლ"));

            keyboardContext.KeyboardMapping.Add(new KeyMapping(2, "ზ"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(2, "ხ"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(2, "ც"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(2, "ვ"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(2, "ბ"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(2, "ნ"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(2, "მ"));

            ToUpperReplacement = new Dictionary <string, string>();
            ToUpperReplacement.Add("წ", "ჭ");
            ToUpperReplacement.Add("რ", "ღ");
            ToUpperReplacement.Add("ტ", "თ");
            ToUpperReplacement.Add("ს", "შ");
            ToUpperReplacement.Add("ჯ", "ჟ");
            ToUpperReplacement.Add("ზ", "ძ");
            ToUpperReplacement.Add("ც", "ჩ");
            ToUpperReplacement.Add("ნ", "N");

            return(keyboardContext);
        }
Пример #4
0
        object NameFromContext(KeyboardContext context)
        {
            switch (context)
            {
            case KeyboardContext.FirstLetterUppercase:
                return(_inputScopeName);

            case KeyboardContext.Number:
                return(_inputScopeNumber);

            case KeyboardContext.Uppercase:
                return(_inputScopeName);

            case KeyboardContext.Email:
                return(_inputScopeEmail);
            }

            return(_inputScopeText);
        }
Пример #5
0
        protected override KeyboardContext GenerateKeyboardContext()
        {
            KeyboardContext keyboardContext = new KeyboardContext();

            keyboardContext.Rows = 3;

            keyboardContext.KeyboardMapping.Add(new KeyMapping(0, "я"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(0, "в"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(0, "е"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(0, "р"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(0, "т"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(0, "ъ"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(0, "у"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(0, "и"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(0, "о"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(0, "п"));

            keyboardContext.KeyboardMapping.Add(new KeyMapping(1, "а"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(1, "с"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(1, "д"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(1, "ф"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(1, "г"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(1, "х"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(1, "й"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(1, "к"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(1, "л"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(1, "ю"));

            keyboardContext.KeyboardMapping.Add(new KeyMapping(2, "ч"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(2, "з"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(2, "ь"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(2, "ц"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(2, "ж"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(2, "б"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(2, "н"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(2, "м"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(2, "ш"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(2, "щ"));

            return(keyboardContext);
        }
Пример #6
0
        protected override KeyboardContext GenerateKeyboardContext()
        {
            KeyboardContext keyboardContext = new KeyboardContext();

            keyboardContext.Rows = 3;

            keyboardContext.KeyboardMapping.Add(new KeyMapping(0, "q"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(0, "w"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(0, "e"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(0, "r"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(0, "t"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(0, "y"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(0, "u"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(0, "i"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(0, "o"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(0, "p"));

            keyboardContext.KeyboardMapping.Add(new KeyMapping(1, "a"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(1, "s"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(1, "d"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(1, "f"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(1, "g"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(1, "h"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(1, "j"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(1, "k"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(1, "l"));

            keyboardContext.KeyboardMapping.Add(new KeyMapping(2, "z"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(2, "x"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(2, "c"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(2, "v"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(2, "b"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(2, "n"));
            keyboardContext.KeyboardMapping.Add(new KeyMapping(2, "m"));

            return(keyboardContext);
        }
 public KeyboardController(KeyboardContext context)
 {
     _context = context;
 }
Пример #8
0
        public TextInput(Rectangle position, KeyboardContext keyboardContext, string text, int textSize, Align contentAlign, ITextEdit controller)
        {
            Deployment.Current.Dispatcher.BeginInvoke(() =>
            {
                if (CurrentFocus != null)
                {
                    CurrentFocus.UnfocusInternal();
                }

                _controller  = controller;
                CurrentFocus = this;

                float dipFactor = DisplayProperties.LogicalDpi / 96.0f;

                if (keyboardContext == KeyboardContext.Password)
                {
                    _password = true;

                    Canvas.SetLeft(_passwordField, (position.X + 1) / dipFactor);
                    Canvas.SetTop(_passwordField, (position.Y + 2) / dipFactor);

                    _passwordField.Width  = (position.Width - 2) / dipFactor;
                    _passwordField.Height = (position.Height - 4) / dipFactor;

                    SetText(text);

                    _passwordField.PasswordChanged += HandleEditingChangedPassword;
                    _passwordField.LostFocus       += HandleEditingDidEnd;
                    _passwordField.KeyUp           += HandleKeyUp;

                    Deployment.Current.Dispatcher.BeginInvoke(() =>
                    {
                        _passwordField.Visibility = Visibility.Visible;
                        _passwordField.Focus();
                        RootFrame.RenderTransform = new CompositeTransform();
                    });
                }
                else
                {
                    Canvas.SetLeft(_textField, (position.X + 1) / dipFactor);
                    Canvas.SetTop(_textField, (position.Y + 2) / dipFactor);

                    _textField.Width  = (position.Width - 2) / dipFactor;
                    _textField.Height = (position.Height - 4) / dipFactor;

                    switch (contentAlign & Align.Horz)
                    {
                    case Align.Left:
                        _textField.TextAlignment = TextAlignment.Left;
                        break;

                    case Align.Right:
                        _textField.TextAlignment = TextAlignment.Right;
                        break;

                    case Align.Center:
                        _textField.TextAlignment = TextAlignment.Center;
                        break;
                    }

                    _inputScope.Names.Clear();
                    _inputScope.Names.Add(NameFromContext(keyboardContext));

                    _uppercase = keyboardContext == KeyboardContext.Uppercase;

                    if (keyboardContext == KeyboardContext.MultilineText)
                    {
                        _textField.VerticalContentAlignment = VerticalAlignment.Top;
                        _textField.AcceptsReturn            = true;
                        _textField.TextWrapping             = TextWrapping.Wrap;
                        _multiline = true;
                    }

                    else
                    {
                        _textField.VerticalContentAlignment = VerticalAlignment.Center;
                        _textField.AcceptsReturn            = false;
                        _textField.TextWrapping             = TextWrapping.NoWrap;
                        _multiline = false;
                    }

                    SetText(text);

                    _textField.TextChanged += HandleEditingChanged;
                    _textField.LostFocus   += HandleEditingDidEnd;
                    _textField.KeyUp       += HandleKeyUp;

                    Deployment.Current.Dispatcher.BeginInvoke(() =>
                    {
                        _textField.Visibility = Visibility.Visible;
                        _textField.Focus();
                        RootFrame.RenderTransform = new CompositeTransform();
                    });
                }
            });
        }
Пример #9
0
            public UIContext(Gui gui)
            {
                _instance = this;
                _keyboard = Create<KeyboardContext>();
                _mouse = Add(new MouseContext(gui));
                //Create<GamePadContext>();

                var handler = Add(new ComponentHandler());
                handler.Handle<IToolUI>(AddToolUI, ui => _toolUis.Remove(ui));
                handler.Handle<IGameUI>(AddGameUI, ui => _gameUis.Remove(ui));

                ToolMode = new ToggleComponent(SetToolMode, SetGameMode);
            }
Пример #10
0
        protected override void HandleInput(GameTime gameTime)
        {
            IInputContext   input = Engine.InputContext;
            MouseContext    mouse = input.Mouse;
            KeyboardContext key   = input.Keyboard;

            if (mouse.WheelDelta != 0)
            {
                _h += -mouse.WheelDelta * gameTime.ElapsedGameTime.TotalSeconds * _h * 0.0843f;
            }

            if (mouse.WasLeftButtonPressed)
            {
                // start drag
                previousPoint = mouse.Location;
            }

            if (mouse.IsLeftButtonDown && !mouse.IsRightButtonDown)
            {
                // dragging
                float diffX = mouse.Location.X - previousPoint.X;
                float diffY = mouse.Location.Y - previousPoint.Y;

                Longitude -= diffX * 0.016f * HeightAboveGround * 2f;
                if (Longitude > 180)
                {
                    Longitude = -180 + (Longitude - 180);
                }
                if (Longitude < -180)
                {
                    Longitude = 180 + (Longitude - -180);
                }

                Latitude += diffY * 0.016f * HeightAboveGround * 2f;
                if (Latitude > 85)
                {
                    Latitude = 85;
                }
                if (Latitude < -85)
                {
                    Latitude = -85;
                }

                previousPoint = mouse.Location;
            }
            else if (!mouse.IsRightButtonDown)
            {
                previousPoint = Vector2.Zero;
            }

            if (mouse.WasRightButtonPressed)
            {
                previousPoint = mouse.Location;
            }

            if (mouse.IsRightButtonDown && !mouse.IsLeftButtonDown)
            {
                // dragging
                float diffX = mouse.Location.X - previousPoint.X;
                float diffY = mouse.Location.Y - previousPoint.Y;

                Rotate(diffX, diffY);

                previousPoint = mouse.Location;
            }
            else if (!mouse.IsLeftButtonDown)
            {
                previousPoint = Vector2.Zero;
            }
        }
 public KeyboardController(KeyboardContext context, ILogger <KeyboardController> logger)
 {
     _context = context;
     _logger  = logger;
 }