Home Row Layer/Modifier Keys When Held

Hi!

I’m just getting started with this keyboard, coming from an Ergodox EZ since I found the EZ’s thumb clusters too difficult to reach. I’m finding the Model01’s far more comfortable thus far. I did spend about a week on the EZ and had a layout I really liked in regard to having modifiers and layers access when holding down home row keys. See here:
https://configure.ergodox-ez.com/ergodox-ez/layouts/6abVD/latest/0

Can someone advise at a high level what’s the best way to achieve this on the Model01? It seems like QuKeys is a plugin that can do this from what I can find but I’m not certain. I also see that QuKeys was recently completely rewritten to address problems with home row modifiers but that rewrite appears incomplete. I’m hoping someone with this setup can chime in with some advice.

FYI I have no issue editing the arduino code and reflashing the board’s firmware. I’ve got some experience with C code and I already did it for a few key remaps. I just want to make sure I’m headed in the right direction before I dive into editing a bunch of code.

Thank you!

I looked at your Ergodox layout. I think that you can reproduce it easily and rapidly using Chrysalis.

1 Like

oo that’s great to hear, thank you. I’ll have to try that tonight.

Unrelated to this topic, but if you have any advice… when I first tried Chrysalis (latest 0.6) to update firmware, it gave an error and failed. I briefly troubleshot then went to Arduino but I think its permissions related (Mac OS Mojave) so I’ll explore that more. The keyboard device has write access for owner, group, all (666) so I’m not exactly sure what the deal is. My user is not in the ‘wheel’ group like the keyboard is but I didn’t want to add my user to that group without understanding the consequences.

Qukeys has indeed been rewritten with a better algorithm for determining intended user input. It’s not incomplete, but it hasn’t yet been merged into the Kaleidoscope master branch because I’ve been away from home since certain prerequisite changes got merged. It could be as little as a few days until it does get merged, but I can’t make any guarantees.

1 Like

I am using Chrysalis 0.5.0, on MacOS High Sierra, downloaded from here: https://github.com/keyboardio/Chrysalis/releases/tag/chrysalis-0.5.0

The layout editor works perfectly, and I updated the firmware without problem (on startup) selecting the experimental version. I have not, unfortunately, been able to get anywhere with the colormap editor, either I’m missing something or it isn’t ready, and sadly, know nothing about programming or using plugins, therefore unable to use the interesting Functional Colors plugin. Perhaps the .6 Chrysalis (I haven’t tried it) has a deficiency in the firmware update function.

1 Like

I tried setting this up with Chrysalis 0.5 last night, I’m able to flash the board and swap letters around. The home row hold for modifiers and layout switch functionality appears to be in the software and doesn’t give errors when flashing (except hold for shift+ctrl) but doesn’t actually work when testing with the board. Looks like I’ll be going for the arduino route with qukeys. Thanks for info all.

So I got Qukeys working, seems to do the job based on brief testing. Follow up question, what’s the best way to assign multiple modifiers (ctrl+shift) to a held Qukey? There seem to be multiple ways and I’m hoping someone with more perspective can advise. @merlin, is that something you’d be willing to provide an opinion on?

The methods I’ve found -

  1. as the key definition - LSHIFT(Key_LeftCtrl)
  2. Create a macro then use that as the key definition
  3. #define’ a custom key

Not sure if there’s an advantage to one over the other when used in Qukeys.

thread referenced:

I wouldn’t complicate things by using a Macros key, though it should work.

I also wouldn’t bother with a preprocessor macro unless I was planning to use it in multiple places, or to make the keymap more readable. And I’d use a constexpr variable definition rather than a #define, for that matter.

1 Like