private void CheckForEmergencyHit(InterceptionEventArgs e)
        {
            bool isCtrlDown   = this.interceptor.IsKeyDown(e.Device, InterceptionKey.LeftControl) || this.interceptor.IsKeyDown(e.Device, InterceptionKey.RightControl);
            bool isAltDown    = this.interceptor.IsKeyDown(e.Device, InterceptionKey.LeftAlt) || this.interceptor.IsKeyDown(e.Device, InterceptionKey.RightAlt);
            bool isDeleteDown = this.interceptor.IsKeyDown(e.Device, InterceptionKey.Delete) || this.interceptor.IsKeyDown(e.Device, InterceptionKey.NumpadDelete);

            if (isCtrlDown && isAltDown && isDeleteDown)
            {
                if (this.EmergencyStop != null)
                {
                    this.EmergencyStop(this, EventArgs.Empty);
                }

                this.ResetEmergency();
                return;
            }

            foreach (var keyInfo in e.KeyInfos)
            {
                if (keyInfo.Key == InputHelper.ToInterceptionKey(InputManager.EmergencyLeftKey))
                {
                    if (keyInfo.IsDown)
                    {
                        this.emergencyLeftDownCount++;
                    }
                    else
                    {
                        this.emergencyLeftUpCount++;
                    }
                }
                else if (keyInfo.Key == InputHelper.ToInterceptionKey(InputManager.EmergencyRightKey))
                {
                    if (keyInfo.IsDown)
                    {
                        this.emergencyRightDownCount++;
                    }
                    else
                    {
                        this.emergencyRightUpCount++;
                    }
                }
                else
                {
                    this.ResetEmergency();
                    return;
                }
            }

            if (this.emergencyLeftDownCount >= 5 && this.emergencyLeftUpCount >= 5)
            {
                this.OnEmergencyDetected(InputManager.EmergencyLeftKey);
            }
            else if (this.emergencyRightDownCount >= 5 && this.emergencyRightUpCount >= 5)
            {
                this.OnEmergencyDetected(InputManager.EmergencyRightKey);
            }
        }
        private void OnInterceptionInputActivity(object sender, InterceptionEventArgs e)
        {
            var action = new Action(() =>
            {
                foreach (var keyInfo in e.KeyInfos)
                {
                    var device = InputHelper.ToInputDevice(e.Device);
                    var key    = InputHelper.ToInputKey(keyInfo.Key);
                    var args   = new InputEventArgs(device, key, keyInfo.IsDown, e.Handled);

                    if (this.InputActivity != null)
                    {
                        this.InputActivity(this, args);
                        e.Handled = args.Handled;
                    }

                    if (!KeysHelper.IsMouseMoveKey(keyInfo.Key))
                    {
                        var sb = new StringBuilder(this.InputMonitorHistory);
                        sb.AppendLine(args.ToString());
                        this.InputMonitorHistory = sb.ToString();
                    }
                }

                this.CheckForEmergencyHit(e);
            });

            bool isMouseClick = e.Device.DeviceType == InterceptionDeviceType.Mouse && e.KeyInfos.Any(x => KeysHelper.IsMouseClickKey(x.Key));

            // App.IsFocused is maybe too slow and the ui freezes the splitter main window
            if (isMouseClick && GlobalSettings.IsMainWindowActivated)
            {
                this.Dispatcher.BeginInvoke(action);
            }
            else
            {
                this.Dispatcher.Invoke(action);
            }

            if (GlobalSettings.IsMainWindowActivated)
            {
                e.Handled = false;
            }
        }
Example #3
0
 public override void OnTargetInitialized(object sender, InterceptionEventArgs eventArgs)
 {
     Console.WriteLine("LoggingAspect: Mixin [{0}] initialized for [{1}]",
                       eventArgs.Mixin.GetType().FullName,
                       eventArgs.Target.GetType().FullName);
 }
 public void OnMixinInitialized(object sender, InterceptionEventArgs args)
 {
     InitializedCount++;
 }
 public void OnMixinInitialized(object sender, InterceptionEventArgs args)
 {
     InitializedCount++;
 }