Exemple #1
0
        public void PrepareEZLayout_KeyCategoryShortcuts(string keyCode, string command, string expectedLabel, KeyCategory expectedCategory)
        {
            // Arrange
            var ergodoxKey = new ErgodoxKey()
            {
                GlowColor = "", Code = keyCode, Command = command
            };
            ErgodoxLayout ergodoxLayout = InitializeDataTree();

            ergodoxLayout.Revision.Layers.First().Keys.Add(ergodoxKey);

            EZLayout ezLayoutResult;

            // Act
            var ezLayoutMaker = new EZLayoutMaker();

            ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout);

            // Assert
            Assert.Single(ezLayoutResult.EZLayers);
            Assert.Single(ezLayoutResult.EZLayers.First().EZKeys);
            var keyResult = ezLayoutResult.EZLayers.First().EZKeys.First();

            Assert.Equal(expectedLabel, keyResult.Label.Content);
            Assert.Null(keyResult.Modifier);
            Assert.Equal(expectedCategory, keyResult.KeyCategory);
        }
Exemple #2
0
        public void PrepareEZLayout_KeyCategoryWithGlyphs(string keyCode, string expectedLabel, KeyDisplayType expectedDisplayType, KeyCategory expectedCategory, bool expectedIsGlyph)
        {
            // Arrange
            var ergodoxKey = new ErgodoxKey()
            {
                GlowColor = "", Code = keyCode
            };
            ErgodoxLayout ergodoxLayout = InitializeDataTree();

            ergodoxLayout.Revision.Layers.First().Keys.Add(ergodoxKey);

            EZLayout ezLayoutResult;

            // Act
            var ezLayoutMaker = new EZLayoutMaker();

            ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout);

            // Assert
            Assert.Single(ezLayoutResult.EZLayers);
            Assert.Single(ezLayoutResult.EZLayers.First().EZKeys);
            var keyResult = ezLayoutResult.EZLayers.First().EZKeys.First();

            Assert.Equal(expectedLabel, keyResult.Label.Content);
            Assert.Equal(expectedIsGlyph, keyResult.Label.IsGlyph);
            Assert.Equal(expectedDisplayType, keyResult.DisplayType);
            Assert.Equal(expectedCategory, keyResult.KeyCategory);
        }
Exemple #3
0
        public void PrepareEZLayout_ProcessModifiers(bool leftAlt,
                                                     bool leftCtrl,
                                                     bool leftShift,
                                                     bool leftWin,
                                                     bool rightAlt,
                                                     bool rightCtrl,
                                                     bool rightShift,
                                                     bool rightWin,
                                                     string expectedSubLabel,
                                                     KeyDisplayType expectedDisplayType)
        {
            // Arrange
            var modifiers = new ErgodoxModifiers
            {
                LeftAlt    = leftAlt,
                LeftCtrl   = leftCtrl,
                LeftShift  = leftShift,
                LeftWin    = leftWin,
                RightAlt   = rightAlt,
                RightCtrl  = rightCtrl,
                RightShift = rightShift,
                RightWin   = rightWin
            };
            var ergodoxKey = new ErgodoxKey()
            {
                GlowColor = "", Code = "KC_A", Modifiers = modifiers
            };
            ErgodoxLayout ergodoxLayout = InitializeDataTree();

            ergodoxLayout.Revision.Layers.First().Keys.Add(ergodoxKey);

            EZLayout ezLayoutResult;

            // Act
            var ezLayoutMaker = new EZLayoutMaker();

            ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout);

            // Assert
            Assert.Single(ezLayoutResult.EZLayers);
            Assert.Single(ezLayoutResult.EZLayers.First().EZKeys);
            var keyResult = ezLayoutResult.EZLayers.First().EZKeys.First();

            Assert.Equal("A", keyResult.Label.Content);

            if (expectedDisplayType == KeyDisplayType.SimpleLabel)
            {
                Assert.Null(keyResult.Modifier);
            }
            else
            {
                Assert.Equal(expectedSubLabel, keyResult.Modifier.Content);
                Assert.False(keyResult.Modifier.IsGlyph);
            }

            Assert.Equal(expectedDisplayType, keyResult.DisplayType);
        }
        /// <summary>
        ///     Apply the command label.
        /// </summary>
        /// <param name="ergodoxKey">The <see cref="ErgodoxKey" /> containing the command to be applied.</param>
        /// <param name="key">The <see cref="EZKey" /> to apply the command to.</param>
        /// <returns><c>True</c> if command has been applied.</returns>
        private bool AddCommandLabel(ErgodoxKey ergodoxKey, EZKey key)
        {
            if (IsCommandEmpty(ergodoxKey.Command))
            {
                return(false);
            }

            var commandDefinition = GetKeyDefinition(ergodoxKey.Command);

            key.Modifier = key.Label;
            key.Label    = new KeyLabel(commandDefinition.Label, commandDefinition.IsGlyph);

            return(true);
        }
        private void ProcessModifiers(ErgodoxKey ergodoxKey, EZKey key)
        {
            if (ergodoxKey.Modifiers == null)
            {
                return;
            }

            var mods = GetModifiersApplied(ergodoxKey.Modifiers);

            if (!mods.Any())
            {
                return;
            }

            key.Modifier    = new KeyLabel(AggregateModifierLabels(mods));
            key.DisplayType = KeyDisplayType.ModifierOnTop;
        }
