Model 100 questions -- before buying

  1. I’m interested in model 100, but do not understand how one easily can use key combinations, when some keys are only available via a modifier key (like arrows)

For example Ctrl-Win-Arrow will go to another desktop, but how would I use such a keyboard shortcut?

  1. There are different situations when one uses a keyboard.
    a) Typing text or coding → m100 is optimized for that AFAICS, but for English only. As soon one needs more keys like in many European languages or one needs several dead keys I am not sure how good m100 will work for those situations!?

When a user is interested in an ergonomic keyboard, but does not want to learn a new layout this is likely not possible with m100, because some keys are missing which would be there in a 60%-keyboard.

b) Typing text, but with the need of an occasional special character, like a greek letter, a unicode letter e.g. ⇒)
→ how is that handled best with the m100 concept?

c) Editing – that means some text is typed, but one often needs to navigate, use key-combos to delete a word and the like
→ here I am not sure how one would setup m100 to be efficient for those tasks

For a, b and c I will likely be in “working position” with both hands in the home row.

But for

d) web browsing / media consumption – navigation is most important, quick access to media keys and the like

it is very convienient to have dedicated keys like arrow keys, volume keys …
→ how would you handle such a use case with m100? How do you deal with “not enough keys”? Switching to a fixed different layer is likely not the answer, because when browsing the navigation keys are most important, but one still needs to be able to type text of course (incl. non-english texts for some of us!)

  1. How many layers can one use in one keyboard layout?

  2. How many keyboard layouts can be stored?

  3. Is it possible to break up key combinations like

Shift-a for A to change to Shift (release) and then pressing a?

Wouldn’t that be much better ergonomic-wise than the chorded keys, which take much time and are error-prone?

Looking forward to hear from your experience :slight_smile:

Kaleidoscope keyboards (e.g. Keyboardio Model100) can be set up in many different ways to enable quick and convenient access to more virtual keys and combinations than the number of physical keys they have. Two of the most prominent ways of achieving this are via the OneShot and Qukeys plugins.

OneShot allows you to activate modifiers (including layer shifts) by tapping instead of holding to avoid the need to press multiple keys at once. These can be chained together to get combinations such as ctrl+alt+X, without needing more than one key down at a time.

Qukeys allows a single key to have two different values (one for a “tap” and a different on for a “hold”) on the same layer. A fairly common thing to do is for people to configure a set of modifier keys on the home row (or one row up or down from home), making any combination of modifiers comfortable to use despite chording. Another way to use it is to have keys that are set up to be primarily used as modifiers, but also produce printable symbols when tapped (e.g. parens when tapping the shift keys).

