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

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

// Short versions
#define RGBON   &rgb_ug RGB_ON
#define RGBOFF  &rgb_ug RGB_OFF
#define RGBTOG  &rgb_ug RGB_TOG
#define RGBHUI  &rgb_ug RGB_HUI
#define RGBHUD  &rgb_ug RGB_HUD
#define RGBSAI  &rgb_ug RGB_SAI
#define RGBSAD  &rgb_ug RGB_SAD
#define RGBBRI  &rgb_ug RGB_BRI
#define RGBBRD  &rgb_ug RGB_BRD
#define RGBEFF  &rgb_ug RGB_EFF


/*
 * Assign the cs-gpios pin to 4.
 * Uncomment these next few lines if implementing nice!view Displays
 */
//nice_view_spi: &spi0 {
//  cs-gpios = <&pro_micro 4 GPIO_ACTIVE_HIGH>;
//};


/ {

    keymap {
        compatible = "zmk,keymap";

        default_layer {
            label = " QWERTY";
            bindings = <
&kp ESC    &kp N1     &kp N2     &kp N3     &kp N4     &kp N5                           &kp N6     &kp N7     &kp N8     &kp N9     &kp N0     &kp BSLH
&kp TAB    &kp Q      &kp W      &kp E      &kp R      &kp T                            &kp Y      &kp U      &kp I      &kp O      &kp P      &kp GRAV
&kp CAPS   &kp A      &kp S      &kp D      &kp F      &kp G                            &kp H      &kp J      &kp K      &kp L      &kp SEMI   &kp SQT
&kp LSHFT  &kp Z      &kp X      &kp C      &kp V      &kp B     &kp LGUI    &kp RGUI   &kp N      &kp M      &kp COMMA  &kp DOT    &kp FSLH   &kp RSHFT
                             &kp LALT   &kp LCTRL  &lt 1 RET  &lt 2 MINUS    &lt 2 EQUAL  &lt 1 SPACE  &kp BSPC   &kp DEL
            >;

            sensor-bindings = <&inc_dec_kp C_VOL_UP C_VOL_DN>;
        };

        lower_layer {
            label = " Lower";
            bindings = <
&trans     &kp F1     &kp F2     &kp F3     &kp F4     &kp F5                           &kp F6     &kp F7     &kp F8     &kp F9     &kp F10    &kp F11
&trans     &trans     &trans     &trans     &trans     &trans                           &kp PG_UP  &kp HOME   &kp UP     &kp END    &trans     &kp F12
&trans     &trans     &trans     &trans     &trans     &trans                           &kp PG_DN  &kp LEFT   &kp DOWN   &kp RIGHT  &trans     &trans
&trans     &trans     &trans     &trans     &trans     &trans     &trans     &trans     &trans     &trans     &trans     &trans     &trans     &trans
                                 &trans     &trans     &trans     &trans     &trans     &trans     &trans     &trans
            >;

            sensor-bindings = <&inc_dec_kp C_VOL_UP C_VOL_DN>;
        };

        raise_layer {
            label = " Raise";
            bindings = <
&trans     &trans     &trans     &trans     &trans     &trans                           &bt BT_SEL 0  &bt BT_SEL 1  &bt BT_SEL 2  &bt BT_SEL 3  &bt BT_SEL 4  &trans
&trans     &trans     &trans     &trans     &trans     &trans                           &trans        &trans        &trans        &trans        &sys_reset    &bootloader
RGBON      RGBTOG     RGBHUI     RGBSAI     RGBBRI     &trans                           &trans        &trans        &trans        &trans        &trans        &trans
RGBOFF     RGBEFF     RGBHUD     RGBSAD     RGBBRD     &trans     &trans     &trans     &trans        &trans        &trans        &trans        &trans        &trans
                                 &trans     &trans     &trans     &trans     &trans     &trans        &bt BT_CLR    &trans
            >;

            sensor-bindings = <&inc_dec_kp C_VOL_UP C_VOL_DN>;
        };

    };
};