Software TapDelay
Pre-releaseThis version handles the difference between Tap/Hold by using internal timers. This is important because from now on there will be different goroutines that may cause race conditions. I'm still thinking about how to detect such scenarios.
The configuration file now has the layers section that contains all the previous conf. This is to allow other parameters at the root of the configuration.
Now key events are held until Tap/Hold events are resolved. This is only active when you map Tap/Hold events in your configuration. Let's say that you want the Shift to be a ( when tap and a normal shift when Held. If you Tap shift, you won't see the ( after the TapDelay expires or you press another key. You do not really need to be aware of this, It basically behaves as you expect. If not, feel free to open an issue