From 5cc31f3f602723ae7eaf1aba9c6db3e5f08ec894 Mon Sep 17 00:00:00 2001 From: CHAN Kelwin Hillary Date: Sun, 31 Jul 2022 20:08:02 +0800 Subject: [PATCH] resolves Phaiax/Key-n-Stroke#80 Implemented for Shift, CapsLock, Return, Backspace, Tab, PageUp, PageDown, End and Home keys. Added checkbox "Text instead of symbols" in settings to toggle between showing text or symbols. Default is unchecked to retain default behavior. --- KeyNStroke/App.xaml.cs | 2 +- KeyNStroke/KeystrokeEvent.cs | 12 +++++++----- KeyNStroke/KeystrokeParser.cs | 12 +++++++----- KeyNStroke/Settings1.xaml | 3 +++ KeyNStroke/SettingsStore.cs | 10 ++++++++++ KeyNStroke/SpecialkeysParser.cs | 20 ++++++++++---------- 6 files changed, 38 insertions(+), 21 deletions(-) diff --git a/KeyNStroke/App.xaml.cs b/KeyNStroke/App.xaml.cs index c14d6cd..22fce42 100644 --- a/KeyNStroke/App.xaml.cs +++ b/KeyNStroke/App.xaml.cs @@ -91,7 +91,7 @@ private void InitSettings() private void InitKeyboardInterception() { myKeyboardHook = new KeyboardHook(); - myKeystrokeConverter = new KeystrokeParser(myKeyboardHook); + myKeystrokeConverter = new KeystrokeParser(myKeyboardHook, mySettings); } #endregion diff --git a/KeyNStroke/KeystrokeEvent.cs b/KeyNStroke/KeystrokeEvent.cs index 529760f..141188f 100644 --- a/KeyNStroke/KeystrokeEvent.cs +++ b/KeyNStroke/KeystrokeEvent.cs @@ -105,10 +105,10 @@ public string AsShortcutString() public List ShortcutModifiersToList() { List Modifiers = new List(); - if (OrigShift) Modifiers.Add(SpecialkeysParser.ToString(Key.LeftShift)); - if (Ctrl) Modifiers.Add(SpecialkeysParser.ToString(Key.LeftCtrl)); - if (Alt) Modifiers.Add(SpecialkeysParser.ToString(Key.LeftAlt)); - if (Win) Modifiers.Add(SpecialkeysParser.ToString(Key.LWin)); + if (OrigShift) Modifiers.Add(SpecialkeysParser.ToString(Key.LeftShift, settings)); + if (Ctrl) Modifiers.Add(SpecialkeysParser.ToString(Key.LeftCtrl, settings)); + if (Alt) Modifiers.Add(SpecialkeysParser.ToString(Key.LeftAlt, settings)); + if (Win) Modifiers.Add(SpecialkeysParser.ToString(Key.LWin, settings)); return Modifiers; } @@ -184,14 +184,16 @@ public string ShortcutIdentifier() return null; } + private SettingsStore settings; - public KeystrokeEventArgs(KeyboardRawEventArgs e) + public KeystrokeEventArgs(KeyboardRawEventArgs e, SettingsStore settings) { this.raw = e; this.OrigShift = e.Shift; this.OrigCaps = e.Caps; this.OrigLShift = e.LShift; this.OrigRShift = e.RShift; + this.settings = settings; } } diff --git a/KeyNStroke/KeystrokeParser.cs b/KeyNStroke/KeystrokeParser.cs index 7dc6883..84e4587 100644 --- a/KeyNStroke/KeystrokeParser.cs +++ b/KeyNStroke/KeystrokeParser.cs @@ -13,12 +13,14 @@ namespace KeyNStroke public class KeystrokeParser : IKeystrokeEventProvider { //KeysConverter Converter = new KeysConverter(); + private SettingsStore settings; #region Constructor - public KeystrokeParser(IKeyboardRawEventProvider hook) + public KeystrokeParser(IKeyboardRawEventProvider hook, SettingsStore settings) { hook.KeyEvent += hook_KeyEvent; + this.settings = settings; } #endregion @@ -30,7 +32,7 @@ public KeystrokeParser(IKeyboardRawEventProvider hook) /// void hook_KeyEvent(KeyboardRawEventArgs raw_e) { - KeystrokeEventArgs e = new KeystrokeEventArgs(raw_e); + KeystrokeEventArgs e = new KeystrokeEventArgs(raw_e, settings); e.IsAlpha = CheckIsAlpha(e.raw); e.IsNumericFromNumpad = CheckIsNumericFromNumpad(e.raw); @@ -83,7 +85,7 @@ void hook_KeyEvent(KeyboardRawEventArgs raw_e) Log.e("KP", " e.NoModifiers > try SpecialkeysParser.ToString "); try { - e.TextModeString = SpecialkeysParser.ToString(e.Key); + e.TextModeString = SpecialkeysParser.ToString(e.Key, settings); } catch (NotImplementedException) { @@ -201,7 +203,7 @@ private void ParseShortcutViaSpecialkeysParser(KeystrokeEventArgs e) { try { - e.TextModeString = SpecialkeysParser.ToString(e.Key); + e.TextModeString = SpecialkeysParser.ToString(e.Key, settings); } catch (NotImplementedException) { @@ -217,7 +219,7 @@ private void ParseTexttViaSpecialkeysParser(KeystrokeEventArgs e) { try { - e.TextModeString = SpecialkeysParser.ToString(e.Key); + e.TextModeString = SpecialkeysParser.ToString(e.Key, settings); e.ShouldBeDisplayed = true; e.StrokeType = KeystrokeType.Text; e.RequiresNewLineAfterwards = e.Key == Key.Return; diff --git a/KeyNStroke/Settings1.xaml b/KeyNStroke/Settings1.xaml index e8f3203..534fba1 100644 --- a/KeyNStroke/Settings1.xaml +++ b/KeyNStroke/Settings1.xaml @@ -129,6 +129,9 @@ IsChecked="{Binding EnableWindowFade}">Hide window when empty Put on top periodically + Text instead of symbols enableHistoryTimeout = null; [DataMember] public Nullable enableWindowFade = null; [DataMember] public Nullable enableCursorIndicator = null; + [DataMember] public Nullable enableTextOverSymbol = null; [DataMember] public Nullable cursorIndicatorOpacity = null; [DataMember] public Nullable cursorIndicatorSize = null; [DataMember] public SerializableColor2 cursorIndicatorColor = null; @@ -416,6 +417,13 @@ public bool EnableCursorIndicator set { i.enableCursorIndicator = value; OnSettingChanged("EnableCursorIndicator"); } } + public bool EnableTextOverSymbolDefault = false; + public bool EnableTextOverSymbol + { + get { return Or(i.enableTextOverSymbol, EnableTextOverSymbolDefault); } + set { i.enableTextOverSymbol = value; OnSettingChanged("EnableTextOverSymbol"); } + } + public double CursorIndicatorOpacityDefault = 0.3; public double CursorIndicatorOpacity { @@ -694,6 +702,7 @@ public void CallPropertyChangedForAllProperties() PropertyChanged(this, new PropertyChangedEventArgs("EnableHistoryTimeout")); PropertyChanged(this, new PropertyChangedEventArgs("EnableWindowFade")); PropertyChanged(this, new PropertyChangedEventArgs("EnableCursorIndicator")); + PropertyChanged(this, new PropertyChangedEventArgs("EnableTextOverSymbol")); PropertyChanged(this, new PropertyChangedEventArgs("CursorIndicatorOpacity")); PropertyChanged(this, new PropertyChangedEventArgs("CursorIndicatorSize")); PropertyChanged(this, new PropertyChangedEventArgs("CursorIndicatorColor")); @@ -827,6 +836,7 @@ public override string ToString() EnableHistoryTimeout: {EnableHistoryTimeout} EnableWindowFade: {EnableWindowFade} EnableCursorIndicator: {EnableCursorIndicator} +EnableTextOverSymbol: {EnableTextOverSymbol} CursorIndicatorOpacity: {CursorIndicatorOpacity} CursorIndicatorSize: {CursorIndicatorSize} CursorIndicatorColor: {CursorIndicatorColor} diff --git a/KeyNStroke/SpecialkeysParser.cs b/KeyNStroke/SpecialkeysParser.cs index 6f2e07b..7f580e4 100644 --- a/KeyNStroke/SpecialkeysParser.cs +++ b/KeyNStroke/SpecialkeysParser.cs @@ -9,12 +9,12 @@ namespace KeyNStroke { class SpecialkeysParser { - public static string ToString(Key k) + public static string ToString(Key k, SettingsStore settings) { switch(k){ case Key.LeftShift: case Key.RightShift: - return "⇧"; + return settings.EnableTextOverSymbol ? "Shift" : "⇧"; case Key.LeftCtrl: case Key.RightCtrl: return "Ctrl"; @@ -25,12 +25,12 @@ public static string ToString(Key k) case Key.RightAlt: return "Alt"; case Key.CapsLock: - return "⇪"; + return settings.EnableTextOverSymbol ? " [CapsLock] " : "⇪"; case Key.LineFeed: case Key.Return: - return " ⏎"; + return settings.EnableTextOverSymbol ? "[Return]" : " ⏎"; case Key.Back: - return " ⌫ "; + return settings.EnableTextOverSymbol ? " [Backspace] " : " ⌫ "; case Key.Left: return " ← "; case Key.Right: @@ -52,17 +52,17 @@ public static string ToString(Key k) case Key.Tab: - return "↹"; + return settings.EnableTextOverSymbol ? " [Tab] " : "↹"; case Key.Space: return "␣"; case Key.PageUp: - return " ↖ "; + return settings.EnableTextOverSymbol ? " [PageUp] " : " ↖ "; case Key.PageDown: - return " ↘ "; + return settings.EnableTextOverSymbol ? " [PageDown] " : " ↘ "; case Key.End: - return " ⇲ "; + return settings.EnableTextOverSymbol ? " [End] " : " ⇲ "; case Key.Home: - return " ⇱ "; + return settings.EnableTextOverSymbol ? " [Home] " : " ⇱ "; case Key.Print: return " ⎙ ";