New port: ErgoDox

(Shriramana Sharma) #21

So in this regard you have merely copied from the ErgoDox code?

(Gergely Nagy) #22

Yes, the most recent source lists the files and commit hashes that were used.



I have an Ergodox EZ that mostly works OK using QMK. I have been trying to make the layout more or less match my keyboardio, but haven’t got Leader to work at all. I would like to use kaleidoscope with my ergodox if possible.

I downloaded Kaleidoscope-Hardware-EZ-ErgoDox and have been able to compile your example sketch using the Arduino IDE, but the IDE cannot find the board to upload the firmware to. I have tried plugging the keyboard in while holding down the program button; and I tried plugging it in and unplugging it repeatedly. The Arduino IDE just doesn’t seem to see that it is plugged in.

(Gergely Nagy) #24

It’s possible, and even easier now, because recent Kaleidoscope (1.93-beta, and git master) has many plugins in the core repository, ErgoDox support included.

If you are using the Arduino IDE, and have installed Kaleidoscope through its board manager, upgrade to 1.93-beta, and you should be able to compile and flash it. To flash, you will need the teensy_loader_cli application on your PATH.


That explains the “can’t find teensy_loader_cli” error.

I should have been able to figure that out but I’m glad I asked about it. Thank you very much.

(Gergely Nagy) #26

It should have been documented, to be honest. Can you open an issue about this on GitHub, by any chance?


Thanks for your help. My ErgoDox EZ is now programmed using Kaleidoscope, and it works. I’m sorry, I don’t know how to open an issue about this on GitHub, even though I do seem to have a user account. I am seeing “this repository has been archived by the owner. It is now read-only” so maybe I’m looking in the wrong place.

I am making a sketch for my ergodox EZ by copying and pasting things from the keyboardio sketch. You mentioned that the status LEDs should work; of course they are nothing like the keyboardio LEDs. Does my Arduino sketch control those ErgoDox status LEDs and do I do that the same way I would using QMK?

(Gergely Nagy) #28

No worries, I’ll open one then!

I should have been clearer, I meant opening an issue against Kaleidoscope itself. A lot of plugins have been merged into one big mono-repo not long ago, so the old plugin repos were archived.

Yes, your sketch has full control over the LEDs. You can use ErgoDox.setStatusLED(index, true) to turn one on, and false to turn one off. The index should be a number between 1 and 3, inclusive. You can also set the brightness with ErgoDox.setStatusLEDBrightness(index, brightness). I found that the brightness levels don’t matter much, there’s little difference between 128 and 255.

You can have a look at my ErgoDox sketch for an example that shows how to work with the status LEDs. It’s a bit complicated, but that’s because my LED setup is also a tiny bit tricky :slight_smile:


Thanks, algernon,

Have you tried using Qukeys with ErgoDox? Besides the essentially-Model01-specific functionality, such as the LED stuff and the Test Mode, Qukeys is the only part of my sketch that doesn’t work right. Qukeys is handling all of the DualUse functionality correctly, but the specifically Qukeys functionality is peculiarly inconsistent.

(Gergely Nagy) #30

Can you describe this in more detail? It should be working the same on both the Model01 and the ErgoDox.


Yes. My sketch is a monster, but I made and tried out a simpler example sketch that also doesn’t work in exactly the same way, I’m in bed so I’ll post it here after my nap. :smile:

I have eight key definitions. One of them works as expected: r4 c4, the bottom right finger key on the left side, which performs flawlessly as both a right curly bracket and a left control key. The others, including the corresponding key on the right side and a couple of the thumb keys won’t perform the modifier key function—when you hold them down you just get parentheses or whatever repeating across the screen until you release the key.

I think I must be using the right row and column numbers, since one of the key defs works. I’ll post my sketch later after my siesta.


#include “Kaleidoscope.h”
#include “Kaleidoscope-Qukeys.h”

// left hand
Key_Equals, Key_1, Key_2, Key_3, Key_4, Key_5, Key_LeftArrow,
Key_Delete, Key_Q, Key_W, Key_E, Key_R, Key_T, Key_Tab,
Key_Backspace, Key_A, Key_S, Key_D, Key_F, Key_G,
Key_LeftShift, Key_Z, Key_X, Key_C, Key_V, Key_B, Key_RightArrow,
Key_Backtick, Key_Quote, Key_UpArrow,Key_LeftArrow, Key_RightCurlyBracket,

  Key_NoKey, Key_LeftGui,
  Key_Backspace, Key_RightBracket, Key_RightParen,

  // right hand
  Key_RightArrow,      Key_6,         Key_7,  Key_8,       Key_9,      Key_0,         Key_Minus,
  Key_NoKey,           Key_Y,         Key_U,  Key_I,       Key_O,      Key_P,         Key_Backslash,
                       Key_H,         Key_J,  Key_K,       Key_L,      Key_Semicolon, Key_Quote,
  Key_RightControl,    Key_N,         Key_M,  Key_Comma,   Key_Period, Key_Slash,     Key_RightShift,
  Key_LeftCurlyBracket,Key_DownArrow, Key_End,Key_PageDown,Key_NoKey,

  Key_LeftAlt,  Key_Esc,



void setup() {

kaleidoscope::Qukey(0, 5, 2, Key_RightAlt),
kaleidoscope::Qukey(0, 5, 3, Key_LeftShift),
kaleidoscope::Qukey(0, 4, 4, Key_LeftControl),
kaleidoscope::Qukey(0, 4, 9, Key_LeftControl),
kaleidoscope::Qukey(0, 5, 11, Key_RightAlt),
kaleidoscope::Qukey(0, 5, 12, Key_RightShift)


void loop() {

So using this sketch, the RightCurlyBracket key, when held down, acts as a LeftControl key. However, the Right Bracket, Right Parenthesis, etc. keys when held do not obey the Qukeys definitions in the sketch.


Now I see what is wrong. The ErgoDox is wired sideways. Never mind :smile: