# Magic Combo Questions

**URL:** <https://community.keyboard.io/t/magic-combo-questions/4092>\
**Category:** Programming\
**Created:** [September 9, 2020, 3:59pm UTC](https://community.keyboard.io/t/magic-combo-questions/4092 "2020-09-09T15:59:24Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![iaji](https://avatars.discourse-cdn.com/v4/letter/i/b2d939/32.png) [@iaji](https://community.keyboard.io/u/iaji)\
**Post date:** [September 9, 2020, 3:59pm UTC](https://community.keyboard.io/t/magic-combo-questions/4092/1 "2020-09-09T15:59:24Z")

</div>

Hello,  
I’ve adapted my [keyboard](https://github.com/ibnuda/Squiggle/tree/master/minimalist) to use kaleidoscope. currently, i’m almost finished translating my [qmk keymap](https://github.com/ibnuda/qmk_firmware/tree/squiggle-minimalist/keyboards/squiggle_minimalist/keymaps/rick) to kaleidoscope.  
attached my keymap file: [Squiggle.ino](https://community.keyboard.io/uploads/short-url/vnS6R0AdIorxOW66TDoJrMSVdsx.ino) (4.8 KB)

one of the problem that i have when i translate it is magic combo.  
i tried to use magiccombo to emulate qmk’s combo, (e.g. r + c = slash) magiccombo still sends r and c while also sends slash. i read in the magic combo doc that

> The functionality assigned to these keys are not changed, and the custom action triggers as long as all keys within the set are pressed.

so, my questions are:

- is it possible to ignore the “assigned functionality of the keys” when pressing combo?
- if it is impossible to ignore the “assigned functionality of the keys” of magiccombo, is there any plugin that emulate qmk’s combo behaviour?
- is it possible to change the amount of possible combos? i tried to change `MAX_COMBO_LENGTH` in `MagicCombo.h` to, say, 31 and i still cannot use more than 4 combos.

thanks.

---

<div class="post-metadata">

**Author:** ![algernon](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/algernon/32/4404_2.png) [@algernon](https://community.keyboard.io/u/algernon)\
**Post date:** [September 22, 2020, 9:48pm UTC](https://community.keyboard.io/t/magic-combo-questions/4092/2 "2020-09-22T21:48:57Z")

</div>

Hi!

A bit late of a response, but hopefully still useful…

> [@iaji](#):
>
> - is it possible to ignore the “assigned functionality of the keys” when pressing combo?

At the moment, no. There’s an [issue](https://github.com/keyboardio/Kaleidoscope/issues/803) about it, I started working on it, but hit a deadend, and it’s been stalled since, unfortunately. As far as I remember, there are no plugins currently that do what QMKs combos do.

To make MagicCombo work the way QMK does, we’d basically need to rewrite it from the ground up, because trying to teach the current version to ignore combo participants is a much, much larger effort than a straight up rewrite.

On the other hand, the current MagicCombo behaviour _is_ kinda awkward, and more often than not, not what people want. Thus, a rewrite is in order. Luckily, Kaleidoscope is much more powerful nowadays, and provides more tools for plugin developers than it did when MagicCombo was conceived, so a rewrite shouldn’t be _too_ hard.

I’ll dump my ideas to the linked issue when I have a bit of time, and we’ll see how to go from there.

> [@iaji](#):
>
> is it possible to change the amount of possible combos? i tried to change `MAX_COMBO_LENGTH` in `MagicCombo.h` to, say, 31 and i still cannot use more than 4 combos.

That’s a bit weird, because MagicCombo should be using that constant… sounds like a bug, somewhere.

> [@iaji](#):
>
> - if it is impossible to ignore the “assigned functionality of the keys” of magiccombo, is there any plugin that emulate qmk’s combo behaviour?

There _might_ be a solution, but it’s a bit awkward to use. You could use Qukeys to turn `r` and `c` into dual-use keys: `r` when tapped, and a layer switch when held. On the target layer, `c` would be `\`, and `c` on the base layer would be set up similarly. This works for simple, 2-key combos, but anything more, and it becomes very messy.

---

<div class="post-metadata">

**Author:** ![merlin](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/merlin/32/3416_2.png) [@merlin](https://community.keyboard.io/u/merlin)\
**Post date:** [September 22, 2020, 10:11pm UTC](https://community.keyboard.io/t/magic-combo-questions/4092/3 "2020-09-22T22:11:40Z")

</div>

> [@algernon](#):
>
> There _might_ be a solution, but it’s a bit awkward to use. You could use Qukeys to turn `r` and `c` into dual-use keys: `r` when tapped, and a layer switch when held. On the target layer, `c` would be `\` , and `c` on the base layer would be set up similarly. This works for simple, 2-key combos, but anything more, and it becomes very messy.

An alternate idea, using a combination of Qukeys and MagicCombo:

You could define a bunch of qukeys to have the alternate (i.e. “hold”) value of `Key_NoKey`. Holding those keys longer than the Qukeys hold timeout would result in those keys being suppressed, so you could use any combination of them in a MagicCombo, and you wouldn’t get the undesired output, as long as you hold the keys long enough.

I wouldn’t say this is a _good_ solution, but it might be better than not doing it.