Another plugin that helps with this is TapDance, which can give multiple symbols from a single key, depending on the number of times you tap it. For example, (, [, {, and < could all be configured on the same key, based on the number of times that key is tapped in a row.

Regarding Unicode and other symbols that don’t correspond to individual USB keycodes, it really depends on your operating system. Generally, almost any sequence of inputs can be emulated by a single keystroke using the Macros plugin, but that’s not the only way to accomplish it. Personally, I prefer using a compose key for this purpose, but there is no universal solution that works the same way everywhere, unfortunately.

Regarding layers, the Model100 can have up to 32 layers, which is probably more than a human being could successfully utilize. It could be modified to have even more than that without much difficulty. Kaleidoscope doesn’t support multiple “layouts” in the sense that you described; it just has one set of keymap layers, many of which could be different “layouts” (e.g. QWERTY on one layer, Dvorak on a second, your own keymap design on a third, all with the OS set to interpret the keycodes as QWERTY).

It sounds to me like you’re overestimating the time and effort it will take to change layers as opposed to shifting a hand to a different position to use dedicated arrow keys (for instance). Lots of people use arrow keys on a navigation layer, and number keys on a numpad layer, without finding the layer switching to be tedious. You still might, of course, but the only way to be sure is to try it out.

1 Like

There are many ways to accomplish that, because the Model100 is a fully programmable keyboard (you can modify the firmware, and use your modified version, and that’s fully supported, even encouraged). With the default factory firmware, the way to access symbols not available immediately is done through so called “layer shift keys”: the two palm keys. When you hold such a key, the symbols on the keyboard shift to a different layer.

While this may sound complicated and exhausting, because of the relatively small number of keys, and ergonomic design of the keyboard, you generally do not need to move your hands. Not moving your hands can save a lot of effort.

Ctrl+Win+Fn+Arrow. One more key, but less pinky use, less hand movement. Combined with the OneShot keys @merlin mentioned, this all becomes a whole lot less physical effort.

I’m typing a lot of Hungarian with the Model100 (and have typed even more on the Model01, its predecessor), and it works amazingly well. How to set that up, is personal, in my opinion. At the moment, I’m using Dvorak, with all vowels on the left side. For Hungarian, I need a set of other vowels: áéíóúöüőű. Of these, the ones with a single acute are on a layer in the same positions as their base symbol. The ones with two dots are one row below, and the remaining ones are above. This is easy to remember, and easy to type too.

But if that’s not convenient, there are other ways to arrange keys - the keyboard is fully programmable, after all.

I’m afraid that’s a compromise one will have to make: any truly ergonomic keyboard will require one to learn a new layout. Even if it has a full set of 104+ keys (though I don’t see how a full size keyboard could be ergonomic, but lets not go there now), but is a split keyboard, that still feels like a very different layout.

Either on a symbol layer and a layer shift, or a compose key, or a leader key - whichever is most convenient for you. There is no such thing as the best way, just a lot of viable possibilities.

Again, there are multiple ways, and it also depends on the editor. My editor is set up to be a modal editor: there’s different modes, for inputing text, for modifying text, that kind of stuff. So if I want to delete a word, I simply go into command mode (by hitting Esc while in input mode), and type db - delete word backwards, or dd to delete a line, and so on and so forth.

But non-modal editors with Ctrl+Backspace combos are equally well supported. Since the vast majority of keys are within reach without moving your hands, any combo is possible. Combine that with any of the plugins @merlin mentioned, and you have immense power at your fingertips.

Layers! :slight_smile:

Fn+home row feels pretty nice for media keys, so do Fn+thumb cluster keys.

I used to think that too. Then I spent a month recording every keystroke I input, and made a heatmap out of it. Turns out that I used arrow keys and volume keys far less than I anticipated.

So my suggestion here would be to not handle it, let the idea of dedicated arrow and volume keys go, move them to a layer, and see how it works.

There are 8 available layers in the default firmware, 32 if you compile your own. That’s a lot of keys.

No need to switch to a fixed layer: you can layer shift. That’s like the shift key, but instead of letting you input capital letters and shifted symbols, it temporarily shifts to a different layer. As soon as you release the layer shift key (the Fn keys on the factory layout), you’re back to the layer you started out from.

So by default, you’d be on the QWERTY layer. If you need to navigate, you hold Fn, and move the cursor around. When you want to type again, you simply lift your palm.

The palm keys are such an amazing innovation of the Model01/Model100!

There are 8 layers in the default firmware, 32 possible if you compile your own. How you arrange your layers, is up to you. You can fit 32 different keyboard layouts in there, if you want to, one layer each. Or you can use 4-5 different layouts and share a few more between them. All up to you, the only limit - currently - is the 32 layer limit, and storage space on the keyboard.

However, the Model100 has a lot of storage space. A single layer uses 128 bytes, and the current practical limit of storage on the Model100 is 16k. It’s possible to extend that without much trouble up to about 64k. And if absolutely necessary, we can go further than that, but that would require more substantial firmware changes.

If I understand you correctly, that’s precisely what OneShot modifiers are: you press and release Shift, and it stays active for the next key only. So to input Shift+A, you press and release Shift, then you press and release A. No chording necessary. Keys typed after, will not have Shift applied.

It does have its own downsides though: if you type very fast, and end up typing two symbols before releasing Shift, then you may end up typing two symbols with Shift active. A little bit of practice can help with that, mind you. I’ve been using OneShot modifiers for the past 6+ years or so, and haven’t had any troubles like this for a looong while now, not even at ~120WPM.

Hi Michael and Gergely,

thanks for the detailed answers. I was not sure about everything Michael said, but the additional explanations made it clearer. :slight_smile:

I understand I have to invest some time and thoughts to optimize the keyboard for me, but then it will pay off and I will not want to touch another keyboard again. :wink: I have the experience already to customize my keyboard usage. That took also some time to figure out, but makes the work much more enjoyable, when one can mostly stay in the home row, without the need to look at the keyboard or jump around that much.

I just have to find a way to either stay more or less “compatible” with a standard keyboard (laptop) to be able to implement the most important changes there as well (via Autohotkey likely) or keep a little bit of practice with my current system, which already involves some changes like navigation keys in the home row (I use CapsLock as a modifier on a traditional keyboard).

The only example which is still not clear to me

Those keys would be pressed at the same time? Isn’t it cumbersome to need to press two thumb-keys with the left hand and at the same time the palm-key with the left hand (arrow would be on the right side – I have mapped the arrows to hjkl for many years already…)? Or can one use “oneshot” also for combinations like Ctrl-Win and then release and press Fn-Arrow? I ask because I very strictly always press a modifier-key with one hand and type the wanted key with the other.
The only exception I needed to make on a traditional keyboard are those “weird” key-combo-shortcuts many programs use.

But regardless of the answer: you got me already. I tapped into the rabbit hole and will place the order :smiley:

I have not found that cumbersome, left palm + left thumb keys aren’t the most convenient combo, but they aren’t terrible either. Mind you, I hate chording, so all my layer shift and modifier keys are one-shot. For Ctrl+Win+Fn+Arrow, I just tap the palm key, control, then win, and press the arrow key I’d like. Oneshots make combos that would otherwise seem weirdly contorted smooth.

Yes, you can chain oneshots. OneShots remain active until you press a non-oneshot key, so OneShot Ctrl, OneShot Win, OneShot Fn all tapped and released after one another, followed by an arrow (via the oneshot fn) will result in ctrl+win+arrow. You can also tap ctrl and win, and then hold Fn + arrow (assuming Fn is also a oneshot layer key).

OneShots - apart from keeping the relevant key active until the next non-oneshot key - also function as normal shift-like keys: if you hold a one-shot shift, and type asdf with it held, then that’ll net you ASDF, just like a normal shift would. So if part of a combo is more comfortable with a chord, that’s doable too.

From what I’ve heard, a lot of people do not have problems switching between 2-3 different keyboards, as long as all of them are used with reasonable frequency. A laptop keyboard and a Model100 is very different, so there’s a fair chance that two sets of muscle memory can develop.

No personal experience there, I just carry my keyboard around. I refuse to type on anything else for longer periods of time. :smiley:

(But then, my layout is… complicated, a bit, and I only made it “worse” switching from the Model01 to the Model100.)

I have an Atreus, ‘only’ 44 keys whereas M100 has 64 keys. I think it’s actually more efficient because the reaches are shorter!

I have 5 of the 8 layers in use for common tasks plus one for Zwift hotkeys.

On Windows I have 10 desttops in use currently with 41 windows open. I can switch to next desktop with a single keypress (once I am on Layer 3 which I call my “Navigation Layer”) From the base layer, I can layer shift to 3 or move to it.

For next desktop, I set a key as Right Arrow and add the modifiers Control and Windows. For previous, I set the key beside to Left Arrow and modify with Control and Windows. So I can simply scan back and forth across all my desktops. I can also press Windows-Tab which shows all desktops and I can just click the one I want and go there directly. I have a button on my Logitech MX Master mouse that sends Windows-Tab and then I click so I can also switch with just the mouse which is very nearby since the Atreus is so small.

Also on this navigation layer, I have next tab/previous tab in Firefox, volume up down mute, brightness up down, and arrow keys so I can scroll webpages slowly, and page up down for faster scrolling. All those are a single keypress on L3.

Arrow keys and a few others are mirrored left and right so I can browse and scan with either hand. (depending on which way I happen to be leaning!)

1 Like
  1. The palm key is very easy to reach. I have all the navigation keys on my right hand side. Pressing the palm key with the left palm is not a problem at all.

I also found the problem of having a lot of useful shortcuts that uses ctrl+arrow+something
In my layout I have arrow keys mapped in an inverted T shape, like WSAD on a traditional keyboard, but place on JKLI to have in on my right hand home row.

To help the ctrl+arrow problem I have mapped U/P to ctrl+left/right.

  1. Yes european characters can be a problem. It is solvable, but I find that the best solutions depends on the OS you are running and more. This is not keyboard.io’s fault, but because special characters are an interaction between the keyboard and the codepage on the OS.

2a)
If you want to buy a m100 you will have to change some habits - there are no way around it. But on the upside you also get a chance to reflect if the habits you have are effective for you?

2b)
Configure/Install software on you OS to have a compose key. That way you can type anything. This is also one way to hack your keyboard in the most flexible way to map any international character to a key.

2c)
For me the ctrl+arrow is the silver bullet that solved all of my problems with editing text very fast. It should be the default layout IMHO, instead of the VIM-like layout.

