From 02a98ccd7104a9fe1600fced4881dec0060b4416 Mon Sep 17 00:00:00 2001 From: Gilbert Creemers <144808356+FlamingPhoenix40@users.noreply.github.com> Date: Mon, 23 Jun 2025 04:52:16 +0200 Subject: [PATCH] Add Vial support to ProjectD Tinker 65 ANSI (#895) * Add support for ProjectD Tinker65 ANSI Reduced nr. of layers from 13 to 4 and disabled some features to save space, because otherwise wouldn't fit EPROM * All features enabled by default All features now enabled by default, and only nr. of layers reduced to make fit. Can uncomment lines in rules.mk to squeeze a bit more free space out if features are not needed. * Fix nr. of layers in keyboard.json When uploading to github for the pull request, forgot to edit the keyboard.json to decrease the number of layers. Only did that in my local offline clone. * Moved layer reduction to vial/config.h and reverted main keyboard.json Reverted main keyboard.json back to default for upstream QMK compatibility. Put redefinition of layers back in vial/config.h but added a #undef to get rid of the definition from keyboard.json that caused this method to not build. --- .../65/projectd_65_ansi/keymaps/vial/config.h | 11 ++ .../65/projectd_65_ansi/keymaps/vial/keymap.c | 93 ++++++++++++ .../65/projectd_65_ansi/keymaps/vial/rules.mk | 7 + .../projectd_65_ansi/keymaps/vial/vial.json | 132 ++++++++++++++++++ 4 files changed, 243 insertions(+) create mode 100644 keyboards/projectd/65/projectd_65_ansi/keymaps/vial/config.h create mode 100644 keyboards/projectd/65/projectd_65_ansi/keymaps/vial/keymap.c create mode 100644 keyboards/projectd/65/projectd_65_ansi/keymaps/vial/rules.mk create mode 100644 keyboards/projectd/65/projectd_65_ansi/keymaps/vial/vial.json diff --git a/keyboards/projectd/65/projectd_65_ansi/keymaps/vial/config.h b/keyboards/projectd/65/projectd_65_ansi/keymaps/vial/config.h new file mode 100644 index 0000000000..9c04eb639a --- /dev/null +++ b/keyboards/projectd/65/projectd_65_ansi/keymaps/vial/config.h @@ -0,0 +1,11 @@ +/* SPDX-Licence-Identifier: GPL-2.0-or-later */ + +#pragma once + +#define VIAL_KEYBOARD_UID {0xBC, 0xF1, 0xF0, 0x04, 0x32, 0x4B, 0x34, 0xE8} + +#define VIAL_UNLOCK_COMBO_ROWS { 1, 8 } +#define VIAL_UNLOCK_COMBO_COLS { 3, 4 } + +#undef DYNAMIC_KEYMAP_LAYER_COUNT +#define DYNAMIC_KEYMAP_LAYER_COUNT 4 \ No newline at end of file diff --git a/keyboards/projectd/65/projectd_65_ansi/keymaps/vial/keymap.c b/keyboards/projectd/65/projectd_65_ansi/keymaps/vial/keymap.c new file mode 100644 index 0000000000..f8700f624b --- /dev/null +++ b/keyboards/projectd/65/projectd_65_ansi/keymaps/vial/keymap.c @@ -0,0 +1,93 @@ +/* Copyright 2023 GSKY + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +enum my_keycodes { + RGB_R = QK_USER, + RGB_G, + RGB_B, + RGB_W, + SW_cy, +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + + switch (keycode) { + + case RGB_R: + if (record->event.pressed) { + rgb_matrix_sethsv(0, 255, 255); + rgb_matrix_mode(1); + } + return false; /* Skip all further processing of this key */ + + case RGB_G: + if (record->event.pressed) { + rgb_matrix_sethsv(85, 255, 255); + rgb_matrix_mode(1); + } + return false; /* Skip all further processing of this key */ + + case RGB_B: + if (record->event.pressed) { + rgb_matrix_sethsv(170, 255, 255); + rgb_matrix_mode(1); + } + return false; /* Skip all further processing of this key */ + + case RGB_W: + if (record->event.pressed) { + rgb_matrix_sethsv(0, 0, 255); + rgb_matrix_mode(1); + } + return false; /* Skip all further processing of this key */ + + case SW_cy: + rgb_matrix_sethsv(0, 255, 255); + rgb_matrix_mode(13); + return false; /* Skip all further processing of this key */ + + + default: + return true; /* Process all other keycodes normally */ + } +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: Base Layer (Default Layer) + */ +[0] = LAYOUT( + QK_GESC, 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_DEL, + 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_PGUP, + 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_PGDN, + 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_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT), +[1] = LAYOUT( + KC_GRV, 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_DEL, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RM_TOGG, RM_NEXT, RM_PREV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RSFT, RM_VALU, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(2), KC_TRNS, RM_SPDD, RM_VALD, RM_SPDU), +[2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_R, RGB_G, RGB_B, RGB_W, SW_cy, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +}; \ No newline at end of file diff --git a/keyboards/projectd/65/projectd_65_ansi/keymaps/vial/rules.mk b/keyboards/projectd/65/projectd_65_ansi/keymaps/vial/rules.mk new file mode 100644 index 0000000000..b51cd069fa --- /dev/null +++ b/keyboards/projectd/65/projectd_65_ansi/keymaps/vial/rules.mk @@ -0,0 +1,7 @@ +VIA_ENABLE = yes +VIAL_ENABLE = yes +# TAP_DANCE_ENABLE = no +# COMBO_ENABLE = no +# KEY_OVERRIDE_ENABLE = no +LTO_ENABLE = yes +VIALRGB_ENABLE = yes \ No newline at end of file diff --git a/keyboards/projectd/65/projectd_65_ansi/keymaps/vial/vial.json b/keyboards/projectd/65/projectd_65_ansi/keymaps/vial/vial.json new file mode 100644 index 0000000000..bae261ae01 --- /dev/null +++ b/keyboards/projectd/65/projectd_65_ansi/keymaps/vial/vial.json @@ -0,0 +1,132 @@ +{ + "lighting": "vialrgb", + + "matrix": { + "rows": 9, + "cols": 8 + }, + "layouts": { + + "keymap": [ + [ + "1,3", + "1,7", + "2,7", + "3,7", + "4,7", + "4,6", + "5,6", + "5,7", + "6,7", + "7,7", + "8,7", + "8,6", + "6,6", + { + "w": 2 + }, + "7,1", + "2,3" + ], + [ + { + "w": 1.5 + }, + "1,1", + "1,0", + "2,0", + "3,0", + "4,0", + "4,1", + "5,1", + "5,0", + "6,0", + "7,0", + "8,0", + "8,1", + "6,1", + { + "w": 1.5 + }, + "7,5", + "7,3" + ], + [ + { + "w": 1.75 + }, + "2,1", + "1,2", + "2,2", + "3,2", + "4,2", + "4,3", + "5,3", + "5,2", + "6,2", + "7,2", + "8,2", + "8,3", + { + "w": 2.25 + }, + "8,4", + "2,6" + ], + [ + { + "w": 2.25 + }, + "0,0", + "1,4", + "2,4", + "3,4", + "4,4", + "4,5", + "5,5", + "5,4", + "6,4", + "7,4", + "8,5", + { + "w": 1.75 + }, + "0,7", + "1,6", + "6,3" + ], + [ + { + "w": 1.25 + }, + "0,6", + { + "w": 1.25 + }, + "0,5", + { + "w": 1.25 + }, + "0,2", + { + "w": 6.25 + }, + "0,1", + { + "w": 1.25 + }, + "3,6", + { + "w": 1.25 + }, + "3,3", + { + "x": 0.5 + }, + "0,3", + "1,5", + "2,5" + ] +] + } +} \ No newline at end of file