DIY Staggered Columnar Laptop Keyboard (Semi Ortholinear) [Prototype]

Greetings.

After realizing the sub-optimality of conventional keyboard layouts around 3 years ago, I became kind of a die-hard for ergonomic keyboards.
Laptops unfortunately do not leave much choice when it comes to keyboard layouts and customization, so I have been reluctant to purchase any recent laptop products, despite losing my main laptop four years ago, using a university loaner instead.

One of the key factors that made me go for a FW laptop was the openness of the system, especially around the parts and components, which at least gave me a glimmer of hope that there could be something done to fit the keyboard to my personal preferences, namely a columnar staggered key layout, with thumb clusters.

Hence this project of DIYing such a keyboard, albeit only a prototype for now:

From this post, the main challenge is the height of the keyboard being 3.8mm, which leave virtually no room for mechanical key switches, ubiquitous for DIY mechanical keyboards.
There might be some hope with the Cherry MX Ultra Low Profile, but it does not seem commercially available as of now which can now be ordered here. Getting some samples to experiment with.
The lowest profile keyboard switch I could put my hands on was these [Khail PG switches], but the height from the key cap top to the legs is already 6.5 mm.

The only possibility I could think of was to re-purpose the laptop’s keyboard itself, manually re-arranging the layout somehow. Unfortunately, since I now daily drive my FW for work, I could not directly experiment with the input cover and keyboard.

Instead, I went for the cheapest and thinnest external keyboard I could find, to get some thin enough switch samples to experiment with, as well as understand how the membrane-based keyboard matrices work, with the ultimate aim of reproducing it.

The first step was to check if it was possible to design a base receptacle for the key switches.
Measurements of the reference receptacle and the key switches “legs”, and some CAD prototyping resulted in a 3D-printed based receptacles that allow the switches to be placed and used on the reference keyboard.

Unfortunately, although the key switches from the Artek keyboard are relatively thin, there are still a bit too thick to be directly integrated into the FW anyway, so I have only made the right half of the keyboard to save up some time and 3D printing material.

That half was then used to prototype a keyboard matrix that would be compatible with the membrane key switches.
The matrix itself was designed using a thin, double-sided copper tape, laid onto 6 columns and 5 rows to handle the 4 * 6 + 5 = 29 for the desired layout.

For testing the usability of a keyboard, the columns and rows are connected to an Elite C to run QMK, which I am more familiar with to design and flash custom firmware.

This prototype is just a half size, and there are a lot of jumper cables sticking around, but the final product will still be clean and thin enough to match the 3.8 mm limit of the FW keyboard.

To sum it all up, this half prototype was to sanity check two points:

  1. check the feasibility of printing small receptacles for laptop keyboard scissor switches.
  2. check that the DIY copper tape matrix can be used as a functional keyboard, testing with Elite C.

