private void hotkeyMenuItem_Click(object sender, EventArgs args)
        {
            ModifierKeys? newModifiers;
            Keys? newKey;
            var hotkeyChanged = PromptForHotkey(out newModifiers, out newKey);
            if (! hotkeyChanged)
                return;

            if (keyboardHook != null)
            {
                keyboardHook.Dispose();
                keyboardHook = null;
            }

            Settings.Default.UseHotkey = newKey != null && newModifiers != null;
            if (Settings.Default.UseHotkey)
            {
                Settings.Default.HotkeyModifiers = (int) newModifiers.Value;
                Settings.Default.HotkeyKey = (int) newKey.Value;

                RegisterHotkeyFromSettings();
            }
            else
            {
                Settings.Default.HotkeyModifiers = 0;
                Settings.Default.HotkeyKey = 0;
            }

            UpdateHotkeyMenuItemFromSettings();
        }
 private void RegisterHotkeyFromSettings()
 {
     keyboardHook = new KeyboardHook();
     keyboardHook.KeyPressed += (s, a) =>
     {
         SwapButtons();
         var handedness = swapper.IsSwapped ? Resources.LeftHanded : Resources.RightHanded;
         notifyIcon.ShowBalloonTip(2000, Resources.SwappedEventBaloonTitle, handedness, ToolTipIcon.Info);
     };
     keyboardHook.RegisterHotKey((ModifierKeys) Settings.Default.HotkeyModifiers,
         (Keys)Settings.Default.HotkeyKey);
 }