Page 1 of 1

Chording with default simkey '{alt}{lmb}' method 8 (stiky hold)

Posted: Tue Mar 06, 2018 11:13 pm
by Kukurykus
This theard I started over 3 months ago in point 8 of this post: viewtopic.php?f=6&t=2625&start=90#p14539
Few days ago I reposted it in wrong place (not separated topic): viewtopic.php?f=6&t=3802#p15900
So now to sort out things I was asked to create new topic for my problem what I do :D

Copy of post I recently submited:

I tired it months ago and now as well. Unfortunately it's not the cause of problem. Of course it helped me a lot with other simulated keystrokes I used, when 'Delay between simulated keystrokes' was too low/high. I didn't need to change that value for more than this, and other and maybe some one more simulated keys I use, however I use them really many. So the optimal for my work I found is 7ms. Increasing it may affect too slow performance while decreasing that some things don't work sometimes (actually often) as should.

As I say I tried now many values, like 10 and higher, but that doesn't made any difference. Problem exists.

I am attaching two good DEBUG logs and one bad, only extracted parts, from moment it starts to it ends.




Two parts when there is no problem differes but a little. When you look into code (I separated lines that differes to make them more radable) and compare them you will see that in first good code, this part:

Code: Select all

Obtained lock for 'SendInput::ProcessQueue' after 0ms.
CSendInput::ProcessQueue: Sending 1 INPUTS
is before:

Code: Select all

Translating Right Button Up Key state 0x0: Action 128 (Button Chording) becomes Action 28 [Simulated Keys '{alt}{lmb}' (sticky hold)]
Key Hold Sticky: Ignore button up
while in second good code it's after.




In case of bad behaviour there are more differences, like this line at beginning (of correct behaviour):

Code: Select all

Unable to enter critical section for lock 'SendInput::ProcessQueue' (TID: 00001BD0) because it is already locked by 'SendInput::SendInputDelay' - Waiting...
is replaced to this:

Code: Select all

CSendInput::ProcessQueue: Sending 1 INPUTS



Additionally this part:

Code: Select all

Obtained lock for 'SendInput::ProcessQueue' after 0ms.
CSendInput::ProcessQueue: Sending 1 INPUTS
that was in case of good parts either before/after:

Code: Select all

Translating Right Button Up Key state 0x0: Action 128 (Button Chording) becomes Action 28 [Simulated Keys '{alt}{lmb}' (sticky hold)]
Key Hold Sticky: Ignore button up
doesn't occur at all. So above code is neither preceeded nor followed by that part of code.




There is one more difference. When then we have this part of code in good and bad ones:

Code: Select all

ProcessButton: Chord active; Releasing global chord
MouseHookLLProc: Removing message 0x0205 from mouse hook queue as we have overridden it.
Ignoring key injected by X-Mouse Button Control
CSendInput::ProcessQueue: Sleeping for 7ms
only in case of bad behaviour there is additionall line of code that isn't present in good ones:

Code: Select all

CSendInput::ProcessQueue: Finished sending queue... (Flushed = 0)

Now we have private messages with Phil - started before this topic was created - and we continue them though this topic is already created :)

Re: Chording with default simkey '{alt}{lmb}' method 8 (stiky hold)

Posted: Sat Mar 10, 2018 11:43 am
by phil
Just to follow up for everyone else, we have been diagnosing this over the last few days and I think I have found the problem.
I'm building a fix into 2.18 Beta 5 (Kukurykus has checked an early build for me) and we shall see how that goes (first impressions are good).

Thanks,
Phil

Re: Chording with default simkey '{alt}{lmb}' method 8 (stiky hold)

Posted: Mon Mar 12, 2018 7:16 pm
by Kukurykus
I confirm with Beta 7 (probaby 6 and 5 as well) there is no above described problem anymore.

Re: Chording with default simkey '{alt}{lmb}' method 8 (stiky hold)

Posted: Mon Mar 12, 2018 9:35 pm
by phil
Yay - thanks :)