#include <dt-bindings/zmk/keys.h>
#include <behaviors.dtsi>
#include <dt-bindings/zmk/kscan_mock.h>

/*
* A hold-tap with long tapping term is pressed first.
* A hold-tap with short tapping term is quickly tapped.
* The short tapping term hold-tap should 'tap', not 'hold'.
*/

/ {
    behaviors {
        tp_short: short_tap {
            compatible = "zmk,behavior-hold-tap";
            label = "MOD_TAP_SHORT";
            #binding-cells = <2>;
            flavor = "tap-preferred";
            tapping-term-ms = <100>;
            quick-tap-ms = <200>;
            bindings = <&kp>, <&kp>;
        };
        tp_long: long_tap {
            compatible = "zmk,behavior-hold-tap";
            label = "MOD_TAP_LONG";
            #binding-cells = <2>;
            flavor = "tap-preferred";
            tapping-term-ms = <200>;
            quick-tap-ms = <200>;
            bindings = <&kp>, <&kp>;
        };
    };

    keymap {
        compatible = "zmk,keymap";
        label ="Default keymap";

        default_layer {
            bindings = <
                &tp_long LEFT_SHIFT F &tp_short LEFT_CONTROL J
                &kp D &kp RIGHT_CONTROL>;
        };
    };
};


&kscan {
    events = <
        ZMK_MOCK_PRESS(0,0,20)
        ZMK_MOCK_PRESS(0,1,20)
        ZMK_MOCK_RELEASE(0,1,200)
        ZMK_MOCK_RELEASE(0,0,10)
    >;
};