The future road map would be as follows:

  • Save up enough to order a spare input cover and keyboard from the marketplace, so that I can keep using the laptop while working on the final version. EDIT The amazing Framework Team has provided two input covers for experimentation. Currently disassembling the keyboard and studying its part to hopefully come up with an alternative that matches the desiderata in this post.
    Similarly to how this prototype was made, the keyboard will be disassembled and re-arranged into the desired layout.
    The grid of the top cover will be cut, and probably replaced with a 3D-printed top cover grid that matches the custom layout.
    A few challenges on this part:

    • The keyboard assembly itself is screwed into the top input cover, so there will probably be a need to add support for some screw holes into the 3D printed receptacle platform and top grid.
    • There might be some overlooked details regarding the shape of the keyboard assembly and how it fits into the whole laptop, but I hope to flesh that out once I can go deeper into the spare input cover.
  • Further fleshed out the 3D printed case receptacle, or maybe look into something even more reliable, like a custom-cut aluminum frame.

  • Further improve the copper tape-based matrix, as the one designed for the prototype ended up becoming quite fragile and unreliable after some use. Alternatively, find a way to combine the rubber switches of the original FW keyboard, and some very thin PCB. The latter would allow easier setup of diodes.

  • Investigate the potential problems of key ghosting and other matrix based (no diodes) problems: either a thin enough PCB that will still allow diodes, or manually installing diodes on the copper tape ? Or any other software solution ?

  • Regarding the interface between the custom matrix and the FW main board / EC: the original idea was to use an Elite C loaded with QMK firmware because of the latter’s ease of use, a plethora of features, and customization. The Elite C would be internally connected to the motherboard. For example, through one of the recessed USB C where the expansion cards are plugged in. As a workaround to losing one USB C port, there was also the possibility of having the USB C expansion card that is essentially required for charging be upgraded to something like this double USB C card, but with one of the port being internal. However, it looked quite difficult to implement.

    • Instead, the idea is to use an FPC adapter and a flex cable just as the default FW keyboard to connect it directly to the main board / EC, and re-write the EC’s keyboard code to match the custom design. This would be the cleanest method. No expansion slot loss, and close to factory integration.

    • The final challenge would be to design a custom firmware for such a keyboard, that can be persistently flashed onto the FW’s EC.
      Although I only had a cursory glance at the source code, it should be done once I get familiar enough with the current implementation. Hopefully, I can make it handle more than just the default FN layer though.
      I expect to need at least three (QMK-like) layers, but not sure if this can be supported by the EC. Fingers crossed on that. The physical layout has the keys for it, but I am not sure about the firmware side yet. Having some high hopes about @DHowett’s QMK-like keyboard overdrive implementation. Would greatly appreciate any recommendation or guidance on this aspect.

In the meantime, posting this here to get some feedback on the feasibility (especially the firmware side), or maybe some points I have not considered.

Will be posting the next updates, hopefully soon.

60 Likes

Improved foiled based layering and 3D printed receptacles for the keys:

This time, a video demonstration of typing with the custom matrix:

Still requires some adjustments to the membrane button and mounting the key cap so that it can be used as a real keyboard.

7 Likes

This project is cool. I am looking forward to customizable keyboard layout. I am also a fan of the ortholinear and less keys keyboard layout.

For the firmware things, I am not familiar with it. Here is another project around the input device and the firmware.

As you may know, here is the QMK main thread.

4 Likes

@junaruga Thanks a lot for the feedback and links.
I kind of through all of the post that mention keyboard in this forum I think :sweat_smile:

The QMK post was part of the motivation to use an Elite C with the flashed QMK firmware and connect it internally somehow, but as you mentioned, losing one USB C expansion is a non-negligible cost on the FW which only has 4 already.

Arya’s input controller is orthogonal to this work, but I was thinking of contacting them or DHowet for some pointers regarding the firmware, once I have made sure that I can use that FFC cable to connect the custom keyboard matrix.

Fingers crossed, in any case.

2 Likes

Yep, the input cover controller is indeed orthogonal! There, I’m reusing the original matrix, and I’ll possibly be doing QMK too.

Now, I’ve done a thing that could interest you: Input connector shim - for power switch, USB 2.0 and LEDs if you need an internal USB port, at the expense of losing the fingerprint sensor (which can then be re-added using an internal USB hub). I’m also looking at tapping the USB port at the E-key M.2 slot - which is not utilized if you’re using an AX201 WiFi card (as opposed to AX210), but that project’s physical aspects are yet to be developed.

If you’d like to have raw connections to the original matrix, without Elite C, I can do that too! I’ve started doing an adapter for that, taking the input cover connector and breaking its connections out, but haven’t had a reason to finish this project yet - if you’re interested, I can revisit it for my next PCB order, to be completed in a month-two. Then, an EC firmware mod will indeed be required, unless you’d like to repeat the original wiring (you’ve likely seen it here already). There’s 8 rows and 16 columns, as you might’ve seen, and my intention is to break all of these out into a hand-wiring-friendly form-factor.

If you plan to reuse the keyboard FPC, you could also make an adapter for the original keyboard connector and leave it at that: Reusing Keyboard after Replacement - #8 by DHowett If you’re interested, I could make an adapter for this, but an online-store-bought FPC breakout should work too if you can find a suitable one.

