Got a quick Karabiner question on twitter over the weekend:
@johnlindquist have karabiner edm questions, i want to have layer that activates when holding <Tab> and another layer that activates when holding <Tab-t>,
— Nadeem Khedr (@NadeemKhedr) July 25, 2021
goal is to have actions like <Tab-h/k/j/l> and other actions for <Tab-t-h/k/j/l>, possible?
Assuming a layer and simlayer like these:
:layers {;:tab-mode {:key :tab};}:simlayers {;:t-mode {:key :t};}
I would approach combining them like so:
:main [;order matters*{:des "tab+t":rules [[:condi :tab-mode :t-mode][:h [:b :o :t :h]];]}{:des "t":rules [[:condi ["tab-mode" 0] :t-mode][:h [:t]];]}{:des "tab":rules [:tab-mode[:h [:t :a :b]];]};];}
:condi
allows you to define multiple conditions that need to be met for the following rules. This is very helpful for combining simlayers with applications. [:condi :tab-mode :chrome]
would allow you to define a set of rules specific to Chrome. Or a more complex example would be “Ableton rules when 2 fingers are on the trackpad”:
[:condi :ableton ["multitouch_extension_finger_count_total" 2]][:-r :loop_selection][:-s :split_clip]
*Order is important
You must press “tab”, then “t”, then “h”. But then as long as you’re holding down “tab” and “t”, you can slam down “h” as many times as you want. You could set up the reverse condition [:condi :t-mode :tab-mode]
, but then you’d need to press “t” then “tab”.
Full file:
{:default true; Layers Are Typically "Thumb Keys" or "Pinky Keys":layers {;:tab-mode {:key :tab};}:simlayers {;:t-mode {:key :t};}:main [;{:des "t":rules [[:condi ["tab-mode" 0] :t-mode][:h [:t]];]}{:des "tab":rules [:tab-mode[:h [:t :a :b]];]}{:des "tab+t":rules [[:condi :tab-mode :t-mode][:h [:b :o :t :h]];]};];}