HACKER Q&A
📣 monroewalker

What's the best way to control a cursor from the keyboard on macOS?


I'd like to minimize my need for a mouse but there are some tasks which are just so much simpler with a cursor. I do have some mouse keys setup with Karabiner so that holding "k" and pressing esdf moves the cursor, but I've found this difficult to get used to. I have a few different keys to modify the speed, but it just feels way too convoluted and effortful to to control the cursor this way.

I've also tried warpd [1] but had some issues with it that turned me off to it.

Curious to know if anyone here has had success with something else

[1] https://github.com/rvaiya/warpd


  👤 xrayarx Accepted Answer ✓
The software warpd you mentioned is a modal driver to control the mouse. Why not just use the standard mac os keyboard shortcuts? See [1] for an overview.

Or maybe your are looking for a tiling window manager like amethyst [2]?

Maybe you would like to use a tool like hammerspoon[3]?

Caveat emptor, all these „productivity improvements“ are a rabbit hole and a continuing distraction.

[1] https://osxdaily.com/2007/12/13/navigating-mac-os-x-with-onl...

[2] https://github.com/ianyh/Amethyst

[3] http://www.hammerspoon.org/


👤 Someone
I guess you mean “mouse pointer”, not “cursor”? If so, there’s Mouse Keys (https://support.apple.com/en-gb/guide/mac-help/mh27469/mac), but that means giving up easy access to essential keyboard keys, especially on laptops. If you have a numerical keypad, that may not be that bad, but that’s for you to judge.

You can also use a camera and control the mouse pointer with your head (https://support.apple.com/en-gb/guide/mac-help/mchlb2d4782b/...). I don’t know how well that works.


👤 mikebos
https://wooshy.app works actually quite well, although a lot depends on the app. It's useless in Evernote for example.

👤 schwartzworld
I have a keyboard with QMK firmware and it's very easy to map the keys to control your mouse. Plus since it's on the keyboard firmware, the solution works on all platforms.