keyboardio / Kaleidoscope

Firmware for Keyboardio keyboards and other keyboards with AVR or ARM MCUs.
http://keyboard.io
GNU General Public License v3.0
759 stars 258 forks source link

MouseKeys Warping Changes #1297

Open jonmcclung opened 1 year ago

jonmcclung commented 1 year ago

Is your feature request related to a problem? Please describe. I recently started using the warping feature on my Keyboardio Model 100 and I think it is a good feature. I especially like how you can easily binary search to the point you want. A problem occurs when you misjudge the correct direction, however. Most commonly this is when the target is near the center of the screen vertically. I end up getting very close but I can tell I'm on the wrong half of the screen and I need to switch to the mouse move keys. It would be ideal to be able to always be able to use the warping keys only

Describe the solution you'd like There are two possible solutions as far as I can see.

  1. After warping 7 times each subsequent warp would travel the same distance as the 7th warp (or perhaps the 8th). Normally you can get pretty close and so being able to nudge it just a little bit closer would help.
  2. An extra key that would allow you to expand the area the warping considers. For example, say you warp NE, SW, NE. Without resetting, your cursor will only be able to explore 1/64 of the screen in a rectangle around the cursor. By hitting this additional key it would expand that area to 1/16, doubling the distance your next warp will carry you. You could also have a key that does the reverse, something like a warp zoom in and warp zoom out. There are times when you are very close to the target but you still need four more key presses because of how early in the warping you are.

Describe alternatives you've considered The alternative is clearly to switch to the mouse move keys, and that has been my strategy for now, or to simply restart the warp since I'm still getting the hang of it.

gedankenexperimenter commented 1 year ago

Playing devil's advocate here:

  1. If the user wants to very finely position the cursor by warping, this would prevent reaching the target pixel(s), necessitating a shift to another mouse cursor positioning method.

Not playing devil's advocate:

  1. A key that means "undo one mouse warp step" definitely strikes me as useful, and I don't think it's too hard to implement.