Пример #1
0
        /// <summary>
        /// 注册一个全局热键。
        /// </summary>
        /// <param name="keys">键。</param>
        public int RegisterHotkey(Keys keys)
        {
            int hotkeyid = GlobalAddAtom(Guid.NewGuid().ToString());

            this._keyList.Add(keys, hotkeyid);

            HotkeyModifiers modifiers = HotkeyModifiers.None;

            if ((keys & Keys.Control) == Keys.Control)
            {
                modifiers |= HotkeyModifiers.Control;
                keys       = keys & ~Keys.Control;
            }
            if ((keys & Keys.Alt) == Keys.Alt)
            {
                modifiers |= HotkeyModifiers.Alt;
                keys       = keys & ~Keys.Alt;
            }
            if ((keys & Keys.Shift) == Keys.Shift)
            {
                modifiers |= HotkeyModifiers.Shift;
                keys       = keys & ~Keys.Shift;
            }
            if ((keys & Keys.LWin) == Keys.LWin)
            {
                modifiers |= HotkeyModifiers.Windows;
                keys       = keys & ~Keys.LWin;
            }

            RegisterHotKey(_hWnd, hotkeyid, (int)modifiers, (int)keys);
            return(hotkeyid);
        }
Пример #2
0
 public Hotkey(uint virtualKey, HotkeyModifiers flags, EventHandler <HotkeyEventArgs> handler)
 {
     this.Id         = ++nextId;
     this.VirtualKey = virtualKey;
     this.Modifiers  = flags;
     this.Handler    = handler;
 }
Пример #3
0
        public void SetClientHotkey(ISClientInfoModel client, ISHotkeyModel cHk)
        {
            HotkeyModifiers mods = 0;

            mods = cHk.Alt ? mods |= HotkeyModifiers.Alt : mods;
            mods = cHk.Ctrl ? mods |= HotkeyModifiers.Ctrl : mods;
            mods = cHk.Shift ? mods |= HotkeyModifiers.Shift : mods;

            //Translate from avalonia to windows virtual key

            try
            {
#if WindowsBuild
                System.Windows.Input.Key a = (System.Windows.Input.Key)cHk.Key;
                Hotkey k = new Hotkey((WindowsVirtualKey)KeyInterop.VirtualKeyFromKey(a), mods);
#else
                //Translate from avalonia key to windows virtual key
                //This is a dirty method but should work for the majority of keys
                var    a = (WindowsVirtualKey)Enum.Parse(typeof(WindowsVirtualKey), cHk.Key.ToString());
                Hotkey k = new Hotkey(a, mods);
#endif

                client.SetHotkey(k);
            }catch (Exception ex)
            {
                ISLogger.Write("Failed to set hotkey: " + ex.Message);
            }
        }
Пример #4
0
 /// <summary> 
 /// 注册快捷键 
 /// </summary> 
 /// <param name="hWnd">持有快捷键窗口的句柄</param> 
 /// <param name="fsModifiers">组合键</param> 
 /// <param name="vk">快捷键的虚拟键码</param> 
 /// <param name="callBack">回调函数</param> 
 public static void Regist(IntPtr hWnd, HotkeyModifiers fsModifiers, Keys vk, HotKeyCallBackHanlder callBack)
 {
     int id = keyid++;
     if (!RegisterHotKey(hWnd, id, fsModifiers, vk))
         throw new Exception("regist hotkey fail.");
     keymap[id] = callBack;
 }
Пример #5
0
 /// <summary>
 /// 注册快捷键
 /// </summary>
 /// <param name="hWnd">句柄,</param>
 /// <param name="modifiers"></param>
 /// <param name="vk"></param>
 /// <param name="callBack"></param>
 public static void Regist(IntPtr ptr, HotkeyModifiers modifiers, Keys vk, HotKeyCallBackHanlder callBack)
 {
     if (!Win32Api.RegisterHotKey(ptr, keyid, (int)modifiers, vk))
     {
         throw new Exception("注册失败!");
     }
     keymap[keyid++] = callBack;
 }