Exemple #6
0
        public void PrepareEZLayout_KeyCategoryLayerShortcut(string keyCode,
                                                             string command,
                                                             string expectedLabel,
                                                             string expectedSubLabel,
                                                             KeyDisplayType expectedDisplayType,
                                                             KeyCategory expectedCategory)
        {
            // Arrange
            var ergodoxKey = new ErgodoxKey()
            {
                GlowColor = "", Code = keyCode, Command = command, Layer = 1
            };
            ErgodoxLayout ergodoxLayout = InitializeDataTree();

            ergodoxLayout.Revision.Layers.First().Keys.Add(ergodoxKey);

            EZLayout ezLayoutResult;

            // Act
            var ezLayoutMaker = new EZLayoutMaker();

            ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout);

            // Assert
            Assert.Single(ezLayoutResult.EZLayers);
            Assert.Single(ezLayoutResult.EZLayers.First().EZKeys);
            var keyResult = ezLayoutResult.EZLayers.First().EZKeys.First();

            Assert.Equal(expectedLabel, keyResult.Label.Content);

            if (expectedDisplayType == KeyDisplayType.SimpleLabel)
            {
                Assert.Null(keyResult.Modifier);
            }
            else
            {
                Assert.Equal(expectedSubLabel, keyResult.Modifier.Content);
                Assert.False(keyResult.Modifier.IsGlyph);
            }

            Assert.Equal(expectedCategory, keyResult.KeyCategory);
        }
Exemple #7
0
        public void PrepareEZLayout_InitializeEZKey(string expectedKeyCode, string expectedColor)
        {
            // Arrange
            var ergodoxKey = new ErgodoxKey()
            {
                GlowColor = expectedColor, Code = expectedKeyCode
            };
            ErgodoxLayout ergodoxLayout = InitializeDataTree();

            ergodoxLayout.Revision.Layers.First().Keys.Add(ergodoxKey);

            EZLayout ezLayoutResult;

            // Act
            var ezLayoutMaker = new EZLayoutMaker();

            ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout);

            // Assert
            Assert.Single(ezLayoutResult.EZLayers);
            Assert.Single(ezLayoutResult.EZLayers.First().EZKeys);
            Assert.Equal(expectedColor, ezLayoutResult.EZLayers.First().EZKeys.First().Color);
        }
