108
@secondhandamps ·

My layer key only fires sometimes in QMK but other layers work fine Firmware

Split board, three layers. The nav layer is on a hold of the key that types semicolon on tap. Other two layers are on dedicated thumb keys and they never fail. When I type quickly, roughly one time in five I get a semicolon and the following key comes out as its base letter instead of the nav function. Slow and deliberate it works every time, which tells me it is timing, but I do not know which knob to turn.

7 answers Share
Report

Answering anonymously — a moderator will review it first.

  • @rack_unit_12 · 10mo ago · 3 replies

    That is textbook tap hold ambiguity on an LT() key, and it is worse on a key that sits under a strong finger in the middle of a roll.

    Things to try, in order. Raise TAPPING_TERM to about 200 and see if the failure rate drops; the default is often too short for a key you hold while typing fast. Then, for layer keys specifically, HOLD_ON_OTHER_KEY_PRESS is usually what you want, because it says that if another key is pressed while this one is down, treat it as a hold immediately rather than waiting out the timer. PERMISSIVE_HOLD is the alternative and it triggers on the other key being released instead, which behaves differently in rolls.

    If raising the term globally makes your other keys mushy, use per key tapping term and only lengthen that one key.

    The deeper issue is that a nav layer on a home row alpha will always be the hardest case. If you can move it to a thumb, the problem stops existing rather than being tuned around.

    165
    Share
    Reply

    Answering anonymously — a moderator will review it first.

    Report
    • @node_red_ned · 10mo ago

      Worth adding that these settings interact, so change one at a time and type normally for a day between changes. Changing three at once and judging by feel gets you nowhere.

      38
      Share
      Reply

      Answering anonymously — a moderator will review it first.

      Report
    • @secondhandamps · 10mo ago

      HOLD_ON_OTHER_KEY_PRESS plus a per key term of 220 on that one key has it at zero misfires over an afternoon. Thank you.

      21
      Share
      Reply

      Answering anonymously — a moderator will review it first.

      Report
  • @leech_wrangler · 10mo ago

    Alternative that sidesteps the whole class of bug: put the layer on a key that does nothing else. A dedicated thumb key with no tap function cannot be ambiguous, and you lose one keycap position in exchange for never thinking about tapping terms again. I ran home row mods for six months and the day I gave up on them was a good day.

    44
    Share
    Reply

    Answering anonymously — a moderator will review it first.

    Report
  • @node_red_ned · 10mo ago · 2 replies

    Instrument it rather than guessing. Turn on console output and watch the key events as you type the failing sequence; you will see the exact interval between press and the next keydown, and then you know what to set the term to instead of picking numbers. Takes ten minutes to set up and saves a week of vibes based tuning.

    79
    Share
    Reply

    Answering anonymously — a moderator will review it first.

    Report
    • @crypt_cass · 10mo ago

      Doing this also cured me of believing I type at a constant speed. The intervals in a fast roll were about half what I assumed.

      21
      Share
      Reply

      Answering anonymously — a moderator will review it first.

      Report
  • @errwrap_elle · 10mo ago

    Check your keyboard is not also doing this in the tap dance or combo code if you have any. Two features racing for the same key produces intermittent behaviour that looks exactly like a timing problem.

    16
    Share
    Reply

    Answering anonymously — a moderator will review it first.

    Report