2 Likes

Hello there. Thanks a lot for reaching out.
I happen to also have been inspired by that project of yours.

Now that you mention it, using the USB connection from the fingerprint sensor could also work.
Personally I don’t use fingerprints, but when I was looking under the hood of the FW it seemed tied to the power button, which is kind of important when using it as a laptop.

It would be interesting to have maybe a small breakout board where the FFC of the finger print sensor can be plugged it, with an additional USB C to connect the Elite C internally. Then another FFC in the same format as that of the finger print sensor going into the input cover.
Not sure how to fit it in a thin enough form factor inside the laptop though :sweat_smile:

While it was a tempting idea at first, because of the reduced number of key on the custom keyboard, physical constraints when wiring the matrix with the copper tape, as well as other ergonomics concerns, re-using the original matrix would be counterproductive I think. Especially because I want to use 3 QMK-like layers, something that is probably not supported by the default EC anyway.
So custom matrix + custom firmware seems unavoidable.

With all the considerations above (hard for me to hijack finger print sensor, original matrix not really re-usable, and requirement for keyboard firmware mod anyway), this is my current plan.
I have actually managed to find a compatible FPC and FFC, so I will be doing some preliminary tests with a simple matrix connect to the touchpad / mainboard to sanity check the setup, then get some firmware mod going on based on that.

The whole matrix for this project will have 12 columns and either 5 or 10 rows (the later is more convenient to wire), so I was essentially thinking of using something like DHowet’s Keyboard Overdive, but with adjustments to the row and column numbers, and remapping the key codes to the desired keys.

Thanks again for your suggestions.
I will be keeping track of your experiments with the input cover, as further reference and inspiration for this project.

2 Likes

Kudos, gentlemen. Awesome work and the kind of community-driven hacking that FW enables that give it so much potential. Best of luck!

2 Likes

Just an aside, but I randomly wrote the Cherry to request access to some Cherry MX Ultra Low Profile for some experimentation.
Apparently they will become available

You can buy Cherry MX keyswitches via Online Shop “reichelt elektronik”.
Please see the following link:
Keyboard switches at reichelt elektronik
The requested Cherry MX Ultra Low Profile switch should be available there within the next few weeks.
For further questions, please just reply to this email without changing the subject line.

Hopefully acquiring some does not entail bankruptcy :sweat_smile:
Fingers crossed.

Updated on 2022-11-01: Indeed became available here

2 Likes

hey @dosssman
just wanted to say this project is extremely awesome! I am curious if Framework team would be interested in any way

3 Likes

Hello there.
Thanks for the kind words.
Not sure how much interest there will be from Framework when it comes to making this kind of keyboard available to purchase themselves, as it is still a very niche choice.
They have however provided me with an input cover and keyboard that I can use for experimentation, which is of great help.
Current working on disassembling the keyboard and re-arranging it into the desired layout.

I will hopefully update soon, assuming life does not get into the way.

Best regards.

3 Likes

Given my recent troubles with the wrist, I have been looking at various options that can fit into the laptop itself. I unfortunately don’t have the luxury of switching to a good keyboard as I don’t have the physical space for it in my work area and am on the move most of the time.

I am eagerly looking forward to how this turns out and would love to buy one from you, even if it is experimental. :slight_smile:

3 Likes

I LOVE what you are doing! I use an Iris as my daily driver, and I really struggle with any Laptop keyboard as a result

I have a few questions

  1. Have you considered also replacing the input cover? (To give yourself more working room?)
  2. Have you thought about just getting rid of the touchpad entirely? (Some of us just will always use a regular mouse)
  3. Would you consider making to order and selling these?
  4. Would selling your controller with loaded firmware be a possibility?
2 Likes

@Kevin_Palmer
Greetings.

