From 4b663654ac7a249a4c12bf641df532518cd93ce5 Mon Sep 17 00:00:00 2001 From: solo12zw74 Date: Wed, 19 Oct 2016 01:17:29 +0500 Subject: [PATCH 1/2] First attempt to use numbers to navigate between desktops --- VirtualDestopCycle/Form1.cs | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/VirtualDestopCycle/Form1.cs b/VirtualDestopCycle/Form1.cs index df33bd8..e9dbd39 100644 --- a/VirtualDestopCycle/Form1.cs +++ b/VirtualDestopCycle/Form1.cs @@ -27,6 +27,7 @@ public partial class Form1 : Form private readonly HotKeyManager _rightHotkey; private readonly HotKeyManager _leftHotkey; + private readonly HotKeyManager _numberHotkey; private bool closeToTray; @@ -46,6 +47,9 @@ public Form1() _leftHotkey = new HotKeyManager(); _leftHotkey.KeyPressed += LeftKeyManagerPressed; + _numberHotkey = new HotKeyManager(); + _numberHotkey.KeyPressed += NumberHotkeyPressed; + VirtualDesktop.CurrentChanged += VirtualDesktop_CurrentChanged; VirtualDesktop.Created += VirtualDesktop_Added; VirtualDesktop.Destroyed += VirtualDesktop_Destroyed; @@ -56,6 +60,19 @@ public Form1() checkBox1.Checked = useAltKeySettings; } + private void NumberHotkeyPressed(object sender, KeyPressedEventArgs e) + { + var desktop = initialDesktopState(); + var index = (int) e.HotKey.Key - (int)Keys.D0; + var currentDesktopIndex = getCurrentDesktopIndex(); + if (index == currentDesktopIndex) + { + return; + } + + desktops.ElementAt(index)?.Switch(); + } + private void Form1_FormClosing(object sender, FormClosingEventArgs e) { if (closeToTray) @@ -97,6 +114,7 @@ private void exitToolStripMenuItem_Click(object sender, EventArgs e) { _rightHotkey.Dispose(); _leftHotkey.Dispose(); + _numberHotkey.Dispose(); closeToTray = false; @@ -104,11 +122,12 @@ private void exitToolStripMenuItem_Click(object sender, EventArgs e) } private void normalHotkeys() - { + { try { _rightHotkey.Register(Key.Right, System.Windows.Input.ModifierKeys.Control | System.Windows.Input.ModifierKeys.Alt); _leftHotkey.Register(Key.Left, System.Windows.Input.ModifierKeys.Control | System.Windows.Input.ModifierKeys.Alt); + RegisterNumberHotkeys(System.Windows.Input.ModifierKeys.Control | System.Windows.Input.ModifierKeys.Alt); } catch (Exception err) { @@ -124,6 +143,7 @@ private void alternateHotkeys() { _rightHotkey.Register(Key.Right, System.Windows.Input.ModifierKeys.Shift | System.Windows.Input.ModifierKeys.Alt); _leftHotkey.Register(Key.Left, System.Windows.Input.ModifierKeys.Shift | System.Windows.Input.ModifierKeys.Alt); + RegisterNumberHotkeys(System.Windows.Input.ModifierKeys.Shift | System.Windows.Input.ModifierKeys.Alt); } catch (Exception err) { @@ -133,6 +153,19 @@ private void alternateHotkeys() } } + private void RegisterNumberHotkeys(ModifierKeys modifiers) + { + _numberHotkey.Register(Key.D1, modifiers); + _numberHotkey.Register(Key.D2, modifiers); + _numberHotkey.Register(Key.D3, modifiers); + _numberHotkey.Register(Key.D4, modifiers); + _numberHotkey.Register(Key.D5, modifiers); + _numberHotkey.Register(Key.D6, modifiers); + _numberHotkey.Register(Key.D7, modifiers); + _numberHotkey.Register(Key.D8, modifiers); + _numberHotkey.Register(Key.D9, modifiers); + } + private void Form1_Load(object sender, EventArgs e) { labelStatus.Text = ""; From a1f448060658aaf8ceb900e26c4a8e70c9ababc7 Mon Sep 17 00:00:00 2001 From: aivanov Date: Wed, 19 Oct 2016 09:03:37 +0300 Subject: [PATCH 2/2] Add desktops count cheking --- VirtualDestopCycle/Form1.cs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/VirtualDestopCycle/Form1.cs b/VirtualDestopCycle/Form1.cs index e9dbd39..1dbc55c 100644 --- a/VirtualDestopCycle/Form1.cs +++ b/VirtualDestopCycle/Form1.cs @@ -61,14 +61,19 @@ public Form1() } private void NumberHotkeyPressed(object sender, KeyPressedEventArgs e) - { - var desktop = initialDesktopState(); - var index = (int) e.HotKey.Key - (int)Keys.D0; + { + var index = (int) e.HotKey.Key - (int)Key.D0 - 1; var currentDesktopIndex = getCurrentDesktopIndex(); + if (index == currentDesktopIndex) { return; } + + if (index > desktops.Count - 1) + { + return; + } desktops.ElementAt(index)?.Switch(); }