commit e7f26d8f25701914df9d144e124b283ed449723e
parent a216db265608e807df9e6b2da2389aa3453fd2d5
Author: Tomas Nemec <owl@gtms.dev>
Date: Thu, 1 May 2025 12:44:41 +0200
feat: framework 16
Diffstat:
2 files changed, 206 insertions(+), 0 deletions(-)
diff --git a/keyboards/framework/ansi/keymaps/tms/config.h b/keyboards/framework/ansi/keymaps/tms/config.h
@@ -0,0 +1,6 @@
+#define CHORDAL_HOLD
+#define PERMISSIVE_HOLD
+#define ENABLE_COMPILE_KEYCODE
+#define RETRO_TAPPING
+#define TAPPING_TERM 180
+#define QUICK_TAP_TERM 0
diff --git a/keyboards/framework/ansi/keymaps/tms/keymap.c b/keyboards/framework/ansi/keymaps/tms/keymap.c
@@ -0,0 +1,200 @@
+// Copyright 2022 Framework Computer
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+#include "framework.h"
+
+enum _layers { _BASE, _SMB, _QWERTY, _FN, _FN_LOCK, _FM };
+
+// Left-hand home row mods
+#define HOME_A LGUI_T(KC_A)
+#define HOME_O LALT_T(KC_O)
+#define HOME_E LSFT_T(KC_E)
+#define HOME_U LCTL_T(KC_U)
+
+// Right-hand home row mods
+#define HOME_H RCTL_T(KC_H)
+#define HOME_T RSFT_T(KC_T)
+#define HOME_N LALT_T(KC_N)
+#define HOME_S RGUI_T(KC_S)
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+// ┌──────┬─────────┬────────┬────────┬────────┬──────┬──────┬────────┬────────┬────────┬────────┬──────┬──────┬──────┐
+// │ caps │ mute │ vold │ volu │ mprv │ mply │ mnxt │ bRID │ bRIU │ sCRN │ aIRP │ pscr │ msel │ del │
+// ├──────┼─────────┼────────┼────────┼────────┼──────┼──────┼────────┼────────┼────────┼────────┼──────┼──────┼──────┤
+// │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ │ │ bspc │
+// ├──────┼─────────┼────────┼────────┼────────┼──────┼──────┼────────┼────────┼────────┼────────┼──────┼──────┼──────┤
+// │ tab │ ; │ , │ . │ p │ y │ f │ g │ c │ r │ l │ \ │ / │ │
+// ├──────┼─────────┼────────┼────────┼────────┼──────┼──────┼────────┼────────┼────────┼────────┼──────┼──────┴──────┤
+// │ esc │ HOME_A │ HOME_O │ HOME_E │ HOME_U │ i │ d │ HOME_H │ HOME_T │ HOME_N │ HOME_S │ - │ ent │
+// ├──────┴─────────┼────────┼────────┼────────┼──────┼──────┼────────┼────────┼────────┼────────┼──────┼─────────────┤
+// │ lsft │ ' │ q │ j │ k │ x │ b │ m │ w │ v │ z │ rsft │
+// ├──────┬─────────┼────────┼────────┼────────┴──────┴──────┴────────┼────────┼────────┼────────┼──────┼──────┬──────┤
+// │ lctl │ MO(_FN) │ lgui │ lalt │ LT(_SMB, spc) │ ralt │ rctl │ left │ up │ down │ rght │
+// └──────┴─────────┴────────┴────────┴───────────────────────────────┴────────┴────────┴────────┴──────┴──────┴──────┘
+[_BASE] = LAYOUT(
+ KC_CAPS , KC_MUTE , KC_VOLD , KC_VOLU , KC_MPRV , KC_MPLY , KC_MNXT , KC_BRID , KC_BRIU , KC_SCRN , KC_AIRP , KC_PSCR , KC_MSEL , KC_DEL ,
+ KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , _______ , _______ , KC_BSPC,
+ KC_TAB , KC_SCLN , KC_COMM , KC_DOT , KC_P , KC_Y , KC_F , KC_G , KC_C , KC_R , KC_L , KC_BSLS , KC_SLSH , _______,
+ KC_ESC , HOME_A , HOME_O , HOME_E , HOME_U , KC_I , KC_D , HOME_H , HOME_T , HOME_N , HOME_S , KC_MINS , KC_ENT,
+ KC_LSFT , KC_QUOT , KC_Q , KC_J , KC_K , KC_X , KC_B , KC_M , KC_W , KC_V , KC_Z , KC_RSFT,
+ KC_LCTL , MO(_FN) , KC_LGUI , KC_LALT , LT(_SMB, KC_SPC) , KC_RALT , KC_RCTL , KC_LEFT , KC_UP , KC_DOWN , KC_RGHT
+),
+
+// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
+// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+// ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
+// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+// ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
+// │ │ & │ < │ > │ % │ @ │ ^ │ $ │ [ │ ] │ ` │ ! │ ? │ │
+// ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┴─────┤
+// │ ~ │ | │ : │ ( │ 0 │ ) │ { │ 1 │ } │ = │ + │ _ │ │
+// ├─────┴─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼───────────┤
+// │ lsft │ 6 │ 7 │ 8 │ 9 │ # │ * │ 2 │ 3 │ 4 │ 5 │ rsft │
+// ├─────┬─────┼─────┼─────┼─────┴─────┴─────┴─────┼─────┼─────┼─────┼─────┼─────┬─────┤
+// │ │ │ │ │ │ │ │ │ │ │ │
+// └─────┴─────┴─────┴─────┴───────────────────────┴─────┴─────┴─────┴─────┴─────┴─────┘
+[_SMB] = LAYOUT(
+ _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______,
+ _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______,
+ _______ , KC_AMPR , KC_LT , KC_GT , KC_PERC , KC_AT , KC_CIRC , KC_DLR , KC_LBRC , KC_RBRC , KC_GRV , KC_EXLM , KC_QUES , _______,
+ KC_TILD , KC_PIPE , KC_COLN , KC_LPRN , KC_0 , KC_RPRN , KC_LCBR , KC_1 , KC_RCBR , KC_EQL , KC_PLUS , KC_UNDS , _______,
+ KC_LSFT , KC_6 , KC_7 , KC_8 , KC_9 , KC_HASH , KC_ASTR , KC_2 , KC_3 , KC_4 , KC_5 , KC_RSFT,
+ _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______
+),
+
+// ┌──────┬─────────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
+// │ esc │ mute │ vold │ volu │ mprv │ mply │ mnxt │ bRID │ bRIU │ sCRN │ aIRP │ pscr │ msel │ del │
+// ├──────┼─────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
+// │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ bspc │
+// ├──────┼─────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
+// │ tab │ q │ w │ e │ r │ t │ y │ u │ i │ o │ p │ [ │ ] │ \ │
+// ├──────┼─────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┴──────┤
+// │ caps │ a │ s │ d │ f │ g │ h │ j │ k │ l │ ; │ ' │ ent │
+// ├──────┴─────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼─────────────┤
+// │ lsft │ z │ x │ c │ v │ b │ n │ m │ , │ . │ / │ rsft │
+// ├──────┬─────────┼──────┼──────┼──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┬──────┤
+// │ lctl │ MO(_FN) │ lgui │ lalt │ spc │ ralt │ rctl │ left │ up │ down │ rght │
+// └──────┴─────────┴──────┴──────┴───────────────────────────┴──────┴──────┴──────┴──────┴──────┴──────┘
+[_QWERTY] = LAYOUT(
+ KC_ESC , KC_MUTE , KC_VOLD , KC_VOLU , KC_MPRV , KC_MPLY , KC_MNXT , KC_BRID , KC_BRIU , KC_SCRN , KC_AIRP , KC_PSCR , KC_MSEL , KC_DEL ,
+ KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS , KC_EQL , KC_BSPC,
+ KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC , KC_RBRC , KC_BSLS,
+ KC_CAPS , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN , KC_QUOT , KC_ENT,
+ KC_LSFT , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM , KC_DOT , KC_SLSH , KC_RSFT,
+ KC_LCTL , MO(_FN) , KC_LGUI , KC_LALT , KC_SPC , KC_RALT , KC_RCTL , KC_LEFT , KC_UP , KC_DOWN , KC_RGHT
+),
+
+// ┌─────────┬─────┬─────────┬──────────┬─────────┬─────────┬─────────┬─────────┬──────┬─────┬──────┬──────┬──────┬─────────┐
+// │ FN_LOCK │ f1 │ f2 │ f3 │ f4 │ f5 │ f6 │ f7 │ f8 │ f9 │ f10 │ f11 │ f12 │ ins │
+// ├─────────┼─────┼─────────┼──────────┼─────────┼─────────┼─────────┼─────────┼──────┼─────┼──────┼──────┼──────┼─────────┤
+// │ │ │ │ │ │ │ │ │ │ │ │ │ │ QK_BOOT │
+// ├─────────┼─────┼─────────┼──────────┼─────────┼─────────┼─────────┼─────────┼──────┼─────┼──────┼──────┼──────┼─────────┤
+// │ QWERTY │ │ RGB_TOG │ RGB_MOD │ RGB_HUI │ RGB_SAI │ RGB_SPI │ RGB_VAI │ │ │ paus │ │ │ │
+// ├─────────┼─────┼─────────┼──────────┼─────────┼─────────┼─────────┼─────────┼──────┼─────┼──────┼──────┼──────┴─────────┤
+// │ BASE │ │ sYRQ │ RGB_RMOD │ RGB_HUD │ RGB_SAD │ RGB_SPD │ RGB_VAD │ sCRL │ │ │ │ │
+// ├─────────┴─────┼─────────┼──────────┼─────────┼─────────┼─────────┼─────────┼──────┼─────┼──────┼──────┼────────────────┤
+// │ │ │ │ BL_BRTG │ │ paus │ │ │ │ │ │ │
+// ├─────────┬─────┼─────────┼──────────┼─────────┴─────────┴─────────┴─────────┼──────┼─────┼──────┼──────┼──────┬─────────┤
+// │ │ │ │ │ BL_STEP │ │ │ home │ pgup │ pgdn │ end │
+// └─────────┴─────┴─────────┴──────────┴───────────────────────────────────────┴──────┴─────┴──────┴──────┴──────┴─────────┘
+[_FN] = LAYOUT(
+ FN_LOCK , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_INS ,
+ _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , QK_BOOT,
+ QWERTY , _______ , RGB_TOG , RGB_MOD , RGB_HUI , RGB_SAI , RGB_SPI , RGB_VAI , _______ , _______ , KC_PAUS , _______ , _______ , _______,
+ BASE , _______ , KC_SYRQ , RGB_RMOD , RGB_HUD , RGB_SAD , RGB_SPD , RGB_VAD , KC_SCRL , _______ , _______ , _______ , _______,
+ _______ , _______ , _______ , BL_BRTG , _______ , KC_BRK , _______ , _______ , _______ , _______ , _______ , _______,
+ _______ , _______ , _______ , _______ , BL_STEP , _______ , _______ , KC_HOME , KC_PGUP , KC_PGDN , KC_END
+),
+
+// ┌─────┬─────────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
+// │ │ f1 │ f2 │ f3 │ f4 │ f5 │ f6 │ f7 │ f8 │ f9 │ f10 │ f11 │ f12 │ │
+// ├─────┼─────────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
+// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+// ├─────┼─────────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
+// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+// ├─────┼─────────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┴─────┤
+// │ │ │ │ │ │ │ │ │ │ │ │ │ │
+// ├─────┴─────────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼───────────┤
+// │ │ │ │ │ │ │ │ │ │ │ │ │
+// ├─────┬─────────┼─────┼─────┼─────┴─────┴─────┴─────┼─────┼─────┼─────┼─────┼─────┬─────┤
+// │ │ MO(_FM) │ │ │ │ │ │ │ │ │ │
+// └─────┴─────────┴─────┴─────┴───────────────────────┴─────┴─────┴─────┴─────┴─────┴─────┘
+[_FN_LOCK] = LAYOUT(
+ _______ , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , _______,
+ _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______,
+ _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______,
+ _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______,
+ _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______,
+ _______ , MO(_FM) , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______
+),
+
+// ┌─────────┬──────┬─────────┬──────────┬─────────┬─────────┬─────────┬─────────┬──────┬──────┬──────┬──────┬──────┬─────┐
+// │ FN_LOCK │ mute │ vold │ volu │ mprv │ mply │ mnxt │ bRID │ bRIU │ sCRN │ aIRP │ pscr │ msel │ ins │
+// ├─────────┼──────┼─────────┼──────────┼─────────┼─────────┼─────────┼─────────┼──────┼──────┼──────┼──────┼──────┼─────┤
+// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+// ├─────────┼──────┼─────────┼──────────┼─────────┼─────────┼─────────┼─────────┼──────┼──────┼──────┼──────┼──────┼─────┤
+// │ │ │ RGB_TOG │ RGB_MOD │ RGB_HUI │ RGB_SAI │ RGB_SPI │ RGB_VAI │ │ │ paus │ │ │ │
+// ├─────────┼──────┼─────────┼──────────┼─────────┼─────────┼─────────┼─────────┼──────┼──────┼──────┼──────┼──────┴─────┤
+// │ │ │ sYRQ │ RGB_RMOD │ RGB_HUD │ RGB_SAD │ RGB_SPD │ RGB_VAD │ sCRL │ │ │ │ │
+// ├─────────┴──────┼─────────┼──────────┼─────────┼─────────┼─────────┼─────────┼──────┼──────┼──────┼──────┼────────────┤
+// │ │ │ │ BL_BRTG │ │ paus │ │ │ │ │ │ │
+// ├─────────┬──────┼─────────┼──────────┼─────────┴─────────┴─────────┴─────────┼──────┼──────┼──────┼──────┼──────┬─────┤
+// │ │ │ │ │ BL_STEP │ │ │ home │ pgup │ pgdn │ end │
+// └─────────┴──────┴─────────┴──────────┴───────────────────────────────────────┴──────┴──────┴──────┴──────┴──────┴─────┘
+[_FM] = LAYOUT(
+ FN_LOCK , KC_MUTE , KC_VOLD , KC_VOLU , KC_MPRV , KC_MPLY , KC_MNXT , KC_BRID , KC_BRIU , KC_SCRN , KC_AIRP , KC_PSCR , KC_MSEL , KC_INS ,
+ _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______,
+ _______ , _______ , RGB_TOG , RGB_MOD , RGB_HUI , RGB_SAI , RGB_SPI , RGB_VAI , _______ , _______ , KC_PAUS , _______ , _______ , _______,
+ _______ , _______ , KC_SYRQ , RGB_RMOD , RGB_HUD , RGB_SAD , RGB_SPD , RGB_VAD , KC_SCRL , _______ , _______ , _______ , _______,
+ _______ , _______ , _______ , BL_BRTG , _______ , KC_BRK , _______ , _______ , _______ , _______ , _______ , _______,
+ _______ , _______ , _______ , _______ , BL_STEP , _______ , _______ , KC_HOME , KC_PGUP , KC_PGDN , KC_END
+)
+};
+// clang-format off
+
+// Make sure to keep FN Lock even after reset
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case QWERTY:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_QWERTY);
+ }
+ return false;
+ break;
+ case BASE:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_BASE);
+ }
+ return false;
+ break;
+ case FN_LOCK:
+ if (record->event.pressed) {
+ if (layer_state_is(_FN)) {
+ set_single_persistent_default_layer(_FN_LOCK);
+ }
+ if (layer_state_is(_FM)) {
+ set_single_persistent_default_layer(_BASE);
+ }
+ }
+ return false;
+ break;
+ default:
+ break;
+ }
+ return true;
+}
+
+// clang-format off
+const char chordal_hold_layout[MATRIX_ROWS][MATRIX_COLS] PROGMEM =
+ LAYOUT(
+ 'L' , 'L' , 'L' , 'L' , 'L' , 'R' , 'R' , 'R' , 'R' , 'R' , 'R' , 'R' , 'R' , 'R',
+ 'L' , 'L' , 'L' , 'L' , 'L' , 'L' , 'R' , 'R' , 'R' , 'R' , 'R' , 'R' , 'R' , 'R',
+ 'L' , 'L' , 'L' , 'L' , 'L' , 'L' , 'R' , 'R' , 'R' , 'R' , 'R' , 'R' , 'R' , 'R',
+ 'L' , 'L' , 'L' , 'L' , 'L' , 'L' , 'R' , 'R' , 'R' , 'R' , 'R' , 'R' , 'R',
+ 'L' , 'L' , 'L' , 'L' , 'L' , 'R' , 'R' , 'R' , 'R' , 'R', 'R' , 'R',
+ 'L' , 'L' , 'L' , 'L' , '*' , 'R' , 'R' , 'R' , 'R' , 'R' , 'R'
+);
+// clang-format on
+// 77