A QMK configurable keyboard

So, I was wondering - what do you all think of a QMK configurable keyboard for the Framework laptop?

My keyboard of choice is an Ergodox EZ that I have customized to some rather incredible lengths( https://people.zsa.io/jenna-kenshin/ ). Particularly, I have become used to the concept of having my Ctrl, Alt, and Super(Win) keys being mapped to my f, d, and s keys, as well as my j, k, and l keys(tapping the key produces the letter, holding engages the modifier). Now, when I am typing on another computer, or when I remove my keyboard from my desk and try to type without my keyboard, I end up encountering a great deal of typing mistakes because I will try to press and hold the j key and reach for the w key to close a tab.

I’d like to be able to make that an option on my framework laptop. One of the worse things as an Emacs user is having to try to use a laptop keyboard to operate the program, as it is very dependent on the Ctrl and Alt keys. Furthermore, in my quest for a nearly mouse free life, I have come to rely on the super(Windows) key to do things like open applications, take screenshots, and move windows around. Most laptop keyboards only have one Super key. Additionally, and I can already hear the collective groan from nearly everyone, I hate dedicated arrow keys - they are so useless.

Is there any plan, or have you considered or thought of having a QMK firmware based keyboard for the Framework Laptop? If your interested, I’m thinking of something like the https://www.zsa.io/planck with an extra row or two of keys…

16 Likes

QMK configurable keyboard would be great. This may be something that someone could develop for the laptop as a third party keyboard.

1 Like

Without a doubt!

That said, I also think it would be good business sense for a company like this to make it a default feature since so much of the laptop is customizable. It would allow for a large number of keyboard layouts with very little extra effort required on the software side.

4 Likes

While QMK is really good (I’m typing this on a QMK powered board in fact), there are other options as well. There’s ZMK, and I’m aware of at least 2 other nearly as powerful options that have their own tradeoffs. Framework has mentioned that they’re working on a programmable firmware for the keyboard, although last I saw it was something that was ongoing. I would say maybe we should ask that whatever it is be open source and at least close to the capabilities of something like QMK, rather than trying to insist that it be specifically QMK. Whatever it ends up being, if it’s open source I’m sure it will quickly pick up lots of the features we’re used to having in QMK if it doesn’t at the beginning.

2 Likes

The keyboard firmware runs on the EC which is open source. And we have some low level hooks to remap keys in the firmware at the moment to support fn-ctrl swap, but can effectively remap any key.

It should not be too difficult to extend this to support a layer modifier key to support multiple layers.

7 Likes

I’m not insistent on anything specifically. I just said QMK because it is the only one that I am aware of that allows for the level of configurability that I am asking for. I am a huge fan of anything open-source that is comparatively feature-rich.

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.

1 Like

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.

1 Like

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)

1 Like

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

1 Like

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!

@Mansour_Behabadi 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.

3 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?

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!

1 Like

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.

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.

1 Like

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.

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.

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!

1 Like