diff --git a/Atreus/ATREUS-HD_RH.pdf b/Atreus/ATREUS-HD_RH.pdf
new file mode 100644
index 0000000..b38c215
Binary files /dev/null and b/Atreus/ATREUS-HD_RH.pdf differ
diff --git a/Atreus/atreus_hd_keymap.c b/Atreus/atreus_hd_keymap.c
new file mode 100644
index 0000000..784a2a2
--- /dev/null
+++ b/Atreus/atreus_hd_keymap.c
@@ -0,0 +1,85 @@
+#include QMK_KEYBOARD_H
+
+
+#ifdef COMBO_ENABLE
+#include HD_combo_def // this has the combo definitions
+#endif
+
+#define ______ KC_TRNS
+#define __no__ KC_NO
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [L_QWERTY] = LAYOUT(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ RCTL_T(KC_A), RALT_T(KC_S), RGUI_T(KC_D), RSFT_T(KC_F), LT(L_NUM,KC_G), LT(L_FUN,KC_H), RSFT_T(KC_J), RGUI_T(KC_K), RALT_T(KC_L), RCTL_T(KC_SCLN),
+ KC_Z, KC_X, KC_C, KC_V, KC_B, TT(L_NUM), LT(L_FUN,KC_MPLY), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ KC_LEFT, KC_RGHT, KC_APP, LT(L_CFG,KC_MUTE), LT(L_FUN,KC_BSPC), LT(L_NAV,KC_DEL), LT(L_CFG,KC_MUTE), LT(L_SYM,KC_SPC), LT(L_NAV,KC_ENT), LT(L_CFG,KC_MPLY), KC_UP, KC_DOWN),
+
+ [L_HD] = LAYOUT(
+ HD_LT4, HD_LT3, HD_LT2, HD_LT1, HD_LT0, HD_RT0, HD_RT1, HD_RT2, HD_RT3, HD_RT4,
+ HD_LM4, HD_LM3, HD_LM2, HD_LM1, HD_LM0, HD_RM0, HD_RM1, HD_RM2, HD_RM3, HD_RM4,
+ HD_LB4, HD_LB3, HD_LB2, HD_LB1, HD_LB0, HD_LBA, HD_RBA, HD_RB0, HD_RB1, HD_RB2, HD_RB3, HD_RB4,
+ KC_LEFT, KC_RGHT, HD_LH3, HD_LH2, HD_LH1, HD_LH0, HD_RH0, HD_RH1, HD_RH2, HD_RH3, KC_UP, KC_DOWN),
+
+/*
+ [L_SYM] = LAYOUT(
+ KC_Z, KC_Q, RALT(KC_5), LALT(KC_7), LSA(KC_7), LALT(KC_4), KC_DLR, A(S(KC_2)), RALT(KC_3), LALT(KC_Y),
+ KC_LT, KC_LBRC, KC_LPRN, KC_LCBR, RSA(KC_5), RALT(KC_1), RSFT_T(KC_PAST), RGUI_T(KC_PEQL), RALT_T(KC_PPLS), RCTL_T(KC_PSLS),
+ KC_GT, KC_RBRC, KC_RPRN, KC_RCBR, LALT(KC_8), ______, ______, KC_UNDS, KC_PIPE, KC_AMPR, KC_CIRC, KC_PERC,
+ ______, ______, ______, SK_DELWDL, SK_DELWDR, ______, LSA(KC_8), ______, ______, ______, ______, ______),
+*/
+ [L_SYM] = LAYOUT(
+ LS_LT4, LS_LT3, LS_LT2, LS_LT1, LS_LT0, LS_RT0, LS_RT1, LS_RT2, LS_RT3, LS_RT4,
+ LS_LM4, LS_LM3, LS_LM2, LS_LM1, LS_LM0, LS_RM0, LS_RM1, LS_RM2, LS_RM3, LS_RM4,
+ LS_LB4, LS_LB3, LS_LB2, LS_LB1, LS_LB0, LS_LBA, LS_RBA, LS_RB0, LS_RB1, LS_RB2, LS_RB3, LS_RB4,
+ ______, ______, LS_LH3, LS_LH2, LS_LH1, LS_LH0, LS_RH0, LS_RH1, LS_RH2, LS_RH3, ______, ______),
+
+/* [L_FUN] = LAYOUT(
+ KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_GRV, KC_7, KC_8, KC_9, KC_BSLS,
+ LCTL_T(KC_F5), LALT_T(KC_F6), LGUI_T(KC_F7), LSFT_T(KC_F8), KC_F14, KC_SCLN, RSFT_T(KC_1), RGUI_T(KC_2), RALT_T(KC_3), RCTL_T(KC_SLSH), KC_F1, KC_F2, KC_F3, KC_F4, KC_F15, KC_PAUS, KC_TAB, KC_MINS, KC_4, KC_5, KC_6, KC_EQL, KC_PSCR, KC_LSCR, ______, KC_BSPC, KC_ENT, ______, KC_DEL, KC_0, KC_DOT, KC_COMM, ______, ______),
+*/
+ [L_FUN] = LAYOUT(
+ LF_LT4, LF_LT3, LF_LT2, LF_LT1, LF_LT0, LF_RT0, LF_RT1, LF_RT2, LF_RT3, LF_RT4,
+ LF_LM4, LF_LM3, LF_LM2, LF_LM1, LF_LM0, LF_RM0, LF_RM1, LF_RM2, LF_RM3, LF_RM4,
+ LF_LB4, LF_LB3, LF_LB2, LF_LB1, LF_LB0, LF_LBA, LF_RBA, LF_RB0, LF_RB1, LF_RB2, LF_RB3, LF_RB4,
+ ______, ______, LF_LH3, LF_LH2, LF_LH1, LF_LH0, LF_RH0, LF_RH1, LF_RH2, LF_RH3, ______, ______),
+
+/*
+ [L_NUM] = LAYOUT(
+ KC_NUM, KC_PGDN, KC_UP, KC_PGUP, KC_TAB, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_PMNS,
+ SK_WORDPRV, KC_LEFT, KC_DOWN, KC_RGHT, SK_WORDNXT, KC_PAST, RSFT_T(KC_P4), RGUI_T(KC_P5), RALT_T(KC_P6), RCTL_T(KC_PPLS),
+ SK_UNDO, SK_CUT, SK_COPY, SK_PSTE, KC_SPC, KC_ESC, KC_ESC, KC_PCMM, KC_P1, KC_P2, KC_P3, KC_PEQL,
+ ______, ______, ______, LGUI_T(KC_BSPC), LSFT_T(KC_ENT), KC_DEL, KC_C, KC_P0, KC_PDOT, ______, ______, ______),
+*/
+ [L_NUM] = LAYOUT(
+ LN_LT4, LN_LT3, LN_LT2, LN_LT1, LN_LT0, LN_RT0, LN_RT1, LN_RT2, LN_RT3, LN_RT4,
+ LN_LM4, LN_LM3, LN_LM2, LN_LM1, LN_LM0, LN_RM0, LN_RM1, LN_RM2, LN_RM3, LN_RM4,
+ LN_LB4, LN_LB3, LN_LB2, LN_LB1, LN_LB0, LN_LBA, LN_RBA, LN_RB0, LN_RB1, LN_RB2, LN_RB3, LN_RB4,
+ ______, ______, LN_LH3, LN_LH2, LN_LH1, LN_LH0, LN_RH0, LN_RH1, LN_RH2, LN_RH3, ______, ______),
+/*
+ [L_NAV] = LAYOUT(
+ SK_QUIT, SK_CLOZ, SK_SCAP, SK_SCLP, SK_FAGN, SK_DOCBEG, KC_HOME, KC_UP, KC_PGUP, SK_PARAPRV,
+ KC_LCTL, KC_LALT, KC_LGUI, KC_LSFT, SK_FIND, SK_WORDPRV, KC_LEFT, KC_DOWN, KC_RGHT, SK_WORDNXT,
+ SK_UNDO, SK_CUT, SK_COPY, SK_PSTE, SK_PSTM, KC_ESC, KC_TAB, SK_DOCEND, KC_END, KC_DOWN, KC_PGDN, SK_PARANXT,
+ SK_HISTPRV, SK_HISTNXT, ______, ______, ______, ______, ______, SK_HISTPRV, SK_HISTNXT, SK_ZOOMRST, SK_ZOOMOUT, SK_ZOOMIN),
+*/
+ [L_NAV] = LAYOUT(
+ LV_LT4, LV_LT3, LV_LT2, LV_LT1, LV_LT0, LV_RT0, LV_RT1, LV_RT2, LV_RT3, LV_RT4,
+ LV_LM4, LV_LM3, LV_LM2, LV_LM1, LV_LM0, LV_RM0, LV_RM1, LV_RM2, LV_RM3, LV_RM4,
+ LV_LB4, LV_LB3, LV_LB2, LV_LB1, LV_LB0, LV_LBA, LV_RBA, LV_RB0, LV_RB1, LV_RB2, LV_RB3, LV_RB4,
+SK_HISTPRV, SK_HISTNXT, LV_LH3, LV_LH2, LV_LH1, LV_LH0, LV_RH0, LV_RH1, LV_RH2, LV_RH3, SK_ZOOMOUT, SK_ZOOMIN),
+
+/*
+ [L_CFG] = LAYOUT(
+ QK_RBT, CG_SWAP, CG_NORM, EE_CLR, SK_KILL, LCA(KC_DEL), KC_NUM, KC_EJCT, __no__, SK_ZOOMRST,
+ HD_AdaptKeyToggle, HD_L_QWERTY, HD_L_ALPHA, KC_VOLU, KC_BRIU, __no__, KC_MPRV, KC_MUTE, KC_MNXT, SK_ZOOMOUT,
+ QK_BOOT, AG_SWAP, AG_NORM, KC_VOLD, KC_BRID, __no__, __no__, __no__, KC_MRWD, KC_MPLY, KC_MFFD, SK_ZOOMIN,
+ __no__, __no__, TG(L_NUM), __no__, __no__, __no__, __no__, __no__, __no__, __no__, __no__, __no__)
+*/
+ [L_CFG] = LAYOUT(
+ LC_LT4, LC_LT3, LC_LT2, LC_LT1, LC_LT0, LC_RT0, LC_RT1, LC_RT2, LC_RT3, LC_RT4,
+ LC_LM4, LC_LM3, LC_LM2, LC_LM1, LC_LM0, LC_RM0, LC_RM1, LC_RM2, LC_RM3, LC_RM4,
+ LC_LB4, LC_LB3, LC_LB2, LC_LB1, LC_LB0, LC_LBA, LC_RBA, LC_RB0, LC_RB1, LC_RB2, LC_RB3, LC_RB4,
+ ______, ______, LC_LH3, LC_LH2, LC_LH1, LC_LH0, LC_RH0, LC_RH1, LC_RH2, LC_RH3, ______, ______),
+};
+
diff --git a/Atreus/config.h b/Atreus/config.h
new file mode 100644
index 0000000..8b69ccb
--- /dev/null
+++ b/Atreus/config.h
@@ -0,0 +1,26 @@
+/* Copyright (C) 2019, 2020 Keyboard.io, Inc
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+
+// Atreus hardware specific bits
+//
+
+#ifdef PRODUCT
+#undef PRODUCT
+#define PRODUCT HD-Atreus
+#endif
diff --git a/config.h b/config.h
index 830b1f9..654fdc3 100644
--- a/config.h
+++ b/config.h
@@ -55,14 +55,6 @@
#define COMBO_HOLD (TAPPING_TERM) // time to hold to trigger delayed combo
#endif
-#define ADAPTIVE_ENABLE
-#define ADAPTIVE_TRAILER KC_3
-
-//#define THUMB_REPEATER
-#ifdef THUMB_REPEATER
-#define HD_REPEATER_A HD_BSPC
-#define HD_REPEATER_B KC_ENT
-#endif
#ifdef COMBO_HOLD
#undef ADAPTIVE_TERM
@@ -73,8 +65,16 @@
#define LINGER_TIME TAPPING_TERM * 1.2 // how long to hold before a time-depentant behavior begins
// how long to leave a state active before resetting like APPMENU or SHIFTWORD
-#define STATE_RESET_TIME LINGER_TIME * 4
+#define STATE_RESET_TIME LINGER_TIME * 3
+#define ADAPTIVE_ENABLE
+#define ADAPTIVE_TRAILER KC_3
+
+//#define THUMB_REPEATER
+#ifdef THUMB_REPEATER
+#define HD_REPEATER_A HD_BSPC
+#define HD_REPEATER_B KC_ENT
+#endif
#define EN_PRONOUN_COMBOS // English First Person pronoun combos (I, I'm, I've I'd I'll etc) (184 bytes on AVR)
#define EN_PRONOUN_COMBOS_ALL // combos for you('ve), We('ve), They('ve) etc. (616 bytes on AVR)
diff --git a/ferris/config.h b/ferris/config.h
new file mode 100644
index 0000000..f7170db
--- /dev/null
+++ b/ferris/config.h
@@ -0,0 +1,11 @@
+
+/*
+ *
+ */
+
+#pragma once
+
+#ifdef PRODUCT
+#undef PRODUCT
+#define PRODUCT HD-Ferris
+#endif
diff --git a/ferris/ferris_hd_keymap.c b/ferris/ferris_hd_keymap.c
new file mode 100644
index 0000000..0a05d83
--- /dev/null
+++ b/ferris/ferris_hd_keymap.c
@@ -0,0 +1,68 @@
+#include QMK_KEYBOARD_H
+
+#ifdef COMBO_ENABLE
+#include HD_combo_def // this has the combo definitions
+#endif
+
+#define ____ KC_TRNS
+#define _no_ KC_NO
+
+// Alpha Layer for a 34 key (3x5+2) formfactor
+// ╭─────────────────────╮ ╭─────────────────────╮
+// │ LT4 LT3 LT2 LT1 LT0 │ │ RT0 RT1 RT2 RT3 RT4 │
+// │ LM4 LM3 LM2 LM1 LM0 | | RT0 RM1 RM2 RM3 RM4 │
+// │ LB4 LB3 LB2 LB1 LB0 │ │ RB0 RB1 RB2 RB3 RB4 │
+// ╰───────────╮ LH2 LH1 │ │ RH1 RH2 ╭───────────╯
+// ╰─────────╯ ╰─────────╯
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /*
+ [L_QWERTY] = LAYOUT_split_3x5_2(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ RCTL_T(KC_A), RALT_T(KC_S), RGUI_T(KC_D), RSFT_T(KC_F), LT(L_NUMPAD,KC_G), LT(L_FN_NUM,KC_H), RSFT_T(KC_J), RGUI_T(KC_K), RALT_T(KC_L), RCTL_T(KC_SCLN),
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ LT(L_FN_NUM,KC_BSPC), LT(L_NAV,KC_DEL), LT(L_PUNCT,KC_SPC), LT(L_NAV,KC_ENT)),
+*/
+ [L_QWERTY] = LAYOUT_split_3x5_2( // Actually MITHRIL
+ KC_W, KC_P, KC_G, KC_D, KC_J, KC_HASH, KC_DOT, KC_SLSH, KC_X, KC_QUOT,
+ RCTL_T(KC_C), RALT_T(KC_N), RGUI_T(KC_S), RSFT_T(KC_T), LT(L_NUM,KC_K), LT(L_NUM,KC_COMM), RSFT_T(KC_I), RGUI_T(KC_E), RALT_T(KC_L), RCTL_T(KC_A),
+ KC_Y, KC_B, KC_F, KC_M, KC_V, KC_MINS, KC_U, KC_O, KC_H, KC_DQUO,
+ HD_LH2, HD_LH1, HD_RH1, HD_RH2),
+
+ [L_HD] = LAYOUT_split_3x5_2(
+ HD_LT4, HD_LT3, HD_LT2, HD_LT1, HD_LT0, HD_RT0, HD_RT1, HD_RT2, HD_RT3, HD_RT4,
+ HD_LM4, HD_LM3, HD_LM2, HD_LM1, HD_LM0, HD_RM0, HD_RM1, HD_RM2, HD_RM3, HD_RM4,
+ HD_LB4, HD_LB3, HD_LB2, HD_LB1, HD_LB0, HD_RB0, HD_RB1, HD_RB2, HD_RB3, HD_RB4,
+ HD_LH2, HD_LH1, HD_RH1, HD_RH2),
+
+ [L_SYM] = LAYOUT_split_3x5_2(
+ LS_LT4, LS_LT3, LS_LT2, LS_LT1, LS_LT0, LS_RT0, LS_RT1, LS_RT2, LS_RT3, LS_RT4,
+ LS_LM4, LS_LM3, LS_LM2, LS_LM1, LS_LM0, LS_RM0, LS_RM1, LS_RM2, LS_RM3, LS_RM4,
+ LS_LB4, LS_LB3, LS_LB2, LS_LB1, LS_LB0, LS_RB0, LS_RB1, LS_RB2, LS_RB3, LS_RB4,
+ LS_LH2, LS_LH1, LS_RH1, LS_RH2),
+
+ [L_FUN] = LAYOUT_split_3x5_2(
+ LF_LT4, LF_LT3, LF_LT2, LF_LT1, LF_LT0, LF_RT0, LF_RT1, LF_RT2, LF_RT3, LF_RT4,
+ LF_LM4, LF_LM3, LF_LM2, LF_LM1, LF_LM0, LF_RM0, LF_RM1, LF_RM2, LF_RM3, LF_RM4,
+ LF_LB4, LF_LB3, LF_LB2, LF_LB1, LF_LB0, LF_RB0, LF_RB1, LF_RB2, LF_RB3, LF_RB4,
+ LF_LH2, LF_LH1, LF_RH1, LF_RH2),
+
+ [L_NUM] = LAYOUT_split_3x5_2(
+ LN_LT4, LN_LT3, LN_LT2, LN_LT1, LN_LT0, LN_RT0, LN_RT1, LN_RT2, LN_RT3, LN_RT4,
+ LN_LM4, LN_LM3, LN_LM2, LN_LM1, LN_LM0, LN_RM0, LN_RM1, LN_RM2, LN_RM3, LN_RM4,
+ LN_LB4, LN_LB3, LN_LB2, LN_LB1, LN_LB0, LN_RB0, LN_RB1, LN_RB2, LN_RB3, LN_RB4,
+ LN_LH2, LN_LH1, LN_RH1, LN_RH2),
+
+ [L_NAV] = LAYOUT_split_3x5_2(
+ LV_LT4, LV_LT3, LV_LT2, LV_LT1, LV_LT0, LV_RT0, LV_RT1, LV_RT2, LV_RT3, LV_RT4,
+ LV_LM4, LV_LM3, LV_LM2, LV_LM1, LV_LM0, LV_RM0, LV_RM1, LV_RM2, LV_RM3, LV_RM4,
+ LV_LB4, LV_LB3, LV_LB2, LV_LB1, LV_LB0, LV_RB0, LV_RB1, LV_RB2, LV_RB3, LV_RB4,
+ LV_LH2, LV_LH1, LV_RH1, LV_RH2),
+
+ [L_CFG] = LAYOUT_split_3x5_2(
+ LC_LT4, LC_LT3, LC_LT2, LC_LT1, LC_LT0, LC_RT0, LC_RT1, LC_RT2, LC_RT3, LC_RT4,
+ LC_LM4, LC_LM3, LC_LM2, LC_LM1, LC_LM0, LC_RM0, LC_RM1, LC_RM2, LC_RM3, LC_RM4,
+ LC_LB4, LC_LB3, LC_LB2, LC_LB1, LC_LB0, LC_RB0, LC_RB1, LC_RB2, LC_RB3, LC_RB4,
+ LC_LH2, LC_LH1, LC_RH1, LC_RH2),
+
+};
diff --git a/handsdown/au-config.h b/handsdown/au-config.h
index 19cac43..3b684da 100644
--- a/handsdown/au-config.h
+++ b/handsdown/au-config.h
@@ -4,41 +4,12 @@
//
#define HD_adaptive_code "handsdown/au-adaptive.c"
//
-//
-// Alpha Layer for a 34 key formfactor
-// ╭─────────────────────╮ ╭─────────────────────╮
-// │ LT4 LT3 LT2 LT1 LT0 │ │ RT0 RT1 RT2 RT3 RT4 │
-// │ LM4 LM3 LM2 LM1 LM0 | | RT0 RM1 RM2 RM3 RM4 │
-// │ LB4 LB3 LB2 LB1 LB0 │ │ RB0 RB1 RB2 RB3 RB4 │
-// ╰───────────╮ LH2 LH1 │ │ RH1 RH2 ╭──────────╯
-// ╰─────────╯ ╰──────────╯
-// Hands Down Gold
-// ╭─────────────────────╮ ╭─────────────────────╮
-// │ J G M P V │ │ #$ .: /* "[ '] │
-// │ R S N D B | | ,; A E I H │
-// │ X F L C W │ │ -+ U O Y K │
-// ╰───────────╮ BSP T │ │ SPC RET ╭──────────╯
-// ╰─────────╯ ╰──────────╯
-// Q (LT3) & Z (LT4) are on the punc layer
-// and on combos (defined below)
-//
-// for now...
-// This will morph to being entirel properly abstracted
-// similar to Miryoku, (maybe someone will make an HD Miryoku someday?)
-//
-//
//
-// We want to be able to define a combo either
-// by location for variation independent, spatial referencing, or
-// or by letter for mnemonic/phonetic referencing (variation dependent)
-//
-// BE CAREFUL to not double define a combo!
-//
-// First, let's add any hold-taps to the keycodes
+// First, let's define HD alpha keycodes with any hold-taps/custom keycodes
//
#define HD_A RSFT_T(KC_A)
-#define HD_B LT(L_NUMPAD,KC_B)
+#define HD_B LT(L_NUM,KC_B)
#define HD_C KC_C
#define HD_D RSFT_T(KC_D)
#define HD_E RGUI_T(KC_E)
@@ -66,63 +37,112 @@
#define HD_MINS KC_MINS
#define HD_HASH KC_HASH
-#define HD_SPC LT(L_PUNCT,KC_SPC)
-#define HD_BSPC LT(L_FN_NUM,KC_BSPC)
+#define HD_SPC LT(L_SYM,KC_SPC)
+#define HD_BSPC LT(L_FUN,KC_BSPC)
#define HD_ENT LT(L_NAV,KC_ENT)
#define HD_QUOT KC_QUOT
#define HD_DQUO KC_DQUO
#define HD_SLSH KC_SLSH
#define HD_DOT KC_DOT
-#define HD_COMM LT(L_FN_NUM, KC_COMM)
+#define HD_COMM LT(L_FUN, KC_COMM)
+// Now let's place these HD keycodes on the keymap
+// for variation independent spatial referencing by key position
+//
+// Key Position Names for a 34 (-54) key split form factor
+// Should cover Ferris through Atreus-Kyria-Ergodox
+// ╭─────────────────────╮ ╭─────────────────────╮
+// LT5 │ LT4 LT3 LT2 LT1 LT0 │ LTA RTB │ RT0 RT1 RT2 RT3 RT4 │ RT5
+// LM5 │ LM4 LM3 LM2 LM1 LM0 | LMA RMA | RT0 RM1 RM2 RM3 RM4 │ RM5
+// LB5 │ LB4 LB3 LB2 LB1 LB0 │ LBA LBB RBB RBA │ RB0 RB1 RB2 RB3 RB4 │ RB5
+// ╰───────────╮ LH2 LH1 │ LH0 LHA RHA RH0 │ RH1 RH2 ╭───────────╯
+// LH5 LH4 LH3 ╰─────────╯ ╰─────────╯ RH3 RH4 RH5
+//
//
-// Now let's also define the keycodes on the map for spatial referencing
+// Base (alpha) Layer Hands Down Gold (HRMs /+ thumb mods)
+// ╭─────────────────────╮ ╭─────────────────────╮
+// esc │ J G M P V │ L_CFG L_NUM │ #$ .: /* "[ '] │ LANG2/henk
+// tab │ R S N D B | ( ) | ,; A E I H │ LANG1/mhen
+// Z │ X F L C W │ [ copy pste ] │ -+ U O Y K │ Q
+// ╰───────────╮ bsp T │ & | │ spc ret ╭──────────╯
+// left rght app ╰─────────╯ ╰──────────╯ tgLN up dn
//
-// (is there any way to combine these 2 steps?)
+// For small boards, Q (LT3) & Z (LT4) are (also) on the sym layer
+// and accessible combos (defined below)
//
+
+#define HD_LT5 KC_ESC
#define HD_LT4 HD_J
#define HD_LT3 HD_G
#define HD_LT2 HD_M
#define HD_LT1 HD_P
#define HD_LT0 HD_V
+#define HD_LTA OSL(L_CFG)
+#define HD_RTA TG(L_NUM)
#define HD_RT0 HD_HASH
#define HD_RT1 HD_DOT
#define HD_RT2 HD_SLSH
#define HD_RT3 HD_DQUO
#define HD_RT4 HD_QUOT
+#define HD_RT5 KC_LNG2
+#define HD_LM5 KC_TAB
#define HD_LM4 HD_R
#define HD_LM3 HD_S
#define HD_LM2 HD_N
#define HD_LM1 HD_D
#define HD_LM0 HD_B
+#define HD_LMA KC_LPRN
+#define HD_RMA KC_RPRN
#define HD_RM0 HD_COMM
#define HD_RM1 HD_A
#define HD_RM2 HD_E
#define HD_RM3 HD_I
#define HD_RM4 HD_H
+#define HD_RM5 KC_LNG1
+#define HD_LB5 HD_Z
#define HD_LB4 HD_X
#define HD_LB3 HD_F
#define HD_LB2 HD_L
#define HD_LB1 HD_C
#define HD_LB0 HD_W
+#define HD_LBA LT(L_NUM, KC_LBRC)
+#define HD_LBB LT(L_FUN,SK_COPY)
+#define HD_RBB LT(L_FUN,SK_PSTE)
+#define HD_RBA LT(L_NAV,KC_RBRC)
#define HD_RB0 HD_MINS
#define HD_RB1 HD_U
#define HD_RB2 HD_O
#define HD_RB3 HD_Y
#define HD_RB4 HD_K
+#define HD_RB5 HD_Q
-//Primary Thumbs (others unique to the board)
+//Primary Thumbs 1-3 (others are unique to the board)
+#define HD_LH5 KC_LEFT
+#define HD_LH4 LT(L_FUN,KC_MUTE)
+#define HD_LH3 KC_APP
#define HD_LH2 HD_BSPC
#define HD_LH1 HD_T
+#define HD_LH0 LT(L_CFG,KC_MUTE)
+#define HD_LHA LT(L_NAV,KC_LNG2)
+#define HD_RHA LT(L_SYM,KC_LNG1)
+#define HD_RH0 LT(L_CFG,KC_MPLY)
#define HD_RH1 HD_SPC
#define HD_RH2 HD_ENT
-
-
+#define HD_RH3 TG(L_NUM)
+#define HD_RH4 LT(L_FUN,KC_MPLY)
+#define HD_RH5 KC_DN
#ifdef COMBO_ENABLE
//
+// We want to be able to define a combo by location
+// for variation independent, spatial referencing, or
+// by letter for mnemonic/phonetic referencing (variation dependent)
+// put this sort of obscures the definitions…so…
+//
+// BE CAREFUL to not double define a combo!
+//
// Combo definitions that rely on phonetics/mnemonics for their locations.
//
// Combos that are spacially organized don't need to be redefined
@@ -132,14 +152,16 @@
// notably the H-digraph combos that inhabit close areas.
//
#define HD_tab_keys HD_LM4, HD_LM3 // tab
+#define HD_stab_keys HD_LM4, HD_LM3, HD_LM1 // shift-tab
#define HD_spc_keys HD_LM1, HD_LM0 // SPACE
#define HD_ent_keys HD_LB0, HD_LB1 // ENTER
-#define HD_ent2_keys HD_LB0, HD_LB2, HD_LB1 // hard-ENTER/page break
+#define HD_ent2_keys HD_LB0, HD_LB1, HD_LB2 // hard-ENTER/page break
+#define APPMENU_keys HD_LB3, HD_LB1 // APPMENU
-// TEXT ENTRY - off map standard alphas (also on Layer L_PUNCT @ Z=LT4 & Q=LT3)
+// TEXT ENTRY - off map standard alphas (also on Layer L_SYM @ Z=LT4 & Q=LT3)
//
#define HD_Qu_keys HD_LT3, HD_LT1 // TYPE "q" (Qu & Linger deletes u)
-#define HD_L1_keys HD_LM3, HD_LM1 // ex. TYPE "z"
+#define HD_L1_keys HD_LT1, HD_LT0 // ex. TYPE "z"
#define HD_L1 HD_Z
//#define HD_L2_keys HD_LM3, HD_LM1 // ex. TYPE "x"
//#define HD_L2 HD_X
@@ -158,10 +180,12 @@
#define HD_Gh_keys HD_LT3, HD_LT2 // TYPE "gh"
#define HD_Sch_keys HD_LM4, HD_LM3, HD_LM2 // TYPE "Sch"
+// Should we put all the diacritic keys here?
+// or get keep them all in the common area (if they all share
+// HD Neu vowel block)?
#define HD_OE_lig_keys HD_RM2, HD_RB2 // Œ
#define HD_AE_lig_keys HD_RM1, HD_RB1 // Æ
-
#ifdef EN_PRONOUN_COMBOS
// the entirely unnecessary pronoun combo shenanigans
@@ -178,16 +202,17 @@
#define HD_youre_keys HD_Y, HD_R // TYPE "you're"
#define HD_youve_keys HD_Y, HD_V // TYPE "you've"
#define HD_your_keys HD_Y, HD_P // TYPE "your" "P" for "possessive" case
+
#define HD_their_keys HD_T, HD_W // TYPE "their" #6
#define HD_they_keys HD_T, HD_Y // "they" #23 + 've
#define HD_theyd_keys HD_T, HD_X // "they'd" #23 + 've
#define HD_theyll_keys HD_T, HD_L // "they'll" #23 + 've
#define HD_theyre_keys HD_T, HD_QUOT // "they're"
+// deictics. Are these really necessary?
#define HD_there_keys HD_T, HD_F // TYPE "there" #7 + 's
#define HD_here_keys HD_H, HD_R // TYPE "here" #5 + 's
-
#ifdef EN_W_PRONOUNS
#define HD_where_keys HD_X, HD_R // "where" + 's
#define HD_wed_keys HD_X, HD_G // TYPE "we'd" + 've
@@ -196,13 +221,14 @@
#define HD_weve_keys HD_X, HD_J // TYPE "we've"
#endif // EN_W_PRONOUNS
-#endif // EN_PRONOUN_keysS_ALL
-#endif // EN_PRONOUN_keysS // the entirely unnecessary pronoun combo shenanigans
-
-
+#endif // EN_PRONOUNS_ALL
+#endif // EN_PRONOUNS // the entirely unnecessary pronoun combo shenanigans
// SEMANTIC FUNCTIONS ** uses SemKeys **
// Spatially arranged on the QWERTY ZXCV locations
+// independent of the HD Alphas, though since some of
+// the above combos may compete for the same locations,
+// we'll define them all here.
//
#define HD_new_keys HD_LM2, HD_LB2 // new
#define HD_open_keys HD_LM1, HD_LB1 // open
@@ -213,12 +239,9 @@
#define HD_swrd_keys HD_LB4, HD_LB0 // select word
#define HD_undo_keys HD_LB4, HD_LB3 // undo
#define HD_redo_keys HD_LB4, HD_LB3, HD_LB2 // redo
-//#define HD_cut_keys HD_LB4, HD_LB2 // cut
#define HD_copy_keys HD_LB3, HD_LB2 // copy (hold for cut)
#define HD_pste_keys HD_LB2, HD_LB1 // paste (hold for paste-match)
-
-
#ifdef JP_MODE_ENABLE
#ifdef JP_YOUON_COMBOS
// Major Japanese contracted consonants as combos
@@ -259,7 +282,9 @@
#define JP_the_keys HD_LM2, HD_LM1, HD_RM2 // てぇ
#define JP_tho_keys HD_LM2, HD_LM1, HD_RB2 // てょ
#define JP_dha_keys HD_LB1, HD_RM1 // でゃ
-#define JP_dhi_keys HD_LB1, HD_RM3 // でぃ
+#ifndef EN_PRONOUN_COMBOS
+#define JP_dhi_keys HD_LB1, HD_RM3 // でぃ conflicts with I'd (so handle it there if present)
+#endif
#define JP_dhu_keys HD_LB1, HD_RB1 // でゅ
#define JP_dhe_keys HD_LB1, HD_RM2 // でぇ
#define JP_dho_keys HD_LB1, HD_RB2 // でょ
@@ -289,5 +314,4 @@
#endif // JP_YOUON_COMBOS // Major Japanese contracted sounds as combos
#endif // JP_MODE_ENABLE // All Japanese mode features
-
#endif // COMBO_ENABLE
diff --git a/handsdown/mi-config.h b/handsdown/mi-config.h
index 028f479..174d29e 100644
--- a/handsdown/mi-config.h
+++ b/handsdown/mi-config.h
@@ -4,38 +4,9 @@
//
#define HD_adaptive_code "handsdown/mi-adaptive.c"
//
-//
-// Alpha Layer for a 34 key formfactor
-// ╭─────────────────────╮ ╭─────────────────────╮
-// │ LT4 LT3 LT2 LT1 LT0 │ │ RT0 RT1 RT2 RT3 RT4 │
-// │ LM4 LM3 LM2 LM1 LM0 | | RT0 RM1 RM2 RM3 RM4 │
-// │ LB4 LB3 LB2 LB1 LB0 │ │ RB0 RB1 RB2 RB3 RB4 │
-// ╰───────────╮ LH2 LH1 │ │ RH1 RH2 ╭──────────╯
-// ╰─────────╯ ╰──────────╯
-// Hands Down Mithril
-// ╭─────────────────────╮ ╭─────────────────────╮
-// │ W P G D Z │ │ #$ .: /* '[ J │
-// │ C N S T K | | ,; I E A H │
-// │ Y B F M V │ │ -+ U O "] L │
-// ╰───────────╮ BSP R │ │ SPC RET ╭──────────╯
-// ╰─────────╯ ╰──────────╯
-// Q (LT3) & X (LT4) are on the punc layer
-// and on combos (defined below)
-//
-// for now...
-// This will morph to being entirel properly abstracted
-// similar to Miryoku, (maybe someone will make an HD Miryoku someday?)
-//
-//
//
-// We want to be able to define a combo either
-// by location for variation independent, spatial referencing, or
-// or by letter for mnemonic/phonetic referencing (variation dependent)
-//
-// BE CAREFUL to not double define a combo!
-//
-// First, let's add any hold-taps to the keycodes
+// First, let's define HD alpha keycodes with any hold-taps/custom keycodes
//
#define HD_A RALT_T(KC_A)
#define HD_B KC_B
@@ -47,7 +18,7 @@
#define HD_H RCTL_T(KC_H)
#define HD_I RSFT_T(KC_I)
#define HD_J KC_J
-#define HD_K LT(L_NUMPAD,KC_K)
+#define HD_K LT(L_NUM,KC_K)
#define HD_L KC_L
#define HD_M KC_M
#define HD_N RALT_T(KC_N)
@@ -66,63 +37,112 @@
#define HD_MINS KC_MINS
#define HD_HASH KC_HASH
-#define HD_SPC LT(L_PUNCT,KC_SPC)
-#define HD_BSPC LT(L_FN_NUM,KC_BSPC)
+#define HD_SPC LT(L_SYM,KC_SPC)
+#define HD_BSPC LT(L_FUN,KC_BSPC)
#define HD_ENT LT(L_NAV,KC_ENT)
#define HD_QUOT KC_QUOT
#define HD_DQUO KC_DQUO
#define HD_SLSH KC_SLSH
#define HD_DOT KC_DOT
-#define HD_COMM LT(L_FN_NUM, KC_COMM)
+#define HD_COMM LT(L_FUN, KC_COMM)
+// Now let's place these HD keycodes on the keymap
+// for variation independent spatial referencing by key position
//
-// Now let's also define the keycodes on the map for spatial referencing
+// Key Position Names for a 34 (-54) key split form factor
+// Should cover Ferris through Atreus-Kyria-Ergodox
+// ╭─────────────────────╮ ╭─────────────────────╮
+// LT5 │ LT4 LT3 LT2 LT1 LT0 │ LTA RTB │ RT0 RT1 RT2 RT3 RT4 │ RT5
+// LM5 │ LM4 LM3 LM2 LM1 LM0 | LMA RMA | RT0 RM1 RM2 RM3 RM4 │ RM5
+// LB5 │ LB4 LB3 LB2 LB1 LB0 │ LBA LBB RBB RBA │ RB0 RB1 RB2 RB3 RB4 │ RB5
+// ╰───────────╮ LH2 LH1 │ LH0 LHA RHA RH0 │ RH1 RH2 ╭───────────╯
+// LH5 LH4 LH3 ╰─────────╯ ╰─────────╯ RH3 RH4 RH5
//
-// (is there any way to combine these 2 steps?)
//
+// Base (alpha) Layer Hands Down Mithril (HRMs /+ thumb mods)
+// ╭─────────────────────╮ ╭─────────────────────╮
+// esc │ W P G D Z │ L_CFG L_NUM │ #$ .: /* '[ J │ LANG2/henk
+// tab │ C N S T K | ( ) | ,; I E A H │ LANG1/mhen
+// Z │ Y B F M V │ [ copy pste ] │ -+ U O "] L │ Q
+// ╰───────────╮ bsp R │ & | │ spc ret ╭──────────╯
+// left rght app ╰─────────╯ ╰──────────╯ tgLN up dn
+//
+// For small boards, Q (LT3) & Z (LT4) are (also) on the sym layer
+// and accessible combos (defined below)
+//
+
+#define HD_LT5 KC_ESC
#define HD_LT4 HD_W
#define HD_LT3 HD_P
#define HD_LT2 HD_G
#define HD_LT1 HD_D
#define HD_LT0 HD_Z
+#define HD_LTA OSL(L_CFG)
+#define HD_RTA TG(L_NUM)
#define HD_RT0 HD_HASH
#define HD_RT1 HD_DOT
#define HD_RT2 HD_SLSH
#define HD_RT3 HD_QUOT
#define HD_RT4 HD_J
+#define HD_RT5 KC_LNG2
+#define HD_LM5 KC_TAB
#define HD_LM4 HD_C
#define HD_LM3 HD_N
#define HD_LM2 HD_S
#define HD_LM1 HD_T
#define HD_LM0 HD_K
+#define HD_LMA KC_LPRN
+#define HD_RMA KC_RPRN
#define HD_RM0 HD_COMM
#define HD_RM1 HD_I
#define HD_RM2 HD_E
#define HD_RM3 HD_A
#define HD_RM4 HD_H
+#define HD_RM5 KC_LNG1
+#define HD_LB5 HD_Z
#define HD_LB4 HD_Y
#define HD_LB3 HD_B
#define HD_LB2 HD_F
#define HD_LB1 HD_M
#define HD_LB0 HD_V
+#define HD_LBA LT(L_NUM, KC_LBRC)
+#define HD_LBB LT(L_FUN,SK_COPY)
+#define HD_RBB LT(L_FUN,SK_PSTE)
+#define HD_RBA LT(L_NAV,KC_RBRC)
#define HD_RB0 HD_MINS
#define HD_RB1 HD_U
#define HD_RB2 HD_O
#define HD_RB3 HD_DQUO
#define HD_RB4 HD_L
+#define HD_RB5 HD_Q
-//Primary Thumbs (others unique to the board)
+//Primary Thumbs 1-3 (others are unique to the board)
+#define HD_LH5 KC_LEFT
+#define HD_LH4 LT(L_FUN,KC_MUTE)
+#define HD_LH3 KC_APP
#define HD_LH2 HD_BSPC
#define HD_LH1 HD_R
+#define HD_LH0 LT(L_CFG,KC_MUTE)
+#define HD_LHA LT(L_NAV,KC_LNG2)
+#define HD_RHA LT(L_SYM,KC_LNG1)
+#define HD_RH0 LT(L_CFG,KC_MPLY)
#define HD_RH1 HD_SPC
#define HD_RH2 HD_ENT
-
-
+#define HD_RH3 TG(L_NUM)
+#define HD_RH4 LT(L_FUN,KC_MPLY)
+#define HD_RH5 KC_DN
#ifdef COMBO_ENABLE
//
+// We want to be able to define a combo by location
+// for variation independent, spatial referencing, or
+// by letter for mnemonic/phonetic referencing (variation dependent)
+// put this sort of obscures the definitions…so…
+//
+// BE CAREFUL to not double define a combo!
+//
// Combo definitions that rely on phonetics/mnemonics for their locations.
//
// Combos that are spacially organized don't need to be redefined
@@ -131,20 +151,23 @@
// These few spatial combos may move to accommodate some mnemonic combos,
// notably the H-digraph combos that inhabit close areas.
//
-#define HD_tab_keys HD_LT1, HD_LT0 // tab
+#define HD_tab_keys HD_LM3, HD_LM1 // tab
+#define HD_stab_keys HD_LM3, HD_LM2, HD_LM1 // hard-ENTER/page break
#define HD_spc_keys HD_LM1, HD_LM0 // SPACE
-#define HD_ent_keys HD_LB1, HD_LB0 // ENTER
+#define HD_ent_keys HD_LB0, HD_LB1 // ENTER
#define HD_ent2_keys HD_LB0, HD_LB1, HD_LB2 // hard-ENTER/page break
+#define APPMENUKEYS HD_LB3, HD_LB1 // APPMENU
-// TEXT ENTRY - off map standard alphas (also on Layer L_PUNCT @ Z=LT4 & Q=LT3)
+// TEXT ENTRY - off map standard alphas (also on Layer L_SYM @ Z=LT4 & Q=LT3)
//
#define HD_Qu_keys HD_LT3, HD_LT1 // TYPE "q" (Qu & Linger deletes u)
-#define HD_L1_keys HD_LM3, HD_LM1 // ex. TYPE "z"
+#define HD_L1_keys HD_LT1, HD_LT0 // ex. TYPE "z"
#define HD_L1 HD_X
//#define HD_L2_keys HD_LM3, HD_LM1 // ex. TYPE "x"
//#define HD_L2 HD_X
//#define HD_L3_keys HD_LM3, HD_LM1 // ex. TYPE "j"
//#define HD_L3 HD_J
+
//
// H digraph combos
// try to make these use the lead letter and a neighbor.
@@ -157,14 +180,14 @@
#define HD_Gh_keys HD_LT2, HD_LT1 // TYPE "gh"
#define HD_Sch_keys HD_LM4, HD_LM3, HD_LM2 // TYPE "Sch"
+// Should we put all the diacritic keys here?
+// or get keep them all in the common area (if they all share
+// HD Neu vowel block)?
#define HD_OE_lig_keys HD_RM2, HD_RB2 // Œ
#define HD_AE_lig_keys HD_RM3, HD_RB3 // Æ
-
#ifdef EN_PRONOUN_COMBOS
// the entirely unnecessary pronoun combo shenanigans
-//
-// Always check for double definitions!
// PRONOUNS Fast 4-7grams
#define HD_Icap_keys HD_I, HD_H // TYPE "I"
@@ -179,16 +202,17 @@
#define HD_youre_keys HD_Y, HD_R // TYPE "you're"
#define HD_youve_keys HD_Y, HD_V // TYPE "you've"
#define HD_your_keys HD_Y, HD_P // TYPE "your" "P" for "possessive" case
+
#define HD_their_keys HD_T, HD_W // TYPE "their" #6
#define HD_they_keys HD_T, HD_Y // "they" #23 + 've
#define HD_theyd_keys HD_T, HD_X // "they'd" #23 + 've
#define HD_theyll_keys HD_T, HD_L // "they'll" #23 + 've
#define HD_theyre_keys HD_T, HD_QUOT // "they're"
+// deictics. Are these really necessary?
#define HD_there_keys HD_T, HD_F // TYPE "there" #7 + 's
#define HD_here_keys HD_H, HD_R // TYPE "here" #5 + 's
-
#ifdef EN_W_PRONOUNS
#define HD_where_keys HD_X, HD_R // "where" + 's
#define HD_wed_keys HD_X, HD_G // TYPE "we'd" + 've
@@ -197,13 +221,14 @@
#define HD_weve_keys HD_X, HD_J // TYPE "we've"
#endif // EN_W_PRONOUNS
-#endif // EN_PRONOUN_keysS_ALL
-#endif // EN_PRONOUN_keysS // the entirely unnecessary pronoun combo shenanigans
-
-
+#endif // EN_PRONOUNS_ALL
+#endif // EN_PRONOUNS // the entirely unnecessary pronoun combo shenanigans
// SEMANTIC FUNCTIONS ** uses SemKeys **
// Spatially arranged on the QWERTY ZXCV locations
+// independent of the HD Alphas, though since some of
+// the above combos may compete for the same locations,
+// we'll define them all here.
//
#define HD_new_keys HD_LM2, HD_LB2 // new
#define HD_open_keys HD_LM1, HD_LB1 // open
@@ -214,12 +239,9 @@
#define HD_swrd_keys HD_LB4, HD_LB0 // select word
#define HD_undo_keys HD_LB4, HD_LB3 // undo
#define HD_redo_keys HD_LB4, HD_LB3, HD_LB2 // redo
-//#define HD_cut_keys HD_LB4, HD_LB2 // cut
#define HD_copy_keys HD_LB3, HD_LB2 // copy (hold for cut)
#define HD_pste_keys HD_LB2, HD_LB1 // paste (hold for paste-match)
-
-
#ifdef JP_MODE_ENABLE
#ifdef JP_YOUON_COMBOS
// Major Japanese contracted consonants as combos
@@ -260,7 +282,9 @@
#define JP_the_keys HD_LM2, HD_LM1, HD_RM2 // てぇ
#define JP_tho_keys HD_LM2, HD_LM1, HD_RB2 // てょ
#define JP_dha_keys HD_LB1, HD_RM1 // でゃ
-#define JP_dhi_keys HD_LB1, HD_RM3 // でぃ
+#ifndef EN_PRONOUN_COMBOS
+#define JP_dhi_keys HD_LB1, HD_RM3 // でぃ conflicts with I'd (so handle it there if present)
+#endif
#define JP_dhu_keys HD_LB1, HD_RB1 // でゅ
#define JP_dhe_keys HD_LB1, HD_RM2 // でぇ
#define JP_dho_keys HD_LB1, HD_RB2 // でょ
@@ -290,5 +314,4 @@
#endif // JP_YOUON_COMBOS // Major Japanese contracted sounds as combos
#endif // JP_MODE_ENABLE // All Japanese mode features
-
#endif // COMBO_ENABLE
diff --git a/handsdown/nu-adaptive.c b/handsdown/nu-adaptive.c
new file mode 100644
index 0000000..46da78b
--- /dev/null
+++ b/handsdown/nu-adaptive.c
@@ -0,0 +1,371 @@
+/*
+ Adaptive Keys
+ Called from within process_record_user
+
+ Tailored for HD Neu (neu)
+
+ NOTE: assumed dual-function keys (MOD_TAP, LAYER_TAP) have already been handled AND
+ FILTERED OUT! The combos handler will have already taken out combo candidates,
+ which have a shorter keydown threshhold (COMBO_TERM).
+
+ All the goto shenanigans should be resolved after complete migration to STM/RP controllersr
+ (not totally possible, as many of my boards have embedded AVR mcus)
+
+ */
+// Hands Down Neu
+// ╭─────────────────────╮ ╭─────────────────────╮
+// │ W F M P V │ │ #$ .: /* "[ '] │
+// │ R S N T B | | ,; A E I H │
+// │ X C L D G │ │ -+ U O Y K │
+// ╰───────────╮ BSP SPC │ │ SPC RET ╭──────────╯
+// ╰─────────╯ ╰──────────╯
+// Q (LT3) & Z (LT4) are on the punc layer
+
+bool process_adaptive_key(uint16_t *calling_keycode, const keyrecord_t *record) {
+ bool return_state = true; // assume we don't do anything.
+ uint16_t keycode = *calling_keycode;
+
+ // Are we in an adaptive context? (adaptive on is assumed).
+ if (timer_elapsed(prior_keydown) > ADAPTIVE_TERM) { // outside adaptive threshhold
+ prior_keycode = prior_keydown = 0; // turn off Adaptives.
+ return true; // no adaptive conditions, so return.
+ }
+
+ // K, this could be adaptive, so process.
+ saved_mods = get_mods();
+
+ if (!caps_word_on) { // turn off shift, (first-words & Proper nouns)
+ unregister_mods(MOD_MASK_SHIFT); //CAPS_WORD/LOCK won't be affected.
+ } // may want more granular control than this…
+
+ switch (keycode & QK_BASIC_MAX) { // process ignoring multi-function keys
+
+/*
+// Left hand adaptives (most are single-handed neighbor fingers, bc speed, dexterity limits)
+*/
+ case KC_B: // avoid the index-middle split
+ switch (prior_keycode) {
+ case KC_P: // pull up M over
+ tap_code(KC_M);
+ return_state = false; // done.
+ case KC_D: // pull L over
+ goto PullUpLAndExit; // short jumps save bytes
+ break;
+ }
+ break;
+ case KC_M: // M becomes L (pull up "L" to same row)
+ switch (prior_keycode) {
+ case KC_P: //
+ case KC_F: //
+PullUpLAndExit:
+ tap_code(KC_L); //
+ return_state = false; // done.
+ break;
+ case KC_W: // WM = LM (LM 20x more common)
+ReplacePriorWithL:
+ tap_code(KC_BSPC);
+ tap_code(KC_L);
+ break;
+ }
+ break;
+ case KC_D: //
+ switch (prior_keycode) { //
+ case KC_G:
+ goto PullUpLAndExit; // short jumps save bytes
+ }
+ break;
+ case KC_P:
+ switch (prior_keycode) {
+ case KC_F: // avoid the scissor
+ goto ReplacePriorWithL; // short jumps save bytes
+ case KC_W:
+ tap_code(KC_BSPC);
+ send_string("lml"); // for "calmly" but not quite intuitive…
+ return_state = false; // done.
+ break;
+ case KC_V: // avoid the index-middle split
+ goto PullUpLAndExit; // short jumps save bytes
+ }
+ break;
+ case KC_G: // avoid the index-middle split
+ switch (prior_keycode) {
+ case KC_T: // pull N over
+ tap_code(KC_N);
+ return_state = false; // done.
+ case KC_D: // pull L over
+ goto ReplacePriorWithL;
+ }
+ break;
+
+ case KC_T: // alt fingering remedy for middle-index splits
+ switch (prior_keycode) {
+ case KC_B: //
+ goto PullUpLAndExit; // short jumps save bytes
+ break;
+ case KC_G:
+ send_string("ght"); // GHT is much more common
+ return_state = false; // done.
+ break;
+ }
+ break;
+
+
+/*
+// right hand adaptives
+*/
+
+ case KC_H: // How often are we likely to hit BS so quickly after?
+ switch (prior_keycode) { // maybe OK? What about xxR? resulting in a SFB on thumb?
+ case KC_A: // AE is a fraction less common, but I find the EAE trill harder than EAH.
+ tap_code(KC_U); // "AH" yields "AU" (8x more common)
+ return_state = false; // done.
+ break;
+ case KC_E:
+ tap_code(KC_O); // "EH" yields "EO" (1.75:1)
+ return_state = false; // done.
+ break;
+ case KC_O:
+ tap_code(KC_E); // "OH" yields "OE" (almost 1:1, but eliminates an SFB?)
+ return_state = false; // done.
+ break;
+ case KC_U:
+ tap_code(KC_A); // "UH" yields "UA" (126x more common)
+ return_state = false; // done.
+ break;
+
+ }
+ break;
+
+ case KC_K:
+ switch (prior_keycode) {
+ case KC_Y: // eliminate SFB on ring finger
+ tap_code(KC_I);
+ return_state = false; // done.
+ break;
+ }
+ break;
+ case KC_U:
+ switch (prior_keycode) {
+ case KC_K: // make KU send Qu
+ tap_code(KC_BSPC);
+ tap_code(KC_Q);
+ break;
+ }
+ break;
+
+
+#ifdef THUMB_REPEATER
+ case HD_REPEATER_A: // Make a repeat key of the secondary thumb key on both sides
+ case HD_REPEATER_B: // for most common double letters (inherently SFBs)
+ switch (prior_keycode) {
+ case KC_A ... KC_SLASH: // Any alpha can be repeated?
+/* double-letter frequencies from Peter Norvig's data
+ case KC_L: // 0.577%
+ case KC_S: // 0.405%
+ case KC_E: // 0.378%
+ case KC_O: // 0.210%
+ case KC_T: // 0.171%
+ case KC_F: // 0.146%
+ case KC_P: // 0.137%
+ case KC_R: // 0.121%
+ case KC_M: // 0.096%
+ case KC_C: // 0.083%
+ case KC_N: // 0.073%
+ case KC_D: // 0.043%
+ case KC_G: // 0.025%
+ case KC_I: // 0.023%
+ case KC_B: // 0.011%
+ case KC_A: // 0.003%
+ case KC_Z: // 0.003%
+ case KC_X: // 0.003%
+ case KC_U: // 0.001%
+ case KC_H: // 0.001%
+*/
+ tap_code(prior_keycode); // eliminate SFB on double
+ return_state = false; // done.
+ }
+ break;
+#endif
+#ifdef ADAPTIVE_TRAILER
+// Using Adaptives for macros (like a flexible LeaderKey)
+ case ADAPTIVE_TRAILER:
+ switch (prior_keycode) {
+#ifdef adaptAMINS
+ case KC_A: //
+ tap_code(KC_BSPC); // may have been lowercase
+ send_string(adaptAMINS); //
+ return_state = false; // done.
+ break;
+#endif
+#ifdef adaptBMINS
+ case KC_B: //
+ tap_code(KC_BSPC); // may have been lowercase
+ send_string(adaptBMINS); //
+ return_state = false; // done.
+ break;
+#endif
+#ifdef adaptCMINS
+ case KC_C: //
+ tap_code(KC_BSPC); // may have been lowercase
+ send_string(adaptCMINS); //
+ return_state = false; // done.
+ break;
+#endif
+#ifdef adaptDMINS
+ case KC_D: //
+ tap_code(KC_BSPC); // may have been lowercase
+ send_string(adaptDMINS); //
+ return_state = false; // done.
+ break;
+#endif
+#ifdef adaptEMINS
+ case KC_E: //
+ tap_code(KC_BSPC); // may have been lowercase
+ send_string(adaptEMINS); //
+ return_state = false; // done.
+ break;
+#endif
+#ifdef adaptFMINS
+ case KC_F: //
+ tap_code(KC_BSPC); // may have been lowercase
+ send_string(adaptFMINS); //
+ return_state = false; // done.
+ break;
+#endif
+#ifdef adaptGMINS
+ case KC_G: //
+ tap_code(KC_BSPC); // may have been lowercase
+ send_string(adaptGMINS); //
+ return_state = false; // done.
+ break;
+#endif
+#ifdef adaptHMINS
+ case KC_H: //
+ tap_code(KC_BSPC); // may have been lowercase
+ send_string(adaptHMINS); //
+ return_state = false; // done.
+ break;
+#endif
+#ifdef adaptIMINS
+ case KC_I: //
+ tap_code(KC_BSPC); // may have been lowercase
+ send_string(adaptIMINS); //
+ return_state = false; // done.
+ break;
+#endif
+#ifdef adaptJMINS
+ case KC_J: //
+ tap_code(KC_BSPC); // may have been lowercase
+ send_string(adaptJMINS); //
+ return_state = false; // done.
+ break;
+#endif
+#ifdef adaptKMINS
+ case KC_K: //
+ tap_code(KC_BSPC); // may have been lowercase
+ send_string(adaptKMINS); //
+ return_state = false; // done.
+ break;
+#endif
+#ifdef adaptLMINS
+ case KC_L: //
+ tap_code(KC_BSPC); // may have been lowercase
+ send_string(adaptLMINS); //
+ return_state = false; // done.
+ break;
+#endif
+#ifdef adaptMMINS
+ case KC_M: //
+ tap_code(KC_BSPC); // may have been lowercase
+ send_string(adaptMMINS); //
+ return_state = false; // done.
+ break;
+#endif
+#ifdef adaptNMINS
+ case KC_N: //
+ tap_code(KC_BSPC); // may have been lowercase
+ send_string(adaptNMINS); //
+ return_state = false; // done.
+ break;
+#endif
+#ifdef adaptOMINS
+ case KC_O: //
+ tap_code(KC_BSPC); // may have been lowercase
+ send_string(adaptOMINS); //
+ return_state = false; // done.
+ break;
+#endif
+#ifdef adaptPMINS
+ case KC_P: //
+ tap_code(KC_BSPC); // may have been lowercase
+ send_string(adaptPMINS); //
+ return_state = false; // done.
+ break;
+#endif
+#ifdef adaptRMINS
+ case KC_R: //
+ tap_code(KC_BSPC); // may have been lowercase
+ send_string(adaptRMINS); //
+ return_state = false; // done.
+ break;
+#endif
+#ifdef adaptSMINS
+ case KC_S: //
+ tap_code(KC_BSPC); // may have been lowercase
+ send_string(adaptSMINS); //
+ return_state = false; // done.
+ break;
+#endif
+#ifdef adaptTMINS
+ case KC_T: //
+ tap_code(KC_BSPC); // may have been lowercase
+ send_string(adaptTMINS); //
+ return_state = false; // done.
+ break;
+#endif
+#ifdef adaptUMINS
+ case KC_U: //
+ tap_code(KC_BSPC); // may have been lowercase
+ send_string(adaptUMINS); //
+ return_state = false; // done.
+ break;
+#endif
+#ifdef adaptVMINS
+ case KC_V: //
+ tap_code(KC_BSPC); // may have been lowercase
+ send_string(adaptVMINS); //
+ return_state = false; // done.
+ break;
+#endif
+#ifdef adaptWMINS
+ case KC_W: //
+ tap_code(KC_BSPC); // may have been lowercase
+ send_string(adaptWMINS); //
+ return_state = false; // done.
+ break;
+#endif
+#ifdef adaptYMINS
+ case KC_Y: //
+ tap_code(KC_BSPC); // may have been lowercase
+ send_string(adaptYMINS); //
+ return_state = false; // done.
+ break;
+#endif
+#ifdef adaptYMINS
+ case KC_Y: //
+ tap_code(KC_BSPC); // may have been lowercase
+ send_string(adaptYMINS); //
+ return_state = false; // done.
+ break;
+#endif
+ }
+ break;
+#endif // ADAPTIVE_TRAILER
+
+ }
+ if (return_state) { // no adaptive processed, cancel state and pass it on.
+ set_mods(saved_mods);
+ prior_keycode = keycode = 0;
+ }
+ return return_state; //
+}
diff --git a/handsdown/nu-config.h b/handsdown/nu-config.h
new file mode 100644
index 0000000..d814784
--- /dev/null
+++ b/handsdown/nu-config.h
@@ -0,0 +1,317 @@
+
+//
+// The Hands Down Variation dependent defs & files
+//
+#define HD_adaptive_code "handsdown/nu-adaptive.c"
+// Neu(tronium) is the basis for Hands Down Neu variations
+
+//
+// First, let's add any hold-taps to the keycodes
+//
+#define HD_A RSFT_T(KC_A)
+#define HD_B KC_B
+#define HD_C RALT_T(KC_C)
+#define HD_D KC_D
+#define HD_E RGUI_T(KC_E)
+#define HD_F KC_F
+#define HD_G KC_G
+#define HD_H RCTL_T(KC_H)
+#define HD_I RALT_T(KC_I)
+#define HD_J KC_J
+#define HD_K KC_K
+#define HD_L KC_L
+#define HD_M KC_M
+#define HD_N RGUI_T(KC_N)
+#define HD_O KC_O
+#define HD_P KC_P
+#define HD_Q KC_Q
+#define HD_R RCTL_T(KC_R)
+#define HD_S RALT_T(KC_S)
+#define HD_T RSFT_T(KC_T)
+#define HD_U KC_U
+#define HD_V KC_V
+#define HD_W KC_W
+#define HD_X KC_X
+#define HD_Y KC_Y
+#define HD_Z KC_Z
+
+#define HD_MINS KC_MINS
+#define HD_HASH KC_HASH
+#define HD_SPC LT(L_SYM,KC_SPC)
+#define HD_BSPC LT(L_FUN,KC_BSPC)
+#define HD_ENT LT(L_NAV,KC_ENT)
+#define HD_QUOT KC_QUOT
+#define HD_DQUO KC_DQUO
+#define HD_SLSH KC_SLSH
+#define HD_DOT KC_DOT
+#define HD_COMM LT(L_FUN, KC_COMM)
+
+// Now let's place these HD keycodes on the keymap
+// for variation independent spatial referencing by key position
+//
+// Key Position Names for a 34 (-54) key split form factor
+// Should cover Ferris through Atreus-Kyria-Ergodox
+// ╭─────────────────────╮ ╭─────────────────────╮
+// LT5 │ LT4 LT3 LT2 LT1 LT0 │ LTA RTB │ RT0 RT1 RT2 RT3 RT4 │ RT5
+// LM5 │ LM4 LM3 LM2 LM1 LM0 | LMA RMA | RT0 RM1 RM2 RM3 RM4 │ RM5
+// LB5 │ LB4 LB3 LB2 LB1 LB0 │ LBA LBB RBB RBA │ RB0 RB1 RB2 RB3 RB4 │ RB5
+// ╰───────────╮ LH2 LH1 │ LH0 LHA RHA RH0 │ RH1 RH2 ╭───────────╯
+// LH5 LH4 LH3 ╰─────────╯ ╰─────────╯ RH3 RH4 RH5
+//
+//
+// Base (alpha) Layer Hands Down Neu (HRMs /+ thumb mods)
+// ╭─────────────────────╮ ╭─────────────────────╮
+// esc │ W F M P V │ L_CFG L_NUM │ #$ .: '" /* J │ LANG2/henk
+// tab │ R S N T B | ( ) | ,; A E I H │ LANG1/mhen
+// Z │ X C L D G │ [ copy pste ] │ -+ U O Y K │ Q
+// ╰───────────╮ bsp sft │ & | │ spc ret ╭──────────╯
+// left rght app ╰─────────╯ ╰──────────╯ tgLN up dn
+//
+// For small boards, Q (LT3) & Z (LT4) are (also) on the sym layer
+// and accessible combos (defined below)
+//
+
+#define HD_LT5 KC_ESC
+#define HD_LT4 HD_W
+#define HD_LT3 HD_F
+#define HD_LT2 HD_M
+#define HD_LT1 HD_P
+#define HD_LT0 HD_V
+#define HD_LTA OSL(L_CFG)
+#define HD_RTA TG(L_NUM)
+#define HD_RT0 HD_HASH
+#define HD_RT1 HD_DOT
+#define HD_RT2 HD_QUOT
+#define HD_RT3 HD_SLSH
+#define HD_RT4 HD_J
+#define HD_RT5 KC_LNG2
+
+#define HD_LM5 KC_TAB
+#define HD_LM4 HD_R
+#define HD_LM3 HD_S
+#define HD_LM2 HD_N
+#define HD_LM1 HD_T
+#define HD_LM0 HD_B
+#define HD_LMA KC_LPRN
+#define HD_RMA KC_RPRN
+#define HD_RM0 HD_COMM
+#define HD_RM1 HD_A
+#define HD_RM2 HD_E
+#define HD_RM3 HD_I
+#define HD_RM4 HD_H
+#define HD_RM5 KC_LNG1
+
+#define HD_LB5 HD_Z
+#define HD_LB4 HD_X
+#define HD_LB3 HD_C
+#define HD_LB2 HD_L
+#define HD_LB1 HD_D
+#define HD_LB0 HD_G
+#define HD_LBA LT(L_NUM, KC_LBRC)
+#define HD_LBB LT(L_FUN,SK_COPY)
+#define HD_RBB LT(L_FUN,SK_PSTE)
+#define HD_RBA LT(L_NAV,KC_RBRC)
+#define HD_RB0 HD_MINS
+#define HD_RB1 HD_U
+#define HD_RB2 HD_O
+#define HD_RB3 HD_Y
+#define HD_RB4 HD_K
+#define HD_RB5 HD_Q
+
+//Primary Thumbs 1-3 (others are unique to the board)
+#define HD_LH5 KC_LEFT
+#define HD_LH4 LT(L_FUN,KC_MUTE)
+#define HD_LH3 KC_APP
+#define HD_LH2 HD_BSPC
+#define HD_LH1 LT(L_NAV,KC_SPC)
+#define HD_LH0 LT(L_CFG,KC_MUTE)
+#define HD_LHA LT(L_NAV,KC_AMPR)
+#define HD_RHA LT(L_SYM,KC_PIPE)
+#define HD_RH0 LT(L_CFG,KC_MPLY)
+#define HD_RH1 HD_SPC
+#define HD_RH2 HD_ENT
+#define HD_RH3 TG(L_NUM)
+#define HD_RH4 LT(L_FUN,KC_MPLY)
+#define HD_RH5 KC_NO
+
+#ifdef COMBO_ENABLE
+//
+// We want to be able to define a combo by location
+// for variation independent, spatial referencing, or
+// by letter for mnemonic/phonetic referencing (variation dependent)
+// put this sort of obscures the definitions…so…
+//
+// BE CAREFUL to not double define a combo!
+//
+// Combo definitions that rely on phonetics/mnemonics for their locations.
+//
+// Combos that are spacially organized don't need to be redefined
+// to match the base alpha layer, so they are not included here.
+//
+// These few spatial combos may move to accommodate some mnemonic combos,
+// notably the H-digraph combos that inhabit close areas.
+//
+#define HD_tab_keys HD_LM3, HD_LM1 // tab
+#define HD_stab_keys HD_LM3, HD_LM2, HD_LM1 // hard-ENTER/page break
+#define HD_spc_keys HD_LM1, HD_LM0 // SPACE
+#define HD_ent_keys HD_LH2, HD_LH1 // ENTER
+#define HD_ent2_keys HD_LB0, HD_LB1, HD_LB2 // hard-ENTER/page break
+//#define APPMENU_keys HD_LT1, HD_LT0 // APPMENU
+
+// TEXT ENTRY - off map standard alphas (also on Layer L_SYM @ Z=LT4 & Q=LT3)
+//
+#define HD_Qu_keys HD_LT3, HD_LT1 // TYPE "q" (Qu & Linger deletes u)
+#define HD_L1_keys HD_LT1, HD_LT0 // ex. TYPE "z"
+#define HD_L1 HD_Z
+//#define HD_L2_keys HD_LM3, HD_LM1 // ex. TYPE "x"
+//#define HD_L2 HD_X
+//#define HD_L3_keys HD_LM3, HD_LM1 // ex. TYPE "j"
+//#define HD_L3 HD_J
+
+//
+// H digraph combos
+// try to make these use the lead letter and a neighbor.
+//
+#define HD_Th_keys HD_LM2, HD_LM1 // TYPE "th"
+#define HD_Ch_keys HD_LM3, HD_LM2 // TYPE "ch"
+#define HD_Wh_keys HD_LT4, HD_LT3 // TYPE "wh"
+#define HD_Sh_keys HD_LM4, HD_LM3 // TYPE "sh"
+#define HD_Ph_keys HD_LT2, HD_LT1 // TYPE "ph"
+#define HD_Gh_keys HD_LB1, HD_LB0 // TYPE "gh"
+#define HD_Sch_keys HD_LM4, HD_LM3, HD_LM2 // TYPE "Sch"
+
+// Should we put all the diacritic keys here?
+// or get keep them all in the common area (if they all share
+// HD Neu vowel block)?
+#define HD_OE_lig_keys HD_RM2, HD_RB2 // Œ
+#define HD_AE_lig_keys HD_RM1, HD_RB1 // Æ
+
+#ifdef EN_PRONOUN_COMBOS
+// the entirely unnecessary pronoun combo shenanigans
+
+// PRONOUNS Fast 4-7grams
+#define HD_Icap_keys HD_I, HD_H // TYPE "I"
+#define HD_Id_keys HD_I, HD_D // TYPE "I'd"+"'ve "
+#define HD_Ill_keys HD_I, HD_L // TYPE "I'll"+"'ve "
+#define HD_Im_keys HD_I, HD_M // TYPE "I'm "
+#define HD_Iv_keys HD_I, HD_V // TYPE "I've "
+
+#ifdef EN_PRONOUN_COMBOS_ALL // Admittedly of questionable value
+#define HD_youd_keys HD_Y, HD_D // TYPE "you'd" + 've
+#define HD_youll_keys HD_Y, HD_L // TYPE "you'll" + 've
+#define HD_youre_keys HD_Y, HD_R // TYPE "you're"
+#define HD_youve_keys HD_Y, HD_V // TYPE "you've"
+#define HD_your_keys HD_Y, HD_P // TYPE "your" "P" for "possessive" case
+
+#define HD_their_keys HD_T, HD_W // TYPE "their" #6
+#define HD_they_keys HD_T, HD_Y // "they" #23 + 've
+#define HD_theyd_keys HD_T, HD_X // "they'd" #23 + 've
+#define HD_theyll_keys HD_T, HD_L // "they'll" #23 + 've
+#define HD_theyre_keys HD_T, HD_QUOT // "they're"
+
+// deictics. Are these really necessary?
+#define HD_there_keys HD_T, HD_F // TYPE "there" #7 + 's
+#define HD_here_keys HD_H, HD_R // TYPE "here" #5 + 's
+
+#ifdef EN_W_PRONOUNS
+#define HD_where_keys HD_X, HD_R // "where" + 's
+#define HD_wed_keys HD_X, HD_G // TYPE "we'd" + 've
+#define HD_well_keys HD_X, HD_M // TYPE "we'll" + 've
+#define HD_were_keys HD_X, HD_QUOT // TYPE "we're"
+#define HD_weve_keys HD_X, HD_J // TYPE "we've"
+#endif // EN_W_PRONOUNS
+
+#endif // EN_PRONOUN_keysS_ALL
+#endif // EN_PRONOUN_keysS // the entirely unnecessary pronoun combo shenanigans
+
+// SEMANTIC FUNCTIONS ** uses SemKeys **
+// Spatially arranged on the QWERTY ZXCV locations
+// independent of the HD Alphas, though since some of
+// the above combos may compete for the same locations,
+// we'll define them all here.
+//
+#define HD_new_keys HD_LM2, HD_LB2 // new
+#define HD_open_keys HD_LM1, HD_LB1 // open
+#define HD_close_keys HD_LM3, HD_LB3 // close
+#define HD_quit_keys HD_LB0, HD_LM0 // quit
+#define HD_find_keys HD_LM4, HD_LM0 // find selection
+#define HD_sall_keys HD_LB4, HD_LB1 // select all
+#define HD_swrd_keys HD_LB4, HD_LB0 // select word
+#define HD_undo_keys HD_LB4, HD_LB3 // undo
+#define HD_redo_keys HD_LB4, HD_LB3, HD_LB2 // redo
+#define HD_copy_keys HD_LB3, HD_LB2 // copy (hold for cut)
+#define HD_pste_keys HD_LB2, HD_LB1 // paste (hold for paste-match)
+
+#ifdef JP_MODE_ENABLE
+#ifdef JP_YOUON_COMBOS
+// Major Japanese contracted consonants as combos
+//
+// These will conflict with some diacritics (noted below),
+// so some sort of mode-switch in process_keys_event is necessary
+// for both to be used on the same board.
+//
+// There is also risk of conflict with spatial any phonetically/mnemonically coded combos.
+//
+// Major (high frequency) Japanese contracted sounds
+#define JP_kya_keys HD_LM0, HD_RM1 // きゃ
+#define JP_kyu_keys HD_LM0, HD_RB1 // きゅ
+#define JP_kyo_keys HD_LM0, HD_RB2 // きょ
+#define JP_sya_keys HD_LM4, HD_RM1 // しゃ
+#define JP_syu_keys HD_LM4, HD_RB1 // しゅ
+#define JP_sye_keys HD_LM4, HD_RM2 // しぇ
+#define JP_syo_keys HD_LM4, HD_RB2 // しょ
+#define JP_zya_keys HD_LM3, HD_RM1 // じゃ
+#define JP_zyu_keys HD_LM3, HD_RB1 // じゅ
+#define JP_zyo_keys HD_LM3, HD_RB2 // じょ
+#define JP_tya_keys HD_LM1, HD_RM1 // ちゃ
+#define JP_tyu_keys HD_LM1, HD_RB1 // ちゅ
+#define JP_tye_keys HD_LM1, HD_RM2 // ちぇ
+#define JP_tyo_keys HD_LM1, HD_RB2 // ちょ
+#define JP_pya_keys HD_LB3, HD_RM1 // ぴゃ
+#define JP_pyu_keys HD_LB3, HD_RB1 // ぴゅ
+#define JP_pyo_keys HD_LB3, HD_RB2 // ぴょ
+
+#ifdef JP_YOUON_COMBOS_ALL // All Japanese contracted sounds
+
+#define JP_gya_keys HD_LT1, HD_RM1 // ぎゃ
+#define JP_gyu_keys HD_LT1, HD_RB1 // ぎゅ
+#define JP_gyo_keys HD_LT1, HD_RB2 // ぎょ
+#define JP_tha_keys HD_LM2, HD_LM1, HD_RM1 // てゃ
+#define JP_thi_keys HD_LM2, HD_LM1, HD_RM3 // てぃ
+#define JP_thu_keys HD_LM2, HD_LM1, HD_RB1 // てゅ
+#define JP_the_keys HD_LM2, HD_LM1, HD_RM2 // てぇ
+#define JP_tho_keys HD_LM2, HD_LM1, HD_RB2 // てょ
+#define JP_dha_keys HD_LB1, HD_RM1 // でゃ
+#ifndef EN_PRONOUN_COMBOS
+#define JP_dhi_keys HD_LB1, HD_RM3 // でぃ conflicts with I'd (so handle it there if present)
+#endif
+#define JP_dhu_keys HD_LB1, HD_RB1 // でゅ
+#define JP_dhe_keys HD_LB1, HD_RM2 // でぇ
+#define JP_dho_keys HD_LB1, HD_RB2 // でょ
+#define JP_nya_keys HD_LM2, HD_RM1 // にゃ
+#define JP_nyu_keys HD_LM2, HD_RB1 // にゅ
+#define JP_nyo_keys HD_LM2, HD_RB2 // にょ
+
+//#define JP_hya_keys HD_RM4, HD_RM1 // ひゃ conflicts with diacritic
+#define JP_hyu_keys HD_RM4, HD_RB1 // ひゅ
+#define JP_hyo_keys HD_RM4, HD_RB2 // ひょ
+//#define JP_fya_keys HD_RM4, HD_RM1 // ふぁ unnecessary?
+//#define JP_fyu_keys HD_RM4, HD_RB1 // ふぃ
+//#define JP_fye_keys HD_RM4, HD_RB1 // ふぇ
+//#define JP_fyo_keys HD_RM4, HD_RB2 // ふぉ
+
+#define JP_bya_keys HD_LB4, HD_RM1 // びゃ
+#define JP_byu_keys HD_LB4, HD_RB1 // びゅ conflicts with diacritic?
+#define JP_byo_keys HD_LB4, HD_RB2 // びょ
+#define JP_mya_keys HD_LT2, HD_RM1 // みゃ
+#define JP_myu_keys HD_LT2, HD_RB1 // みゅ
+#define JP_myo_keys HD_LT2, HD_RB2 // みょ
+#define JP_rya_keys HD_LH1, HD_RM1 // りゃ
+#define JP_ryu_keys HD_LH1, HD_RB1 // りゅ
+#define JP_ryo_keys HD_LH1, HD_RB2 // りょ
+
+#endif // JP_YOUON_COMBOS_ALL // All Japanese contracted sounds
+#endif // JP_YOUON_COMBOS // Major Japanese contracted sounds as combos
+#endif // JP_MODE_ENABLE // All Japanese mode features
+
+#endif // COMBO_ENABLE
diff --git a/handsdown/vb-config.h b/handsdown/vb-config.h
index 61aa5cb..25f03ee 100644
--- a/handsdown/vb-config.h
+++ b/handsdown/vb-config.h
@@ -4,38 +4,9 @@
//
#define HD_adaptive_code "handsdown/vb-adaptive.c"
//
-//
-// Alpha Layer for a 34 key formfactor
-// ╭─────────────────────╮ ╭─────────────────────╮
-// │ LT4 LT3 LT2 LT1 LT0 │ │ RT0 RT1 RT2 RT3 RT4 │
-// │ LM4 LM3 LM2 LM1 LM0 | | RT0 RM1 RM2 RM3 RM4 │
-// │ LB4 LB3 LB2 LB1 LB0 │ │ RB0 RB1 RB2 RB3 RB4 │
-// ╰───────────╮ LH2 LH1 │ │ RH1 RH2 ╭──────────╯
-// ╰─────────╯ ╰──────────╯
-// Hands Down Vibranium b
-// ╭─────────────────────╮ ╭─────────────────────╮
-// │ X W M G J │ │ #$ .: /* "[ '] │
-// │ S C N T K | | ,; A E I H │
-// │ B P L D V │ │ -+ U O Y F │
-// ╰───────────╮ BSP R │ │ SPC RET ╭──────────╯
-// ╰─────────╯ ╰──────────╯
-// Q (LT3) & Z (LT4) are on the punc layer
-// and on combos (defined below)
-//
-// for now...
-// This will morph to being entirel properly abstracted
-// similar to Miryoku, (maybe someone will make an HD Miryoku someday?)
-//
-//
//
-// We want to be able to define a combo
-// by location for variation independent, spatial referencing, or
-// by letter for mnemonic/phonetic referencing (variation dependent)
-//
-// BE CAREFUL to not double define a combo!
-//
-// First, let's add any hold-taps to the alpha keycodes
+// First, let's define HD alpha keycodes with any hold-taps/custom keycodes
//
#define HD_A RSFT_T(KC_A)
#define HD_B KC_B
@@ -47,7 +18,7 @@
#define HD_H RCTL_T(KC_H)
#define HD_I RALT_T(KC_I)
#define HD_J KC_J
-#define HD_K LT(L_NUMPAD,KC_K)
+#define HD_K LT(L_NUM,KC_K)
#define HD_L KC_L
#define HD_M KC_M
#define HD_N RGUI_T(KC_N)
@@ -66,64 +37,112 @@
#define HD_MINS KC_MINS
#define HD_HASH KC_HASH
-#define HD_SPC LT(L_PUNCT,KC_SPC)
-#define HD_BSPC LT(L_FN_NUM,KC_BSPC)
+#define HD_SPC LT(L_SYM,KC_SPC)
+#define HD_BSPC LT(L_FUN,KC_BSPC)
#define HD_ENT LT(L_NAV,KC_ENT)
#define HD_QUOT KC_QUOT
#define HD_DQUO KC_DQUO
#define HD_SLSH KC_SLSH
#define HD_DOT KC_DOT
-#define HD_COMM LT(L_FN_NUM, KC_COMM)
+#define HD_COMM LT(L_FUN, KC_COMM)
+// Now let's place these HD keycodes on the keymap
+// for variation independent spatial referencing by key position
+//
+// Key Position Names for a 34 (-54) key split form factor
+// Should cover Ferris through Atreus-Kyria-Ergodox
+// ╭─────────────────────╮ ╭─────────────────────╮
+// LT5 │ LT4 LT3 LT2 LT1 LT0 │ LTA RTB │ RT0 RT1 RT2 RT3 RT4 │ RT5
+// LM5 │ LM4 LM3 LM2 LM1 LM0 | LMA RMA | RT0 RM1 RM2 RM3 RM4 │ RM5
+// LB5 │ LB4 LB3 LB2 LB1 LB0 │ LBA LBB RBB RBA │ RB0 RB1 RB2 RB3 RB4 │ RB5
+// ╰───────────╮ LH2 LH1 │ LH0 LHA RHA RH0 │ RH1 RH2 ╭───────────╯
+// LH5 LH4 LH3 ╰─────────╯ ╰─────────╯ RH3 RH4 RH5
+//
//
-// Now let's place these keycodes on the map
-// for variation independent spatial referencing
+// Base (alpha) Layer Hands Down Vibranium-vb (HRMs /+ thumb mods)
+// ╭─────────────────────╮ ╭─────────────────────╮
+// esc │ X W M G J │ L_CFG L_NUM │ #$ .: /* "[ '] │ LANG2/henk
+// tab │ S C N T K | ( ) | ,; A E I H │ LANG1/mhen
+// Z │ B P L D V │ [ copy pste ] │ -+ U O Y F │ Q
+// ╰───────────╮ bsp R │ & | │ spc ret ╭──────────╯
+// left rght app ╰─────────╯ ╰──────────╯ tgLN up dn
//
-// (is there any way to combine these 2 steps?)
+// For small boards, Q (LT3) & Z (LT4) are (also) on the sym layer
+// and accessible combos (defined below)
//
+
+#define HD_LT5 KC_ESC
#define HD_LT4 HD_X
#define HD_LT3 HD_W
#define HD_LT2 HD_M
#define HD_LT1 HD_G
#define HD_LT0 HD_J
+#define HD_LTA OSL(L_CFG)
+#define HD_RTA TG(L_NUM)
#define HD_RT0 HD_HASH
#define HD_RT1 HD_DOT
#define HD_RT2 HD_SLSH
#define HD_RT3 HD_DQUO
#define HD_RT4 HD_QUOT
+#define HD_RT5 KC_LNG2
+#define HD_LM5 KC_TAB
#define HD_LM4 HD_S
#define HD_LM3 HD_C
#define HD_LM2 HD_N
#define HD_LM1 HD_T
#define HD_LM0 HD_K
+#define HD_LMA KC_LPRN
+#define HD_RMA KC_RPRN
#define HD_RM0 HD_COMM
#define HD_RM1 HD_A
#define HD_RM2 HD_E
#define HD_RM3 HD_I
#define HD_RM4 HD_H
+#define HD_RM5 KC_LNG1
+#define HD_LB5 HD_Z
#define HD_LB4 HD_B
#define HD_LB3 HD_P
#define HD_LB2 HD_L
#define HD_LB1 HD_D
#define HD_LB0 HD_V
+#define HD_LBA LT(L_NUM, KC_LBRC)
+#define HD_LBB LT(L_FUN,SK_COPY)
+#define HD_RBB LT(L_FUN,SK_PSTE)
+#define HD_RBA LT(L_NAV,KC_RBRC)
#define HD_RB0 HD_MINS
#define HD_RB1 HD_U
#define HD_RB2 HD_O
#define HD_RB3 HD_Y
#define HD_RB4 HD_F
+#define HD_RB5 HD_Q
-//Primary Thumbs (others unique to the board)
+//Primary Thumbs 1-3 (others are unique to the board)
+#define HD_LH5 KC_LEFT
+#define HD_LH4 LT(L_FUN,KC_MUTE)
+#define HD_LH3 KC_APP
#define HD_LH2 HD_BSPC
#define HD_LH1 HD_R
+#define HD_LH0 LT(L_CFG,KC_MUTE)
+#define HD_LHA LT(L_NAV,KC_LNG2)
+#define HD_RHA LT(L_SYM,KC_LNG1)
+#define HD_RH0 LT(L_CFG,KC_MPLY)
#define HD_RH1 HD_SPC
#define HD_RH2 HD_ENT
-
-
+#define HD_RH3 TG(L_NUM)
+#define HD_RH4 LT(L_FUN,KC_MPLY)
+#define HD_RH5 KC_DN
#ifdef COMBO_ENABLE
//
+// We want to be able to define a combo by location
+// for variation independent, spatial referencing, or
+// by letter for mnemonic/phonetic referencing (variation dependent)
+// put this sort of obscures the definitions…so…
+//
+// BE CAREFUL to not double define a combo!
+//
// Combo definitions that rely on phonetics/mnemonics for their locations.
//
// Combos that are spacially organized don't need to be redefined
@@ -132,15 +151,17 @@
// These few spatial combos may move to accommodate some mnemonic combos,
// notably the H-digraph combos that inhabit close areas.
//
-#define HD_tab_keys HD_LT4, HD_LT3 // tab
+#define HD_tab_keys HD_LM3, HD_LM1 // tab
+#define HD_stab_keys HD_LM3, HD_LM2, HD_LM1 // hard-ENTER/page break
#define HD_spc_keys HD_LM1, HD_LM0 // SPACE
#define HD_ent_keys HD_LB0, HD_LB1 // ENTER
#define HD_ent2_keys HD_LB0, HD_LB1, HD_LB2 // hard-ENTER/page break
+#define APPMENU_keys HD_LT1, HD_LT0 // APPMENU
-// TEXT ENTRY - off map standard alphas (also on Layer L_PUNCT @ Z=LT4 & Q=LT3)
+// TEXT ENTRY - off map standard alphas (also on Layer L_SYM @ Z=LT4 & Q=LT3)
//
#define HD_Qu_keys HD_LT3, HD_LT1 // TYPE "q" (Qu & Linger deletes u)
-#define HD_L1_keys HD_LM3, HD_LM1 // ex. TYPE "z"
+#define HD_L1_keys HD_LT4, HD_LT3 // ex. TYPE "z"
#define HD_L1 HD_Z
//#define HD_L2_keys HD_LM3, HD_LM1 // ex. TYPE "x"
//#define HD_L2 HD_X
@@ -159,10 +180,12 @@
#define HD_Gh_keys HD_LT2, HD_LT1 // TYPE "gh"
#define HD_Sch_keys HD_LM4, HD_LM3, HD_LM2 // TYPE "Sch"
+// Should we put all the diacritic keys here?
+// or get keep them all in the common area (if they all share
+// HD Neu vowel block)?
#define HD_OE_lig_keys HD_RM2, HD_RB2 // Œ
#define HD_AE_lig_keys HD_RM1, HD_RB1 // Æ
-
#ifdef EN_PRONOUN_COMBOS
// the entirely unnecessary pronoun combo shenanigans
@@ -176,9 +199,9 @@
#ifdef EN_PRONOUN_COMBOS_ALL // Admittedly of questionable value
#define HD_youd_keys HD_Y, HD_D // TYPE "you'd" + 've
#define HD_youll_keys HD_Y, HD_L // TYPE "you'll" + 've
-#define HD_youre_keys HD_Y, HD_R // TYPE "you're"
+#define HD_youre_keys HD_Y, HD_F // TYPE "you're"
#define HD_youve_keys HD_Y, HD_V // TYPE "you've"
-#define HD_your_keys HD_Y, HD_P // TYPE "your" "P" for "possessive" case
+#define HD_your_keys HD_Y, HD_R // TYPE "your"
#define HD_their_keys HD_T, HD_B // TYPE "their" #6 (R on same finger in Neu)
#define HD_theyre_keys HD_T, HD_X // "they're" (R on same finger in Neu)
@@ -193,19 +216,22 @@
#ifdef EN_W_PRONOUNS
#define HD_where_keys HD_X, HD_R // "where" + 's
+#define HD_were_keys HD_X, HD_QUOT // TYPE "we're"
#define HD_wed_keys HD_X, HD_G // TYPE "we'd" + 've
#define HD_well_keys HD_X, HD_M // TYPE "we'll" + 've
-#define HD_were_keys HD_X, HD_QUOT // TYPE "we're"
#define HD_weve_keys HD_X, HD_J // TYPE "we've"
#endif // EN_W_PRONOUNS
-#endif // EN_PRONOUN_keysS_ALL
-#endif // EN_PRONOUN_keysS // the entirely unnecessary pronoun combo shenanigans
+#endif // EN_PRONOUNS_ALL
+#endif // EN_PRONOUNS // the entirely unnecessary pronoun combo shenanigans
// SEMANTIC FUNCTIONS ** uses SemKeys **
// Spatially arranged on the QWERTY ZXCV locations
+// independent of the HD Alphas, though since some of
+// the above combos may compete for the same locations,
+// we'll define them all here.
//
#define HD_new_keys HD_LM2, HD_LB2 // new
#define HD_open_keys HD_LM1, HD_LB1 // open
@@ -216,7 +242,6 @@
#define HD_swrd_keys HD_LB4, HD_LB0 // select word
#define HD_undo_keys HD_LB4, HD_LB3 // undo
#define HD_redo_keys HD_LB4, HD_LB3, HD_LB2 // redo
-//#define HD_cut_keys HD_LB4, HD_LB2 // cut
#define HD_copy_keys HD_LB3, HD_LB2 // copy (hold for cut)
#define HD_pste_keys HD_LB2, HD_LB1 // paste (hold for paste-match)
diff --git a/handsdown/vv-adaptive.c b/handsdown/vv-adaptive.c
index 92fa998..882af19 100644
--- a/handsdown/vv-adaptive.c
+++ b/handsdown/vv-adaptive.c
@@ -19,7 +19,8 @@ bool process_adaptive_key(uint16_t *calling_keycode, const keyrecord_t *record)
uint16_t keycode = *calling_keycode;
// Are we in an adaptive context? (adaptive on is assumed).
- if (timer_elapsed(prior_keydown) > ADAPTIVE_TERM) { // outside adaptive threshhold
+ if (timer_elapsed(prior_keydown) > ADAPTIVE_TERM
+ || ((keycode == KC_SLSH) && (timer_elapsed(prior_keydown) > ADAPTIVE_TERM * 16))) {
prior_keycode = prior_keydown = 0; // turn off Adaptives.
return true; // no adaptive conditions, so return.
}
@@ -174,6 +175,7 @@ bool process_adaptive_key(uint16_t *calling_keycode, const keyrecord_t *record)
// right hand adaptives
*/
+ case KC_SLSH:
case KC_H: // H precedes a vowel much more often than it follows (thanks, Ancient Greek!)
switch (prior_keycode) { // maybe OK? What about xxR? resulting in a SFB on thumb?
case KC_A: // AE is a fraction less common, but I find the EAE trill harder than EAH.
@@ -208,9 +210,8 @@ bool process_adaptive_key(uint16_t *calling_keycode, const keyrecord_t *record)
break;
}
break;
- case KC_J:
+ case KC_DQUO:
switch (prior_keycode) {
- case KC_QUOT:
case KC_B: //
tap_code(KC_Y); // BJ = BY (eliminate scissor on ring finger BY is 6x BJ)
return_state = false; // done.
@@ -228,7 +229,6 @@ bool process_adaptive_key(uint16_t *calling_keycode, const keyrecord_t *record)
return_state = false; // done.
break;
case KC_QUOT: //
- case KC_J: //
case KC_B: //
tap_code(KC_O); // (eliminate scissor)
return_state = false; // done.
@@ -238,7 +238,6 @@ bool process_adaptive_key(uint16_t *calling_keycode, const keyrecord_t *record)
case KC_DOT:
switch (prior_keycode) {
case KC_QUOT: // This could be smarter (only after O rolled up)
- case KC_J: //
case KC_B: //
tap_code(KC_U); // (eliminate scissor)
return_state = false; // done.
@@ -252,10 +251,6 @@ bool process_adaptive_key(uint16_t *calling_keycode, const keyrecord_t *record)
send_string(".org");
return_state = false; // done.
break;
- case KC_J:
- tap_code(KC_I); // (eliminate SFB)
- return_state = false; // done.
- break;
}
break;
diff --git a/handsdown/vv-config.h b/handsdown/vv-config.h
index 325af8e..4edcfd4 100644
--- a/handsdown/vv-config.h
+++ b/handsdown/vv-config.h
@@ -2,43 +2,11 @@
//
// The Hands Down Variation dependent defs & files
//
-#define HD_adaptive_code "handsdown/vv-adaptive.c"
-//
-//
-// KEY POSITION Names
-//╭─────────────────────╮ ╭─────────────────────╮
-//│ LT4 LT3 LT2 LT1 LT0 │ │ RT0 RT1 RT2 RT3 RT4 │
-//│ LM4 LM3 LM2 LM1 LM0 │ │ RM0 RM1 RM2 RM3 RM4 │
-//│ LB4 LB3 LB2 LB1 LB0 │ │ RB0 RB1 RB2 RB3 RB4 │
-//╰───────────╮ LH2 LH1 | | RH1 RH2 ╭───────────╯
-// ╰─────────╯ ╰─────────╯
-//
-// Base (alpha) Layer Hands Down Vibranium-vv
-// Building for a 34 key board
-// ╭─────────────────╮ ╭─────────────────╮
-// │ X W M G "[ │ │ #$ .: '] J B │
-// │ S C N T K | | ,; A E I H │
-// │ V F L D /* │ │ -+ U O Y F │
-// ╰───────╮ BSP R │ │ SPC RET ╭──────╯
-// ╰─────────╯ ╰──────────╯
-//
-// Q (LT3) & Z (LT4) are on the punc layer
-// and on combos (defined below)
-//
-// for now...
-// This will morph to being entirel properly abstracted
-// similar to Miryoku, (maybe someone will make an HD Miryoku someday?)
-//
+#define HD_adaptive_code "handsdown/vb-adaptive.c"
//
//
-// We want to be able to define a combo
-// by location for variation independent, spatial referencing, or
-// by letter for mnemonic/phonetic referencing (variation dependent)
-//
-// BE CAREFUL to not double define a combo!
-//
-// First, let's add any hold-taps to the alpha keycodes
+// First, let's define HD alpha keycodes with any hold-taps/custom keycodes
//
#define HD_A RSFT_T(KC_A)
#define HD_B KC_B
@@ -50,7 +18,7 @@
#define HD_H RCTL_T(KC_H)
#define HD_I RALT_T(KC_I)
#define HD_J KC_J
-#define HD_K LT(L_NUMPAD,KC_K)
+#define HD_K LT(L_NUM,KC_K)
#define HD_L KC_L
#define HD_M KC_M
#define HD_N RGUI_T(KC_N)
@@ -69,64 +37,112 @@
#define HD_MINS KC_MINS
#define HD_HASH KC_HASH
-#define HD_SPC LT(L_PUNCT,KC_SPC)
-#define HD_BSPC LT(L_FN_NUM,KC_BSPC)
+#define HD_SPC LT(L_SYM,KC_SPC)
+#define HD_BSPC LT(L_FUN,KC_BSPC)
#define HD_ENT LT(L_NAV,KC_ENT)
#define HD_QUOT KC_QUOT
#define HD_DQUO KC_DQUO
#define HD_SLSH KC_SLSH
#define HD_DOT KC_DOT
-#define HD_COMM LT(L_FN_NUM, KC_COMM)
+#define HD_COMM LT(L_FUN, KC_COMM)
+// Now let's place these HD keycodes on the keymap
+// for variation independent spatial referencing by key position
+//
+// Key Position Names for a 34 (-54) key split form factor
+// Should cover Ferris through Atreus-Kyria-Ergodox
+// ╭─────────────────────╮ ╭─────────────────────╮
+// LT5 │ LT4 LT3 LT2 LT1 LT0 │ LTA RTB │ RT0 RT1 RT2 RT3 RT4 │ RT5
+// LM5 │ LM4 LM3 LM2 LM1 LM0 | LMA RMA | RT0 RM1 RM2 RM3 RM4 │ RM5
+// LB5 │ LB4 LB3 LB2 LB1 LB0 │ LBA LBB RBB RBA │ RB0 RB1 RB2 RB3 RB4 │ RB5
+// ╰───────────╮ LH2 LH1 │ LH0 LHA RHA RH0 │ RH1 RH2 ╭───────────╯
+// LH5 LH4 LH3 ╰─────────╯ ╰─────────╯ RH3 RH4 RH5
//
-// Now let's place these keycodes on the map
-// for variation independent spatial referencing
//
-// (is there any way to combine these 2 steps?)
+// Base (alpha) Layer Hands Down Vibranium-vv (HRMs /+ thumb mods)
+// ╭─────────────────────╮ ╭─────────────────────╮
+// esc │ X W M G J │ L_CFG L_NUM │ #$ .: '[ "] B │ LANG2/henk
+// tab │ S C N T K | ( ) | ,; A E I H │ LANG1/mhen
+// Z │ V F L D /* │ [ copy pste ] │ -+ U O Y P │ Q
+// ╰───────────╮ bsp R │ & | │ spc ret ╭──────────╯
+// left rght app ╰─────────╯ ╰──────────╯ tgLN up dn
//
+// For small boards, Q (LT3) & Z (LT4) are (also) on the sym layer
+// and accessible combos (defined below)
+//
+
+#define HD_LT5 KC_ESC
#define HD_LT4 HD_X
#define HD_LT3 HD_W
#define HD_LT2 HD_M
#define HD_LT1 HD_G
-#define HD_LT0 HD_DQUO
+#define HD_LT0 HD_J
+#define HD_LTA OSL(L_CFG)
+#define HD_RTA TG(L_NUM)
#define HD_RT0 HD_HASH
#define HD_RT1 HD_DOT
#define HD_RT2 HD_QUOT
-#define HD_RT3 HD_J
+#define HD_RT3 HD_DQUO
#define HD_RT4 HD_B
+#define HD_RT5 KC_LNG2
+#define HD_LM5 KC_TAB
#define HD_LM4 HD_S
#define HD_LM3 HD_C
#define HD_LM2 HD_N
#define HD_LM1 HD_T
#define HD_LM0 HD_K
+#define HD_LMA KC_LPRN
+#define HD_RMA KC_RPRN
#define HD_RM0 HD_COMM
#define HD_RM1 HD_A
#define HD_RM2 HD_E
#define HD_RM3 HD_I
#define HD_RM4 HD_H
+#define HD_RM5 KC_LNG1
+#define HD_LB5 HD_Z
#define HD_LB4 HD_V
#define HD_LB3 HD_F
#define HD_LB2 HD_L
#define HD_LB1 HD_D
#define HD_LB0 HD_SLSH
+#define HD_LBA LT(L_NUM, KC_LBRC)
+#define HD_LBB LT(L_FUN,SK_COPY)
+#define HD_RBB LT(L_FUN,SK_PSTE)
+#define HD_RBA LT(L_NAV,KC_RBRC)
#define HD_RB0 HD_MINS
#define HD_RB1 HD_U
#define HD_RB2 HD_O
#define HD_RB3 HD_Y
#define HD_RB4 HD_P
+#define HD_RB5 HD_Q
-//Primary Thumbs (others unique to the board)
+//Primary Thumbs 1-3 (others are unique to the board)
+#define HD_LH5 KC_LEFT
+#define HD_LH4 LT(L_FUN,KC_MUTE)
+#define HD_LH3 KC_APP
#define HD_LH2 HD_BSPC
#define HD_LH1 HD_R
+#define HD_LH0 LT(L_CFG,KC_MUTE)
+#define HD_LHA LT(L_NAV,KC_LNG2)
+#define HD_RHA LT(L_SYM,KC_LNG1)
+#define HD_RH0 LT(L_CFG,KC_MPLY)
#define HD_RH1 HD_SPC
#define HD_RH2 HD_ENT
-
-
+#define HD_RH3 TG(L_NUM)
+#define HD_RH4 LT(L_FUN,KC_MPLY)
+#define HD_RH5 KC_DN
#ifdef COMBO_ENABLE
//
+// We want to be able to define a combo by location
+// for variation independent, spatial referencing, or
+// by letter for mnemonic/phonetic referencing (variation dependent)
+// put this sort of obscures the definitions…so…
+//
+// BE CAREFUL to not double define a combo!
+//
// Combo definitions that rely on phonetics/mnemonics for their locations.
//
// Combos that are spacially organized don't need to be redefined
@@ -135,15 +151,17 @@
// These few spatial combos may move to accommodate some mnemonic combos,
// notably the H-digraph combos that inhabit close areas.
//
-#define HD_tab_keys HD_LT4, HD_LT3 // tab
+#define HD_tab_keys HD_LM3, HD_LM1 // tab
+#define HD_stab_keys HD_LM3, HD_LM2, HD_LM1 // hard-ENTER/page break
#define HD_spc_keys HD_LM1, HD_LM0 // SPACE
#define HD_ent_keys HD_LB0, HD_LB1 // ENTER
#define HD_ent2_keys HD_LB0, HD_LB1, HD_LB2 // hard-ENTER/page break
+//#define APPMENU_keys HD_LT1, HD_LT0 // APPMENU
-// TEXT ENTRY - off map standard alphas (also on Layer L_PUNCT @ Z=LT4 & Q=LT3)
+// TEXT ENTRY - off map standard alphas (also on Layer L_SYM @ Z=LT4 & Q=LT3)
//
#define HD_Qu_keys HD_LT3, HD_LT1 // TYPE "q" (Qu & Linger deletes u)
-#define HD_L1_keys HD_LM3, HD_LM1 // ex. TYPE "z"
+#define HD_L1_keys HD_LT1, HD_LT0 // ex. TYPE "z"
#define HD_L1 HD_Z
//#define HD_L2_keys HD_LM3, HD_LM1 // ex. TYPE "x"
//#define HD_L2 HD_X
@@ -162,10 +180,12 @@
#define HD_Gh_keys HD_LT2, HD_LT1 // TYPE "gh"
#define HD_Sch_keys HD_LM4, HD_LM3, HD_LM2 // TYPE "Sch"
+// Should we put all the diacritic keys here?
+// or get keep them all in the common area (if they all share
+// HD Neu vowel block)?
#define HD_OE_lig_keys HD_RM2, HD_RB2 // Œ
#define HD_AE_lig_keys HD_RM1, HD_RB1 // Æ
-
#ifdef EN_PRONOUN_COMBOS
// the entirely unnecessary pronoun combo shenanigans
@@ -179,9 +199,9 @@
#ifdef EN_PRONOUN_COMBOS_ALL // Admittedly of questionable value
#define HD_youd_keys HD_Y, HD_D // TYPE "you'd" + 've
#define HD_youll_keys HD_Y, HD_L // TYPE "you'll" + 've
-#define HD_youre_keys HD_Y, HD_QUOT // TYPE "you're"
+#define HD_youre_keys HD_Y, HD_F // TYPE "you're"
#define HD_youve_keys HD_Y, HD_V // TYPE "you've"
-#define HD_your_keys HD_Y, HD_R // TYPE "your" "P" for "possessive" case
+#define HD_your_keys HD_Y, HD_R // TYPE "your"
#define HD_their_keys HD_T, HD_B // TYPE "their" #6 (R on same finger in Neu)
#define HD_theyre_keys HD_T, HD_X // "they're" (R on same finger in Neu)
@@ -193,22 +213,22 @@
#define HD_there_keys HD_T, HD_R // TYPE "there" #7 + 's
#define HD_here_keys HD_H, HD_R // TYPE "here" #5 + 's
-
#ifdef EN_W_PRONOUNS
#define HD_where_keys HD_X, HD_R // "where" + 's
+#define HD_were_keys HD_X, HD_QUOT // TYPE "we're"
#define HD_wed_keys HD_X, HD_G // TYPE "we'd" + 've
#define HD_well_keys HD_X, HD_M // TYPE "we'll" + 've
-#define HD_were_keys HD_X, HD_QUOT // TYPE "we're"
#define HD_weve_keys HD_X, HD_J // TYPE "we've"
#endif // EN_W_PRONOUNS
-#endif // EN_PRONOUN_keysS_ALL
-#endif // EN_PRONOUN_keysS // the entirely unnecessary pronoun combo shenanigans
-
-
+#endif // EN_PRONOUNS_ALL
+#endif // EN_PRONOUNS // the entirely unnecessary pronoun combo shenanigans
// SEMANTIC FUNCTIONS ** uses SemKeys **
// Spatially arranged on the QWERTY ZXCV locations
+// independent of the HD Alphas, though since some of
+// the above combos may compete for the same locations,
+// we'll define them all here.
//
#define HD_new_keys HD_LM2, HD_LB2 // new
#define HD_open_keys HD_LM1, HD_LB1 // open
@@ -219,12 +239,9 @@
#define HD_swrd_keys HD_LB4, HD_LB0 // select word
#define HD_undo_keys HD_LB4, HD_LB3 // undo
#define HD_redo_keys HD_LB4, HD_LB3, HD_LB2 // redo
-//#define HD_cut_keys HD_LB4, HD_LB2 // cut
#define HD_copy_keys HD_LB3, HD_LB2 // copy (hold for cut)
#define HD_pste_keys HD_LB2, HD_LB1 // paste (hold for paste-match)
-
-
#ifdef JP_MODE_ENABLE
#ifdef JP_YOUON_COMBOS
// Major Japanese contracted consonants as combos
@@ -297,5 +314,4 @@
#endif // JP_YOUON_COMBOS // Major Japanese contracted sounds as combos
#endif // JP_MODE_ENABLE // All Japanese mode features
-
#endif // COMBO_ENABLE
diff --git a/kyria/Kyria Hands Down.pdf b/kyria/Kyria Hands Down.pdf
new file mode 100644
index 0000000..a2b5cb2
Binary files /dev/null and b/kyria/Kyria Hands Down.pdf differ
diff --git a/kyria/config.h b/kyria/config.h
new file mode 100644
index 0000000..461aa5c
--- /dev/null
+++ b/kyria/config.h
@@ -0,0 +1,27 @@
+
+#pragma once
+
+// Kyria hardware specific bits
+//
+// Allows to use either side as the master. Look at the documentation for info:
+// https://docs.qmk.fm/#/config_options?id=setting-handedness
+#define EE_HANDS
+
+//#ifdef PRODUCT
+//#undef PRODUCT
+//#define PRODUCT HD-Kyria
+//#endif
+
+#ifdef OLED_DRIVER_ENABLE
+ #define OLED_DISPLAY_128X64
+ #ifdef OLED_TIMEOUT
+ #undef OLED_TIMEOUT
+ #endif
+ #define OLED_TIMEOUT 9000
+#endif
+
+#ifdef ENCODER_ENABLE
+ #define ENCODER_RESOLUTION 2 // old encoders
+ #define ENCODER_DIRECTION_FLIP // old encoders
+// #define ENCODER_RESOLUTION 4 // new encoders
+#endif
diff --git a/kyria/kyria_hd_keymap.c b/kyria/kyria_hd_keymap.c
new file mode 100644
index 0000000..a800e24
--- /dev/null
+++ b/kyria/kyria_hd_keymap.c
@@ -0,0 +1,68 @@
+
+#include QMK_KEYBOARD_H
+
+#ifdef COMBO_ENABLE
+#include HD_combo_def // this has the combo definitions (needed here for the QMK keymap introspection)
+#endif
+
+#define ______ KC_TRNS
+#define __no__ KC_NO
+
+/* The Kyria Keymap Key positions
+ * ,-----------------------------------------------. ,-----------------------------------------------.
+ * | LT5 | LT4 | LT3 | LT2 | LT1 | LT0 | | RT0 | RT1 | RT2 | RT3 | RT4 | RT5 |
+ * |-------+-------+-------+-------+-------+-------+ +-------+-------+-------+-------+-------+-------|
+ * | LM5 | LM4 | LM3 | LM2 | LM1 | LM0 | | RM0 | RM1 | RM2 | RM3 | RM4 | RM5 |
+ * |-------+-------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------+-------|
+ * | LB5 | LB4 | LB3 | LB2 | LB1 | LB0 | LBA | LBB | | RBB | RBA | RB0 | RB1 | RB2 | RB3 | RB4 | RB5 |
+ * `-------+-------+-------+-------+-------+-------+-------+-------' '-------+-------+-------+-------+-------+-------+-------+-------'
+ * | LH4 | LH3 | LH2 | LH1 | LH0 | | RH0 | RH1 | RH2 | RH3 | RH4 |
+ * `---------------------------------------' '---------------------------------------'
+ */
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [L_QWERTY] = LAYOUT(
+ SK_COPY, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LNG2,
+ SK_PSTE, RCTL_T(KC_A), RALT_T(KC_S), RGUI_T(KC_D), RSFT_T(KC_F), LT(L_NUM,KC_G), LT(L_FUN,KC_H), RSFT_T(KC_J), RGUI_T(KC_K), RALT_T(KC_L), RCTL_T(KC_SCLN), KC_LNG1,
+ KC_AMPR, KC_Z, KC_X, KC_C, KC_V, KC_B, HD_LBA, HD_LBB, HD_RBB, HD_RBA, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_EQL,
+ LT(L_FUN,KC_MUTE), KC_APP, LT(L_FUN,KC_BSPC), LT(L_NAV,KC_DEL), HD_LH0, HD_RH0, LT(L_SYM,KC_SPC), LT(L_NAV,KC_ENT), LT(L_FUN,KC_TAB), LT(L_FUN,KC_MPLY)),
+
+ [L_HD] = LAYOUT(
+ HD_LT5, HD_LT4, HD_LT3, HD_LT2, HD_LT1, HD_LT0, HD_RT0, HD_RT1, HD_RT2, HD_RT3, HD_RT4, HD_RT5,
+ HD_LM5, HD_LM4, HD_LM3, HD_LM2, HD_LM1, HD_LM0, HD_RM0, HD_RM1, HD_RM2, HD_RM3, HD_RM4, HD_RM5,
+ HD_LB5, HD_LB4, HD_LB3, HD_LB2, HD_LB1, HD_LB0, HD_LBA, HD_LBB, HD_RBB, HD_RBA, HD_RB0, HD_RB1, HD_RB2, HD_RB3, HD_RB4, HD_RB5,
+ HD_LH4, HD_LH3, HD_LH2, HD_LH1, HD_LH0, HD_RH0, HD_RH1, HD_RH2, HD_RH3, HD_RH4),
+
+ [L_SYM] = LAYOUT(
+ LS_LT5, LS_LT4, LS_LT3, LS_LT2, LS_LT1, LS_LT0, LS_RT0, LS_RT1, LS_RT2, LS_RT3, LS_RT4, LS_RT5,
+ LS_LM5, LS_LM4, LS_LM3, LS_LM2, LS_LM1, LS_LM0, LS_RM0, LS_RM1, LS_RM2, LS_RM3, LS_RM4, LS_RM5,
+ LS_LB5, LS_LB4, LS_LB3, LS_LB2, LS_LB1, LS_LB0, LS_LBA, LS_LBB, LS_RBB, LS_RBA, LS_RB0, LS_RB1, LS_RB2, LS_RB3, LS_RB4, LS_RB5,
+ LS_LH4, LS_LH3, LS_LH2, LS_LH1, LS_LH0, LS_RH0, LS_RH1, LS_RH2, LS_RH3, LS_RH4),
+
+ [L_FUN] = LAYOUT(
+ LF_LT5, LF_LT4, LF_LT3, LF_LT2, LF_LT1, LF_LT0, LF_RT0, LF_RT1, LF_RT2, LF_RT3, LF_RT4, LF_RT5,
+ LF_LM5, LF_LM4, LF_LM3, LF_LM2, LF_LM1, LF_LM0, LF_RM0, LF_RM1, LF_RM2, LF_RM3, LF_RM4, LF_RM5,
+ LF_LB5, LF_LB4, LF_LB3, LF_LB2, LF_LB1, LF_LB0, LF_LBA, LF_LBB, LF_RBB, LF_RBA, LF_RB0, LF_RB1, LF_RB2, LF_RB3, LF_RB4, LF_RB5,
+ LF_LH4, LF_LH3, LF_LH2, LF_LH1, LF_LH0, LF_RH0, LF_RH1, LF_RH2, LF_RH3, LF_RH4),
+
+ [L_NUM] = LAYOUT(
+ LN_LT5, LN_LT4, LN_LT3, LN_LT2, LN_LT1, LN_LT0, LN_RT0, LN_RT1, LN_RT2, LN_RT3, LN_RT4, LN_RT5,
+ LN_LM5, LN_LM4, LN_LM3, LN_LM2, LN_LM1, LN_LM0, LN_RM0, LN_RM1, LN_RM2, LN_RM3, LN_RM4, LN_RM5,
+ LN_LB5, LN_LB4, LN_LB3, LN_LB2, LN_LB1, LN_LB0, LN_LBA, LN_LBB, LN_RBB, LN_RBA, LN_RB0, LN_RB1, LN_RB2, LN_RB3, LN_RB4, LN_RB5,
+ LN_LH4, LN_LH3, LN_LH2, LN_LH1, LN_LH0, LN_RH0, LN_RH1, LN_RH2, LN_RH3, LN_RH4),
+
+ [L_NAV] = LAYOUT(
+ LV_LT5, LV_LT4, LV_LT3, LV_LT2, LV_LT1, LV_LT0, LV_RT0, LV_RT1, LV_RT2, LV_RT3, LV_RT4, LV_RT5,
+ LV_LM5, LV_LM4, LV_LM3, LV_LM2, LV_LM1, LV_LM0, LV_RM0, LV_RM1, LV_RM2, LV_RM3, LV_RM4, LV_RM5,
+ LV_LB5, LV_LB4, LV_LB3, LV_LB2, LV_LB1, LV_LB0, LV_LBA, LV_LBB, LV_RBB, LV_RBA, LV_RB0, LV_RB1, LV_RB2, LV_RB3, LV_RB4, LV_RB5,
+ LV_LH4, LV_LH3, LV_LH2, LV_LH1, LV_LH0, LV_RH0, LV_RH1, LV_RH2, LV_RH3, LV_RH4),
+
+ [L_CFG] = LAYOUT(
+ LC_LT5, LC_LT4, LC_LT3, LC_LT2, LC_LT1, LC_LT0, LC_RT0, LC_RT1, LC_RT2, LC_RT3, LC_RT4, LC_RT5,
+ LC_LM5, LC_LM4, LC_LM3, LC_LM2, LC_LM1, LC_LM0, LC_RM0, LC_RM1, LC_RM2, LC_RM3, LC_RM4, LC_RM5,
+ LC_LB5, LC_LB4, LC_LB3, LC_LB2, LC_LB1, LC_LB0, LC_LBA, LC_LBB, LC_RBB, LC_RBA, LC_RB0, LC_RB1, LC_RB2, LC_RB3, LC_RB4, LC_RB5,
+ LC_LH4, LC_LH3, LC_LH2, LC_LH1, LC_LH0, LC_RH0, LC_RH1, LC_RH2, LC_RH3, LC_RH4),
+
+};
+
diff --git a/moutis.c b/moutis.c
index a6a8cb7..583e2d4 100644
--- a/moutis.c
+++ b/moutis.c
@@ -53,22 +53,22 @@ layer_state_t layer_state_set_user(layer_state_t layer_state) {
switch (biton32(layer_state)) {
- case L_HDALPHA:
+ case L_HD:
#ifdef RGBLIGHT_ENABLE
rgblight_sethsv_noeeprom(128, 128, 128);
break;
#endif
- case L_PUNCT:
+ case L_SYM:
#ifdef RGBLIGHT_ENABLE
rgblight_sethsv_noeeprom(213, 255, 128);
#endif
break;
- case L_FN_NUM:
+ case L_FUN:
#ifdef RGBLIGHT_ENABLE
rgblight_sethsv_noeeprom(64, 255, 128);
#endif
break;
- case L_NUMPAD:
+ case L_NUM:
#ifdef RGBLIGHT_ENABLE
rgblight_sethsv_noeeprom(85, 255, 128);
#endif
@@ -78,7 +78,7 @@ layer_state_t layer_state_set_user(layer_state_t layer_state) {
rgblight_sethsv_noeeprom(128, 255, 128);
#endif
break;
- case L_MEDIA_KBD:
+ case L_CFG:
#ifdef RGBLIGHT_ENABLE
rgblight_sethsv_noeeprom(0, 255, 128);
#endif
diff --git a/moutis.h b/moutis.h
index 489f0b4..1962d91 100644
--- a/moutis.h
+++ b/moutis.h
@@ -4,7 +4,10 @@
// which HD alpha variation are we using?
//
// defines all variation dependent constants/files/keycodes, etc.
-#include "handsdown/vv-config.h"
+// they will be used in the respective keymap for each keyboard
+
+#include "handsdown/vb-config.h" // definitions for the Alpha layer and mnemonic combos
+#include "moutis_layers.h" // definitions for all the other layers
#ifndef USERSPACE
@@ -68,12 +71,12 @@ extern rgblight_config_t rgblight_config;
// Perhaps simply redefining these in the xx-config.h
// to override these defs would be the right approach?
//
-#define DQUO_S KC_RBRC // ]
-#define DQUO_A A(S(KC_BSLS)) // »
-#define DQUO_SA A(S(KC_4)) // ›
-#define SQUO_S KC_LBRC // [
-#define SQUO_A A(KC_BSLS) // «
-#define SQUO_SA A(S(KC_3)) // ‹
+#define DQUO_S KC_RBRC // ] Double quote shifted
+#define DQUO_A A(S(KC_BSLS)) // » Double quote alted
+#define DQUO_SA A(S(KC_4)) // › Double quote shifted & alted
+#define SQUO_S KC_LBRC // [ Single quote shifted
+#define SQUO_A A(KC_BSLS) // « single quote alted
+#define SQUO_SA A(S(KC_3)) // ‹ single quote shifted & alted
#define JRQU KC_RBRC // keycode for "[" in Japanese mode
#define JLQU KC_LBRC // keycode for "]" in Japanese mode
@@ -87,16 +90,15 @@ typedef union {
} user_config_t;
-enum my_layers { // must be difined before semantickeys.h
-// enum my_layers for layout layers for HD Neu family
- L_QWERTY, // 0 - QWERTY compatibility layer
- L_HDALPHA, // 1 - Hands Down Alpha layer
- L_PUNCT, // 2 - symbols, punctuation, off-map alphas
- L_FN_NUM, // 3 - number row & function row
- L_NUMPAD, // 4 - numpad (right); navpad (left)
- L_NAV, // 5 - nav pad (right); meta keys (left)
-// L_SYMBOLS, // diacritics are better handled by combos and semantickeys?
- L_MEDIA_KBD // 6 - Media/Consumer controls; Keyboard settings
+// enum my_layers for layout layers
+enum my_layers {// must be difined before semantickeys.h
+ L_QWERTY, // 0 - QWERTY compatibility layer
+ L_HD, // 1 - Hands Down Alpha layer
+ L_SYM, // 2 - symbols, punctuation, off-map alphas
+ L_FUN, // 3 - function & number rows
+ L_NUM, // 4 - numpad (right); navpad (left)
+ L_NAV, // 5 - nav pad (right); meta keys (left)
+ L_CFG // 6 - Media/Consumer controls; Keyboard settings
};
enum OS_Platform { // Used for platform support via SemKeys
diff --git a/moutis_ENCODER.c b/moutis_ENCODER.c
index 81813ef..3f04af9 100644
--- a/moutis_ENCODER.c
+++ b/moutis_ENCODER.c
@@ -35,8 +35,8 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
if (!index) { /* First (left) encoder */
switch(get_highest_layer(layer_state)){
- case L_PUNCT: // puncuation layer
- case L_FN_NUM:
+ case L_SYM: // puncuation layer
+ case L_FUN:
volbright:
/* for audio scrub bk/fwd. */
if ((held_mods & MOD_MASK_SHIFT)) {
@@ -53,7 +53,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
}
}
goto exit;
- case L_NUMPAD: // numpad layer (for navigating in spreadsheets)
+ case L_NUM: // numpad layer (for navigating in spreadsheets)
if (clockwise) {
tap_code16(KC_RGHT); //
} else {
@@ -69,7 +69,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
break;
#ifdef RGBLIGHT_ENABLE
- case L_MEDIA_KBD: // media/kbd settings layer
+ case L_CFG: // media/kbd settings layer
if (clockwise) {
rgblight_increase_val(); // val (brightness) +
} else {
@@ -95,9 +95,9 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
}
} else { // Second (right) encoder
switch(get_highest_layer(layer_state)){
- case L_PUNCT: // puncuation layer
+ case L_SYM: // puncuation layer
goto volbright;
- case L_FN_NUM: // function layer
+ case L_FUN: // function layer
/* for audio scrub bk/fwd. */
if (clockwise) {
tap_code(KC_MNXT); // media next track
@@ -105,7 +105,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
tap_code(KC_MPRV); // media prev track
}
break;
- case L_NUMPAD: // numpad layer (for navigating in spreadsheets)
+ case L_NUM: // numpad layer (for navigating in spreadsheets)
if (clockwise) {
tap_code16(KC_DOWN); //
} else {
@@ -121,7 +121,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
break;
#ifdef RGBLIGHT_ENABLE
- case L_MEDIA_KBD: // media/kbd settings layer
+ case L_CFG: // media/kbd settings layer
if ((held_mods & MOD_MASK_SHIFT)) {
if (clockwise) {
rgblight_increase_sat(); // Sat +
diff --git a/moutis_app_menu.c b/moutis_app_menu.c
index 617ed57..380791d 100644
--- a/moutis_app_menu.c
+++ b/moutis_app_menu.c
@@ -34,6 +34,7 @@ void process_APP_MENU(keyrecord_t *record) {
tap_code16(S(KC_TAB)); // switch app
else
*/
+ layer_on(L_NAV);
tap_code(KC_TAB); // switch app
state_reset_timer = timer_read(); // (re)start timing hold for keyup below
return; // handled this record.
@@ -51,6 +52,7 @@ void process_APP_MENU(keyrecord_t *record) {
} else {
unregister_code(KC_RGUI); // Mac
}
+ layer_off(L_NAV);
state_reset_timer = 0; // stop the timer
}
return; // handled this record.
@@ -68,6 +70,7 @@ void matrix_APP_MENU(void) {
} else {
unregister_code(KC_RGUI); // Mac
}
+ layer_off(L_NAV);
state_reset_timer = mods_held = 0; // stop the timer
appmenu_on = false;
}
diff --git a/moutis_combo.h b/moutis_combo.h
index 1f07911..bf4a880 100644
--- a/moutis_combo.h
+++ b/moutis_combo.h
@@ -41,15 +41,16 @@
enum my_combos {
FC_ESC, // ESCape SIMPLE COMBO must be first (used as FALSE for combo_on)
- HC_KBD,
+ HC_CFG, // The keyboard and media config/settings layer
HC_APP,
+ HC_APPNAV, // App menu on Nav layer
HC_CAPW, // CAPS WORD for all others
FC_CAPS, // CAPS LOCK (others)
- FC_LANG2, // eisuu (others)
- FC_LANG1, // kana (others)
+ FC_LANG2, // eisuu/mhen (others)
+ FC_LANG1, // kana/henk (others)
HC_TAB,
-// HC_PCT, // % percent (hold = for %)
+ HC_STAB,
HC_DOLR, // $
HC_HASH, // #
HC_QUES, // ?
diff --git a/moutis_combo_def.c b/moutis_combo_def.c
index 5132f9b..e6bdd70 100644
--- a/moutis_combo_def.c
+++ b/moutis_combo_def.c
@@ -1,26 +1,53 @@
//
-// Alpha Layer for a 34 key form factor
-// ╭─────────────────────╮ ╭─────────────────────╮
-// │ LT4 LT3 LT2 LT1 LT0 │ │ RT0 RT1 RT2 RT3 RT4 │
-// │ LM4 LM3 LM2 LM1 LM0 | | RT0 RM1 RM2 RM3 RM4 │
-// │ LB4 LB3 LB2 LB1 LB0 │ │ RB0 RB1 RB2 RB3 RB4 │
-// ╰───────────╮ LH2 LH1 │ │ RH1 RH2 ╭──────────╯
-// ╰─────────╯ ╰──────────╯
+// Key Position Names for a 34 (-54) key split form factor
+// Should cover Ferris through Atreus-Kyria-Ergodox
+// ╭─────────────────────╮ ╭─────────────────────╮
+// LT5 │ LT4 LT3 LT2 LT1 LT0 │ LTA RTB │ RT0 RT1 RT2 RT3 RT4 │ RT5
+// LM5 │ LM4 LM3 LM2 LM1 LM0 | LMA RMA | RT0 RM1 RM2 RM3 RM4 │ RM5
+// LB5 │ LB4 LB3 LB2 LB1 LB0 │ LBA LBB RBB RBA │ RB0 RB1 RB2 RB3 RB4 │ RB5
+// ╰───────────╮ LH2 LH1 │ LH0 LHA RHA RH0 │ RH1 RH2 ╭───────────╯
+// LH5 LH4 LH3 ╰─────────╯ ╰─────────╯ RH3 RH4 RH5
//
-// These definitions based on Hands Down Neu
+// These definitions based on Hands Down Neu & variations'
// combo keycodes defined in the variation config
-// ex "HDvariations/nu/nu-config.h"
+// ex "handsdonu-config.h"
//
// Combo definitions defined spatially
// Other variation dependent combos have predetermined
+// positions for 34 key boards
+
+const uint16_t PROGMEM HC_cfg_combo[] = {HD_RH1, HD_RH2, COMBO_END}; // keyboard settings/config layer
+#ifdef APPMENU_keys
+const uint16_t PROGMEM H_menu_combo[] = {APPMENU_keys, COMBO_END}; // AppMENU
+#else
+const uint16_t PROGMEM H_menu_combo[] = {HD_LB3, HD_LB1, COMBO_END}; // AppMENU // default Appmenu location
+#endif
+const uint16_t PROGMEM H_menu_nav_combo[] = {LN_LB3, LN_LB1, COMBO_END}; // AppMENU on Nav layer
+
+// Spatially arranged on the QWERTY ZXCV locations
//
+const uint16_t PROGMEM Htab_combo[] = {HD_tab_keys, COMBO_END}; // tab
+const uint16_t PROGMEM Hstab_combo[] = {HD_stab_keys, COMBO_END}; // shift-tab
+const uint16_t PROGMEM Hspc_combo[] = {HD_spc_keys, COMBO_END}; // SPACE
+const uint16_t PROGMEM Hent_combo[] = {HD_ent_keys, COMBO_END}; // ENTER
+const uint16_t PROGMEM Hent2_combo[] = {HD_ent2_keys, COMBO_END}; // hard-ENTER/page break
+
+// SEMANTIC FUNCTIONS ** usinp SemKeys **
+const uint16_t PROGMEM Hnew_combo[] = {HD_new_keys, COMBO_END}; // new
+const uint16_t PROGMEM Hopen_combo[] = {HD_open_keys, COMBO_END}; // openi
+const uint16_t PROGMEM Hclose_combo[] = {HD_close_keys, COMBO_END}; // close
+const uint16_t PROGMEM Hquit_combo[] = {HD_quit_keys, COMBO_END}; // quit
+const uint16_t PROGMEM Hfind_combo[] = {HD_find_keys, COMBO_END}; // find selection
+const uint16_t PROGMEM Hsall_combo[] = {HD_sall_keys, COMBO_END}; // select all
+const uint16_t PROGMEM Hswrd_combo[] = {HD_swrd_keys, COMBO_END}; // select word
+const uint16_t PROGMEM Hundo_combo[] = {HD_undo_keys, COMBO_END}; // undo
+const uint16_t PROGMEM Hredo_combo[] = {HD_redo_keys, COMBO_END}; // redo
+const uint16_t PROGMEM Hcopy_combo[] = {HD_copy_keys, COMBO_END}; // copy (hold for cut)
+const uint16_t PROGMEM Hpste_combo[] = {HD_pste_keys, COMBO_END}; // paste (hold for paste-match)
-// for 34 key boards
-const uint16_t PROGMEM HC_kbd_combo[] = {HD_RH1, HD_RH2, COMBO_END}; // keyboard settings/config layer
-const uint16_t PROGMEM H_menu_combo[] = {HD_LT0, HD_LT1, COMBO_END}; // MENU
/* examples of text entry combos */
const uint16_t PROGMEM H_Left_combo[] = {HD_LT3, HD_LT2, HD_LT1, COMBO_END}; // TYPE LeftComboTapE
@@ -33,8 +60,8 @@ const uint16_t PROGMEM F_SCAP_combo[] = {HD_LT3, HD_LT2, HD_LT1, HD_LT0, COMBO_E
const uint16_t PROGMEM F_CAPS_combo[] = {HD_LM3, HD_LM2, HD_RM2, HD_RM3, COMBO_END}; // CAPS LOCK (on until hit again)
const uint16_t PROGMEM H_CAPW_combo[] = {HD_LM1, HD_LM2, HD_RM1, HD_RM2, COMBO_END}; // CAPS WORD (on until word delimiter)
-const uint16_t PROGMEM H_EISUU_combo[] = {HD_LM3, HD_LM2, HD_LM1, COMBO_END}; // KC_MHEN
-const uint16_t PROGMEM H_KANA_combo[] = {HD_RM3, HD_RM2, HD_RM1, COMBO_END}; // KC_HENK
+const uint16_t PROGMEM H_EISUU_combo[] = {HD_LB3, HD_LB2, HD_LB1, COMBO_END}; // KC_MHEN
+const uint16_t PROGMEM H_KANA_combo[] = {HD_RB3, HD_RB2, HD_RB1, COMBO_END}; // KC_HENK
@@ -47,7 +74,7 @@ const uint16_t PROGMEM H_KANA_combo[] = {HD_RM3, HD_RM2, HD_RM1, COMBO_END}; //
const uint16_t PROGMEM F_ESC_combo[] = {HD_LM4, HD_LM1, COMBO_END}; // ESCape
const uint16_t PROGMEM Hndsh_combo[] = {HD_RB0, HD_RB1, COMBO_END}; // – n dash
const uint16_t PROGMEM Hmdsh_combo[] = {HD_RB0, HD_RB2, COMBO_END}; // — m dash
-const uint16_t PROGMEM Htild_combo[] = {HD_RB0, HD_RB4, COMBO_END}; // ~ tilde (not the deadkey for eñye)
+const uint16_t PROGMEM Htild_combo[] = {HD_RB1, HD_RB4, COMBO_END}; // ~ tilde (not the deadkey for eñye)
const uint16_t PROGMEM Hunds_combo[] = {HD_RB1, HD_RB3, COMBO_END}; // _ underscore
const uint16_t PROGMEM Hequal_combo[] = {HD_RB2, HD_RB3, COMBO_END}; // = equal (hold for %)
//const uint16_t PROGMEM Hpercent_combo[] = {HD_RB3, HD_RB4, COMBO_END}; // % percent
@@ -77,7 +104,7 @@ const uint16_t PROGMEM Hring_combo[] = {HD_RM1, HD_RM4, COMBO_END}; // ˚ ring (
const uint16_t PROGMEM Hcedi_combo[] = {HD_LM4, HD_LM2, COMBO_END}; // ¸ cedille (dead key)
//const uint16_t PROGMEM Hoslsh_combo[] = {HD_RB2, HD_LB0, COMBO_END}; // ø/Ø or Wh
-// TEXT ENTRY - off map standard alphas (also on Layer L_PUNCT @ J & G respectively)byby=
+// TEXT ENTRY - off map standard alphas (also on Layer L_SYM @ J & G respectively)byby=
const uint16_t PROGMEM H_Q_combo[] = {HD_Qu_keys, COMBO_END}; // TYPE "q" (Qu & Linger deletes u)
const uint16_t PROGMEM H_L1_combo[] = {HD_L1_keys, COMBO_END}; // ex. TYPE "z"
//const uint16_t PROGMEM H_L2_combo[] = {HD_L2_keys, COMBO_END}; // ex. TYPE "x"
@@ -95,7 +122,6 @@ const uint16_t PROGMEM H_Sch_combo[] = {HD_Sch_keys, COMBO_END}; // TYPE "Sch"
// TEXT ENTRY - (ANY ROW/ MIXED ROWS)
-
const uint16_t PROGMEM HOE_lig_combo[] = {HD_OE_lig_keys, COMBO_END}; // Œ
const uint16_t PROGMEM HAE_lig_combo[] = {HD_AE_lig_keys, COMBO_END}; // Æ
@@ -128,9 +154,9 @@ const uint16_t PROGMEM H_here_combo[] = {HD_here_keys, COMBO_END}; // TYPE "here
#ifdef EN_W_PRONOUNS
const uint16_t PROGMEM H_where_combo[] = {HD_where_keys, COMBO_END}; // "where" + 's
+const uint16_t PROGMEM H_were_combo[] = {HD_were_keys, COMBO_END}; // TYPE "we're"
const uint16_t PROGMEM H_wed_combo[] = {HD_wed_keys, COMBO_END}; // TYPE "we'd" + 've
const uint16_t PROGMEM H_well_combo[] = {HD_well_keys, COMBO_END}; // TYPE "we'll" + 've
-const uint16_t PROGMEM H_were_combo[] = {HD_were_keys, COMBO_END}; // TYPE "we're"
const uint16_t PROGMEM H_weve_combo[] = {HD_weve_keys, COMBO_END}; // TYPE "we've"
#endif // EN_W_PRONOUNS
@@ -138,33 +164,6 @@ const uint16_t PROGMEM H_weve_combo[] = {HD_weve_keys, COMBO_END}; // TYPE "we'v
#endif // EN_PRONOUN_COMBOS // the entirely unnecessary pronoun combo shenanigans
-// UPPER ROW
-
-// FUNCTIONS/COMMANDS Spatially arranged
-const uint16_t PROGMEM Htab_combo[] = {HD_tab_keys, COMBO_END}; // tab
-const uint16_t PROGMEM Hspc_combo[] = {HD_spc_keys, COMBO_END}; // SPACE
-const uint16_t PROGMEM Hent_combo[] = {HD_ent_keys, COMBO_END}; // ENTER
-const uint16_t PROGMEM Hent2_combo[] = {HD_ent2_keys, COMBO_END}; // hard-ENTER/page break
-
-// LOWER ROW
-
-// SEMANTIC FUNCTIONS ** uses SemKeys **
-// Spatially arranged on the QWERTY ZXCV locations
-//
-const uint16_t PROGMEM Hnew_combo[] = {HD_new_keys, COMBO_END}; // new
-const uint16_t PROGMEM Hopen_combo[] = {HD_open_keys, COMBO_END}; // open
-const uint16_t PROGMEM Hclose_combo[] = {HD_close_keys, COMBO_END}; // close
-const uint16_t PROGMEM Hquit_combo[] = {HD_quit_keys, COMBO_END}; // quit
-const uint16_t PROGMEM Hfind_combo[] = {HD_find_keys, COMBO_END}; // find selection
-const uint16_t PROGMEM Hsall_combo[] = {HD_sall_keys, COMBO_END}; // select all
-const uint16_t PROGMEM Hswrd_combo[] = {HD_swrd_keys, COMBO_END}; // select word
-const uint16_t PROGMEM Hundo_combo[] = {HD_undo_keys, COMBO_END}; // undo
-const uint16_t PROGMEM Hredo_combo[] = {HD_redo_keys, COMBO_END}; // redo
-//const uint16_t PROGMEM Hcut_combo[] = {HD_cut_keys, COMBO_END}; // cut (not using this anymore?)
-const uint16_t PROGMEM Hcopy_combo[] = {HD_copy_keys, COMBO_END}; // copy (hold for cut)
-const uint16_t PROGMEM Hpste_combo[] = {HD_pste_keys, COMBO_END}; // paste (hold for paste-match)
-
-
// TWO HANDS
// 53 Japanese contract consonant combos.
@@ -270,10 +269,10 @@ const uint16_t PROGMEM PPLMN_combo[] = {RSFT_T(KC_P4), RCTL_T(KC_PPLS), COMBO_EN
combo_t key_combos[] = {
- // These simple combos trigger on press, repeat. HC_kbd_combo
- [HC_KBD] = COMBO(HC_kbd_combo, MO(L_MEDIA_KBD)), // keyboard/media settings/config layer
+ // These simple combos trigger on press, repeat. HC_cfg_combo
+ [HC_CFG] = COMBO(HC_cfg_combo, MO(L_CFG)), // keyboard/media settings/config layer
[HC_APP] = COMBO(H_menu_combo, KC_APP), // app menu
-// [HC_PCT] = COMBO(Hpercent_combo, KC_PERC), // % (hold = for %)
+ [HC_APPNAV] = COMBO(H_menu_nav_combo, KC_APP), // app menu
[HC_SCLN] = COMBO(Hscln_combo, KC_SCLN), // ;
[HC_COLN] = COMBO_ACTION(Hcoln_combo), // : (hold for elipsis)
[HC_UNDS] = COMBO_ACTION(Hunds_combo), // _ underscore
@@ -285,6 +284,7 @@ combo_t key_combos[] = {
[HC_HASH] = COMBO(Hhash_combo, SK_SECT), // # hijacked for §
[HC_AT] = COMBO_ACTION(Hat_combo), // @ (hold for alanreiser.com)
[HC_TAB] = COMBO(Htab_combo, KC_TAB),
+ [HC_STAB] = COMBO(Hstab_combo, S(KC_TAB)),
[HC_Q] = COMBO_ACTION(H_Q_combo),
[HC_L1] = COMBO(H_L1_combo, HD_L1),
diff --git a/moutis_layers.h b/moutis_layers.h
new file mode 100644
index 0000000..3594eff
--- /dev/null
+++ b/moutis_layers.h
@@ -0,0 +1,372 @@
+//
+// moutis_layers.h
+//
+//
+// Created by Alan on 6/23/23.
+//
+
+#ifndef moutis_layers_h
+#define moutis_layers_h
+#endif /* moutis_layers_h */
+
+
+// Key Position Names for a 34 (-54) key split form factor
+// Should cover Ferris through Atreus-Kyria-Ergodox
+// ╭─────────────────────╮ ╭─────────────────────╮
+// LT5 │ LT4 LT3 LT2 LT1 LT0 │ LTA RTB │ RT0 RT1 RT2 RT3 RT4 │ RT5
+// LM5 │ LM4 LM3 LM2 LM1 LM0 | LMA RMA | RT0 RM1 RM2 RM3 RM4 │ RM5
+// LB5 │ LB4 LB3 LB2 LB1 LB0 │ LBA LBB RBB RBA │ RB0 RB1 RB2 RB3 RB4 │ RB5
+// ╰───────────╮ LH2 LH1 │ LH0 LHA RHA RH0 │ RH1 RH2 ╭───────────╯
+// LH5 LH4 LH3 ╰─────────╯ ╰─────────╯ RH3 RH4 RH5
+
+
+
+/* L_SYM Symbols and punctuation
+ ╭──────────────────────────────────────────╮ ╭───────────────────────────────────────────────╮
+__ │ QUIT CLOZ SCAP SCLP FAGN │ │ DOCBEG HOME UP PGUP PARAPRV │ __
+__ │ LCTL LALT LGUI LSFT FIND | | WORDPRV LEFT DOWN RGHT WORDNXT │ __
+__ │ UNDO CUT COPY PSTE PSTM │ TAB __ __ ESC │ DOCEND END DOWN PGDN PARANXT │ __
+ ╰──────────────────╮ __ S(MENU) MENU │ __ __ │ HISTPRV HISTNXT __ ╭──────────────────╯
+ HISTPRV HISTNXT ╰───────────────────────╯ ╰────────────────────────────╯ ZOOMRST ZOOMOUT
+*/
+
+/* L_SYM Symbols & punctuation (Much of this should be handled by SemKeys/unicode for platform independance
+ ______, KC_Z, KC_Q, RALT(KC_5), LALT(KC_7), LSA(KC_7), LALT(KC_4), KC_DLR, A(S(KC_2)), RALT(KC_3), LALT(KC_Y), ______,
+ ______, KC_LT, KC_LBRC, KC_LPRN, KC_LCBR, RSA(KC_5), RALT(KC_1), RSFT_T(KC_PAST), RGUI_T(KC_PEQL), RALT_T(KC_PPLS), RCTL_T(KC_PSLS), ______,
+ ______, KC_GT, KC_RBRC, KC_RPRN, KC_RCBR, LALT(KC_8), ______, ______, ______, ______, KC_UNDS, KC_PIPE, KC_AMPR, KC_CIRC, KC_PERC, ______,
+ ______, KC_VOLD, SK_DELWDL, SK_DELWDR, KC_VOLU, LALT(KC_9), LSA(KC_8), LSA(KC_9), ______, ______),
+
+*/
+#define LS_LT5 KC_TRNS
+#define LS_LT4 KC_Z
+#define LS_LT3 KC_Q
+#define LS_LT2 RALT(KC_5)
+#define LS_LT1 LALT(KC_7)
+#define LS_LT0 LSA(KC_7)
+#define LS_RT0 LALT(KC_4)
+#define LS_RT1 KC_DLR
+#define LS_RT2 A(S(KC_2))
+#define LS_RT3 RALT(KC_3)
+#define LS_RT4 LALT(KC_Y)
+#define LS_RT5 KC_TRNS
+
+#define LS_LM5 KC_TRNS
+#define LS_LM4 KC_LT
+#define LS_LM3 KC_LBRC
+#define LS_LM2 KC_LPRN
+#define LS_LM1 KC_LCBR
+#define LS_LM0 RSA(KC_5)
+#define LS_RM0 RALT(KC_1)
+#define LS_RM1 RSFT_T(KC_PAST)
+#define LS_RM2 RGUI_T(KC_PEQL)
+#define LS_RM3 RALT_T(KC_PPLS)
+#define LS_RM4 RCTL_T(KC_PSLS)
+#define LS_RM5 KC_TRNS
+
+#define LS_LB5 KC_TRNS
+#define LS_LB4 KC_GT
+#define LS_LB3 KC_RBRC
+#define LS_LB2 KC_RPRN
+#define LS_LB1 KC_RCBR
+#define LS_LB0 LALT(KC_8)
+#define LS_LBA KC_TRNS
+#define LS_LBB KC_TRNS
+#define LS_RBB KC_TRNS
+#define LS_RBA KC_TRNS
+#define LS_RB0 KC_UNDS
+#define LS_RB1 KC_PIPE
+#define LS_RB2 KC_AMPR
+#define LS_RB3 KC_CIRC
+#define LS_RB4 KC_PERC
+#define LS_RB5 KC_TRNS
+
+#define LS_LH5 KC_TRNS
+#define LS_LH4 KC_TRNS
+#define LS_LH3 KC_VOLD
+#define LS_LH2 SK_DELWDL
+#define LS_LH1 SK_DELWDR
+#define LS_LH0 KC_VOLU
+#define LS_RH0 LALT(KC_9)
+#define LS_RH1 LSA(KC_8)
+#define LS_RH2 LSA(KC_9)
+#define LS_RH3 KC_TRNS
+#define LS_RH4 KC_TRNS
+#define LS_RH5 KC_TRNS
+
+
+/* L_FUN LAYER K-key row (left) and Num row (right)
+ ╭──────────────────────────────────────────╮ ╭──────────────────────────────────────────╮
+ RGB_TOG │ F9 F10 F11 F12 F13 │ │ / 7 8 9 - │ RGB_MOD
+ RGB_VAI │ C_T(F5) A_T(F6) G_T(F7) S_T(L8) F14 | | * S_T(1) G_T(2) A_T(3) C_T(+) │ RGB_HUI
+ RGB_VAD │ F1 F2 F3 F4 INS │ __ __ __ __ │ , 4 5 3 = │ RGB_HUD
+ ╰────────────────╮ __ __ __ │ __ __ │ 0 . TG(LN) ╭────────────────╯
+ __ __ ╰─────────────────────────╯ ╰─────────────────────────╯ __ __
+*/
+/*
+ RGB_TOG, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_SLSH, KC_7, KC_8, KC_9, KC_MINS, RGB_MOD,
+ RGB_VAI, LCTL_T(KC_F5), LALT_T(KC_F6), LGUI_T(KC_F7), LSFT_T(KC_F8), KC_F14, KC_COMM, RSFT_T(KC_1), RGUI_T(KC_2), RALT_T(KC_3), RCTL_T(KC_PPLS), RGB_HUI,
+ RGB_VAD, KC_F1, KC_F2, KC_F3, KC_F4, KC_INS, ______, ______, ______, ______, KC_COMM, KC_4, KC_5, KC_6, KC_EQL, RGB_HUD,
+ ______, ______, KC_SCLN, TG(L_NUM), ______, ______, KC_0, KC_DOT, ______, SK_ZOOMRST),
+*/
+
+#define LF_LT5 RGB_TOG
+#define LF_LT4 KC_F9
+#define LF_LT3 KC_F10
+#define LF_LT2 KC_F11
+#define LF_LT1 KC_F12
+#define LF_LT0 KC_F13
+#define LF_RT0 KC_SLSH
+#define LF_RT1 KC_7
+#define LF_RT2 KC_8
+#define LF_RT3 KC_9
+#define LF_RT4 KC_MINS
+#define LF_RT5 RGB_MOD
+
+#define LF_LM5 RGB_VAI
+#define LF_LM4 LCTL_T(KC_F5)
+#define LF_LM3 LALT_T(KC_F6)
+#define LF_LM2 LGUI_T(KC_F7)
+#define LF_LM1 LSFT_T(KC_F8)
+#define LF_LM0 KC_F14
+#define LF_RM0 KC_COMM
+#define LF_RM1 RSFT_T(KC_1)
+#define LF_RM2 RGUI_T(KC_2)
+#define LF_RM3 RALT_T(KC_3)
+#define LF_RM4 RCTL_T(KC_PPLS)
+#define LF_RM5 RGB_HUI
+
+#define LF_LB5 RGB_VAD
+#define LF_LB4 KC_F1
+#define LF_LB3 KC_F2
+#define LF_LB2 KC_F3
+#define LF_LB1 KC_F4
+#define LF_LB0 KC_INS
+#define LF_LBA KC_TRNS
+#define LF_LBB KC_TRNS
+#define LF_RBB KC_TRNS
+#define LF_RBA KC_TRNS
+#define LF_RB0 KC_COMM
+#define LF_RB1 KC_4
+#define LF_RB2 KC_5
+#define LF_RB3 KC_6
+#define LF_RB4 KC_EQL
+#define LF_RB5 RGB_HUD
+
+#define LF_LH5 KC_TRNS
+#define LF_LH4 KC_TRNS
+#define LF_LH3 KC_TRNS
+#define LF_LH2 KC_SCLN
+#define LF_LH1 TG(L_NUM)
+#define LF_LH0 KC_TRNS
+#define LF_RH0 KC_TRNS
+#define LF_RH1 KC_0
+#define LF_RH2 KC_DOT
+#define LF_RH3 KC_TRNS
+#define LF_RH4 SK_ZOOMRST
+#define LF_RH5 KC_TRNS
+
+
+/* L_NUM Layer (LN)
+ ╭──────────────────────────────────────────╮ ╭──────────────────────────────────────────╮
+__ │ TAB PGUP UP PGDN TAB │ │ PSLS P7 P8 P9 PMNS │ __
+__ │ W_LEFT LEFT DOWN RGHT W_RGHT | | PAST P4 P5 P6 PPLS │ __
+__ │ UNDO CUT COPY PSTE SPC │ __ __ __ __ │ PCMM P1 P2 P3 PEQL │ __
+ ╰────────────────╮ __ G_T(BSP) C_T(ENT)│ __ __ │ P0 PDOT __ ╭────────────────╯
+ __ __ ╰─────────────────────────╯ ╰─────────────────────────╯ __ __
+*/
+/*
+ // L_NUM THE NUMPAD LAYER (right) with nav/editing on left (the 10-Key/Spreadsheet layer)
+ KC_NUM, KC_PGDN, KC_UP, KC_PGUP, KC_TAB, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_PMNS,
+ SK_WORDPRV, KC_LEFT, KC_DOWN, KC_RGHT, SK_WORDNXT, KC_PAST, RSFT_T(KC_P4), RGUI_T(KC_P5), RALT_T(KC_P6), RCTL_T(KC_PPLS),
+ SK_UNDO, SK_CUT, SK_COPY, SK_PSTE, KC_SPC, KC_ESC, KC_ESC, KC_PCMM, KC_P1, KC_P2, KC_P3, KC_PEQL,
+ KC_TRNS, KC_TRNS, KC_TRNS, LGUI_T(KC_BSPC), LSFT_T(KC_ENT), KC_DEL, KC_C, KC_P0, KC_PDOT, KC_TRNS, KC_TRNS, KC_TRNS),
+*/
+#define LN_LT5 KC_TRNS
+#define LN_LT4 KC_NUM
+#define LN_LT3 KC_PGDN
+#define LN_LT2 KC_UP
+#define LN_LT1 KC_PGUP
+#define LN_LT0 KC_TAB
+#define LN_RT0 KC_PSLS
+#define LN_RT1 KC_P7
+#define LN_RT2 KC_P8
+#define LN_RT3 KC_P9
+#define LN_RT4 KC_PMNS
+#define LN_RT5 KC_TRNS
+
+#define LN_LM5 KC_TRNS
+#define LN_LM4 SK_WORDPRV
+#define LN_LM3 KC_LEFT
+#define LN_LM2 KC_DOWN
+#define LN_LM1 KC_RGHT
+#define LN_LM0 SK_WORDNXT
+#define LN_RM0 KC_PAST
+#define LN_RM1 RSFT_T(KC_P4)
+#define LN_RM2 RGUI_T(KC_P5)
+#define LN_RM3 RALT_T(KC_P6)
+#define LN_RM4 RCTL_T(KC_PPLS)
+#define LN_RM5 KC_TRNS
+
+#define LN_LB5 KC_TRNS
+#define LN_LB4 SK_UNDO
+#define LN_LB3 SK_CUT
+#define LN_LB2 SK_COPY
+#define LN_LB1 SK_PSTE
+#define LN_LB0 KC_SPC
+#define LN_LBA KC_ESC
+#define LN_LBB KC_TRNS
+#define LN_RBB KC_TRNS
+#define LN_RBA KC_ESC
+#define LN_RB0 KC_PCMM
+#define LN_RB1 KC_P1
+#define LN_RB2 KC_P2
+#define LN_RB3 KC_P3
+#define LN_RB4 KC_PEQL
+#define LN_RB5 KC_TRNS
+
+#define LN_LH5 KC_TRNS
+#define LN_LH4 KC_TRNS
+#define LN_LH3 KC_TRNS
+#define LN_LH2 LGUI_T(KC_BSPC)
+#define LN_LH1 LSFT_T(KC_ENT)
+#define LN_LH0 KC_DEL
+#define LN_LHA KC_TRNS
+#define LN_RHA KC_TRNS
+#define LN_RH0 KC_C
+#define LN_RH1 KC_P0
+#define LN_RH2 KC_PDOT
+#define LN_RH3 KC_TRNS
+#define LN_RH4 KC_TRNS
+#define LN_RH5 KC_TRNS
+
+/* L_NAV Layer (LV)
+ ╭──────────────────────────────────────────╮ ╭───────────────────────────────────────────────╮
+__ │ QUIT CLOZ SCAP SCLP FAGN │ │ DOCBEG HOME UP PGUP PARAPRV │ __
+__ │ LCTL LALT LGUI LSFT FIND | | WORDPRV LEFT DOWN RGHT WORDNXT │ __
+__ │ UNDO CUT COPY PSTE PSTM │ TAB __ __ ESC │ DOCEND END DOWN PGDN PARANXT │ __
+ ╰──────────────────╮ __ S(MENU) MENU │ __ __ │ HISTPRV HISTNXT __ ╭──────────────────╯
+ HISTPRV HISTNXT ╰───────────────────────╯ ╰────────────────────────────╯ ZOOMRST ZOOMOUT
+*/
+/*
+ L_NAV THE NAVIGATION (right hand) LAYER w/ edit & mods on left
+ KC_TRNS, SK_QUIT, SK_CLOZ, SK_SCAP, SK_SCLP, SK_FAGN, SK_DOCBEG, KC_HOME, KC_UP, KC_PGUP, SK_PARAPRV, KC_NUM,
+ KC_VOLU, KC_LCTL, KC_LALT, KC_LGUI, KC_LSFT, SK_FIND, SK_WORDPRV, KC_LEFT, KC_DOWN, KC_RGHT, SK_WORDNXT, KC_TRNS,
+ KC_VOLD, SK_UNDO, SK_CUT, SK_COPY, SK_PSTE, SK_PSTM, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, SK_DOCEND, KC_END, KC_DOWN, KC_PGDN, SK_PARANXT, KC_TRNS,
+ SK_ZOOMRST, KC_TRNS, S(KC_APP), KC_APP, KC_TRNS, SK_ZOOMOUT, SK_HISTPRV, SK_HISTNXT, SK_ZOOMIN, SK_ZOOMRST),
+*/
+#define LV_LT5 KC_TRNS
+#define LV_LT4 SK_QUIT
+#define LV_LT3 SK_CLOZ
+#define LV_LT2 SK_SCAP
+#define LV_LT1 SK_SCLP
+#define LV_LT0 SK_FAGN
+#define LV_RT0 SK_DOCBEG
+#define LV_RT1 KC_HOME
+#define LV_RT2 KC_UP
+#define LV_RT3 KC_PGUP
+#define LV_RT4 SK_PARAPRV
+#define LV_RT5 KC_NUM
+
+#define LV_LM5 KC_VOLU
+#define LV_LM4 KC_LCTL
+#define LV_LM3 KC_LALT
+#define LV_LM2 KC_LGUI
+#define LV_LM1 KC_LSFT
+#define LV_LM0 SK_FIND
+#define LV_RM0 SK_WORDPRV
+#define LV_RM1 KC_LEFT
+#define LV_RM2 KC_DOWN
+#define LV_RM3 KC_RGHT
+#define LV_RM4 SK_WORDNXT
+#define LV_RM5 KC_TRNS
+
+#define LV_LB5 KC_VOLD
+#define LV_LB4 SK_UNDO
+#define LV_LB3 SK_CUT
+#define LV_LB2 SK_COPY
+#define LV_LB1 SK_PSTE
+#define LV_LB0 SK_PSTM
+#define LV_LBA KC_TRNS
+#define LV_LBB KC_TRNS
+#define LV_RBB KC_TRNS
+#define LV_RBA KC_TRNS
+#define LV_RB0 SK_DOCEND
+#define LV_RB1 KC_END
+#define LV_RB2 KC_DOWN
+#define LV_RB3 KC_PGDN
+#define LV_RB4 SK_PARANXT
+#define LV_RB5 KC_TRNS
+
+#define LV_LH5 KC_TRNS
+#define LV_LH4 SK_ZOOMRST
+#define LV_LH3 KC_TRNS
+#define LV_LH2 S(KC_APP)
+#define LV_LH1 KC_APP
+#define LV_LH0 KC_TRNS
+#define LV_RH0 SK_ZOOMOUT
+#define LV_RH1 SK_HISTPRV
+#define LV_RH2 SK_HISTNXT
+#define LV_RH3 SK_ZOOMIN
+#define LV_RH4 SK_ZOOMRST
+#define LV_RH5 KC_TRNS
+
+/* L_CFG Keyboard Configuration (left) and Media Settings (right)
+ __no__, QK_RBT, CG_SWAP, CG_NORM, EE_CLR, LCA(KC_DEL), SK_KILL, KC_NUM, KC_EJCT, __no__, SK_ZOOMRST, RGB_MOD,
+ RGB_VAI, HD_AdaptKeyToggle, HD_L_QWERTY, HD_L_ALPHA, KC_VOLU, KC_BRIU, __no__, KC_MPRV, KC_MUTE, KC_MNXT, SK_ZOOMOUT, RGB_SAI,
+ RGB_HUI, QK_BOOT, AG_SWAP, AG_NORM, KC_VOLD, KC_BRID, RGB_VAD, __no__, __no__, RGB_SAD, __no__, KC_MRWD, KC_MPLY, KC_MFFD, SK_ZOOMIN, RGB_HUD,
+ __no__, __no__, __no__, TG(L_NUM), __no__, __no__, __no__, __no__, __no__, __no__)
+*/
+#define LC_LT5 KC_NO
+#define LC_LT4 QK_RBT
+#define LC_LT3 CG_SWAP
+#define LC_LT2 CG_NORM
+#define LC_LT1 EE_CLR
+#define LC_LT0 SK_KILL
+#define LC_RT0 LCA(KC_DEL)
+#define LC_RT1 KC_NUM
+#define LC_RT2 KC_EJCT
+#define LC_RT3 KC_NO
+#define LC_RT4 SK_ZOOMRST
+#define LC_RT5 RGB_MOD
+
+#define LC_LM5 RGB_VAI
+#define LC_LM4 HD_AdaptKeyToggle
+#define LC_LM3 HD_L_QWERTY
+#define LC_LM2 HD_L_ALPHA
+#define LC_LM1 KC_VOLU
+#define LC_LM0 KC_BRIU
+#define LC_RM0 KC_NO
+#define LC_RM1 KC_MPRV
+#define LC_RM2 KC_MUTE
+#define LC_RM3 KC_MNXT
+#define LC_RM4 SK_ZOOMOUT
+#define LC_RM5 RGB_SAI
+
+#define LC_LB5 RGB_HUI
+#define LC_LB4 QK_BOOT
+#define LC_LB3 AG_SWAP
+#define LC_LB2 AG_NORM
+#define LC_LB1 KC_VOLD
+#define LC_LB0 KC_BRID
+#define LC_LBA RGB_VAD
+#define LC_LBB KC_NO
+#define LC_RBB KC_NO
+#define LC_RBA RGB_SAD
+#define LC_RB0 KC_NO
+#define LC_RB1 KC_MRWD
+#define LC_RB2 KC_MPLY
+#define LC_RB3 KC_MFFD
+#define LC_RB4 SK_ZOOMIN
+#define LC_RB5 RGB_HUD
+
+#define LC_LH4 KC_NO
+#define LC_LH3 KC_NO
+#define LC_LH2 KC_NO
+#define LC_LH1 TG(L_NUM)
+#define LC_LH0 KC_NO
+#define LC_RH0 KC_NO
+#define LC_RH1 KC_NO
+#define LC_RH2 KC_NO
+#define LC_RH3 KC_NO
+#define LC_RH4 KC_NO
+
diff --git a/moutis_process_record.c b/moutis_process_record.c
index 4810428..0dc0f9b 100644
--- a/moutis_process_record.c
+++ b/moutis_process_record.c
@@ -276,13 +276,13 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
break;
- case KC_QUOT: // SHIFT = ], ALT=›, ALT+SHIFT=»
+ case KC_QUOT: // SHIFT = [ (linger=[|]), ALT=«, ALT+SHIFT=‹
clear_keyboard(); // clean record to tinker with.
if (saved_mods & MOD_MASK_ALT) { // ALT (only) down?
if (saved_mods & MOD_MASK_SHIFT) { // SHFT too?
- tap_code16(DQUO_SA);// this should be semkey for ‹?
+ tap_code16(SQUO_SA);// this should be semkey for ‹?
} else { // alt & shift?
- tap_code16(DQUO_A);// this should be linger on semkey for «?
+ tap_code16(SQUO_A);// this should be linger on semkey for «?
}
return_state = false; // don't do more with this record.
#ifndef JP_MODE_ENABLE
@@ -292,7 +292,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|| (!saved_mods && !IS_ENGLISH_MODE)) { // or no mods & not in english
#endif
// register_linger_key(user_config.RBRC_key); // example of simple linger macro
- register_linger_key(DQUO_S); // example of simple linger macro
+ register_linger_key(SQUO_S); // example of simple linger macro
return_state = false; // don't do more with this record.
} else //{ // no mods, so linger
goto byteshave; // CAUTION: messing w/stack frame here!!
@@ -300,13 +300,14 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
// return_state = false; // don't do more with this record.
// }
break;
- case KC_DQUO: // SHIFT = [ (linger=[|]), ALT=‹, ALT+SHIFT=«
+ case KC_DQUO: // SHIFT = ], ALT=», ALT+SHIFT=›
+
clear_keyboard(); // clean record to tinker with.
if (saved_mods & MOD_MASK_ALT) { // ALT (only) down?
if (saved_mods & MOD_MASK_SHIFT) { // SHFT too?
- tap_code16(SQUO_SA);// this should be semkey for ›?
+ tap_code16(DQUO_SA);// this should be semkey for ›?
} else {
- tap_code16(SQUO_A);// this should be linger on semkey for »?
+ tap_code16(DQUO_A);// this should be linger on semkey for »?
}
return_state = false; // don't do more with this record.
#ifndef JP_MODE_ENABLE
@@ -316,7 +317,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|| (!saved_mods && !IS_ENGLISH_MODE)) { // or no mods & not in english
#endif
// register_linger_key(user_config.RBRC_key); // example of simple linger macro
- register_linger_key(SQUO_S); // example of simple linger macro
+ register_linger_key(DQUO_S); // example of simple linger macro
return_state = false; // don't do more with this record.
} else { // no mods, so
byteshave: // CAUTION: messing w/stack frame here!!
diff --git a/moutis_semantickeys.c b/moutis_semantickeys.c
index 71d5a3d..269875d 100644
--- a/moutis_semantickeys.c
+++ b/moutis_semantickeys.c
@@ -64,9 +64,9 @@ void tap_SemKey(uint16_t semkeycode) {
const uint16_t SemKeys_t[SemKeys_COUNT - SK_KILL][OS_count] = {
// Mac, Win, (Phase 3, add others if necessary, expand to multi-key?)
- [SK_KILL - SK_KILL] = {G(A(KC_ESC)),C(A(KC_DEL))}, // "KILL" OR Force quit / ctrl-alt-del
- [SK_HENK - SK_KILL] = {KC_LNG1, KC_INT4}, // 変換
- [SK_MHEN - SK_KILL] = {KC_LNG2, KC_INT5}, // 無変換
+ [SK_KILL - SK_KILL] = {G(A(KC_ESC)),C(A(KC_DEL))}, // Force quit / ctrl-alt-del
+ [SK_HENK - SK_KILL] = {KC_LNG1, C(S(KC_1))}, // 変換/かな
+ [SK_MHEN - SK_KILL] = {KC_LNG2, C(S(KC_0))}, // 無変換/英数
[SK_HENT - SK_KILL] = {G(KC_ENT),C(KC_ENT)}, // Hard ENTER
[SK_UNDO - SK_KILL] = {G(KC_Z),C(KC_Z)}, // undo
[SK_REDO - SK_KILL] = {G(S(KC_Z)),C(S(KC_Z))}, // Redo
diff --git a/moutis_semantickeys.h b/moutis_semantickeys.h
index 51afb98..de9cfc5 100644
--- a/moutis_semantickeys.h
+++ b/moutis_semantickeys.h
@@ -82,7 +82,7 @@ enum my_keycodes {
HD_L_ALPHA,
-/* Eventually…these should be handled as SemKeys with BCD Alt-gr?
+/* Eventually…these should be handled as SemKeys with BCD & Alt-gr for Windows?
HD_aumlt,
HD_amacr,
HD_aacut,
diff --git a/mykeyboards/Atreus/atreus_hd_keymap.c b/mykeyboards/Atreus/atreus_hd_keymap.c
index 388ebcb..784a2a2 100644
--- a/mykeyboards/Atreus/atreus_hd_keymap.c
+++ b/mykeyboards/Atreus/atreus_hd_keymap.c
@@ -5,42 +5,81 @@
#include HD_combo_def // this has the combo definitions
#endif
-#define ____ KC_TRNS
-#define _no_ KC_NO
+#define ______ KC_TRNS
+#define __no__ KC_NO
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[L_QWERTY] = LAYOUT(
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
- RCTL_T(KC_A), RALT_T(KC_S), RGUI_T(KC_D), RSFT_T(KC_F), LT(L_NUMPAD,KC_G), LT(L_FN_NUM,KC_H), RSFT_T(KC_J), RGUI_T(KC_K), RALT_T(KC_L), RCTL_T(KC_SCLN),
- KC_Z, KC_X, KC_C, KC_V, KC_B, TT(L_NUMPAD), LT(L_FN_NUM,KC_MPLY), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
- KC_LEFT, KC_RGHT, KC_APP, LT(L_MEDIA_KBD,KC_MUTE), LT(L_FN_NUM,KC_BSPC), LT(L_NAV,KC_DEL), LT(L_MEDIA_KBD,KC_MUTE), LT(L_PUNCT,KC_SPC), LT(L_NAV,KC_ENT), LT(L_MEDIA_KBD,KC_MPLY), KC_UP, KC_DOWN),
- [L_HDALPHA] = LAYOUT(
+ RCTL_T(KC_A), RALT_T(KC_S), RGUI_T(KC_D), RSFT_T(KC_F), LT(L_NUM,KC_G), LT(L_FUN,KC_H), RSFT_T(KC_J), RGUI_T(KC_K), RALT_T(KC_L), RCTL_T(KC_SCLN),
+ KC_Z, KC_X, KC_C, KC_V, KC_B, TT(L_NUM), LT(L_FUN,KC_MPLY), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ KC_LEFT, KC_RGHT, KC_APP, LT(L_CFG,KC_MUTE), LT(L_FUN,KC_BSPC), LT(L_NAV,KC_DEL), LT(L_CFG,KC_MUTE), LT(L_SYM,KC_SPC), LT(L_NAV,KC_ENT), LT(L_CFG,KC_MPLY), KC_UP, KC_DOWN),
+
+ [L_HD] = LAYOUT(
HD_LT4, HD_LT3, HD_LT2, HD_LT1, HD_LT0, HD_RT0, HD_RT1, HD_RT2, HD_RT3, HD_RT4,
HD_LM4, HD_LM3, HD_LM2, HD_LM1, HD_LM0, HD_RM0, HD_RM1, HD_RM2, HD_RM3, HD_RM4,
- HD_LB4, HD_LB3, HD_LB2, HD_LB1, HD_LB0, LT(L_NUMPAD, KC_LBRC), LT(L_NAV,KC_RBRC), HD_RB0, HD_RB1, HD_RB2, HD_RB3, HD_RB4,
- ____, ____, KC_APP, HD_LH2, HD_LH1, LT(L_MEDIA_KBD,KC_Q), LT(L_MEDIA_KBD,KC_Z), HD_RH1, HD_RH2, ____, ____, ____),
- [L_PUNCT] = LAYOUT(
+ HD_LB4, HD_LB3, HD_LB2, HD_LB1, HD_LB0, HD_LBA, HD_RBA, HD_RB0, HD_RB1, HD_RB2, HD_RB3, HD_RB4,
+ KC_LEFT, KC_RGHT, HD_LH3, HD_LH2, HD_LH1, HD_LH0, HD_RH0, HD_RH1, HD_RH2, HD_RH3, KC_UP, KC_DOWN),
+
+/*
+ [L_SYM] = LAYOUT(
KC_Z, KC_Q, RALT(KC_5), LALT(KC_7), LSA(KC_7), LALT(KC_4), KC_DLR, A(S(KC_2)), RALT(KC_3), LALT(KC_Y),
KC_LT, KC_LBRC, KC_LPRN, KC_LCBR, RSA(KC_5), RALT(KC_1), RSFT_T(KC_PAST), RGUI_T(KC_PEQL), RALT_T(KC_PPLS), RCTL_T(KC_PSLS),
- KC_GT, KC_RBRC, KC_RPRN, KC_RCBR, LALT(KC_8), ____, ____, KC_UNDS, KC_PIPE, KC_AMPR, KC_CIRC, KC_PERC,
- ____, ____, ____, SK_DELWDL, SK_DELWDR, ____, LSA(KC_8), ____, ____, ____, ____, ____),
- [L_FN_NUM] = LAYOUT(
+ KC_GT, KC_RBRC, KC_RPRN, KC_RCBR, LALT(KC_8), ______, ______, KC_UNDS, KC_PIPE, KC_AMPR, KC_CIRC, KC_PERC,
+ ______, ______, ______, SK_DELWDL, SK_DELWDR, ______, LSA(KC_8), ______, ______, ______, ______, ______),
+*/
+ [L_SYM] = LAYOUT(
+ LS_LT4, LS_LT3, LS_LT2, LS_LT1, LS_LT0, LS_RT0, LS_RT1, LS_RT2, LS_RT3, LS_RT4,
+ LS_LM4, LS_LM3, LS_LM2, LS_LM1, LS_LM0, LS_RM0, LS_RM1, LS_RM2, LS_RM3, LS_RM4,
+ LS_LB4, LS_LB3, LS_LB2, LS_LB1, LS_LB0, LS_LBA, LS_RBA, LS_RB0, LS_RB1, LS_RB2, LS_RB3, LS_RB4,
+ ______, ______, LS_LH3, LS_LH2, LS_LH1, LS_LH0, LS_RH0, LS_RH1, LS_RH2, LS_RH3, ______, ______),
+
+/* [L_FUN] = LAYOUT(
KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_GRV, KC_7, KC_8, KC_9, KC_BSLS,
- LCTL_T(KC_F5), LALT_T(KC_F6), LGUI_T(KC_F7), LSFT_T(KC_F8), KC_F14, KC_SCLN, RSFT_T(KC_1), RGUI_T(KC_2), RALT_T(KC_3), RCTL_T(KC_SLSH), KC_F1, KC_F2, KC_F3, KC_F4, KC_F15, KC_PAUS, KC_TAB, KC_MINS, KC_4, KC_5, KC_6, KC_EQL, KC_PSCR, KC_LSCR, ____, KC_BSPC, KC_ENT, ____, KC_DEL, KC_0, KC_DOT, KC_COMM, ____, ____),
- [L_NUMPAD] = LAYOUT(
- KC_LNUM, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_PMNS,
- LALT_T(KC_TAB), KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_PAST, KC_P4, KC_P5, KC_P6, KC_PPLS,
- SK_UNDO, SK_CUT, SK_COPY, SK_PSTE, KC_SPC, TG(L_NUMPAD), ____, KC_PCMM, KC_P1, KC_P2, KC_P3, KC_PEQL,
- ____, ____, ____, LGUI_T(KC_BSPC), LSFT_T(KC_ENT), ____, KC_DEL, KC_P0, KC_PDOT, KC_C, ____, ____),
- [L_NAV] = LAYOUT(
+ LCTL_T(KC_F5), LALT_T(KC_F6), LGUI_T(KC_F7), LSFT_T(KC_F8), KC_F14, KC_SCLN, RSFT_T(KC_1), RGUI_T(KC_2), RALT_T(KC_3), RCTL_T(KC_SLSH), KC_F1, KC_F2, KC_F3, KC_F4, KC_F15, KC_PAUS, KC_TAB, KC_MINS, KC_4, KC_5, KC_6, KC_EQL, KC_PSCR, KC_LSCR, ______, KC_BSPC, KC_ENT, ______, KC_DEL, KC_0, KC_DOT, KC_COMM, ______, ______),
+*/
+ [L_FUN] = LAYOUT(
+ LF_LT4, LF_LT3, LF_LT2, LF_LT1, LF_LT0, LF_RT0, LF_RT1, LF_RT2, LF_RT3, LF_RT4,
+ LF_LM4, LF_LM3, LF_LM2, LF_LM1, LF_LM0, LF_RM0, LF_RM1, LF_RM2, LF_RM3, LF_RM4,
+ LF_LB4, LF_LB3, LF_LB2, LF_LB1, LF_LB0, LF_LBA, LF_RBA, LF_RB0, LF_RB1, LF_RB2, LF_RB3, LF_RB4,
+ ______, ______, LF_LH3, LF_LH2, LF_LH1, LF_LH0, LF_RH0, LF_RH1, LF_RH2, LF_RH3, ______, ______),
+
+/*
+ [L_NUM] = LAYOUT(
+ KC_NUM, KC_PGDN, KC_UP, KC_PGUP, KC_TAB, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_PMNS,
+ SK_WORDPRV, KC_LEFT, KC_DOWN, KC_RGHT, SK_WORDNXT, KC_PAST, RSFT_T(KC_P4), RGUI_T(KC_P5), RALT_T(KC_P6), RCTL_T(KC_PPLS),
+ SK_UNDO, SK_CUT, SK_COPY, SK_PSTE, KC_SPC, KC_ESC, KC_ESC, KC_PCMM, KC_P1, KC_P2, KC_P3, KC_PEQL,
+ ______, ______, ______, LGUI_T(KC_BSPC), LSFT_T(KC_ENT), KC_DEL, KC_C, KC_P0, KC_PDOT, ______, ______, ______),
+*/
+ [L_NUM] = LAYOUT(
+ LN_LT4, LN_LT3, LN_LT2, LN_LT1, LN_LT0, LN_RT0, LN_RT1, LN_RT2, LN_RT3, LN_RT4,
+ LN_LM4, LN_LM3, LN_LM2, LN_LM1, LN_LM0, LN_RM0, LN_RM1, LN_RM2, LN_RM3, LN_RM4,
+ LN_LB4, LN_LB3, LN_LB2, LN_LB1, LN_LB0, LN_LBA, LN_RBA, LN_RB0, LN_RB1, LN_RB2, LN_RB3, LN_RB4,
+ ______, ______, LN_LH3, LN_LH2, LN_LH1, LN_LH0, LN_RH0, LN_RH1, LN_RH2, LN_RH3, ______, ______),
+/*
+ [L_NAV] = LAYOUT(
SK_QUIT, SK_CLOZ, SK_SCAP, SK_SCLP, SK_FAGN, SK_DOCBEG, KC_HOME, KC_UP, KC_PGUP, SK_PARAPRV,
KC_LCTL, KC_LALT, KC_LGUI, KC_LSFT, SK_FIND, SK_WORDPRV, KC_LEFT, KC_DOWN, KC_RGHT, SK_WORDNXT,
SK_UNDO, SK_CUT, SK_COPY, SK_PSTE, SK_PSTM, KC_ESC, KC_TAB, SK_DOCEND, KC_END, KC_DOWN, KC_PGDN, SK_PARANXT,
- SK_HISTPRV, SK_HISTNXT, ____, ____, ____, ____, ____, SK_HISTPRV, SK_HISTNXT, SK_ZOOMRST, SK_ZOOMOUT, SK_ZOOMIN),
- [L_MEDIA_KBD] = LAYOUT(
- QK_RBT, AG_SWAP, CG_SWAP, EE_CLR, LCA(KC_DEL), SK_KILL, KC_NUM, KC_EJCT, _no_, SK_ZOOMRST,
- HD_AdaptKeyToggle, HD_L_QWERTY, HD_L_ALPHA, KC_VOLU, KC_BRIU, _no_, KC_MPRV, KC_MUTE, KC_MNXT, SK_ZOOMOUT,
- QK_BOOT, AG_NORM, CG_NORM, KC_VOLD, KC_BRID, _no_, _no_, _no_, KC_MRWD, KC_MPLY, KC_MFFD, SK_ZOOMIN,
- _no_, _no_, TG(L_NUMPAD), _no_, _no_, _no_, _no_, _no_, _no_, _no_, _no_, _no_)
+ SK_HISTPRV, SK_HISTNXT, ______, ______, ______, ______, ______, SK_HISTPRV, SK_HISTNXT, SK_ZOOMRST, SK_ZOOMOUT, SK_ZOOMIN),
+*/
+ [L_NAV] = LAYOUT(
+ LV_LT4, LV_LT3, LV_LT2, LV_LT1, LV_LT0, LV_RT0, LV_RT1, LV_RT2, LV_RT3, LV_RT4,
+ LV_LM4, LV_LM3, LV_LM2, LV_LM1, LV_LM0, LV_RM0, LV_RM1, LV_RM2, LV_RM3, LV_RM4,
+ LV_LB4, LV_LB3, LV_LB2, LV_LB1, LV_LB0, LV_LBA, LV_RBA, LV_RB0, LV_RB1, LV_RB2, LV_RB3, LV_RB4,
+SK_HISTPRV, SK_HISTNXT, LV_LH3, LV_LH2, LV_LH1, LV_LH0, LV_RH0, LV_RH1, LV_RH2, LV_RH3, SK_ZOOMOUT, SK_ZOOMIN),
+
+/*
+ [L_CFG] = LAYOUT(
+ QK_RBT, CG_SWAP, CG_NORM, EE_CLR, SK_KILL, LCA(KC_DEL), KC_NUM, KC_EJCT, __no__, SK_ZOOMRST,
+ HD_AdaptKeyToggle, HD_L_QWERTY, HD_L_ALPHA, KC_VOLU, KC_BRIU, __no__, KC_MPRV, KC_MUTE, KC_MNXT, SK_ZOOMOUT,
+ QK_BOOT, AG_SWAP, AG_NORM, KC_VOLD, KC_BRID, __no__, __no__, __no__, KC_MRWD, KC_MPLY, KC_MFFD, SK_ZOOMIN,
+ __no__, __no__, TG(L_NUM), __no__, __no__, __no__, __no__, __no__, __no__, __no__, __no__, __no__)
+*/
+ [L_CFG] = LAYOUT(
+ LC_LT4, LC_LT3, LC_LT2, LC_LT1, LC_LT0, LC_RT0, LC_RT1, LC_RT2, LC_RT3, LC_RT4,
+ LC_LM4, LC_LM3, LC_LM2, LC_LM1, LC_LM0, LC_RM0, LC_RM1, LC_RM2, LC_RM3, LC_RM4,
+ LC_LB4, LC_LB3, LC_LB2, LC_LB1, LC_LB0, LC_LBA, LC_RBA, LC_RB0, LC_RB1, LC_RB2, LC_RB3, LC_RB4,
+ ______, ______, LC_LH3, LC_LH2, LC_LH1, LC_LH0, LC_RH0, LC_RH1, LC_RH2, LC_RH3, ______, ______),
};
diff --git a/mykeyboards/ferris/ferris_hd_keymap.c b/mykeyboards/ferris/ferris_hd_keymap.c
index 61749ed..0a05d83 100644
--- a/mykeyboards/ferris/ferris_hd_keymap.c
+++ b/mykeyboards/ferris/ferris_hd_keymap.c
@@ -7,44 +7,62 @@
#define ____ KC_TRNS
#define _no_ KC_NO
+// Alpha Layer for a 34 key (3x5+2) formfactor
+// ╭─────────────────────╮ ╭─────────────────────╮
+// │ LT4 LT3 LT2 LT1 LT0 │ │ RT0 RT1 RT2 RT3 RT4 │
+// │ LM4 LM3 LM2 LM1 LM0 | | RT0 RM1 RM2 RM3 RM4 │
+// │ LB4 LB3 LB2 LB1 LB0 │ │ RB0 RB1 RB2 RB3 RB4 │
+// ╰───────────╮ LH2 LH1 │ │ RH1 RH2 ╭───────────╯
+// ╰─────────╯ ╰─────────╯
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [0] = LAYOUT_split_3x5_2(
- KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
- RCTL_T(KC_A), RALT_T(KC_S), RGUI_T(KC_D), RSFT_T(KC_F), LT(L_NUMPAD,KC_G), LT(L_FN_NUM,KC_H), RSFT_T(KC_J), RGUI_T(KC_K), RALT_T(KC_L), RCTL_T(KC_SCLN),
- KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ /*
+ [L_QWERTY] = LAYOUT_split_3x5_2(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ RCTL_T(KC_A), RALT_T(KC_S), RGUI_T(KC_D), RSFT_T(KC_F), LT(L_NUMPAD,KC_G), LT(L_FN_NUM,KC_H), RSFT_T(KC_J), RGUI_T(KC_K), RALT_T(KC_L), RCTL_T(KC_SCLN),
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
LT(L_FN_NUM,KC_BSPC), LT(L_NAV,KC_DEL), LT(L_PUNCT,KC_SPC), LT(L_NAV,KC_ENT)),
- [1] = LAYOUT_split_3x5_2(
- HD_LT4, HD_LT3, HD_LT2, HD_LT1, HD_LT0, HD_RT0, HD_RT1, HD_RT2, HD_RT3, HD_RT4,
- HD_LM4, HD_LM3, HD_LM2, HD_LM1, HD_LM0, HD_RM0, HD_RM1, HD_RM2, HD_RM3, HD_RM4,
- HD_LB4, HD_LB3, HD_LB2, HD_LB1, HD_LB0, HD_RB0, HD_RB1, HD_RB2, HD_RB3, HD_RB4,
- HD_LH2, HD_LH1, HD_RH1, HD_RH2),
- [2] = LAYOUT_split_3x5_2(
- KC_Z, KC_Q, RALT(KC_5), LALT(KC_7), LSA(KC_7), LALT(KC_4), KC_DLR, A(S(KC_2)), RALT(KC_3), LALT(KC_Y),
- KC_LT, KC_LBRC, KC_LPRN, KC_LCBR, RSA(KC_5), RALT(KC_1), RSFT_T(KC_PAST), RGUI_T(KC_PEQL), RALT_T(KC_PPLS), RCTL_T(KC_PSLS),
- KC_GT, KC_RBRC, KC_RPRN, KC_RCBR, LALT(KC_8), KC_UNDS, KC_PIPE, KC_AMPR, KC_CIRC, KC_PERC,
- SK_DELWDL, SK_DELWDR, ____, LSA(KC_8)),
- [3] = LAYOUT_split_3x5_2(
- KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_GRV, KC_7, KC_8, KC_9, KC_MINS,
- LCTL_T(KC_F5), LALT_T(KC_F6), LGUI_T(KC_F7), LSFT_T(KC_F8), KC_F14, KC_COMM, RSFT_T(KC_1), RGUI_T(KC_2), RALT_T(KC_3), RCTL_T(KC_PPLS),
- KC_F1, KC_F2, KC_F3, KC_F4, KC_INS, KC_COMM, KC_4, KC_5, KC_6, KC_EQL,
- KC_SCLN, TG(L_NUMPAD), KC_0, KC_DOT),
- [4] = LAYOUT_split_3x5_2(
- KC_ESC, KC_HOME, KC_UP, KC_PGUP, LT(L_MEDIA_KBD, KC_NUM), KC_PSLS, KC_P7, KC_P8, KC_P9, KC_PMNS,
- SK_WORDPRV, KC_LEFT, KC_DOWN, KC_RGHT, SK_WORDNXT, KC_PAST, RSFT_T(KC_P4), RGUI_T(KC_P5), RALT_T(KC_P6),RCTL_T(KC_PPLS),
- KC_DEL, KC_END, KC_TAB, KC_PGDN, KC_SPC, KC_PCMM, KC_P1, KC_P2, KC_P3, KC_PEQL,
- LT(L_FN_NUM,KC_BSPC), LT(L_NAV,KC_PENT), LT(L_PUNCT,KC_P0), LT(L_NAV,KC_PDOT)),
- [5] = LAYOUT_split_3x5_2(
- SK_QUIT, SK_CLOZ, SK_SCAP, SK_SCLP, SK_FAGN, SK_DOCBEG, KC_HOME, KC_UP, KC_PGUP, SK_PARAPRV,
- KC_LCTL, KC_LALT, KC_LGUI, KC_LSFT, SK_FIND, SK_WORDPRV, KC_LEFT, KC_DOWN, KC_RGHT, SK_WORDNXT,
- SK_UNDO, SK_CUT, SK_COPY, SK_PSTE, SK_FAGN, SK_DOCEND, KC_END, KC_DOWN, KC_PGDN, SK_PARANXT,
- MO(L_MEDIA_KBD), KC_APP, SK_HISTPRV, SK_HISTNXT),
- [6] = LAYOUT_split_3x5_2(
- QK_RBT, AG_SWAP, CG_SWAP, EE_CLR, LCA(KC_DEL), SK_KILL, KC_NUM, KC_EJCT, _no_, SK_ZOOMRST,
- HD_AdaptKeyToggle, HD_L_QWERTY, HD_L_ALPHA, KC_VOLU, KC_BRIU, _no_, KC_MPRV, KC_MUTE, KC_MNXT, SK_ZOOMOUT,
- QK_BOOT, AG_NORM, CG_NORM, KC_VOLD, KC_BRID, _no_, KC_MRWD, KC_MPLY, KC_MFFD, SK_ZOOMIN,
- _no_, TG(L_NUMPAD), _no_, _no_)
+*/
+ [L_QWERTY] = LAYOUT_split_3x5_2( // Actually MITHRIL
+ KC_W, KC_P, KC_G, KC_D, KC_J, KC_HASH, KC_DOT, KC_SLSH, KC_X, KC_QUOT,
+ RCTL_T(KC_C), RALT_T(KC_N), RGUI_T(KC_S), RSFT_T(KC_T), LT(L_NUM,KC_K), LT(L_NUM,KC_COMM), RSFT_T(KC_I), RGUI_T(KC_E), RALT_T(KC_L), RCTL_T(KC_A),
+ KC_Y, KC_B, KC_F, KC_M, KC_V, KC_MINS, KC_U, KC_O, KC_H, KC_DQUO,
+ HD_LH2, HD_LH1, HD_RH1, HD_RH2),
-};
+ [L_HD] = LAYOUT_split_3x5_2(
+ HD_LT4, HD_LT3, HD_LT2, HD_LT1, HD_LT0, HD_RT0, HD_RT1, HD_RT2, HD_RT3, HD_RT4,
+ HD_LM4, HD_LM3, HD_LM2, HD_LM1, HD_LM0, HD_RM0, HD_RM1, HD_RM2, HD_RM3, HD_RM4,
+ HD_LB4, HD_LB3, HD_LB2, HD_LB1, HD_LB0, HD_RB0, HD_RB1, HD_RB2, HD_RB3, HD_RB4,
+ HD_LH2, HD_LH1, HD_RH1, HD_RH2),
+
+ [L_SYM] = LAYOUT_split_3x5_2(
+ LS_LT4, LS_LT3, LS_LT2, LS_LT1, LS_LT0, LS_RT0, LS_RT1, LS_RT2, LS_RT3, LS_RT4,
+ LS_LM4, LS_LM3, LS_LM2, LS_LM1, LS_LM0, LS_RM0, LS_RM1, LS_RM2, LS_RM3, LS_RM4,
+ LS_LB4, LS_LB3, LS_LB2, LS_LB1, LS_LB0, LS_RB0, LS_RB1, LS_RB2, LS_RB3, LS_RB4,
+ LS_LH2, LS_LH1, LS_RH1, LS_RH2),
+
+ [L_FUN] = LAYOUT_split_3x5_2(
+ LF_LT4, LF_LT3, LF_LT2, LF_LT1, LF_LT0, LF_RT0, LF_RT1, LF_RT2, LF_RT3, LF_RT4,
+ LF_LM4, LF_LM3, LF_LM2, LF_LM1, LF_LM0, LF_RM0, LF_RM1, LF_RM2, LF_RM3, LF_RM4,
+ LF_LB4, LF_LB3, LF_LB2, LF_LB1, LF_LB0, LF_RB0, LF_RB1, LF_RB2, LF_RB3, LF_RB4,
+ LF_LH2, LF_LH1, LF_RH1, LF_RH2),
+ [L_NUM] = LAYOUT_split_3x5_2(
+ LN_LT4, LN_LT3, LN_LT2, LN_LT1, LN_LT0, LN_RT0, LN_RT1, LN_RT2, LN_RT3, LN_RT4,
+ LN_LM4, LN_LM3, LN_LM2, LN_LM1, LN_LM0, LN_RM0, LN_RM1, LN_RM2, LN_RM3, LN_RM4,
+ LN_LB4, LN_LB3, LN_LB2, LN_LB1, LN_LB0, LN_RB0, LN_RB1, LN_RB2, LN_RB3, LN_RB4,
+ LN_LH2, LN_LH1, LN_RH1, LN_RH2),
+
+ [L_NAV] = LAYOUT_split_3x5_2(
+ LV_LT4, LV_LT3, LV_LT2, LV_LT1, LV_LT0, LV_RT0, LV_RT1, LV_RT2, LV_RT3, LV_RT4,
+ LV_LM4, LV_LM3, LV_LM2, LV_LM1, LV_LM0, LV_RM0, LV_RM1, LV_RM2, LV_RM3, LV_RM4,
+ LV_LB4, LV_LB3, LV_LB2, LV_LB1, LV_LB0, LV_RB0, LV_RB1, LV_RB2, LV_RB3, LV_RB4,
+ LV_LH2, LV_LH1, LV_RH1, LV_RH2),
+
+ [L_CFG] = LAYOUT_split_3x5_2(
+ LC_LT4, LC_LT3, LC_LT2, LC_LT1, LC_LT0, LC_RT0, LC_RT1, LC_RT2, LC_RT3, LC_RT4,
+ LC_LM4, LC_LM3, LC_LM2, LC_LM1, LC_LM0, LC_RM0, LC_RM1, LC_RM2, LC_RM3, LC_RM4,
+ LC_LB4, LC_LB3, LC_LB2, LC_LB1, LC_LB0, LC_RB0, LC_RB1, LC_RB2, LC_RB3, LC_RB4,
+ LC_LH2, LC_LH1, LC_RH1, LC_RH2),
+
+};
diff --git a/mykeyboards/kyria/kyria_hd_keymap.c b/mykeyboards/kyria/kyria_hd_keymap.c
index bf2c205..a800e24 100644
--- a/mykeyboards/kyria/kyria_hd_keymap.c
+++ b/mykeyboards/kyria/kyria_hd_keymap.c
@@ -1,48 +1,68 @@
-#include QMK_KEYBOARD_H
+#include QMK_KEYBOARD_H
#ifdef COMBO_ENABLE
-#include HD_combo_def // this has the combo definitions
+#include HD_combo_def // this has the combo definitions (needed here for the QMK keymap introspection)
#endif
-#define ____ KC_TRNS
-#define _no_ KC_NO
+#define ______ KC_TRNS
+#define __no__ KC_NO
+
+/* The Kyria Keymap Key positions
+ * ,-----------------------------------------------. ,-----------------------------------------------.
+ * | LT5 | LT4 | LT3 | LT2 | LT1 | LT0 | | RT0 | RT1 | RT2 | RT3 | RT4 | RT5 |
+ * |-------+-------+-------+-------+-------+-------+ +-------+-------+-------+-------+-------+-------|
+ * | LM5 | LM4 | LM3 | LM2 | LM1 | LM0 | | RM0 | RM1 | RM2 | RM3 | RM4 | RM5 |
+ * |-------+-------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------+-------|
+ * | LB5 | LB4 | LB3 | LB2 | LB1 | LB0 | LBA | LBB | | RBB | RBA | RB0 | RB1 | RB2 | RB3 | RB4 | RB5 |
+ * `-------+-------+-------+-------+-------+-------+-------+-------' '-------+-------+-------+-------+-------+-------+-------+-------'
+ * | LH4 | LH3 | LH2 | LH1 | LH0 | | RH0 | RH1 | RH2 | RH3 | RH4 |
+ * `---------------------------------------' '---------------------------------------'
+ */
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
[L_QWERTY] = LAYOUT(
- SK_COPY, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LNG2,
- SK_PSTE, RCTL_T(KC_A), RALT_T(KC_S), RGUI_T(KC_D), RSFT_T(KC_F), LT(L_NUMPAD,KC_G), LT(L_FN_NUM,KC_H), RSFT_T(KC_J), RGUI_T(KC_K), RALT_T(KC_L), RCTL_T(KC_SCLN), KC_LNG1,
- KC_AMPR, KC_Z, KC_X, KC_C, KC_V, KC_B, LT(L_MEDIA_KBD,KC_MUTE), LT(L_FN_NUM,KC_ESC), LT(L_FN_NUM,KC_ESC), LT(L_MEDIA_KBD,KC_MPLY), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_EQL,
- LT(L_FN_NUM,KC_MUTE), KC_APP, LT(L_FN_NUM,KC_BSPC), LT(L_NAV,KC_DEL), LT(L_NUMPAD,KC_LNG2), LT(L_NUMPAD,KC_LNG1), LT(L_PUNCT,KC_SPC), LT(L_NAV,KC_ENT), LT(L_FN_NUM,KC_TAB), LT(L_FN_NUM,KC_MPLY)),
- [L_HDALPHA] = LAYOUT(
- ____, HD_LT4, HD_LT3, HD_LT2, HD_LT1, HD_LT0, HD_RT0, HD_RT1, HD_RT2, HD_RT3, HD_RT4, ____,
- ____, HD_LM4, HD_LM3, HD_LM2, HD_LM1, HD_LM0, HD_RM0, HD_RM1, HD_RM2, HD_RM3, HD_RM4, ____,
- ____, HD_LB4, HD_LB3, HD_LB2, HD_LB1, HD_LB0, LT(L_MEDIA_KBD,KC_MUTE), LT(L_NUMPAD,KC_ESC), LT(L_NUMPAD,KC_ESC), LT(L_MEDIA_KBD,KC_MPLY), HD_RB0, HD_RB1, HD_RB2, HD_RB3, HD_RB4, ____,
- ____, ____, HD_LH2, HD_LH1, LT(L_NAV,KC_SPC), LT(L_PUNCT,KC_LNG1), HD_RH1, HD_RH2, ____, ____),
- [L_PUNCT] = LAYOUT(
- ____, KC_Z, KC_Q, RALT(KC_5), LALT(KC_7), LSA(KC_7), LALT(KC_4), KC_DLR, A(S(KC_2)), RALT(KC_3), LALT(KC_Y), ____,
- ____, KC_LT, KC_LBRC, KC_LPRN, KC_LCBR, RSA(KC_5), RALT(KC_1), RSFT_T(KC_PAST), RGUI_T(KC_PEQL), RALT_T(KC_PPLS), RCTL_T(KC_PSLS), ____,
- ____, KC_GT, KC_RBRC, KC_RPRN, KC_RCBR, LALT(KC_8), ____, ____, ____, ____, KC_UNDS, KC_PIPE, KC_AMPR, KC_CIRC, KC_PERC, ____,
- ____, KC_VOLD, SK_DELWDL, SK_DELWDR, KC_VOLU, LALT(KC_9), LSA(KC_8), LSA(KC_9), ____, ____),
- [L_FN_NUM] = LAYOUT(
- RGB_TOG, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_SLSH, KC_7, KC_8, KC_9, KC_MINS, RGB_MOD,
- RGB_VAI, LCTL_T(KC_F5), LALT_T(KC_F6), LGUI_T(KC_F7), LSFT_T(KC_F8), KC_F14, KC_COMM, RSFT_T(KC_1), RGUI_T(KC_2), RALT_T(KC_3), RCTL_T(KC_PPLS), RGB_HUI,
- RGB_VAD, KC_F1, KC_F2, KC_F3, KC_F4, KC_INS, ____, ____, ____, ____, KC_COMM, KC_4, KC_5, KC_6, KC_EQL, RGB_HUD,
- ____, ____, KC_SCLN, TG(L_NUMPAD), ____, ____, KC_0, KC_DOT, ____, SK_ZOOMRST),
- [L_NUMPAD] = LAYOUT(
- RGB_TOG, KC_ESC, KC_HOME, KC_UP, KC_PGUP, LT(L_MEDIA_KBD, KC_NUM), KC_PSLS, KC_P7, KC_P8, KC_P9, KC_PMNS, RGB_MOD,
- RGB_VAI, SK_WORDPRV, KC_LEFT, KC_DOWN, KC_RGHT, SK_WORDNXT, KC_PAST, RSFT_T(KC_P4), RGUI_T(KC_P5), RALT_T(KC_P6), RCTL_T(KC_PPLS), RGB_HUI,
- RGB_VAD, KC_DEL, KC_END, KC_TAB, KC_PGDN, KC_SPC, TG(5), _no_, _no_, LALT(KC_MINS), KC_PCMM, KC_P1, KC_P2, KC_P3, KC_PEQL, RGB_HUD,
- ____, TG(L_NUMPAD), LT(L_FN_NUM,KC_BSPC), LT(L_NAV,KC_PENT), ____, KC_DEL, LT(L_PUNCT,KC_P0), LT(L_NAV,KC_PDOT), KC_C, SK_ZOOMRST),
- [L_NAV] = LAYOUT(
- ____, SK_QUIT, SK_CLOZ, SK_SCAP, SK_SCLP, SK_FAGN, SK_DOCBEG, KC_HOME, KC_UP, KC_PGUP, SK_PARAPRV, KC_NUM,
- KC_VOLU, KC_LCTL, KC_LALT, KC_LGUI, KC_LSFT, SK_FIND, SK_WORDPRV, KC_LEFT, KC_DOWN, KC_RGHT, SK_WORDNXT, ____,
- KC_VOLD, SK_UNDO, SK_CUT, SK_COPY, SK_PSTE, SK_PSTM, ____, ____, ____, ____, SK_DOCEND, KC_END, KC_DOWN, KC_PGDN, SK_PARANXT, ____,
- SK_ZOOMRST, ____, S(KC_APP), KC_APP, ____, SK_ZOOMOUT, SK_HISTPRV, SK_HISTNXT, SK_ZOOMIN, SK_ZOOMRST),
- [L_MEDIA_KBD] = LAYOUT(
- _no_, QK_RBT, AG_SWAP, CG_SWAP, EE_CLR, LCA(KC_DEL), SK_KILL, KC_NUM, KC_EJCT, _no_, SK_ZOOMRST, RGB_MOD,
- RGB_VAI, HD_AdaptKeyToggle, HD_L_QWERTY, HD_L_ALPHA, KC_VOLU, KC_BRIU, _no_, KC_MPRV, KC_MUTE, KC_MNXT, SK_ZOOMOUT, RGB_SAI,
- RGB_HUI, QK_BOOT, AG_NORM, CG_NORM, KC_VOLD, KC_BRID, RGB_VAD, _no_, _no_, RGB_SAD, _no_, KC_MRWD, KC_MPLY, KC_MFFD, SK_ZOOMIN, RGB_HUD,
- _no_, _no_, _no_, TG(L_NUMPAD), _no_, _no_, _no_, _no_, _no_, _no_)
+ SK_COPY, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LNG2,
+ SK_PSTE, RCTL_T(KC_A), RALT_T(KC_S), RGUI_T(KC_D), RSFT_T(KC_F), LT(L_NUM,KC_G), LT(L_FUN,KC_H), RSFT_T(KC_J), RGUI_T(KC_K), RALT_T(KC_L), RCTL_T(KC_SCLN), KC_LNG1,
+ KC_AMPR, KC_Z, KC_X, KC_C, KC_V, KC_B, HD_LBA, HD_LBB, HD_RBB, HD_RBA, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_EQL,
+ LT(L_FUN,KC_MUTE), KC_APP, LT(L_FUN,KC_BSPC), LT(L_NAV,KC_DEL), HD_LH0, HD_RH0, LT(L_SYM,KC_SPC), LT(L_NAV,KC_ENT), LT(L_FUN,KC_TAB), LT(L_FUN,KC_MPLY)),
+
+ [L_HD] = LAYOUT(
+ HD_LT5, HD_LT4, HD_LT3, HD_LT2, HD_LT1, HD_LT0, HD_RT0, HD_RT1, HD_RT2, HD_RT3, HD_RT4, HD_RT5,
+ HD_LM5, HD_LM4, HD_LM3, HD_LM2, HD_LM1, HD_LM0, HD_RM0, HD_RM1, HD_RM2, HD_RM3, HD_RM4, HD_RM5,
+ HD_LB5, HD_LB4, HD_LB3, HD_LB2, HD_LB1, HD_LB0, HD_LBA, HD_LBB, HD_RBB, HD_RBA, HD_RB0, HD_RB1, HD_RB2, HD_RB3, HD_RB4, HD_RB5,
+ HD_LH4, HD_LH3, HD_LH2, HD_LH1, HD_LH0, HD_RH0, HD_RH1, HD_RH2, HD_RH3, HD_RH4),
+
+ [L_SYM] = LAYOUT(
+ LS_LT5, LS_LT4, LS_LT3, LS_LT2, LS_LT1, LS_LT0, LS_RT0, LS_RT1, LS_RT2, LS_RT3, LS_RT4, LS_RT5,
+ LS_LM5, LS_LM4, LS_LM3, LS_LM2, LS_LM1, LS_LM0, LS_RM0, LS_RM1, LS_RM2, LS_RM3, LS_RM4, LS_RM5,
+ LS_LB5, LS_LB4, LS_LB3, LS_LB2, LS_LB1, LS_LB0, LS_LBA, LS_LBB, LS_RBB, LS_RBA, LS_RB0, LS_RB1, LS_RB2, LS_RB3, LS_RB4, LS_RB5,
+ LS_LH4, LS_LH3, LS_LH2, LS_LH1, LS_LH0, LS_RH0, LS_RH1, LS_RH2, LS_RH3, LS_RH4),
+
+ [L_FUN] = LAYOUT(
+ LF_LT5, LF_LT4, LF_LT3, LF_LT2, LF_LT1, LF_LT0, LF_RT0, LF_RT1, LF_RT2, LF_RT3, LF_RT4, LF_RT5,
+ LF_LM5, LF_LM4, LF_LM3, LF_LM2, LF_LM1, LF_LM0, LF_RM0, LF_RM1, LF_RM2, LF_RM3, LF_RM4, LF_RM5,
+ LF_LB5, LF_LB4, LF_LB3, LF_LB2, LF_LB1, LF_LB0, LF_LBA, LF_LBB, LF_RBB, LF_RBA, LF_RB0, LF_RB1, LF_RB2, LF_RB3, LF_RB4, LF_RB5,
+ LF_LH4, LF_LH3, LF_LH2, LF_LH1, LF_LH0, LF_RH0, LF_RH1, LF_RH2, LF_RH3, LF_RH4),
+
+ [L_NUM] = LAYOUT(
+ LN_LT5, LN_LT4, LN_LT3, LN_LT2, LN_LT1, LN_LT0, LN_RT0, LN_RT1, LN_RT2, LN_RT3, LN_RT4, LN_RT5,
+ LN_LM5, LN_LM4, LN_LM3, LN_LM2, LN_LM1, LN_LM0, LN_RM0, LN_RM1, LN_RM2, LN_RM3, LN_RM4, LN_RM5,
+ LN_LB5, LN_LB4, LN_LB3, LN_LB2, LN_LB1, LN_LB0, LN_LBA, LN_LBB, LN_RBB, LN_RBA, LN_RB0, LN_RB1, LN_RB2, LN_RB3, LN_RB4, LN_RB5,
+ LN_LH4, LN_LH3, LN_LH2, LN_LH1, LN_LH0, LN_RH0, LN_RH1, LN_RH2, LN_RH3, LN_RH4),
+
+ [L_NAV] = LAYOUT(
+ LV_LT5, LV_LT4, LV_LT3, LV_LT2, LV_LT1, LV_LT0, LV_RT0, LV_RT1, LV_RT2, LV_RT3, LV_RT4, LV_RT5,
+ LV_LM5, LV_LM4, LV_LM3, LV_LM2, LV_LM1, LV_LM0, LV_RM0, LV_RM1, LV_RM2, LV_RM3, LV_RM4, LV_RM5,
+ LV_LB5, LV_LB4, LV_LB3, LV_LB2, LV_LB1, LV_LB0, LV_LBA, LV_LBB, LV_RBB, LV_RBA, LV_RB0, LV_RB1, LV_RB2, LV_RB3, LV_RB4, LV_RB5,
+ LV_LH4, LV_LH3, LV_LH2, LV_LH1, LV_LH0, LV_RH0, LV_RH1, LV_RH2, LV_RH3, LV_RH4),
+
+ [L_CFG] = LAYOUT(
+ LC_LT5, LC_LT4, LC_LT3, LC_LT2, LC_LT1, LC_LT0, LC_RT0, LC_RT1, LC_RT2, LC_RT3, LC_RT4, LC_RT5,
+ LC_LM5, LC_LM4, LC_LM3, LC_LM2, LC_LM1, LC_LM0, LC_RM0, LC_RM1, LC_RM2, LC_RM3, LC_RM4, LC_RM5,
+ LC_LB5, LC_LB4, LC_LB3, LC_LB2, LC_LB1, LC_LB0, LC_LBA, LC_LBB, LC_RBB, LC_RBA, LC_RB0, LC_RB1, LC_RB2, LC_RB3, LC_RB4, LC_RB5,
+ LC_LH4, LC_LH3, LC_LH2, LC_LH1, LC_LH0, LC_RH0, LC_RH1, LC_RH2, LC_RH3, LC_RH4),
+
};
diff --git a/mykeyboards/naked48/naked48_hd_keymap.c b/mykeyboards/naked48/naked48_hd_keymap.c
index 1f1ed2b..10ad1b5 100644
--- a/mykeyboards/naked48/naked48_hd_keymap.c
+++ b/mykeyboards/naked48/naked48_hd_keymap.c
@@ -4,63 +4,108 @@
#include HD_combo_def // this has the combo definitions
#endif
-#define ____ KC_TRNS
-#define _no_ KC_NO
+#define ______ KC_TRNS
+#define __no__ KC_NO
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Qwerty Salicylic Acid's Naked 48 is logically a Planck layout
- * ,-----------------------------------------. ,-----------------------------------------.
- * | Q | W | E | R | T | mute | | play | Y | U | I | O | P |
- * |------+------+------+------+------+------+ +------+------+------+------+------+------|
- * | A | S | D | F | G | Tab | | ' | H | J | K | L | ; |
- * |------+------+------+------+------+------+ +------+------+------+------+------+------|
- * | Z | X | C | V | B | num | | nav | N | M | , | . | / |
- * `------+------+------+------+------+------+------+------+------+------+------+------+------+------'
- * | Down | Up | APP | Bksp | Del |LANG1 |LANG2 | spc | Ent | | Left |Right |
- * `-----------------------------------------------------------------------------------'
+/* Salicylic Acid's Naked 48 is logically a Planck 12x4 layout
+ * ,-----------------------------------------------. ,-----------------------------------------------.
+ * | LT4 | LT3 | LT2 | LT1 | LT0 | mute | | play | RT0 | RT1 | RT2 | RT3 | RT4 |
+ * |-------+-------+-------+-------+-------+-------+ +-------+-------+-------+-------+-------+-------|
+ * | LM4 | LM3 | LM2 | LM1 | LM0 | mute | | play | RM0 | RM1 | RM2 | RM3 | RM4 |
+ * |-------+-------+-------+-------+-------+-------+ +-------+-------+-------+-------+-------+-------|
+ * | LB4 | LB3 | LB2 | LB1 | LB0 | LBA | | RBA | RB0 | RB1 | RB2 | RB3 | RB4 |
+ * `-------+-------+-------+-------+-------+-------+------+-------+-------+-------+-------+-------+-------+-------'
+ * | Left | Right | LH2 | LH1 | LH0 | LHA | RHA | RH0 | RH1 | RH2 | Up | Down |
+ * `----------------------------------------------------------------------------------------------'
*/
-[L_QWERTY] = LAYOUT(
- KC_Q, KC_W, KC_E, KC_R, KC_T, LT(L_MEDIA_KBD,KC_MUTE), LT(L_MEDIA_KBD,KC_MPLY), KC_Y, KC_U, KC_I, KC_O, KC_P,
- RCTL_T(KC_A), RALT_T(KC_S), RGUI_T(KC_D), RSFT_T(KC_F), LT(L_NUMPAD,KC_G), LT(L_NUMPAD,KC_TAB), KC_QUOT, LT(L_FN_NUM,KC_H), RSFT_T(KC_J), RGUI_T(KC_K), RALT_T(KC_L), RCTL_T(KC_SCLN),
- KC_Z, KC_X, KC_C, KC_V, KC_B, TT(L_NUMPAD), TT(L_NAV), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
- KC_DOWN, KC_UP, KC_APP, LT(L_FN_NUM,KC_BSPC), LT(L_NAV,KC_DEL), LT(L_FN_NUM,SK_MHEN), LT(L_FN_NUM,SK_HENK), LT(L_PUNCT,KC_SPC), LT(L_NAV,KC_ENT), LT(L_NUMPAD,KC_TAB), KC_LEFT, KC_RGHT),
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/*[L_QWERTY] = LAYOUT(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, LT(L_CFG,KC_MUTE), LT(L_CFG,KC_MPLY), KC_Y, KC_U, KC_I, KC_O, KC_P,
+ RCTL_T(KC_A), RALT_T(KC_S), RGUI_T(KC_D), RSFT_T(KC_F), LT(L_NUM,KC_G), LT(L_NUM,KC_TAB), KC_QUOT, LT(L_FUN,KC_H), RSFT_T(KC_J), RGUI_T(KC_K), RALT_T(KC_L), RCTL_T(KC_SCLN),
+ KC_Z, KC_X, KC_C, KC_V, KC_B, TT(L_NUM), TT(L_NAV), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ KC_LEFT, KC_RGHT, LT(L_FUN,KC_BSPC), LT(L_NAV,KC_DEL), KC_APP, LT(L_FUN,SK_MHEN), LT(L_FUN,SK_HENK), LT(L_NUM,KC_TAB), LT(L_PUNCT,KC_SPC), LT(L_NAV,KC_ENT), KC_UP, KC_DOWN),
[L_HDALPHA] = LAYOUT(
- HD_LT4, HD_LT3, HD_LT2, HD_LT1, HD_LT0, LT(L_MEDIA_KBD,KC_MUTE), LT(L_MEDIA_KBD,KC_MPLY), HD_RT0, HD_RT1, HD_RT2, HD_RT3, HD_RT4,
- HD_LM4, HD_LM3, HD_LM2, HD_LM1, HD_LM0, TT(L_NUMPAD), TT(L_NAV), HD_RM0, HD_RM1, HD_RM2, HD_RM3, HD_RM4,
- HD_LB4, HD_LB3, HD_LB2, HD_LB1, HD_LB0, LT(L_NUMPAD, KC_LBRC), LT(L_NAV,KC_RBRC), HD_RB0, HD_RB1, HD_RB2, HD_RB3, HD_RB4,
- ____, ____, HD_LH2, HD_LH1, LT(L_MEDIA_KBD,KC_Q), KC_APP, LT(L_MEDIA_KBD,KC_MPLY), LT(L_MEDIA_KBD,KC_Z), HD_RH1, HD_RH2, ____, ____),
-
-[L_PUNCT] = LAYOUT(
- KC_Z, KC_Q, RALT(KC_5), LALT(KC_7), LSA(KC_7), KC_ESC, ____, LALT(KC_4), KC_DLR, A(S(KC_2)), RALT(KC_3), LALT_T(KC_Y),
- KC_LT, KC_LBRC, KC_LPRN, KC_LCBR, RSA(KC_5), ____, ____, RALT(KC_1), RSFT_T(KC_PAST), RGUI_T(KC_PEQL), RALT_T(KC_PPLS), RALT_T(KC_R),
- KC_GT, KC_RBRC, KC_RPRN, KC_RCBR, LALT(KC_8), ____, ____, KC_UNDS, KC_PIPE, KC_AMPR, KC_CIRC, KC_PERC,
- ____, ____, SK_DELWDL, SK_DELWDR, ____, ____, ____, ____, LSA(KC_8), LSA(KC_9), LALT(KC_9), ____),
-
-[L_FN_NUM] = LAYOUT(
- KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_F16, ____, KC_SLSH, KC_7, KC_8, KC_9, KC_BSLS,
+ HD_LT4, HD_LT3, HD_LT2, HD_LT1, HD_LT0, KC_MUTE, KC_MPLY, HD_RT0, HD_RT1, HD_RT2, HD_RT3, HD_RT4,
+ HD_LM4, HD_LM3, HD_LM2, HD_LM1, HD_LM0, TT(L_NUM), TT(L_NAV), HD_RM0, HD_RM1, HD_RM2, HD_RM3, HD_RM4,
+ HD_LB4, HD_LB3, HD_LB2, HD_LB1, HD_LB0, KC_LBRC, KC_RBRC, HD_RB0, HD_RB1, HD_RB2, HD_RB3, HD_RB4,
+ ______, ______, HD_LH2, HD_LH1, LT(L_CFG,KC_LPRN), KC_APP, MO(L_CFG), LT(L_CFG,KC_RPRN), HD_RH1, HD_RH2, ______, ______),
+
+[L_SYM] = LAYOUT(
+ KC_Z, KC_Q, RALT(KC_5), LALT(KC_7), LSA(KC_7), KC_ESC, ______, LALT(KC_4), KC_DLR, A(S(KC_2)), RALT(KC_3), LALT_T(KC_Y),
+ KC_LT, KC_LBRC, KC_LPRN, KC_LCBR, RSA(KC_5), ______, ______, RALT(KC_1), RSFT_T(KC_PAST), RGUI_T(KC_PEQL), RALT_T(KC_PPLS), RALT_T(KC_R),
+ KC_GT, KC_RBRC, KC_RPRN, KC_RCBR, LALT(KC_8), ______, ______, KC_UNDS, KC_PIPE, KC_AMPR, KC_CIRC, KC_PERC,
+ ______, ______, SK_DELWDL, SK_DELWDR, ______, ______, ______, ______, LSA(KC_8), LSA(KC_9), LALT(KC_9), ______),
+
+[L_FUN] = LAYOUT(
+ KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_F16, ______, KC_SLSH, KC_7, KC_8, KC_9, KC_BSLS,
LCTL_T(KC_F5), LALT_T(KC_F6), LGUI_T(KC_F7), LSFT_T(KC_F8), KC_F14, KC_F17, TG(L_NAV), KC_COMM, RSFT_T(KC_1), RGUI_T(KC_2), RALT_T(KC_3), RCTL_T(KC_SLSH),
KC_F1, KC_F2, KC_F3, KC_F4, KC_F15, KC_F18, KC_TAB, KC_MINS, KC_4, KC_5, KC_6, KC_EQL,
- KC_PSCR, KC_SCRL, KC_BSPC, KC_ENT, ____, KC_PAUS, KC_INS, ____, KC_0, KC_DOT, KC_SCLN, KC_PENT),
+ KC_PSCR, KC_SCRL, KC_BSPC, KC_ENT, ______, KC_PAUS, KC_INS, ______, KC_0, KC_DOT, KC_SCLN, KC_PENT),
-[L_NUMPAD] = LAYOUT(
+[L_NUM] = LAYOUT(
LALT(KC_RBRC), SK_QUIT, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_NUM, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_PMNS,
- LSA(KC_3), LALT_T(KC_TAB), KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, ____, KC_PAST, KC_P4, KC_P5, KC_P6, KC_PPLS,
- LSA(KC_4), SK_UNDO, SK_CUT, SK_COPY, SK_PSTE, KC_ENT, TG(L_NUMPAD), KC_PCMM, KC_P1, KC_P2, KC_P3, KC_PEQL,
- ____, ____, ____, KC_BSPC, KC_ENT, ____, ____, KC_P0, KC_PDOT, KC_C, ____, ____),
+ LSA(KC_3), LALT_T(KC_TAB), KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, ______, KC_PAST, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ LSA(KC_4), SK_UNDO, SK_CUT, SK_COPY, SK_PSTE, KC_ENT, TG(L_NUM), KC_PCMM, KC_P1, KC_P2, KC_P3, KC_PEQL,
+ ______, ______, ______, KC_BSPC, KC_ENT, ______, ______, KC_P0, KC_PDOT, KC_C, ______, ______),
[L_NAV] = LAYOUT(
- SK_QUIT, SK_CLOZ, SK_SCAP, SK_SCLP, SK_FAGN, ____, ____, SK_DOCBEG, KC_HOME, KC_UP, KC_PGUP, SK_PARAPRV,
- KC_LCTL, KC_LALT, KC_LGUI, KC_LSFT, SK_FIND, ____, TG(L_NAV), SK_WORDPRV, KC_LEFT, KC_DOWN, KC_RGHT, SK_WORDNXT,
- SK_UNDO, SK_CUT, SK_COPY, SK_PSTE, SK_PSTM, TG(L_NAV), ____, SK_DOCEND, KC_END, KC_DOWN, KC_LALT, SK_PARANXT,
- ____, ____, SK_DELWDL, SK_DELWDR, ____, ____, SK_ZOOMRST, SK_HISTPRV, SK_HISTNXT, ____, SK_ZOOMOUT, SK_ZOOMIN),
+ SK_QUIT, SK_CLOZ, SK_SCAP, SK_SCLP, SK_FAGN, ______, ______, SK_DOCBEG, KC_HOME, KC_UP, KC_PGUP, SK_PARAPRV,
+ KC_LCTL, KC_LALT, KC_LGUI, KC_LSFT, SK_FIND, ______, TG(L_NAV), SK_WORDPRV, KC_LEFT, KC_DOWN, KC_RGHT, SK_WORDNXT,
+ SK_UNDO, SK_CUT, SK_COPY, SK_PSTE, SK_PSTM, TG(L_NAV), ______, SK_DOCEND, KC_END, KC_DOWN, KC_LALT, SK_PARANXT,
+ ______, ______, SK_DELWDL, SK_DELWDR, ______, ______, SK_ZOOMRST, SK_HISTPRV, SK_HISTNXT, ______, SK_ZOOMOUT, SK_ZOOMIN),
-[L_MEDIA_KBD] = LAYOUT(
- QK_RBT, AG_SWAP, CG_SWAP, EE_CLR, LCA(KC_DEL), ____, RGB_TOG, SK_KILL, KC_NUM, KC_EJCT, _no_, SK_ZOOMRST,
- HD_AdaptKeyToggle, HD_L_QWERTY, HD_L_ALPHA, KC_VOLU, KC_BRIU, ____, ____, _no_, KC_MPRV, KC_MUTE, KC_MNXT, SK_ZOOMOUT,
+[L_CFG] = LAYOUT(
+ QK_RBT, AG_SWAP, CG_SWAP, EE_CLR, LCA(KC_DEL), ______, RGB_TOG, SK_KILL, KC_NUM, KC_EJCT, __no__, SK_ZOOMRST,
+ HD_AdaptKeyToggle, HD_L_QWERTY, HD_L_ALPHA, KC_VOLU, KC_BRIU, ______, ______, __no__, KC_MPRV, KC_MUTE, KC_MNXT, SK_ZOOMOUT,
+
+ QK_BOOT, AG_NORM, CG_NORM, KC_VOLD, KC_BRID, AG_NORM, CG_NORM, __no__, KC_MRWD, KC_MPLY, KC_MFFD, SK_ZOOMIN,
+
+ ______, ______, ______, ______, TG(L_NUM), ______, ______, ______, ______, ______, ______, ______)
+};
+*/
+
+ [L_QWERTY] = LAYOUT(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, LT(L_CFG,KC_MUTE), LT(L_CFG,KC_MPLY), KC_Y, KC_U, KC_I, KC_O, KC_P,
+ RCTL_T(KC_A), RALT_T(KC_S), RGUI_T(KC_D), RSFT_T(KC_F), LT(L_NUM,KC_G), LT(L_NUM,KC_TAB), KC_QUOT, LT(L_FUN,KC_H), RSFT_T(KC_J), RGUI_T(KC_K), RALT_T(KC_L), RCTL_T(KC_SCLN),
+ KC_Z, KC_X, KC_C, KC_V, KC_B, TT(L_NUM), TT(L_NAV), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ KC_LEFT, KC_RGHT, LT(L_FUN,KC_BSPC), LT(L_NAV,KC_DEL), KC_APP, LT(L_FUN,SK_MHEN), LT(L_FUN,SK_HENK), LT(L_NUM,KC_TAB), LT(L_SYM,KC_SPC), LT(L_NAV,KC_ENT), KC_UP, KC_DOWN),
+
+ [L_HD] = LAYOUT(
+ HD_LT4, HD_LT3, HD_LT2, HD_LT1, HD_LT0, KC_MUTE, KC_MPLY, HD_RT0, HD_RT1, HD_RT2, HD_RT3, HD_RT4,
+ HD_LM4, HD_LM3, HD_LM2, HD_LM1, HD_LM0, LT(L_NUM,KC_TAB), KC_QUOT, HD_RM0, HD_RM1, HD_RM2, HD_RM3, HD_RM4,
+ HD_LB4, HD_LB3, HD_LB2, HD_LB1, HD_LB0, HD_LBA, HD_RBA, HD_RB0, HD_RB1, HD_RB2, HD_RB3, HD_RB4,
+ KC_LEFT, KC_RGHT, HD_LH2, HD_LH1, HD_LH3, HD_LH0, HD_RH0, HD_RH3, HD_RH1, HD_RH2, KC_UP, KC_DOWN),
+
+ [L_SYM] = LAYOUT(
+ LS_LT4, LS_LT3, LS_LT2, LS_LT1, LS_LT0, ______, ______, LS_RT0, LS_RT1, LS_RT2, LS_RT3, LS_RT4,
+ LS_LM4, LS_LM3, LS_LM2, LS_LM1, LS_LM0, ______, ______, LS_RM0, LS_RM1, LS_RM2, LS_RM3, LS_RM4,
+ LS_LB4, LS_LB3, LS_LB2, LS_LB1, LS_LB0, LS_LBA, LS_RBA, LS_RB0, LS_RB1, LS_RB2, LS_RB3, LS_RB4,
+ ______, ______, LS_LH2, LS_LH1, LS_LH3, LS_LH0, LS_RH0, LS_RH3, LS_RH1, LS_RH2, ______, ______),
+
+ [L_FUN] = LAYOUT(
+ LF_LT4, LF_LT3, LF_LT2, LF_LT1, LF_LT0, ______, ______, LF_RT0, LF_RT1, LF_RT2, LF_RT3, LF_RT4,
+ LF_LM4, LF_LM3, LF_LM2, LF_LM1, LF_LM0, ______, ______, LF_RM0, LF_RM1, LF_RM2, LF_RM3, LF_RM4,
+ LF_LB4, LF_LB3, LF_LB2, LF_LB1, LF_LB0, LF_LBA, LF_RBA, LF_RB0, LF_RB1, LF_RB2, LF_RB3, LF_RB4,
+ ______, ______, LF_LH2, LF_LH1, LF_LH3, LF_LH0, LF_RH0, LF_RH3, LF_RH1, LF_RH2, ______, ______),
+
+ [L_NUM] = LAYOUT(
+ LN_LT4, LN_LT3, LN_LT2, LN_LT1, LN_LT0, ______, ______, LN_RT0, LN_RT1, LN_RT2, LN_RT3, LN_RT4,
+ LN_LM4, LN_LM3, LN_LM2, LN_LM1, LN_LM0, ______, ______, LN_RM0, LN_RM1, LN_RM2, LN_RM3, LN_RM4,
+ LN_LB4, LN_LB3, LN_LB2, LN_LB1, LN_LB0, LN_LBA, LN_RBA, LN_RB0, LN_RB1, LN_RB2, LN_RB3, LN_RB4,
+ ______, ______, LN_LH2, LN_LH1, LN_LH3, LN_LH0, LN_RH0, LN_RH1, LN_RH2, LN_RH3, ______, ______),
+
+ [L_NAV] = LAYOUT(
+ LV_LT4, LV_LT3, LV_LT2, LV_LT1, LV_LT0, ______, ______, LV_RT0, LV_RT1, LV_RT2, LV_RT3, LV_RT4,
+ LV_LM4, LV_LM3, LV_LM2, LV_LM1, LV_LM0, ______, ______, LV_RM0, LV_RM1, LV_RM2, LV_RM3, LV_RM4,
+ LV_LB4, LV_LB3, LV_LB2, LV_LB1, LV_LB0, LV_LBA, LV_RBA, LV_RB0, LV_RB1, LV_RB2, LV_RB3, LV_RB4,
+ ______, ______, LV_LH2, LV_LH1, LV_LH3, LV_LH0, LV_RH0, LV_RH3, LV_RH1, LV_RH2, ______, ______),
- QK_BOOT, AG_NORM, CG_NORM, KC_VOLD, KC_BRID, AG_NORM, CG_NORM, _no_, KC_MRWD, KC_MPLY, KC_MFFD, SK_ZOOMIN,
+ [L_CFG] = LAYOUT(
+ LC_LT4, LC_LT3, LC_LT2, LC_LT1, LC_LT0, ______, RGB_TOG, LC_RT0, LC_RT1, LC_RT2, LC_RT3, LC_RT4,
+ LC_LM4, LC_LM3, LC_LM2, LC_LM1, LC_LM0, ______, ______, LC_RM0, LC_RM1, LC_RM2, LC_RM3, LC_RM4,
+ LC_LB4, LC_LB3, LC_LB2, LC_LB1, LC_LB0, LC_LBA, LC_RBA, LC_RB0, LC_RB1, LC_RB2, LC_RB3, LC_RB4,
+ ______, ______, LC_LH3, LC_LH2, LC_LH1, LC_LH0, LC_RH0, LC_RH1, LC_RH2, LC_RH3, ______, ______)
- ____, ____, ____, ____, TG(L_NUMPAD), ____, ____, ____, ____, ____, ____, ____)
};
diff --git a/mykeyboards/rollow/rollow_hd_keymap.c b/mykeyboards/rollow/rollow_hd_keymap.c
index a4d44df..30ffbd6 100644
--- a/mykeyboards/rollow/rollow_hd_keymap.c
+++ b/mykeyboards/rollow/rollow_hd_keymap.c
@@ -7,57 +7,63 @@
#define ____ KC_TRNS
#define _no_ KC_NO
-// Alpha Layer for a 34 key formfactor
+// Alpha Layer for a 36 key (3x5+3) formfactor
// ╭─────────────────────╮ ╭─────────────────────╮
// │ LT4 LT3 LT2 LT1 LT0 │ │ RT0 RT1 RT2 RT3 RT4 │
// │ LM4 LM3 LM2 LM1 LM0 | | RT0 RM1 RM2 RM3 RM4 │
// │ LB4 LB3 LB2 LB1 LB0 │ │ RB0 RB1 RB2 RB3 RB4 │
-// ╰───────────╮ LH2 LH1 │ │ RH1 RH2 ╭──────────╯
-// ╰─────────╯ ╰──────────╯
+// ╰───────╮ LH3 LH2 LH1 │ │ RH1 RH2 RH3 ╭───────╯
+// ╰─────────────╯ ╰─────────────╯
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [L_QWERTY] = LAYOUT_split_3x5_3( // Actually MITHRIL
- KC_W, KC_P, KC_G, KC_D, KC_J, KC_HASH, KC_DOT, KC_SLSH, KC_X, KC_QUOT,
- RCTL_T(KC_C), RALT_T(KC_N), RGUI_T(KC_S), RSFT_T(KC_T), LT(L_NUMPAD,KC_K), LT(L_FN_NUM,KC_COMM), RSFT_T(KC_I), RGUI_T(KC_E), RALT_T(KC_L), RCTL_T(KC_A),
- KC_Y, KC_B, KC_F, KC_M, KC_V, KC_MINS, KC_U, KC_O, KC_H, KC_DQUO,
- LT(L_MEDIA_KBD,KC_MUTE), HD_LH2, HD_LH1, HD_RH1, HD_RH2, LT(L_MEDIA_KBD,KC_MPLY)),
/*
[L_QWERTY] = LAYOUT_split_3x5_3(
- KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
- RCTL_T(KC_A), RALT_T(KC_S), RGUI_T(KC_D), RSFT_T(KC_F), LT(L_NUMPAD,KC_G), LT(L_FN_NUM,KC_H), RSFT_T(KC_J), RGUI_T(KC_K), RALT_T(KC_L), RCTL_T(KC_SCLN),
- KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
- LT(L_MEDIA_KBD,KC_MUTE), LT(L_FN_NUM,KC_BSPC), LT(L_NAV,KC_DEL), LT(L_PUNCT,KC_SPC), LT(L_NAV,KC_ENT), LT(L_MEDIA_KBD,KC_MPLY)),
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ RCTL_T(KC_A), RALT_T(KC_S), RGUI_T(KC_D), RSFT_T(KC_F), LT(L_NUM,KC_G), LT(L_NUM,KC_H), RSFT_T(KC_J), RGUI_T(KC_K), RALT_T(KC_L), RCTL_T(KC_SCLN),
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ LT(L_CFG,KC_MUTE), LT(L_FUN,KC_BSPC), LT(L_NAV,KC_DEL), LT(L_SYM,KC_SPC), LT(L_NAV,KC_ENT), LT(L_CFG,KC_MPLY)),
*/
- [L_HDALPHA] = LAYOUT_split_3x5_3(
- HD_LT4, HD_LT3, HD_LT2, HD_LT1, HD_LT0, HD_RT0, HD_RT1, HD_RT2, HD_RT3, HD_RT4,
- HD_LM4, HD_LM3, HD_LM2, HD_LM1, HD_LM0, HD_RM0, HD_RM1, HD_RM2, HD_RM3, HD_RM4,
- HD_LB4, HD_LB3, HD_LB2, HD_LB1, HD_LB0, HD_RB0, HD_RB1, HD_RB2, HD_RB3, HD_RB4,
- LT(L_MEDIA_KBD,KC_MUTE), HD_LH2, HD_LH1, HD_RH1, HD_RH2, LT(L_MEDIA_KBD,KC_MPLY)),
- [L_PUNCT] = LAYOUT_split_3x5_3(
- KC_Z, KC_Q, RALT(KC_5), LALT(KC_7), LSA(KC_7), LALT(KC_4), KC_DLR, A(S(KC_2)), RALT(KC_3), LALT(KC_Y),
- KC_LT, KC_LBRC, KC_LPRN, KC_LCBR, RSA(KC_5), RALT(KC_1), RSFT_T(KC_PAST), RGUI_T(KC_PEQL), RALT_T(KC_PPLS), RCTL_T(KC_PSLS),
- KC_GT, KC_RBRC, KC_RPRN, KC_RCBR, LALT(KC_8), KC_UNDS, KC_PIPE, KC_AMPR, KC_CIRC, KC_PERC,
- ____, SK_DELWDL, SK_DELWDR, ____, LSA(KC_8), ____),
- [L_FN_NUM] = LAYOUT_split_3x5_3(
- KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_SLSH, KC_7, KC_8, KC_9, KC_MINS,
- LCTL_T(KC_F5), LALT_T(KC_F6), LGUI_T(KC_F7), LSFT_T(KC_F8), KC_F14, KC_COMM, RSFT_T(KC_1), RGUI_T(KC_2), RALT_T(KC_3), RCTL_T(KC_PPLS),
- KC_F1, KC_F2, KC_F3, KC_F4, KC_INS, KC_COMM, KC_4, KC_5, KC_6, KC_EQL,
- ____, KC_SCLN, TG(L_NUMPAD), KC_0, KC_DOT, ____),
- [L_NUMPAD] = LAYOUT_split_3x5_3(
- KC_ESC, KC_HOME, KC_UP, KC_PGUP, LT(L_MEDIA_KBD, KC_NUM), KC_PSLS, KC_P7, KC_P8, KC_P9, KC_PMNS,
- SK_WORDPRV, KC_LEFT, KC_DOWN, KC_RGHT, SK_WORDNXT, KC_PAST, RSFT_T(KC_P4), RGUI_T(KC_P5), RALT_T(KC_P6),RCTL_T(KC_PPLS),
- KC_DEL, KC_END, KC_TAB, KC_PGDN, KC_SPC, KC_PCMM, KC_P1, KC_P2, KC_P3, KC_PEQL,
- TG(L_NUMPAD), LT(L_FN_NUM,KC_BSPC), LT(L_NAV,KC_PENT), LT(L_PUNCT,KC_P0), LT(L_NAV,KC_PDOT), ____),
- [L_NAV] = LAYOUT_split_3x5_3(
- SK_QUIT, SK_CLOZ, SK_SCAP, SK_SCLP, SK_FAGN, SK_DOCBEG, KC_HOME, KC_UP, KC_PGUP, SK_PARAPRV,
- KC_LCTL, KC_LALT, KC_LGUI, KC_LSFT, SK_FIND, SK_WORDPRV, KC_LEFT, KC_DOWN, KC_RGHT, SK_WORDNXT,
- SK_UNDO, SK_CUT, SK_COPY, SK_PSTE, SK_PSTM, SK_DOCEND, KC_END, KC_DOWN, KC_PGDN, SK_PARANXT,
- SK_ZOOMRST, S(KC_APP), KC_APP, SK_HISTPRV, SK_HISTNXT, SK_ZOOMRST),
- [L_MEDIA_KBD] = LAYOUT_split_3x5_3(
- QK_RBT, AG_SWAP, CG_SWAP, EE_CLR, LCA(KC_DEL), SK_KILL, KC_NUM, KC_EJCT, _no_, SK_ZOOMRST,
- HD_AdaptKeyToggle, HD_L_QWERTY, HD_L_ALPHA, KC_VOLU, KC_BRIU, _no_, KC_MPRV, KC_MUTE, KC_MNXT, SK_ZOOMOUT,
- QK_BOOT, AG_NORM, CG_NORM, KC_VOLD, KC_BRID, _no_, KC_MRWD, KC_MPLY, KC_MFFD, SK_ZOOMIN,
- _no_, _no_, TG(L_NUMPAD), _no_, _no_, _no_)
+ [L_QWERTY] = LAYOUT_split_3x5_3( // Actually MITHRIL
+ KC_W, KC_P, KC_G, KC_D, KC_J, KC_HASH, KC_DOT, KC_SLSH, KC_X, KC_QUOT,
+ RCTL_T(KC_C), RALT_T(KC_N), RGUI_T(KC_S), RSFT_T(KC_T), LT(L_NUM,KC_K), LT(L_NUM,KC_COMM), RSFT_T(KC_I), RGUI_T(KC_E), RALT_T(KC_L), RCTL_T(KC_A),
+ KC_Y, KC_B, KC_F, KC_M, KC_V, KC_MINS, KC_U, KC_O, KC_H, KC_DQUO,
+ LT(L_CFG,KC_MUTE), HD_LH2, HD_LH1, HD_RH1, HD_RH2, LT(L_CFG,KC_MPLY)),
+
+ [L_HD] = LAYOUT_split_3x5_3(
+ HD_LT4, HD_LT3, HD_LT2, HD_LT1, HD_LT0, HD_RT0, HD_RT1, HD_RT2, HD_RT3, HD_RT4,
+ HD_LM4, HD_LM3, HD_LM2, HD_LM1, HD_LM0, HD_RM0, HD_RM1, HD_RM2, HD_RM3, HD_RM4,
+ HD_LB4, HD_LB3, HD_LB2, HD_LB1, HD_LB0, HD_RB0, HD_RB1, HD_RB2, HD_RB3, HD_RB4,
+ HD_LH3, HD_LH2, HD_LH1, HD_RH1, HD_RH2, HD_RH3),
+
+ [L_SYM] = LAYOUT_split_3x5_3(
+ LS_LT4, LS_LT3, LS_LT2, LS_LT1, LS_LT0, LS_RT0, LS_RT1, LS_RT2, LS_RT3, LS_RT4,
+ LS_LM4, LS_LM3, LS_LM2, LS_LM1, LS_LM0, LS_RM0, LS_RM1, LS_RM2, LS_RM3, LS_RM4,
+ LS_LB4, LS_LB3, LS_LB2, LS_LB1, LS_LB0, LS_RB0, LS_RB1, LS_RB2, LS_RB3, LS_RB4,
+ LS_LH3, LS_LH2, LS_LH1, LS_RH1, LS_RH2, LS_RH3),
+
+ [L_FUN] = LAYOUT_split_3x5_3(
+ LF_LT4, LF_LT3, LF_LT2, LF_LT1, LF_LT0, LF_RT0, LF_RT1, LF_RT2, LF_RT3, LF_RT4,
+ LF_LM4, LF_LM3, LF_LM2, LF_LM1, LF_LM0, LF_RM0, LF_RM1, LF_RM2, LF_RM3, LF_RM4,
+ LF_LB4, LF_LB3, LF_LB2, LF_LB1, LF_LB0, LF_RB0, LF_RB1, LF_RB2, LF_RB3, LF_RB4,
+ LF_LH3, LF_LH2, LF_LH1, LF_RH1, LF_RH2, LF_RH3),
+
+ [L_NUM] = LAYOUT_split_3x5_3(
+ LN_LT4, LN_LT3, LN_LT2, LN_LT1, LN_LT0, LN_RT0, LN_RT1, LN_RT2, LN_RT3, LN_RT4,
+ LN_LM4, LN_LM3, LN_LM2, LN_LM1, LN_LM0, LN_RM0, LN_RM1, LN_RM2, LN_RM3, LN_RM4,
+ LN_LB4, LN_LB3, LN_LB2, LN_LB1, LN_LB0, LN_RB0, LN_RB1, LN_RB2, LN_RB3, LN_RB4,
+ LN_LH3, LN_LH2, LN_LH1, LN_RH1, LN_RH2, LN_RH3),
+
+ [L_NAV] = LAYOUT_split_3x5_3(
+ LV_LT4, LV_LT3, LV_LT2, LV_LT1, LV_LT0, LV_RT0, LV_RT1, LV_RT2, LV_RT3, LV_RT4,
+ LV_LM4, LV_LM3, LV_LM2, LV_LM1, LV_LM0, LV_RM0, LV_RM1, LV_RM2, LV_RM3, LV_RM4,
+ LV_LB4, LV_LB3, LV_LB2, LV_LB1, LV_LB0, LV_RB0, LV_RB1, LV_RB2, LV_RB3, LV_RB4,
+ LV_LH3, LV_LH2, LV_LH1, LV_RH1, LV_RH2, LV_RH3),
+
+ [L_CFG] = LAYOUT_split_3x5_3(
+ LC_LT4, LC_LT3, LC_LT2, LC_LT1, LC_LT0, LC_RT0, LC_RT1, LC_RT2, LC_RT3, LC_RT4,
+ LC_LM4, LC_LM3, LC_LM2, LC_LM1, LC_LM0, LC_RM0, LC_RM1, LC_RM2, LC_RM3, LC_RM4,
+ LC_LB4, LC_LB3, LC_LB2, LC_LB1, LC_LB0, LC_RB0, LC_RB1, LC_RB2, LC_RB3, LC_RB4,
+ LC_LH3, LC_LH2, LC_LH1, LC_RH1, LC_RH2, LC_RH3),
+
};
diff --git a/naked48/config.h b/naked48/config.h
new file mode 100644
index 0000000..0288669
--- /dev/null
+++ b/naked48/config.h
@@ -0,0 +1,19 @@
+
+/* Copyright 2018 Salicylic_acid3
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
diff --git a/naked48/naked48_hd_keymap.c b/naked48/naked48_hd_keymap.c
new file mode 100644
index 0000000..10ad1b5
--- /dev/null
+++ b/naked48/naked48_hd_keymap.c
@@ -0,0 +1,111 @@
+#include QMK_KEYBOARD_H
+
+#ifdef COMBO_ENABLE
+#include HD_combo_def // this has the combo definitions
+#endif
+
+#define ______ KC_TRNS
+#define __no__ KC_NO
+
+/* Salicylic Acid's Naked 48 is logically a Planck 12x4 layout
+ * ,-----------------------------------------------. ,-----------------------------------------------.
+ * | LT4 | LT3 | LT2 | LT1 | LT0 | mute | | play | RT0 | RT1 | RT2 | RT3 | RT4 |
+ * |-------+-------+-------+-------+-------+-------+ +-------+-------+-------+-------+-------+-------|
+ * | LM4 | LM3 | LM2 | LM1 | LM0 | mute | | play | RM0 | RM1 | RM2 | RM3 | RM4 |
+ * |-------+-------+-------+-------+-------+-------+ +-------+-------+-------+-------+-------+-------|
+ * | LB4 | LB3 | LB2 | LB1 | LB0 | LBA | | RBA | RB0 | RB1 | RB2 | RB3 | RB4 |
+ * `-------+-------+-------+-------+-------+-------+------+-------+-------+-------+-------+-------+-------+-------'
+ * | Left | Right | LH2 | LH1 | LH0 | LHA | RHA | RH0 | RH1 | RH2 | Up | Down |
+ * `----------------------------------------------------------------------------------------------'
+ */
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/*[L_QWERTY] = LAYOUT(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, LT(L_CFG,KC_MUTE), LT(L_CFG,KC_MPLY), KC_Y, KC_U, KC_I, KC_O, KC_P,
+ RCTL_T(KC_A), RALT_T(KC_S), RGUI_T(KC_D), RSFT_T(KC_F), LT(L_NUM,KC_G), LT(L_NUM,KC_TAB), KC_QUOT, LT(L_FUN,KC_H), RSFT_T(KC_J), RGUI_T(KC_K), RALT_T(KC_L), RCTL_T(KC_SCLN),
+ KC_Z, KC_X, KC_C, KC_V, KC_B, TT(L_NUM), TT(L_NAV), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ KC_LEFT, KC_RGHT, LT(L_FUN,KC_BSPC), LT(L_NAV,KC_DEL), KC_APP, LT(L_FUN,SK_MHEN), LT(L_FUN,SK_HENK), LT(L_NUM,KC_TAB), LT(L_PUNCT,KC_SPC), LT(L_NAV,KC_ENT), KC_UP, KC_DOWN),
+[L_HDALPHA] = LAYOUT(
+ HD_LT4, HD_LT3, HD_LT2, HD_LT1, HD_LT0, KC_MUTE, KC_MPLY, HD_RT0, HD_RT1, HD_RT2, HD_RT3, HD_RT4,
+ HD_LM4, HD_LM3, HD_LM2, HD_LM1, HD_LM0, TT(L_NUM), TT(L_NAV), HD_RM0, HD_RM1, HD_RM2, HD_RM3, HD_RM4,
+ HD_LB4, HD_LB3, HD_LB2, HD_LB1, HD_LB0, KC_LBRC, KC_RBRC, HD_RB0, HD_RB1, HD_RB2, HD_RB3, HD_RB4,
+ ______, ______, HD_LH2, HD_LH1, LT(L_CFG,KC_LPRN), KC_APP, MO(L_CFG), LT(L_CFG,KC_RPRN), HD_RH1, HD_RH2, ______, ______),
+
+[L_SYM] = LAYOUT(
+ KC_Z, KC_Q, RALT(KC_5), LALT(KC_7), LSA(KC_7), KC_ESC, ______, LALT(KC_4), KC_DLR, A(S(KC_2)), RALT(KC_3), LALT_T(KC_Y),
+ KC_LT, KC_LBRC, KC_LPRN, KC_LCBR, RSA(KC_5), ______, ______, RALT(KC_1), RSFT_T(KC_PAST), RGUI_T(KC_PEQL), RALT_T(KC_PPLS), RALT_T(KC_R),
+ KC_GT, KC_RBRC, KC_RPRN, KC_RCBR, LALT(KC_8), ______, ______, KC_UNDS, KC_PIPE, KC_AMPR, KC_CIRC, KC_PERC,
+ ______, ______, SK_DELWDL, SK_DELWDR, ______, ______, ______, ______, LSA(KC_8), LSA(KC_9), LALT(KC_9), ______),
+
+[L_FUN] = LAYOUT(
+ KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_F16, ______, KC_SLSH, KC_7, KC_8, KC_9, KC_BSLS,
+ LCTL_T(KC_F5), LALT_T(KC_F6), LGUI_T(KC_F7), LSFT_T(KC_F8), KC_F14, KC_F17, TG(L_NAV), KC_COMM, RSFT_T(KC_1), RGUI_T(KC_2), RALT_T(KC_3), RCTL_T(KC_SLSH),
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F15, KC_F18, KC_TAB, KC_MINS, KC_4, KC_5, KC_6, KC_EQL,
+ KC_PSCR, KC_SCRL, KC_BSPC, KC_ENT, ______, KC_PAUS, KC_INS, ______, KC_0, KC_DOT, KC_SCLN, KC_PENT),
+
+[L_NUM] = LAYOUT(
+ LALT(KC_RBRC), SK_QUIT, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_NUM, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_PMNS,
+ LSA(KC_3), LALT_T(KC_TAB), KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, ______, KC_PAST, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ LSA(KC_4), SK_UNDO, SK_CUT, SK_COPY, SK_PSTE, KC_ENT, TG(L_NUM), KC_PCMM, KC_P1, KC_P2, KC_P3, KC_PEQL,
+ ______, ______, ______, KC_BSPC, KC_ENT, ______, ______, KC_P0, KC_PDOT, KC_C, ______, ______),
+
+[L_NAV] = LAYOUT(
+ SK_QUIT, SK_CLOZ, SK_SCAP, SK_SCLP, SK_FAGN, ______, ______, SK_DOCBEG, KC_HOME, KC_UP, KC_PGUP, SK_PARAPRV,
+ KC_LCTL, KC_LALT, KC_LGUI, KC_LSFT, SK_FIND, ______, TG(L_NAV), SK_WORDPRV, KC_LEFT, KC_DOWN, KC_RGHT, SK_WORDNXT,
+ SK_UNDO, SK_CUT, SK_COPY, SK_PSTE, SK_PSTM, TG(L_NAV), ______, SK_DOCEND, KC_END, KC_DOWN, KC_LALT, SK_PARANXT,
+ ______, ______, SK_DELWDL, SK_DELWDR, ______, ______, SK_ZOOMRST, SK_HISTPRV, SK_HISTNXT, ______, SK_ZOOMOUT, SK_ZOOMIN),
+
+
+[L_CFG] = LAYOUT(
+ QK_RBT, AG_SWAP, CG_SWAP, EE_CLR, LCA(KC_DEL), ______, RGB_TOG, SK_KILL, KC_NUM, KC_EJCT, __no__, SK_ZOOMRST,
+ HD_AdaptKeyToggle, HD_L_QWERTY, HD_L_ALPHA, KC_VOLU, KC_BRIU, ______, ______, __no__, KC_MPRV, KC_MUTE, KC_MNXT, SK_ZOOMOUT,
+
+ QK_BOOT, AG_NORM, CG_NORM, KC_VOLD, KC_BRID, AG_NORM, CG_NORM, __no__, KC_MRWD, KC_MPLY, KC_MFFD, SK_ZOOMIN,
+
+ ______, ______, ______, ______, TG(L_NUM), ______, ______, ______, ______, ______, ______, ______)
+};
+*/
+
+ [L_QWERTY] = LAYOUT(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, LT(L_CFG,KC_MUTE), LT(L_CFG,KC_MPLY), KC_Y, KC_U, KC_I, KC_O, KC_P,
+ RCTL_T(KC_A), RALT_T(KC_S), RGUI_T(KC_D), RSFT_T(KC_F), LT(L_NUM,KC_G), LT(L_NUM,KC_TAB), KC_QUOT, LT(L_FUN,KC_H), RSFT_T(KC_J), RGUI_T(KC_K), RALT_T(KC_L), RCTL_T(KC_SCLN),
+ KC_Z, KC_X, KC_C, KC_V, KC_B, TT(L_NUM), TT(L_NAV), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ KC_LEFT, KC_RGHT, LT(L_FUN,KC_BSPC), LT(L_NAV,KC_DEL), KC_APP, LT(L_FUN,SK_MHEN), LT(L_FUN,SK_HENK), LT(L_NUM,KC_TAB), LT(L_SYM,KC_SPC), LT(L_NAV,KC_ENT), KC_UP, KC_DOWN),
+
+ [L_HD] = LAYOUT(
+ HD_LT4, HD_LT3, HD_LT2, HD_LT1, HD_LT0, KC_MUTE, KC_MPLY, HD_RT0, HD_RT1, HD_RT2, HD_RT3, HD_RT4,
+ HD_LM4, HD_LM3, HD_LM2, HD_LM1, HD_LM0, LT(L_NUM,KC_TAB), KC_QUOT, HD_RM0, HD_RM1, HD_RM2, HD_RM3, HD_RM4,
+ HD_LB4, HD_LB3, HD_LB2, HD_LB1, HD_LB0, HD_LBA, HD_RBA, HD_RB0, HD_RB1, HD_RB2, HD_RB3, HD_RB4,
+ KC_LEFT, KC_RGHT, HD_LH2, HD_LH1, HD_LH3, HD_LH0, HD_RH0, HD_RH3, HD_RH1, HD_RH2, KC_UP, KC_DOWN),
+
+ [L_SYM] = LAYOUT(
+ LS_LT4, LS_LT3, LS_LT2, LS_LT1, LS_LT0, ______, ______, LS_RT0, LS_RT1, LS_RT2, LS_RT3, LS_RT4,
+ LS_LM4, LS_LM3, LS_LM2, LS_LM1, LS_LM0, ______, ______, LS_RM0, LS_RM1, LS_RM2, LS_RM3, LS_RM4,
+ LS_LB4, LS_LB3, LS_LB2, LS_LB1, LS_LB0, LS_LBA, LS_RBA, LS_RB0, LS_RB1, LS_RB2, LS_RB3, LS_RB4,
+ ______, ______, LS_LH2, LS_LH1, LS_LH3, LS_LH0, LS_RH0, LS_RH3, LS_RH1, LS_RH2, ______, ______),
+
+ [L_FUN] = LAYOUT(
+ LF_LT4, LF_LT3, LF_LT2, LF_LT1, LF_LT0, ______, ______, LF_RT0, LF_RT1, LF_RT2, LF_RT3, LF_RT4,
+ LF_LM4, LF_LM3, LF_LM2, LF_LM1, LF_LM0, ______, ______, LF_RM0, LF_RM1, LF_RM2, LF_RM3, LF_RM4,
+ LF_LB4, LF_LB3, LF_LB2, LF_LB1, LF_LB0, LF_LBA, LF_RBA, LF_RB0, LF_RB1, LF_RB2, LF_RB3, LF_RB4,
+ ______, ______, LF_LH2, LF_LH1, LF_LH3, LF_LH0, LF_RH0, LF_RH3, LF_RH1, LF_RH2, ______, ______),
+
+ [L_NUM] = LAYOUT(
+ LN_LT4, LN_LT3, LN_LT2, LN_LT1, LN_LT0, ______, ______, LN_RT0, LN_RT1, LN_RT2, LN_RT3, LN_RT4,
+ LN_LM4, LN_LM3, LN_LM2, LN_LM1, LN_LM0, ______, ______, LN_RM0, LN_RM1, LN_RM2, LN_RM3, LN_RM4,
+ LN_LB4, LN_LB3, LN_LB2, LN_LB1, LN_LB0, LN_LBA, LN_RBA, LN_RB0, LN_RB1, LN_RB2, LN_RB3, LN_RB4,
+ ______, ______, LN_LH2, LN_LH1, LN_LH3, LN_LH0, LN_RH0, LN_RH1, LN_RH2, LN_RH3, ______, ______),
+
+ [L_NAV] = LAYOUT(
+ LV_LT4, LV_LT3, LV_LT2, LV_LT1, LV_LT0, ______, ______, LV_RT0, LV_RT1, LV_RT2, LV_RT3, LV_RT4,
+ LV_LM4, LV_LM3, LV_LM2, LV_LM1, LV_LM0, ______, ______, LV_RM0, LV_RM1, LV_RM2, LV_RM3, LV_RM4,
+ LV_LB4, LV_LB3, LV_LB2, LV_LB1, LV_LB0, LV_LBA, LV_RBA, LV_RB0, LV_RB1, LV_RB2, LV_RB3, LV_RB4,
+ ______, ______, LV_LH2, LV_LH1, LV_LH3, LV_LH0, LV_RH0, LV_RH3, LV_RH1, LV_RH2, ______, ______),
+
+ [L_CFG] = LAYOUT(
+ LC_LT4, LC_LT3, LC_LT2, LC_LT1, LC_LT0, ______, RGB_TOG, LC_RT0, LC_RT1, LC_RT2, LC_RT3, LC_RT4,
+ LC_LM4, LC_LM3, LC_LM2, LC_LM1, LC_LM0, ______, ______, LC_RM0, LC_RM1, LC_RM2, LC_RM3, LC_RM4,
+ LC_LB4, LC_LB3, LC_LB2, LC_LB1, LC_LB0, LC_LBA, LC_RBA, LC_RB0, LC_RB1, LC_RB2, LC_RB3, LC_RB4,
+ ______, ______, LC_LH3, LC_LH2, LC_LH1, LC_LH0, LC_RH0, LC_RH1, LC_RH2, LC_RH3, ______, ______)
+
+};
diff --git a/rollow/config.h b/rollow/config.h
new file mode 100644
index 0000000..98a4bcf
--- /dev/null
+++ b/rollow/config.h
@@ -0,0 +1,17 @@
+
+#pragma once
+
+// Rollow hardware specific bits
+//
+// Allows to use either side as the master. Look at the documentation for info:
+// https://docs.qmk.fm/#/config_options?id=setting-handedness
+#define EE_HANDS
+
+
+#ifdef ENCODER_ENABLE
+ #ifdef ENCODER_RESOLUTION
+ #undef ENCODER_RESOLUTION
+ #endif
+ #define ENCODER_DIRECTION_FLIP // old encoders/barrel encoders
+ #define ENCODER_RESOLUTION 4 // new encoders
+#endif
diff --git a/rollow/rollow_hd_keymap.c b/rollow/rollow_hd_keymap.c
new file mode 100644
index 0000000..30ffbd6
--- /dev/null
+++ b/rollow/rollow_hd_keymap.c
@@ -0,0 +1,69 @@
+#include QMK_KEYBOARD_H
+
+#ifdef COMBO_ENABLE
+#include HD_combo_def // this has the combo definitions
+#endif
+
+#define ____ KC_TRNS
+#define _no_ KC_NO
+
+// Alpha Layer for a 36 key (3x5+3) formfactor
+// ╭─────────────────────╮ ╭─────────────────────╮
+// │ LT4 LT3 LT2 LT1 LT0 │ │ RT0 RT1 RT2 RT3 RT4 │
+// │ LM4 LM3 LM2 LM1 LM0 | | RT0 RM1 RM2 RM3 RM4 │
+// │ LB4 LB3 LB2 LB1 LB0 │ │ RB0 RB1 RB2 RB3 RB4 │
+// ╰───────╮ LH3 LH2 LH1 │ │ RH1 RH2 RH3 ╭───────╯
+// ╰─────────────╯ ╰─────────────╯
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/*
+ [L_QWERTY] = LAYOUT_split_3x5_3(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ RCTL_T(KC_A), RALT_T(KC_S), RGUI_T(KC_D), RSFT_T(KC_F), LT(L_NUM,KC_G), LT(L_NUM,KC_H), RSFT_T(KC_J), RGUI_T(KC_K), RALT_T(KC_L), RCTL_T(KC_SCLN),
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ LT(L_CFG,KC_MUTE), LT(L_FUN,KC_BSPC), LT(L_NAV,KC_DEL), LT(L_SYM,KC_SPC), LT(L_NAV,KC_ENT), LT(L_CFG,KC_MPLY)),
+*/
+ [L_QWERTY] = LAYOUT_split_3x5_3( // Actually MITHRIL
+ KC_W, KC_P, KC_G, KC_D, KC_J, KC_HASH, KC_DOT, KC_SLSH, KC_X, KC_QUOT,
+ RCTL_T(KC_C), RALT_T(KC_N), RGUI_T(KC_S), RSFT_T(KC_T), LT(L_NUM,KC_K), LT(L_NUM,KC_COMM), RSFT_T(KC_I), RGUI_T(KC_E), RALT_T(KC_L), RCTL_T(KC_A),
+ KC_Y, KC_B, KC_F, KC_M, KC_V, KC_MINS, KC_U, KC_O, KC_H, KC_DQUO,
+ LT(L_CFG,KC_MUTE), HD_LH2, HD_LH1, HD_RH1, HD_RH2, LT(L_CFG,KC_MPLY)),
+
+ [L_HD] = LAYOUT_split_3x5_3(
+ HD_LT4, HD_LT3, HD_LT2, HD_LT1, HD_LT0, HD_RT0, HD_RT1, HD_RT2, HD_RT3, HD_RT4,
+ HD_LM4, HD_LM3, HD_LM2, HD_LM1, HD_LM0, HD_RM0, HD_RM1, HD_RM2, HD_RM3, HD_RM4,
+ HD_LB4, HD_LB3, HD_LB2, HD_LB1, HD_LB0, HD_RB0, HD_RB1, HD_RB2, HD_RB3, HD_RB4,
+ HD_LH3, HD_LH2, HD_LH1, HD_RH1, HD_RH2, HD_RH3),
+
+ [L_SYM] = LAYOUT_split_3x5_3(
+ LS_LT4, LS_LT3, LS_LT2, LS_LT1, LS_LT0, LS_RT0, LS_RT1, LS_RT2, LS_RT3, LS_RT4,
+ LS_LM4, LS_LM3, LS_LM2, LS_LM1, LS_LM0, LS_RM0, LS_RM1, LS_RM2, LS_RM3, LS_RM4,
+ LS_LB4, LS_LB3, LS_LB2, LS_LB1, LS_LB0, LS_RB0, LS_RB1, LS_RB2, LS_RB3, LS_RB4,
+ LS_LH3, LS_LH2, LS_LH1, LS_RH1, LS_RH2, LS_RH3),
+
+ [L_FUN] = LAYOUT_split_3x5_3(
+ LF_LT4, LF_LT3, LF_LT2, LF_LT1, LF_LT0, LF_RT0, LF_RT1, LF_RT2, LF_RT3, LF_RT4,
+ LF_LM4, LF_LM3, LF_LM2, LF_LM1, LF_LM0, LF_RM0, LF_RM1, LF_RM2, LF_RM3, LF_RM4,
+ LF_LB4, LF_LB3, LF_LB2, LF_LB1, LF_LB0, LF_RB0, LF_RB1, LF_RB2, LF_RB3, LF_RB4,
+ LF_LH3, LF_LH2, LF_LH1, LF_RH1, LF_RH2, LF_RH3),
+
+ [L_NUM] = LAYOUT_split_3x5_3(
+ LN_LT4, LN_LT3, LN_LT2, LN_LT1, LN_LT0, LN_RT0, LN_RT1, LN_RT2, LN_RT3, LN_RT4,
+ LN_LM4, LN_LM3, LN_LM2, LN_LM1, LN_LM0, LN_RM0, LN_RM1, LN_RM2, LN_RM3, LN_RM4,
+ LN_LB4, LN_LB3, LN_LB2, LN_LB1, LN_LB0, LN_RB0, LN_RB1, LN_RB2, LN_RB3, LN_RB4,
+ LN_LH3, LN_LH2, LN_LH1, LN_RH1, LN_RH2, LN_RH3),
+
+ [L_NAV] = LAYOUT_split_3x5_3(
+ LV_LT4, LV_LT3, LV_LT2, LV_LT1, LV_LT0, LV_RT0, LV_RT1, LV_RT2, LV_RT3, LV_RT4,
+ LV_LM4, LV_LM3, LV_LM2, LV_LM1, LV_LM0, LV_RM0, LV_RM1, LV_RM2, LV_RM3, LV_RM4,
+ LV_LB4, LV_LB3, LV_LB2, LV_LB1, LV_LB0, LV_RB0, LV_RB1, LV_RB2, LV_RB3, LV_RB4,
+ LV_LH3, LV_LH2, LV_LH1, LV_RH1, LV_RH2, LV_RH3),
+
+ [L_CFG] = LAYOUT_split_3x5_3(
+ LC_LT4, LC_LT3, LC_LT2, LC_LT1, LC_LT0, LC_RT0, LC_RT1, LC_RT2, LC_RT3, LC_RT4,
+ LC_LM4, LC_LM3, LC_LM2, LC_LM1, LC_LM0, LC_RM0, LC_RM1, LC_RM2, LC_RM3, LC_RM4,
+ LC_LB4, LC_LB3, LC_LB2, LC_LB1, LC_LB0, LC_RB0, LC_RB1, LC_RB2, LC_RB3, LC_RB4,
+ LC_LH3, LC_LH2, LC_LH1, LC_RH1, LC_RH2, LC_RH3),
+
+};
+