public void HandleKeyDown(System.Windows.Controls.ContentControl sender, DependencyLogicalKey virtualKeyConfig, Dictionary <ContentControl, DependencyLogicalKey> virtualKeys)
        {
            var virtualKey        = QuertyKeyboard.GetVirtualKey(sender) as VirtualKey;
            var userDefineKey     = QuertyKeyboard.GetVirtualKey(sender) as UserDefinedKey;
            var isShiftVirtualKey = GetIsShiftVirtualKey(virtualKey);

            if (userDefineKey != null)
            {
                foreach (var kvp in _shiftKeys)
                {
                    foreach (var control in _shiftKeys[kvp.Key])
                    {
                        if (control is System.Windows.Controls.CheckBox)
                        {
                            var checkBox = control as System.Windows.Controls.CheckBox;
                            checkBox.IsChecked = false;
                        }
                        else if (control is System.Windows.Controls.Primitives.ToggleButton)
                        {
                            var toggleButton = control as System.Windows.Controls.Primitives.ToggleButton;
                            toggleButton.IsChecked = false;
                        }
                    }
                }
            }

            if (isShiftVirtualKey || virtualKey == null)
            {
                return;
            }

            foreach (var kvp in _shiftKeys)
            {
                foreach (var control in _shiftKeys[kvp.Key])
                {
                    var isKeyDown = virtualKey.KeyboardService.IsKeyDownAsync(kvp.Key);
                    if (control is System.Windows.Controls.CheckBox)
                    {
                        var checkBox = control as System.Windows.Controls.CheckBox;
                        checkBox.IsChecked = isKeyDown;
                    }
                    else if (control is System.Windows.Controls.Primitives.ToggleButton)
                    {
                        var toggleButton = control as System.Windows.Controls.Primitives.ToggleButton;
                        toggleButton.IsChecked = isKeyDown;
                    }
                }
            }
        }
        public void RegisterKey(System.Windows.Controls.ContentControl sender)
        {
            var instantaneousModifierKey = QuertyKeyboard.GetVirtualKey(sender) as InstantaneousModifierKey;
            var isShiftVirtualKey        = GetIsShiftVirtualKey(instantaneousModifierKey);

            if (!isShiftVirtualKey)
            {
                return;
            }

            if (!_shiftKeys.ContainsKey(instantaneousModifierKey.KeyCode))
            {
                _shiftKeys[instantaneousModifierKey.KeyCode] = new List <ContentControl>();
            }
            _shiftKeys[instantaneousModifierKey.KeyCode].Add(sender);
        }
        public void HandleUserDefinedKey(QuertyKeyboard sender, DependencyLogicalKey virtualKeyConfig, IKeyboardInput keyboardService)
        {
            //var currentLayout = (QuertyKeyboard)sender.KeyboardLayout;

            var keyName = (virtualKeyConfig as UserDefinedKey).Id.ToString();

            switch (keyName)
            {
            case @"KBEXPAND":
                sender.KeyboardLayout = DefaultKeyboardLayout.SplittedKeyboard;
                break;

            case @"KBCOMPACT":
                sender.KeyboardLayout = DefaultKeyboardLayout.StandardKeyboard;
                break;

            case @"KBNUMERIC":
                sender.KeyboardLayout = DefaultKeyboardLayout.NumericKeyboard;
                break;

            default:
                break;
            }
        }