Can I make the enter key require a 1s key-press before activating?

I just got my Model01 and I’m going through the painful learning curve with it. I’m using the default firmware (QWERTY) and I have to admit it is a steeper curve than I was expecting. Typing is generally ok, but the modifiers are where I am having the most difficulties.

However, I do have one fairly big issue. My right index tends to overshoot the ‘H’ and hit the Enter button quite frequently. Although this is annoying enough when typing normally, it is actually quite disruptive in chat windows/etc where I tend to send out messages that are incomplete, and un-edited.

So I was thinking of a couple of different solutions.

  1. Making the Enter require a modifier (ie: Fn-Enter), but that seems like it might be even more of a pain
  2. Make the Enter key require a longer press before it is activated. That way, an accidental overshoot won’t actually trigger it.

I am leaning more towards Option 2, but am not sure how to do something like that. I’ve read through the Wiki fairly quickly, but having never programmed Arduino before, I’m not entirely sure where to start.

Is something like that fairly simplistic to accomplish?

Thanks,

Eric

I have a hammer, so every problem looks like a nail…

You could get what you want with Qukeys. It would be an unusual use-case, but it would work. With a full Qukey object, you can have the primary (“tap”) value be Key_NoKey, and the alternate (“hold”) value be Key_Enter. You could then set the hold timeout to any convenient value; anything above 200ms would probably work well.

1 Like

@merlin Thanks for the suggestion. I’ve read through the Qukeys readme a handful of times but am a bit unclear on what the definition needs to be. From what i read, I think I need to:

  1. modify the QWERTY layer and replace the Key_Enter value with Key_NoKey

  2. enable Qukeys with the following definition:

    kaleidoscope::plugin::Qukey(0, KeyAddr(6, 0), Key_Enter)

Functionally, would using ___ instead of Key_NoKey be equivalent given that it is the base layer?

Finally, I see that the QuKeys GitHub repo https://github.com/keyboardio/Kaleidoscope-Qukeys is marked as archived and read-only. Has the plugin been moved somewhere else?

Thanks,

Eric

Yes, that would work. I would still use Key_NoKey or its alias XXX to better reflect the intent, however. (___ is likewise an alias for Key_Transparent.)

Yes. It’s now a core plugin, in the Kaleidoscope repository (it replaced DualUse). The archived repository is very out of date, and won’t work with current Kaleidoscope. (The current master branch of Qukeys is also old; there’s a much improved rewrite that has been waiting to get merged for a few months.)

@merlin Thanks,but I must be doing something wrong. I wanted to test it out on a more innocuous key, so I chose the Key_LeftGui to test upon. However, when I keep the key pressed, I don’t get the key event sent. I’ve modified my firmware file to read the following:


#if defined (PRIMARY_KEYMAP_QWERTY)
[PRIMARY] = KEYMAP_STACKED
(___, Key_1, Key_2, Key_3, Key_4, Key_5, Key_LEDEffectNext,
Key_Backtick, Key_Q, Key_W, Key_E, Key_R, Key_T, Key_Tab,
Key_PageUp, Key_A, Key_S, Key_D, Key_F, Key_G,
Key_PageDown, Key_Z, Key_X, Key_C, Key_V, Key_B, Key_Escape,
Key_LeftControl, Key_Backspace, Key_NoKey, Key_LeftShift,
ShiftToLayer(FUNCTION),


// First, tell Kaleidoscope which plugins you want to use.
// The order can be important. For example, LED effects are
// added in the order they’re listed here.
KALEIDOSCOPE_INIT_PLUGINS(
// Initialize the Qukeys plugin
Qukeys,

/** The ‘setup’ function is one of the two standard Arduino sketch functions.

  • It’s called when your keyboard first powers up. This is where you set up
  • Kaleidoscope and any plugins.
    */
    void setup() {
    QUKEYS(
    kaleidoscope::plugin::Qukey(0,KeyAddr(2,4), Key_LeftGui)
    );
    Qukeys.activate();
    I’ve uploaded the firmware, and just pressing the cmd button does nothing. However, I was expecting that holding it down for more than 250ms (the default) would send the key event.

Did I forget to do something important?

Thanks,

Eric

I can’t check right now, but I don’t think KeyAddr(2,4) is the address of the key you want.

That would make more sense. I wasn’t sure what the keymap was for that, so I counted using the standard nomenclature. I took a look at the Kaleidoscope-Hardware-Model01.h file and think it is supposed to be 2,7.

I left my keyboard at the office so will need to test it out tomorrow.

Thx!

Eric

I had the same problem with chat (especially frustrating in online games), and so rebound Enter to Fn-Enter. It’s been massively successful for me.

(I did it via a custom firmware, since I have other modifications too, but if you eventually decide to try this route, you should be able to accomplish it without any code using Chrysalis, the graphical configurator tool for Keyboardio: https://github.com/keyboardio/Chrysalis/releases. You might need to update your firmware first, but Chrysalis will help you do so if it’s necessary. Otherwise it’s a three-line change to the default firmware sketch.)

FYI, you can find the key coordinate layout here:

Where RxCy is row x, column y.

1 Like

@algernon — That PNG has a transparent background, so the key coordinates are (almost) invisible to those of us who use a dark theme.