public static string GetHotKeyName(User32.KeyModifiers keyModifier, Keys key)
        {
            if (key == Keys.None)
            {
                return("<null>");
            }

            StringBuilder name = new StringBuilder("");

            if ((keyModifier & User32.KeyModifiers.Alt) == User32.KeyModifiers.Alt)
            {
                name.Append("Alt + ");
            }
            if ((keyModifier & User32.KeyModifiers.Ctrl) == User32.KeyModifiers.Ctrl)
            {
                name.Append("Ctrl + ");
            }
            if ((keyModifier & User32.KeyModifiers.Shift) == User32.KeyModifiers.Shift)
            {
                name.Append("Shift + ");
            }

            name.Append(Enum.GetName(typeof(Keys), key));

            return(name.ToString());
        }
        private void textBox_SetSwitchHotKey_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Delete || e.KeyCode == Keys.Back)
            {
                CleanHotKeyInfo_SwitchClickThread();
                e.Handled = true;
                return;
            }

            hotKeyModifiers_SwitchClickThread = User32.KeyModifiers.None;
            if (e.Alt && e.KeyCode != Keys.Menu)
            {
                hotKeyModifiers_SwitchClickThread |= User32.KeyModifiers.Alt;
            }
            if (e.Control && e.KeyCode != Keys.ControlKey)
            {
                hotKeyModifiers_SwitchClickThread |= User32.KeyModifiers.Ctrl;
            }
            if (e.Shift && e.KeyCode != Keys.ShiftKey)
            {
                hotKeyModifiers_SwitchClickThread |= User32.KeyModifiers.Shift;
            }
            hotKey_SwitchClickThread = e.KeyCode;

            Change_textBox_SetSwitchHotKey_Text(GetHotKeyName(hotKeyModifiers_SwitchClickThread, hotKey_SwitchClickThread));

            e.Handled = true;
        }
        public HotkeyController(SettingsController settingsController, TemtemTrackerUI trackerUI, TemtemTableController tableController)
        {
            this.settingsController = settingsController;
            this.trackerUI          = trackerUI;
            this.tableController    = tableController;

            //Get the hotkeys from settings
            this.resetTableHotkey          = (Keys)settingsController.GetUserSettings().resetTableHotkey;
            this.resetTableHotkeyModifiers = (Keys)settingsController.GetUserSettings().resetTableHotkeyModifier;
            this.resetTableKeyModifiers    = User32.KeysToKeyModifiers(resetTableHotkeyModifiers);
            this.pauseTimerHotkey          = (Keys)settingsController.GetUserSettings().pauseTimerHotkey;
            this.pauseTimerHotkeyModifiers = (Keys)settingsController.GetUserSettings().pauseTimerHotkeyModifier;
            this.pauseTimerKeyModifiers    = User32.KeysToKeyModifiers(pauseTimerHotkeyModifiers);

            //Subscribe to relevant events from settingsController
            settingsController.ToggleHotkeysEnabled    += ToggleHotkeysEnabled;
            settingsController.ResetTableHotkeyChanged += ReloadResetTableHotkey;
            settingsController.PauseTimerHotkeyChanged += ReloadPauseTimerHotkey;

            //Set tracker UI hotkey strings
            PopulateTrackerUIHotkeyLabels();

            //Bind the hotkeys
            User32.RegisterHotKey(this.Handle, RESET_TABLE_HOTKEY_ID, resetTableKeyModifiers, resetTableHotkey);
            User32.RegisterHotKey(this.Handle, PAUSE_TIMER_HOTKEY_ID, pauseTimerKeyModifiers, pauseTimerHotkey);
        }
 public void ReloadPauseTimerHotkey(object sender, EventArgs e)
 {
     //Get the hotkeys from settings
     this.pauseTimerHotkey          = (Keys)settingsController.GetUserSettings().pauseTimerHotkey;
     this.pauseTimerHotkeyModifiers = (Keys)settingsController.GetUserSettings().pauseTimerHotkeyModifier;
     this.pauseTimerKeyModifiers    = User32.KeysToKeyModifiers(pauseTimerHotkeyModifiers);
     //Set the hotkey labels in the tracker UI
     PopulateTrackerUIHotkeyLabels();
 }
예제 #5
0
        public static void Add(string name, User32.KeyModifiers keyModifier, Keys key, Control invokeHandleControl, HotKeyHandle hotKeyHandle)
        {
            HotKeyInfo hotKeyInfo = new HotKeyInfo();

            hotKeyInfo.Name                = name;
            hotKeyInfo.KeyModifiers        = keyModifier;
            hotKeyInfo.Key                 = key;
            hotKeyInfo.InvokeHandleControl = invokeHandleControl;
            hotKeyInfo.HotKeyHandle        = hotKeyHandle;
            Add(hotKeyInfo);
        }
예제 #6
0
        private static int Register(User32.KeyModifiers keyModifiers, Keys key)
        {
            int    newId  = 0;
            Random random = new Random();

            while (newId == 0 || hotKeys.Keys.Contains(newId))
            {
                newId = random.Next();
            }

            if (!User32.RegisterHotKey(innerWindowHandleBody.Handle, newId, keyModifiers, key))
            {
                throw new Exception("Register hot key failed.");
            }

            return(newId);
        }
 private void CleanHotKeyInfo_SwitchClickThread()
 {
     hotKeyModifiers_SwitchClickThread = User32.KeyModifiers.None;
     hotKey_SwitchClickThread          = Keys.None;
     Change_textBox_SetSwitchHotKey_Text(GetHotKeyName());
 }