Exemple #8
0
        public void PrepareEZLayout_KeyCodeUnknown()
        {
            // Arrange
            var ergodoxKey = new ErgodoxKey()
            {
                GlowColor = "", Code = "KC_UNKNOWN_ADSLKFJ"
            };
            ErgodoxLayout ergodoxLayout = InitializeDataTree();

            ergodoxLayout.Revision.Layers.First().Keys.Add(ergodoxKey);

            EZLayout ezLayoutResult;

            // Act
            var ezLayoutMaker = new EZLayoutMaker();

            ezLayoutResult = ezLayoutMaker.PrepareEZLayout(ergodoxLayout);

            // Assert
            Assert.Single(ezLayoutResult.EZLayers);
            Assert.Single(ezLayoutResult.EZLayers.First().EZKeys);
            Assert.Equal("", ezLayoutResult.EZLayers.First().EZKeys.First().Label.Content);
            Assert.False(ezLayoutResult.EZLayers.First().EZKeys.First().Label.IsGlyph);
        }
        private EZKey PrepareKeyLabels(ErgodoxKey ergodoxKey, string layerColor)
        {
            Logger.TraceMethod();
            Logger.DebugInputParam(nameof(ergodoxKey), ergodoxKey);

            var keyDefinition = GetKeyDefinition(ergodoxKey.Code);

            /** Every category has a label, so no need to make a special case :
             *
             * KeyCategory.Autoshift
             * KeyCategory.Digit
             * KeyCategory.Letters
             * KeyCategory.Fn
             * KeyCategory.Fw
             * KeyCategory.Lang
             * KeyCategory.Numpad
             * KeyCategory.Other
             * KeyCategory.Punct
             * KeyCategory.ShiftedPunct
             * KeyCategory.System
             *
             **/
            var key = new EZKey
            {
                KeyCategory = keyDefinition.KeyCategory,
                Label       = new KeyLabel(ergodoxKey.CustomLabel != null ? ergodoxKey.CustomLabel : keyDefinition.Label, keyDefinition.IsGlyph),
                Color       = GetColor(ergodoxKey.GlowColor, layerColor),
                DisplayType = KeyDisplayType.SimpleLabel
            };

            switch (keyDefinition.KeyCategory)
            {
            case KeyCategory.DualFunction:

                if (AddCommandLabel(ergodoxKey, key))
                {
                    key.DisplayType = KeyDisplayType.ModifierUnder;
                }
                else
                {
                    key.KeyCategory = KeyCategory.Modifier;
                }

                break;

            case KeyCategory.Layer:
            case KeyCategory.LayerShortcuts:
                key.Label.Content = string.Format(key.Label.Content, ergodoxKey.Layer.ToString());

                if (AddCommandLabel(ergodoxKey, key))
                {
                    key.DisplayType = KeyDisplayType.ModifierUnder;
                }

                break;

            case KeyCategory.Modifier:

                if (ergodoxKey.Code == KeyCodeOsm && !IsCommandEmpty(ergodoxKey.Command))
                {
                    var commandDefinition = GetKeyDefinition(ergodoxKey.Command);
                    key.Modifier    = new KeyLabel(commandDefinition.Label);
                    key.DisplayType = KeyDisplayType.ModifierOnTop;
                }

                break;

            case KeyCategory.Media:
            case KeyCategory.Mouse:
            case KeyCategory.Nav:
            case KeyCategory.Spacing:
            case KeyCategory.Shine:
                key.DisplayType = KeyDisplayType.SimpleLabel;

                break;

            case KeyCategory.Shortcuts:

                if (!IsCommandEmpty(ergodoxKey.Command))
                {
                    var commandDefinition = GetKeyDefinition(ergodoxKey.Command);
                    key.Label.Content = $"{key.Label.Content} + {commandDefinition.Label}";
                }

                break;

            case KeyCategory.French:
                key.InternationalHint = "fr";

                break;

            case KeyCategory.German:
                key.InternationalHint = "de";

                break;

            case KeyCategory.Hungarian:
                key.InternationalHint = "hu";

                break;

            case KeyCategory.Spanish:
                key.InternationalHint = "es";

                break;

            case KeyCategory.Nordic:
                key.InternationalHint = "no";

                break;
            }

            ProcessModifiers(ergodoxKey, key);

            Logger.DebugOutputParam(nameof(key), key);

            return(key);
        }