diff --git a/Wox/MainWindow.xaml b/Wox/MainWindow.xaml index f6405e5607..8bd987941c 100644 --- a/Wox/MainWindow.xaml +++ b/Wox/MainWindow.xaml @@ -20,38 +20,6 @@ AllowsTransparency="True" Visibility="{Binding IsVisible,Converter={converters:VisibilityConverter}}" PreviewKeyDown="Window_PreviewKeyDown" d:DataContext="{d:DesignInstance vm:MainViewModel}"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Wox/MainWindow.xaml.cs b/Wox/MainWindow.xaml.cs index 0fd9210bb8..4430fd6fe9 100644 --- a/Wox/MainWindow.xaml.cs +++ b/Wox/MainWindow.xaml.cs @@ -159,12 +159,53 @@ namespace Wox private void Window_PreviewKeyDown(object sender, KeyEventArgs e) { - //The code here is to supress the conflict of Window.InputBinding and ListBox/TextBox native Key handle var vm = this.DataContext as MainViewModel; + + if (null == vm) return; //when alt is pressed, the real key should be e.SystemKey - Key key = (e.Key == Key.System ? e.SystemKey : e.Key); + var key = (e.Key == Key.System ? e.SystemKey : e.Key); switch (key) { + case Key.Escape: + vm.EscCommand.Execute(null); + e.Handled = true; + break; + + case Key.Tab: + if (GlobalHotkey.Instance.CheckModifiers().ShiftPressed) + { + vm.SelectPrevItemCommand.Execute(null); + } + else + { + vm.SelectNextItemCommand.Execute(null); + } + e.Handled = true; + break; + + case Key.N: + case Key.J: + if (GlobalHotkey.Instance.CheckModifiers().CtrlPressed) + { + vm.SelectNextItemCommand.Execute(null); + } + break; + + case Key.P: + case Key.K: + if (GlobalHotkey.Instance.CheckModifiers().CtrlPressed) + { + vm.SelectPrevItemCommand.Execute(null); + } + break; + + case Key.O: + if (GlobalHotkey.Instance.CheckModifiers().CtrlPressed) + { + vm.CtrlOCommand.Execute(null); + } + break; + case Key.Down: if (GlobalHotkey.Instance.CheckModifiers().CtrlPressed) { @@ -188,17 +229,93 @@ namespace Wox } e.Handled = true; break; + + case Key.D: + if (GlobalHotkey.Instance.CheckModifiers().CtrlPressed) + { + vm.SelectNextPageCommand.Execute(null); + } + break; + case Key.PageDown: vm.SelectNextPageCommand.Execute(null); e.Handled = true; break; + + case Key.U: + if (GlobalHotkey.Instance.CheckModifiers().CtrlPressed) + { + vm.SelectPrevPageCommand.Execute(null); + } + break; + case Key.PageUp: vm.SelectPrevPageCommand.Execute(null); e.Handled = true; break; + case Key.Back: vm.BackCommand.Execute(e); break; + + case Key.F1: + vm.StartHelpCommand.Execute(null); + break; + + case Key.Enter: + if (GlobalHotkey.Instance.CheckModifiers().ShiftPressed) + { + vm.ShiftEnterCommand.Execute(null); + } + else + { + vm.OpenResultCommand.Execute(null); + } + e.Handled = true; + break; + + case Key.D1: + + if (GlobalHotkey.Instance.CheckModifiers().AltPressed) + { + vm.OpenResultCommand.Execute(0); + } + break; + + case Key.D2: + if (GlobalHotkey.Instance.CheckModifiers().AltPressed) + { + vm.OpenResultCommand.Execute(1); + } + break; + + case Key.D3: + if (GlobalHotkey.Instance.CheckModifiers().AltPressed) + { + vm.OpenResultCommand.Execute(2); + } + break; + + case Key.D4: + if (GlobalHotkey.Instance.CheckModifiers().AltPressed) + { + vm.OpenResultCommand.Execute(3); + } + break; + + case Key.D5: + if (GlobalHotkey.Instance.CheckModifiers().AltPressed) + { + vm.OpenResultCommand.Execute(4); + } + break; + case Key.D6: + if (GlobalHotkey.Instance.CheckModifiers().AltPressed) + { + vm.OpenResultCommand.Execute(5); + } + break; + } }