Example #1
0
        public bool IsModified(GestureModifier query)
        {
            ModifierType m;

            switch (query)
            {
            case GestureModifier.Button1:
                m = ModifierType.Button1Mask;
                break;

            case GestureModifier.Button2:
                m = ModifierType.Button2Mask;
                break;

            case GestureModifier.Button3:
                m = ModifierType.Button3Mask;
                break;

            case GestureModifier.Shift:
                m = ModifierType.ShiftMask;
                break;

            case GestureModifier.Control:
                m = ModifierType.ControlMask;
                break;

            case GestureModifier.Alt:
                m = ModifierType.Mod1Mask;
                break;

            default:
                return(false);
            }
            return((mods & m) != 0);
        }
Example #2
0
        public void ModifierTriggered(GestureModifier modifier)
        {
            try
            {
                switch (modifier)
                {
                case GestureModifier.WheelForward:
                    ReportStatus("+");
                    5.Times(() => Sim.KeyPress(VirtualKeyCode.VOLUME_UP));
                    break;

                case GestureModifier.WheelBackward:
                    ReportStatus("-");
                    5.Times(() => Sim.KeyPress(VirtualKeyCode.VOLUME_DOWN));
                    break;

                case GestureModifier.MiddleButtonDown:
                    ReportStatus("x");
                    Sim.KeyPress(VirtualKeyCode.VOLUME_MUTE);
                    break;
                }
            }
            catch (Exception)
            {
                Native.TryResetKeys(new[] { VirtualKeyCode.VOLUME_UP, VirtualKeyCode.VOLUME_DOWN, VirtualKeyCode.VOLUME_MUTE });
            }
        }
        public void ModifierTriggered(GestureModifier modifier)
        {
            try
            {
                switch (modifier)
                {
                    case GestureModifier.WheelForward:
                        ReportStatus("+");
                        5.Times(() => Sim.KeyPress(VirtualKeyCode.VOLUME_UP));
                        break;
                    case GestureModifier.WheelBackward:
                        ReportStatus("-");
                        5.Times(() => Sim.KeyPress(VirtualKeyCode.VOLUME_DOWN));
                        break;
                    case GestureModifier.MiddleButtonDown:
                        ReportStatus("x");
                        Sim.KeyPress(VirtualKeyCode.VOLUME_MUTE);
                        break;

                }
            }
            catch (Exception)
            {
                Native.TryResetKeys(new[] { VirtualKeyCode.VOLUME_UP, VirtualKeyCode.VOLUME_DOWN, VirtualKeyCode.VOLUME_MUTE });
            }
        }
Example #4
0
 protected void OnIntentReadyToExecuteOnModifier(GestureModifier modifier)
 {
     if (IntentReadyToExecuteOnModifier != null)
     {
         IntentReadyToExecuteOnModifier(modifier);
     }
 }
Example #5
0
        private void OnMouseUp()
        {
            Debug.WriteLine("OnMouseUp");
            //如果手势初始时没有移动足够的距离,则模拟发送相应事件
            //            if (!_initialMoveValid)
            //            {
            //                Console.WriteLine("SimulateCick");
            //                SimulateMouseEvent(MouseEventType.DOWN,_curPos.X, _curPos.Y);
            //                //SimulateGestureKeyButtonEvent(GestureKeyButtonEventType.DOWN);
            //                //两次事件稍微间隔一点时间,否则任务栏上右击有时会无效!
            //                //Thread.Sleep(10);
            //                SimulateMouseEvent(MouseEventType.UP,_curPos.X, _curPos.Y);
            //            }


            if (_stayTimeout)
            {
                _stayTimer.Stop();
            }
            if (PathEnd != null && _initialMoveValid && !_isTimeout)
            {
                PathEnd(_currentEventArgs);
            }


            _filteredModifiers = GestureModifier.None;
            IsSuspended        = false;
            _moveCount         = 0;
        }
