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

 /*****************************************
 *   - YOU MUST SET THE FOLLOWING CONFIG VALUES FOR THIS SETUP TO WORK PROPERLY IN YOUR BOARDS .conf FILE
 *     - CONFIG_ZMK_COMBO_MAX_COMBOS_PER_KEY=16
 *     - CONFIG_ZMK_COMBO_MAX_KEYS_PER_COMBO=8
 *     - CONFIG_ZMK_COMBO_MAX_PRESSED_COMBOS=8
 *****************************************/

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

////////////////////////////////////////
// Layers
#define LAYER_ID_GLOBAL -1
#define LAYER_ID_DEFAULT 0
#define LAYER_ID_FUNC 1
#define LAYER_ID_ALT 2
#define LAYER_ID_MISC 3
#define LAYER_ID_BASE 4
#define LAYER_ID_NUMBERS 5
#define LAYER_ID_SYMBOLS 6
#define LAYER_ID_PARENTHETICALS 7
#define LAYER_ID_NAVIGATION 8
#define LAYER_ID_BT_SEL 9
#define LAYER_ID_CUSTOM 10
#define LAYER_ID_BIG_SYM 11
#define LAYER_ID_BIG_FUNCTION 12
#define LAYERS_ARTSEY LAYER_ID_BASE LAYER_ID_NUMBERS LAYER_ID_SYMBOLS LAYER_ID_PARENTHETICALS LAYER_ID_NAVIGATION LAYER_ID_BT_SEL LAYER_ID_CUSTOM LAYER_ID_BIG_SYM LAYER_ID_BIG_FUNCTION

////////////////////////////////////////
// Artsey definitions
#define ARTSEY_BT_TOP &out OUT_BLE
#define ARTSEY_BT_BOTTOM &out OUT_USB
#define TIMEOUT_COMBO_2 150
#define TIMEOUT_COMBO_3 150
#define TIMEOUT_COMBO_4 150
#define TIMEOUT_LAYER_HOLD 200
#define ARTSEY_BASE_A A
#define ARTSEY_BASE_R R
#define ARTSEY_BASE_T T
#define ARTSEY_BASE_S S
#define ARTSEY_BASE_E E
#define ARTSEY_BASE_Y Y
#define ARTSEY_BASE_I I
#define ARTSEY_BASE_O O
#define ARTSEY_COMBO_N N
#define KEY_A 20
#define KEY_R 19
#define KEY_T 18
#define KEY_S 17
#define KEY_E 36
#define KEY_Y 35
#define KEY_I 34
#define KEY_O 33
#define KEY_F_TOP 21
#define KEY_F_BOTTOM 37

////////////////////////////////////////
// Enable OLED
&pro_micro_i2c {
	status = "okay";
};

////////////////////////////////////////
// Sticky / Leader Keys
#define TIMEOUT_STICKY_LEADER_KEY 5000
&sk {
	release-after-ms = <TIMEOUT_STICKY_LEADER_KEY>;
};
&sl { 
	release-after-ms = <TIMEOUT_STICKY_LEADER_KEY>;
};

////////////////////////////////////////
// Sensors
/ {
    sensors {
		compatible = "zmk,keymap-sensors";
		sensors = <&encoder_1>;
	};
};

