#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/backlight.h>

#define ANSI
//#define ISO
//#define ALL_1U

/ {
  chosen {
  #ifdef ANSI
    zmk,matrix-transform = &ansi_transform;
  #elif defined(ISO)
    zmk,matrix-transform = &iso_transform;
  #elif defined(ALL_1U)
    zmk,matrix-transform = &all_1u_transform;
  #else
  #error "Layout not defined, please define a layout using by uncommenting the appropriate line in bt75_v1.keymap"
  #endif
  };

  keymap {
    compatible = "zmk,keymap";
    #ifdef ANSI
    default_layer {
        // ------------------------------------------------------------------------------------------------
        // | ESC | F1  | F2  | F3  | F4  | F5  | F6  | F7  | F9  | F9  | F10 | F11 | F12 |PSCRN|HOME| END |
        // |GRAVE|  1  |  2  |  3  |  4  |  5  |  6  |  7  |  8  |  9  |  0  |  -  |  =  |   BSPC   | DEL |
        // | TAB   |  Q  |  W  |  E  |  R  |  T  |  Y  |  U  |  I  |  O  |  P  |  [  |  ]  |   \    | INS |
        // | CAPS   |  A  |  S  |  D  |  F  |  G  |  H  |  J  |  K  |  L  |  ;  |  '  |    ENTER    | PGUP|
        // |  SHIFT   |  Z  |  X  |  C  |  V  |  B  |  N  |  M  |  ,  |  .  |  /  |   SHIFT   | UP  | PGDN|
        // |  CTL  |  WIN  |  ALT  |             SPACE                | ALT |  1  |RCTRL| LEFT| DOWN|RIGHT|
        // ------------------------------------------------------------------------------------------------
      bindings = <
        &kp ESC &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 PSCRN &kp HOME &kp END
        &kp GRAVE &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 DEL
        &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 &kp INS
        &kp CLCK   &kp A  &kp S  &kp D  &kp F  &kp G  &kp H  &kp J  &kp  K    &kp  L  &kp SEMI &kp SQT         &kp RET &kp PG_UP
        &kp LSHFT     &kp Z  &kp X  &kp C  &kp V  &kp B  &kp N  &kp M  &kp COMMA &kp DOT &kp FSLH   &kp RSHFT   &kp UP &kp PG_DN
        &kp LCTRL &kp LGUI &kp LALT            &kp SPACE                   &kp RALT  &mo 1 &kp RCTRL &kp LEFT &kp DOWN &kp RIGHT
      >;
      sensor-bindings = <&inc_dec_kp C_VOL_UP C_VOL_DN>;
    };
    raise {
        // --------------------------------------------------------------------------------------------------
        // | ESC | F1  | F2  | F3  | F4  | F5  | F6  | F7  | F9  | F9  | F10 | F11 | F12 |PSCRN| HOME| END |
        // |GRAVE|  1  |  2  |  3  |  4  |  5  |  6  |  7  |  8  |  9  |  0  |  -  |  =  |  BL_TOG  |RGB_TOG|
        // | TAB  |  Q  |  W  |  E  | HUI | HUD |  Y  |  U  |  I  |  O  |  P  | SLCK|  ]  |  RESET   | P_BRK|
        // | CAPS  |  A  |  S  |  D  | BRI | BRD |  H  |  J  |  K  |  L  |  ;  |  '  |     BOOT      | PG_UP|
        // |  SHIFT   |VOLDN|VOLUP| MUTE|BLINC|BLDEC|  N  |  M  |  ,  |  .  |  /  |    SHIFT  | UP   | PG_DN|
        // | BT_PRV| BT_NXT|  ALT  |            SPACE               | ALT |  1  | CTRL | LEFT | DOWN |BT_CLR|
        // --------------------------------------------------------------------------------------------------
      bindings = <
        &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 &bl BL_TOG &rgb_ug RGB_TOG
        &trans &trans &trans &trans &rgb_ug RGB_HUI &rgb_ug RGB_HUD &trans &trans &trans &trans &trans &kp SLCK &trans &sys_reset &kp PAUSE_BREAK
        &trans    &trans &trans &trans &rgb_ug RGB_BRI &rgb_ug RGB_BRD &trans &trans &trans &trans &trans  &trans   &bootloader &trans
        &trans &kp C_VOL_DN &kp C_VOL_UP &kp C_MUTE &bl BL_INC &bl BL_DEC &trans &trans &trans &trans &trans  &trans &trans &trans
        &bt BT_PRV &bt BT_NXT  &trans              &trans                            &trans   &trans   &trans &trans  &trans &bt BT_CLR
      >;
      sensor-bindings = <&inc_dec_kp C_VOL_UP C_VOL_DN>;
    };
    #elif defined(ISO)
    default_layer {
        // ------------------------------------------------------------------------------------------------
        // | ESC | F1  | F2  | F3  | F4  | F5  | F6  | F7  | F9  | F9  | F10 | F11 | F12 |PSCRN|HOME| END |
        // |GRAVE|  1  |  2  |  3  |  4  |  5  |  6  |  7  |  8  |  9  |  0  |  -  |  =  |   BSPC   | DEL |
        // | TAB   |  Q  |  W  |  E  |  R  |  T  |  Y  |  U  |  I  |  O  |  P  |  [  |  ]  |        | INS |
        // | CAPS   |  A  |  S  |  D  |  F  |  G  |  H  |  J  |  K  |  L  |  ;  |  '  |  #  | ENTER | PGUP|
        // |SHIFT |  \  |  Z  |  X  |  C  |  V  |  B  |  N  |  M  |  ,  |  .  |  /  |  SHIFT  | UP  | PGDN|
        // |  CTL  |  WIN  |  ALT  |             SPACE                | ALT |  1  |RCTRL| LEFT| DOWN|RIGHT|
        // ------------------------------------------------------------------------------------------------
      bindings = <
        &kp ESC &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 PSCRN &kp HOME &kp END
        &kp GRAVE &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 DEL
        &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 INS
        &kp CLCK   &kp A  &kp S  &kp D  &kp F  &kp G  &kp H  &kp J  &kp  K    &kp  L  &kp SEMI &kp SQT &kp NON_US_HASH &kp RET &kp PG_UP
        &kp LSHFT &kp NON_US_BSLH &kp Z  &kp X  &kp C  &kp V  &kp B  &kp N  &kp M  &kp COMMA &kp DOT &kp FSLH   &kp RSHFT   &kp UP &kp PG_DN
        &kp LCTRL &kp LGUI &kp LALT            &kp SPACE                   &kp RALT  &mo 1 &kp RCTRL &kp LEFT &kp DOWN &kp RIGHT
      >;
      sensor-bindings = <&inc_dec_kp C_VOL_UP C_VOL_DN>;
    };
    raise {
        // --------------------------------------------------------------------------------------------------
        // | ESC | F1  | F2  | F3  | F4  | F5  | F6  | F7  | F9  | F9  | F10 | F11 | F12 |PSCRN|HOME| END |
        // |GRAVE|  1  |  2  |  3  |  4  |  5  |  6  |  7  |  8  |  9  |  0  |  -  |  =  |  BL_TOG  |RGB_TOG|
        // | TAB  |  Q  |  W  |  E  | HUI | HUD |  Y  |  U  |  I  |  O  |  P  | SLCK|  ]  |          | P_BRK|
        // | CAPS  |  A  |  S  |  D  | BRI | BRD |  H  |  J  |  K  |  L  |  ;  |  '  |RESET|   BOOT  | PG_UP|
        // |SHIFT |  \  |VOLDN|VOLUP| MUTE|BLINC|BLDEC|  N  |  M  |  ,  |  .  |  /  |  SHIFT  | UP   | PG_DN|
        // | BT_PRV| BT_NXT|  ALT  |            SPACE               | ALT |  1  | CTRL | LEFT | DOWN |BT_CLR|
        // --------------------------------------------------------------------------------------------------
      bindings = <
        &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 &bl BL_TOG &rgb_ug RGB_TOG
        &trans &trans &trans &trans &rgb_ug RGB_HUI &rgb_ug RGB_HUD &trans &trans &trans &trans &trans &kp SLCK &trans &kp PAUSE_BREAK
        &trans   &trans &trans &trans &rgb_ug RGB_BRI &rgb_ug RGB_BRD &trans &trans &trans &trans &trans  &trans  &sys_reset  &bootloader &trans
        &trans &trans &kp C_VOL_DN &kp C_VOL_UP &kp C_MUTE &bl BL_INC &bl BL_DEC &trans &trans &trans &trans &trans  &trans &trans &trans
        &bt BT_PRV &bt BT_NXT  &trans              &trans                            &trans   &trans   &trans &trans &trans &bt BT_CLR
      >;
      sensor-bindings = <&inc_dec_kp C_VOL_UP C_VOL_DN>;
    };
    #elif defined(ALL_1U)
    default_layer {
        // -------------------------------------------------------------------------------------------------
        // | ESC | F1  | F2  | F3  | F4  | F5  | F6  | F7  | F9  | F9  | F10 | F11 | F12 |PSCRN| P_B | INS |
        // |GRAVE|  1  |  2  |  3  |  4  |  5  |  6  |  7  |  8  |  9  |  0  |  -  |  =  |BSPC | DEL | HOME|
        // | TAB    |  Q  |  W  |  E  |  R  |  T  |  Y  |  U  |  I  |  O  |  P  |  [  |  ]  |   \    | END |
        // | CAPS    |  A  |  S  |  D  |  F  |  G  |  H  |  J  |  K  |  L  |  ;  |  '  |     ENTER   | PGUP|
        // |SHIFT|NONE |  Z  |  X  |  C  |  V  |  B  |  N  |  M  |  ,  |  .  |  /  |SHIFT|NONE |  UP | PGDN|
        // |  CTL  |  WIN  |  ALT  |              SPACE                | ALT |  1  |RCTRL| LEFT| DOWN|RIGHT|
        // -------------------------------------------------------------------------------------------------
      bindings = <
        &kp ESC &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 PSCRN &kp PAUSE_BREAK &kp INS
        &kp GRAVE &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 DEL &kp HOME
        &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 &kp END
        &kp CLCK  &kp A  &kp S  &kp D  &kp F  &kp G  &kp H  &kp J  &kp  K    &kp  L  &kp SEMI &kp SQT           &kp RET &kp PG_UP
        &kp LSHFT &none  &kp Z  &kp X  &kp C  &kp V  &kp B  &kp N  &kp M  &kp COMMA &kp DOT &kp FSLH    &kp RSHFT &none   &kp UP &kp PG_DN
        &kp LCTRL &kp LGUI &kp LALT            &kp SPACE                         &kp LALT  &mo 1 &kp RCTRL &kp LEFT &kp DOWN &kp RIGHT
      >;
      sensor-bindings = <&inc_dec_kp C_VOL_UP C_VOL_DN>;
    };
    raise {
        // --------------------------------------------------------------------------------------------------
        // | ESC | F1  | F2  | F3  | F4  | F5  | F6  | F7  | F9  | F9  | F10 | F11 | F12 |PSCRN| P_B | INS |
        // |GRAVE|  1  |  2  |  3  |  4  |  5  |  6  |  7  |  8  |  9  |  0  |  -  |  =  |BL_TOG|RGB_TOG|HOME|
        // | TAB  |  Q  |  W  |  E  | HUI | HUD |  Y  |  U  |  I  |  O  |  P  | SLCK|  ]  |  RESET   | END  |
        // | CAPS  |  A  |  S  |  D  | BRI | BRD |  H  |  J  |  K  |  L  |  ;  |  '  |      BOOT     | PGUP |
        // |SHIFT| NONE|VOLDN|VOLUP| MUTE|BLINC|BLDEC|  N  |  M  |  ,  |  .  |  /  |SHIFT| NONE|  UP | PGDN |
        // | BT_PRV| BT_NXT|  ALT  |            SPACE                 | ALT |  1  | CTRL| LEFT| DOWN |BT_CLR|
        // --------------------------------------------------------------------------------------------------
      bindings = <
        &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  &bl BL_TOG &rgb_ug RGB_TOG &trans
        &trans &trans &trans &trans &rgb_ug RGB_HUI &rgb_ug RGB_HUD &trans &trans &trans &trans &trans &kp SLCK &trans &sys_reset  &trans
        &trans   &trans &trans &trans &rgb_ug RGB_BRI &rgb_ug RGB_BRD &trans &trans &trans &trans &trans  &trans   &bootloader &trans
        &trans &trans &kp C_VOL_DN &kp C_VOL_UP &kp C_MUTE &bl BL_INC &bl BL_DEC &trans &trans &trans &trans &trans &trans  &trans &trans &trans
        &bt BT_PRV &bt BT_NXT  &trans              &trans                            &trans   &trans   &trans &trans &trans &bt BT_CLR
      >;
      sensor-bindings = <&inc_dec_kp C_VOL_UP C_VOL_DN>;
    };
    #else
    #error "Layout not defined, please define a layout by uncommenting the appropriate line in bt75.keymap"
    #endif

  };
};
