解决全局热键不能录制Alt组合键的问题

This commit is contained in:
chao wan 2023-02-28 23:32:58 +08:00
parent b0ff814753
commit ae17e0c264

View file

@ -57,19 +57,21 @@ namespace v2rayN.Views
private void TxtGlobalHotkey_KeyDown(object sender, KeyEventArgs e) private void TxtGlobalHotkey_KeyDown(object sender, KeyEventArgs e)
{ {
var txt = ((TextBox)sender); e.Handled = true;
var index = Utils.ToInt(txt.Name.Substring(txt.Name.Length - 1, 1)); var _ModifierKeys = new Key[] { Key.LeftCtrl, Key.RightCtrl, Key.LeftShift, Key.RightShift, Key.LeftAlt, Key.RightAlt };
if (!_ModifierKeys.Contains(e.Key) && !_ModifierKeys.Contains(e.SystemKey))
{
var txt = ((TextBox)sender);
var index = Utils.ToInt(txt.Name.Substring(txt.Name.Length - 1, 1));
var formsKey = (Forms.Keys)KeyInterop.VirtualKeyFromKey(e.Key == Key.System ? e.SystemKey : e.Key);
if (e.Key == Key.System) lstKey[index].KeyCode = formsKey;
return; lstKey[index].Alt = (Keyboard.Modifiers & ModifierKeys.Alt) == ModifierKeys.Alt;
var formsKey = (Forms.Keys)KeyInterop.VirtualKeyFromKey(e.Key); lstKey[index].Control = (Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control;
lstKey[index].Shift = (Keyboard.Modifiers & ModifierKeys.Shift) == ModifierKeys.Shift;
lstKey[index].KeyCode = formsKey; BindingData(index);
lstKey[index].Alt = Keyboard.IsKeyDown(Key.LeftAlt) || Keyboard.IsKeyDown(Key.RightAlt); }
lstKey[index].Control = Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl);
lstKey[index].Shift = Keyboard.IsKeyDown(Key.LeftShift) || Keyboard.IsKeyDown(Key.RightShift);
BindingData(index);
} }
private void BindingData(int index) private void BindingData(int index)