Rollover from Tapdance key produces unwanted keystrokes

Plugin name: TapDance


I am trying to utilize the TapDance plugin on my Atreus, for example adding left and right brackets and braces to the comma and period keys, respectively, upon two and three taps. However this causes more annoyance than ease, as it gives unwanted keystrokes.

For instance, when I type with my not even fast speed, rolling over from comma to space produces a sequence of unpredictable number of commas and spaces (like “, ,”).

Since I have a Qukey set on space for layer shifting, I tested other, normal keys to see if that causes the interference. But the problem persists in that case as well, tapping comma and, say, “k” continuously with rapid alteration gives “kk,k,kk,k,kk,k,kk,k,kk,k,k,”.

Lastly, if I press and hold any of my TapDance keys, it gets stuck even after release, infinitely firing the base value of the key.

My question is: is there a way to solve this issue? I know that there exist some timing settings for the plugin, but I don’t really know what to set for this.

I believe PR #904 will fix this issue, if and when it gets merged. If you’re comfortable building your own firmware, please feel free to try it out.

Hey @merlin, thanks for coming back to me so quickly. I couldn’t spend as much time with this as I wanted in the past few weeks.

  • I went through the discussion of PR #904, and in light of the disagreements therein, I just would like to ask you, if it is worth putting in time and effort to figure out how to make your Kaleidoscope version work with my Arduino setup. Do you see a chance that this PR, or anything serving the same purpose (rewriting the state recording of the firmware) gets implemented in the stable release of Kaleidoscope?
    (The reason I ask this is that I am kind of new to fiddling with different repos and cpp code for the keyboard firmware. I am not so experienced, but I can follow instructions pretty well and can make educated guesses, this got me so far with putting my sketch together based on the not fully complete examples of plugin usages in the documentation.)

  • Regardless of the future of your PR, do you perhaps know if a set of instructions for pulling in any version of Kaleidoscope from any repo is readily available somewhere?
    I am on Windows and I would like to make this work with the Arduino solution, though I am open to any command line based solution that works on Windows.
    (I looked around on the forum here, and found some related questions and - sometimes cryptic - answers, but they seem to serve and solve different purposes (other OS, contributing to the firmware, etc.) or are outdated as the repository got restructured.)

Sorry for the long post and thanks for your answer in advance. I really appreciate your work put in here.

I don’t have any Windows machines, so I can’t give you specific instructions for that platform. If you’ve got a git clone of the main Kaleidoscope repo, you can use the following commands to check out PR #904 (pattern-match for other PRs):

$ git fetch origin pull/904/head:pr/904
$ git checkout pr/904

As far as I know, that should work on Windows just like it does all the UNIX-based platforms. To return to the main branch:

$ git checkout master

I’m not going to speculate about the probability of that PR or any other PR getting merged, as I have no influence on the process. I was under the impression that Jesse was too busy working on the vaccination effort in California to devote any time to Kaleidoscope, but he did just make a few updates. I doubt that means much, and I’m not going to pester him.

I believe #904 should work with any existing Kaleidoscope sketch, and should fix numerous bugs, particularly the ones you mentioned with TapDance. I just rebased it on the new updates to master, and it appears to pass all the simulator tests, anyway.

If enough people are interested in the unmerged improvements I’ve made to Kaleidoscope, I could be persuaded to publish them in a more “official” capacity, so it’s easier to try them out. #904 is just a part of a larger structural change that makes plugins much simpler and less buggy (and also more powerful), and Kaleidoscope itself much faster.

Regarding the technical help: apologies, I was not specific enough. Thank you for the git bit, I think I got this far on my own previously, I managed to check out your branch. I had problems with making Arduino aware of your version of Kaleidoscope. I tried deleting the latest release (v1.99.3) form the boards manager menu, as well as checking out your branch to the location where the boards manager would place the Kaleidoscope bundle. I also tried putting in the sketchbook folder and the libraries folder of Arduino, none of these combinations made it compile.

Do you maybe have an idea (or any place where I could read upon) how the git checkout workflow can be combined with the Arduino workflow. I don’t know how OS agnostic this is.

Ultimately I could also put up with a fully cli based solution of building the firmware with an alternate repo plus my own sketch, then flashing the keyboard.
(I found this: Command Line Upload Instructions for Windows · keyboardio/Kaleidoscope Wiki · GitHub I could work my way through with it. But this seems to offer a solution to a different problem, as I would still need to use Arduino to compile the sketch and export the hex file, so Arduino should be aware of the alternative Kaleidoscope version somehow.)

As for the rest: I know how open source development goes and I would never think anyone needs to be pressed on anything=) But that’s the beauty of it. I’m quite happy about how this place works.

I’d love to try out the version you are working on, once I have cleared the infrastructural barrier keeping me from it.

I have something you can try if you want to give it a shot building and flashing strictly from the CLI:

# Create a new working directory
mkdir kb && cd kb

# Clone the Kaleidoscope repository
git clone

# (Optional) Check out the PR branch you want to use
cd Kaleidoscope
git fetch origin pull/904/head:pr/904 && git checkout pr/904
cd ..

# Download and set up the rest of the bundle for builds
make -C Kaleidoscope/ setup

# Copy the Atreus sketch to a separate directory (or use your own sketch)
cp -a Kaleidoscope/examples/Devices/Keyboardio/Atreus .
# Change to the sketch directory
cd Atreus

# Build the sketch, using the Kaleidoscope source tree we just set up
KALEIDOSCOPE_DIR=../Kaleidoscope make

# Flash your keyboard
KALEIDOSCOPE_DIR=../Kaleidoscope make flash

I can’t confirm that there are no adjustments needed for these commands to work on Windows, as I’m not familiar with PowerShell, and don’t have Windows hardware to test it on, but I think it should work.

1 Like