Similar questions have been asked before and the easy fix was to just update the BIOS and use an option in it for swapping the keys.

However, even with the most recent BIOS update from Lenovo, there is no such option in BIOS. Is there any way to swap the Fn and Ctrl keys at BIOS level?

I found some sort of patch in the article FN-CTRL swap on all Lenovo laptops, but it only seems to work on Windows.

Any ideas would be more than welcome.

  • 1
    Unfortunately I own an x200 which doesn't seem to fall under the normal Lenovo patch for swapping the Fn and Ctrl keys. Jan 19, 2015 at 22:40
  • 1
    Which operating system?
    – harrymc
    Feb 3, 2015 at 20:58
  • 1
    @harrymc Ubuntu Trusty Tahr Feb 3, 2015 at 22:08
  • 1
    What is the date and version of the BIOS you installed?
    – harrymc
    Feb 4, 2015 at 7:09
  • It is the latest version available for my model: support.lenovo.com/us/en/downloads/ds015007 Feb 4, 2015 at 11:45

3 Answers 3


Lenovo didn't release a BIOS update for the x00 series laptops to swap those buttons, it was apparently introduced with the x10 series models.

There are unofficial BIOSes available from http://forum.notebookreview.com/threads/fn-ctrl-swap-on-all-lenovo-laptops-solved.474396/ created by a user who apparently did enough disassembly to locate the relevant areas and change settings within the BIOS files themselves. These are unofficial and unsupported, but are also your best bet for getting this functionality on a by-now 5+ year old laptop.

I applied one of these on a W500 I had around earlier today, and after following the instructions in the post for using a batch file that includes a /s option this does appear to work for at least my limited case of 1. Just doing the initial flash wasn't enough.

  • 1
    Can you install the patch without using Windows? Or to be more precise, using Ubuntu? Feb 5, 2015 at 8:34
  • Not sure. Looking into the patch files, it's based on an older BIOS (3.14, current is 3.22, changes appear targeted to specific problems). Bootable CDs for 3.22 patching at support.lenovo.com/us/en/downloads/ds015007 . You might be able to replace files in the ISO, but I'm wary combined with the version change. Page 22 of the linked discussion has a link to ISO patching instructions. Note that X200 has 2 different firmware options (6Dx & 7Xx). You might also be able to run from WinPE (XP-based bootable CD, e.g. BartPE). Also, avoid ECP 1.07, breaks this, 1.06 download in table on page.
    – fencepost
    Feb 5, 2015 at 15:19
  • I'm also open to a solution based on kbd Feb 5, 2015 at 19:20

After hours of research and sweaty yet exciting work I've been able to do it via grub, what I did was the following:

  • get the official BIOS Bootable CD Image from here. version 3.14 with ECP 1.06 is needed precisely because it's the official image that middleton did the FN-CTRL swap mod on.

  • get middleton's modded BIOS Utility (the one with FN-CTRL swapped) from here, the problem here is that middleton modded BIOS is extracted and cannot be booted into nor installed in linux.

  • now here's the tricky part, I've found a way to migrate middleton's firmware files into the official ISO image at Cristian Adam's blog (and credits goes to Cristian), simply by compiling his breplace.cpp code and using it to replace the firmware files $01B9000.FL2 and $01B9100.FL2 in the official image with ones provided by middleton.

  • finally, boot into the modified image using grub, info about this process provided here and.. that's it you have it!

the latest version 3.22 of the BIOS can be upgraded afterwards (with the same process used in the last step), get the official ISO image but to keep the FN-CTRL swapped you need to use the image with the same ECP version 1.06 (the version 1.07 rolls back the swap)


(Not enough reputation to add a comment)

Note that even if your BIOS supports swapping Fn and Ctrl, you may need a BIOS update to get proper functioning of certain ctrl key combinations. Per http://earthwithsun.com/questions/814975/lenovo-laptop-fn-ctrl-swap:

I have set up Ubuntu 14.04 on a new Lenovo E540 and choose the BIOS option to swap the Fn and Ctrl keys. This works well but there are some quirks.

It appears Lenovo has introduced some extra keyboard shortcuts at BIOS level in v2.13, such as Fn+S, Fn+B and Fn+P. Now with the Ctrl and Fn buttons switched in BIOS, the shortcuts are still triggered when pressing the physical Fn key (Ctrl key in software). This means pressing Ctrl+S is intercepted and interpreted as Fn+S by the BIOS, and my code isn't saved.

BIOS version 2.16 (10/30/2014) fixed this issue finally :)

I just encountered this myself and spent about 4 hours trying to figure out how to fix Ctrl-S to work properly after swapping Ctrl and Fn, not being willing to go back to accepting the (very) unfortunate placement of the control key on Thinkpads. Thankfully, I found the earthwithsun entry and realized that I needed a BIOS update.

You must log in to answer this question.

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