I'd like to be able to hit a hot key, and enter a mouse movement mode where I can move the mouse pointer around the screen using VIM keystrokes - regardless of the app I'm in (ie globally for all apps)

For example, just say my mouse mode key was SHIFT+COMMAND+M

  • I hit SHIFT+COMMAND+M to enter mouse mode
  • I use h,j,k,l to move the cursor around the screen, and possibly some other keys to jump from monitor to monitor
  • I hit the enter key to click, and leave mouse mode, or hit esc to exit mouse mode.

Are there any apps out there that would let me do this? I'm aware of "Mouse Keys", but I really want to be able to customize:

  • the keys I use to move around
  • the amount of movement that's done by the mouse when a key is pressed.
  • See OS X Mountain Lion: Control the pointer using Mouse Keys which also works in Mavericks. This is not like Vim but same.
    – Oleg
    Jul 16, 2014 at 13:11
  • It doesn't fulfill the customization requirements listed in the questions though.
    – nohillside
    Jul 16, 2014 at 13:18
  • Thanks for the feedback - I was already aware of "Mouse Keys" but that doesn't work for me as I really want to customize the keys that are used to match VIM.
    – Brad Parks
    Jul 16, 2014 at 14:18

3 Answers 3


A tool that might just help you is Cliclick. With it, you can read the mouse position using the p:. command, move the mouse using the m:x,y command, and click using the c:. command.

This is a bit of a hack, really, but regarding the multi-monitor support, you can use Slate, where you can programmatically call Cliclick with the coordinates of the mouse in a different monitor. I'm sure there are other alternatives, though. I also used Slate to bind the other first calls to Cliclick.

The "mouse mode" is a bit tougher. In Slate you can create "modal hotkeys" pressing two hotkeys in succession (like ^W in Vim), but no support for whole modes. You could, however, dynamically edit the .slate.js binding file to contain "normal mode" or "mouse mode" bindings each time you change the mode.

I did something similar yesterday, so hope this helps. :)


I found an app that does this!


EDIT: but I find I still end up using my homegrown grid solution based on Hammerspoon which uses lua, and allows for lots of customization, to allow for my particular tastes :D


I use the nifty app: Karabiner: https://pqrs.org/osx/karabiner/

It's useful for major keyboard remapping, and there are packaged config options for using the keyboard to move the mouse, click, and even scrolling!

  • Sadly got discontinued and the successor karabiner elements isn't nearly as powerful.
    – atripes
    Aug 31, 2017 at 11:42

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .