martin-stone/touchcursor

Stops working (with program still running)

Opened this issue · 6 comments

Sometimes when I start my computer TouchCursor either doesn't work or stops working after a while. The program is still running but when I hold space I just get a lot of spaces.

I was first wondering if there was another program interfering but that doesn't seem reasonable to me since it occasionally works.

Using Windows 10, let me know if you need more information.

Mattias Johnson

That's not something I've experienced or had reports of before.

It could be a conflict with another program that also installs a keyboard hook, even if it is intermittent. (E.g. the first or last program to finish running at start-up "wins".) It might be worth experimenting with disabling other keyboard-related programs you may have installed.

I've seen it not work the odd time as well, but I think it's related to the problem of not being able to run in an app that has been started as administrator (or some related user issue). For example, I've seen it fail to work when trying to open a file of a certain type in one app, which spawns a new process to handle that type - sometimes (haven't bothered to track exactly when) this newly launched app will not work with TouchCursor.

Certainly it doesn't work in programs running as administrator. I expect that security considerations will make that unsolvable.

I haven't seen the "spawn new process" issue, though. If you ever manage to reliably reproduce it, let me know.

If you run TouchCursor as administrator, then it will work in other programs that are running as administrator.

The software I work on for my job needs to run as Administrator, so to make life easier I have configured Visual Studio to run as Administrator as well. Unfortunately, this meant that TouchCursor was not detecting when I pushed the activation key.

If I launch TouchCursor as administrator, the issue goes away.

You can change the TouchCursor executable's compatibility settings to always run as administrator:
image

Thanks for the tip, @pvince. I didn't realise there was a way to do that.

EDIT: Not OP, but had a similar issue and have found the culprit for my problem: my keyboard (iKBC MF108 V3.0) has a Speed level adjustment setting (1-4) which increases the amount of char inputs when holding a key and this mistakenly was toggled on and stopped TouchCursor from working correctly.

@mattiasJohnson if you still have this problem, try with a different (simple) keyboard and see if the problem persists.

@martin-stone any idea why TouchCursor doesn't catch these extra key inputs when Speed level adjustment is toggled on, or how the keyboard manages to bypass this?

The quote below was my original post.

I have also ran into this issue. I noticed this after working for a while in Visual Studio, though I can't confirm if that is actually the culprit.

TouchCursor does not run as admin. Afaik VS is not running as admin. I am also running AutoHotkey (not as admin) and Corsair iCUE (though this is only for the lights on my rgb headphone stand. Yes, those are a thing now.). I have an iKBC MF108 V3.0 mech keyboard, Logitech G502 wired mouse with Logitech G Hub.
Closing VS, AHK and TC, then running TC again does not fix the issue.

What actually happens is that

  1. space characters are no longer blocked until another configured key is pressed (aka spams space chars until you press J for left)
  2. an increasing delay is happening for space (and configured keys) where its not necessarily noticeable for a single press, but gets more noticeably the longer you hold either space itself or space + a configured key.

for instance:

  • holding space for a few seconds spams spaces. releasing space will continue spamming spaces for a while, before stopping.
  • holding space for a few seconds, then pressing J (for left) will continue to spam spaces like above, finish, then start blocking spaces again, moves the cursor 1 char to the left and wait for the next command.
  • holding configured keys is delayed in the same way: holding space and immediately press J will not input a space, immediately go left and wait for the next command. If you then hold J, it will spam lefts for a while and releasing J will show the same behaviour as before: J's are delayed, thus being spammed for a while longer after releasing J, before stopping and accepting new inputs.