4

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.

fixer1234
  • 28,064

3 Answers3

4

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.

fencepost
  • 1,106
1

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)

0

(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.

jrw32982
  • 164
  • 5