Mapping multiple normal keys to one (chord key)

I tried the plugin MagicCombo, however it persist the key’s previous action.

I want to map “df” to ESC. qmk_firmware’s process_combo_event allow to this.

I will likely update MagicCombo to mask out the original action, until a timeout. If a combo is not held by the end of the timeout, or if any key is released, it will unmask the masked ones and input them. At least, that’s the idea… we’ll see how many corner cases I run into.

Cool, thanks. I’ll be your first batch tester.

This is exactly what I’m trying to figure out right now. I just got my Keyboardio and want to map some “Hyper” (Alt+Shift+Ctrl+Cmd) and “Meh” (Alt+Shift+Ctrl) keys but don’t know how yet. I use these combos constantly and it’s throwing me off right now without them.

Found the answer… Mapping a single keypress to a chord

2 Likes

hi All

I’ve just started playing with my keyboardio and realized that enter key is located way too far for my short fingers, so I wanted to map fj combo to Key_Enter. I faced the same problem as TS: I keep on receiving fj before new line symbol.

This is very sad, because I can’t stretch my palm so wide.

But maybe I’m doing something wrong?

Here’s the code:

enum {
  COMBO_ENTER
};

static void hitEnter(uint8_t combo_index) {
  kaleidoscope::hid::pressKey(Key_Enter);
}

USE_MAGIC_COMBOS(
{
  .action = hitEnter,
  .keys = { R2C4, R2C11}
}
);

I tried this:

static void hitEnter(uint8_t combo_index) {
  kaleidoscope::hid::pressKey(Key_Backspace);
  delay(50);
  kaleidoscope::hid::pressKey(Key_Backspace);
  kaleidoscope::hid::pressKey(Key_Enter);
}

but it dit not help — only the first letter was deleted. I tried 100ms delay in between two backspaces, but it was still too few. I can’t make the delay bigger for obvious reasons.

Hello all

I recently started looking into the MagicCombo plugin, I want to try mapping some of the function keys like Home, End, Page Up, and Page down to chords on the right hand side of the keyboard were the arrow keys are. I have successfully mapped the home key to thes J and K but then ran into the same issue as Shihpin that the original keys are not masked.

Changing the behavior of this plugin seems to me would be quite complex. This would require a delay before sending each keypress since both combo keys will not be down at the exact same time, then it will need to check if there is a MagicCombo for the currently held down keys, then execute the MagicCombo or sending the key presses.

I can do some basic code editing writing macros en modify most of the settings on my model01 using the Arduino editor but this is a step beyond me.

I am really curious if other people are using this plugin and running into this problem?

MagicCombo was designed so that it does not mask the original keys, that’s a conscious design choice, because it makes the implementation a lot simpler. On the other hand, there’s been plenty of issues with this approach, and masking the combo participants until a short timeout makes more sense in a lot of use-cases.

I think I have an idea how to implement it in a reasonable way. Would you be willing to file an issue about this against Kaleidoscope, as a feature request for the MagicCombo plugin? The last time I contemplated doing this, I completely forgot all about it. :confused:

1 Like

Hello Algernon,

Thanks for the quick reply.

I created an issue unfortunately, I cant seem to set any labels on this issue.

1 Like

For now, I’m using qmk firmware for the combo key.

I noticed there was a Model01 QMK Firmware available, but it seems a bit drastic to switch to QMK for just chording. Also I thought not all features of the Model01 were supported by QMK.

I am mainly interested in chording because I am still looking for an ergonomic keyboard for at home, the Model01 with shipping and tax is a bit expensive so I am considering a smaller keyboard running QMK. Problem is most of these smaller keyboards don’t have room for an enter key near the right index finger so I wat to do some experimenting with magicCombo.

I’m using QMK on my model 01, it supports everything I need.

I currently have the Home button as a magic combo and noticed that the keys do not have to be down at the same time, pressing them in quick succession has the same effect, this is probably easy to avoid by using a different key combo (words ending in -ijk are not uncommon in the dutch language. Is it possible to change the timing to require a shorter time between the key presses?