/// <summary>
 /// Unregisters a hotkey
 /// </summary>
 /// <returns>True if successful, else false</returns>
 public bool Unregister(Hotkey hotkey)
 {
     bool result = false;
     Hotkey hotKey;
     if (RegisteredHotkeys.TryRemove(hotkey.KeyId, out hotKey))
     {
         result = User32.UnregisterHotKey(IntPtr.Zero, hotkey.KeyId);
     }
     return result;
 }
        /// <summary>
        /// Registers a hotkey
        /// </summary>
        /// <returns>True if successful, else false</returns>
        public bool Register(Hotkey hotkey)
        {
            bool result = User32.RegisterHotKey(IntPtr.Zero, hotkey.KeyId, (UInt32)hotkey.KeyModifiers, (UInt32)hotkey.VirtualKeyCode);
            if (result)
                result = RegisteredHotkeys.TryAdd(hotkey.KeyId, hotkey);

            if (isPaused)
                User32.UnregisterHotKey(IntPtr.Zero, hotkey.KeyId);

            return result;
        }
 /// <summary>
 /// </summary>
 /// <returns>True if the given hotkey can be registered, else false</returns>
 public bool CanRegister(Hotkey hotkey)
 {
     bool result;
     if (this.IsRegistered(hotkey))
     {
         // Can't register a hotkey that is already registered
         result = false;
     }
     else
     {
         result = User32.RegisterHotKey(IntPtr.Zero, hotkey.KeyId, (UInt32)hotkey.KeyModifiers, (UInt32)hotkey.VirtualKeyCode);
         User32.UnregisterHotKey(IntPtr.Zero, hotkey.KeyId);
     }
     return result;
 }