////////////////////////////////////////
// Behaviors
/ {
    behaviors {
		tildeesc: tilde_escape {
			compatible = "zmk,behavior-mod-morph";
			label = "TILDE_ESCAPE";
			#binding-cells = <0>;
			bindings = <&kp ESC>, <&kp TILDE>;
            mods = <(MOD_LSFT)>;
		};
        miscartsey: misc_artsey {
			compatible = "zmk,behavior-mod-morph";
			label = "MISC_ARTSEY";
			#binding-cells = <0>;
			bindings = <&mo LAYER_ID_MISC>, <&tog LAYER_ID_BASE>;
            mods = <(MOD_LALT)>;
		};
		layer_base_kp: layer_base_kp { compatible = "zmk,behavior-hold-tap"; label = "layer_base_kp"; 
						#binding-cells = <2>; tapping_term_ms = <TIMEOUT_LAYER_HOLD>; flavor = "tap-preferred"; 
						bindings = <&mo>, <&kp>; };
		layer_numbers_kp: layer_numbers_kp { compatible = "zmk,behavior-hold-tap"; label = "layer_numbers_kp"; 
						#binding-cells = <2>; tapping_term_ms = <TIMEOUT_LAYER_HOLD>; flavor = "tap-preferred"; 
						bindings = <&mo>, <&kp>; };
		layer_symbols_kp: layer_symbols_kp { compatible = "zmk,behavior-hold-tap"; label = "layer_symbols_kp"; 
						#binding-cells = <2>; tapping_term_ms = <TIMEOUT_LAYER_HOLD>; flavor = "tap-preferred"; 
						bindings = <&mo>, <&kp>; };
		layer_parentheticals_kp: layer_parentheticals_kp { compatible = "zmk,behavior-hold-tap"; label = "layer_parentheticals_kp";
						#binding-cells = <2>; tapping_term_ms = <TIMEOUT_LAYER_HOLD>; flavor = "tap-preferred";
						bindings = <&mo>, <&kp>; };
		layer_custom_kp: layer_custom_kp { compatible = "zmk,behavior-hold-tap"; label = "layer_custom_kp";
						#binding-cells = <2>; tapping_term_ms = <TIMEOUT_LAYER_HOLD>; flavor = "tap-preferred";
						bindings = <&mo>, <&kp>; };
		ctrl_alt_kp: ctrl_alt_kp { compatible = "zmk,behavior-hold-tap"; label = "ctrl_alt_kp";
						#binding-cells = <2>; tapping_term_ms = <TIMEOUT_LAYER_HOLD>; flavor = "tap-preferred";
						bindings = <&sk>, <&sk>; };
	};
};

