New plugin: Qukeys (yet another SpaceCadet/DualUse-type plugin)

plugin

(JP) #4

Love it, is there a cat involved?


(Michael Richters) #5

@james.nvc (and anyone else interested in giving this a try):

The current head of the master branch of Arduino-Boards (if all the submodules are updated) has everything necessary to build Kaleidoscope-Qukeys now.

Also, I just made a couple of commits that should make it a bit easier to add what’s needed to the sketch: see the Qukeys.ino file for examples.


(Michael Richters) #6

If you want to try out Qukeys, but setting it up is difficult, I’d be happy to help. The configuration isn’t as straightforward as DualUse or SpaceCadet, but it’s really designed to do what you want (overloading a symbol key with a modifier) as opposed to SpaceCadet (overloading a modifier key with a symbol).


Space cadet on letter keys
(Tyler Smith) #7

Sounds great! I cloned the repo into Arduino/hardware/keyboardio/avr/libraries/, and just added the include line to see if it installed properly. I get the following errors with Make:

make
BOARD_HARDWARE_PATH="/home/tws/Arduino/hardware" /home/tws/Arduino/hardware/keyboardio/avr/libraries/Kaleidoscope/bin//kaleidoscope-builder build-all
Building output/Model01-Firmware/Model01-Firmware (0.0.0-gv1.13-60-g8f58-dirty) ...
/home/tws/Arduino/hardware/keyboardio/avr/libraries/Kaleidoscope-Qukeys/src/Kaleidoscope/Qukeys.cpp: In static member function 'static int8_t kaleidoscope::Qukeys::lookupQukey(uint8_t)':
/home/tws/Arduino/hardware/keyboardio/avr/libraries/Kaleidoscope-Qukeys/src/Kaleidoscope/Qukeys.cpp:64:38: error: 'class Layer_' has no member named 'lookupActiveLayer'
           (qukeys_[i].layer == Layer.lookupActiveLayer(row, col))) {
                                      ^
/home/tws/Arduino/hardware/keyboardio/avr/libraries/Kaleidoscope-Qukeys/src/Kaleidoscope/Qukeys.cpp: In static member function 'static void kaleidoscope::Qukeys::flushKey(int8_t, uint8_t)':
/home/tws/Arduino/hardware/keyboardio/avr/libraries/Kaleidoscope-Qukeys/src/Kaleidoscope/Qukeys.cpp:110:39: error: 'class Keyboard_' has no member named 'keyReport'
   memcpy(hid_report.allkeys, Keyboard.keyReport.allkeys, sizeof(hid_report));
                                       ^
/home/tws/Arduino/hardware/keyboardio/avr/libraries/Kaleidoscope-Qukeys/src/Kaleidoscope/Qukeys.cpp:112:19: error: 'class Keyboard_' has no member named 'keyReport'
   memcpy(Keyboard.keyReport.allkeys, Keyboard.lastKeyReport.allkeys, sizeof(Keyboard.keyRepor

etc.

What else do I need to do to install it?


(Michael Richters) #8

You’ll need to update your Arduino-Boards clone. There have been recent changes to Kaleidoscope and KeyboardioHID that are required to build Qukeys.


(Tyler Smith) #9

I’m not sure what that means. I did this:

~/.../keyboardio/avr > git pull

This appeared to do what I needed, but the error persisted. Looking at the documentation here:

I then tried:

~/.../keyboardio/avr > make checkout-submodules
git pull
Already up-to-date.
git submodule update --init --recursive
Submodule 'libraries/Kaleidoscope-NumPad' (https://github.com/Keyboardio/Kaleidoscope-NumPad) registered for path 'libraries/Kaleidoscope-NumPad'
Cloning into '/home/tws/Arduino/hardware/keyboardio/avr/libraries/Kaleidoscope-NumPad'...
Submodule path 'libraries/Kaleidoscope-NumPad': checked out '952198a98af9a19174d9ba1ea73d8515a0f28ebb'

I’m still getting the same errors when I try to make with QUkeys included.


(Michael Richters) #10

Try the command:

git submodule status

You should see the following line in the output:

 c060c5ef7e76f5bce5524d66921a1179724b260d libraries/Kaleidoscope (shipped-model00-xmas-924-gc060c5e)

If it’s showing something different, your Kaleidoscope repo is not up to date.


(Tyler Smith) #11

This is what I get:

67aa56022d5f429000448ca2b4fbaf8cf5d1aef7 libraries/Kaleidoscope (shipped-model00-xmas-881-g67aa560)

I have already pulled from the repos, do I need to switch branches or something?


(Michael Richters) #12

Yeah, that’s quite out of date now.

Try this: in your Arduino-Boards repo:

git submodule update --remote --init

(Tyler Smith) #13

That did it, thanks!


(Michael Richters) #14

Oh, maybe you have a particular version of Arduino-Boards checked out. Do this first:

git checkout master
git pull

(Tyler Smith) #15

Got it working now, thanks!


(Michael Richters) #16

Excellent! Just in case you cloned Qukeys more than ~an hour ago, I just fixed a bug this morning, so you might want to update.


(Tyler Smith) #17

Ok, moving on from compiling and flashing, I have now set it up to put Shift, Control, Alt, under the middle, ring and pinky finger of home row on each side. This is really cool! It even works for combined modifiers, so I can do hold down l and ;, to get C-A. It’s sort of intuitive too, so I can imagine getting up to speed reasonably quickly.

I’m curious, how are you using your thumb keys? I’ll probably keep dedicated modifer keys on my layout somewhere, but I’m not sure they need to go on the thumbs anymore…


(Michael Richters) #18

Awesome! I’m so happy someone is using my work! Let me know if you have any problems.

As for my keymap… Well, I have plans, but I’m hopeless at typing on it so far, and I’ve been enjoying playing with Kaleidoscope so much, that I haven’t done much. I had planned to use the thumb arcs almost the same as in the default keymap, but my own plugin seems to work better than I’d hoped, so I might use them for layer selection. Or stick with modifiers, because I want to try OneShot modifiers, and those can’t really be combined with Qukeys… Well, they could, but I can’t think of a scenario where that would actually be useful

I’m holding off trying to really type on a Model01 until I can really get my intended keymap done, because I want it to be totally different than a “normal” keyboard so my brain doesn’t confuse the two and overwrite my QWERTY ability. And I need to write one more plugin (working title: “Unshifter”) in order to get the keymap I want.


(Florent Nicoulaud) #19

Hi there,

I’m trying to use your plugin but I can’t get it to compile.
I’m getting something like that:

C:\Users\Z017316\Documents\Arduino\libraries\Kaleidoscope-Qukeys\src\Kaleidoscope\Qukeys.cpp:60:37: error: 'class Layer_' has no member named 'lookupActiveLayer'

           (qukeys[i].layer == Layer.lookupActiveLayer(row, col))) {

                                     ^

Any idea ?

Thanks.


(Michael Richters) #20

Your version of Kaleidoscope is older than the one that Qukeys requires. Did you clone the git repository Arduino-Boards, or did you use the Arduio GUI boards-manager to install Kaleidoscope?


(Florent Nicoulaud) #21

I used the GUI, I’ll do the git clone to get the newest one, thanks.


(Florent Nicoulaud) #22

It’s working fine, thank you for the help.
And your plugin works like a charm, it’s doing what I’ve been unable to achieve with both SpaceCadet and DualUse !


(Michael Richters) #23

Fantastic! Thanks for trying it out, and let me know if you have any problems. There are some known compatibility issues (see earlier questions in this thread), but I have a fix for at least one of them in a branch of Kaleidoscope if that becomes a problem for you.

If you feel like sharing, I’m interested in how you’ve configured it, and how fast you type on your Model01.