Thank you very much for your interest. I can relate to the pain of using a conventional keyboard after experiencing the bliss of the split ergo ways. It Especially when it comes to the thumb cluster which has Delete and Enter mapped on my daily driver (Charybdis). Reaching those keys with the pinky is one of the most nonsensical things for me when it come to keyboard layout.

Here were my insights regarding your questions:

Briefly. After deeper inspection, the input cover holds a lot of other thins than the keyboard, such as the power button, the touchpad, screw inserts and magnets to hold the bottom part of the laptop all together.
This is something that would be very costly in labor and material experimentation to redo from scratch, as there is not much information about (CAD or STL file of the input cover) floating around publicly.
Furthermore, 3D printing technology might (a) not be able to handle the details of the necessary to print a good enough input cover, and (b) printing a whole input cover would be challenging due to its size exceeding the (university) 3D printer I have access to. Moreover, 3D printing material might not be strong enough to use as input cover.

Consequently, I have compromised to only override the keyboard layout part, and keep everything else as is.
Someone more determined, with a different vision, approach, and tools (aluminium sheet cutter / CNC machine ?) would have better luck at this task.

As mentioned in my answer to your question 1., due to the tight integration of the vanilla input cover with the touchpad, I will be keeping the default touchpad.
At the cost of being ranty, I dislike using standard mouse with an ergonomic keyboard, as it requires to move the hand away and back to the board, which can become inefficient. The Charybdis has a trackbal itnegrated to the right side of the keyboard, which essentially remove the need for hand movement.

After some experimentation, my plan is to use both thumbs to control the touchpad similarly to how I use a trackball on the Charybdis.

Tangentially related, my original plan was to use a Cirque trackpad in-between both sides of the keyboard, similarly to how the Dilemma does it.
Unfortunately, after prototyping the layout, there (c) does not seem to be enough room to fit a trackpad, unless doing a 3x5 or smaller layout, and (d) the Cirque trackpad is taller than the total clearnace of 3.8mm the keyboard / input cover allows:

Unfortunately, this does not look like it would be possible,
It is not be viable for me as it takes a non-negligible amount of time just to make one board.
The labor cost of doing so, on top of buying an vanilla input keyboard to modify, shipping it, materials for 3D printing and other components would make it prohibitively expensive.
Best I can do is open source the design here and on other sites like intructables.com for interested people to follow :cry:

Assuming the custom keyboard matrix itself works, the plan is to re-use the vanilla FPC connector / flex cable to plug to connect it the keyboard cover. The Framework’s Embedded Controller (EC) firmware itself will then be rewritten to match the new layout.can be flashed directly onto the Framework.
At worst, in case I cannot re-use the default connector, the plan is to hijack the USB port of the finger print sensor to connect and Elite-C running QMK on it. This will require a different set of FPC / flex cable.
There will be no custom input cover, just some firmware file that will be open-sourced, of course.

Sorry for too many works, and hope it addresses your questions well enough.

6 Likes

It’s great if the columnar keyboard can have key covers like a split keyboard Moonlander’s Zip Kit. It’s for people who want to reduce the keys.

Here is my current Moonlander with the key covers as a reference.

1 Like

Hi @dosssman
Thanks heaps for the detailed reply.

I’m still loving what you are doing, and you are inspiring me to try and get an idea together around a custom input cover

Haven’t got my thoughts together fully, buti will reach out through the contract form and see if they will be forthcoming with CAD dukes of the input cover …

1 Like

Thanks for the suggestion. I actually have another Ergo keyboard that has more key than I would like, and the idea would apply nicely to there too.
Will try to 3D print a few covers once I manage to rework the input cover, in any case.

Sorry for the late answer, and thanks for the kind words. Looking forward to what you come up with.
I am torn between lazyness and “business” so I did not really give much thought to other aspect of the input cover, but there is definitely some ideas to work on.

1 Like

Greetings everyone.
My apologies for not posting much updates in the last weeks. Life indeed got in the way.

A quick update on the project: while in the previous update I could confirm that using copper tape and thin vinyl sheets would work as a custom keyboard matrix, it did not pan out as expect.