Example #6
0
        public static string ToMnemonic(this GestureModifier modifier)
        {
            switch (modifier)
            {
            case GestureModifier.WheelForward:
                return("▲");

            case GestureModifier.WheelBackward:
                return("▼");

            case GestureModifier.MiddleButtonDown:
                return("●");

            case GestureModifier.LeftButtonDown:
                return("◐");

            case GestureModifier.RightButtonDown:
                return("◑");

            case GestureModifier.X1:
                return("X1");

            case GestureModifier.X2:
                return("X2");

            default:

                return(String.Empty);
            }
        }
        private void OnModifier(GestureModifier modifier)
        {
            Debug.WriteLine("OnModifier: " + modifier);
            if (_isTimeout)
            {
                return;
            }


            _currentEventArgs.Modifier = modifier;
            if (!_initialMoveValid && PathStart != null)
            {
                _initialMoveValid          = true;
                _currentEventArgs.Location = _startPoint;
                PathStart(_currentEventArgs);
            }
            if (PathModifier != null)
            {
                PathModifier(_currentEventArgs);
            }

            //如果已经被冻结,则不应继续计时
            if (!IsSuspended && _stayTimeout)
            {
                _stayTimer.Stop();
                _stayTimer.Start();
            }

            _modifierEventHappendPrevTime = DateTime.UtcNow;
        }
        private bool HandleModifier(GestureModifier modifier)
        {
            if (IsModifierFiltered(modifier))
            {
                return(false);
            }

            if (modifier == (modifier & GestureModifier.Scroll))
            {
                //如果事件发生的间隔不到x毫秒,则不发布新事件
                var now = DateTime.UtcNow;
                if (now - _modifierEventHappendPrevTime > TimeSpan.FromMilliseconds(100))
                {
                    Post(WM.GESTBTN_MODIFIER, (int)modifier);
                    _modifierEventHappendPrevTime = now;
                }
            }
            else
            {
                Post(WM.GESTBTN_MODIFIER, (int)modifier);
            }


            return(true);
        }
Example #9
0
 public void ModifierTriggered(GestureModifier modifier)
 {
     if (HandleModifiers && ModifierTriggeredScript != null)
     {
         _state["modifier"] = modifier;
         DoString(ModifierTriggeredScript, "ModifierTriggered");
         _state["modifier"] = null;
     }
 }
        /// <summary>
        /// 暂停发布Move事件,并设置直到路径结束之前不应该被hook的修饰符
        /// </summary>
        /// <param name="filteredModifiers"></param>
        public void SuspendTemprarily(GestureModifier filteredModifiers)
        {
            if (_stayTimeout)
            {
                _stayTimer.Stop();
            }

            _filteredModifiers = filteredModifiers;
            IsSuspended        = true;
        }
Example #11
0
        private void WhenIntentReadyToExecuteOnModifier(GestureModifier modifier)
        {
//            if (ViewFadeOut)
//            {
//                _canvasOpacity = 255;
//                FadeOutTo(120);
//
//                DrawAndUpdate();
//            }
        }
        public void GestureRecognized(out GestureModifier observeModifiers)
        {
            try
            {
                Sim.KeyPress(VirtualKeyCode.VOLUME_UP);
                Sim.KeyPress(VirtualKeyCode.VOLUME_DOWN);
            }
            catch (Exception)
            {

                Native.TryResetKeys(new[] { VirtualKeyCode.VOLUME_UP, VirtualKeyCode.VOLUME_DOWN });
            }

            observeModifiers = GestureModifier.Scroll | GestureModifier.MiddleButtonDown;
        }
Example #13
0
        public void GestureRecognized(out GestureModifier observeModifiers)
        {
            try
            {
                Sim.KeyPress(VirtualKeyCode.VOLUME_UP);
                Sim.KeyPress(VirtualKeyCode.VOLUME_DOWN);
            }
            catch (Exception)
            {
                Native.TryResetKeys(new[] { VirtualKeyCode.VOLUME_UP, VirtualKeyCode.VOLUME_DOWN });
            }


            observeModifiers = GestureModifier.Scroll | GestureModifier.MiddleButtonDown;
        }
        public void GestureRecognized(out GestureModifier observeModifiers)
        {
            //直接交由系统的任务切换机制处理,不需要订阅任何事件
            observeModifiers = GestureModifier.None;

            try
            {
                _sim.Keyboard.KeyDown(VirtualKeyCode.LMENU);
                _sim.Keyboard.KeyPress(VirtualKeyCode.TAB);
            }
            catch (Exception ex)
            {
                Debug.WriteLine("发送按键失败: " + ex);
                TryRecoverAltTab();
            }
        }
