A QMK configurable keyboard

I’m glad it is open-source, and I love the idea that it would support some elaborate work with remapping and special functions. I don’t like the position of the Fn key or the Ctrl on any keyboard, though. I have Ctrl, Alt, and Win on the home row, for each hand, and that is where I love them. On my current keyboard, that I use at my desk, I almost never reach below the Shift keys with any finger other than my thumb.

2 Likes

I also use home row mods and hopefully the firmware that framework comes up with will support the kind of tap/hold functionality you need to support that and not just a simple layer system. It would also be nice if it could support layer enable/disable in addition to the more common temporary toggle while a button is held, as I usually include a layer to swap between workman and qwerty (if someone else wants to use the computer, or occasionally for games/apps that don’t support customizable key binding), as well as one to toggle home row mods off since that occasionally causes problems in some applications.

2 Likes

Thank you for teaching me something new. I was not aware that “home row mods” was a thing. It does seem pretty clear that I do not use them the same way that most other people do, though. Mine are layed out as
Index - Ctrl
Middle- Alt
Ring - Super(Win)

2 Likes

Super-neat. I never knew I needed this. I’m going to try interception / linux / plugins / Dual Function Keys · GitLab in the meantime.

2 Likes

Oh man, you read my mind. Going through these forums, I’m getting ever more excited. You usually find limitations when you dig deep — I’m finding more and more features the more I learn about Framework. Well done!

1 Like

@oxplot Fn-ctrl swap is implemented in the bios release shipping with the laptop. So you can configure it in the advanced settings menu.
Low level hooks allow remapping of any key at the moment, but we need to expose a better interface for controlling it.

6 Likes

I understand that QMK is essentially about converting key presses into USB codes. This is less than optimal in some respects because - as I discovered when trying to make my keyboard do various things - USB keyboards only input a fairly basic set of key codes. Things such as Unicode characters, or making the shifted characters different from normal involve workarounds. I eventually gave up and made use off the standard key codes.

Does the Framework involve some sort of internal USB interface between the keyboard and the motherboard, or can it be made to input Unicode directly?

1 Like

I’m late to this party but I have a Moonlander (which is QMK based), a Planck EZ (also QMK based), and a UHK (not QMK based, but open nonetheless).

One of the things I like about them is setting up key combos to trigger power activites. (sleep, hibernate, etc.)

It would be great if we could eventually get some mapping software that would allow the creation of such hotkeys.

No rush though, I love the keyboard on this thing!

2 Likes

Unicode characters cannot just be passed to the OS, as far as I recall. Every OS has different input software for Unicode characters, so even if you could encode the Unicode characters on the keyboard itself, it wouldn’t likely be cross-platform unless you did some silly hack. Furthermore, different OSes implement different portions of the Unicode specification at different times, making it remarkably complicated for the keyboard to keep up with each OS’s updates.At the moment, you can actually set up a QMK keyboard to allow entry of Unicode characters by using the appropriate keycode for your OS along with unicode character number.

1 Like

I am also looking forward to seeing the firmware level key mapping like QMK for the Framework laptop default keyboard. It fits Framework’s philosophy. Seeing the Input Cover Kit - Blank ANSI/ISO on the Marketplace, the blank input cover will be useful for this feature in the future.

2 Likes

Is there any interface exposed currently for remapping? There are some quick modifications I’d like to make, like remapping the AirplaneMode key to something else, that I could try to pull off and document, assuming it’s possible for end-users.

1 Like

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