After disassembling the keyboard / input cover (graciously provided by the Framework Team! Much appreciated.) it turned out that the holes in the scissor switches where the bottom part of the keyboard’s aluminium hooks hold are very thin. Therefore, 3D printed a base where the FW keyboard switches can be installed did not look possible. Nevertheless, after experimenting a bit, the idea is to cut out the aluminium parts with hooks that holds the switches and graft them on a vinyl A4 sheet holder to serve as an alternative base following the desired layout.
Cutting out the switch bases takes quite some time and care as the aluminium plate is relatively fragile, but once that is done, it is straightforward to rearrange them into any layout (as in the video at the bottom, I have a few of those stuck on some A4 sheet with a test layout). Double sided tape is used to hold them down in place.

The second challenge was to assemble the DIY keyboard matrix made of thin vinyl sheet and copper tape with the key switches mounted on top. With the previous keyboard matrix prototype, mounting the key switch with the rubber membrane pressing on the vinyl sheets would essentially short circuit the whole matrix, so it was no key stroke would register. In simpler words, it could not be reliably used for typing.
After further refining the process, namely by halving the width of the tape and working out a better alignment of the latter, it finally ended up more or less working… Only been trying with one switch so far, as doing it for more would require being very meticulous.

Next step is probably to try and make it work with a few more switches, for example 2 col and 4 rows, and figure out the best method to make a matrix circuit that is compatible with the key switches. Then I am thinking of doing one half of the keyboard and play around a little bit with the EC firmware. After that, probably start to work on a replacement for the input cover grid (need to not only accommodate for the custom layout, but also make sure that the “keyboard” part can be screwed into the top input cover). Finally, once the full layout is done and can be connected to the EF, probably flesh out the firmware.

11 Likes

I was shared this project below. Perhaps you may know it. you may get some ideas from the project!

Introducing ThinKeys. The first split ortholinear laptop keyboard with a pointing stick. - https://modulo.industries/

5 Likes

The Charybdis looks like a pretty cool board, I particularly like how the otherwise wasted volume that is inherent to a 3d keyboard is taken advantage of to house a trackball.

The challenge with a laptop unit is of course, having mastered a 3D board, to constrain the design within only two dimensions.

1 Like

Greetings everyone.
My apologies for the late update.

In the light of the awesome announcements from the 2023 Framework Event, I fell compelled to at least give an update on this project, especially given the announcement regarding a potential QMK compatible ortholinear keyboard for the FW16 (???).

So far, the idea of this project was to cut out the grid from an original FW laptop’s input cover, re-arrange them to a desirable layout, while design the matrix keyboard using vinyl sheets and copper foil tape.

Cutting out the aluminium frame with the hooks that hold the butterfly switches required a great deal of patience and care:


The next step was to cutout the vinyl sheets to match the shape of the keyboard, and lay the copper foil to form the matrix, with wires coming out to be connect to an Elite C.


Previously, I managed to get a small cluster of 2x4 keys working with the Elite C, but once scaled up, it turned out that the keyboard matrix was very unstable, hardly usable: some keys would behave as if always pressed, and the overall keyboard was very sensitive.
It seemed like it could hardly take some daily driving.

I had already cut the default grid of the input cover, 3D printed a clear grid with the desired columnar staggered layout to match with the custom grid.

The Elite C was to be mounted in the middle of the custom input cover, and a workaround to connect it to the input cover’s via the sensor print finger was essentially ready.
Unfortunately, the overall project has yet to pan out, as the keyboard itself was not stable for a good enough user experience.

Nevertheless, I would like to leave a few pics of the expected final product, as a proof of concept / source of inspiration for later, or an example of what could be :sweat_smile:

For now, I have been looking into other ways to make a reliable enough keyboard matrix for daily driving.
MX Cherry Ultra Low Profile sounds promising, but this will require a bit of work to wire around and design thin enough support plate / PCB while fitting within the 3.8 mm allowed by the FW 13’s chassis.

In the meantime, I am looking forward to see other projects or even official FW ortholinear input covers.

26 Likes