示例#4
0
 /// <summary>
 /// </summary>
 /// <returns>True if the given hotkey has already been registered, else false</returns>
 public bool IsRegistered(Hotkey hotkey)
 {
     return(this.RegisteredHotkeys.ContainsKey(hotkey.KeyId));
 }
        /// <summary>
        /// Initializes all hotkeys
        /// </summary>
        public void InitializeHotkeys()
        {
            // Initialize as blank at first
            this.ToggleWorldBossTimerHotkey = new Hotkey(Key.None, KeyModifier.None);
            this.ToggleMetaEventTimerHotkey = new Hotkey(Key.None, KeyModifier.None);
            this.ToggleDungeonsTrackerHotkey = new Hotkey(Key.None, KeyModifier.None);
            this.ToggleDungeonTimerHotkey = new Hotkey(Key.None, KeyModifier.None);
            this.TogglePriceTrackerHotkey = new Hotkey(Key.None, KeyModifier.None);
            this.ToggleWvWTrackerHotkey = new Hotkey(Key.None, KeyModifier.None);
            this.ToggleZoneAssistantHotkey = new Hotkey(Key.None, KeyModifier.None);
            this.ToggleTaskTrackerHotkey = new Hotkey(Key.None, KeyModifier.None);
            this.ToggleTeamspeakTrackerHotkey = new Hotkey(Key.None, KeyModifier.None);
            this.ToggleWebBrowserHotkey = new Hotkey(Key.None, KeyModifier.None);
            this.ToggleInteractiveWindowsHotkey = new Hotkey(Key.None, KeyModifier.None);
            this.ToggleAllWindowsHotkey = new Hotkey(Key.None, KeyModifier.None);
            this.ToggleNotificationWindowBordersHotkey = new Hotkey(Key.None, KeyModifier.None);
            this.ToggleAutoFadeBordersHotkey = new Hotkey(Key.None, KeyModifier.None);
            this.ToggleOverlayMenuIconHotkey = new Hotkey(Key.None, KeyModifier.None);
            this.ToggleMapHotkey = new Hotkey(Key.None, KeyModifier.None);
            this.ToggleDayNightTimerHotkey = new Hotkey(Key.None, KeyModifier.None);

            // Try to load the hotkeys from user settings
            if (!string.IsNullOrEmpty(Properties.Settings.Default.Hotkeys))
            {
                logger.Debug("Loading hotkeys");
                try
                {
                    var loadedHotkeys = JsonConvert.DeserializeObject<HotkeySettingsViewModel>(Properties.Settings.Default.Hotkeys);
                    if (loadedHotkeys != null)
                    {
                        if (loadedHotkeys.ToggleAllWindowsHotkey != null)
                            this.ToggleAllWindowsHotkey = loadedHotkeys.ToggleAllWindowsHotkey;

                        if (loadedHotkeys.ToggleInteractiveWindowsHotkey != null)
                            this.ToggleInteractiveWindowsHotkey = loadedHotkeys.ToggleInteractiveWindowsHotkey;

                        if (loadedHotkeys.ToggleNotificationWindowBordersHotkey != null)
                            this.ToggleNotificationWindowBordersHotkey = loadedHotkeys.ToggleNotificationWindowBordersHotkey;

                        if (loadedHotkeys.ToggleAutoFadeBordersHotkey != null)
                            this.ToggleAutoFadeBordersHotkey = loadedHotkeys.ToggleAutoFadeBordersHotkey;

                        if (loadedHotkeys.ToggleOverlayMenuIconHotkey != null)
                            this.ToggleOverlayMenuIconHotkey = loadedHotkeys.ToggleOverlayMenuIconHotkey;

                        if (loadedHotkeys.ToggleWorldBossTimerHotkey != null)
                            this.ToggleWorldBossTimerHotkey = loadedHotkeys.ToggleWorldBossTimerHotkey;

                        if (loadedHotkeys.ToggleMetaEventTimerHotkey != null)
                            this.ToggleMetaEventTimerHotkey = loadedHotkeys.ToggleMetaEventTimerHotkey;

                        if (loadedHotkeys.ToggleDungeonsTrackerHotkey != null)
                            this.ToggleDungeonsTrackerHotkey = loadedHotkeys.ToggleDungeonsTrackerHotkey;

                        if (loadedHotkeys.ToggleDungeonTimerHotkey != null)
                            this.ToggleDungeonTimerHotkey = loadedHotkeys.ToggleDungeonTimerHotkey;

                        if (loadedHotkeys.TogglePriceTrackerHotkey != null)
                            this.TogglePriceTrackerHotkey = loadedHotkeys.TogglePriceTrackerHotkey;

                        if (loadedHotkeys.ToggleWvWTrackerHotkey != null)
                            this.ToggleWvWTrackerHotkey = loadedHotkeys.ToggleWvWTrackerHotkey;

                        if (loadedHotkeys.ToggleZoneAssistantHotkey != null)
                            this.ToggleZoneAssistantHotkey = loadedHotkeys.ToggleZoneAssistantHotkey;

                        if (loadedHotkeys.ToggleTaskTrackerHotkey != null)
                            this.ToggleTaskTrackerHotkey = loadedHotkeys.ToggleTaskTrackerHotkey;

                        if (loadedHotkeys.ToggleTeamspeakTrackerHotkey != null)
                            this.ToggleTeamspeakTrackerHotkey = loadedHotkeys.ToggleTeamspeakTrackerHotkey;

                        if (loadedHotkeys.ToggleWebBrowserHotkey != null)
                            this.ToggleWebBrowserHotkey = loadedHotkeys.ToggleWebBrowserHotkey;

                        if (loadedHotkeys.ToggleMapHotkey != null)
                            this.ToggleMapHotkey = loadedHotkeys.ToggleMapHotkey;

                        if (loadedHotkeys.ToggleDayNightTimerHotkey != null)
                            this.ToggleDayNightTimerHotkey = loadedHotkeys.ToggleDayNightTimerHotkey;
                    }
                    else
                    {
                        logger.Warn("Unable to load all user hotkeys!");
                    }
                }
                catch (Exception ex)
                {
                    logger.Warn("Unable to load user hotkeys! Exception: ", ex);
                }
            }

            // Register for the pause/resume commands
            HotkeyCommands.PauseHotkeys.RegisterCommand(new DelegateCommand(this.GlobalHotkeyManager.PauseHotkeys));
            HotkeyCommands.ResumeHotkeys.RegisterCommand(new DelegateCommand(this.GlobalHotkeyManager.ResumeHotkeys));

            // Wire the hotkeys up
            this.ToggleAllWindowsHotkey.Pressed += (o, e) => HotkeyCommands.ToggleAllWindowsCommand.Execute(null);
            this.ToggleInteractiveWindowsHotkey.Pressed += (o, e) => HotkeyCommands.ToggleInteractiveWindowsCommand.Execute(null);
            this.ToggleNotificationWindowBordersHotkey.Pressed += (o, e) => HotkeyCommands.ToggleNotificationWindowBordersCommand.Execute(null);
            this.ToggleAutoFadeBordersHotkey.Pressed += (o, e) => HotkeyCommands.ToggleAutoFadeBordersCommand.Execute(null);
            this.ToggleOverlayMenuIconHotkey.Pressed += (o, e) => HotkeyCommands.ToggleOverlayMenuIconCommand.Execute(null);
            this.ToggleWorldBossTimerHotkey.Pressed += (o, e) => HotkeyCommands.ToggleWorldBossTimersCommand.Execute(null);
            this.ToggleMetaEventTimerHotkey.Pressed += (e, r) => HotkeyCommands.ToggleMetaEventTimersCommand.Execute(null);
            this.ToggleDungeonsTrackerHotkey.Pressed += (o, e) => HotkeyCommands.ToggleDungeonsTrackerCommand.Execute(null);
            this.ToggleDungeonTimerHotkey.Pressed += (o, e) => HotkeyCommands.ToggleDungeonTimerCommand.Execute(null);
            this.TogglePriceTrackerHotkey.Pressed += (o, e) => HotkeyCommands.TogglePriceTrackerCommand.Execute(null);
            this.ToggleWvWTrackerHotkey.Pressed += (o, e) => HotkeyCommands.ToggleWvWTrackerCommmand.Execute(null);
            this.ToggleZoneAssistantHotkey.Pressed += (o, e) => HotkeyCommands.ToggleZoneAssistantCommand.Execute(null);
            this.ToggleTaskTrackerHotkey.Pressed += (o, e) => HotkeyCommands.ToggleTaskTrackerCommand.Execute(null);
            this.ToggleTeamspeakTrackerHotkey.Pressed += (o, e) => HotkeyCommands.ToggleTeamspeakOverlayCommand.Execute(null);
            this.ToggleWebBrowserHotkey.Pressed += (o, e) => HotkeyCommands.ToggleWebBrowserCommand.Execute(null);
            this.ToggleMapHotkey.Pressed += (o, e) => HotkeyCommands.ToggleMapOverlayCommand.Execute(null);
            this.ToggleDayNightTimerHotkey.Pressed += (o, e) => HotkeyCommands.ToggleDayNightTimerCommand.Execute(null);

            // Register all hotkeys that are enabled
            if (this.ToggleAllWindowsHotkey.Key != Key.None)
                this.GlobalHotkeyManager.Register(this.ToggleAllWindowsHotkey);
            if (this.ToggleInteractiveWindowsHotkey.Key != Key.None)
                this.GlobalHotkeyManager.Register(this.ToggleInteractiveWindowsHotkey);
            if (this.ToggleNotificationWindowBordersHotkey.Key != Key.None)
                this.GlobalHotkeyManager.Register(this.ToggleNotificationWindowBordersHotkey);
            if (this.ToggleAutoFadeBordersHotkey.Key != Key.None)
                this.GlobalHotkeyManager.Register(this.ToggleAutoFadeBordersHotkey);
            if (this.ToggleOverlayMenuIconHotkey.Key != Key.None)
                this.GlobalHotkeyManager.Register(this.ToggleOverlayMenuIconHotkey);
            if (this.ToggleWorldBossTimerHotkey.Key != Key.None)
                this.GlobalHotkeyManager.Register(this.ToggleWorldBossTimerHotkey);
            if (this.ToggleMetaEventTimerHotkey.Key != Key.None)
                this.GlobalHotkeyManager.Register(this.ToggleMetaEventTimerHotkey);
            if (this.ToggleDungeonsTrackerHotkey.Key != Key.None)
                this.GlobalHotkeyManager.Register(this.ToggleDungeonsTrackerHotkey);
            if (this.ToggleDungeonTimerHotkey.Key != Key.None)
                this.GlobalHotkeyManager.Register(this.ToggleDungeonTimerHotkey);
            if (this.TogglePriceTrackerHotkey.Key != Key.None)
                this.GlobalHotkeyManager.Register(this.TogglePriceTrackerHotkey);
            if (this.ToggleWvWTrackerHotkey.Key != Key.None)
                this.GlobalHotkeyManager.Register(this.ToggleWvWTrackerHotkey);
            if (this.ToggleZoneAssistantHotkey.Key != Key.None)
                this.GlobalHotkeyManager.Register(this.ToggleZoneAssistantHotkey);
            if (this.ToggleZoneAssistantHotkey.Key != Key.None)
                this.GlobalHotkeyManager.Register(this.ToggleZoneAssistantHotkey);
            if (this.ToggleTaskTrackerHotkey.Key != Key.None)
                this.GlobalHotkeyManager.Register(this.ToggleTaskTrackerHotkey);
            if (this.ToggleTeamspeakTrackerHotkey.Key != Key.None)
                this.GlobalHotkeyManager.Register(this.ToggleTeamspeakTrackerHotkey);
            if (this.ToggleWebBrowserHotkey.Key != Key.None)
                this.GlobalHotkeyManager.Register(this.ToggleWebBrowserHotkey);
            if (this.ToggleMapHotkey.Key != Key.None)
                this.GlobalHotkeyManager.Register(this.ToggleMapHotkey);
            if (this.ToggleDayNightTimerHotkey.Key != Key.None)
                this.GlobalHotkeyManager.Register(this.ToggleDayNightTimerHotkey);
        }
 /// <summary>
 /// </summary>
 /// <returns>True if the given hotkey has already been registered, else false</returns>
 public bool IsRegistered(Hotkey hotkey)
 {
     return this.RegisteredHotkeys.ContainsKey(hotkey.KeyId);
 }
        private void EntryBox_KeyDown(object sender, KeyEventArgs e)
        {
            if (this.HotkeyManager != null)
            {
                if (e.Key != Key.LeftShift
                    && e.Key != Key.RightShift
                    && e.Key != Key.LeftCtrl
                    && e.Key != Key.RightCtrl
                    && e.Key != Key.LeftAlt
                    && e.Key != Key.RightAlt
                    && e.Key != Key.LWin
                    && e.Key != Key.RWin
                    && e.Key != Key.Escape)
                {
                    // Before we go and apply the hotkey, first try it and make sure it will work
                    this.WarningTextBlock.Visibility = Visibility.Hidden;

                    var modifiers = KeyModifier.None;
                    if (e.KeyboardDevice.IsKeyDown(Key.LeftShift) || e.KeyboardDevice.IsKeyDown(Key.RightShift))
                        modifiers |= KeyModifier.Shift;
                    if (e.KeyboardDevice.IsKeyDown(Key.LeftCtrl) || e.KeyboardDevice.IsKeyDown(Key.RightCtrl))
                        modifiers |= KeyModifier.Ctrl;
                    if (e.KeyboardDevice.IsKeyDown(Key.LeftAlt) || e.KeyboardDevice.IsKeyDown(Key.RightAlt))
                        modifiers |= KeyModifier.Alt;
                    if (e.KeyboardDevice.IsKeyDown(Key.LWin) || e.KeyboardDevice.IsKeyDown(Key.RWin))
                        modifiers |= KeyModifier.Win;

                    var newHotkey = new Hotkey(e.Key, modifiers);

                    if (this.HotkeyManager.CanRegister(newHotkey))
                    {
                        // Valid, go ahead and set it
                        this.HotkeyManager.Unregister(this.Hotkey);
                        this.Hotkey.Key = e.Key;
                        this.Hotkey.KeyModifiers = modifiers;
                        this.HotkeyManager.Register(this.Hotkey);
                    }
                    else
                    {
                        // Invalid key combo
                        this.WarningTextBlock.Visibility = Visibility.Visible;
                    }
                }
                else if (e.Key == Key.Escape)
                {
                    // Remove focus
                    this.HiddenBox.Focus();
                }
            }

            this.EntryBox.GetBindingExpression(TextBox.TextProperty).UpdateTarget();
            e.Handled = true;
        }