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); }
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 }); } }
protected void OnIntentReadyToExecuteOnModifier(GestureModifier modifier) { if (IntentReadyToExecuteOnModifier != null) { IntentReadyToExecuteOnModifier(modifier); } }
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; }
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); }
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; }
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; }
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(); } }
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; }
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 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) { // if (ViewFadeOut) // { // _canvasOpacity = 255; // FadeOutTo(120); // // DrawAndUpdate(); // } }
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) { }
public void ModifierTriggered(GestureModifier modifier) { if(HandleModifiers && ModifierTriggeredScript != null) { _state["modifier"] = modifier; DoString(ModifierTriggeredScript, "ModifierTriggered"); _state["modifier"] = null; } }
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)); }
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; }
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; }
public Gesture(GestureButtons gestureBtn = GestureButtons.RightButton, int defaultCapacity = 12) { GestureButton = gestureBtn; Dirs = new List <GestureDir>(defaultCapacity); Modifier = GestureModifier.None; }
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); }*/ }
protected void OnIntentReadyToExecuteOnModifier(GestureModifier modifier) { if (IntentReadyToExecuteOnModifier != null) IntentReadyToExecuteOnModifier(modifier); }