Model 100, multiple languages, non-qwerty layout: is it possible?

I’ve been trying things out in Chrysalis for hours over multiple weeks now, and I am starting to suspect it’s impossible to do what I bought Model 100 to do. Can someone please confirm this or suggest a path forward?

What I want is:

  • for English, Workman-p layout. It can be thought of as Dvorak’s relative where Shift+9 gives you 9, while without Shift you get (
  • for Swedish, Workman-p layout but palm key + a gives you å, palm key + e gives you ä, and palm key + o gives ö
  • for Ukrainian, just normal Ukrainian layout (with cyrillic letters).

What I tried was to:

  1. In Chrysalis’ preferences, switch the layout to Swedish; create a layer where all the English letters are laid out as in Workman-p; create another layer with å, ä, ö in place of a, e, o. Back in the first layer, make the left palm key ‘ShiftTo’ the layer with åäö.
  2. In Chrysalis’ preferences, switch the layout to Ukrainian, create a third layer where all the Ukrainian letters are how they are by default in a normal Ukrainian layout. Make the ‘any’ key ‘MoveTo’ the layer with Workman-p. And vice versa, on the layer with Workman-p make the ‘any’ key ‘MoveTo’ the layer with Ukrainian.


  • Swedish has different characters then English when you press Shift+1, Shift+2, etc, and I want the English ones. For example, Shift+6 is ^ in English but & in Swedish, and I really want the ^ because it’s a “start of the line” shortcut in my most-used editor, vim.
  • similarly to the above, Swedish uses the {} keys for different characters, so while Chrysalis interface is showing me Swedish letters (which is how I get åäö), I can’t possibly select and assign the ‘{’ character, it just doesn’t exist. Same with double quote, it’s hidden behind Shift+2 in Swedish, and I’d really rather have it in the middle row, right-most position, as Shift+’ (Shift+’ becomes * in Swedish).
  • somehow I can’t even switch to Ukrainian anymore, but when I still could, I basically had to both switch the OS layout to Ukrainian and also move to the keybordio’s layer with Ukrainian, making it pretty tedious.

I’m on Linux, using setxkbmap to define which layouts are in use and how to switch between them (alt+space).

Am I trying to solve this in the wrong place? Should I be editing the OS layouts instead? Has anybody made a cyrillic language work as usual while having their Dvorak or something in the latin realm?

To fully understand what you want:

Do you want to have three different language layouts in the OS or do you want to have all 3 available at the same time (somehow combined in the way you want)?

I’m pretty sure the only way to switch between Latin and Cyrillic characters is to switch OS layouts. As such, if the keyboard is only being used with one computer, the simplest solution might be to define your own layouts on the OS side, so that you always get the characters that you want.

Three different language layouts are fine (although I would’ve preferred combining the English one with the three Swedish letters åöä instead of having a whole separate layout).

Alright, that’s fair enough. I suppose I can sort of copy what Workman-p does to my own Swedish layout and figure out how to switch OS layouts and Model 100’s layers.

What I still can’t make work though is this “inversion of Shift on the numbers row” thing that Workman-p does. So when Workman-p is selected as the OS layout, and I press the laptop’s built-in key 1, the character ! is typed (as is intended by Workman-p). And when I press the laptop’s Shift+1, the character 1 is typed (again, correctly). Without changing anything, I press Model 100’s 1, and it types 1. With Shift+1, I get !.

This is what Workman-p does to achieve this (.../X11/xkb/symbols/workman-p file):
key <AE01> { [ exclam, 1 ] };

Why does it work with the built-in laptop keyboard, and with a regular keyboard connected with USB, but not with Model 100?

When you need a Standard English layout with some additional letters you might create your own custom layout. When only the three mentioned letters are what you are missing I would suggest to have a look at the US International layout (Windows – I guess there will be something similar on Linux), which allows to enter diacritics.

This should not be necessary if you define your own custom OS layouts and map the symbols you want to the appropriate keys.

Good question. It should be possible to use a different layout for each keyboard device. Something like this:

$ xkbmap -device <id> my-swedish-layout

Perhaps your OS is configured to you a different layout for your Model100.