////////////////////////////////////////
// Combos
/ {
	combos {
		compatible = "zmk,combos";
		/*****************************************
		 * 2 key combos
		 *****************************************/
		// Function layer doesn't apply to non-big artsey presently
		#if defined ARTSEY_BIG
		combo_layer_functions { key-positions = <KEY_F_TOP KEY_F_BOTTOM>; bindings = <&sl LAYER_ID_BIG_FUNCTION>; };
		#endif
		combo_enter      { layers = <LAYERS_ARTSEY>; timeout-ms = <TIMEOUT_COMBO_2>; key-positions = <KEY_A KEY_E>; bindings = <&kp ENTER>; };
		combo_control    { layers = <LAYERS_ARTSEY>; timeout-ms = <TIMEOUT_COMBO_2>; key-positions = <KEY_E KEY_S>; bindings = <&sk RCTRL>; };
		combo_gui        { layers = <LAYERS_ARTSEY>; timeout-ms = <TIMEOUT_COMBO_2>; key-positions = <KEY_Y KEY_S>; bindings = <&sk LGUI>; };
		combo_alt        { layers = <LAYERS_ARTSEY>; timeout-ms = <TIMEOUT_COMBO_2>; key-positions = <KEY_I KEY_S>; bindings = <&sk LALT>; };
		combo_backspace  { layers = <LAYERS_ARTSEY>; timeout-ms = <TIMEOUT_COMBO_2>; key-positions = <KEY_E KEY_R>; bindings = <&kp BACKSPACE>; };
		combo_delete     { layers = <LAYERS_ARTSEY>; timeout-ms = <TIMEOUT_COMBO_2>; key-positions = <KEY_I KEY_R>; bindings = <&kp DELETE>; };
		combo_shift_lock { layers = <LAYERS_ARTSEY>; timeout-ms = <TIMEOUT_COMBO_2>; key-positions = <KEY_R KEY_Y>; bindings = <&kt LSHFT>; };

		combo_b           { layers = <LAYER_ID_BASE>; timeout-ms = <TIMEOUT_COMBO_2>; key-positions = <KEY_E KEY_O>; bindings = <&kp B>; };
		combo_c           { layers = <LAYER_ID_BASE>; timeout-ms = <TIMEOUT_COMBO_2>; key-positions = <KEY_E KEY_Y>; bindings = <&kp C>; };
		combo_n           { layers = <LAYER_ID_BASE>; timeout-ms = <TIMEOUT_COMBO_2>; key-positions = <KEY_I KEY_O>; bindings = <&kp ARTSEY_COMBO_N>; };
		combo_f           { layers = <LAYER_ID_BASE>; timeout-ms = <TIMEOUT_COMBO_2>; key-positions = <KEY_A KEY_R>; bindings = <&kp F>; };
		combo_g           { layers = <LAYER_ID_BASE>; timeout-ms = <TIMEOUT_COMBO_2>; key-positions = <KEY_R KEY_T>; bindings = <&kp G>; };
		combo_u           { layers = <LAYER_ID_BASE>; timeout-ms = <TIMEOUT_COMBO_2>; key-positions = <KEY_Y KEY_I>; bindings = <&kp U>; };
		combo_h           { layers = <LAYER_ID_BASE>; timeout-ms = <TIMEOUT_COMBO_2>; key-positions = <KEY_E KEY_I>; bindings = <&kp H>; };
		combo_v           { layers = <LAYER_ID_BASE>; timeout-ms = <TIMEOUT_COMBO_2>; key-positions = <KEY_R KEY_S>; bindings = <&kp V>; };
		combo_j           { layers = <LAYER_ID_BASE>; timeout-ms = <TIMEOUT_COMBO_2>; key-positions = <KEY_T KEY_S>; bindings = <&kp J>; };
		combo_w           { layers = <LAYER_ID_BASE>; timeout-ms = <TIMEOUT_COMBO_2>; key-positions = <KEY_A KEY_S>; bindings = <&kp W>; };
		combo_k           { layers = <LAYER_ID_BASE>; timeout-ms = <TIMEOUT_COMBO_2>; key-positions = <KEY_Y KEY_O>; bindings = <&kp K>; };
		combo_comma       { layers = <LAYER_ID_BASE>; timeout-ms = <TIMEOUT_COMBO_2>; key-positions = <KEY_A KEY_Y>; bindings = <&kp COMMA>; };
		combo_period      { layers = <LAYER_ID_BASE>; timeout-ms = <TIMEOUT_COMBO_2>; key-positions = <KEY_A KEY_I>; bindings = <&kp PERIOD>; };
		combo_slash       { layers = <LAYER_ID_BASE>; timeout-ms = <TIMEOUT_COMBO_2>; key-positions = <KEY_A KEY_O>; bindings = <&kp SLASH>; };
		combo_exclamation { layers = <LAYER_ID_BASE>; timeout-ms = <TIMEOUT_COMBO_2>; key-positions = <KEY_T KEY_I>; bindings = <&kp EXCL>; };
		
		combo_seven { layers = <LAYER_ID_NUMBERS>; timeout-ms = <TIMEOUT_COMBO_2>; key-positions = <KEY_A KEY_R>; bindings = <&kp N7>; };
		combo_eight { layers = <LAYER_ID_NUMBERS>; timeout-ms = <TIMEOUT_COMBO_2>; key-positions = <KEY_R KEY_T>; bindings = <&kp N8>; };
		combo_nine  { layers = <LAYER_ID_NUMBERS>; timeout-ms = <TIMEOUT_COMBO_2>; key-positions = <KEY_E KEY_Y>; bindings = <&kp N9>; };
		combo_zero  { layers = <LAYER_ID_NUMBERS>; timeout-ms = <TIMEOUT_COMBO_2>; key-positions = <KEY_Y KEY_I>; bindings = <&kp N0>; };

		/*****************************************
		 * 3 key combos
		 *****************************************/
		combo_esc              { layers = <LAYERS_ARTSEY>; timeout-ms = <TIMEOUT_COMBO_3>; key-positions = <KEY_A KEY_R KEY_O>; bindings = <&kp ESC>; };
		combo_layer_navigation { layers = <LAYERS_ARTSEY>; timeout-ms = <TIMEOUT_COMBO_3>; key-positions = <KEY_R KEY_E KEY_I>; bindings = <&tog LAYER_ID_NAVIGATION>; };

		combo_m            { layers = <LAYER_ID_BASE>; timeout-ms = <TIMEOUT_COMBO_3>; key-positions = <KEY_Y KEY_I KEY_O>; bindings = <&kp M>; };
		combo_d            { layers = <LAYER_ID_BASE>; timeout-ms = <TIMEOUT_COMBO_3>; key-positions = <KEY_A KEY_R KEY_T>; bindings = <&kp D>; };
		combo_p            { layers = <LAYER_ID_BASE>; timeout-ms = <TIMEOUT_COMBO_3>; key-positions = <KEY_E KEY_I KEY_O>; bindings = <&kp P>; };
		combo_q            { layers = <LAYER_ID_BASE>; timeout-ms = <TIMEOUT_COMBO_3>; key-positions = <KEY_A KEY_T KEY_S>; bindings = <&kp Q>; };
		combo_x            { layers = <LAYER_ID_BASE>; timeout-ms = <TIMEOUT_COMBO_3>; key-positions = <KEY_R KEY_T KEY_S>; bindings = <&kp X>; };
		combo_l            { layers = <LAYER_ID_BASE>; timeout-ms = <TIMEOUT_COMBO_3>; key-positions = <KEY_E KEY_Y KEY_I>; bindings = <&kp L>; };
		combo_single_quote { layers = <LAYER_ID_BASE>; timeout-ms = <TIMEOUT_COMBO_3>; key-positions = <KEY_A KEY_Y KEY_I>; bindings = <&kp SQT>; };
		
		/*****************************************
		 * 4 key combos
		 *****************************************/
		combo_tab             { layers = <LAYERS_ARTSEY>; timeout-ms = <TIMEOUT_COMBO_4>; key-positions = <KEY_A KEY_R KEY_T KEY_O>; bindings = <&kp TAB>; };
		combo_space           { layers = <LAYERS_ARTSEY>; timeout-ms = <TIMEOUT_COMBO_4>; key-positions = <KEY_E KEY_Y KEY_I KEY_O>; bindings = <&kp SPACE>; };
		combo_shift           { layers = <LAYERS_ARTSEY>; timeout-ms = <TIMEOUT_COMBO_4>; key-positions = <KEY_E KEY_R KEY_T KEY_S>; bindings = <&sk LSHFT>; };
		combo_layer_bt_select { layers = <LAYERS_ARTSEY>; timeout-ms = <TIMEOUT_COMBO_4>; key-positions = <KEY_A KEY_E KEY_S KEY_O>; bindings = <&tog LAYER_ID_BT_SEL>; };
		combo_bt_clr          { layers = <LAYERS_ARTSEY>; timeout-ms = <TIMEOUT_COMBO_4>; key-positions = <KEY_R KEY_Y KEY_T KEY_I>; bindings = <&bt BT_CLR>; };

		combo_z         { layers = <LAYER_ID_BASE>; timeout-ms = <TIMEOUT_COMBO_4>; key-positions = <KEY_A KEY_R KEY_T KEY_S>; bindings = <&kp Z>; };
		combo_caps_lock { layers = <LAYER_ID_BASE>; timeout-ms = <TIMEOUT_COMBO_4>; key-positions = <KEY_O KEY_I KEY_Y KEY_A>; bindings = <&kp CAPS>; };
	};
};

