|  | @@ -0,0 +1,312 @@
 | 
	
		
			
				|  |  | +#pragma once
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// ╭─────────────────────────────────────────────────────────╮
 | 
	
		
			
				|  |  | +// │         Syntaxic sugar and generic definitions          │
 | 
	
		
			
				|  |  | +// ╰─────────────────────────────────────────────────────────╯
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// Generic shorthand definitions
 | 
	
		
			
				|  |  | +#define AG(keycode) RALT(keycode)
 | 
	
		
			
				|  |  | +#define XX KC_NO
 | 
	
		
			
				|  |  | +#define __ KC_TRNS
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// Lafayette-layer-specific shorthand definitions
 | 
	
		
			
				|  |  | +#ifdef ARSENIK_ENABLE_LAFAYETTE_LAYER
 | 
	
		
			
				|  |  | +#    define LAFAYETTE MO(_lafayette)
 | 
	
		
			
				|  |  | +#    define LAFAYETTE_T(keycode) LT(_lafayette, keycode)
 | 
	
		
			
				|  |  | +#else
 | 
	
		
			
				|  |  | +#    define LAFAYETTE KC_RALT
 | 
	
		
			
				|  |  | +#    define LAFAYETTE_T(keycode) RALT_T(keycode)
 | 
	
		
			
				|  |  | +#endif
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// TODO: find better names for those macros ?
 | 
	
		
			
				|  |  | +#ifdef ARSENIK_MAC_MODIFIERS
 | 
	
		
			
				|  |  | +#    define _GUI_T LALT_T
 | 
	
		
			
				|  |  | +#    define _CTL_T LGUI_T
 | 
	
		
			
				|  |  | +#    define _ALT_T LCTL_T
 | 
	
		
			
				|  |  | +#    define _GUI KC_LALT
 | 
	
		
			
				|  |  | +#    define _CTL KC_LGUI
 | 
	
		
			
				|  |  | +#    define _ALT KC_LCTL
 | 
	
		
			
				|  |  | +#else
 | 
	
		
			
				|  |  | +#    define _GUI_T LGUI_T
 | 
	
		
			
				|  |  | +#    define _CTL_T LCTL_T
 | 
	
		
			
				|  |  | +#    define _ALT_T LALT_T
 | 
	
		
			
				|  |  | +#    define _GUI KC_LGUI
 | 
	
		
			
				|  |  | +#    define _CTL KC_LCTL
 | 
	
		
			
				|  |  | +#    define _ALT KC_LALT
 | 
	
		
			
				|  |  | +#endif
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#ifdef ARSENIK_ENABLE_HRM
 | 
	
		
			
				|  |  | +#    define KC_SS _GUI_T(KC_S)
 | 
	
		
			
				|  |  | +#    define KC_DD _CTL_T(KC_D)
 | 
	
		
			
				|  |  | +#    define KC_FF _ALT_T(KC_F)
 | 
	
		
			
				|  |  | +#    define KC_JJ _ALT_T(KC_J)
 | 
	
		
			
				|  |  | +#    define KC_KK _CTL_T(KC_K)
 | 
	
		
			
				|  |  | +#    define KC_LL _GUI_T(KC_L)
 | 
	
		
			
				|  |  | +#else
 | 
	
		
			
				|  |  | +#    define KC_SS KC_S
 | 
	
		
			
				|  |  | +#    define KC_DD KC_D
 | 
	
		
			
				|  |  | +#    define KC_FF KC_F
 | 
	
		
			
				|  |  | +#    define KC_JJ KC_J
 | 
	
		
			
				|  |  | +#    define KC_KK KC_K
 | 
	
		
			
				|  |  | +#    define KC_LL KC_L
 | 
	
		
			
				|  |  | +#endif
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// Extra simple config for beginners with bigger keyboards
 | 
	
		
			
				|  |  | +#if defined ARSENIK_DISABLE_THUMB_TAP_HOLDS
 | 
	
		
			
				|  |  | +#    define AS_TL_TUCK  _ALT
 | 
	
		
			
				|  |  | +#    define AS_TL_HOME  _CTL
 | 
	
		
			
				|  |  | +#    define AS_TL_REACH _GUI
 | 
	
		
			
				|  |  | +#    define AS_TR_REACH MO(_num_nav)
 | 
	
		
			
				|  |  | +#    define AS_TR_HOME  KC_SPC
 | 
	
		
			
				|  |  | +#    define AS_TR_TUCK  LAFAYETTE
 | 
	
		
			
				|  |  | +#elif defined ARSENIK_ENABLE_SELENIUM_VARIANT
 | 
	
		
			
				|  |  | +#    define AS_TL_REACH XX
 | 
	
		
			
				|  |  | +#    define AS_TR_REACH XX
 | 
	
		
			
				|  |  | +#    define AS_TL_TUCK  LT(_vim_nav, KC_ESC)
 | 
	
		
			
				|  |  | +#    define AS_TR_TUCK  LT(_num_row, KC_ENT)
 | 
	
		
			
				|  |  | +#    if defined SELENIUM_LEFT_HAND_SPACE
 | 
	
		
			
				|  |  | +#        define AS_TL_HOME  LSFT_T(KC_SPC)
 | 
	
		
			
				|  |  | +#        define AS_TR_HOME  LAFAYETTE_T(KC_BSPC)
 | 
	
		
			
				|  |  | +#    else
 | 
	
		
			
				|  |  | +#        define AS_TL_HOME  LSFT_T(KC_BSPC)
 | 
	
		
			
				|  |  | +#        define AS_TR_HOME  LAFAYETTE_T(KC_SPC)
 | 
	
		
			
				|  |  | +#    endif
 | 
	
		
			
				|  |  | +#else
 | 
	
		
			
				|  |  | +#    define AS_TL_TUCK LSFT_T(KC_BSPC)
 | 
	
		
			
				|  |  | +#    define AS_TL_HOME LT(_num_nav, KC_BSPC)
 | 
	
		
			
				|  |  | +#    define AS_TL_REACH XX
 | 
	
		
			
				|  |  | +#    define AS_TR_REACH XX
 | 
	
		
			
				|  |  | +#    define AS_TR_HOME AS_TL_HOME
 | 
	
		
			
				|  |  | +#    define AS_TR_TUCK LAFAYETTE_T(KC_ENT)
 | 
	
		
			
				|  |  | +#endif
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// ╭─────────────────────────────────────────────────────────╮
 | 
	
		
			
				|  |  | +// │          Keyboard layout specific declarations          │
 | 
	
		
			
				|  |  | +// ╰─────────────────────────────────────────────────────────╯
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#if defined ARSENIK_HOST_LAYOUT_QWERTY
 | 
	
		
			
				|  |  | +#    define AS(stripped_keycode) KC_##stripped_keycode
 | 
	
		
			
				|  |  | +#elif defined ARSENIK_HOST_LAYOUT_AZERTY
 | 
	
		
			
				|  |  | +#    define AS(stripped_keycode) FR_##stripped_keycode
 | 
	
		
			
				|  |  | +#    define SHIFTED_NUMBERS
 | 
	
		
			
				|  |  | +#    include "keymap_french.h"
 | 
	
		
			
				|  |  | +#    include "sendstring_french.h"
 | 
	
		
			
				|  |  | +#elif defined ARSENIK_HOST_LAYOUT_ERGOL
 | 
	
		
			
				|  |  | +#    define AS(stripped_keycode) EL_##stripped_keycode
 | 
	
		
			
				|  |  | +#    include "keymap_ergol.h"
 | 
	
		
			
				|  |  | +#    define ODK1_SEQUENCE tap_code(EL_ODK); tap_code(KC_1)
 | 
	
		
			
				|  |  | +#    define ODK2_SEQUENCE tap_code(EL_ODK); tap_code(KC_2)
 | 
	
		
			
				|  |  | +#    define ODK3_SEQUENCE tap_code(EL_ODK); tap_code(KC_3)
 | 
	
		
			
				|  |  | +#    define ODK4_SEQUENCE tap_code(EL_ODK); tap_code(KC_4)
 | 
	
		
			
				|  |  | +#    define ODK5_SEQUENCE tap_code(EL_ODK); tap_code(KC_5)
 | 
	
		
			
				|  |  | +#elif defined ARSENIK_HOST_LAYOUT_BEPO
 | 
	
		
			
				|  |  | +#    define AS(stripped_keycode) BE_##stripped_keycode
 | 
	
		
			
				|  |  | +#    define SHIFTED_NUMBERS
 | 
	
		
			
				|  |  | +#    include "keymap_bepo.h"
 | 
	
		
			
				|  |  | +#    include "sendstring_bepo.h"
 | 
	
		
			
				|  |  | +#elif defined ARSENIK_HOST_LAYOUT_DVORAK
 | 
	
		
			
				|  |  | +#    define AS(stripped_keycode) DV_##stripped_keycode
 | 
	
		
			
				|  |  | +#    include "keymap_dvorak.h"
 | 
	
		
			
				|  |  | +#    include "sendstring_dvorak.h"
 | 
	
		
			
				|  |  | +#elif defined ARSENIK_HOST_LAYOUT_COLEMAK
 | 
	
		
			
				|  |  | +#    define AS(stripped_keycode) CM_##stripped_keycode
 | 
	
		
			
				|  |  | +#    include "keymap_colemak.h"
 | 
	
		
			
				|  |  | +#    include "sendstring_colemak.h"
 | 
	
		
			
				|  |  | +#elif defined ARSENIK_HOST_LAYOUT_WORKMAN
 | 
	
		
			
				|  |  | +#    define AS(stripped_keycode) WK_##stripped_keycode
 | 
	
		
			
				|  |  | +#    include "keymap_workman.h"
 | 
	
		
			
				|  |  | +#    include "sendstring_workman.h"
 | 
	
		
			
				|  |  | +#else
 | 
	
		
			
				|  |  | +#    error "No `ARSENIK_HOST_LAYOUT_*` option was found or recognised"
 | 
	
		
			
				|  |  | +#endif
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#ifndef ODK1_SEQUENCE
 | 
	
		
			
				|  |  | +#    define ODK1_SEQUENCE tap_code(KC_NO)
 | 
	
		
			
				|  |  | +#endif
 | 
	
		
			
				|  |  | +#ifndef ODK2_SEQUENCE
 | 
	
		
			
				|  |  | +#    define ODK2_SEQUENCE tap_code(KC_NO)
 | 
	
		
			
				|  |  | +#endif
 | 
	
		
			
				|  |  | +#ifndef ODK3_SEQUENCE
 | 
	
		
			
				|  |  | +#    define ODK3_SEQUENCE tap_code(KC_NO)
 | 
	
		
			
				|  |  | +#endif
 | 
	
		
			
				|  |  | +#ifndef ODK4_SEQUENCE
 | 
	
		
			
				|  |  | +#    define ODK4_SEQUENCE tap_code(KC_NO)
 | 
	
		
			
				|  |  | +#endif
 | 
	
		
			
				|  |  | +#ifndef ODK5_SEQUENCE
 | 
	
		
			
				|  |  | +#    define ODK5_SEQUENCE tap_code(KC_NO)
 | 
	
		
			
				|  |  | +#endif
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#ifdef SHIFTED_NUMBERS
 | 
	
		
			
				|  |  | +#    define AS_S0  KC_0
 | 
	
		
			
				|  |  | +#    define AS_S1  KC_1
 | 
	
		
			
				|  |  | +#    define AS_S2  KC_2
 | 
	
		
			
				|  |  | +#    define AS_S3  KC_3
 | 
	
		
			
				|  |  | +#    define AS_S4  KC_4
 | 
	
		
			
				|  |  | +#    define AS_S5  KC_5
 | 
	
		
			
				|  |  | +#    define AS_S6  KC_6
 | 
	
		
			
				|  |  | +#    define AS_S7  KC_7
 | 
	
		
			
				|  |  | +#    define AS_S8  KC_8
 | 
	
		
			
				|  |  | +#    define AS_S9  KC_9
 | 
	
		
			
				|  |  | +#else
 | 
	
		
			
				|  |  | +#    define AS_S0  S(KC_0)
 | 
	
		
			
				|  |  | +#    define AS_S1  S(KC_1)
 | 
	
		
			
				|  |  | +#    define AS_S2  S(KC_2)
 | 
	
		
			
				|  |  | +#    define AS_S3  S(KC_3)
 | 
	
		
			
				|  |  | +#    define AS_S4  S(KC_4)
 | 
	
		
			
				|  |  | +#    define AS_S5  S(KC_5)
 | 
	
		
			
				|  |  | +#    define AS_S6  S(KC_6)
 | 
	
		
			
				|  |  | +#    define AS_S7  S(KC_7)
 | 
	
		
			
				|  |  | +#    define AS_S8  S(KC_8)
 | 
	
		
			
				|  |  | +#    define AS_S9  S(KC_9)
 | 
	
		
			
				|  |  | +#endif
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// ╭─────────────────────────────────────────────────────────╮
 | 
	
		
			
				|  |  | +// │                 QMK layouts definitions                 │
 | 
	
		
			
				|  |  | +// ╰─────────────────────────────────────────────────────────╯
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +//  ──────────────────────────< Generic layouts >──────────────────────────
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#if defined ARSENIK_LAYOUT_split_3x5_2
 | 
	
		
			
				|  |  | +#define ARSENIK_LAYOUT(\
 | 
	
		
			
				|  |  | +        k11, k12, k13, k14, k15, k16,     k17, k18, k19, k1a, k1b, k1c,\
 | 
	
		
			
				|  |  | +        k21, k22, k23, k24, k25, k26,     k27, k28, k29, k2a, k2b, k2c,\
 | 
	
		
			
				|  |  | +        k31, k32, k33, k34, k35, k36,     k37, k38, k39, k3a, k3b, k3c,\
 | 
	
		
			
				|  |  | +        k41, k42, k43, k44, k45, k46,     k47, k48, k49, k4a, k4b, k4c,\
 | 
	
		
			
				|  |  | +                       k51, k52, k53,     k54, k55, k56\
 | 
	
		
			
				|  |  | +    )\
 | 
	
		
			
				|  |  | +    LAYOUT_split_3x5_2(\
 | 
	
		
			
				|  |  | +             k22, k23, k24, k25, k26,     k27, k28, k29, k2a, k2b,\
 | 
	
		
			
				|  |  | +             k32, k33, k34, k35, k36,     k37, k38, k39, k3a, k3b,\
 | 
	
		
			
				|  |  | +             k42, k43, k44, k45, k46,     k47, k48, k49, k4a, k4b,\
 | 
	
		
			
				|  |  | +                       k51, k52,               k55, k56\
 | 
	
		
			
				|  |  | +    )
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#elif defined ARSENIK_LAYOUT_split_3x5_3
 | 
	
		
			
				|  |  | +#define ARSENIK_LAYOUT(\
 | 
	
		
			
				|  |  | +        k11, k12, k13, k14, k15, k16,     k17, k18, k19, k1a, k1b, k1c,\
 | 
	
		
			
				|  |  | +        k21, k22, k23, k24, k25, k26,     k27, k28, k29, k2a, k2b, k2c,\
 | 
	
		
			
				|  |  | +        k31, k32, k33, k34, k35, k36,     k37, k38, k39, k3a, k3b, k3c,\
 | 
	
		
			
				|  |  | +        k41, k42, k43, k44, k45, k46,     k47, k48, k49, k4a, k4b, k4c,\
 | 
	
		
			
				|  |  | +                       k51, k52, k53,     k54, k55, k56\
 | 
	
		
			
				|  |  | +    )\
 | 
	
		
			
				|  |  | +    LAYOUT_split_3x5_3(\
 | 
	
		
			
				|  |  | +             k22, k23, k24, k25, k26,     k27, k28, k29, k2a, k2b,\
 | 
	
		
			
				|  |  | +             k32, k33, k34, k35, k36,     k37, k38, k39, k3a, k3b,\
 | 
	
		
			
				|  |  | +             k42, k43, k44, k45, k46,     k47, k48, k49, k4a, k4b,\
 | 
	
		
			
				|  |  | +                       k51, k52, k53,     k54, k55, k56\
 | 
	
		
			
				|  |  | +    )
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#elif defined ARSENIK_LAYOUT_split_3x6_3
 | 
	
		
			
				|  |  | +#define ARSENIK_LAYOUT(\
 | 
	
		
			
				|  |  | +        k11, k12, k13, k14, k15, k16,     k17, k18, k19, k1a, k1b, k1c,\
 | 
	
		
			
				|  |  | +        k21, k22, k23, k24, k25, k26,     k27, k28, k29, k2a, k2b, k2c,\
 | 
	
		
			
				|  |  | +        k31, k32, k33, k34, k35, k36,     k37, k38, k39, k3a, k3b, k3c,\
 | 
	
		
			
				|  |  | +        k41, k42, k43, k44, k45, k46,     k47, k48, k49, k4a, k4b, k4c,\
 | 
	
		
			
				|  |  | +                       k51, k52, k53,     k54, k55, k56\
 | 
	
		
			
				|  |  | +    )\
 | 
	
		
			
				|  |  | +    LAYOUT_split_3x6_3(\
 | 
	
		
			
				|  |  | +        k21, k22, k23, k24, k25, k26,     k27, k28, k29, k2a, k2b, k2c,\
 | 
	
		
			
				|  |  | +        k31, k32, k33, k34, k35, k36,     k37, k38, k39, k3a, k3b, k3c,\
 | 
	
		
			
				|  |  | +        k41, k42, k43, k44, k45, k46,     k47, k48, k49, k4a, k4b, k4c,\
 | 
	
		
			
				|  |  | +                       k51, k52, k53,     k54, k55, k56\
 | 
	
		
			
				|  |  | +    )
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#elif defined ARSENIK_LAYOUT_ortho_4x10
 | 
	
		
			
				|  |  | +#define ARSENIK_LAYOUT(\
 | 
	
		
			
				|  |  | +        k11, k12, k13, k14, k15, k16,     k17, k18, k19, k1a, k1b, k1c,\
 | 
	
		
			
				|  |  | +        k21, k22, k23, k24, k25, k26,     k27, k28, k29, k2a, k2b, k2c,\
 | 
	
		
			
				|  |  | +        k31, k32, k33, k34, k35, k36,     k37, k38, k39, k3a, k3b, k3c,\
 | 
	
		
			
				|  |  | +        k41, k42, k43, k44, k45, k46,     k47, k48, k49, k4a, k4b, k4c,\
 | 
	
		
			
				|  |  | +                       k51, k52, k53,     k54, k55, k56\
 | 
	
		
			
				|  |  | +    )\
 | 
	
		
			
				|  |  | +    LAYOUT_ortho_4x10(\
 | 
	
		
			
				|  |  | +             k22, k23, k24, k25, k26,     k27, k28, k29, k2a, k2b,\
 | 
	
		
			
				|  |  | +             k32, k33, k34, k35, k36,     k37, k38, k39, k3a, k3b,\
 | 
	
		
			
				|  |  | +             k42, k43, k44, k45, k46,     k47, k48, k49, k4a, k4b,\
 | 
	
		
			
				|  |  | +             XX,  XX,  k51, k52, k53,     k54, k55, k56, XX,  XX,\
 | 
	
		
			
				|  |  | +    )
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#elif defined ARSENIK_LAYOUT_ortho_4x12
 | 
	
		
			
				|  |  | +#define ARSENIK_LAYOUT(\
 | 
	
		
			
				|  |  | +        k11, k12, k13, k14, k15, k16,     k17, k18, k19, k1a, k1b, k1c,\
 | 
	
		
			
				|  |  | +        k21, k22, k23, k24, k25, k26,     k27, k28, k29, k2a, k2b, k2c,\
 | 
	
		
			
				|  |  | +        k31, k32, k33, k34, k35, k36,     k37, k38, k39, k3a, k3b, k3c,\
 | 
	
		
			
				|  |  | +        k41, k42, k43, k44, k45, k46,     k47, k48, k49, k4a, k4b, k4c,\
 | 
	
		
			
				|  |  | +                       k51, k52, k53,     k54, k55, k56\
 | 
	
		
			
				|  |  | +    )\
 | 
	
		
			
				|  |  | +    LAYOUT_ortho_4x12(\
 | 
	
		
			
				|  |  | +        k21, k22, k23, k24, k25, k26,     k27, k28, k29, k2a, k2b, k2c,\
 | 
	
		
			
				|  |  | +        k31, k32, k33, k34, k35, k36,     k37, k38, k39, k3a, k3b, k3c,\
 | 
	
		
			
				|  |  | +        k41, k42, k43, k44, k45, k46,     k47, k48, k49, k4a, k4b, k4c,\
 | 
	
		
			
				|  |  | +        XX,  XX,  XX,  k51, k52, k53,     k54, k55, k56, XX,  XX,  XX,\
 | 
	
		
			
				|  |  | +    )
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#elif defined ARSENIK_LAYOUT_ortho_5x10
 | 
	
		
			
				|  |  | +#define ARSENIK_LAYOUT(\
 | 
	
		
			
				|  |  | +        k11, k12, k13, k14, k15, k16,     k17, k18, k19, k1a, k1b, k1c,\
 | 
	
		
			
				|  |  | +        k21, k22, k23, k24, k25, k26,     k27, k28, k29, k2a, k2b, k2c,\
 | 
	
		
			
				|  |  | +        k31, k32, k33, k34, k35, k36,     k37, k38, k39, k3a, k3b, k3c,\
 | 
	
		
			
				|  |  | +        k41, k42, k43, k44, k45, k46,     k47, k48, k49, k4a, k4b, k4c,\
 | 
	
		
			
				|  |  | +                       k51, k52, k53,     k54, k55, k56\
 | 
	
		
			
				|  |  | +    )\
 | 
	
		
			
				|  |  | +    LAYOUT_ortho_4x10(\
 | 
	
		
			
				|  |  | +             k12, k13, k14, k15, k16,     k17, k18, k19, k1a, k1b,\
 | 
	
		
			
				|  |  | +             k22, k23, k24, k25, k26,     k27, k28, k29, k2a, k2b,\
 | 
	
		
			
				|  |  | +             k32, k33, k34, k35, k36,     k37, k38, k39, k3a, k3b,\
 | 
	
		
			
				|  |  | +             k42, k43, k44, k45, k46,     k47, k48, k49, k4a, k4b,\
 | 
	
		
			
				|  |  | +             XX,  XX,  k51, k52, k53,     k54, k55, k56, XX,  XX,\
 | 
	
		
			
				|  |  | +    )
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#elif defined ARSENIK_LAYOUT_ortho_5x12
 | 
	
		
			
				|  |  | +#define ARSENIK_LAYOUT(\
 | 
	
		
			
				|  |  | +        k11, k12, k13, k14, k15, k16,     k17, k18, k19, k1a, k1b, k1c,\
 | 
	
		
			
				|  |  | +        k21, k22, k23, k24, k25, k26,     k27, k28, k29, k2a, k2b, k2c,\
 | 
	
		
			
				|  |  | +        k31, k32, k33, k34, k35, k36,     k37, k38, k39, k3a, k3b, k3c,\
 | 
	
		
			
				|  |  | +        k41, k42, k43, k44, k45, k46,     k47, k48, k49, k4a, k4b, k4c,\
 | 
	
		
			
				|  |  | +                       k51, k52, k53,     k54, k55, k56\
 | 
	
		
			
				|  |  | +    )\
 | 
	
		
			
				|  |  | +    LAYOUT_ortho_5x12(\
 | 
	
		
			
				|  |  | +        k11, k12, k13, k14, k15, k16,     k17, k18, k19, k1a, k1b, k1c,\
 | 
	
		
			
				|  |  | +        k21, k22, k23, k24, k25, k26,     k27, k28, k29, k2a, k2b, k2c,\
 | 
	
		
			
				|  |  | +        k31, k32, k33, k34, k35, k36,     k37, k38, k39, k3a, k3b, k3c,\
 | 
	
		
			
				|  |  | +        k41, k42, k43, k44, k45, k46,     k47, k48, k49, k4a, k4b, k4c,\
 | 
	
		
			
				|  |  | +        XX,  XX,  XX,  k51, k52, k53,     k54, k55, k56, XX,  XX,  XX,\
 | 
	
		
			
				|  |  | +    )
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +//  ─────────────────< Custom keyboard-specific layouts >──────────────
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#elif defined ARSENIK_LAYOUT_planck_grid
 | 
	
		
			
				|  |  | +#define ARSENIK_LAYOUT(\
 | 
	
		
			
				|  |  | +        k11, k12, k13, k14, k15, k16,      k17, k18, k19, k1a, k1b, k1c,\
 | 
	
		
			
				|  |  | +        k21, k22, k23, k24, k25, k26,      k27, k28, k29, k2a, k2b, k2c,\
 | 
	
		
			
				|  |  | +        k31, k32, k33, k34, k35, k36,      k37, k38, k39, k3a, k3b, k3c,\
 | 
	
		
			
				|  |  | +        k41, k42, k43, k44, k45, k46,      k47, k48, k49, k4a, k4b, k4c,\
 | 
	
		
			
				|  |  | +                       k51, k52, k53,      k54, k55, k56\
 | 
	
		
			
				|  |  | +    LAYOUT_planck_grid(\
 | 
	
		
			
				|  |  | +        k11, k12, k13, k14, k15, k16,     k17, k18, k19, k1a, k1b, k1c,\
 | 
	
		
			
				|  |  | +        k21, k22, k23, k24, k25, k26,     k27, k28, k29, k2a, k2b, k2c,\
 | 
	
		
			
				|  |  | +        k31, k32, k33, k34, k35, k36,     k37, k38, k39, k3a, k3b, k3c,\
 | 
	
		
			
				|  |  | +        k41, k42, k43, k44, k45, k46,     k47, k48, k49, k4a, k4b, k4c,\
 | 
	
		
			
				|  |  | +        XX,  XX,  XX,  k53, k51,      k55,     k56, k54, XX,  XX,  XX,\
 | 
	
		
			
				|  |  | +    )
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#elif defined ARSENIK_LAYOUT_keebio_iris
 | 
	
		
			
				|  |  | +#define ARSENIK_LAYOUT(\
 | 
	
		
			
				|  |  | +        k11, k12, k13, k14, k15, k16,      k17, k18, k19, k1a, k1b, k1c,\
 | 
	
		
			
				|  |  | +        k21, k22, k23, k24, k25, k26,      k27, k28, k29, k2a, k2b, k2c,\
 | 
	
		
			
				|  |  | +        k31, k32, k33, k34, k35, k36,      k37, k38, k39, k3a, k3b, k3c,\
 | 
	
		
			
				|  |  | +        k41, k42, k43, k44, k45, k46,      k47, k48, k49, k4a, k4b, k4c,\
 | 
	
		
			
				|  |  | +                       k51, k52, k53,      k54, k55, k56\
 | 
	
		
			
				|  |  | +    ) LAYOUT(\
 | 
	
		
			
				|  |  | +        k11, k12, k13, k14, k15, k16,         k17, k18, k19, k1a, k1b, k1c,\
 | 
	
		
			
				|  |  | +        k21, k22, k23, k24, k25, k26,         k27, k28, k29, k2a, k2b, k2c,\
 | 
	
		
			
				|  |  | +        k31, k32, k33, k34, k35, k36,         k37, k38, k39, k3a, k3b, k3c,\
 | 
	
		
			
				|  |  | +        k41, k42, k43, k44, k45, k46, XX, XX, k47, k48, k49, k4a, k4b, k4c,\
 | 
	
		
			
				|  |  | +                       k51, k52, k53,         k54, k55, k56\
 | 
	
		
			
				|  |  | +    )
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#else
 | 
	
		
			
				|  |  | +#    error "Arsenik: Unknown layout"
 | 
	
		
			
				|  |  | +#endif
 |