Пример #6
0
        /// <summary>
        /// 注册快捷键
        /// </summary>
        /// <param name="hWnd">持有快捷键窗口的句柄</param>
        /// <param name="fsModifiers">组合键</param>
        /// <param name="vk">快捷键的虚拟键码</param>
        /// <param name="callBack">回调函数</param>
        public static void Regist(IntPtr hWnd, HotkeyModifiers fsModifiers, Keys vk, HotKeyCallBackHanlder callBack)
        {
            int id = keyid++;

            if (!RegisterHotKey(hWnd, id, fsModifiers, vk))
            {
                return;
            }
            keymap[id] = callBack;
        }
Пример #7
0
        /// <summary>
        /// 注册快捷键
        /// </summary>
        /// <param name="hWnd">持有快捷键窗口的句柄</param>
        /// <param name="fsModifiers">组合键</param>
        /// <param name="vk">快捷键的虚拟键码</param>
        /// <param name="callBack">回调函数</param>
        public static void Regist(IntPtr hWnd, HotkeyModifiers fsModifiers, Keys vk, HotKeyCallBackHanlder callBack)
        {
            int id = keyid++;

            if (!RegisterHotKey(hWnd, id, fsModifiers, vk))
            {
                throw new Exception("regist hotkey fail.");
            }
            keymap[id] = callBack;
        }
Пример #8
0
        public void RegisterKeyAction(Keys key, HotkeyModifiers modifier, Action action)
        {
            var hotkeyCombination = new HotkeyCombination
            {
                Key      = key,
                Modifier = modifier
            };

            hotkeyActions[hotkeyCombination] = action;
        }
Пример #9
0
 private void SetDefaultHotkeys()
 {
     try
     {
         HotkeyModifiers mods = HotkeyModifiers.Alt | HotkeyModifiers.Ctrl | HotkeyModifiers.Shift;
         inputMan.AddUpdateFunctionHotkey(new Input.Hotkeys.FunctionHotkey(WindowsVirtualKey.Q, mods, Input.Hotkeys.Hotkeyfunction.StopServer));
         inputMan.AddUpdateFunctionHotkey(new FunctionHotkey(WindowsVirtualKey.P, HotkeyModifiers.Alt | HotkeyModifiers.Ctrl, Hotkeyfunction.SendSas));
     }
     catch (Exception ex)
     {
         ISLogger.Write("Failed to set default hotkeys: " + ex.Message);
     }
 }
Пример #10
0
        /// <summary>
        /// 注册快捷键
        /// </summary>
        /// <param name="window">持有快捷键窗口</param>
        /// <param name="fsModifiers">组合键</param>
        /// <param name="key">快捷键</param>
        /// <param name="callBack">回调函数</param>
        public static void Regist(IntPtr hwnd, HotkeyModifiers fsModifiers, Key key, HotKeyCallBackHanlder callBack)
        {
            var _hwndSource = HwndSource.FromHwnd(hwnd);

            _hwndSource.AddHook(WndProc);

            int id = keyid++;

            var vk = KeyInterop.VirtualKeyFromKey(key);

            if (!RegisterHotKey(hwnd, id, fsModifiers, (uint)vk))
            {
                throw new Exception("regist hotkey fail.");
            }
            keymap[id] = callBack;
        }
Пример #11
0
        // Token: 0x06000490 RID: 1168 RVA: 0x0000EB88 File Offset: 0x0000CD88
        private void SetModifierKey(HotkeyModifiers modifierKey, bool value)
        {
            HotkeyModifiers hotkeyModifiers = this.modifierKeys;

            if (value)
            {
                this.modifierKeys |= modifierKey;
            }
            else
            {
                this.modifierKeys &= ~modifierKey;
            }
            if (this.modifierKeys != hotkeyModifiers)
            {
                this.Update();
            }
        }
