Swap Caps Lock and Fn?

I recently bought a Framework Laptop 13 DIY (AMD Ryzen™ 7040) and installed Windows 11 Pro on it. I use the Fn key (primarily for home, end, pg up, pg down) much more than Caps Lock, so it’d be nice if I could swap their positions on the keyboard. I see the BIOS option to swap Fn and Ctrl, but that doesn’t get either of them into the Caps Lock key’s prime real estate.

Does anyone have pointers toward how to do this?

Hey, sorry for the necropost. I just wanted to ask if you ever figured this out yet? I am also trying to accomplish the same thing. I am currently just using Powertoys to rebound to “Ctrl”. There is unfortunately no way to bind it to “Fn” which is really disappointing.

I hope Framework can bring out a BIOS update to enable this. It would super increase my productivity! I know that for the Framework 16 there is VIA way to rebound stuff, but I’m not sure if it’s supported on the 13.

Welcome to the forum.
I believe there is a bios option to swap Fn and ctrl. But moving it to any arbitrary key is not an option. And the FWL13 does not yet have qmk (Via).

Is support for QMK on the roadmap for Framework 13? If so, is there an expected timeframe for it?

Framework has not announced plans, but they have said that they don’t until they are quite far along. Until something is nearly finished, guaranteed to be completed. So we can’t know if anything is in the research or development phases. This is because there is often a chance that something doesn’t work out, for one reason or another. Though, they might also just be assessing how the reliability of qmk is at this point with their FWL16. Or could have even decided it’s not yet where they want it to be for bringing it to other platforms.

I believe it should be possible for them to add qmk to the keyboard in a way that should be compatible with past Framework mainboards. It should even be an option for a hobbyist to make an add-on board to convert an existing FWL13 keyboard to qmk. Just need a little pcb design skills, or the interest in learning via youtube tutorials.

How would that work? The keyboard is attached to the ec in the 13 and you can’t just flash qmk on that as it mostly does other stuff than the keyboard. The current code running also allready uses most of the available memory.

Something relatively simple like swapping fn and ctrl could be done in the ex itself but getting qmk (or zmk since the ec at least on the amd ones is usying zephyr too) on there without screwing up the rest of it’s (quite essential) functionality sounds like a much bigger issue.

Hmm? It wouldn’t be trying to get qmk, zmk or anything else onto EC. They are only made to run on certain MCUs, so that’s likely a non-starter even if you could fit one in there.

I mentioned creating an add-on board. USB2.0 hub chip, RP2040, and connectors for the keyboard matrix cable, backlight cable, fingerprint reader cable in, and fingerprint cable out. The fingerprint reader has a USB line that you can use a hub chip to share. Not sure what the z height space is underneath the touchpad PCB, the hope is that there is enough room for a slim add-on PCB to be stuck there. Perhaps an ultrathin kapton/polyimide flex PCB if needed.

That would work, though the fingerprint reader connector is on the other side of the mainboard.

Also you may want to use a more power efficient platform than an rp2040, I recently converted an old thinkpad keyboard into an external one using zmk and an nrf chip which was pretty sweet (plus ultra low power bluetooth XD).

The fingerprint reader cable runs through the touchpad board, same as the keyboard matrix and backlight cable.

Fingerprint connector is the 10 pin one on the left. Keymatix is the 26 pin connector labeled “1”, backlight is the rightmost one labeled “2”.

Oh, I wasn’t planning to do it myself, I have no need. I was just mentioning that it should be possible for anyone interested.

Interesting, one of these days I am going to delete the fingerprint sensor and use the usb for something else, I just need to find something else to use it for XD. Being able to grabb it here may be more convenient.

Me neither, I also had a quick look in the ec and as the fn key is not part of the matrix swapping it there is going to be more involved than I hoped.

I had to do it on my thinkpad keyboard based external too (since I like using ctrl in the sane location XD) and zmk puts everything on a matrix to do stuff with even if the fn key in not actually on the matrix but has a separate pin.

It absolutely is. Position 2, 2 scancode 0x00FF.

If you have a version of ectool that supports the raw command, you can swap Caps and Fn until your next full reboot[1] with this script:

# Remap 4, 4 (Caps) to 0x00FF (Fn) and 2, 2 (Fn) to 0x003A (Caps)
$ ectool raw 0x3E0C d2,d1,b4,b4,w255,b2,b2,w58

  1. the EC will be reset ~30 seconds after you power the machine off on battery. It will forget all of your changes. ↩︎

1 Like

Fastest way to get information is posting something wrong XD.

Then I guess it should be pretty easy to do.