From 2c19604a9c74a6bd515753c95fd01a9440b49090 Mon Sep 17 00:00:00 2001 From: Will Fuller Date: Sun, 22 Feb 2026 01:16:56 -0600 Subject: [PATCH] Port YMDK SP64 (#990) * Add matrix_is_on function, to fix 'undefined reference' build error * Add Vial keymap --- keyboards/ymdk/sp64/keymaps/vial/config.h | 9 ++ keyboards/ymdk/sp64/keymaps/vial/keymap.c | 73 ++++++++++++++ keyboards/ymdk/sp64/keymaps/vial/rules.mk | 23 +++++ keyboards/ymdk/sp64/keymaps/vial/vial.json | 109 +++++++++++++++++++++ keyboards/ymdk/sp64/matrix.c | 5 + 5 files changed, 219 insertions(+) create mode 100644 keyboards/ymdk/sp64/keymaps/vial/config.h create mode 100644 keyboards/ymdk/sp64/keymaps/vial/keymap.c create mode 100644 keyboards/ymdk/sp64/keymaps/vial/rules.mk create mode 100755 keyboards/ymdk/sp64/keymaps/vial/vial.json diff --git a/keyboards/ymdk/sp64/keymaps/vial/config.h b/keyboards/ymdk/sp64/keymaps/vial/config.h new file mode 100644 index 00000000000..bc1c595656b --- /dev/null +++ b/keyboards/ymdk/sp64/keymaps/vial/config.h @@ -0,0 +1,9 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#pragma once + +#define VIAL_KEYBOARD_UID {0xF7, 0x20, 0x5E, 0xE3, 0x8E, 0x8D, 0x0F, 0xC9} +#define VIAL_UNLOCK_COMBO_ROWS { 5, 4 } +#define VIAL_UNLOCK_COMBO_COLS { 0, 13 } + +#define DYNAMIC_KEYMAP_LAYER_COUNT 4 diff --git a/keyboards/ymdk/sp64/keymaps/vial/keymap.c b/keyboards/ymdk/sp64/keymaps/vial/keymap.c new file mode 100644 index 00000000000..9de46ae7386 --- /dev/null +++ b/keyboards/ymdk/sp64/keymaps/vial/keymap.c @@ -0,0 +1,73 @@ +#include QMK_KEYBOARD_H + +enum layer_names { + BASE, // default layer + _FN, // function layer + _FX, // media keys +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap 0: Basic layer + * + * ┌-----┬-----┬-----┬-----┬-----┬-----┬-----┐ ┌-----┬-----┬-----┬-----┬-----┬-----┬----------┐ + * │ Esc │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ │ 7 │ 8 │ 9 │ 0 │ - │ = │ BkSp │ + * ├-----┴--┬--┴--┬--┴--┬--┴--┬--┴--┬--┴--┬--┘ ┌--┴-----┴--┬--┴--┬--┴--┬--┴--┬--┴--┬--┴--┬-------┤ + * │ Tab │ Q │ W │ E │ R │ T │ │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ + * ├--------┴┬----┴┬----┴┬----┴┬----┴┬----┴┐ └┬----┴┬----┴┬----┴┬----┴┬----┴┬----┴┬----┴-------┤ + * │ Caps │ A │ S │ D │ F │ G │ │ H │ J │ K │ L │ ; │ ' │ Enter │ + * ├---------┴┬----┴┬----┴┬----┴┬----┴┬----┴┐ └┬----┴┬----┴┬----┴┬----┴┬----┴┬----┴┬-----┬-----┤ + * │ LShift │ Z │ X │ C │ V │ B │ │ N │ M │ < │ > │ ? │ Sft │ Up │ Fn │ + * ├------┬---┴-┬---┴--┬--┴-----┴----┬┴----┬┘ ┌┴-----┴-----┴--┬--┴----┬┴-----┼-----┼-----┼-----┤ + * │ Ctrl │ Win │ Alt │ │ Fn │ │ │ Alt │ Win │ Lft │ Dwn │ Rgt │ + * └------┴-----┴------┴-------------┴-----┘ └---------------┴-------┴------┴-----┴-----┴-----┘ + */ +[BASE] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQUAL, 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_QUOTE, KC_ENTER, + 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_UP, KC_F3, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, MO(_FN), KC_SPACE, KC_RALT, KC_RGUI, KC_LEFT, KC_DOWN, KC_RIGHT + ), +/* Function + * + * ┌-----┬-----┬-----┬-----┬-----┬-----┬-----┐ ┌-----┬-----┬-----┬-----┬-----┬-----┬----------┐ + * │ │ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │ │ + * ├-----┴--┬--┴--┬--┴--┬--┴--┬--┴--┬--┴--┬--┘ ┌--┴-----┴--┬--┴--┬--┴--┬--┴--┬--┴--┬--┴--┬-------┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├--------┴┬----┴┬----┴┬----┴┬----┴┬----┴┐ └┬----┴┬----┴┬----┴┬----┴┬----┴┬----┴┬----┴-------┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├---------┴┬----┴┬----┴┬----┴┬----┴┬----┴┐ └┬----┴┬----┴┬----┴┬----┴┬----┴┬----┴┬-----┬-----┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├------┬---┴-┬---┴--┬--┴-----┴----┬┴----┬┘ ┌┴-----┴-----┴--┬--┴----┬┴-----┼-----┼-----┼-----┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ + * └------┴-----┴------┴-------------┴-----┘ └---------------┴-------┴------┴-----┴-----┴-----┘ + */ +[_FN] = 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, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +/* Media + * + * ┌-----┬-----┬-----┬-----┬-----┬-----┬-----┐ ┌-----┬-----┬-----┬-----┬-----┬-----┬----------┐ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├-----┴--┬--┴--┬--┴--┬--┴--┬--┴--┬--┴--┬--┘ ┌--┴--┬--┴--┬--┴--┬--┴--┬--┴--┬--┴--┬--┴--┬-------┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├--------┴┬----┴┬----┴┬----┴┬----┴┬----┴┐ └┬----┴┬----┴┬----┴┬----┴┬----┴┬----┴┬----┴-------┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├---------┴┬----┴┬----┴┬----┴┬----┴┬----┴┐ └┬----┴┬----┴┬----┴┬----┴┬----┴┬----┴┬-----┬-----┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├------┬---┴-┬---┴--┬--┴-----┴----┬┴----┬┘ ┌┴-----┴-----┴--┬--┴----┬┴-----┼-----┼-----┼-----┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ + * └------┴-----┴------┴-------------┴-----┘ └---------------┴-------┴------┴-----┴-----┴-----┘ + */ +[_FX] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/ymdk/sp64/keymaps/vial/rules.mk b/keyboards/ymdk/sp64/keymaps/vial/rules.mk new file mode 100644 index 00000000000..0f91aeb09f9 --- /dev/null +++ b/keyboards/ymdk/sp64/keymaps/vial/rules.mk @@ -0,0 +1,23 @@ +VIA_ENABLE = yes +VIAL_ENABLE = yes + +LTO_ENABLE = yes + +CONSOLE_ENABLE = no +COMMAND_ENABLE = no +MOUSEKEY_ENABLE = no +EXTRAKEY_ENABLE = yes + +SPACE_CADET_ENABLE = yes +GRAVE_ESC_ENABLE = yes +MAGIC_ENABLE = yes + +QMK_SETTINGS = no +TAP_DANCE_ENABLE = yes +COMBO_ENABLE = yes +KEY_OVERRIDE_ENABLE = no + +CAPS_WORD_ENABLE = yes +AUTOSHIFT_ENABLE = no +KEY_LOCK_ENABLE = no +REPEAT_KEY_ENABLE = no diff --git a/keyboards/ymdk/sp64/keymaps/vial/vial.json b/keyboards/ymdk/sp64/keymaps/vial/vial.json new file mode 100755 index 00000000000..9e566f2da7d --- /dev/null +++ b/keyboards/ymdk/sp64/keymaps/vial/vial.json @@ -0,0 +1,109 @@ +{ + "name": "SP64", + "vendorId": "0x594D", + "productId": "0x5364", + "lighting": "qmk_backlight_rgblight", + "matrix": { + "rows": 6, + "cols": 15 + }, + "layouts": { + "keymap": [ + [ + "5,0", + "5,1", + "5,2", + "5,3", + "5,4", + "5,5", + "1,5", + { "x": 1 }, + "4,7", + "4,8", + "4,9", + "4,10", + "4,11", + "4,12", + { "w": 2 }, + "4,13" + ], + [ + { "w": 1.5 }, + "4,0", + "4,1", + "4,2", + "4,3", + "4,4", + "4,5", + { "x": 1 }, + "5,7", + "3,7", + "3,8", + "3,9", + "3,10", + "3,11", + "3,12", + { "w": 1.5 }, + "3,13" + ], + [ + { "w": 1.75 }, + "3,0", + "3,1", + "3,2", + "3,3", + "3,4", + "3,5", + { "x": 1 }, + "2,7", + "2,8", + "2,9", + "2,10", + "2,11", + "2,12", + { "w": 2.25 }, + "2,13" + ], + [ + { "w": 2 }, + "2,0", + "2,1", + "2,2", + "2,3", + "2,4", + "2,5", + { "x": 1 }, + "1,7", + "1,8", + "1,9", + "1,10", + "1,11", + "1,12", + "1,13", + "0,13" + ], + [ + { "w": 1.25 }, + "1,0", + { "w": 1 }, + "1,1", + { "w": 1.25 }, + "1,2", + { "w": 2.25 }, + "1,3", + { "w": 1 }, + "1,4", + { "x": 1, "w": 2.75 }, + "0,7", + { "w": 1.25 }, + "0,8", + { "w": 1.25 }, + "0,9", + { "w": 1 }, + "0,10", + "0,11", + "0,12" + ] + ] + } +} diff --git a/keyboards/ymdk/sp64/matrix.c b/keyboards/ymdk/sp64/matrix.c index 6f8c7962ebb..e1e7d95bb97 100644 --- a/keyboards/ymdk/sp64/matrix.c +++ b/keyboards/ymdk/sp64/matrix.c @@ -77,6 +77,11 @@ void matrix_init(void) matrix_init_kb(); } +bool matrix_is_on(uint8_t row, uint8_t col) +{ + return (matrix[row] & ((matrix_row_t)1<