2d)
I mostly let go of the keyboard and use the mouse for browsing. Keyboard shortcuts for copy/paste/new tab/close tab are conveniently on the left hand if you use QUERTY (or colemak like me)

I have media keys mapped with the navigation layer. I use that occasionally for controlling music, while I am typing.

I also find sometimes that I am missing one or two keys. I have everything squeezed into the base layer and fn layer. I also have a numlock layer, which I never use. I gave up on mouse keys and that gave me a little more space.

I still sometimes get into trouble if I have to type combinations of ctrl+shift+alt+f-keys and that can get me frustrated, since I am an extreme user of keyboard shortcuts…

I raised a feature request to IntelliJ for them to rethink their keyboard shortcuts to be less crazy. You can find that here, if you also use IDEA.
https://youtrack.jetbrains.com/issue/IDEA-258520

Let me know if this raises further questions :slight_smile:

Thanks a lot for all answers. Very helpful input!

I have different questions which I overlooked first.

  1. Which switches does the model 100 will ship with? In the blogs there are different statements, so I am not sure what is the actual state. Kalih silent browns seem to be history, except for a few people who got the early shipments, right? Too bad, because that seemed like a switch many people seem to like.

  2. I have seen demonstrations of the Oryx software (for the Moonlander), which seems a powerful and straight forward to use software. I have not found documentation for Chrysalis matching that functionality. Does that mean I would have to dig into Arduino coding when I want to assign keys like “Tap and hold”? Where can I find on overview of what can be done with Chrysalis?

