A new test of HRM

This commit is contained in:
Björn Struckmeier 2025-01-14 17:41:19 +01:00
commit 1580cf38f6
3 changed files with 48 additions and 28 deletions

View file

@ -11,7 +11,7 @@ First and last column keys on base layers for 6x3 keyboards,
``` ```
⌥/⌫│ │⌥/(X) ⌥/⌫│ │⌥/(X)
───┼─ ─┼───── ───┼─ ─┼─────
⌃/⎋│ (...other keys...) │⌃/(X) Σ/⎋│ (...other keys...) │Σ/(X)
───┼─ ─┼───── ───┼─ ─┼─────
⌘/▤│ │⌘/ ↵ ⌘/▤│ │⌘/ ↵
``` ```
@ -29,7 +29,7 @@ All base layers share the same thumb cluster:
q │ w │ e │ r │ t z │ u │ i │ o │ p │(ü) q │ w │ e │ r │ t z │ u │ i │ o │ p │(ü)
───┼───┼───┼───┼─── ───┼───┼───┼───┼─── ─── ───┼───┼───┼───┼─── ───┼───┼───┼───┼─── ───
a │ s │ d │ f │ g h │ j │ k │ l │ ö │(ä) a │ s │ d │ f │ g h │ j │ k │ l │ ö │(ä)
─Σ─┼───┼───┼───┼─── ───┼───┼───┼───┼─Σ─ ─── (Σ)┼─⌥─┼─⌘─┼─⌃─┼─── ───┼─⌃─┼─⌘─┼─⌥─┼(Σ) ───
y │ x │ c │ v │ b n │ m │ , │ . │ ß │ y │ x │ c │ v │ b n │ m │ , │ . │ ß │
─M─┴───┴───┴───┴─── ───┴───┴───┴───┴─M─ ─M─┴───┴───┴───┴─── ───┴───┴───┴───┴─M─
``` ```
@ -39,7 +39,7 @@ All base layers share the same thumb cluster:
j │ d │ u │ a │ x p │ h │ l │ m │ w │(ß) j │ d │ u │ a │ x p │ h │ l │ m │ w │(ß)
───┼───┼───┼───┼─── ───┼───┼───┼───┼─── ─── ───┼───┼───┼───┼─── ───┼───┼───┼───┼─── ───
c │ t │ i │ e │ o b │ n │ r │ s │ g │(q) c │ t │ i │ e │ o b │ n │ r │ s │ g │(q)
─Σ─┼───┼───┼───┼─── ───┼───┼───┼───┼─Σ─ ─── (Σ)┼─⌥─┼─⌘─┼─⌃─┼─── ───┼─⌃─┼─⌘─┼─⌥─┼(Σ) ───
f │ v │ ü │ ä │ ö y │ z │ , │ . │ k │ f │ v │ ü │ ä │ ö y │ z │ , │ . │ k │
─M─┴───┴───┴───┴─── ───┴───┴───┴───┴─M─ ─M─┴───┴───┴───┴─── ───┴───┴───┴───┴─M─
``` ```
@ -49,7 +49,7 @@ All base layers share the same thumb cluster:
q │ w │ f │ p │ b j │ l │ u │ y │ ö │(ü) q │ w │ f │ p │ b j │ l │ u │ y │ ö │(ü)
───┼───┼───┼───┼─── ───┼───┼───┼───┼─── ─── ───┼───┼───┼───┼─── ───┼───┼───┼───┼─── ───
a │ r │ s │ t │ g m │ n │ e │ i │ o │(ä) a │ r │ s │ t │ g m │ n │ e │ i │ o │(ä)
─Σ─┼───┼───┼───┼─── ───┼───┼───┼───┼─Σ─ ─── (Σ)┼─⌥─┼─⌘─┼─⌃─┼─── ───┼─⌃─┼─⌘─┼─⌥─┼(Σ) ───
z │ x │ c │ d │ v k │ h │ , │ . │ ß │ z │ x │ c │ d │ v k │ h │ , │ . │ ß │
─M─┴───┴───┴───┴─── ───┴───┴───┴───┴─M─ ─M─┴───┴───┴───┴─── ───┴───┴───┴───┴─M─
``` ```
@ -89,11 +89,11 @@ All base layers share the same thumb cluster:
## Raise (Navigation and control keys) ## Raise (Navigation and control keys)
(the home row modifiers on the right are sticky) (the home row modifiers on the right are sticky)
``` ```
(⌥)│PUp│BSp│ ↑ │Del│Ins Prv│Stp│Ply│AGr│Nxt│(⌥) (⌥)│Esc│BSp│ ↑ │Del│PUp Prv│Stp│Ply│AGr│Nxt│(⌥)
─── ───┼───┼───┼───┼─── ───┼───┼───┼───┼─── ─── ─── ───┼───┼───┼───┼─── ───┼───┼───┼───┼─── ───
(⌃)│Hme│ ← │ ↓ │ → │End * Meh│Sft│ ⌃ │ ⌥ │ ⌘ │(⌃) (⌃)│Hme│ ← │ ↓ │ → │End * Meh│Sft│ ⌃ │ ⌥ │ ⌘ │(⌃)
─── ───┼───┼───┼───┼─── ───┼───┼───┼───┼─── ─── ─── ───┼───┼───┼───┼─── ───┼───┼───┼───┼─── ───
(⌘)│Esc│Cut│Cpy│Pst│PDn PSc│CWT│Pse│Ejt│SLk│(⌘) (⌘)│Ins│Cut│Cpy│Pst│PDn PSc│CWT│Pse│Ejt│SLk│(⌘)
───┌───┬───┐ ┌───┬───┐─── ───┌───┬───┐ ┌───┬───┐───
Prv│V -│V ×│ │(v)│V +│Nxt Prv│V -│V ×│ │(v)│V +│Nxt
───└─⇧─┴ATT┘ └───┴─⇧─┘─── ───└─⇧─┴ATT┘ └───┴─⇧─┘───
@ -114,7 +114,7 @@ All base layers share the same thumb cluster:
## Attic (Adjustments and missing stuff) ## Attic (Adjustments and missing stuff)
``` ```
│QBt│ECl│LAs│LAr│APP ¡ │ │ « │ » │ (§) │QBt│ECl│LAs│LAr│APP ¡ │ │ « │ » │ QBt
─── ───┼───┼───┼───┼─── ───┼───┼───┼───┼─── ─── ─── ───┼───┼───┼───┼─── ───┼───┼───┼───┼─── ───
│LyG│Ly←│Ly→│BsL│MDX ¿ │ • │ │(…) │LyG│Ly←│Ly→│BsL│MDX ¿ │ • │ │(…)
─── ───┼───┼───┼───┼─── ───┼───┼───┼───┼─── ─── ─── ───┼───┼───┼───┼─── ───┼───┼───┼───┼─── ───
@ -122,4 +122,15 @@ All base layers share the same thumb cluster:
───┌───┬───┐ ┌───┬───┐─── ───┌───┬───┐ ┌───┬───┐───
LSf│Br-│(v)│ │(v)│Br+│RSf LSf│Br-│(v)│ │(v)│Br+│RSf
───└─⇧─┴───┘ └───┴─⇧─┘─── ───└─⇧─┴───┘ └───┴─⇧─┘───
``` ``
# Portfolio
Currently my board contains the following beauties:
1. Redox (03/2021) (ready assembled)
1. Kyria rev.2 (05/2021)
1. dracuLad w/ Pimorini (08/2022)
1. Iris rev.6 (08/2022)
1. Paintbrush (10/2022)
1. [never worked: Aurora sweep (wireless) (03/2023)]
1. Cantor (11/2023)
1. Corne (wireless) (01/2025)

View file

@ -30,9 +30,10 @@
# endif // DYNAMIC_TAPPING_TERM_ENABLE # endif // DYNAMIC_TAPPING_TERM_ENABLE
#else #else
// Tap-hold settings // Tap-hold settings
# define TAPPING_TERM 170 # define TAPPING_TERM 300
# define TAP_CODE_DELAY 20 # define QUICK_TAP_TERM 175
# define PERMISSIVE_HOLD # define PERMISSIVE_HOLD
# define TAP_CODE_DELAY 20
# define TAPPING_FORCE_HOLD # define TAPPING_FORCE_HOLD
# define ONESHOT_TAP_TOGGLE 3 # define ONESHOT_TAP_TOGGLE 3
#endif // TAP_DANCE_ENABLED #endif // TAP_DANCE_ENABLED

View file

@ -163,17 +163,19 @@ void symL_reset(tap_dance_state_t *state, void *user_data);
void symR_finished(tap_dance_state_t *state, void *user_data); void symR_finished(tap_dance_state_t *state, void *user_data);
void symR_reset(tap_dance_state_t *state, void *user_data); void symR_reset(tap_dance_state_t *state, void *user_data);
#endif // TAP_DANCE_ENABLE #endif // TAP_DANCE_ENABLE
#define HRML(k1, k2, k3) LALT_T(k1), LGUI_T(k2), LCTL_T(k3)
#define HRMR(k1, k2, k3) LCTL_T(k1), LGUI_T(k2), LALT_T(k3)
// /// // /* KEYMAPS */ // /// // // /// // /* KEYMAPS */ // /// //
/* first and last column base layer keys for 6x3 keyboards */ /* first and last column base layer keys for 6x3 keyboards */
// Base layers // Base layers
#define _BASE_L_1_ LALT_T(KC_BSPC) #define _BASE_L_1_ LALT_T(KC_BSPC)
#define _BASE_L_2_ LCTL_T(KC_ESC) #define _BASE_L_2_ SY_L(KC_ESC)
#define _BASE_L_3_ LGUI_T(KC_APP) #define _BASE_L_3_ LGUI_T(KC_APP)
// R1 and R2 depend on layout // R1 and R2 depend on layout
#define _BASE_R_1_(kc) LALT_T(kc) #define _BASE_R_1_(kc) LALT_T(kc)
#define _BASE_R_2_(kc) RCTL_T(kc) #define _BASE_R_2_(kc) SY_R(kc)
#define _BASE_R_3_(kc) RGUI_T(kc) #define _BASE_R_3_(kc) RGUI_T(kc)
// Additional layers // Additional layers
#define _ADD_L_1_ KC_LALT #define _ADD_L_1_ KC_LALT
@ -195,18 +197,20 @@ void symR_reset(tap_dance_state_t *state, void *user_data);
#ifdef QWERTY_ENABLE #ifdef QWERTY_ENABLE
/* QWERTY layout */ /* QWERTY layout */
# define __HRM__QL2_4_ HRML(DE_S, DE_D, DE_F), DE_G
# define _HRM_QR2_4_ DE_H, HRMR(DE_J, DE_K, DE_L)
# define _QL1_5_ DE_Q, DE_W, DE_E, DE_R, DE_T # define _QL1_5_ DE_Q, DE_W, DE_E, DE_R, DE_T
# define _QL2_5_ SY_L(DE_A), DE_S, DE_D, DE_F, DE_G # define _QL2_5_ SY_L(DE_A), __HRM__QL2_4_
# define _QL3_5_ MS(DE_Y), DE_X, DE_C, DE_V, DE_B # define _QL3_5_ MS(DE_Y), DE_X, DE_C, DE_V, DE_B
# define _QR1_5_ DE_Z, DE_U, DE_I, DE_O, DE_P # define _QR1_5_ DE_Z, DE_U, DE_I, DE_O, DE_P
# define _QR2_5_ DE_H, DE_J, DE_K, DE_L, SY_R(DE_ODIA) # define _QR2_5_ _HRM_QR2_4_, SY_R(DE_ODIA)
# define _QR3_5_ DE_N, DE_M, DE_COMM, DE_DOT, MS(DE_SS) # define _QR3_5_ DE_N, DE_M, DE_COMM, DE_DOT, MS(DE_SS)
// //
# define _QL1_6_ _BASE_L_1_, _QL1_5_ # define _QL1_6_ _BASE_L_1_, _QL1_5_
# define _QL2_6_ _BASE_L_2_, _QL2_5_ # define _QL2_6_ _BASE_L_2_, DE_A, __HRM__QL2_4_
# define _QL3_6_ _BASE_L_3_, _QL3_5_ # define _QL3_6_ _BASE_L_3_, _QL3_5_
# define _QR1_6_ _QR1_5_, _BASE_R_1_(DE_UDIA) # define _QR1_6_ _QR1_5_, _BASE_R_1_(DE_UDIA)
# define _QR2_6_ _QR2_5_, _BASE_R_2_(DE_ADIA) # define _QR2_6_ _HRM_QR2_4_, DE_ODIA, _BASE_R_2_(DE_ADIA)
# define _QR3_6_ _QR3_5_, _BASE_R_3_(KC_ENT) # define _QR3_6_ _QR3_5_, _BASE_R_3_(KC_ENT)
// //
# define _QWERTY_3x5_ _QL1_5_, _QR1_5_, _QL2_5_, _QR2_5_, _QL3_5_, _QR3_5_ # define _QWERTY_3x5_ _QL1_5_, _QR1_5_, _QL2_5_, _QR2_5_, _QL3_5_, _QR3_5_
@ -215,18 +219,20 @@ void symR_reset(tap_dance_state_t *state, void *user_data);
#ifdef BONE_ENABLE #ifdef BONE_ENABLE
/* BONE layout */ /* BONE layout */
# define __HRM__BL2_4_ HRML(DE_T, DE_I, DE_E), DE_O
# define __HRM__BR2_4_ DE_B, HRMR(DE_N, DE_R, DE_S)
# define _BL1_5_ DE_J, DE_D, DE_U, DE_A, DE_X # define _BL1_5_ DE_J, DE_D, DE_U, DE_A, DE_X
# define _BL2_5_ SY_L(DE_C), DE_T, DE_I, DE_E, DE_O # define _BL2_5_ SY_L(DE_C), __HRM__BL2_4_
# define _BL3_5_ MS(DE_F), DE_V, DE_UDIA, DE_ADIA, DE_ODIA # define _BL3_5_ MS(DE_F), DE_V, DE_UDIA, DE_ADIA, DE_ODIA
# define _BR1_5_ DE_P, DE_H, DE_L, DE_M, DE_W # define _BR1_5_ DE_P, DE_H, DE_L, DE_M, DE_W
# define _BR2_5_ DE_B, DE_N, DE_R, DE_S, SY_R(DE_G) # define _BR2_5_ __HRM__BR2_4_, SY_R(DE_G)
# define _BR3_5_ DE_Y, DE_Z, DE_COMM, DE_DOT, MS(DE_K) # define _BR3_5_ DE_Y, DE_Z, DE_COMM, DE_DOT, MS(DE_K)
// //
# define _BL1_6_ _BASE_L_1_, _BL1_5_ # define _BL1_6_ _BASE_L_1_, _BL1_5_
# define _BL2_6_ _BASE_L_2_, _BL2_5_ # define _BL2_6_ _BASE_L_2_, DE_C, __HRM__BL2_4_
# define _BL3_6_ _BASE_L_3_, _BL3_5_ # define _BL3_6_ _BASE_L_3_, _BL3_5_
# define _BR1_6_ _BR1_5_, _BASE_R_1_(DE_SS) # define _BR1_6_ _BR1_5_, _BASE_R_1_(DE_SS)
# define _BR2_6_ _BR2_5_, _BASE_R_2_(DE_Q) # define _BR2_6_ __HRM__BR2_4_, DE_G, _BASE_R_2_(DE_Q)
# define _BR3_6_ _BR3_5_, _BASE_R_3_(KC_ENT) # define _BR3_6_ _BR3_5_, _BASE_R_3_(KC_ENT)
// //
# define _BONE_3x5_ _BL1_5_, _BR1_5_, _BL2_5_, _BR2_5_, _BL3_5_, _BR3_5_ # define _BONE_3x5_ _BL1_5_, _BR1_5_, _BL2_5_, _BR2_5_, _BL3_5_, _BR3_5_
@ -235,18 +241,20 @@ void symR_reset(tap_dance_state_t *state, void *user_data);
#ifdef COLEMAK_DH_ENABLE #ifdef COLEMAK_DH_ENABLE
/* Colemak Mod-DH layout (german adaption) */ /* Colemak Mod-DH layout (german adaption) */
# define __HRM__CL2_4_ HRML(DE_R, DE_S, DE_T), DE_G
# define __HRM__CR2_4_ DE_M, HRMR(DE_N, DE_E, DE_I)
# define _CL1_5_ DE_Q, DE_W, DE_F, DE_P, DE_B # define _CL1_5_ DE_Q, DE_W, DE_F, DE_P, DE_B
# define _CL2_5_ SY_L(DE_A), DE_R, DE_S, DE_T, DE_G # define _CL2_5_ SY_L(DE_A), __HRM__CL2_4_
# define _CL3_5_ MS(DE_Z), DE_X, DE_C, DE_D, DE_V # define _CL3_5_ MS(DE_Z), DE_X, DE_C, DE_D, DE_V
# define _CR1_5_ DE_J, DE_L, DE_U, DE_Y, DE_ODIA # define _CR1_5_ DE_J, DE_L, DE_U, DE_Y, DE_ODIA
# define _CR2_5_ DE_M, DE_N, DE_E, DE_I, SY_R(DE_O) # define _CR2_5_ __HRM__CR2_4_, SY_R(DE_O)
# define _CR3_5_ DE_K, DE_H, DE_COMM, DE_DOT, MS(DE_SS) # define _CR3_5_ DE_K, DE_H, DE_COMM, DE_DOT, MS(DE_SS)
// //
# define _CL1_6_ _BASE_L_1_, _CL1_5_ # define _CL1_6_ _BASE_L_1_, _CL1_5_
# define _CL2_6_ _BASE_L_2_, _CL2_5_ # define _CL2_6_ _BASE_L_2_, DE_A, __HRM__CL2_4_
# define _CL3_6_ _BASE_L_3_, _CL3_5_ # define _CL3_6_ _BASE_L_3_, _CL3_5_
# define _CR1_6_ _BR1_5_, _BASE_R_1_(DE_SS) # define _CR1_6_ _BR1_5_, _BASE_R_1_(DE_SS)
# define _CR2_6_ _BR2_5_, _BASE_R_2_(DE_Q) # define _CR2_6_ __HRM__CR2_4_, DE_Q, SY_R(DE_O)
# define _CR3_6_ _BR3_5_, _BASE_R_3_(KC_ENT) # define _CR3_6_ _BR3_5_, _BASE_R_3_(KC_ENT)
// //
# define _COLEMAK_DH_3x5_ _CL1_5_, _CR1_5_, _CL2_5_, _CR2_5_, _CL3_5_, _CR3_5_ # define _COLEMAK_DH_3x5_ _CL1_5_, _CR1_5_, _CL2_5_, _CR2_5_, _CL3_5_, _CR3_5_
@ -319,8 +327,8 @@ void symR_reset(tap_dance_state_t *state, void *user_data);
# define _PL1_5_ KC_WH_D, KC_WH_L, KC_MS_U, KC_WH_R, XXXXXXX # define _PL1_5_ KC_WH_D, KC_WH_L, KC_MS_U, KC_WH_R, XXXXXXX
# define _PL2_5_ KC_BTN4, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN5 # define _PL2_5_ KC_BTN4, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN5
# define _PL3_5_ S_C_TAB, KC_CUT, KC_COPY, KC_PSTE, KC_WH_U # define _PL3_5_ S_C_TAB, KC_CUT, KC_COPY, KC_PSTE, KC_WH_U
# define _PR1_5_ XXXXXXX, XXXXXXX, MS_CSB1, OSM_AGR, XXXXXXX # define _PR1_5_ XXXXXXX, OSM_SFT, MS_CSB1, OSM_AGR, XXXXXXX
# define _PR2_5_ OSM_MEH, OSM_SFT, OSM_CTL, OSM_ALT, OSM_GUI # define _PR2_5_ OSM_MEH, OSM_CTL, OSM_GUI, OSM_ALT, XXXXXXX
# define _PR3_5_ XXXXXXX, KC_ACL0, KC_ACL1, KC_ACL2, C___TAB # define _PR3_5_ XXXXXXX, KC_ACL0, KC_ACL1, KC_ACL2, C___TAB
// //
# define _PL1_6_ _ADD_L_1_, _PL1_5_ # define _PL1_6_ _ADD_L_1_, _PL1_5_
@ -363,9 +371,9 @@ void symR_reset(tap_dance_state_t *state, void *user_data);
#define _LOWER_3x6_ _LL1_6_, _LR1_6_, _LL2_6_, _LR2_6_, _LL3_6_, _LR3_6_ #define _LOWER_3x6_ _LL1_6_, _LR1_6_, _LL2_6_, _LR2_6_, _LL3_6_, _LR3_6_
/* Raise: Control + Navigation layer */ /* Raise: Control + Navigation layer */
#define _RL1_5_ KC_PGUP, KC_BSPC, KC_UP, KC_DEL, KC_INS #define _RL1_5_ KC_ESC, KC_BSPC, KC_UP, KC_DEL, KC_PGUP
#define _RL2_5_ KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END #define _RL2_5_ KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END
#define _RL3_5_ KC_ESC, KC_CUT, KC_COPY, KC_PSTE, KC_PGDN #define _RL3_5_ KC_INS, KC_CUT, KC_COPY, KC_PSTE, KC_PGDN
#define _RR1_5_ KC_MPRV, KC_MSTP, KC_MPLY, OSM_AGR, KC_MNXT #define _RR1_5_ KC_MPRV, KC_MSTP, KC_MPLY, OSM_AGR, KC_MNXT
#define _RR2_5_ OSM_MEH, OSM_SFT, OSM_CTL, OSM_ALT, OSM_GUI #define _RR2_5_ OSM_MEH, OSM_SFT, OSM_CTL, OSM_ALT, OSM_GUI
#define _RR3_5_ KC_PSCR, CW_TOGG, KC_PAUS, KC_EJCT, KC_SCRL #define _RR3_5_ KC_PSCR, CW_TOGG, KC_PAUS, KC_EJCT, KC_SCRL