Example #1
0
 public IRegisteredShortcut RegisterShortcut(IShortcut iShortcut, IOperation operation)
 {
     if (OnRegisterShortcut == null)
     {
         if (iShortcut is ShortcutMock shortcut)
         {
             if (!RegisteredShortcuts.ContainsKey(shortcut.Key.Name))
             {
                 RegisteredShortcuts[shortcut.Key.Name] = new Dictionary <KeyModifier, RegisteredShortcutMock>();
             }
             if (!RegisteredShortcuts[shortcut.Key.Name].ContainsKey(shortcut.KeyModifier))
             {
                 var registeredShortcut = new RegisteredShortcutMock(shortcut, operation);
                 RegisteredShortcuts[shortcut.Key.Name][shortcut.KeyModifier] = registeredShortcut;
                 return(registeredShortcut);
             }
             return(null);
         }
         throw new NotImplementedException();
     }
     else
     {
         return(OnRegisterShortcut(iShortcut, operation));
     }
 }
Example #2
0
        private void Emit(List <KeyMock> keys)
        {
            var mainKey     = keys.Where(key => key.KeyModifier == KeyModifier.None).Last();
            var keyModifier = keys
                              .Where(key => key.KeyModifier != KeyModifier.None)
                              .Select(key => key.KeyModifier)
                              .Aggregate((k1, k2) => k1 | k2);

            var shortcut = new ShortcutMock(mainKey, keyModifier);
            var name     = mainKey.Name;

            if (RegisteredShortcuts.ContainsKey(name))
            {
                var registeredShortcutsForKey = RegisteredShortcuts[name];
                if (registeredShortcutsForKey != null)
                {
                    if (registeredShortcutsForKey.ContainsKey(keyModifier))
                    {
                        var registeredShortcut = registeredShortcutsForKey[keyModifier];
                        if (registeredShortcut != null)
                        {
                            shortcut = registeredShortcut.Shortcut;
                            if (registeredShortcut.Operation != null)
                            {
                                registeredShortcut.Operation.Action();
                            }
                        }
                    }
                }
            }
            OnEmit?.Invoke(shortcut);
        }
Example #3
0
        public override void Uninit()
        {
            this.LogLine("KeyServiceRawInput.Uninit()");
            foreach (var registeredShortcut in RegisteredShortcuts.Values.ToList())
            {
                UnregisterShortcut(registeredShortcut);
            }
            RegisteredShortcuts.Clear();

            var rawInputDevice = new RawInputDevice
            {
                UsagePage    = HIDUsagePage.Generic,
                Usage        = HIDUsage.Keyboard,
                Flags        = RIDEV.REMOVE,
                WindowHandle = IntPtr.Zero,
            };
            var result = Win32.RegisterRawInputDevices
                         (
                new RawInputDevice[] { rawInputDevice },
                1,
                Marshal.SizeOf(typeof(RawInputDevice))
                         );

            RunService.UnregisterMessageProcessor(this);
        }
Example #4
0
 public void UnregisterShortcut(IRegisteredShortcut registeredShortcut)
 {
     if (OnUnregisterShortcut == null)
     {
         var shortcut    = registeredShortcut.Shortcut;
         var key         = shortcut.Key;
         var keyModifier = shortcut.KeyModifier;
         var name        = key.Name;
         if (RegisteredShortcuts.ContainsKey(name))
         {
             var registeredShortcutsForName = RegisteredShortcuts[name];
             if (registeredShortcutsForName.ContainsKey(keyModifier))
             {
                 if (registeredShortcutsForName[keyModifier] == registeredShortcut)
                 {
                     registeredShortcutsForName.Remove(keyModifier);
                 }
                 if (registeredShortcutsForName.Count == 0)
                 {
                     RegisteredShortcuts.Remove(name);
                 }
             }
         }
     }
     else
     {
         OnUnregisterShortcut(registeredShortcut);
     }
 }
Example #5
0
 public override void Uninit()
 {
     this.LogLine("KeyServiceHook.Uninit()");
     foreach (var registeredShortcut in RegisteredShortcuts.Values.ToList())
     {
         UnregisterShortcut(registeredShortcut);
     }
     RegisteredShortcuts.Clear();
     if (HandleHook != IntPtr.Zero)
     {
         var result = Win32.UnhookWindowsHookEx(HandleHook);
         this.LogLine("UnhookWindowsHookEx({0}) => {1}", HandleHook.ToRepr(), result.ToRepr());
         HandleHook = IntPtr.Zero;
     }
 }