/*
 * Copyright (c) 2021 The ZMK Contributors
 *
 * SPDX-License-Identifier: MIT
 */

#include <behaviors.dtsi>
#include <dt-bindings/zmk/keys.h>
#include <dt-bindings/zmk/bt.h>
#include <dt-bindings/zmk/rgb.h>
#include <dt-bindings/zmk/ext_power.h>

#define LAYER_ID_DEFAULT 0
#define LAYER_ID_FUNC 1
#define LAYER_ID_ALT 2

/ {
    behaviors {
        tildeesc: tilde_escape {
            compatible = "zmk,behavior-mod-morph";
            label = "TILDE_ESCAPE";
            #binding-cells = <0>;
            bindings = <&kp ESC>, <&kp TILDE>;
            mods = <(MOD_LSFT)>;
        };
    };

    combos {
        compatible = "zmk,combos";
        combo_layer_navigation { 
            key-positions = <31 18 33>; 
            bindings = <&tog LAYER_ID_FUNC>; 
        };
        combo_shift_lock { 
            key-positions = <18 32>; 
            bindings = <&kt LSHFT>; 
        };
    };

    keymap {
        compatible = "zmk,keymap";

        default_layer {
            label = "ANSI";
            bindings = <
&tildeesc        &kp N1 &kp N2 &kp N3 &kp N4 &kp N5     &kp N6 &kp N7 &kp N8    &kp N9  &kp N0    &kp MINUS &kp EQUAL &kp BSPC &kp BSPC
&kp TAB          &kp Q  &kp W  &kp E  &kp R  &kp T      &kp Y  &kp U  &kp I     &kp O   &kp P     &kp LBKT  &kp RBKT  &kp BSLH
&mo LAYER_ID_ALT &kp A  &kp S  &kp D  &kp F  &kp G      &kp H  &kp J  &kp K     &kp L   &kp SEMI  &kp SQT   &kp ENTER
&kp LSHFT        &kp Z  &kp X  &kp C  &kp V  &kp B      &kp N  &kp M  &kp COMMA &kp DOT &kp SLASH &kp RSHFT &none
    &kp LCTRL &kp LGUI &kp LALT &tog LAYER_ID_FUNC          &kp SPACE &mo LAYER_ID_FUNC &kp RCTRL &kp RALT
            >;
        };

        function_layer {
            label = "Function";
            
            bindings = <
&kp GRAVE  &kp F1       &kp F2       &kp F3       &kp F4       &kp F5          &kp F6 &kp F7 &kp F8 &kp F9 &kp F10 &kp F11 &kp F12 &kp DEL &kp DEL
&kp CAPS   &kp PG_UP    &kp HOME     &kp UP       &kp END      &trans          &trans &trans &trans &trans &trans  &trans  &trans  &kp INS
&trans     &kp PG_DN    &kp LEFT     &kp DOWN     &kp RIGHT    &trans          &trans &trans &trans &trans &trans  &trans  &kp PSCRN
&bt BT_CLR &bt BT_SEL 0 &bt BT_SEL 1 &bt BT_SEL 2 &bt BT_SEL 3 &bt BT_SEL 4    &trans &trans &trans &trans &bootloader &reset &kp C_PLAY_PAUSE
    &trans &trans &trans &trans                                                    &trans &kp C_VOL_UP &kp C_VOL_DN &kp C_MUTE
            >;
        };

        alt_layer {
            label = "Alt";
            
            bindings = <
&trans &kp LA(F1) &kp LA(F2) &kp LA(F3) &kp LA(F4) &kp LA(F5)    &kp LA(F6) &kp LA(F7) &kp LA(F8) &kp LA(F9) &kp LA(F10) &kp LA(F11) &kp LA(F12) &trans &trans
&trans &trans     &trans     &trans     &trans     &trans        &trans     &trans     &trans     &trans     &trans      &trans      &trans      &trans
&trans &trans     &trans     &trans     &trans     &trans        &trans     &trans     &trans     &trans     &trans      &trans      &trans
&trans &trans     &trans     &trans     &trans     &trans        &trans     &trans     &trans     &trans     &trans      &trans      &none
    &rgb_ug RGB_HUI &rgb_ug RGB_HUD &rgb_ug RGB_BRI &rgb_ug RGB_BRD  &ext_power EP_TOG &trans &trans &trans
            >;
        };
    };
};
