Pointing device functions

I was just thinking this morning about how I might want to use the mouse emulation, and I came up with a few ideas.

First, I’ll try the quadrant-warping that’s already in there, but I’m skeptical about wanting that precise behaviour. For one thing, I want separate mouse cursor and navigation layers, partly so that I can control the mouse right-handed (as well as having arrow keys there). That got me thinking of the idea of using modifier keys to make the arrow keys do the warping behaviour when (for example) shift is applied. That doesn’t work that well with the NE/NW/SE/SW warping, though, so I thought it might work to move the pointer straight up/down and left/right instead, using the same kind of algorithm (Zeno’s Mouse, perhaps?).

Starting from center, Shift + Right puts the mouse in the middle of the right half of the screen. Then (still holding Shift), Up divides the remaining screen in two, putting the mouse in the middle of the top half of that, and so on. It’s slower than the quadrant warping, but might be more intuitive for some people, and allows moving the pointer in straight lines along the screen axes. It could even be implemented such that the first press of Left or Right in this mode leave the vertical position the same, and moves the pointer to the centerline only on the horizontal. I know there are plenty of times when I’ve wanted to move the mouse on only one axis, which is very difficult to do with a mouse. Other modifiers could be used for things like jumps of constant distance; perhaps one does 10% of the screen per tap, another does 5% (or whatever numbers work well in practice).

My other idea is to extend the capabilities of the mouse button keys. It might be very convenient to tap a key once for “mouse button down”, and a second time for “mouse button up”, in order to do drag operations with the keyboard alone. Again, modifier keys might be useful for this.