|
@@ -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
|