Пример #12
0
        public string RegisterHotKey(int id, uint mods, uint keys)
        {
            HotkeyModifiers modifiers = (HotkeyModifiers)mods;
            Keys?           key       = (Keys)keys;

            if (!RegisterHotKey(Handle, id, modifiers, key.Value))
            {
                var exception = new Win32Exception();
                if ((uint)exception.HResult == 0x80004005)
                {
                    // Hot key is already registered, so we can ignore.
                    return(null);
                }
                return("bind error: " + exception);
            }

            return(null);
        }
        protected void AddOrReplace(string name,
                                    uint virtualKey,
                                    HotkeyModifiers flags,
                                    EventHandler <HotkeyEventArgs> handler)
        {
            var hotkey = new Hotkey(virtualKey, flags, handler);

            lock (this.hotkeys)
            {
                this.Remove(name);
                this.hotkeys.Add(name, hotkey);
                this.hotkeyNames.Add(hotkey.Id, name);
                if (this.WindowHandle != IntPtr.Zero)
                {
                    hotkey.Register(this.WindowHandle, name);
                }
            }
        }
Пример #14
0
        private static void Cmd_Assign(string arg1)
        {
            ClientInfo clientA = GetClientFromName(arg1);

            if (clientA == null)
            {
                Console.WriteLine("Invalid client.");
                ListClients();
                return;
            }

            Console.WriteLine("Hotkey to assign to " + clientA.Name);

            ConsoleKeyInfo keyInfo = Console.ReadKey(true);



            HotkeyModifiers mods = 0;

            if (keyInfo.Modifiers.HasFlag(ConsoleModifiers.Control))
            {
                mods |= HotkeyModifiers.Ctrl;
            }
            if (keyInfo.Modifiers.HasFlag(ConsoleModifiers.Alt))
            {
                mods |= HotkeyModifiers.Alt;
            }
            if (keyInfo.Modifiers.HasFlag(ConsoleModifiers.Shift))
            {
                mods |= HotkeyModifiers.Shift;
            }

            try
            {
                server.SetHotkeyForClient(clientA, new Hotkey((WindowsVirtualKey)keyInfo.Key, mods));
            }
            catch (Exception ex)
            {
                Console.WriteLine("Failed to set hotkey: " + ex.Message);
            }
        }
Пример #15
0
        private LinuxKeyMask ConvertMask(HotkeyModifiers mods)
        {
            LinuxKeyMask mask = 0;

            if (mods.HasFlag(HotkeyModifiers.Alt))
            {
                mask |= LinuxKeyMask.AltMask;
            }
            if (mods.HasFlag(HotkeyModifiers.Ctrl))
            {
                mask |= LinuxKeyMask.ControlMask;
            }
            if (mods.HasFlag(HotkeyModifiers.Shift))
            {
                mask |= LinuxKeyMask.ShiftMask;
            }
            if (mods.HasFlag(HotkeyModifiers.Windows))
            {
                mask |= LinuxKeyMask.WindowsMask;
            }

            return(mask);
        }
Пример #16
0
        /// <summary>
        /// 注册快捷键
        /// </summary>
        /// <param name="window">持有快捷键窗口</param>
        /// <param name="fsModifiers">组合键</param>
        /// <param name="key">快捷键</param>
        /// <param name="callBack">回调函数</param>
        public static bool Regist(Window window, HotkeyModifiers fsModifiers, Key key, HotKeyCallBackHanlder callBack)
        {
            var hwnd = new WindowInteropHelper(window).Handle;

            var _hwndSource = HwndSource.FromHwnd(hwnd);

            if (keyid == 10)
            {
                _hwndSource.AddHook(WndProc);
            }

            int id = keyid++;

            var vk = KeyInterop.VirtualKeyFromKey(key);

            if (!RegisterHotKey(hwnd, id, fsModifiers, (uint)vk))
            {
                //throw new Exception("regist hotkey fail.");
                return(false);
            }
            keymap[id] = callBack;
            return(true);
        }
