Recently I purchased a Microsoft Surface Laptop 4 to replace my aging MacBook Pro.  The Surface is a great machine: excellent keyboard and trackpad, beautiful display. It's slim, lightweight, powerful, just enough storage and has good battery life.

But what a pity that all of that is ruined by one stupid design decision - the behaviour of the Fn key is completely intolerable and drives me to distraction.

The Fn Key

The Surface Laptop 4's Fn key is both a toggle (like capslock) and a modifier (like shift):

  • If you press and release the Fn key without pressing another key it toggles - the light toggles on/off and the behaviour of the F1-F12 keys inverts.  However...
  • If you press and hold the Fn key while using the arrow keys, it makes them work as Page Up/Down and Home/End.

Now that seems like a clever design decision to get double use out of a single key but in real-world use it makes for a terrible experience.

Developers and Keyboards

I'm a software developer and make heavy use of the keyboard.  In particular I'm constantly using the Fn+arrow keys to navigate around in code. I also make heavy use of the F1-F12 keys for building, debugging, browsing etc...

And here's where the problem starts. If you're constantly using the Fn+arrows for navigation it's incredibly easy to press/release the Fn key without another key and all of a sudden the behaviour of all the function keys has flipped.

It seems like such a minor thing but it completely kills productivity. Instead of being able to focus on what you're working on you end up constantly distracted by the keyboard not behaving as you expect it to.

In other words, the behaviour of the F1-F12 keys becomes random coin flip.

  • Press F3 and it might jump to the next search match or it might increase the volume.
  • Press F7 to start a build, but no the screen gets brighter.
  • Press F8 to step in the debugger, nope that takes a screen shot.
  • Press F10 to step-over in the debugger, why didn't it step? And why did the cursor move to the end of the line?
  • Press F12 to browse to a symbol definition - that doesn't look right.  Oh, that's because it did a page down instead. OMG!

But it gets worse. Once you've been tricked by the Fn key trap, you can't just toggle it and try again.  No, you also need to undo what you just did, re-adjust the volume or screen brightness or navigate back to where you were, then you can toggle the Fn key and then you can try again - by which time you've probably forgotten what you were trying to do in the first place (mostly due to the rising rising frustration levels).

Argh!  I hate you Fn key!

This is not a Muscle Memory Issue

At first I thought this might be just a muscle memory issue.  I mean I get it, moving between Mac and PC is always painful when it comes to Ctrl, Alt and Options/Windows keys.  But I've been through that multiple times and you learn and adapt reasonably quickly.

But this isn't like that.  Muscle memory isn't going to learn that if you press the Fn key you absolutely must press another key to avoid toggling the function keys.

And it's easy to do: you press the Fn key in anticipation of pressing an arrow and there's no going back - you have to press another key to avoid the toggle. It's nuts.

This is Worse than the Stupid Power Button

The Surface Laptop 4 has another annoying keyboard antic - accidentally bump the power button and the machine will go to sleep.  

Conveniently (not) the power button is exactly where the F12 key is on my MacBook so I've accidentally hit it multiple times already. But muscle memory will kick in eventually and this will become less of an issue over time.  Also the machine wakes quickly and face recognition for login means I can back pretty quickly.

(That said, why not make it a long press on the power button to put the machine to sleep? Who needs to be able to sleep their machine at the touch of button - especially when you can just close the lid?)

But think about that... accidentally putting the machine to sleep is less annoying and easier to deal with than randomly toggling the function keys.

One Possible Saving Grace

The only possible saving grace here is that at the moment, I might be accidentally hitting the Fn key more often than I will be once I adjust to its different position.  

The Fn and Ctrl keys on the Surface are swapped compared to the MacBook and I'm still adjusting to that.  Eventually, as I get used to it, this issue should become less frequent but it certainly won't go away completely.

There Is No Fix

Now you'd think there'd be some work around for this right?

Well if you search you'll find suggestions like pressing Fn+CapsLock or pressing and holding Fn for 10 seconds.  Oh how I wish these ideas worked - they might on some Surface models, but they absolutely do not work on a Surface Laptop 4.  

(Microsoft Support: stop suggesting these ideas - they don't work, you should know that)

There is no firmware setting for this.

What's worse, the Fn key appears to be completely implemented in firmware. Windows doesn't see the Fn key presses so this can't be worked around in software.  No amount of key intercepting or key remapping can fix this.

So until Microsoft decide to fix this (presumably with a firmware update, assuming they decide to and that it's even possible) this is a problem that anyone with a Surface Laptop 4 is stuck with.

Please, please, please Microsoft...

Microsoft you have an excellent machine here but:

I hate, hate, hate that stupid f***ing Fn key.

Please fix it.

(And while you're at it, long press for the power button and Fn+Backspace for delete would be the icing on the cake).