Qwertz in general, german in particular

(Christopher) #1

Has anyone started work on a qwertz layout in general or a german layout in particular and is willing to share and discuss? Or just interested in getting the conversation going, like me?

I’ve searched the forum and found some interesting thoughts on keyboard layouts for swedish and french, but nothing specific to german or other european languages with lots of pesky special characters and diacritics yet. (Or maybe I’ve missed something, I’ll keep looking.)

Meanwhile I’ve started dabbling around with it, since unfortunately the Model01 does not work with a german language setting out of the box. (The Ü key is missing, as are one or two keys for special characters, the ß key is in a weird place, but Ü is the biggest problem.)

This is my first attempt at modifying a keyboard layout beyond using Xmodmap to switch Fn and Ctrl keys. At first glance remapping the Model01 does not seem too difficult, but once I’ve started drawing up a draft for a new layout, I realized that the Model01 is kind of short on keys. It seems like there is no room to put all keys typically found on qwertz keyboards near the place you would normally expect them and even when sacrificing keys like ANY, LED, NUM and PROG it’s kind of difficult to find a place for every key that is needed.

My thoughts so far:

  • Ü is missing. It’s normally to the right of P on german qwertz. Putting Ü on the key right of P is not a problem, but creates the need to find a new place for the apostrophe and accent key (the key labeled = and + on the qwerty keycaps).
  • So for the apostrophe/accent needs a new place.
  • The key for ß and ? is in a weird place. It’s usually found right of the zero key, on the Model01 it’s to the right of the labeled / and ? and \ on the qwerty keycaps (this key correctly performs the function of the dash key when connected to a computer that uses a german layout). I’m thinking about sacrificing the NUM key (remapping it to Fn + LED or something). Another option would be to sacrifice the ANY key and shifting the 6 to 0 keys one to the left, the 6 key is too far right anyway.
  • The key for < and > and | is missing. This key is usually between the left shift key and the Y key (z key on the querty keycaps). On the Model01 with qwerty keycaps that key is used for PgDn, so remapping it creates the need to find new homes for PgDn and PgUp (since those two should probably stay close together).

That’s about as far as I’ve gotten. I guess I’ll sleep on it and try myself at the keyboard layout editor tomorrow. I’d be delighted to hear what other people facing a similar problem have come up with so far.

(Gergely Nagy) #2

Perhaps a different route, but one that worked for me when I wanted Hungarian symbols, and found the same problem you did - not enough keys -: I put them on a layer, like this:

Right palm key + key near the base symbol nets me an accented key. For german, you could put Ü where U is, ß where s is, and so on. Very different from where they normally are on QWERTZ, yes, but still easy to remember.

(Noseglasses) #3

I use a German layout where I place ä, ö, ü and ß as triple taps on a, o, u and s. This was easy to learn and allows for fast typing.

(Andrew Gallagher) #4

Hi, squence.

The @celtic layout should be usable out of the box for a standard German OS keymap. I did run that combo through keyboardio-xkb before but didn’t post the results (I generate all keymaps in a batch, far too many to fill this forum with!). I’ll do so now:

[EDIT: first attempt used a borked locale; fixed now]

(Christopher) #5

Okay, finally got around to playing with the Model01 again and managed to whip up a layout that allows me to start using the keyboard. Thanks @andrewg for the pointer.

That being said: I found it pretty difficult to modify Model01-Firmware.ino to implement that layout. This list of keycodes was helpful, but it would have been much more helpful if the “table with good definitions for the common codes” mentioned here would already exist. Finding the names for the keys that don’t exist on the Model01 default layout was difficult and in the end I had to result to just trying which names gave me which keys, if I included them in a test layout and flashed that to the Model01 – like a caveman. The missing key was “Key_NonUsBackslashAndPipe” (this produces < and > on the german layout), “Key_LeftBracket” (produces Ü) technically does exist on the default layout, but only in combination with Fn, so I didn’t find it right away.

I’ll make some more improvements to the layout before I post it. Incidentially, why are you all using KLE, but no one posts their actual code block with the layout? I would have found that very helpful.

Maybe going off-topic: Is someone working on creating a tutorial for all this? I’d like to contribute. Maybe I’ve missed something and went about it all wrong and could have had an easier time, maybe not, anyway I’d like to spare other users the trouble.

(Christopher) #6

Thanks. From my point of view, this is very advanced. I’m definetly interested in exploring keyboard layouts like that – but for starters I’d like to stick with a more familiar layout, at least until I’m not entirely new to programming the Model01 (or any keyboard) anymore.

(Jesse) #7

We’re behind and that’s all my fault. @Jennigma has been coordinating docs for the past couple weeks and things have been getting better pretty fast. (To be clear, she’s a customer and a volunteer. <3)

Ideally the definitions for the keycodes would get into the source file so we can version them and extract them as docs automatically, but would it be helpful if I grabbed the full set of codes and brought them into a wiki page so they could be annotated?

(Jennifer Leigh) #8

Yup! Get me what you can. I have help with both the windows and linux install pages, and my ability to think is coming back online post concussion. I can build out a table pretty easily if you get me the translations, or point me to a resource.

