From c8f8a286f44d8444ee36ac3cb62f09889db0a811 Mon Sep 17 00:00:00 2001 From: Nguyen Duy Date: Thu, 6 Jun 2024 21:55:00 +0700 Subject: [PATCH] app: add key Shift+Left/Right to move window between screens --- app/Languages/vi.xaml | 6 +++--- app/MainWindow.xaml | 1 + app/MainWindow.xaml.cs | 37 +++++++++++++++++++++++++++++++++++++ 3 files changed, 41 insertions(+), 3 deletions(-) diff --git a/app/Languages/vi.xaml b/app/Languages/vi.xaml index 9130eab..9ff8246 100644 --- a/app/Languages/vi.xaml +++ b/app/Languages/vi.xaml @@ -6,8 +6,8 @@ Tiếng Việt - Cắm màn hình - Hãy cắm màn hình ảo! + Thêm màn hình + Hãy thêm màn hình ảo! Tùy chỉnh... Áp dụng GPU nguồn @@ -42,7 +42,7 @@ Không thể áp dụng độ phân giải tùy chỉnh, quyền truy cập bị từ chối! Giá trị không hợp lệ ở slot #{0}. - Không thể cắm thêm màn hình ảo, bạn đã đạt đến con số giới hạn ({0}). + Không thể thêm thêm màn hình ảo, bạn đã đạt đến con số giới hạn ({0}). Tất cả màn hình ảo sẽ bị tháo bỏ.\nBạn có muốn thoát không?. Trạng thái driver diff --git a/app/MainWindow.xaml b/app/MainWindow.xaml index 5fc7438..3c5c579 100644 --- a/app/MainWindow.xaml +++ b/app/MainWindow.xaml @@ -17,6 +17,7 @@ WindowStartupLocation="CenterScreen" Loaded="Window_Loaded" Unloaded="Window_Unloaded" + KeyDown="Window_KeyDown" > diff --git a/app/MainWindow.xaml.cs b/app/MainWindow.xaml.cs index 953ebf6..f9cac72 100644 --- a/app/MainWindow.xaml.cs +++ b/app/MainWindow.xaml.cs @@ -169,5 +169,42 @@ private void LanguageText_MouseEvent(object sender, MouseButtonEventArgs e) if (e.LeftButton == MouseButtonState.Released) (sender as TextBlock).ContextMenu.IsOpen = true; } + + private void Window_KeyDown(object sender, KeyEventArgs e) + { + if (!e.IsRepeat && + (Keyboard.IsKeyDown(Key.LeftShift) || Keyboard.IsKeyDown(Key.RightShift))) + { + var screen = System.Windows.Forms.Screen.FromHandle(Handle); + if (screen != null) + { + var screens = System.Windows.Forms.Screen.AllScreens; + + int index = -1, nextIndex; + for (int i = 0; i < screens.Length; i++) + if (screens[i].Bounds.Contains(screen.Bounds)) + index = i; + + if (index != -1) + { + if (e.Key == Key.Left) + nextIndex = index - 1; + else if (e.Key == Key.Right) + nextIndex = index + 1; + else return; + + if (nextIndex >= screens.Length) nextIndex = 0; + else if (nextIndex < 0) nextIndex = screens.Length - 1; + + if (index != nextIndex) + { + var wa = screens[nextIndex].WorkingArea; + Left = wa.Location.X + (wa.Width - RenderSize.Width) / 2; + Top = wa.Location.Y + (wa.Height - RenderSize.Height) / 2; + } + } + } + } + } } } \ No newline at end of file