Honestly speaking. I am getting a bit the impression that keyboardio is more a hackers toy, then a product which is ready to be used without spending serious amounts of time and efforts to get it up and running to the way one wants to!? Maybe I am wrong, but for example the link on Github to https://wiki.iota.org/introduction/welcome(https://github.com/iotaledger/introduction-docs/blob/main/welcome) does not work… :frowning:

And coming from the keyboardio website all I can find is: Edit keymap with Chrysalis · keyboardio/Kaleidoscope Wiki · GitHub
which seems one can only change simple key layouts, but does not have the option to define double-tap, tap-hold and the like operations!? After so many years on the market now I find that lack of documentation and seemingly lack of user-friendlyness surprising.

1 Like

short answer is you do a lot of fiddling and refining your keyboard layout and layers. if the m100 is anything like the atreus, you will be able to create a custom layout that helps you in specific environments in a specialized and efficient way. my most used layout has a text/general navigation layer and a numpad and directional layer and a function layer and a mouse layer. i have a layout for gaming. i plan on making a layout for music production. i make shortcuts and key combinations that make sense to me

As far as I remember, there are 3 or 4 different options, which you’ll be able to select before your keyboard ships. There’a at least one clicky, one linear, and one tactile switch option.

The switches are hotswappable too, though that does require extra investment to buy your preferred switches.

There are many things you can do with Chrysalis, including setting up oneshot keys, “dual use” keys (tap for one thing, hold for a modifier or layer shift), and so on. There are, however, a few things for which you will need Arduino and a custom firmware for. Usually because we didn’t find a reasonable way to make the feature available to Chrysalis yet.

