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.