A QMK configurable keyboard

Iā€™m guessing @Kieran_Levin is talking about this EC host command. Itā€™s not very ergonomic, and it has some limitations, but it does make it possible to perform limited key remapping.

One issue is that the function keys are permanently bound to their FN equivalents ā€” if you make any key emit F8, that key will also emit monitor brightness up when FN is off. Same thing if you rebind what the key labeled F8 does: it will lose the ability to control monitor brightness as well.

I have some ideas that would make it possible to fully control FN mapping from within the OS, but Iā€™m wary to commit to doing it because (1) support and (2) I donā€™t want to step on Kieranā€™s toes too much. Building too many things on top of the aforementioned document might make it hard for Framework to do new stuff.

1 Like

Finally a user did change the keyboard layout on the firmware level by using DHowettā€™s ec tool, and also changed the key caps too. Amazing!

3 Likes

I just found GergoPlex, the compact 36 keys keyboard layout, and the thin (low profile) key-switches and key-caps are repairable and customizable. (The vendorā€™s website is under maintenance right now.)

This is what I want to see for Framework Laptopā€™s keyboard in the future. I realized that a thin keyboard is possible with reparability by watching the video. The zip keycaps like ZSAā€™s one are also useful to reduce the keys by customization. Right now I am practicing with ZSAā€™s Moonlanderā€™s 36 keys keyboard layout.

3 Likes

So, in my spare time I have been working on exactlyĀ¹ thisĀ². Itā€™s been my daily driver for the past few months, and it seems to work great.

Iā€™ve got one really big question though:

What does ā€œQMK configurableā€ mean to you?

QMK is primarily a source code distribution, with hand-written and hand-tuned keyboard layouts developed in C. Consider nikchiā€™s frosty_flake customization, which is by no means unique in the qmk_firmware repository.

There are some graphical tools (open-source ones like config.qmk.fm and proprietary ones like ZSAā€™s Oryx), but each one of them produces a full flashable firmware image for your keyboard.

Since the keyboard on the Framework Laptop is controlled by the embedded controller, offering web-built full flash download seems very risky. The keyboard part of the firmware isnā€™t isolated and canā€™t be reflashed separately, so every time you change your keyboard layout youā€™re risking wearing out the flash or being left with an unbootable machineā€¦ and every keyboard layout change requires a full reboot of the laptop.

I have some thoughts (which Iā€™m happy to go into) about how to proceed but before I do Iā€™d love your take. What does it mean to you?

Ā¹ Itā€™s all in a branch of my fork of Frameworkā€™s EC code here, for those of you intrepid enough to try it.
Ā² It has also been pulled out into its own separate repository.
Ā³ The ā€œstockā€ keymap represented in my fork is here; note how it resembles a QMK keymap.c.

6 Likes

You are using a firmware-level customized keyboard layout by the QMK-like file. Cool project!

My expectations are

  • There is one default keymap file that is equivalent to the Frameworkā€™s ANSI layout on the qmk_firmware repository. I think we donā€™t need to manage user-level keymap files such as ā€œnikchiā€™s frosty_flake customizationā€ on the repository.
  • Users can create their own keymap file from the default keymap file by a tool such as ā€œconfig.qmk.fmā€ or other tools.
  • Users can flash ā€œaā€ firmware from their customized keymap by a tool.
  • Someone provides other keyboards (hardware or CAD file) with replaceable keyswitches and keycaps, and the keyboard layout like Moonlanderā€™s one. Then users can replace each key.

I see. Hmm. This is risky. But how did the framdeck, the Frameworkā€™s mainboard-based cyberdeck achieve the 36 keysā€™ keyboard layout? Seeing this issue ticket, QMK is used?

2 Likes

Thanks for the input! All noted.

I believe they connected an existing mechanical keyboard that was already running QMK over USB. :slight_smile:

2 Likes

I appreciate your work! I am looking forward to seeing it!

I see. That makes sense.

2 Likes

I just got one idea to use keyboard QMK on the Framework Laptop. Can you imagine? In this way, people can use the independent keyboard firmware.

  1. Use one of the 4 USB-C ports used for the expansion cards to connect the internal keyboard.
  2. One expansion card is to connect the internal USB-C with the internal keyboard inside the board. There is not interface to connect outside. So, the internal keyboard works like existing mechanical keyboard.
1 Like

Iā€™m not fond of the idea of losing one of the 4 usb ports just to have the keyboard attached.

1 Like

I can understand it. So, perhaps a better idea for the expansion card is IN: one internal USB-C port connects with the mainboardā€™s USB-C port, OUT: 2 USB-C ports (one connects with the internal keyboard, another is used as the external USB-C interface). The expansion card behaves like a USB hub.

1 Like

It seems that a fantastic thing happened. :star_struck: - Introducing the Framework Laptop 16 and both Intel and AMD-powered Framework Laptop 13

Weā€™ve also released open source firmware based on QMK keyboard software that runs on the Raspberry Pi RP2040 microcontroller that many of our Input Modules utilize.

With an open source design, we canā€™t wait to see the incredible modules that the community creates: jog wheels, sliders, touchscreen displays, e-ink notepads, smartcard readers, and more. Really, almost anything can be created into an Input Module. The only limit is your imagination, and the 3.7mm height constraints.

4 Likes

Just to confirm, that would be in the 16ā€ version only?

1 Like

I am not sure about it.

Here is the repository of the Input Modules. The Framework Laptop 16 is only mentioned there.

2 Likes

I believe this is correct, yes. The new generation of Framework Laptop 13 uses the same input covers as the previous two generations.

2 Likes

It does, but interestingly, the width and length of the large input module appears to be almost exactly the same as the Framework 13 keyboard. It may be that height would be a problem, but I wonder if a different input cover design would allow a large input module to be used on the Framework 13.


Update: I asked nrp about this, but unfortunately, while they thought about the possibility, it apparently doesnā€™t work well.

As the keyboards will be the same in terms of key structure, though, I wonder if more invasive solutions (a specific, different input cover for a specific keyboard) might work.

4 Likes

That is a shame. I think the 13ā€ model with programmable Atreus keyboard would be the ultimate portable writerā€™s notebook. The 16ā€ might be a bit overkill for my needs but hard to turn down if it offers ergonomic keyboard modules.

In the other hand Framework might decide to offer a revised 13ā€ chassis in a couple of years whilst taking the opportunity of bringing the best of what they learned designing the 16ā€ model back onto the smaller format. That would surely include the programmable keyboard modules.

2 Likes

Using the same software as the QMK firmware, the 16" keyboard should have an N-key rollover function. This means every key has a diode to prevent ghosting. a Different key matrix or circuit than the 13" keyboard and connector of key membrane sheet and main board are different.
Then, the 13" keyboard will not have QMK.

1 Like

hi, so have anything changed regarding qmk in 13"?

Welcome to the forum

I donā€™t think so. Havenā€™t seen Framework mention plans to add qmk to the 13". Itā€™s not something they can do in just software. If they did it, you would need a new input cover assembly. Since they would need to add a chip that supports qmk.

Iā€™d buy one if they made itā€¦ 100%.
Where can I upvote this requestā€¦
Also itā€™s gotta be ortholinearā€¦ Its about time we abandoned the typewriter style staggered key nonsense.
I love my 13 and use qmk and zmk on all my custom boardsā€¦ I end up doing this most of the time as my preffered board is wireless and split

2 Likes