Git Product home page Git Product logo

Comments (9)

yqrashawn avatar yqrashawn commented on June 18, 2024

There's no functionality to convert json config to edn one. You may need to convert them yourself. I converted my 3000 line json config to edn config within 1 hour when I finished goku. You can ask for help in the telegram group.

Or you can write a small program to watch for karabiner.json and insert your json rule after it changes.

from gokurakujoudo.

Madd0g avatar Madd0g commented on June 18, 2024

So it took like 4 hours, but I managed to copy all my most used rules to the goku syntax. I'm pretty happy because editing the json was seriously depressing.

Can you please help me with the things I couldn't figure out on my own?

  1. [solved]
  2. I'm trying to press enter when 'e' is held, but press regular 'e' when it's tapped, I just can't get it to work, this is what I tried and it produces an 'e' when I'm holding the key. I have many key holding rules I haven't done because I can't figure out this one.
{:des "long e -> enter" :rules [[:e {:key :e :repeat false} nil {:held :return_or_enter}]]}

also tried this, but it has the same problem, printing both symbols:

[:open_bracket {:key :open_bracket :repeat false } nil { :held [:!S9] :halt true :repeat false }]
  1. [solved] How to set the timeout for a delayed action? I have this and it's resetting too quickly, I want the variable to stay alive for 500ms. EDIT: I found it, it's delay.

  2. Is it possible to set the timeouts in the edn? I couldn't find how to do it, the more layers I create the more letters I lose while typing. I tried using simlayers but it gave up too quickly on the second key, so I'm using layers and constantly losing letters while typing :(

  3. I copied from your dotfile the double cmd+q handling, !C#Pq - what does the P stand for? I couldn't find it in the docs. (also your dotfile has a typo I think - "commandq" instead of "command-q")

  4. In the old karabiner I used multi-key sequences, don't even know how to call it, using KEYTOKEY_DELAYED_ACTION which allows to assign not just simple char+K or char+B but also char+K+K. I'm guessing it's possible? With multiple variables or something?

Thanks!

from gokurakujoudo.

yqrashawn avatar yqrashawn commented on June 18, 2024

2 I don't know if karabiner-elements support this feature, I tried several methods. Seems you need to combine :held and :alone and adjust those milliseconds. (place to setup rule specific milliseconds)
4 you can set universal sim key press threshold with karabiner gui. I'll update goku soon so that it can support rule specific sim threshold.
5 P is caps_lock (code)
6 Maybe it can be called "key chord". But "key chord" means sim key in emacs. You can achieve it by to_delayed_action, check here and here.

from gokurakujoudo.

Madd0g avatar Madd0g commented on June 18, 2024

2. about holding, after your comment, I gave it another try and finally found a combination that sort of works, but it takes forever (maybe 1000ms) for the hold to register, can you please give an example of how to set the timeout? I tried some things and none seem to affect it

This is what worked for me (note the arg in the end, is that where I'm supposed to pass the threshold values? I'm not experienced with clojure):

{:des "hold keys" :rules [
    [:open_bracket nil nil { :alone :open_bracket :held {:key :!S9 :repeat false :halt true }}, { :alone 50 :held 50 }]
    [:close_bracket nil nil { :alone :close_bracket :held {:key :!S0 :repeat false :halt true }}, { :alone 50 :held 50 }]
]}

4. Rule specific thresholds would be awesome - I'm currently trying out simlayers for letters and layers for "edge" symbols, like comma, tab, quote, etc. It's still not perfect and I would love to be able to finetune that.

5. Got chord to work! but I have to put these two lines with :b in separate sections, otherwise it doesn't work, is that normal?

{:des "slash mode", :rules [:slash-mode
  ; when these are together, they don't work
  [:b [:hs "app?name=firefox"] ["b_pressed" 1]]
  [:b nil ["b_pressed" 0] {:delayed {:invoked [[:hs "app?name=chrome"] ["b_pressed" 0]] :canceled ["b_pressed" 0]} :alone ["b_pressed" 1]}]
]}

:layers {
  :slash-mode {:key :slash}
}

from gokurakujoudo.

yqrashawn avatar yqrashawn commented on June 18, 2024

2

{:des "hold keys"
 :rules [[:open_bracket nil nil {:alone :open_bracket :held {:key :!S9 :repeat false :halt true} :params {:alone 50 :held 50}}]
         [:close_bracket nil nil {:alone :close_bracket :held {:key :!S0 :repeat false :halt true} :params {:alone 50 :held 50}}]]}

4 I'll update it as soon as I fix #17
5

{:des "slash mode",
 :rules
 ; when these are together, they don't work
 [:slash-mode
  [:b [:hs "app?name=firefox"] ["b_pressed" 1]]
  [:b nil ["b_pressed" 0] {:delayed {:invoked [[:hs "app?name=chrome"] ["b_pressed" 0]] :canceled ["b_pressed" 0]} :alone ["b_pressed" 1]}]]}

These two rules have different conditions. They have to be separated into to multiple rules.

from gokurakujoudo.

Madd0g avatar Madd0g commented on June 18, 2024

2
Yay, I put the :params in the wrong place initially, but after I looked closer and moved one curly brace, holding is finally almost perfect! Thank you so much, I'm so happy to have all my brackets on the same key finally.

Now the only problem left with holding is letters, because letters are usually typed fast and no matter which number I put in :alone it swallows the letter, this is what I tried:

[:e nil nil { :alone :e :held {:key :return_or_enter :repeat false :halt true } :params { :held 200 :alone 50 }}]

I'm trying to remap 'e' to enter when held. But with this rule, when I type 'power' it comes out as 'powr' unless I wait a while aftr hitting th lettr 'e'.

I opened this issue in KE, do you think it's a bug or just a matter of plugging in the right number?

Any idea why 2 timeouts are needed in KE while old karabiner only needed one ThresholdMillisecond::RawValue::200 for holding?

from gokurakujoudo.

yqrashawn avatar yqrashawn commented on June 18, 2024

There's something different between karabiner and karabiner-element. Old karabiner won't swallow "alone" keys.
I believe that's some system level changes introduced into macos by apple in 10.12. It might be one of the reasons why old karabiner don't work in 10.12 and makes tekezo write the new karabiner-element.

from gokurakujoudo.

yqrashawn avatar yqrashawn commented on June 18, 2024

By the way, why you are setting helding e to enter. Held is way more slow than just press entre imho.

from gokurakujoudo.

Madd0g avatar Madd0g commented on June 18, 2024

By the way, why you are setting helding e to enter. Held is way more slow than just press entre imho.

I don't use it while typing, more while navigating webpages, when I only use my left hand I can do quite a lot from my left side of the keyboard, besides pressing enter, for which I do not have a good mapping on the left side. Enter is needed when I have something focused after a search or after tabbing between fields for example and I don't want reach with my right hand.

I'm going to think of a nice simultaneous pair I think, maybe [:e :f]

Thanks for all your help!

from gokurakujoudo.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.