keyboard

My QMK keyboard layouts
git clone git://gtms.dev/keyboard
Log | Files | Refs | README | LICENSE

commit 9d7767b4c0491b788fe2c4ac01ba42b7bb8902a4
parent 674eac3c0f8e41a6b04924bcd0f8e953309463ed
Author: Tomas Nemec <owl@gtms.dev>
Date:   Wed,  2 Apr 2025 22:11:00 +0200

feat: chordal hold

Diffstat:
Mkeyboards/ergodox_ez/glow/keymaps/tms/config.h | 3++-
Mkeyboards/ergodox_ez/glow/keymaps/tms/keymap.c | 178++++++++++++++++---------------------------------------------------------------
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' + );