Oryx is… different from Chrysalis. Oryx runs in the cloud, and compiles firmware for you which you can flash, so essentially, it’s a fancy firmware builder, and it can reasonably easily expose all firmware features. Chrysalis, on the other hand, does not compile new firmware, it lets you change your keyboard settings live, without flashing new firmware, without rebooting the keyboard, and runs on your own computer. Because of this, it can only expose features where we specifically implemented a way to let Chrysalis work with it.

Oryx isn’t free software either, Chrysalis is.

With Chrysalis, we did not want to create a firmware builder, because the idea was - and still is - that if you want to build firmware, the best way to do that is via Arduino, because that gives you the most power and control. The firmware we use - Kaleidoscope - is built with this in mind, and we’re doing our best to make it easy to get started with it. Far easier than with QMK, rendering an Oryx-like firmware builder eventually unnecessary.

Documentation is a thing Chrysalis is severely lacking, I’m afraid. We’re working towards a way to have Chrysalis run in something like a demo mode, where you can try it and experiment with it without having actual hardware. That’ll help in this regard.

We’re also aware of the lack of documentation, something we’ll fix at some point, but there are higher priority tasks in my queue at the moment.

For now, the best overview you can get is likely screenshots, the NEWS file, and asking people here or on Discord. I suppose I could create a topic here, or a wiki page or something with screenshots and a short tour… that wouldn’t be a huge effort. It is unlikely I’d have time to maintain such a screenshot-tour, so a topic it will be, rather than a wiki page.

It really depends on how much you want to customise your Model 100. If you want to just use it, it works out of the box. If you want to rearrange your keys, you can do that with Chrysalis. If you want to change some colors, use oneshot keys, secondary actions, simple macros - you can do all that with Chrysalis. We’re also continuously improving Chrysalis, and making more and more features available through it, too. You can do much more with Chrysalis than with any other similar tool, tools that don’t require to flash new firmware. Chrysalis can do more than Via(l), or the Wootility, or Azeron’s GUI thing, or most other proprietary keyboard configuration tools.

It just happens that Keyboardio keyboards provide even more features, on top of what’s available in a simple configurator. It lets you dive deeper, and lets you customise it in ways that are either hard to translate into a GUI, or even simply impossible. It lets you fall back to compiling custom firmware, and doing so does not prevent you from using Chrysalis, either! Using custom firmware with Chrysalis is 100% supported, and always will be.

Do keep in mind that there are plenty of things you can do with QMK that you can’t do with Oryx. So even in the QMK/Oryx case, if your desired configuration requires something Oryx does not support out of the box, you will have to compile your own firmware. And once you do so, you lost the ability to use Oryx - unlike with Kaleidoscope/Chrysalis, where you can continue using Chrysalis on top of your customised firmware.

The primary goal we always keep in mind while developing the Kaleidoscope firmware is to make it very easy and welcoming to people new to programming. Our goal is to make it easy and straightforward to modify your firmware, even without any prior programming experience. While we’re not going to be able to fully achieve that goal, I believe we’re doing very good on that front.

There will always be things you can only do with custom firmware, and we believe that’s fine. Chrysalis is meant to make the most common things easy, and an easy to work with firmware framework - Kaleidoscope - is meant to make the rest possible.

The power of Keyboardio keyboards is not that you can do everything with Chrysalis. It’s that the keyboards themselves are built with love and care, and would be great products even without Kaleidoscope or Chrysalis (as proven by the Model01: Chrysalis did not exist during its development, and was a success even without it, and Kaleidoscope was far less mature at the time, too). On top of a keyboard that’d be a great product in and of itself, you also get both a powerful, modular, fairly well documented and easy to use firmware, and a continuously improving graphical configurator, both of which are free software.

