QMK port for Atreus 44 keys

I’ve never done this before, but excited to give it a try. I know there is already support for the original 42 key Atreus, so I guess most of the work will already be done.

I only received my Atreus two days ago and totally new to it and the keyboardio software. I have a couple of questions to start:

  • I understand the Atreus is using a Arduino type controller, is that correct? What is it, a Pro Micro?
  • If I do manage to flash the Atreus with QMK, how do I go about restoring the Atreus back to the default software? Will the Chrysalis software still detect the keyboard?
  • With my Ergodox, I had a physical reset switch I could press, but also used QMK to program a Reset button on one of the layers. Where or what is the reset switch for the Atreus?

I’m sure I’ll have more questions later, but these are the first I can think of to get me started.


A pull request has just been merged for this. Have a look here.

1 Like

That’s awesome, thanks. Saves me the time in doing it (but now I lost out on the fun experimenting :joy:).

hold the bottom left key ( Esc by default) and reset the keyboard - either via a macro, or by sending a hang-up signal to the keyboard device, or by pressing the reset button on the bottom with a pin.

Ah, I saw that small pin hole on the backside of the keyboard, and was wondering if that was a reset button.

Do you know the answer to my 2nd question. If I wanted to go back to Keyboardio firmware, will the Chrysalis software still detect my Atreus even though it might be running QMK?

If you leave the bootloader intact you should be able to switch between the two.

Chrysalis detects the Atreus by its USB Vendor and Product ID. If those remain intact when flashing a QMK firmware onto it (and as far as I remember, they do), Chrysalis will be able to detect the keyboard. However, it will not be able to talk to it, and will guide you to the Firmware Update screen.

It is technically possible to teach QMK to talk the same protocol as Kaleidoscope, and work with Chrysalis just as well as Kaleidoscope does, but there will be certain incompatibilities (ie, keycodes are different between QMK and Kaleidoscope, for pretty much all keys outside of the standard USB keyboard set) that make this impractical at this time.

1 Like

Thank you both Daniel and Gergely for that information. My intent is to use one or the other exclusively. I did not mean to flash the Atreus with QMK and then try and configure it with Chrysalis.

With my Ergodox + QMK I have programmed some advanced features and not sure of Kaleidoscope could do the same for my Atreus. I was however curious how I would return the Atreus to factory defaults if I ever needed to do that. I believe you answered that for me - I just must not change the Vendor and Product IDs.

Either way, I’ll first continue playing with Kaleidoscope to see what everything it can do. :+1:

Talk about this !
Kaleidoscope is open source, and contributions are welcomed, so open a Feature Request or even a PR on the repository and maybe your advanced things can be shared for all the community :tada:

Even if you do change it, you can always flash Kaleidoscope back from the commandline or the Arduino IDE. Chrysalis is just one of the many ways to help you with that, but it isn’t the only one.

I’d be very interested in hearing about any advanced features that you did, so we can make those possible with Kaleidoscope too. :slight_smile:

1 Like

A few things off the top of my head, but I’ll have to double check my Ergodox QMK layout to find them all

  • I can bind Backspace on tap, and Momentary Layer switching on hold, but double tapping and holding the backspace key will trigger repeating backspace, and not switch to the layer.
  • I can program a single key to be Copy when tapped and Cut when held.

Granted I’ve only had my Atreus for a couple days now, and couldn’t see how to do the above using the default firmware and Chrysalis. I still need to explore the underlying firmware source code. So these things might already be possible with a custom firmware.

This feature hasn’t been merged yet, but there is a PR for it. I’ve tested it, but it will probably get merged sooner if other people try it out and confirm that it works for them (or report problems so I can fix them).

This can already be done using Qukeys. In the keymap, use LCTRL(Key_C) (assuming Linux/Windows), and then define a qukey with an alternate key value of LCTRL(Key_X). Consumer Control keys will also probably work.

[Note: this can’t be done via Chrysalis alone, unfortunately]