Author |
Topic |
|
lkytal
15 Posts |
Posted - 01/25/2014 : 05:53:24
|
Could S+ be transparent to mouse gestures? I mean, could mouse movements be transport to target programs as well? I've got used to select files with right click&drag in TOTALCMD and other programs, but s+ trapped all the right mouse movements so those programs are unable to react. It is possible to make mouse movements be received by these programs? If not, how about adding a option to s+ which enable mouse movements to go through s+'s transparent window and then function with target windows?
BTW, forgive my poor English ;-) |
|
Rob
USA
2615 Posts |
Posted - 01/25/2014 : 19:38:07
|
I am trying my best to decipher/translate what you're saying
I think you are referring to when you right-click and drag some files. The easiest thing to do is to right-click and drag like you normally would, but then stop all mouse movement (while still holding the right mouse button down) until the time in the Cancel Delay (Preferences tab) has passed. Then, S+ will release and replay the mouse events just like they happened.
You may have to move the mouse a tiny amount after the Cancel Delay has passed for the window below to pick up the mouse movement, but that is what I do in Windows Explorer all of the time and have not had any issues. The only other option is to assign a gesture to call acDisableNext() which will cause S+ to not capture the next right mouse button click, or hold the ignore key (for example, Control, defined in the Preferences tab) before you press the right mouse button to tell S+ to ignore capturing the right mouse button.
I hope this helps! |
|
|
lkytal
15 Posts |
Posted - 01/25/2014 : 22:33:25
|
Thanks, But What if I want s+ could work together with other mouse gesture programs? In fact, I'm using Firegesture inside Firefox because it's more powerful for Firefox, So I have disable s+ while Firefox running. I would like s+ to handle common gestures while those gestures could be pass to firefox as well so that firegesture can react to them, is this possible?
quote: Originally posted by Rob
I am trying my best to decipher/translate what you're saying
I think you are referring to when you right-click and drag some files. The easiest thing to do is to right-click and drag like you normally would, but then stop all mouse movement (while still holding the right mouse button down) until the time in the Cancel Delay (Preferences tab) has passed. Then, S+ will release and replay the mouse events just like they happened.
You may have to move the mouse a tiny amount after the Cancel Delay has passed for the window below to pick up the mouse movement, but that is what I do in Windows Explorer all of the time and have not had any issues. The only other option is to assign a gesture to call acDisableNext() which will cause S+ to not capture the next right mouse button click, or hold the ignore key (for example, Control, defined in the Preferences tab) before you press the right mouse button to tell S+ to ignore capturing the right mouse button.
I hope this helps!
|
|
|
Rob
USA
2615 Posts |
Posted - 01/25/2014 : 22:37:10
|
Unfortunately not. There's no way for S+ to know what gesture you're drawing until you've finished, which means the Firefox add-on wouldn't receive the mouse movements since S+ was watching to see what gesture you were drawing. |
|
|
gopikrish2000
34 Posts |
Posted - 01/26/2014 : 01:04:29
|
@lkytal one suggestion , Previously i also used to do the same ( disable S+ for Firefox and use firegestures ) but then you will not have continuity of other S+ programs ( bcoz firegestures (FG) willnot support curvey gestures. ).
So i installed TabMixPlus addon and assigning keyboard shortcuts to each of the features and in turn drawing S+ gestures with acSendKeys(<above shortcut>) .
The only things perhaps i'm not able to do in S+, which are in FG are 1. increase only the text size ( keeping without changing zoom ) [ can do it via Greasy monkey script assign keyboard shortcut ) 2. Rocker gesture for switching tabs is not smooth in S+ bcoz of design ( Right mouse then Left Mouse continously ) [ can do it by autohotkey script ]
I used to use lot of custom scripts for FG which i'm able to replicate all using above techinque . Few of the scripts are there in link http://www.strokesplus.com/forum/topic/795/dyk-some-browser-functionalities . I suggest you to use as much as Tab mix plus,S+ as possible instead of other gesture addon.
If you still want to use both FG ,S+ then assign FG trigger button to middle click and S+ as right click , and try to replicate what ever FG providing in S+ using above technique , if not possible draw those gestures with middle button ( trigger of FG ). |
Edited by - gopikrish2000 on 01/26/2014 01:15:27 |
|
|
lkytal
15 Posts |
Posted - 01/26/2014 : 08:03:12
|
Just a little suggestion, how about add an option to s+, when you enable it, s+ will repeat your gesture on the original window without capturing so that FG(etc) could react?
quote: Originally posted by Rob
Unfortunately not. There's no way for S+ to know what gesture you're drawing until you've finished, which means the Firefox add-on wouldn't receive the mouse movements since S+ was watching to see what gesture you were drawing.
|
|
|
Rob
USA
2615 Posts |
Posted - 01/26/2014 : 11:28:22
|
You can always inject the mouse sequence via S+; here's an example:
I'm going to show you how to duplicate the DRU (Down Right Up) Firegesture sequence, which opens a new window (by default).
1. Open up the S+ Actions tab 2. Add Firefox as an app (as you would any app) 3. Create a new action, call it New Window 4. If you don't already have a DRU gesture in S+, click New and draw it, name it DRU 5. Add this script for the action:acConsumePhysicalInput(1)
acMouseMove(gsx, gsy) --move to start of gesture
acDelay(5)
acMouseClick(gsx,gsy,0,1,0) --send right button down
acDelay(5)
acMouseMove(gsx, gsy+100) --draw a line 100 pixels stright down from the start location
acDelay(5)
acMouseMove(gsx+100, gsy+100) --continue the line 100 pixels to the right
acDelay(5)
acMouseMove(gsx+100,gsy) --continue the line 100 pixels up
acDelay(5)
acMouseClick(gsx+100, gsy, 0,0,1) --send the right mouse up event
acDelay(5)
acMouseMove(gex,gey) --move mouse back to end of gesture
acConsumePhysicalInput(0) What the script does is first tells S+ to consume all physical input, this prevents any subtle mouse movements you may make with the actual mouse from interfering with the Lua script which is moving the mouse automatically.
Next, move the mouse to the location where the gesture started and send the right-click mouse down event (which Firegesture can capture), then we just synthesize the mouse movements, manually drawing the DRU gesture (which Firegestures will receive), then send the right mouse up event, move the mouse back to where the gesture ended, and finally allow physical input to process as normal.
Since Firegestures use simple straight lines for gestures, it's very easy to recreate them and inject for Firegestures to process.
The acDelay(5) calls may or may not be needed, often times I've found that you need them between this type of sequence to allow the underlying application enough time to process the event.
I've tested the above in Firegesture and it works as expected.
Of course, your S+ gesture doesn't have to match the Firegesture mapping as the Lua action is manually drawing DRU, but it's probably easier to keep it consistent. |
|
|
lkytal
15 Posts |
Posted - 01/26/2014 : 23:08:20
|
It do works, Thanks a lot. Still, hoping that someday I'll see a new function like acDuplicateGes() (etc) that will automatically inject my mouse gestures to target window no matter what gesture was drawn, that would be great Anyway, thanks for all your answers
quote: Originally posted by Rob
You can always inject the mouse sequence via S+; here's an example:
I'm going to show you how to duplicate the DRU (Down Right Up) Firegesture sequence, which opens a new window (by default).
1. Open up the S+ Actions tab 2. Add Firefox as an app (as you would any app) 3. Create a new action, call it New Window 4. If you don't already have a DRU gesture in S+, click New and draw it, name it DRU 5. Add this script for the action:acConsumePhysicalInput(1)
acMouseMove(gsx, gsy) --move to start of gesture
acDelay(5)
acMouseClick(gsx,gsy,0,1,0) --send right button down
acDelay(5)
acMouseMove(gsx, gsy+100) --draw a line 100 pixels stright down from the start location
acDelay(5)
acMouseMove(gsx+100, gsy+100) --continue the line 100 pixels to the right
acDelay(5)
acMouseMove(gsx+100,gsy) --continue the line 100 pixels up
acDelay(5)
acMouseClick(gsx+100, gsy, 0,0,1) --send the right mouse up event
acDelay(5)
acMouseMove(gex,gey) --move mouse back to end of gesture
acConsumePhysicalInput(0) What the script does is first tells S+ to consume all physical input, this prevents any subtle mouse movements you may make with the actual mouse from interfering with the Lua script which is moving the mouse automatically.
Next, move the mouse to the location where the gesture started and send the right-click mouse down event (which Firegesture can capture), then we just synthesize the mouse movements, manually drawing the DRU gesture (which Firegestures will receive), then send the right mouse up event, move the mouse back to where the gesture ended, and finally allow physical input to process as normal.
Since Firegestures use simple straight lines for gestures, it's very easy to recreate them and inject for Firegestures to process.
The acDelay(5) calls may or may not be needed, often times I've found that you need them between this type of sequence to allow the underlying application enough time to process the event.
I've tested the above in Firegesture and it works as expected.
Of course, your S+ gesture doesn't have to match the Firegesture mapping as the Lua action is manually drawing DRU, but it's probably easier to keep it consistent.
|
|
|
Rob
USA
2615 Posts |
Posted - 01/26/2014 : 23:09:50
|
I agree, I think it's something worth having. I'll put it on my TO DO list :-) |
|
|
Rob
USA
2615 Posts |
Posted - 01/27/2014 : 01:37:51
|
Added two ways to do this in 2.8.1.
Call acRelayGesture() and/or check the new Relay Gesture on No Match* option in Preferences.
acRelayGesture() explicitly tells S+ to replay the last gesture, while the new option only replays the gesture if there was no match found in the app or Global Actions list (but will redraw it exactly, even if it's not a defined S+ gesture).
So if you have a Global Action which would match, but you want Firegestures to receive it, you'd need to add an action under the Firefox app, using the matching Firegesture pattern and call acRelayGesture().
Other than that, if you have the option enabled and draw either an unknown gesture or there's no matching action found, S+ will replay the mouse sequence. |
|
|
lkytal
15 Posts |
Posted - 01/27/2014 : 09:17:53
|
The latest version works fine, great job! Still, a tiny frozen might happend occasionally in version, please check it out~
quote: Originally posted by Rob
Added two ways to do this in 2.8.1.
Call acRelayGesture() and/or check the new Relay Gesture on No Match* option in Preferences.
acRelayGesture() explicitly tells S+ to replay the last gesture, while the new option only replays the gesture if there was no match found in the app or Global Actions list (but will redraw it exactly, even if it's not a defined S+ gesture).
So if you have a Global Action which would match, but you want Firegestures to receive it, you'd need to add an action under the Firefox app, using the matching Firegesture pattern and call acRelayGesture().
Other than that, if you have the option enabled and draw either an unknown gesture or there's no matching action found, S+ will replay the mouse sequence.
|
|
|
Rob
USA
2615 Posts |
Posted - 01/27/2014 : 09:30:47
|
What do you mean when you say "Still, a tiny frozen might happend occasionally in version, please check it out~"? |
|
|
lkytal
15 Posts |
Posted - 01/27/2014 : 11:00:08
|
I mean... in this version, s+ will occasionally frozen a bit while
quote: Originally posted by Rob
What do you mean when you say "Still, a tiny frozen might happend occasionally in version, please check it out~"?
|
|
|
Rob
USA
2615 Posts |
Posted - 01/27/2014 : 11:00:51
|
When does it freeze? When relaying a gesture? Or just in general? |
|
|
lkytal
15 Posts |
Posted - 01/27/2014 : 11:19:19
|
In general, After release
quote: Originally posted by Rob
When does it freeze? When relaying a gesture? Or just in general?
|
|
|
Rob
USA
2615 Posts |
Posted - 01/27/2014 : 11:25:13
|
Hmm, I can't reproduce that, it's not happening for me. The code changes that were made for the new feature shouldn't have introduced any sort of lag, unless you have the option enabled and draw an unknown gesture/action, then there will be a small lag as the gesture is replayed. S+ stops all input to replay the gesture, if one was drawn. I've posted to the download thread to see if anyone else if having the same issue. |
|
|
|
Topic |
|
|
|