The-Fastest-Mouse-Clicker-for-Windows icon indicating copy to clipboard operation
The-Fastest-Mouse-Clicker-for-Windows copied to clipboard

Trigger keys don't handle dead keys properly

Open SanderBouwhuis opened this issue 3 years ago • 2 comments
trafficstars

I saw in the source code you use GetAsyncKey, which is fine. However, you have to check for these dead keys:

WinUser.h
#define VK_LSHIFT         0xA0
#define VK_RSHIFT         0xA1
#define VK_LCONTROL       0xA2
#define VK_RCONTROL       0xA3
#define VK_LMENU          0xA4
#define VK_RMENU          0xA5

On line 1040 you check whether you found the pressed key (actually the released key, which is good):

if(keyUpTrig[i] && clickedOnceForTriggerFlag)

Then, on line 1057 you state this:

if (waitingForTrigger)
{
  _itoa_s(i, triggerText, 4, 10);
  SetFocus(outputWindow);
  SetDlgItemText(hWnd, GetDlgCtrlID(triggerButton), triggerText);
  my_trigger_key = atoi(triggerText);
  char winTxt[1024];
  memset(winTxt, 0, 1024);
  GetWindowText(triggerButton2, winTxt, 1024);
  my_trigger_key2 = atoi(winTxt);
  SetWindowTextA(press, string_format("press (clicking while: key <%d> keeps hit down)", my_trigger_key).c_str());
  SetWindowTextA(toggle, string_format("toggle (clicking begin: hit <%d>, end: hit <%d>)", my_trigger_key, my_trigger_key2).c_str());
  waitingForTrigger = false;
}

Unfortunately, you forget to also store the dead key states so that it's possible to start or end the clicking with for instance <LCTRL+1>.

SanderBouwhuis avatar Jan 03 '22 21:01 SanderBouwhuis

Thank you a lot for a fix. I'll incorporate it to a new version.

windows-2048 avatar Jan 05 '22 20:01 windows-2048

check your pc asap, the 'updater' is actually a miner located in your roaming appdata starting with 'Un' and contains multiple executables with 'Update'

he3als avatar Jan 26 '22 07:01 he3als