Пример #17
0
        private static Hotkey FromSettingsString(string hkStr)
        {
            string[] args = hkStr.Split(':');

            if (args.Length == 0)
            {
                return(null);
            }

            if (!WindowsVirtualKey.TryParse(typeof(WindowsVirtualKey), args[0], true, out var keyObj))
            {
                return(null);
            }

            WindowsVirtualKey key  = (WindowsVirtualKey)keyObj;
            HotkeyModifiers   mods = 0;

            for (int i = 1; i < args.Length; i++)
            {
                string modStr = args[i];

                if (modStr == HotkeyModifiers.Alt.ToString())
                {
                    mods |= HotkeyModifiers.Alt;
                }
                else if (modStr == HotkeyModifiers.Ctrl.ToString())
                {
                    mods |= HotkeyModifiers.Ctrl;
                }
                else if (modStr == HotkeyModifiers.Shift.ToString())
                {
                    mods |= HotkeyModifiers.Shift;
                }
            }

            return(new Hotkey(key, mods));
        }
Пример #18
0
 // Token: 0x06000489 RID: 1161 RVA: 0x0000E9DF File Offset: 0x0000CBDF
 public Hotkey(Control registerControl, Keys keyCode, HotkeyModifiers modifierKeys) : this(keyCode, modifierKeys)
 {
     this.Register(registerControl);
 }
Пример #19
0
 static extern bool RegisterHotKey(IntPtr hWnd, int id, HotkeyModifiers fsModifiers, uint vk);
Пример #20
0
 // Token: 0x06000488 RID: 1160 RVA: 0x0000E9C3 File Offset: 0x0000CBC3
 public Hotkey(Keys keyCode, HotkeyModifiers modifierKeys)
 {
     this.keyCode      = keyCode;
     this.modifierKeys = modifierKeys;
     Application.AddMessageFilter(this);
 }
Пример #21
0
 /// <summary> 
 /// 注册快捷键 
 /// </summary> 
 /// <param name="hWnd">持有快捷键窗口的句柄</param> 
 /// <param name="fsModifiers">组合键</param> 
 /// <param name="vk">快捷键的虚拟键码</param> 
 /// <param name="callBack">回调函数</param> 
 public static void Regist(IntPtr hWnd, HotkeyModifiers fsModifiers, Keys vk, HotKeyCallBackHanlder callBack)
 {
     int id = keyid++;
     if (!RegisterHotKey(hWnd, id, fsModifiers, vk)) return;
     keymap[id] = callBack;
 }
Пример #22
0
 internal void Clear()
 {
     _Modifiers = HotkeyModifiers.MOD_NONE;
     _Shortcut = "";
     _vk = 0;
 }
Пример #23
0
 public Hotkey(WindowsVirtualKey key, HotkeyModifiers mods)
 {
     Key       = key;
     Modifiers = mods;
 }
Пример #24
0
 public ClientHotkey(WindowsVirtualKey key, HotkeyModifiers mods, Guid targetClient) : base(key, mods)
 {
     TargetClient = targetClient;
 }
 public static bool RegisterHotKey(IntPtr hWnd, int id, HotkeyModifiers modifiers, uint virtualKey)
 {
     return(RegisterHotkey(hWnd, id, (uint)modifiers, virtualKey));
 }
Пример #26
0
 static extern bool RegisterHotKey(IntPtr hWnd, int id, HotkeyModifiers fsModifiers, Keys vk);
Пример #27
0
 private static extern bool RegisterHotKey(IntPtr hwnd, int id, HotkeyModifiers modifiers, Keys vk);
Пример #28
0
 public static extern bool RegisterHotKey(IntPtr hWnd, int id, HotkeyModifiers modifers, Keys vk);
Пример #29
0
 internal void CopyFrom(PNHotKey hk)
 {
     _Modifiers = hk.Modifiers;
     _Shortcut = hk._Shortcut;
     _vk = hk._vk;
 }
Пример #30
0
 public FunctionHotkey(WindowsVirtualKey key, HotkeyModifiers mods, Hotkeyfunction function) : base(key, mods)
 {
     Function = function;
 }
Пример #31
0
 /// <summary>
 /// Regist a hotkey, it will return: status code + hot key in string + hot key id
 /// </summary>
 public Tuple <RetCode, string, int> Regist(Window window, HotkeyModifiers hotkeyModifiers, System.Windows.Input.Key key, HotKeyCallBackHandler callBack)
 {
     return(Regist(window, (uint)hotkeyModifiers, key, callBack));
 }