Is there a way to invert vertical mouse direction?


I’m looking for a way to invert the vertical mouse direction but can’t find it in the HUD or Preferences on OSX. Is this possible in HF?

Burton Samograd


Or even have a more traditional ‘Doom’ style focus follows mouse navigation with configurable keybindings for movement?


The first part is definitely possible, but you may have to jump down to the scripting level to configure that sort of thing right now (ie: using the Controller Mapping API).

Here is an example mod to try that inverts all pitch related keyboard/mouse/touchpad inputs:

(note: to run in Interface use Edit -> Running Scripts… -> Load: From URL)

Regarding traditional ‘Doom’ style mappings… do you mean something like


He probably means WASD controls with mouselook. instead of having to drag the mouse around.

Sorta like the original mouse look in SL, where you moved around in WASD/Arrowkeys, and moved the mouse to move the head.

Pressing/holding a button would toggle/release the mouse.

I’d say its doable, just needs a script to be made for it.


Something we asked for a year ago. holding button to look aron
und is still bad for the finger.


Yes, that Doom :slight_smile: Thank you for the example! I’m also curious about lowering the mouse sensitivity, if that’s possible.


Was it context specific (or just a long-press maybe?)?

… still not quite following how pressless mouse look saves fingers trouble overall… but here is a variation on the theme to try out:

Client script URL: kb-mouse-customizer.js#m=.5,healthyfingers=1

In that mode, mouse look is on except when any of the following are true:

  • SpanTurn is enabled
  • NavigationFocused is enabled
  • Shift key is down
  • MiddleMouseButton is pressed

(if those building blocks get close then there might be a way to emulate what I think you had in mind)

Glad to provide what insights I can – this is a rabbit hole I’ve been itching to dive down for a while now.

Based on your questions I started wondering whether how far simply being able to rescale axes would go. And it turns out I strongly prefer these scaling factors:

k=.5, ksy=.75, m=.125, m.x=.75, shift=.3

Which translate into:

  • make all keyboard “axes” 1/2 as sensitive
  • make keyboard+shift (y) axis another 1/4 less sensitive
  • make all mouse axes (including (z) – mouse wheel) 1/8th as sensitive
  • reduce mouse left-right (x) axis by another 1/4
  • and when I look with Right Mouse and press Shift, decrease all mouse axes by another ~2/3

Those are probably specific to me / my mouse / system settings. But in any event I set things up so parameters can be changed in the script URL in case others want to try different configs on for size too:

Client script URL: kb-mouse-customizer.js#k=.5,ksy=.75,m=.125,m.x=.75,shift=.3

An inverted config with lower sensitivities would look like this:

m.y=-1, t.y=-1, k.s.y=-.5, m=.125, t=.5

Client script URL: kb-mouse-customizer.js#m.y=-1,m.y=-1,k.s.y=-.5,m=.125,t=-.5

(I don’t have a touchpad so guessed at t support, but it should scale/invert like the rest)

  • loading kb-mouse-customizer.js without any ? or # in the URL puts it into a remedial dev mode that prompts you at each run with the last settings, so repeatedly restarting the script provides one way to iterate.
  • the generated controller mapping can be seen by adding dump=json
  • in theory stopping the Client script returns everything to normal… but in some cases I had to actually restart Interface to get a baseline state back.