Example #15
0
        private void OnModifier(GestureModifier modifier)
        {
            Debug.WriteLine("OnModifier");
            if (_isTimeout)
            {
                return;
            }


            //lParam代表滚动的角度,0表click

            _currentEventArgs.Modifier = modifier;
            if (!_initialMoveValid && PathStart != null)
            {
                _initialMoveValid = true;

                /*if (InitialStayTimeout)
                 * {
                 *  ResetCursor();
                 * }*/

                _currentEventArgs.Location = _startPoint;
                PathStart(_currentEventArgs);
            }
            if (PathModifier != null)
            {
                /*if(PreferWindowUnderCursorAsTarget)
                 * {
                 *  var rootWindow = Native.GetAncestor(_currentContext.WinId, Native.GetAncestorFlags.GetRoot);
                 *  User32.SetForegroundWindow(rootWindow);
                 * }*/


                PathModifier(_currentEventArgs);
            }

            //如果已经被冻结,则不应继续计时
            if (!IsSuspended && _stayTimeout)
            {
                _stayTimer.Stop();
                _stayTimer.Start();
            }

            _modifierEventHappendPrevTime = DateTime.UtcNow;
        }
Example #16
0
        public void GestureRecognized(out GestureModifier observeModifiers)
        {
            if (HandleModifiers && GestureRecognizedScript != null)
            {
                var retVals = DoString(GestureRecognizedScript, "GestureRecognized");
                if (retVals.Length > 0)
                {
                    var number = (int)(GestureModifier)retVals[0];

                    var gm = (GestureModifier)number;
                    Debug.WriteLine("observeModifier=" + gm);
                    observeModifiers = gm;
                    return;
                }
            }

            observeModifiers = GestureModifier.None;
        }
Example #17
0
        private void OnMouseUp()
        {
            Debug.WriteLine("OnMouseUp");
            //如果手势初始时没有移动足够的距离,则模拟发送相应事件
            if (!_initialMoveValid)
            {
                //if(InitialStayTimeout) ResetCursor();
                //Console.WriteLine("SimulateCick");
                SimulateGestureBtnEvent(GestureBtnEventType.CLICK, _curPos.X, _curPos.Y);
                return;
            }


            if (_stayTimeout)
            {
                _stayTimer.Stop();
            }
            if (PathEnd != null && _initialMoveValid && !_isTimeout)
            {
                /*if (PreferWindowUnderCursorAsTarget)
                 * {
                 *  var rootWindow = Native.GetAncestor(_currentContext.WinId, Native.GetAncestorFlags.GetRoot);
                 *  User32.SetForegroundWindow(rootWindow);
                 * }*/

                PathEnd(_currentEventArgs);
            }

            _filteredModifiers = GestureModifier.None;
            IsSuspended        = false;
            _moveCount         = 0;

            //GC.Collect(GC.MaxGeneration, GCCollectionMode.Forced);
            //GCSettings.LatencyMode = GCLatencyMode.Interactive;

            //Low Memory Usage Illusion...

            /*using (var proc = Process.GetCurrentProcess())
             * {
             *  Native.SetProcessWorkingSetSize(proc.Handle, -1, -1);
             * }*/
        }
        private void OnMouseUp(bool isVirtual = false)
        {
            Debug.WriteLine("OnMouseUp");
            //如果手势初始时没有移动足够的距离,则模拟发送相应事件
            if (!_initialMoveValid)
            {
                Debug.WriteLine("Shit");
                if (isVirtual)
                {
                    _simulatingInput = true;
                    Debug.WriteLine("Simulating...Win Press");
                    var sim = new InputSimulator()
                    {
                        ExtraInfo = new IntPtr(SIMULATED_EVENT_TAG)
                    };
                    sim.Keyboard.KeyPress(WindowsInput.Native.VirtualKeyCode.LWIN);
                    Debug.WriteLine("End Simulating...Win Press");
                    _simulatingInput = false;
                }
                else
                {
                    uint data;
                    SimulateMouseEvent(MakeGestureBtnEvent(_gestureBtn, false, out data), _curPos.X, _curPos.Y, data);
                    SimulateMouseEvent(MakeGestureBtnEvent(_gestureBtn, true, out data), _curPos.X, _curPos.Y, data);
                }

                return;
            }

            if (_stayTimeout)
            {
                _stayTimer.Stop();
            }
            if (PathEnd != null && _initialMoveValid && !_isTimeout)
            {
                PathEnd(_currentEventArgs);
            }

            _filteredModifiers = GestureModifier.None;
            IsSuspended        = false;
            _moveCount         = 0;
        }
        public void GestureRecognized(out GestureModifier observeModifiers)
        {
            //直接交由系统的任务切换机制处理,不需要订阅任何事件
            observeModifiers = GestureModifier.None;

            try
            {
                Sim.KeyDown(VirtualKeyCode.LMENU);
                Sim.KeyPress(VirtualKeyCode.TAB);


            }
            catch (Exception ex) 
            {
                Debug.WriteLine("发送按键失败: " + ex);
                TryRecoverAltTab();
            }

            
        }
        private void OnMouseUp()
        {
            Debug.WriteLine("OnMouseUp");
            //如果手势初始时没有移动足够的距离,则模拟发送相应事件
            if (!_initialMoveValid)
            {
                SimulateGestureBtnEvent(GestureBtnEventType.CLICK, _curPos.X, _curPos.Y);
                return;
            }

            if (_stayTimeout)
            {
                _stayTimer.Stop();
            }
            if (PathEnd != null && _initialMoveValid && !_isTimeout)
            {
                PathEnd(_currentEventArgs);
            }

            _filteredModifiers = GestureModifier.None;
            IsSuspended        = false;
            _moveCount         = 0;
        }
 private void HandleIntentReadyToExecuteOnModifier(GestureModifier modifier)
 {
 }
 private void HandleIntentReadyToExecuteOnModifier(GestureModifier modifier)
 {
 }
 private void HandleIntentReadyToExecuteOnModifier(GestureModifier modifier)
 {
     //            if (ViewFadeOut)
     //            {
     //                _canvasOpacity = 255;
     //                FadeOutTo(120);
     //
     //                DrawAndUpdate();
     //            }
 }
Example #24
0
 public Gesture(GestureTriggerButton gestureBtn = GestureTriggerButton.Right, int defaultCapacity = 16)
 {
     GestureButton = gestureBtn;
     Dirs          = new List <GestureDir>(defaultCapacity);
     Modifier      = GestureModifier.None;
 }
        private void OnModifier(GestureModifier modifier)
        {
            Debug.WriteLine("OnModifier");
            if (_isTimeout) return;

            //lParam代表滚动的角度,0表click

            _currentEventArgs.Modifier = modifier;
            if (!_initialMoveValid && PathStart != null)
            {
                _initialMoveValid = true;

                /*if (InitialStayTimeout)
                {
                    ResetCursor();
                }*/

                _currentEventArgs.Location = _startPoint;
                PathStart(_currentEventArgs);
            }
            if (PathModifier != null)
            {
                /*if(PreferWindowUnderCursorAsTarget)
                {
                    var rootWindow = Native.GetAncestor(_currentContext.WinId, Native.GetAncestorFlags.GetRoot);
                    User32.SetForegroundWindow(rootWindow);
                }*/

                PathModifier(_currentEventArgs);
            }

            //如果已经被冻结,则不应继续计时
            if (!IsSuspended && _stayTimeout)
            {
                _stayTimer.Stop();
                _stayTimer.Start();
            }

            _modifierEventHappendPrevTime = DateTime.UtcNow;
        }
        private void OnMouseUp()
        {
            Debug.WriteLine("OnMouseUp");
            //如果手势初始时没有移动足够的距离,则模拟发送相应事件
            if (!_initialMoveValid)
            {
                SimulateGestureBtnEvent(GestureBtnEventType.CLICK, _curPos.X, _curPos.Y);
                return;
            }

            if (_stayTimeout) _stayTimer.Stop();
            if (PathEnd != null && _initialMoveValid && !_isTimeout)
            {
                PathEnd(_currentEventArgs);
            }

            _filteredModifiers = GestureModifier.None;
            IsSuspended = false;
            _moveCount = 0;
        }
 private bool IsModifierFiltered(GestureModifier modifier)
 {
     return modifier == (modifier & _filteredModifiers);
 }
 public void ModifierTriggered(GestureModifier modifier)
 {
     //直接交由系统的任务切换机制处理,不需要订阅任何事件
 }
 public void ModifierTriggered(GestureModifier modifier)
 {
     
 }
Example #30
0
 public void ModifierTriggered(GestureModifier modifier)
 {
     if(HandleModifiers && ModifierTriggeredScript != null)
     {
         _state["modifier"] = modifier;
         DoString(ModifierTriggeredScript, "ModifierTriggered");
         _state["modifier"] = null;
     }
 }
Example #31
0
        public void GestureRecognized(out GestureModifier observeModifiers)
        {
            if (HandleModifiers && GestureRecognizedScript != null)
            {
                var retVals = DoString(GestureRecognizedScript, "GestureRecognized");
                if(retVals.Length > 0)
                {
                    var number = (int)(GestureModifier)retVals[0];
                    
                    var gm = (GestureModifier)number;
                    Debug.WriteLine("observeModifier=" + gm);
                    observeModifiers = gm;
                    return;
                    
                }
            }

            observeModifiers = GestureModifier.None;
        }
 private bool IsModifierFiltered(GestureModifier modifier)
 {
     return(modifier == (modifier & _filteredModifiers));
 }
