commit 9d7767b4c0491b788fe2c4ac01ba42b7bb8902a4
parent 674eac3c0f8e41a6b04924bcd0f8e953309463ed
Author: Tomas Nemec <owl@gtms.dev>
Date: Wed, 2 Apr 2025 22:11:00 +0200
feat: chordal hold
Diffstat:
2 files changed, 38 insertions(+), 143 deletions(-)
diff --git a/keyboards/ergodox_ez/glow/keymaps/tms/config.h b/keyboards/ergodox_ez/glow/keymaps/tms/config.h
@@ -1,5 +1,6 @@
+#define CHORDAL_HOLD
#define HOLD_ON_OTHER_KEY_PRESS
-// #define HOLD_ON_OTHER_KEY_PRESS_PER_KEY
+#define PERMISSIVE_HOLD
#define ENABLE_COMPILE_KEYCODE
#define TAPPING_TERM 200
#define QUICK_TAP_TERM 0
diff --git a/keyboards/ergodox_ez/glow/keymaps/tms/keymap.c b/keyboards/ergodox_ez/glow/keymaps/tms/keymap.c
@@ -17,8 +17,6 @@ enum custom_keycodes {
DVORAK = SAFE_RANGE,
QWERTY,
VRSN,
- S_TRUE,
- S_FALSE,
};
// [Key Lock](feature_key_lock.md)
@@ -43,32 +41,32 @@ enum custom_keycodes {
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-// ┌──────────┬─────┬─────┬──────────┬───────────────┬───────────────────┬──────────┐ ┌──────────┬───────────────────┬───────────────┬─────┬─────┬─────┬──────────┐
-// │ caps │ 1 │ 2 │ 3 │ 4 │ 5 │ QWERTY │ │ TG(DVRK) │ 6 │ 7 │ 8 │ 9 │ 0 │ │
-// ├──────────┼─────┼─────┼──────────┼───────────────┼───────────────────┼──────────┤ ├──────────┼───────────────────┼───────────────┼─────┼─────┼─────┼──────────┤
-// │ lalt │ ; │ , │ . │ p │ y │ MO(NUME) │ │ MOD_MEH │ f │ g │ c │ r │ l │ ralt │
-// ├──────────┼─────┼─────┼──────────┼───────────────┼───────────────────┼──────────┘ └──────────┼───────────────────┼───────────────┼─────┼─────┼─────┼──────────┤
-// │ esc │ a │ o │ e │ u │ i │ │ d │ h │ t │ n │ s │ - │
-// ├──────────┼─────┼─────┼──────────┼───────────────┼───────────────────┼──────────┐ ┌──────────┼───────────────────┼───────────────┼─────┼─────┼─────┼──────────┤
-// │ lsft │ ' │ q │ j │ k │ x │ \ │ │ / │ b │ m │ w │ v │ z │ rsft │
-// ├──────────┼─────┼─────┼──────────┼───────────────┼───────────────────┴──────────┘ └──────────┴───────────────────┼───────────────┼─────┼─────┼─────┼──────────┤
-// │ MO(SERV) │ │ │ MO(MOVE) │ lgui │ │ lgui │ │ │ │ MO(SERV) │
-// └──────────┴─────┴─────┴──────────┴───────────────┼───────────────────┬──────────┐ ┌──────────┬───────────────────┼───────────────┴─────┴─────┴─────┴──────────┘
-// │ MO(MDIA) │ │ │ │ │
-// └───────────────────┼──────────┤ ├──────────┼───────────────────┘
-// │ │ │ │
-// ┌───────────────┬───────────────────┼──────────┤ ├──────────┼───────────────────┬───────────────┐
-// │ LT(DSMB, tab) │ MT(MOD_LCTL, spc) │ bspc │ │ del │ MT(MOD_RCTL, spc) │ LT(DSMB, ent) │
-// └───────────────┴───────────────────┴──────────┘ └──────────┴───────────────────┴───────────────┘
+// ┌──────────┬───────────┬───────────┬───────────┬───────────────┬──────────┬──────────┐ ┌──────────┬─────┬───────────────┬───────────┬───────────┬───────────┬──────────┐
+// │ caps │ 1 │ 2 │ 3 │ 4 │ 5 │ QWERTY │ │ TG(DVRK) │ 6 │ 7 │ 8 │ 9 │ 0 │ │
+// ├──────────┼───────────┼───────────┼───────────┼───────────────┼──────────┼──────────┤ ├──────────┼─────┼───────────────┼───────────┼───────────┼───────────┼──────────┤
+// │ lalt │ ; │ , │ . │ p │ y │ MO(NUME) │ │ MOD_MEH │ f │ g │ c │ r │ l │ ralt │
+// ├──────────┼───────────┼───────────┼───────────┼───────────────┼──────────┼──────────┘ └──────────┼─────┼───────────────┼───────────┼───────────┼───────────┼──────────┤
+// │ esc │ LGUI_T(a) │ LALT_T(o) │ LCTL_T(e) │ LSFT_T(u) │ i │ │ d │ RSFT_T(h) │ RCTL_T(t) │ RALT_T(n) │ RGUI_T(s) │ - │
+// ├──────────┼───────────┼───────────┼───────────┼───────────────┼──────────┼──────────┐ ┌──────────┼─────┼───────────────┼───────────┼───────────┼───────────┼──────────┤
+// │ lsft │ ' │ q │ j │ k │ x │ \ │ │ / │ b │ m │ w │ v │ z │ rsft │
+// ├──────────┼───────────┼───────────┼───────────┼───────────────┼──────────┴──────────┘ └──────────┴─────┼───────────────┼───────────┼───────────┼───────────┼──────────┤
+// │ MO(SERV) │ │ │ MO(MOVE) │ lgui │ │ lgui │ │ │ │ MO(SERV) │
+// └──────────┴───────────┴───────────┴───────────┴───────────────┼──────────┬──────────┐ ┌──────────┬─────┼───────────────┴───────────┴───────────┴───────────┴──────────┘
+// │ MO(MDIA) │ │ │ │ │
+// └──────────┼──────────┤ ├──────────┼─────┘
+// │ │ │ │
+// ┌───────────────┬──────────┼──────────┤ ├──────────┼─────┬───────────────┐
+// │ LT(DSMB, tab) │ spc │ bspc │ │ del │ spc │ LT(DSMB, ent) │
+// └───────────────┴──────────┴──────────┘ └──────────┴─────┴───────────────┘
[DVRK] = LAYOUT_ergodox_pretty(
- KC_CAPS , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , QWERTY , TG(DVRK) , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , _______ ,
- KC_LALT , KC_SCLN , KC_COMM , KC_DOT , KC_P , KC_Y , MO(NUME) , MOD_MEH , KC_F , KC_G , KC_C , KC_R , KC_L , KC_RALT ,
- KC_ESC , KC_A , KC_O , KC_E , KC_U , KC_I , KC_D , KC_H , KC_T , KC_N , KC_S , KC_MINS ,
- KC_LSFT , KC_QUOT , KC_Q , KC_J , KC_K , KC_X , KC_BSLS , KC_SLSH , KC_B , KC_M , KC_W , KC_V , KC_Z , KC_RSFT ,
- MO(SERV) , _______ , _______ , MO(MOVE) , KC_LGUI , KC_LGUI , _______ , _______ , _______ , MO(SERV),
- MO(MDIA) , _______ , _______ , _______ ,
- _______ , _______ ,
- LT(DSMB, KC_TAB) , MT(MOD_LCTL, KC_SPC) , KC_BSPC , KC_DEL , MT(MOD_RCTL, KC_SPC) , LT(DSMB, KC_ENT)
+ KC_CAPS , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , QWERTY , TG(DVRK) , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , _______ ,
+ KC_LALT , KC_SCLN , KC_COMM , KC_DOT , KC_P , KC_Y , MO(NUME) , MOD_MEH , KC_F , KC_G , KC_C , KC_R , KC_L , KC_RALT ,
+ KC_ESC , LGUI_T(KC_A) , LALT_T(KC_O) , LCTL_T(KC_E) , LSFT_T(KC_U) , KC_I , KC_D , RSFT_T(KC_H) , RCTL_T(KC_T) , RALT_T(KC_N) , RGUI_T(KC_S) , KC_MINS ,
+ KC_LSFT , KC_QUOT , KC_Q , KC_J , KC_K , KC_X , KC_BSLS , KC_SLSH , KC_B , KC_M , KC_W , KC_V , KC_Z , KC_RSFT ,
+ MO(SERV) , _______ , _______ , MO(MOVE) , KC_LGUI , KC_LGUI , _______ , _______ , _______ , MO(SERV),
+ MO(MDIA) , _______ , _______ , _______ ,
+ _______ , _______ ,
+ LT(DSMB, KC_TAB) , KC_SPC , KC_BSPC , KC_DEL , KC_SPC , LT(DSMB, KC_ENT)
),
// ┌──────┬─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬──────┐
@@ -297,26 +295,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
// clang-format on
-// clang-format off
-// const uint8_t PROGMEM ledmap[][RGB_MATRIX_LED_COUNT][3] = {
-// [MDIA] = {
-// // RIGHT
-// {000, 000, 000}, {000, 000, 000}, {000, 000, 000}, {000, 000, 000}, {000, 000, 000},
-// {000, 000, 000}, {243, 222, 234}, {243, 222, 234}, {000, 000, 000}, {000, 000, 000},
-// {243, 222, 234}, {243, 222, 234}, {243, 222, 234}, {243, 222, 234}, {000, 000, 000},
-// {000, 000, 000}, {243, 222, 234}, {000, 000, 000}, {000, 000, 000}, {000, 000, 000},
-// {000, 000, 000}, {000, 000, 000}, {000, 000, 000}, {000, 000, 000},
-// // LEFT
-// {000, 000, 000}, {000, 000, 000}, {000, 000, 000}, {000, 000, 000}, {000, 000, 000},
-// {000, 000, 000}, {000, 000, 000}, {000, 000, 000}, {000, 000, 000}, {000, 000, 000},
-// {000, 000, 000}, {000, 000, 000}, {000, 000, 000}, {000, 000, 000}, {000, 000, 000},
-// {000, 000, 000}, {000, 000, 000}, {000, 000, 000}, {000, 000, 000}, {000, 000, 000},
-// {000, 000, 000}, {000, 000, 000}, {000, 000, 000}, {000, 000, 000}
-// },
-// [MOVE] = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {32, 176, 255}, {32, 176, 255}, {32, 176, 255}, {32, 176, 255}, {0, 0, 0}, {10, 225, 255}, {10, 225, 255}, {10, 225, 255}, {10, 225, 255}, {0, 0, 0}, {0, 0, 0}, {32, 176, 255}, {32, 176, 255}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {85, 203, 158}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}},
-// };
-// clang-format on
-
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (record->event.pressed) {
switch (keycode) {
@@ -326,16 +304,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
case QWERTY:
set_single_persistent_default_layer(QWRT);
return false;
- case S_TRUE:
- if (record->event.pressed) {
- SEND_STRING("true");
- }
- break;
- case S_FALSE:
- if (record->event.pressed) {
- SEND_STRING("false");
- }
- break;
case VRSN:
SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
return false;
@@ -344,88 +312,14 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return true;
}
-// bool get_hold_on_other_key_press(uint16_t keycode, keyrecord_t *record) {
-// switch (keycode) {
-// case MT(MOD_LCTL, KC_SPC):
-// return false;
-// case MT(MOD_RCTL, KC_SPC):
-// return false;
-// default:
-// return true;
-// }
-// }
-
-// Runs just one time when the keyboard initializes.
-void keyboard_post_init_user(void) {
-#ifdef RGBLIGHT_COLOR_LAYER_0
- rgblight_setrgb(RGBLIGHT_COLOR_LAYER_0);
-#endif
-};
-
-// // Runs whenever there is a layer state change.
-// layer_state_t layer_state_set_user(layer_state_t state) {
-// ergodox_board_led_off();
-// ergodox_right_led_1_off();
-// ergodox_right_led_2_off();
-// ergodox_right_led_3_off();
-
-// uint8_t layer = get_highest_layer(state);
-// switch (layer) {
-// case 0:
-// #ifdef RGBLIGHT_COLOR_LAYER_0
-// rgblight_setrgb(RGBLIGHT_COLOR_LAYER_0);
-// #endif
-// break;
-// case 1:
-// ergodox_right_led_1_on();
-// #ifdef RGBLIGHT_COLOR_LAYER_1
-// rgblight_setrgb(RGBLIGHT_COLOR_LAYER_1);
-// #endif
-// break;
-// case 2:
-// ergodox_right_led_2_on();
-// #ifdef RGBLIGHT_COLOR_LAYER_2
-// rgblight_setrgb(RGBLIGHT_COLOR_LAYER_2);
-// #endif
-// break;
-// case 3:
-// ergodox_right_led_3_on();
-// #ifdef RGBLIGHT_COLOR_LAYER_3
-// rgblight_setrgb(RGBLIGHT_COLOR_LAYER_3);
-// #endif
-// break;
-// case 4:
-// ergodox_right_led_1_on();
-// ergodox_right_led_2_on();
-// #ifdef RGBLIGHT_COLOR_LAYER_4
-// rgblight_setrgb(RGBLIGHT_COLOR_LAYER_4);
-// #endif
-// break;
-// case 5:
-// ergodox_right_led_1_on();
-// ergodox_right_led_3_on();
-// #ifdef RGBLIGHT_COLOR_LAYER_5
-// rgblight_setrgb(RGBLIGHT_COLOR_LAYER_5);
-// #endif
-// break;
-// case 6:
-// ergodox_right_led_2_on();
-// ergodox_right_led_3_on();
-// #ifdef RGBLIGHT_COLOR_LAYER_6
-// rgblight_setrgb(RGBLIGHT_COLOR_LAYER_6);
-// #endif
-// break;
-// case 7:
-// ergodox_right_led_1_on();
-// ergodox_right_led_2_on();
-// ergodox_right_led_3_on();
-// #ifdef RGBLIGHT_COLOR_LAYER_7
-// rgblight_setrgb(RGBLIGHT_COLOR_LAYER_7);
-// #endif
-// break;
-// default:
-// break;
-// }
-
-// return state;
-// };
+const char chordal_hold_layout[MATRIX_ROWS][MATRIX_COLS] PROGMEM =
+ LAYOUT_ergodox_pretty(
+ 'L' , 'L' , 'L' , 'L' , 'L' , 'L' , 'L' , 'R' , 'R' , 'R' , 'R' , 'R' , 'R' , 'R' ,
+ 'L' , 'L' , 'L' , 'L' , 'L' , 'L' , 'L' , 'R' , 'R' , 'R' , 'R' , 'R' , 'R' , 'R' ,
+ 'L' , 'L' , 'L' , 'L' , 'L' , 'L' , 'R' , 'R' , 'R' , 'R' , 'R' , 'R' ,
+ 'L' , 'L' , 'L' , 'L' , 'L' , 'L' , 'L' , 'R' , 'R' , 'R' , 'R' , 'R' , 'R' , 'R' ,
+ 'L' , 'L' , 'L' , 'L' , 'L' , 'R' , 'R' , 'R' , 'R' , 'R' ,
+ 'L' , 'L' , 'R' , 'R' ,
+ 'L' , 'R' ,
+ 'L' , 'L' , 'L' , 'R' , 'R' , 'R'
+ );