All of these are built with end-users in mind, of all kinds: people who just want a great keyboard, get one. People who want to tweak theirs a bit, get Chrysalis on top. People who want to dive deep, can do so with Kaleidoscope. You don’t have to be a hacker to use a Model100. You don’t have to be a hacker to customise it. You don’t even need to be one to compile custom firmware - plenty of customers did so without any prior programming experience. Being one does make it easier to fully customise your keyboard, but not being one does not prevent you from making the keyboard your own.

A little bit of background for that: I started Chrysalis in 2017 to scratch my own itch, as a hobby project. I loved the Keyboardio Model 01, and wanted to see if I can build something to make it easier for end-users to configure it. It was a hobby project at the time, something I worked on to relax. There have been significant contributors over the years, both code, ideas and review-wise, but the vast majority of it is still my code.

Jesse and Keyboardio did hire me to work on Kaleidoscope and Chrysalis in 2018, but up until halfway into 2019, I was working part time, on top of having a 40 hour / week dayjob unrelated to my Keyboardio work. Initially, most of my time went into Kaleidoscope, with Chrysalis remaining a side project. It had some spikes in development, but it wasn’t the primary focus of my efforts until quite recently (this year).

With that said, we try our best to make both Kaleidoscope and Chrysalis user friendly. There’s a lot to do on that front, yes, especially documentation on Chrysalis’ part (Kaleidoscope is fairly okay on that front, I believe, Kaleidoscope — Kaleidoscope documentation has lots of it, and plenty of detail), but the application itself is built first and foremost for any computer user. We try our best to not require one to be an expert to use it. We try our best to make Kaleidoscope similar too: something that requires very little programming expertise, something one could learn programming with.

2 Likes

I went ahead and created a Tour of Chrysalis page on the Chrysalis wiki. Plenty of screenshots there, and I tried to showcase most things Chrysalis can do for you.

Thanks a lot Gergely for the comprehensive answer. That helps much more to understand what is possible and estimate the effort for different “customizing stages”. So my impression that Chrysalis does only allow to swap keys was wrong. I got that impression from the available documentation I could find.

Not as a harsh critique, but as a friendly note. In my business we learned that it is very important to have a website which is modern, up-to-date and makes relevant information easy to find and to reach out in case questions are still open. I mentioned Moonlander not because I think it would be a better product, but because on the website it is made easy to find the relevant information. Hardware wise it is no question to me that model 01 / 100 have a better layout (thumb keys, staggering better matching to finger curve, palm keys, built in palm rest for when not typing, let alone IMO better looks). A future version of Chrysalis with a demo mode (dummy keyboard “attached”) will surely help interested persons to make a better informed decision software wise as well.

Somehow related about my keyboard journey: I had a look already at model 01, when it started, but at that time decided against it, because there are not enough keys to replicate a standard German layout, thus forcing a user to dabble with custom configurations before even being able to get started. I am now willing to make that change, because I see some benefits and am willing to pay the price (money, time, getting accustomed). I am very sure keyboardio could reach more people when taking the points I mentioned into account (a lower priced option would also be important IMO, Altreus is not btw.).

Looking forward to receive my model 100 and make it “my keyboard”.

I just read that Wiki page and one question arose (I never used a Keybordio keyboard before and my Model 100 will only be shipped next week):

It seems that the keymap is always stored directly on the keyboard. That would mean that it’s not possible to try out some mappings (and storing them for later use) without actually modifying my real map. Or, more importantly, making a backup of my handcrafted keymap or copying it to a second keyboard.

Is it true that no such storing to / restoring from file functionality exists?

There’s a “Backup & Restore” button on the sidebar in the Layout & Colormap Editor:

(Near the top, just below the list of layers)

That can be used to save your current keymap, and load others. In turn, this allows you to transfer a keymap from one keyboard to another.

You can try out some layout, save it, and restore the previous one. But to try a layout, it has to be saved on the keyboard, indeed. Chrysalis does not try to emulate the firmware on the host side, it’s merely a frontend tool, so anything that involves trying, will have to involve the keyboard too, yes.

Thanks for your answer Gergely!
I overlooked that buttons in the screenshots. That sounds great!

I understood that for actually trying out a keymap I have to transfer it to the keyboard, I was just afraid that such a save/restore function might be missing from Chrysalis.

1 Like