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); }
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); }
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; }
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); }
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); }
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); }