////////////////////////////////////////
// Keymap (main THEN artsey)
/ {
    keymap {
        compatible = "zmk,keymap";

        default_layer {
            label = "ANSI";

            sensor-bindings = <&inc_dec_kp C_VOLUME_UP C_VOLUME_DOWN>;

            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 HOME
&kp C_MUTE        &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 PG_UP
&miscartsey       &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 RET  &kp PG_DN
&trans            &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 &kp UP   &kp END
&trans            &kp LCTRL         &kp LGUI  &kp LALT                      &kp SPACE                     &mo LAYER_ID_FUNC &kp RCTRL  &kp RALT  &kp LEFT            &kp DOWN &kp RIGHT
            >;
        };
        function_layer {
            label = "Function";
            
            sensor-bindings = <&inc_dec_kp C_VOLUME_UP C_VOLUME_DOWN>;

            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 &trans      &kp DEL
&trans &kp CAPS    &trans       &trans       &trans       &trans       &trans       &trans    &trans      &trans    &trans    &trans       &trans    &trans  &kp INS     &kp INS
&none  &trans      &trans       &trans       &trans       &trans       &trans       &trans    &trans      &trans    &trans    &trans       &trans            &kp PSCRN   &kp PSCRN
&none  &trans      &trans       &trans       &trans       &trans       &trans       &trans    &trans      &trans    &trans    &trans       &trans    &trans  &kp C_PP
&none  &trans      &trans       &trans                                              &trans                          &trans    &kp C_VOLUME_UP &kp C_VOLUME_DOWN &kp C_MUTE &trans &trans
            >;
        };
        alt_layer {
            label = "Alt";
            
            sensor-bindings = <&inc_dec_kp C_VOLUME_UP C_VOLUME_DOWN>;

            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
&none  &trans  &trans     &trans     &trans     &trans     &trans     &trans     &trans     &trans     &trans     &trans     &trans                   &trans      &trans
&none  &trans  &none      &trans     &trans     &trans     &trans     &trans     &trans     &trans     &trans     &trans     &trans       &trans      &trans      &trans
&none  &trans  &trans     &trans                           &trans                           &trans     &trans     &trans     &trans                   &trans      &trans
            >;
        };
        misc_layer {
            label = "Misc";
            
            sensor-bindings = <&inc_dec_kp C_VOLUME_UP C_VOLUME_DOWN>;

            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      &trans      &trans
&mo LAYER_ID_MISC  &trans  &trans     &trans     &trans     &trans     &trans     &trans     &trans     &trans     &trans     &trans     &trans                   &trans      &trans
&none              &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                   &trans      &trans
            >;
        };
        artsey_base {
			label = "*ARTSEY*";
            bindings = <
                   &none             &none     &none     &none     &none     &none     &none     &none     &none             &none      &none     &none     &none     &none    &none
&trans             &none             &layer_numbers_kp LAYER_ID_NUMBERS ARTSEY_BASE_S    &kp ARTSEY_BASE_T     &kp ARTSEY_BASE_R     &layer_parentheticals_kp LAYER_ID_PARENTHETICALS ARTSEY_BASE_A &kp MINUS      &none     &none     &none             &none      &none     &none     &none     &none    &none
&tog LAYER_ID_BASE &none             &layer_custom_kp LAYER_ID_CUSTOM ARTSEY_BASE_O      &kp ARTSEY_BASE_I     &kp ARTSEY_BASE_Y     &layer_symbols_kp LAYER_ID_SYMBOLS ARTSEY_BASE_E               &sk LSHFT      &none     &none     &none             &none      &none     &none               &none    &none
&trans             &none             &ctrl_alt_kp LALT RCTRL                             &kp AT                &kp DEL               &kp EQUAL                                                      &kp TAB      &none     &none     &none             &none      &none     &none     &none     &none    &none
&trans             &none             &none     &mo LAYER_ID_BIG_SYM                                &kp SPACE                          &none             &none      &none     &none               &none    &none
            >;
		};
        artsey_numbers {
			label = "Number";
            bindings = <
                  &none             &none     &none     &none     &none     &none     &none     &none     &none             &none      &none     &none     &none     &none    &none
&trans            &none             &mo LAYER_ID_NUMBERS                        &kp N3    &kp N2    &kp N1      &none      &none     &none     &none             &none      &none     &none     &none     &none    &none
&trans            &none             &none                                       &kp N6    &kp N5    &kp N4      &none      &none     &none     &none             &none      &none     &none               &none    &none
&trans            &none             &none      &none      &none      &none      &none      &none     &none     &none             &none      &none     &none     &none     &none    &none
&trans            &none             &none     &none                          &none                          &none             &none      &none     &none               &none    &none
            >;
		};
        artsey_symbols {
			label = "Symbol";
            bindings = <
                  &none             &none     &none     &none     &none     &none     &none     &none     &none             &none      &none     &none     &none     &none    &none
&trans            &none             &kp GRAVE                                   &kp SEMI  &kp BSLH  &kp EXCL      &none      &none     &none     &none             &none      &none     &none     &none     &none    &none
&trans            &none             &kp EQUAL                                   &kp MINUS &kp QMARK &mo LAYER_ID_SYMBOLS      &none      &none     &none     &none             &none      &none     &none               &none    &none
&trans            &none             &none      &none      &none      &none      &none      &none     &none     &none             &none      &none     &none     &none     &none    &none
&trans            &none             &none     &none                          &none                          &none             &none      &none     &none               &none    &none
            >;
		};
        artsey_parentheticals {
			label = "Paren";
            bindings = <
                  &none             &none     &none     &none     &none     &none     &none     &none     &none             &none      &none     &none     &none     &none    &none
&trans            &none             &kp LBRC                                    &kp LPAR  &kp RPAR  &mo LAYER_ID_PARENTHETICALS      &none      &none     &none     &none             &none      &none     &none     &none     &none    &none
&trans            &none             &kp RBRC                                    &kp LBKT  &kp RBKT  &none      &none      &none     &none     &none             &none      &none     &none               &none    &none
&trans            &none             &none      &none      &none      &none      &none      &none     &none     &none             &none      &none     &none     &none     &none    &none
&trans            &none             &none     &none                          &none                          &none             &none      &none     &none               &none    &none
            >;
		};
        artsey_navigation {
			label = "Nav";
            bindings = <
                  &none             &none     &none     &none     &none     &none     &none     &none     &none             &none      &none     &none     &none     &none    &none
&trans            &none             &kp PG_UP                                   &kp HOME  &kp UP    &kp END      &none      &none     &none     &none             &none      &none     &none     &none     &none    &none
&trans            &none             &kp PG_DN                                   &kp LEFT  &kp DOWN  &kp RIGHT      &none      &none     &none     &none             &none      &none     &none               &none    &none
&trans            &none             &none      &none      &none      &none      &none      &none     &none     &none             &none      &none     &none     &none     &none    &none
&trans            &none             &none     &none                          &none                          &none             &none      &none     &none               &none    &none
            >;
		};
        artsey_bt {
			label = "BT";
            bindings = <
                  &none             &none     &none     &none     &none     &none     &none     &none     &none             &none      &none     &none     &none     &none    &none
&trans            &none             ARTSEY_BT_TOP    &bt BT_SEL 2 &bt BT_SEL 1 &bt BT_SEL 0      &none      &none     &none     &none             &none      &none     &none     &none     &none    &none
&trans            &none             ARTSEY_BT_BOTTOM &bt BT_SEL 5 &bt BT_SEL 4 &bt BT_SEL 3      &none      &none     &none     &none             &none      &none     &none               &none    &none
&trans            &none             &none      &none      &none      &none      &none      &none     &none     &none             &none      &none     &none     &none     &none    &none
&trans            &none             &none     &none                          &none                          &none             &none      &none     &none               &none    &none
            >;
		};
        artsey_custom {
			label = "Custom";
            bindings = <
                  &none             &none     &none     &none     &none     &none     &none     &none     &none             &none      &none     &none     &none     &none    &none
&trans            &none             &none               &kp C_VOL_UP  &kp INS   &kp C_MUTE      &none      &none     &none     &none             &none      &none     &none     &none     &none    &none
&trans            &none             &mo LAYER_ID_CUSTOM &kp C_VOL_DN  &kp PSCRN &sk RSHFT      &none      &none     &none     &none             &none      &none     &none               &none    &none
&trans            &none             &none      &none      &none      &none      &none      &none     &none     &none             &none      &none     &none     &none     &none    &none
&trans            &none             &none     &none                          &none                          &none             &none      &none     &none               &none    &none
            >;
		};
        big_artsey_symbol {
			label = "*Symbol*";
            bindings = <
                  &none             &none     &none     &none     &none     &none     &none     &none     &none             &none      &none     &none     &none     &none    &none
&trans            &none             &kp CARET &kp LBRC &kp RBRC &kp HASH  &kp GRAVE      &none     &none     &none             &none      &none     &none     &none     &none    &none
&trans            &none             &kp AMPS  &kp LPAR &kp RPAR &kp DLLR  &kp BSLH      &none     &none     &none             &none      &none     &none               &none    &none
&trans            &none             &kp ASTRK &kp LBKT &kp RBKT &kp PRCNT &kp PIPE      &none     &none     &none             &none      &none     &none     &none     &none    &none
&trans            &none             &none     &none     &kp SEMI                          &none             &none      &none     &none               &none    &none
            >;
		};
        big_artsey_function {
			label = "*Func*";
            bindings = <
                  &none             &none     &none     &none     &none     &none     &none     &none     &none             &none      &none     &none     &none     &none    &none
&trans            &none             &kp F4  &kp F3  &kp F2  &kp F1  &none      &none     &none     &none             &none      &none     &none     &none     &none    &none
&trans            &none             &kp F8  &kp F7  &kp F6  &kp F5  &none      &none     &none     &none             &none      &none     &none               &none    &none
&trans            &none             &kp F12 &kp F11 &kp F10 &kp F9 &none      &none     &none     &none             &none      &none     &none     &none     &none    &none
&trans            &none             &none     &none   &none                          &none             &none      &none     &none               &none    &none
            >;
		};
    };
};
