Skip to content

Commit

Permalink
resolves #80
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
ckelwin committed Aug 12, 2022
1 parent 3a37f3d commit ea63ffe
Show file tree
Hide file tree
Showing 6 changed files with 38 additions and 21 deletions.
2 changes: 1 addition & 1 deletion KeyNStroke/App.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ private void InitSettings()
private void InitKeyboardInterception()
{
myKeyboardHook = new KeyboardHook();
myKeystrokeConverter = new KeystrokeParser(myKeyboardHook);
myKeystrokeConverter = new KeystrokeParser(myKeyboardHook, mySettings);
}

#endregion
Expand Down
12 changes: 7 additions & 5 deletions KeyNStroke/KeystrokeEvent.cs
Original file line number Diff line number Diff line change
Expand Up @@ -105,10 +105,10 @@ public string AsShortcutString()
public List<string> ShortcutModifiersToList()
{
List<string> Modifiers = new List<string>();
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;
}

Expand Down Expand Up @@ -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;
}
}

Expand Down
12 changes: 7 additions & 5 deletions KeyNStroke/KeystrokeParser.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -30,7 +32,7 @@ public KeystrokeParser(IKeyboardRawEventProvider hook)
/// <param name="e"></param>
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);
Expand Down Expand Up @@ -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)
{
Expand Down Expand Up @@ -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)
{
Expand All @@ -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;
Expand Down
3 changes: 3 additions & 0 deletions KeyNStroke/Settings1.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,9 @@
IsChecked="{Binding EnableWindowFade}">Hide window when empty</CheckBox>
<CheckBox x:Name="cb_periodictopmost"
IsChecked="{Binding PeriodicTopmost}">Put on top periodically</CheckBox>
<CheckBox x:Name="cb_fulltextoverimage"
IsChecked="{Binding EnableTextOverSymbol}"
ToolTip="Displays text instead of symbols">Text instead of symbols</CheckBox>
</StackPanel>
</StackPanel>
<StackPanel Margin="5"
Expand Down
10 changes: 10 additions & 0 deletions KeyNStroke/SettingsStore.cs
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,7 @@ class Settings
[DataMember] public Nullable<bool> enableHistoryTimeout = null;
[DataMember] public Nullable<bool> enableWindowFade = null;
[DataMember] public Nullable<bool> enableCursorIndicator = null;
[DataMember] public Nullable<bool> enableTextOverSymbol = null;
[DataMember] public Nullable<double> cursorIndicatorOpacity = null;
[DataMember] public Nullable<double> cursorIndicatorSize = null;
[DataMember] public SerializableColor2 cursorIndicatorColor = null;
Expand Down Expand Up @@ -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
{
Expand Down Expand Up @@ -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"));
Expand Down Expand Up @@ -827,6 +836,7 @@ public override string ToString()
EnableHistoryTimeout: {EnableHistoryTimeout}
EnableWindowFade: {EnableWindowFade}
EnableCursorIndicator: {EnableCursorIndicator}
EnableTextOverSymbol: {EnableTextOverSymbol}
CursorIndicatorOpacity: {CursorIndicatorOpacity}
CursorIndicatorSize: {CursorIndicatorSize}
CursorIndicatorColor: {CursorIndicatorColor}
Expand Down
20 changes: 10 additions & 10 deletions KeyNStroke/SpecialkeysParser.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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";
Expand All @@ -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:
Expand All @@ -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 " ⎙ ";

Expand Down

0 comments on commit ea63ffe

Please sign in to comment.