Update to modern keymap

This commit is contained in:
Joe Scotto
2025-12-25 15:41:39 -05:00
parent 01f8030796
commit ddbd5405aa
8 changed files with 172 additions and 64 deletions
Binary file not shown.
+84
View File
@@ -0,0 +1,84 @@
{
"manufacturer": "ScottoKeebs",
"keyboard_name": "Scotto40",
"maintainer": "joe-scotto",
"diode_direction": "COL2ROW",
"bootloader": "rp2040",
"processor": "RP2040",
"features": {
"bootmagic": true,
"command": false,
"console": false,
"extrakey": true,
"mousekey": true,
"nkro": true
},
"matrix_pins": {
"cols": [
"GP0",
"GP1",
"GP2",
"GP3",
"GP4",
"GP5",
"GP6",
"GP7",
"GP8",
"GP9"
],
"rows": ["GP22", "GP20", "GP23", "GP21"]
},
"url": "https://scottokeebs.com",
"usb": {
"device_version": "1.0.0",
"pid": "0x0001",
"vid": "0x534B"
},
"community_layouts": ["ortho_4x10"],
"layouts": {
"LAYOUT_ortho_4x10": {
"layout": [
{ "matrix": [0, 0], "x": 0, "y": 0 },
{ "matrix": [0, 1], "x": 1, "y": 0 },
{ "matrix": [0, 2], "x": 2, "y": 0 },
{ "matrix": [0, 3], "x": 3, "y": 0 },
{ "matrix": [0, 4], "x": 4, "y": 0 },
{ "matrix": [0, 5], "x": 5, "y": 0 },
{ "matrix": [0, 6], "x": 6, "y": 0 },
{ "matrix": [0, 7], "x": 7, "y": 0 },
{ "matrix": [0, 8], "x": 8, "y": 0 },
{ "matrix": [0, 9], "x": 9, "y": 0 },
{ "matrix": [1, 0], "x": 0, "y": 1 },
{ "matrix": [1, 1], "x": 1, "y": 1 },
{ "matrix": [1, 2], "x": 2, "y": 1 },
{ "matrix": [1, 3], "x": 3, "y": 1 },
{ "matrix": [1, 4], "x": 4, "y": 1 },
{ "matrix": [1, 5], "x": 5, "y": 1 },
{ "matrix": [1, 6], "x": 6, "y": 1 },
{ "matrix": [1, 7], "x": 7, "y": 1 },
{ "matrix": [1, 8], "x": 8, "y": 1 },
{ "matrix": [1, 9], "x": 9, "y": 1 },
{ "matrix": [2, 0], "x": 0, "y": 2 },
{ "matrix": [2, 1], "x": 1, "y": 2 },
{ "matrix": [2, 2], "x": 2, "y": 2 },
{ "matrix": [2, 3], "x": 3, "y": 2 },
{ "matrix": [2, 4], "x": 4, "y": 2 },
{ "matrix": [2, 5], "x": 5, "y": 2 },
{ "matrix": [2, 6], "x": 6, "y": 2 },
{ "matrix": [2, 7], "x": 7, "y": 2 },
{ "matrix": [2, 8], "x": 8, "y": 2 },
{ "matrix": [2, 9], "x": 9, "y": 2 },
{ "matrix": [3, 0], "x": 0, "y": 3 },
{ "matrix": [3, 1], "x": 1, "y": 3 },
{ "matrix": [3, 2], "x": 2, "y": 3 },
{ "matrix": [3, 3], "x": 3, "y": 3 },
{ "matrix": [3, 4], "x": 4, "y": 3 },
{ "matrix": [3, 5], "x": 5, "y": 3 },
{ "matrix": [3, 6], "x": 6, "y": 3 },
{ "matrix": [3, 7], "x": 7, "y": 3 },
{ "matrix": [3, 8], "x": 8, "y": 3 },
{ "matrix": [3, 9], "x": 9, "y": 3 }
]
}
}
}
+15 -6
View File
@@ -3,7 +3,8 @@
"keyboard_name": "Scotto40",
"maintainer": "joe-scotto",
"diode_direction": "COL2ROW",
"development_board": "promicro",
"bootloader": "rp2040",
"processor": "RP2040",
"features": {
"bootmagic": true,
"command": false,
@@ -12,12 +13,20 @@
"mousekey": true,
"nkro": true
},
"build": {
"lto": true
},
"matrix_pins": {
"cols": ["D1", "D0", "D4", "C6", "D7", "E6", "B4", "B5", "F4", "F5"],
"rows": ["B1", "B3", "B2", "B6"]
"cols": [
"GP0",
"GP1",
"GP2",
"GP3",
"GP4",
"GP5",
"GP6",
"GP7",
"GP8",
"GP9"
],
"rows": ["GP22", "GP20", "GP23", "GP21"]
},
"url": "https://scottokeebs.com",
"usb": {
+8 -8
View File
@@ -2,12 +2,12 @@
#include QMK_KEYBOARD_H
// Define combos
const uint16_t PROGMEM tab_combo[] = {KC_Y, KC_BSPC, COMBO_END};
const uint16_t PROGMEM tab_number_combo[] = {KC_CAPS, KC_BSPC, COMBO_END};
const uint16_t PROGMEM tab_code_combo[] = {KC_MFFD, KC_DEL, COMBO_END};
const uint16_t PROGMEM enter_combo[] = {KC_Q, KC_W, COMBO_END};
const uint16_t PROGMEM enter_number_combo[] = {KC_EXLM, KC_AT, COMBO_END};
const uint16_t PROGMEM enter_code_combo[] = {KC_UNDS, KC_MINS, COMBO_END};
const uint16_t PROGMEM tab_combo[] = {KC_Q, KC_W, COMBO_END};
const uint16_t PROGMEM tab_code_combo[] = {KC_UNDS, KC_MINS, COMBO_END};
const uint16_t PROGMEM tab_number_combo[] = {KC_EXLM, KC_AT, COMBO_END};
const uint16_t PROGMEM enter_combo[] = {KC_Y, KC_BSPC, COMBO_END};
const uint16_t PROGMEM enter_code_combo[] = {KC_MFFD, KC_DEL, COMBO_END};
const uint16_t PROGMEM enter_number_combo[] = {KC_CAPS, KC_BSPC, COMBO_END};
const uint16_t PROGMEM number_combo[] = {KC_W, KC_Y, COMBO_END};
const uint16_t PROGMEM number_code_combo[] = {KC_EXLM, KC_BSPC, COMBO_END};
const uint16_t PROGMEM number_default_combo[] = {KC_AT, KC_CAPS, COMBO_END};
@@ -18,11 +18,11 @@ const uint16_t PROGMEM code_default_combo[] = {KC_UNDS, KC_DEL, COMBO_END};
// Create combos
combo_t key_combos[] = {
COMBO(tab_combo, KC_TAB),
COMBO(tab_number_combo, KC_TAB),
COMBO(tab_code_combo, KC_TAB),
COMBO(tab_number_combo, KC_TAB),
COMBO(enter_combo, KC_ENT),
COMBO(enter_number_combo, KC_ENT),
COMBO(enter_code_combo, KC_ENT),
COMBO(enter_number_combo, KC_ENT),
COMBO(number_combo, TO_NUMBER),
COMBO(number_code_combo, TO_CODE),
COMBO(number_default_combo, TO_DEFAULT),
-3
View File
@@ -4,6 +4,3 @@
#define TAPPING_TERM 135
#define PERMISSIVE_HOLD
#define TAPPING_TERM_PER_KEY
#define SOLENOID_PIN GP28
#define SOLENOID_DEFAULT_BUZZ 1
#define NO_HAPTIC_MOD
+62 -46
View File
@@ -21,68 +21,84 @@ uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// ┌───────────┬───────────────┬───┬──────────────┬─────────────┬────────────┬────────────┬────┬───────────┬───────────┐
// │ q │ w │ f │ p │ g │ j │ l │ u │ y │ bspc │
// ├───────────┼───────────────┼───┼──────────────┼─────────────┼────────────┼────────────┼────┼───────────┼───────────┤
// │ a │ r │ s │ t │ d │ h │ n │ e │ i │ o │
// ├───────────┼───────────────┼───┼──────────────┼─────────────┼────────────┼────────────┼────┼───────────┼───────────┤
// │ LSFT_T(z) │ TD(TD_MODS_X) │ c │ v │ b │ k │ m │ , │ RGUI_T(.) │ RSFT_T(/) │
// ├───────────┼───────────────┼───┼──────────────┼─────────────┼────────────┼────────────┼────┼───────────┼───────────┤
// │ no nono │ TD(TD_MULTI) │ LGUI_T(spc) │ LT(1, tab) │ LT(2, ent) │ no │ no │ no │
// └───────────┴───────────────┴───┴──────────────┴─────────────┴────────────┴────────────┴────┴───────────┴───────────┘
// ┌───────────┬───────────────┬───┬──────────────┬─────────────┬────────────┬────────────┬────┬───────────┬───────────┐
// │ q │ w │ f │ p │ g │ j │ l │ u │ y │ bspc │
// ├───────────┼───────────────┼───┼──────────────┼─────────────┼────────────┼────────────┼────┼───────────┼───────────┤
// │ a │ r │ s │ t │ d │ h │ n │ e │ i │ o │
// ├───────────┼───────────────┼───┼──────────────┼─────────────┼────────────┼────────────┼────┼───────────┼───────────┤
// │ LSFT_T(z) │ TD(TD_MODS_X) │ c │ v │ b │ k │ m │ , │ RGUI_T(.) │ RSFT_T(/) │
// ├───────────┼───────────────┼───┼──────────────┼─────────────┼────────────┼────────────┼────┼───────────┼───────────┤
// │ LT(4, esc) kj │ TD(TD_MULTI) │ LGUI_T(spc) │ LT(1, tab) │ LT(2, ent) │ no │ no │ no │
// └───────────┴───────────────┴───┴──────────────┴─────────────┴────────────┴────────────┴────┴───────────┴───────────┘
[0] = LAYOUT_ortho_4x10(
KC_Q , KC_W , KC_F , KC_P , KC_G , KC_J , KC_L , KC_U , KC_Y , KC_BSPC ,
KC_A , KC_R , KC_S , KC_T , KC_D , KC_H , KC_N , KC_E , KC_I , KC_O ,
LSFT_T(KC_Z) , TD(TD_MODS_X) , KC_C , KC_V , KC_B , KC_K , KC_M , KC_COMMA , RGUI_T(KC_DOT) , RSFT_T(KC_SLSH),
KC_NO , KC_NO , KC_NO , TD(TD_MULTI) , LGUI_T(KC_SPC) , LT(1, KC_TAB) , LT(2, KC_ENT) , KC_NO , KC_NO , KC_NO
KC_Q , KC_W , KC_F , KC_P , KC_G , KC_J , KC_L , KC_U , KC_Y , KC_BSPC ,
KC_A , KC_R , KC_S , KC_T , KC_D , KC_H , KC_N , KC_E , KC_I , KC_O ,
LSFT_T(KC_Z) , TD(TD_MODS_X) , KC_C , KC_V , KC_B , KC_K , KC_M , KC_COMMA , RGUI_T(KC_DOT) , RSFT_T(KC_SLSH),
LT(4, KC_ESC) , KC_K , KC_J , TD(TD_MULTI) , LGUI_T(KC_SPC) , LT(1, KC_TAB) , LT(2, KC_ENT) , KC_NO , KC_NO , KC_NO
),
// ┌───────────┬──────────────────┬────┬─────┬─────┬─────┬──────┬──────┬──────────────┬───────────┐
// │ _ │ - │ + │ = │ : │ ` │ mrwd │ mply │ mffd │ del │
// ├───────────┼──────────────────┼────┼─────┼─────┼─────┼──────┼──────┼──────────────┼───────────┤
// │ { │ ( │ ) │ } │ | │ esc │ left │ up │ down │ rght │
// ├───────────┼──────────────────┼────┼─────┼─────┼─────┼──────┼──────┼──────────────┼───────────┤
// │ LSFT_T([) │ TD(TD_MODS_QUOT) │ " │ ] │ ; │ ~ │ vold │ mute │ RGUI_T(volu) │ RSFT_T(\) │
// ├───────────┼──────────────────┼────┼─────┼─────┼─────┼──────┼──────┼──────────────┼───────────┤
// │ nonono │ │ │ │ │ nonono
// └───────────┴──────────────────┴────┴─────┴─────┴─────┴──────┴──────┴──────────────┴───────────┘
// ┌───────────┬──────────────────┬────┬─────┬─────┬─────┬──────┬──────┬──────────────┬───────────┐
// │ _ │ - │ + │ = │ : │ ` │ mrwd │ mply │ mffd │ del │
// ├───────────┼──────────────────┼────┼─────┼─────┼─────┼──────┼──────┼──────────────┼───────────┤
// │ { │ ( │ ) │ } │ | │ esc │ left │ up │ down │ rght │
// ├───────────┼──────────────────┼────┼─────┼─────┼─────┼──────┼──────┼──────────────┼───────────┤
// │ LSFT_T([) │ TD(TD_MODS_QUOT) │ " │ ] │ ; │ ~ │ vold │ mute │ RGUI_T(volu) │ RSFT_T(\) │
// ├───────────┼──────────────────┼────┼─────┼─────┼─────┼──────┼──────┼──────────────┼───────────┤
// │ │ │ │ │ │
// └───────────┴──────────────────┴────┴─────┴─────┴─────┴──────┴──────┴──────────────┴───────────┘
[1] = LAYOUT_ortho_4x10(
KC_UNDS , KC_MINS , KC_PLUS , KC_EQL , KC_COLN , KC_GRV , KC_MRWD , KC_MPLY , KC_MFFD , KC_DEL ,
KC_LCBR , KC_LPRN , KC_RPRN , KC_RCBR , KC_PIPE , KC_ESC , KC_LEFT , KC_UP , KC_DOWN , KC_RGHT ,
LSFT_T(KC_LBRC) , TD(TD_MODS_QUOT) , KC_DQUO , KC_RBRC , KC_SCLN , KC_TILDE , KC_VOLD , KC_MUTE , RGUI_T(KC_VOLU) , RSFT_T(KC_BSLS),
KC_NO , KC_NO , KC_NO , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_NO , KC_NO , KC_NO
KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS
),
// ┌──────┬─────┬────┬─────┬───────┬─────┬─────┬────┬──────┬───────────┐
// │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ caps │ bspc │
// ├──────┼─────┼────┼─────┼───────┼─────┼─────┼────┼──────┼───────────┤
// │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │
// ├──────┼─────┼────┼─────┼───────┼─────┼─────┼────┼──────┼───────────┤
// │ lsft │ │ no │ no │ MO(3) │ no │ no │ , │ │ RSFT_T(/) │
// ├──────┼─────┼────┼─────┼───────┼─────┼─────┼────┼──────┼───────────┤
// │ nonono │ │ │ │ │ nonono
// └──────┴─────┴────┴─────┴───────┴─────┴─────┴────┴──────┴───────────┘
// ┌──────┬─────┬────┬─────┬───────┬─────┬─────┬────┬──────┬───────────┐
// │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ caps │ bspc │
// ├──────┼─────┼────┼─────┼───────┼─────┼─────┼────┼──────┼───────────┤
// │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │
// ├──────┼─────┼────┼─────┼───────┼─────┼─────┼────┼──────┼───────────┤
// │ lsft │ │ no │ no │ MO(3) │ no │ no │ , │ │ RSFT_T(/) │
// ├──────┼─────┼────┼─────┼───────┼─────┼─────┼────┼──────┼───────────┤
// │ │ │ │ │ │
// └──────┴─────┴────┴─────┴───────┴─────┴─────┴────┴──────┴───────────┘
[2] = LAYOUT_ortho_4x10(
KC_EXLM , KC_AT , KC_HASH , KC_DLR , KC_PERC , KC_CIRC , KC_AMPR , KC_ASTR , KC_CAPS , KC_BSPC ,
KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 ,
KC_LSFT , KC_TRNS , KC_NO , KC_NO , MO(3) , KC_NO , KC_NO , KC_COMMA , KC_TRNS , RSFT_T(KC_SLSH),
KC_NO , KC_NO , KC_NO , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_NO , KC_NO , KC_NO
KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS
),
// ┌─────────────┬────────────┬────┬───────────┬─────┬──────────────────┬───────────────────────┬───────────────────────────┬─────────────┬───────────┐
// │ LAYOUT_SWAP │ MODE_CHECK │ no │ no │ no │ no │ no │ no │ GAME_TOGGLE │ OS_TOGGLE │
// ├─────────────┼────────────┼────┼───────────┼─────┼──────────────────┼───────────────────────┼───────────────────────────┼─────────────┼───────────┤
// │ f1 │ f2 │ f3 │ f4 │ f5 │ f6 │ f7 │ f8 │ f9 │ f10 │
// ├─────────────┼────────────┼────┼───────────┼─────┼──────────────────┼───────────────────────┼───────────────────────────┼─────────────┼───────────┤
// │ f11 │ │ no │ HARD_BOOT │ no │ QK_HAPTIC_TOGGLE │ QK_HAPTIC_BUZZ_TOGGLE │ QK_HAPTIC_FEEDBACK_TOGGLE │ │ f12 │
// ├─────────────┼────────────┼────┼───────────┼─────┼──────────────────┼───────────────────────┼───────────────────────────┼─────────────┼───────────┤
// │ nonono │ │ │ │ │ nono │ no
// └─────────────┴────────────┴────┴───────────┴─────┴──────────────────┴───────────────────────┴───────────────────────────┴─────────────┴───────────┘
// ┌─────────────┬────────────┬────┬───────────┬─────┬──────────────────┬───────────────────────┬───────────────────────────┬─────────────┬───────────┐
// │ LAYOUT_SWAP │ MODE_CHECK │ no │ no │ no │ no │ no │ no │ GAME_TOGGLE │ OS_TOGGLE │
// ├─────────────┼────────────┼────┼───────────┼─────┼──────────────────┼───────────────────────┼───────────────────────────┼─────────────┼───────────┤
// │ f1 │ f2 │ f3 │ f4 │ f5 │ f6 │ f7 │ f8 │ f9 │ f10 │
// ├─────────────┼────────────┼────┼───────────┼─────┼──────────────────┼───────────────────────┼───────────────────────────┼─────────────┼───────────┤
// │ f11 │ │ no │ HARD_BOOT │ no │ QK_HAPTIC_TOGGLE │ QK_HAPTIC_BUZZ_TOGGLE │ QK_HAPTIC_FEEDBACK_TOGGLE │ │ f12 │
// ├─────────────┼────────────┼────┼───────────┼─────┼──────────────────┼───────────────────────┼───────────────────────────┼─────────────┼───────────┤
// │ │ │ │ │ │
// └─────────────┴────────────┴────┴───────────┴─────┴──────────────────┴───────────────────────┴───────────────────────────┴─────────────┴───────────┘
[3] = LAYOUT_ortho_4x10(
LAYOUT_SWAP , MODE_CHECK , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , GAME_TOGGLE , OS_TOGGLE,
KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 ,
KC_F11 , KC_TRNS , KC_NO , HARD_BOOT , KC_NO , QK_HAPTIC_TOGGLE , QK_HAPTIC_BUZZ_TOGGLE , QK_HAPTIC_FEEDBACK_TOGGLE , KC_TRNS , KC_F12 ,
KC_NO , KC_NO , KC_NO , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_NO , KC_NO , KC_NO
LAYOUT_SWAP , MODE_CHECK , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , GAME_TOGGLE , OS_TOGGLE,
KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 ,
KC_F11 , KC_TRNS , KC_NO , HARD_BOOT , KC_NO , QK_HAPTIC_TOGGLE , QK_HAPTIC_BUZZ_TOGGLE , QK_HAPTIC_FEEDBACK_TOGGLE , KC_TRNS , KC_F12 ,
KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS
),
// ┌─────┬──────┬──────┬───────────┬──────┬─────┬─────┬─────┬─────┬─────┐
// │ no │ no │ no │ no │ no │ no │ no │ no │ no │ no │
// ├─────┼──────┼──────┼───────────┼──────┼─────┼─────┼─────┼─────┼─────┤
// │ no │ no │ no │ no │ no │ no │ no │ no │ no │ no │
// ├─────┼──────┼──────┼───────────┼──────┼─────┼─────┼─────┼─────┼─────┤
// │ no │ no │ no │ LSFT(tab) │ tab │ no │ no │ no │ no │ no │
// ├─────┼──────┼──────┼───────────┼──────┼─────┼─────┼─────┼─────┼─────┤
// │ │ lalt │ lgui │ vold │ volu │ │ │ │ │ │
// └─────┴──────┴──────┴───────────┴──────┴─────┴─────┴─────┴─────┴─────┘
[4] = LAYOUT_ortho_4x10(
KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO ,
KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO ,
KC_NO , KC_NO , KC_NO , LSFT(KC_TAB) , KC_TAB , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO ,
KC_TRNS , KC_LALT , KC_LGUI , KC_VOLD , KC_VOLU , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS
)
};
// clang-format on
+3
View File
@@ -128,6 +128,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
case TO_CODE:
layer_move(1);
return false;
case TO_NUMBER:
layer_move(2);
return false;
case OS_TOGGLE:
user_config.is_windows = !user_config.is_windows;
keymap_config.swap_lctl_lgui = user_config.is_windows ? true : false;
-1
View File
@@ -1,3 +1,2 @@
TAP_DANCE_ENABLE = yes
COMBO_ENABLE = yes
HAPTIC_DRIVER = solenoid