I think the extended character sets for other languages are going to be the hardest and most important. I assume there are resources somewhere for that. :slight_smile:

If you can tell me what language regions model 01’s have been or are going to be shipped to in the mear future I can prioritize those character sets.

(Andrew Gallagher) #9


Sorry about dropping you in the deep end. I had meant to implement that keymap myself (now that I’ve got my hands on the hardware) but there was a family bereavement this week and I haven’t got around to it. Thank you for your caveman efforts! Would you mind posting the results here or in github? I’m sure there are quite a few others interested. :wink:

How do you find the layout? Is it logical to a native German typist? Which option did you settle on for the location of ß? Did you leave the thumb keys at the default?


I use a German layout where I place ä, ö, ü and ß as triple taps on a, o, u and s. This was easy to learn and allows for fast typing.


I’m pretty lazy, so I created my own Dvorak layout (by extending the existing one) so that AltGr+a|o|u|s would translate to the corresponding Umlaute/ß. So it was only a modifier key to insert them. I’m planning on doing the same on the model01. The modifier key is prolly gonna be something other than FN.

(Noseglasses) #11

The idea behind the triple tabs is that in german and in all other languages I type, there are almost no triple vowels and triple-s. Thus whenever I hit a three times, I am sure that I want an ‘ä’ instead of ‘aaa’.

(Andrew Gallagher) #12

I forked the firmware and modified it to use the “abg” layout shown above: https://github.com/andrewgdotcom/Model01-Firmware - feel free to try it out.


I’m pretty bummed about the fact that we will not be getting custom keycaps any time soon. For me it’s a reason not to purchase two Model 01 keyboards just yet. I want to use a qwertz layout but I also want the keyboard to reflect the layout I am using. For $330 per keyboard I think that’s something i can expect.

(Gergely Nagy) #14

The downside of custom sculpted keycaps is that custom labels are a bit of an issue: you’d need to meet a minimum quantity to make the price reasonable. Hitting that with an already niche product is hard. With MX keycaps from SP, WASD or anything else, it is a lot easier, because the same caps work for many keyboards, they can even keep stock. Not so much for the Model01.

Mind you, with the programmable firmware, there’s a reasonable chance that you will tweak the layout a bit, and deviate from the factory settings. The defaults don’t work for everybody, anyway. Thus, even custom labels won’t save you there in the long run. For these reasons, I’m a big advocate of blanks and the Runic set. They look much better, too.


I realize that. I hope that with access to a laser cutter I can create something using the blanks.
However before someone confirms that this is indeed doable I’m staying on the fence.

(Bäß) #16


I just received my Model 01, but I am stuck at the keyboard layout, since I need a German one. I have seen this very interesting thread here, and I am willing to invest some time to make it work for me.

I have studied the instructions about tweaking the layout available here, and I have downloaded the Arduino stuff and the firmware from Github to my computer. Since I am a longtime Linux user, I am at least familiar enough with the command line, too.

I would really like to try out your layout proposal for QWERTZ and see how it works for me.

If I understood the tweaking process right, it breaks down to the following steps (which may consist of several substeps) :

  1. You need a keymap (e.g. your proposal)
  2. You need the definitions (something like key_defs.h)
  3. You have to edit the Model01-Firmware.ino file according to your desired keymap
  4. You have to compile that file
  5. You have to upload the tweaked Model01-Firmware.ino file to the keyboard

Did I get this right? Did I miss something? Before I go to work, I would at least like to be sure that this is the path to follow, at least roughly. I have never done something like that before, but I am at least familiar with using the command line and with editing config files of all kinds. And I am also to a certain extent familiar with compiling from source, at least if it is not too complex with tons of options and prefixes.
I would really appreciate if you or someone else who reads this, could confirm the steps I think are necessary. I do not want to waste too much time for trial and error, and I would also like to take advantage of the work which has already been done so far.

Thank you in advance for your support

(Bäß) #17

Sounds very interesting! How do you implement a triple tap in the firmware?


By using the TapDance plugin: https://github.com/keyboardio/Kaleidoscope-TapDance

TapDance can do all kinds of actions (i.e. execute macros), including printing unicode characters, which requires the unicode plugin (https://github.com/keyboardio/Kaleidoscope-Unicode).

(James Cash) #19

This part shouldn’t be necessary, as all the HID codes should already be defined in Kaleidoscope core, but other than that, correct!

The other alternative is to try using Chrysalis; that’s a graphical tool for configuring your keymap, but it does require flashing a compatible firmware to your keyboard for it to work. If you’re interested in that approach, you can download the binary for Chrysalis here, along with a pre-compiled firmware hex that you should be able to load using Chrysalis & then start using it to customize your keymap.

(Bäß) #20

Thank you very much for that hint. I am open to any kind of approach as long as it works. And as far as I can see, you cannot even brick your keyboard if something goes wrong, since you can always flash the original firmware back on to the keyboard.
As soon as I will have enough time to look into Chrysalis, I will sure check it out and see if it works for me.