1- using GHelper . Display ;
1+ using GHelper . Display ;
22using GHelper . Helpers ;
33using GHelper . Mode ;
44using GHelper . USB ;
@@ -26,6 +26,9 @@ public class InputDispatcher
2626 public static Keys keyProfile4 = ( Keys ) AppConfig . Get ( "keybind_profile_4" , ( int ) Keys . F20 ) ;
2727 public static Keys keyXGM = ( Keys ) AppConfig . Get ( "keybind_xgm" , ( int ) Keys . F21 ) ;
2828
29+ public static ModifierKeys keyModifier = GetModifierKeys ( "modifier_keybind" , ModifierKeys . Shift | ModifierKeys . Control ) ;
30+ public static ModifierKeys keyModifierAlt = GetModifierKeys ( "modifier_keybind_alt" , ModifierKeys . Shift | ModifierKeys . Control | ModifierKeys . Alt ) ;
31+
2932 static ModeControl modeControl = Program . modeControl ;
3033 static ScreenControl screenControl = new ScreenControl ( ) ;
3134
@@ -108,7 +111,23 @@ public void InitBacklightTimer()
108111 AppConfig . Get ( "keyboard_ac_timeout" ) > 0 && SystemInformation . PowerStatus . PowerLineStatus == PowerLineStatus . Online ;
109112 }
110113
114+ private static ModifierKeys GetModifierKeys ( string configKey , ModifierKeys defaultModifiers )
115+ {
116+ string configValue = AppConfig . GetString ( configKey , "" ) ;
117+
118+ if ( string . IsNullOrWhiteSpace ( configValue ) )
119+ return defaultModifiers ;
120+
121+ ModifierKeys modifiers = ModifierKeys . None ;
122+ HashSet < string > keys = new HashSet < string > ( configValue . Split ( '-' ) , StringComparer . OrdinalIgnoreCase ) ;
111123
124+ if ( keys . Contains ( "win" ) ) modifiers |= ModifierKeys . Win ;
125+ if ( keys . Contains ( "shift" ) ) modifiers |= ModifierKeys . Shift ;
126+ if ( keys . Contains ( "control" ) ) modifiers |= ModifierKeys . Control ;
127+ if ( keys . Contains ( "alt" ) ) modifiers |= ModifierKeys . Alt ;
128+
129+ return modifiers ;
130+ }
112131
113132 public void RegisterKeys ( )
114133 {
@@ -119,37 +138,37 @@ public void RegisterKeys()
119138
120139 if ( keyProfile != Keys . None )
121140 {
122- hook . RegisterHotKey ( ModifierKeys . Shift | ModifierKeys . Control , keyProfile ) ;
123- hook . RegisterHotKey ( ModifierKeys . Shift | ModifierKeys . Control | ModifierKeys . Alt , keyProfile ) ;
141+ hook . RegisterHotKey ( keyModifier , keyProfile ) ;
142+ hook . RegisterHotKey ( keyModifierAlt , keyProfile ) ;
124143 }
125144
126- if ( keyApp != Keys . None ) hook . RegisterHotKey ( ModifierKeys . Shift | ModifierKeys . Control , keyApp ) ;
145+ if ( keyApp != Keys . None ) hook . RegisterHotKey ( keyModifier , keyApp ) ;
127146
128147 if ( ! AppConfig . Is ( "skip_hotkeys" ) )
129148 {
130149 if ( AppConfig . IsDUO ( ) )
131150 {
132- hook . RegisterHotKey ( ModifierKeys . Shift | ModifierKeys . Control | ModifierKeys . Alt , Keys . F7 ) ;
133- hook . RegisterHotKey ( ModifierKeys . Shift | ModifierKeys . Control | ModifierKeys . Alt , Keys . F8 ) ;
151+ hook . RegisterHotKey ( keyModifierAlt , Keys . F7 ) ;
152+ hook . RegisterHotKey ( keyModifierAlt , Keys . F8 ) ;
134153 }
135154
136- hook . RegisterHotKey ( ModifierKeys . Shift | ModifierKeys . Control | ModifierKeys . Alt , Keys . F13 ) ;
155+ hook . RegisterHotKey ( keyModifierAlt , Keys . F13 ) ;
137156
138- hook . RegisterHotKey ( ModifierKeys . Shift | ModifierKeys . Control | ModifierKeys . Alt , Keys . F14 ) ;
139- hook . RegisterHotKey ( ModifierKeys . Shift | ModifierKeys . Control | ModifierKeys . Alt , Keys . F15 ) ;
157+ hook . RegisterHotKey ( keyModifierAlt , Keys . F14 ) ;
158+ hook . RegisterHotKey ( keyModifierAlt , Keys . F15 ) ;
140159
141- hook . RegisterHotKey ( ModifierKeys . Shift | ModifierKeys . Control | ModifierKeys . Alt , keyProfile0 ) ;
142- hook . RegisterHotKey ( ModifierKeys . Shift | ModifierKeys . Control | ModifierKeys . Alt , keyProfile1 ) ;
143- hook . RegisterHotKey ( ModifierKeys . Shift | ModifierKeys . Control | ModifierKeys . Alt , keyProfile2 ) ;
144- hook . RegisterHotKey ( ModifierKeys . Shift | ModifierKeys . Control | ModifierKeys . Alt , keyProfile3 ) ;
145- hook . RegisterHotKey ( ModifierKeys . Shift | ModifierKeys . Control | ModifierKeys . Alt , keyProfile4 ) ;
146- hook . RegisterHotKey ( ModifierKeys . Shift | ModifierKeys . Control | ModifierKeys . Alt , keyXGM ) ;
160+ hook . RegisterHotKey ( keyModifierAlt , keyProfile0 ) ;
161+ hook . RegisterHotKey ( keyModifierAlt , keyProfile1 ) ;
162+ hook . RegisterHotKey ( keyModifierAlt , keyProfile2 ) ;
163+ hook . RegisterHotKey ( keyModifierAlt , keyProfile3 ) ;
164+ hook . RegisterHotKey ( keyModifierAlt , keyProfile4 ) ;
165+ hook . RegisterHotKey ( keyModifierAlt , keyXGM ) ;
147166
148167 hook . RegisterHotKey ( ModifierKeys . Control , Keys . VolumeDown ) ;
149168 hook . RegisterHotKey ( ModifierKeys . Control , Keys . VolumeUp ) ;
150169 hook . RegisterHotKey ( ModifierKeys . Shift , Keys . VolumeDown ) ;
151170 hook . RegisterHotKey ( ModifierKeys . Shift , Keys . VolumeUp ) ;
152- hook . RegisterHotKey ( ModifierKeys . Shift | ModifierKeys . Control , Keys . F20 ) ;
171+ hook . RegisterHotKey ( keyModifier , Keys . F20 ) ;
153172 }
154173
155174 if ( ! AppConfig . IsZ13 ( ) && ! AppConfig . IsAlly ( ) && ! AppConfig . IsVivoZenPro ( ) )
@@ -160,11 +179,11 @@ public void RegisterKeys()
160179
161180 if ( AppConfig . IsAlly ( ) )
162181 {
163- hook . RegisterHotKey ( ModifierKeys . Shift | ModifierKeys . Control | ModifierKeys . Alt , Keys . F1 ) ;
164- hook . RegisterHotKey ( ModifierKeys . Shift | ModifierKeys . Control | ModifierKeys . Alt , Keys . F2 ) ;
165- hook . RegisterHotKey ( ModifierKeys . Shift | ModifierKeys . Control | ModifierKeys . Alt , Keys . F3 ) ;
166- hook . RegisterHotKey ( ModifierKeys . Shift | ModifierKeys . Control | ModifierKeys . Alt , Keys . F4 ) ;
167- hook . RegisterHotKey ( ModifierKeys . Shift | ModifierKeys . Control | ModifierKeys . Alt , Keys . F6 ) ;
182+ hook . RegisterHotKey ( keyModifierAlt , Keys . F1 ) ;
183+ hook . RegisterHotKey ( keyModifierAlt , Keys . F2 ) ;
184+ hook . RegisterHotKey ( keyModifierAlt , Keys . F3 ) ;
185+ hook . RegisterHotKey ( keyModifierAlt , Keys . F4 ) ;
186+ hook . RegisterHotKey ( keyModifierAlt , Keys . F6 ) ;
168187 }
169188
170189 // FN-Lock group
@@ -425,14 +444,14 @@ public void KeyPressed(object sender, KeyPressedEventArgs e)
425444
426445 }
427446
428- if ( e . Modifier == ( ModifierKeys . Control | ModifierKeys . Shift ) )
447+ if ( e . Modifier == keyModifier )
429448 {
430449 if ( e . Key == keyProfile ) modeControl . CyclePerformanceMode ( ) ;
431450 if ( e . Key == keyApp ) Program . SettingsToggle ( ) ;
432451 if ( e . Key == Keys . F20 ) ToggleMic ( ) ;
433452 }
434453
435- if ( e . Modifier == ( ModifierKeys . Control | ModifierKeys . Shift | ModifierKeys . Alt ) )
454+ if ( e . Modifier == keyModifierAlt )
436455 {
437456 if ( e . Key == keyProfile ) modeControl . CyclePerformanceMode ( true ) ;
438457
0 commit comments