Example #33
0
 public bool IsModified(GestureModifier query)
 {
     return(master.IsModified(query));
 }
        /// <summary>
        /// 暂停发布Move事件,并设置直到路径结束之前不应该被hook的修饰符
        /// </summary>
        /// <param name="filteredModifiers"></param>
        public void SuspendTemprarily(GestureModifier filteredModifiers)
        {
            if (_stayTimeout) _stayTimer.Stop();

            _filteredModifiers = filteredModifiers;
            IsSuspended = true;
        }
        private bool HandleModifier(GestureModifier modifier)
        {
            if (IsModifierFiltered(modifier))
            {
                return false;
            }

            if (modifier == (modifier & GestureModifier.Scroll))
            {
                //如果事件发生的间隔不到x毫秒,则不发布新事件
                var now = DateTime.UtcNow;
                if (now - _modifierEventHappendPrevTime > TimeSpan.FromMilliseconds(100))
                {
                    Post(WM.GESTBTN_MODIFIER, (int)modifier);
                    _modifierEventHappendPrevTime = now;
                }
            }
            else
            {
                Post(WM.GESTBTN_MODIFIER, (int)modifier);
            }


            return true;
        }
Example #36
0
 public Gesture(GestureButtons gestureBtn=GestureButtons.RightButton, int defaultCapacity=16)
 {
     GestureButton = gestureBtn;
     Dirs = new List<GestureDir>(defaultCapacity);
     Modifier = GestureModifier.None;
 }
        private void OnModifier(GestureModifier modifier)
        {
            Debug.WriteLine("OnModifier");
            if (_isTimeout) return;
            
            //lParam代表滚动的角度,0表click
            _currentEventArgs.Modifier = modifier;
            if (!_initialMoveValid && PathStart != null)
            {
                _initialMoveValid = true;
                _currentEventArgs.Location = _startPoint;
                PathStart(_currentEventArgs);
            }
            if (PathModifier != null)
            {
                PathModifier(_currentEventArgs);
            }

            //如果已经被冻结,则不应继续计时
            if (!IsSuspended && _stayTimeout)
            {
                _stayTimer.Stop();
                _stayTimer.Start();
            }

            _modifierEventHappendPrevTime = DateTime.UtcNow;
        }
Example #38
0
 public Gesture(GestureButtons gestureBtn = GestureButtons.RightButton, int defaultCapacity = 12)
 {
     GestureButton = gestureBtn;
     Dirs          = new List <GestureDir>(defaultCapacity);
     Modifier      = GestureModifier.None;
 }
Example #39
0
 public bool IsModified(GestureModifier query)
 {
     return(false);
 }
        private void OnMouseUp()
        {
            Debug.WriteLine("OnMouseUp");
            //如果手势初始时没有移动足够的距离,则模拟发送相应事件
            if (!_initialMoveValid)
            {
                //if(InitialStayTimeout) ResetCursor();
                //Console.WriteLine("SimulateCick");
                SimulateGestureBtnEvent(GestureBtnEventType.CLICK, _curPos.X, _curPos.Y);
                return;
            }

            if (_stayTimeout) _stayTimer.Stop();
            if (PathEnd != null && _initialMoveValid && !_isTimeout)
            {
                /*if (PreferWindowUnderCursorAsTarget)
                {
                    var rootWindow = Native.GetAncestor(_currentContext.WinId, Native.GetAncestorFlags.GetRoot);
                    User32.SetForegroundWindow(rootWindow);
                }*/

                PathEnd(_currentEventArgs);
            }

            _filteredModifiers = GestureModifier.None;
            IsSuspended = false;
            _moveCount = 0;

            //GC.Collect(GC.MaxGeneration, GCCollectionMode.Forced);
            //GCSettings.LatencyMode = GCLatencyMode.Interactive;

            //Low Memory Usage Illusion...
            /*using (var proc = Process.GetCurrentProcess())
            {
                Native.SetProcessWorkingSetSize(proc.Handle, -1, -1);
            }*/
        }
Example #41
0
 protected void OnIntentReadyToExecuteOnModifier(GestureModifier modifier)
 {
     if (IntentReadyToExecuteOnModifier != null) IntentReadyToExecuteOnModifier(modifier);
 }
Example #42
0
 public void ModifierTriggered(GestureModifier modifier)
 {
 }