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

[Feature Request] Iterative quadrant-based mouse pointing #24760

Open
2 of 4 tasks
windo opened this issue Dec 29, 2024 · 3 comments
Open
2 of 4 tasks

[Feature Request] Iterative quadrant-based mouse pointing #24760

windo opened this issue Dec 29, 2024 · 3 comments

Comments

@windo
Copy link

windo commented Dec 29, 2024

Feature Request Type

  • Core functionality
  • Add-on hardware support (eg. audio, RGB, OLED screen, etc.)
  • Alteration (enhancement/optimization) of existing feature(s)
  • New behavior

Description

I've never enjoyed mousekeys, even with accelerations (although now that I think of it, I don't think I've really given it a very serious attempt). As a vim user, it's irritating to have to hold down keys for various amounts of time to point at things. But sometimes (even with all the vim browser extensions etc) you still need to do it.

Anyway, I came up with an idea (or maybe remembered it, if it's been tried before) to come up with an addressing scheme for the entire screen, so that you could learn muscle memory for pointing at any position on screen with some small number of keystokes (I went for 3-4 ish).

With the digitizer support in QMK, I can move the pointer to absolute positions, and I went with the basic premise of dividing the screen into quadrants (actually one per 8 directions, so octrants?) and have the pointer jump from the center of the screen to one of those quadrants with one key press. But at the same time, reduce the scale of the movement to be restricted within the quadrant, so that the next keypress would further move towards the intended destination.

So for example, pressing w (for up) just once would get you to 2/3 way from the center of the screen towards the upper edge, and pressing 3 times would take you all the way. But you could also press w-s (up-down) to land a bit past 1/3 of the screen.

I have a visual aid for how to get to various points on the screen with wasd (directions ) + qezc (diagonals):

https://p6drad-teel.net/~siim/navigation/motions.png

The cursor update rules I went with are these:

https://github.com/windo/qmk_userspace/blob/main/keyboards/ergodox_ez/keymaps/windo/quadrant.c#L25

And I have a wonky in-browser implementation where I was trying this out first, that you can poke at if this sounds interesting at all:

https://p6drad-teel.net/~siim/navigation/

I've done a bit of pointing with it for a few days and I don't especially despise it so far (eg: I manged to use gimp with keyboard only to crop that screenshot of motions). Does something like this sound like it might be a useful alternative for mousekeys?

@Kriechi
Copy link
Contributor

Kriechi commented Dec 29, 2024

Reminds me about this macOS application: mouseless:
https://mouseless.click/
https://youtu.be/J0rwQVNQkHM

@windo
Copy link
Author

windo commented Dec 29, 2024

Oh nice, he looks super fast in using that grid. That visual overlay seems very helpful for learning, but I reckon after some deliberate practice you don't really need to see the grid any more.

@raymon-roos
Copy link

I have used warpd for this in the past, which does something similar. It would be cool to accomplish this through QMK.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants