yqrashawn / GokuRakuJoudo

config karabiner with ease
GNU General Public License v3.0
1.17k stars 120 forks source link

Is it possible to have a one shot layer ? #150

Closed maindoor closed 2 years ago

maindoor commented 2 years ago

Meaning, Is it possible to configure the following key structure: 1) normal functioning keys 2) press "a" key ---> send normal "a" key-code to the application 2) press Home key ---> one shot hyper key, next key press goes to a one shot layer 3) press "a" key ---> sends Ctrl+a, all keys go back to normal functioning keys 4) press "a" key ---> sends normal "a" key-code to the application.

How do I achieve this functionality ?

Thanks.

yqrashawn commented 2 years ago

It's possible

{:des   "#150"
              :rules [[:1 ["hyper-mode" 1] {:delayed {:invoked ["hyper-mode" 0]
                                                      :canceled ["hyper-mode" 0]}
                                            :params {:delay 300}}]
                      :hyper-mode
                      [:a :!Ta]]}

Above rules

  1. enter hyper-mode when 1 is pressed
  2. exit hyper-mode if any key pressed
  3. exit hyper-mode if nothing pressed in 300 ms
  4. press a in hyper-mode issue ctrl + a
yqrashawn commented 2 years ago
{:des   "#150"
              :rules [[:1 ["hyper-mode" 1] :!hyper-mode]
                      :hyper-mode
                      [:a [["hyper-mode" 0] :!Ta]]
                      [{:any :key_code} ["hyper-mode" 0]]]}

this one should be right

  1. enter hyper-mode when 1 is pressed
  2. exit hyper-mode if any key other than a is pressed
  3. press a in hyper-mode issue ctrl + a