Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Experimental: Hold key activation #407

Open
wants to merge 5 commits into
base: master
Choose a base branch
from
Open

Conversation

dexterleng
Copy link
Collaborator

@dexterleng dexterleng commented Apr 16, 2021

Configuration is hard coded currently:

  • hold f to toggle hint-mode
  • hold a to toggle scroll-mode

can't use j because you have to hold j to scroll down.

@dexterleng
Copy link
Collaborator Author

dexterleng commented Apr 16, 2021

@blackketter @colossatr0n @al3xandru @benwoodward and any interested Vimac users:

Would yall mind testing hold key activation and giving me feedback? I'm consistently thinking about how I can make Vimac even easier/less painful to use so that users will find it easier to pick it up as a habit. Hold key activation is one of those ideas that I'm fairly confident is a winner, but I'd love to hear your thoughts on it before I spend more time & effort on it.

I've attached a copy of the build, you may have to Right click -> Open since it is unsigned.

EDIT: you'll have to disable key sequence activation to get it working now.

Vimac 2021-04-16 23-19-59.zip

@al3xandru
Copy link

al3xandru commented Apr 16, 2021

@dexterleng I already have a solution using a hold key (based on Karabiner). The truth is that I almost never use it because it requires using both hands. Even mapping it to keys that could allow single hand usage makes it harder to use than mode-based activation.

My suggestion would be to stick with modes. I’ll give it a try though.

@dexterleng
Copy link
Collaborator Author

@al3xandru I don't understand - what do you mean by mode-based activation? You hold a key/hit a shortcut/type a sequence, which activates a mode. The mechanism is different but the workflow is the same.

@blackketter
Copy link

Alas:
Screen Shot 2021-04-16 at 9 46 02 AM

@colossatr0n
Copy link
Contributor

I'm also getting the same error as blackketter.

@dexterleng
Copy link
Collaborator Author

@blackketter @colossatr0n could you try out this solution?

https://apple.stackexchange.com/a/372208/348536

Repository owner deleted a comment from blackketter Apr 16, 2021
@al3xandru
Copy link

@dexterleng with the current approach (hit a shortcut or chord) mode activation is stateful. After activation, my hands are free.

With hold, mode activation if temporary. My hand needs to keep the activation key pressed. I already have a working solution for this latter case so for me it’s not really appealing. My interest is in reducing the number of fingers involved :-)

@dexterleng
Copy link
Collaborator Author

dexterleng commented Apr 16, 2021

With hold, mode activation if temporary. My hand needs to keep the activation key pressed.

What I meant by hold key activation is, you hold f to activate hint-mode. Once it is activated you can lift it off to type the hint-text. Its one finger that you hold for ~0.25 seconds.

Are our understandings of hold key activation similar or is there a disconnect?

I'm curious - what is your working solution look like?

@blackketter
Copy link

@blackketter @colossatr0n could you try out this solution?

https://apple.stackexchange.com/a/372208/348536

That fixed it. Thx. Also reauthorized in preferences for both Input Monitoring and Accessibility.

I'm able to use the hold F and A triggers. I feels slower than the modifier or sequence triggers.
Measuring it with "Is It Snappy?" (https://isitsnappy.com) it's about 500ms from F key down to hints on my MBP. By comparison, modifier or sequence triggers are120ms faster from the first key.

I also find myself pressing extra hard on the F or A key to trigger. Maybe I'd stop doing that after some practice.

I'll keep using it and see if it grows on me, but so far I'd prefer the original triggers.

This may be a matter of taste, and assuming it's not a big challenge, why not let the user choose any of these techniques?

@dexterleng
Copy link
Collaborator Author

dexterleng commented Apr 16, 2021

This may be a matter of taste, and assuming it's not a big challenge, why not let the user choose any of these techniques?

I don't plan on removing any activation mechanisms, although I would like to figure which one should be the default/main mechanism that gets marketed, taught to new users, and prioritized higher than the others.

@dexterleng
Copy link
Collaborator Author

I'm able to use the hold F and A triggers. I feels slower than the modifier or sequence triggers.
Measuring it with "Is It Snappy?" (https://isitsnappy.com) it's about 500ms from F key down to hints on my MBP. By comparison, modifier or sequence triggers are120ms faster from the first key.

I'd love to know if this will still bother you after using for a couple hours/days. I just built this feature a few hours ago, and so far I think although it is slower than key sequence or shortcut, the effort to activate is much lower and allows me to be more "lazy".

@blackketter
Copy link

I'd love to know if this will still bother you after using for a couple hours/days. I just built this feature a few hours ago, and so far I think although it is slower than key sequence or shortcut, the effort to activate is much lower and allows me to be more "lazy".

Will do.

Is there any way to adjust the hold wait time? It doesn't appear that the system keyboard Delay Until Repeat or the Vimac Reset Delay settings affect this.

@dexterleng
Copy link
Collaborator Author

Is there any way to adjust the hold wait time? It doesn't appear that the system keyboard Delay Until Repeat or the Vimac Reset Delay settings affect this.

Nope. I'll have to build it again. However, I have tried lower delays (0.1, 0.2) and found that it was activating while I was typing.

@colossatr0n
Copy link
Contributor

colossatr0n commented Apr 16, 2021

I'm experiencing typing delays which kind of make it unusable for me. Sometimes the typing delay is related to the "a" or "f" keys but sometimes it's not.

Here's a related key instance: if I type "ta", "t" gets ignored unless I type slower since "a" is an activation key.

Sometime though I'll be typing something like "ty" and one of the letters gets ignored.

When I quit this version of Vimac, I don't experience the typing delays any more.

My favorite activation method is still the key sequence activation. I've set them to ";f" for hints and ";s" for scrolling. There are still typing delays with using the key sequences option, but in this case I only get the delay when typing ";" which is doable since ";" isn't a character that you normally type in the middle of a sentence.

@blackketter
Copy link

blackketter commented Apr 17, 2021

Here's a related key instance: if I type "ta", "t" gets ignored unless I type slower since "a" is an activation key.

I'm seeing this too.

@blackketter
Copy link

Is there any way to adjust the hold wait time? It doesn't appear that the system keyboard Delay Until Repeat or the Vimac Reset Delay settings affect this.

Nope. I'll have to build it again. However, I have tried lower delays (0.1, 0.2) and found that it was activating while I was typing.

It makes sense to me to use the system keyRepeatDelay for this timing. It would provide a consistent interface for the timing associated with press and hold of a key.

@blackketter
Copy link

One other minor note: On US keyboards, at least, a is a poor choice because holding a should bring up a menu with diacritical characters. f is ok, as are b,d,g,h,j,k,m,p,q,r,t,v,w,x and 0-9. Punctuation keys repeat and probably should be left to do so.

@blackketter
Copy link

Ok, I had to switch back. I found the press and hold problematic for two reasons:

  1. It felt like I was being slowed down while waiting for the f key to trigger hints.
  2. I kept accidentally triggering scroll mode while typing.

@dexterleng dexterleng force-pushed the hold-key-activation branch from 81c2caa to e0b2129 Compare April 21, 2021 09:59
@dexterleng dexterleng force-pushed the hold-key-activation branch from e0b2129 to 2137460 Compare April 22, 2021 10:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants