#2188·kanata

Feature request: Better handle e.g. `S-(a a)` in sequences

Author: mi2ebiCreated Sep 9, 2026Updated Sep 9, 2026
Labelsenhancement

Is your feature request related to a problem? Please describe.

One of the sequences I have is

(defvirtualkeys seq:lpar-lpar (unicode u+2e28))
(defseq         seq:lpar-lpar (S-9 S-9 nop0)  )

(with ralt as sldr when tapped and rctl as nop0 when tapped). So now I can press

shift↓ 9 shift↑ shift↓ 9 shift↑

to get u+2e28. But I'd also like to be able to do

shift↓ 9 9 shift↑

If I try this, I get

13:47:00.2537 [ERROR]   × Error in configuration
     ╭─[seqs.kbd:195:1]
 195 │   
 196 │   seq:lpar-lpar (S-(9 9) nop0)
     ·                    ──┬──
     ·                      ╰── Error here
 197 │   
     ╰────
  help: defseq expects pairs of parameters: <virtual_key_name> <key_list>
        Found invalid key/chord in key_list

        For more info, see the configuration guide:
        https://github.com/jtroo/kanata/blob/main/docs/config.adoc

13:47:00.2538 [ERROR] failed to parse file

Describe the solution you'd like.

For chords it makes perfect sense that S-(9 9) is banned, you can't press 9 and 9 at the same time, they're the same key. For sequences, S-(thing1 thing2) instead means tapping thing1 and then thing2 all while shift is being held. I'd like this to also work when thing1 and thing2 are the same key.

Describe alternatives you've considered.

Accepting the inconsistency.

Additional context

No response