From a031ce9185f7151b703deb8c7159a916c017b470 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Audun=20F=C3=B8yen?= Date: Sat, 5 Oct 2024 23:21:01 +0200 Subject: [PATCH 01/10] Add Vial support for Werk Technica One (#796) --- .../werk_technica/one/keymaps/vial/config.h | 7 + .../werk_technica/one/keymaps/vial/keymap.c | 55 +++ .../werk_technica/one/keymaps/vial/rules.mk | 5 + .../werk_technica/one/keymaps/vial/vial.json | 359 ++++++++++++++++++ 4 files changed, 426 insertions(+) create mode 100644 keyboards/werk_technica/one/keymaps/vial/config.h create mode 100644 keyboards/werk_technica/one/keymaps/vial/keymap.c create mode 100644 keyboards/werk_technica/one/keymaps/vial/rules.mk create mode 100644 keyboards/werk_technica/one/keymaps/vial/vial.json diff --git a/keyboards/werk_technica/one/keymaps/vial/config.h b/keyboards/werk_technica/one/keymaps/vial/config.h new file mode 100644 index 0000000000..e3665e6002 --- /dev/null +++ b/keyboards/werk_technica/one/keymaps/vial/config.h @@ -0,0 +1,7 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#pragma once + +#define VIAL_KEYBOARD_UID {0x44, 0xF1, 0x06, 0xC9, 0x51, 0x2B, 0x4F, 0x2F} +#define VIAL_UNLOCK_COMBO_ROWS { 0, 2 } +#define VIAL_UNLOCK_COMBO_COLS { 0, 13 } \ No newline at end of file diff --git a/keyboards/werk_technica/one/keymaps/vial/keymap.c b/keyboards/werk_technica/one/keymaps/vial/keymap.c new file mode 100644 index 0000000000..6d172db617 --- /dev/null +++ b/keyboards/werk_technica/one/keymaps/vial/keymap.c @@ -0,0 +1,55 @@ +/* Copyright 2023 Moritz Plattner + * + * 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 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_all( /* keymap for layer 0 */ + KC_ESC, 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_PSCR, LT(2, KC_MUTE), + 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_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_NUBS, 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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, LT(1, KC_APP), KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_all( /* keymap for layer 1 */ + 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_MPLY, + 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_INS, + 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_HOME, + 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_END, + 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, MO(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT_all( /* keymap for layer 2 */ + 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, 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, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, 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 + ), + +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(KC_BRID, KC_BRIU) }, + [2] = { ENCODER_CCW_CW(KC_MPRV, KC_MNXT) }, +}; +#endif diff --git a/keyboards/werk_technica/one/keymaps/vial/rules.mk b/keyboards/werk_technica/one/keymaps/vial/rules.mk new file mode 100644 index 0000000000..6da3d729f1 --- /dev/null +++ b/keyboards/werk_technica/one/keymaps/vial/rules.mk @@ -0,0 +1,5 @@ +ENCODER_MAP_ENABLE = yes + +# VIAL support: https://get.vial.today/docs/porting-to-vial.html +VIA_ENABLE = yes +VIAL_ENABLE = yes \ No newline at end of file diff --git a/keyboards/werk_technica/one/keymaps/vial/vial.json b/keyboards/werk_technica/one/keymaps/vial/vial.json new file mode 100644 index 0000000000..f47dce8672 --- /dev/null +++ b/keyboards/werk_technica/one/keymaps/vial/vial.json @@ -0,0 +1,359 @@ +{ + "name": "werk.technica's One", + "vendorId": "0x7774", + "productId": "0x0001", + "matrix": { + "rows": 6, + "cols": 15 + }, + "layouts": { + "labels": [ + "Split Backspace", + "ISO Enter", + "Split Left Shift", + [ + "Bottom Row", + "6.25u Regular", + "6u Tsangan", + "Split 2.75/1.25/2.25", + "Split 2.25/1.25/2.75" + ], + "Encoder" + ], + "keymap": [ + [ + { + "x": 2.75, + "c": "#777777" + }, + "0,0", + { + "x": 0.25, + "c": "#cccccc" + }, + "0,1", + "0,2", + "0,3", + "0,4", + { + "x": 0.25, + "c": "#aaaaaa" + }, + "0,5", + "0,6", + "0,7", + "0,8", + { + "x": 0.25, + "c": "#cccccc" + }, + "0,9", + "0,10", + "0,11", + "0,12", + { + "x": 0.25, + "c": "#aaaaaa" + }, + "0,13", + { + "x": 0.25, + "d": true + }, + "\n\n\n4,0", + { + "x": 0.75 + }, + "3,13\n\n\n4,1\n\n\n\n\n\ne0" + ], + [ + { + "y": 0.25, + "x": 2.75, + "c": "#cccccc" + }, + "1,0", + "1,1", + "1,2", + "1,3", + "1,4", + "1,5", + "1,6", + "1,7", + "1,8", + "1,9", + "1,10", + "1,11", + "1,12", + { + "c": "#aaaaaa", + "w": 2 + }, + "0,14\n\n\n0,0", + { + "x": 0.25 + }, + "1,14", + { + "x": 0.75, + "c": "#cccccc" + }, + "1,13\n\n\n0,1", + { + "c": "#aaaaaa" + }, + "0,14\n\n\n0,1" + ], + [ + { + "x": 2.75, + "w": 1.5 + }, + "2,0", + { + "c": "#cccccc" + }, + "2,1", + "2,2", + "2,3", + "2,4", + "2,5", + "2,6", + "2,7", + "2,8", + "2,9", + "2,10", + "2,11", + "2,12", + { + "w": 1.5 + }, + "2,13\n\n\n1,0", + { + "x": 0.25, + "c": "#aaaaaa" + }, + "2,14", + { + "x": 1.5, + "c": "#777777", + "w": 1.25, + "h": 2, + "w2": 1.5, + "h2": 1, + "x2": -0.25 + }, + "2,13\n\n\n1,1" + ], + [ + { + "x": 2.75, + "c": "#aaaaaa", + "w": 1.75 + }, + "3,0", + { + "c": "#cccccc" + }, + "3,1", + "3,2", + "3,3", + "3,4", + { + "n": true + }, + "3,5", + "3,6", + "3,7", + { + "n": true + }, + "3,8", + "3,9", + "3,10", + "3,11", + { + "c": "#777777", + "w": 2.25 + }, + "3,12\n\n\n1,0", + { + "x": 0.25, + "c": "#aaaaaa" + }, + "3,14", + { + "x": 0.5, + "c": "#cccccc" + }, + "3,12\n\n\n1,1" + ], + [ + { + "c": "#aaaaaa", + "w": 1.25 + }, + "4,0\n\n\n2,1", + { + "c": "#cccccc" + }, + "4,1\n\n\n2,1", + { + "x": 0.5, + "c": "#aaaaaa", + "w": 2.25 + }, + "4,0\n\n\n2,0", + { + "c": "#cccccc" + }, + "4,2", + "4,3", + "4,4", + "4,5", + "4,6", + "4,7", + "4,8", + "4,9", + "4,10", + "4,11", + { + "c": "#aaaaaa", + "w": 1.75 + }, + "4,12" + ], + [ + { + "y": -0.75, + "x": 17, + "c": "#cccccc" + }, + "4,13" + ], + [ + { + "y": -0.25, + "x": 2.75, + "c": "#aaaaaa", + "w": 1.25 + }, + "5,0\n\n\n3,0", + { + "w": 1.25 + }, + "5,1\n\n\n3,0", + { + "w": 1.25 + }, + "5,2\n\n\n3,0", + { + "c": "#cccccc", + "w": 6.25 + }, + "5,6\n\n\n3,0", + { + "c": "#aaaaaa", + "w": 1.5 + }, + "5,10", + { + "w": 1.5 + }, + "5,11" + ], + [ + { + "y": -0.75, + "x": 16, + "c": "#cccccc" + }, + "5,12", + "5,13", + "5,14" + ], + [ + { + "x": 2.75, + "c": "#aaaaaa", + "w": 1.5 + }, + "5,0\n\n\n3,1", + "5,1\n\n\n3,1", + { + "w": 1.5 + }, + "5,2\n\n\n3,1", + { + "c": "#cccccc", + "w": 6 + }, + "5,6\n\n\n3,1" + ], + [ + { + "y": 0.25, + "x": 2.75, + "c": "#aaaaaa", + "w": 1.25 + }, + "5,0\n\n\n3,2", + { + "w": 1.25 + }, + "5,1\n\n\n3,2", + { + "w": 1.25 + }, + "5,2\n\n\n3,2", + { + "c": "#cccccc", + "w": 2.75 + }, + "5,4\n\n\n3,2", + { + "c": "#aaaaaa", + "w": 1.25 + }, + "5,6\n\n\n3,2", + { + "c": "#cccccc", + "w": 2.25 + }, + "5,8\n\n\n3,2" + ], + [ + { + "y": 0.25, + "x": 2.75, + "c": "#aaaaaa", + "w": 1.25 + }, + "5,0\n\n\n3,3", + { + "w": 1.25 + }, + "5,1\n\n\n3,3", + { + "w": 1.25 + }, + "5,2\n\n\n3,3", + { + "c": "#cccccc", + "w": 2.25 + }, + "5,4\n\n\n3,3", + { + "c": "#aaaaaa", + "w": 1.25 + }, + "5,6\n\n\n3,3", + { + "c": "#cccccc", + "w": 2.75 + }, + "5,8\n\n\n3,3" + ] + ] + } + } \ No newline at end of file From 539b274b28708649f83986892edc1f212d0e827d Mon Sep 17 00:00:00 2001 From: Ran Lottem Date: Sun, 6 Oct 2024 23:47:48 +0300 Subject: [PATCH 02/10] Add support for Kaly42 (#787) https://github.com/Dwctor/Kaly Co-authored-by: randov --- keyboards/kaly/kaly42/keymaps/vial/config.h | 10 + keyboards/kaly/kaly42/keymaps/vial/keymap.c | 27 ++ keyboards/kaly/kaly42/keymaps/vial/rules.mk | 2 + keyboards/kaly/kaly42/keymaps/vial/vial.json | 269 +++++++++++++++++++ 4 files changed, 308 insertions(+) create mode 100644 keyboards/kaly/kaly42/keymaps/vial/config.h create mode 100644 keyboards/kaly/kaly42/keymaps/vial/keymap.c create mode 100644 keyboards/kaly/kaly42/keymaps/vial/rules.mk create mode 100644 keyboards/kaly/kaly42/keymaps/vial/vial.json diff --git a/keyboards/kaly/kaly42/keymaps/vial/config.h b/keyboards/kaly/kaly42/keymaps/vial/config.h new file mode 100644 index 0000000000..3e9c1e6a97 --- /dev/null +++ b/keyboards/kaly/kaly42/keymaps/vial/config.h @@ -0,0 +1,10 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#pragma once + + +/* copied from cantor */ +#define VIAL_UNLOCK_COMBO_ROWS { 0, 4 } +#define VIAL_UNLOCK_COMBO_COLS { 0, 5 } + +#define VIAL_KEYBOARD_UID {0x15, 0x56, 0x94, 0x28, 0x02, 0xBB, 0x66, 0xBE} \ No newline at end of file diff --git a/keyboards/kaly/kaly42/keymaps/vial/keymap.c b/keyboards/kaly/kaly42/keymaps/vial/keymap.c new file mode 100644 index 0000000000..54d46c54db --- /dev/null +++ b/keyboards/kaly/kaly42/keymaps/vial/keymap.c @@ -0,0 +1,27 @@ +// Copyright 2023 Kael Soares Augusto (@Dwctor) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┐ + * │Tab│ Q │ W │ E │ R │ T │ │ Y │ U │ I │ O │ P │Bsp│ + * ├───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┤ + * │Ctl│ A │ S │ D │ F │ G │ │ H │ J │ K │ L │ ; │ ' │ + * ├───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┤ + * │Sft│ Z │ X │ C │ V │ B │ │ N │ M │ , │ . │ / │Sft│ + * └───┴───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┴───┘ + * ┌───┐ ┌───┐ + * │GUI├───┐ ┌───┤Alt│ + * └───┤Bsp├───┐ ┌───┤Ent├───┘ + * └───┤ │ │ ├───┘ + * └───┘ └───┘ + */ + [0] = LAYOUT_split_3x6_3( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + 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_LGUI, KC_BSPC, KC_SPC, KC_SPC, KC_ENT, KC_RALT + ) +}; diff --git a/keyboards/kaly/kaly42/keymaps/vial/rules.mk b/keyboards/kaly/kaly42/keymaps/vial/rules.mk new file mode 100644 index 0000000000..6bc7063adc --- /dev/null +++ b/keyboards/kaly/kaly42/keymaps/vial/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +VIAL_ENABLE = yes \ No newline at end of file diff --git a/keyboards/kaly/kaly42/keymaps/vial/vial.json b/keyboards/kaly/kaly42/keymaps/vial/vial.json new file mode 100644 index 0000000000..3df49502f7 --- /dev/null +++ b/keyboards/kaly/kaly42/keymaps/vial/vial.json @@ -0,0 +1,269 @@ +{ + "name": "kaly42", + "lighting": "none", + "vendorId": "0xFEED", + "productId": "0x0000", + "matrix": { + "rows": 8, + "cols": 6 + }, + "layouts": { + "keymap": [ + [ + { + "x": 3 + }, + "0,3", + { + "x": 7 + }, + "4,2" + ], + [ + { + "y": -0.75, + "x": 2 + }, + "0,2", + { + "x": 1 + }, + "0,4", + { + "x": 5 + }, + "4,1", + { + "x": 1 + }, + "4,3" + ], + [ + { + "y": -0.85, + "x": 5 + }, + "0,5", + { + "x": 3 + }, + "4,0" + ], + [ + { + "y": -0.4999999999999999 + }, + "0,0", + "0,1", + { + "x": 11 + }, + "4,4", + "4,5" + ], + [ + { + "y": -0.8999999999999999, + "x": 3 + }, + "1,3", + { + "x": 7 + }, + "5,2" + ], + [ + { + "y": -0.75, + "x": 2 + }, + "1,2", + { + "x": 1 + }, + "1,4", + { + "x": 5 + }, + "5,1", + { + "x": 1 + }, + "5,3" + ], + [ + { + "y": -0.8500000000000001, + "x": 5 + }, + "1,5", + { + "x": 3 + }, + "5,0" + ], + [ + { + "y": -0.5 + }, + "1,0", + "1,1", + { + "x": 11 + }, + "5,4", + "5,5" + ], + [ + { + "y": -0.8999999999999999, + "x": 3 + }, + "2,3", + { + "x": 7 + }, + "6,2" + ], + [ + { + "y": -0.75, + "x": 2 + }, + "2,2", + { + "x": 1 + }, + "2,4", + { + "x": 5 + }, + "6,1", + { + "x": 1 + }, + "6,3" + ], + [ + { + "y": -0.8500000000000001, + "x": 5 + }, + "2,5", + { + "x": 3 + }, + "6,0" + ], + [ + { + "y": -0.5 + }, + "2,0", + "2,1", + { + "x": 11 + }, + "6,4", + "6,5" + ], + [ + { + "r": 15, + "y": -1.9, + "x": 5.25 + }, + "3,0" + ], + [ + { + "r": 32, + "y": -2.95, + "x": 6.85 + }, + "3,1" + ], + [ + { + "r": 46, + "rx": 15, + "y": 7.9, + "x": -1.6099999999999994 + }, + "7,0" + ], + [ + { + "r": -46, + "rx": 0, + "y": 7.9, + "x": 0.61 + }, + "3,2" + ], + [ + { + "r": -32, + "rx": 15, + "y": 0.05, + "x": -7.85 + }, + "7,1" + ], + [ + { + "r": -15, + "y": 0.95, + "x": -6.25 + }, + "7,2" + ] +], + "LAYOUT_split_3x6_3": { + "layout": [ + { "matrix": [0, 0], "x": 0, "y": 0.25 }, + { "matrix": [0, 1], "x": 1, "y": 0.25 }, + { "matrix": [0, 2], "x": 2, "y": 0.125 }, + { "matrix": [0, 3], "x": 3, "y": 0 }, + { "matrix": [0, 4], "x": 4, "y": 0.125 }, + { "matrix": [0, 5], "x": 5, "y": 0.25 }, + { "matrix": [4, 0], "x": 8, "y": 0.25 }, + { "matrix": [4, 1], "x": 9, "y": 0.125 }, + { "matrix": [4, 2], "x": 10, "y": 0 }, + { "matrix": [4, 3], "x": 11, "y": 0.125 }, + { "matrix": [4, 4], "x": 12, "y": 0.25 }, + { "matrix": [4, 5], "x": 13, "y": 0.25 }, + { "matrix": [1, 0], "x": 0, "y": 1.25 }, + { "matrix": [1, 1], "x": 1, "y": 1.25 }, + { "matrix": [1, 2], "x": 2, "y": 1.125 }, + { "matrix": [1, 3], "x": 3, "y": 1 }, + { "matrix": [1, 4], "x": 4, "y": 1.125 }, + { "matrix": [1, 5], "x": 5, "y": 1.25 }, + { "matrix": [5, 0], "x": 8, "y": 1.25 }, + { "matrix": [5, 1], "x": 9, "y": 1.125 }, + { "matrix": [5, 2], "x": 10, "y": 1 }, + { "matrix": [5, 3], "x": 11, "y": 1.125 }, + { "matrix": [5, 4], "x": 12, "y": 1.25 }, + { "matrix": [5, 5], "x": 13, "y": 1.25 }, + { "matrix": [2, 0], "x": 0, "y": 2.25 }, + { "matrix": [2, 1], "x": 1, "y": 2.25 }, + { "matrix": [2, 2], "x": 2, "y": 2.125 }, + { "matrix": [2, 3], "x": 3, "y": 2 }, + { "matrix": [2, 4], "x": 4, "y": 2.125 }, + { "matrix": [2, 5], "x": 5, "y": 2.25 }, + { "matrix": [6, 0], "x": 8, "y": 2.25 }, + { "matrix": [6, 1], "x": 9, "y": 2.125 }, + { "matrix": [6, 2], "x": 10, "y": 2 }, + { "matrix": [6, 3], "x": 11, "y": 2.125 }, + { "matrix": [6, 4], "x": 12, "y": 2.25 }, + { "matrix": [6, 5], "x": 13, "y": 2.25 }, + { "matrix": [3, 0], "x": 3.5, "y": 3.25 }, + { "matrix": [3, 1], "x": 4.5, "y": 3.5 }, + { "matrix": [3, 2], "x": 5.5, "y": 3.75 }, + { "matrix": [7, 0], "x": 7.5, "y": 3.75 }, + { "matrix": [7, 1], "x": 8.5, "y": 3.5 }, + { "matrix": [7, 2], "x": 9.5, "y": 3.25 } + ] + } + } +} From 3b614a95e52db8b020e7f791e512425352771408 Mon Sep 17 00:00:00 2001 From: arrowmaster Date: Sun, 6 Oct 2024 16:48:08 -0400 Subject: [PATCH 03/10] Add Vial support for planck/light (#790) --- keyboards/planck/light/keymaps/vial/config.h | 36 +++++++ keyboards/planck/light/keymaps/vial/keymap.c | 94 +++++++++++++++++++ keyboards/planck/light/keymaps/vial/rules.mk | 7 ++ keyboards/planck/light/keymaps/vial/vial.json | 81 ++++++++++++++++ 4 files changed, 218 insertions(+) create mode 100644 keyboards/planck/light/keymaps/vial/config.h create mode 100644 keyboards/planck/light/keymaps/vial/keymap.c create mode 100644 keyboards/planck/light/keymaps/vial/rules.mk create mode 100644 keyboards/planck/light/keymaps/vial/vial.json diff --git a/keyboards/planck/light/keymaps/vial/config.h b/keyboards/planck/light/keymaps/vial/config.h new file mode 100644 index 0000000000..b27aa499b7 --- /dev/null +++ b/keyboards/planck/light/keymaps/vial/config.h @@ -0,0 +1,36 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#pragma once + +#ifdef AUDIO_ENABLE +# define STARTUP_SONG SONG(PLANCK_SOUND) +// #define STARTUP_SONG SONG(NO_SOUND) +#endif + +/* + * MIDI options + */ + +/* enable basic MIDI features: + - MIDI notes can be sent when in Music mode is on +*/ + +#define MIDI_BASIC + +/* enable advanced MIDI features: + - MIDI notes can be added to the keymap + - Octave shift and transpose + - Virtual sustain, portamento, and modulation wheel + - etc. +*/ +//#define MIDI_ADVANCED + +/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ +//#define MIDI_TONE_KEYCODE_OCTAVES 2 + +#define VIAL_KEYBOARD_UID {0x7B, 0xA5, 0x7F, 0x5C, 0x13, 0x4C, 0x8D, 0x69} +#define DYNAMIC_KEYMAP_LAYER_COUNT 8 + +// Unlock combo is set to 'Escape' + 'Space' +#define VIAL_UNLOCK_COMBO_ROWS { 0, 3 } +#define VIAL_UNLOCK_COMBO_COLS { 0, 5 } diff --git a/keyboards/planck/light/keymaps/vial/keymap.c b/keyboards/planck/light/keymaps/vial/keymap.c new file mode 100644 index 0000000000..02636b3a4b --- /dev/null +++ b/keyboards/planck/light/keymaps/vial/keymap.c @@ -0,0 +1,94 @@ +/* Copyright 2015-2017 Jack Humbert + * Updated 2020 mixedfeelings + * + * 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 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* Qwerty + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Esc | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ + [0] = LAYOUT_ortho_4x12 ( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SC_SENT, + KC_NO, KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + + /* Lower + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | |Adjust| Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ + [1] = LAYOUT_ortho_4x12 ( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, + KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ), + + /* Raise + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / |Pg Up |Pg Dn | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | |Adjust| | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ + [2] = LAYOUT_ortho_4x12 ( + 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_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, + KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ), + + /* Utility + * ,-----------------------------------------------------------------------------------. + * | |Boot | | | | | | | | | |Del | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ + [3] = LAYOUT_ortho_4x12 ( + KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, + 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) + +}; diff --git a/keyboards/planck/light/keymaps/vial/rules.mk b/keyboards/planck/light/keymaps/vial/rules.mk new file mode 100644 index 0000000000..9dbbcc4c49 --- /dev/null +++ b/keyboards/planck/light/keymaps/vial/rules.mk @@ -0,0 +1,7 @@ +VIA_ENABLE = yes +VIAL_ENABLE = yes +VIALRGB_ENABLE = yes +LTO_ENABLE = yes + +# Not enough USB endpoints +CONSOLE_ENABLE = no diff --git a/keyboards/planck/light/keymaps/vial/vial.json b/keyboards/planck/light/keymaps/vial/vial.json new file mode 100644 index 0000000000..3aec27f989 --- /dev/null +++ b/keyboards/planck/light/keymaps/vial/vial.json @@ -0,0 +1,81 @@ +{ + "name": "OLKB Planck Light", + "lighting": "vialrgb", + "matrix": {"rows": 4, "cols": 12}, + "layouts": { + "labels": [["Layout", "MIT (1x2u)", "Grid (2x1u)"]], + "keymap": [ + [ + {"c":"#aaaaaa"}, + "0,0", + {"c":"#cccccc"}, + "0,1", + "0,2", + "0,3", + "0,4", + "0,5", + "0,6", + "0,7", + "0,8", + "0,9", + "0,10", + {"c":"#aaaaaa"}, + "0,11" + ], + [ + "1,0", + {"c":"#cccccc"}, + "1,1", + "1,2", + "1,3", + "1,4", + "1,5", + "1,6", + "1,7", + "1,8", + "1,9", + "1,10", + {"c":"#aaaaaa"}, + "1,11" + ], + [ + "2,0", + {"c":"#cccccc"}, + "2,1", + "2,2", + "2,3", + "2,4", + "2,5", + "2,6", + "2,7", + "2,8", + "2,9", + "2,10", + {"c":"#aaaaaa"}, + "2,11" + ], + [ + "3,0", + "3,1", + "3,2", + "3,3", + {"c":"#777777"}, + "3,4", + {"c":"#cccccc","w":2}, + "3,5\n\n\n0,0", + {"c":"#777777"}, + "3,7", + {"c":"#aaaaaa"}, + "3,8", + "3,9", + "3,10", + "3,11" + ], + [ + {"y":0.25,"x":5,"c":"#cccccc"}, + "3,5\n\n\n0,1", + "3,6\n\n\n0,1" + ] + ] + } +} From 762336b325fddd26e8c9fa1c7544af56dccd891c Mon Sep 17 00:00:00 2001 From: molusk Date: Sun, 6 Oct 2024 22:49:20 +0200 Subject: [PATCH 04/10] Port vial to Idobao ID75 ortholinear keyboard (#792) * Port VIAL to Idobao ID75 v1 (undreglow only model) * Update readme.md Added details about v2 board and keymap picture. * Update readme.md Switched to a better picture of the keymap. --------- Co-authored-by: manu --- keyboards/idobao/id75/keymaps/vial/config.h | 35 +++++++ keyboards/idobao/id75/keymaps/vial/keymap.c | 52 +++++++++++ keyboards/idobao/id75/keymaps/vial/readme.md | 43 +++++++++ keyboards/idobao/id75/keymaps/vial/rules.mk | 19 ++++ keyboards/idobao/id75/keymaps/vial/vial.json | 96 ++++++++++++++++++++ 5 files changed, 245 insertions(+) create mode 100644 keyboards/idobao/id75/keymaps/vial/config.h create mode 100644 keyboards/idobao/id75/keymaps/vial/keymap.c create mode 100644 keyboards/idobao/id75/keymaps/vial/readme.md create mode 100644 keyboards/idobao/id75/keymaps/vial/rules.mk create mode 100644 keyboards/idobao/id75/keymaps/vial/vial.json diff --git a/keyboards/idobao/id75/keymaps/vial/config.h b/keyboards/idobao/id75/keymaps/vial/config.h new file mode 100644 index 0000000000..cf5fafde37 --- /dev/null +++ b/keyboards/idobao/id75/keymaps/vial/config.h @@ -0,0 +1,35 @@ +#pragma once + +#define VIAL_KEYBOARD_UID {0xDC, 0x0B, 0x71, 0xF9, 0x24, 0xBD, 0x07, 0xB4} +#define VIAL_UNLOCK_COMBO_ROWS {0, 1} +#define VIAL_UNLOCK_COMBO_COLS {0, 1} + +//#define DYNAMIC_KEYMAP_LAYER_COUNT 4 +//#define DYNAMIC_KEYMAP_MACRO_COUNT 8 +//#define VIAL_COMBO_ENTRIES 8 // number of combos used, each entry take 10 byte in EEPROM +//#define VIAL_TAP_DANCE_ENTRIES 8 // number of tap dances used, each entry take 10 byte in EEPROM +//#define VIAL_KEY_OVERRIDE_ENTRIES 8 // number of key override used, each entry take 10 byte in EEPROM +//#define RGB_MATRIX_FRAMEBUFFER_EFFECTS +//#define RGB_MATRIX_KEYPRESSES + +#undef LOCKING_SUPPORT_ENABLE +#undef LOCKING_RESYNC_ENABLE + +#define NO_ACTION_ONESHOT +#define NO_ACTION_TAPPING + +#define NO_MUSIC_MODE + +#define LAYER_STATE_8BIT + +#undef RGBLIGHT_EFFECT_BREATHING +#undef RGBLIGHT_EFFECT_SNAKE +#undef RGBLIGHT_EFFECT_KNIGHT +#undef RGBLIGHT_EFFECT_CHRISTMAS +#undef RGBLIGHT_EFFECT_STATIC_GRADIENT +#undef RGBLIGHT_EFFECT_RGB_TEST +#undef RGBLIGHT_EFFECT_ALTERNATING +#undef RGBLIGHT_EFFECT_TWINKLE + +//#define RGB_MATRIX_LED_COUNT 16 +//#define DRIVER_LED_TOTAL 48 \ No newline at end of file diff --git a/keyboards/idobao/id75/keymaps/vial/keymap.c b/keyboards/idobao/id75/keymaps/vial/keymap.c new file mode 100644 index 0000000000..410ef5c4ca --- /dev/null +++ b/keyboards/idobao/id75/keymaps/vial/keymap.c @@ -0,0 +1,52 @@ +/* Copyright 2020 IFo Hancroft + * + * 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 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_ortho_5x15( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_DEL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_PSCR, + KC_GRV, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_BSPC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_CAPS, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_ENT, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_ENT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, LCA(KC_A), KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_SPC, KC_SPC, TG(1), KC_RALT, KC_RCTL, LGUI(KC_L), KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_ortho_5x15( + QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_NO, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PWR, + EE_CLR, KC_BRIU, RGB_SAI, RGB_VAI, RGB_HUI, RGB_SPI, RGB_MOD, KC_WH_U, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, KC_NO, KC_SLEP, KC_WAKE, + DB_TOGG, KC_BRID, RGB_SAD, RGB_VAD, RGB_HUD, RGB_SPD, RGB_RMOD, KC_WH_D, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, KC_NO, KC_NO, KC_HOME, + KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_TOG, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MUTE, KC_VOLU, KC_END, + KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MPRV, KC_VOLD, KC_MNXT + ), + + [2] = LAYOUT_ortho_5x15( + 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, 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, 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 + ), + + [3] = LAYOUT_ortho_5x15( + 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, 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, 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 + ), + +}; diff --git a/keyboards/idobao/id75/keymaps/vial/readme.md b/keyboards/idobao/id75/keymaps/vial/readme.md new file mode 100644 index 0000000000..1fc0bde5cb --- /dev/null +++ b/keyboards/idobao/id75/keymaps/vial/readme.md @@ -0,0 +1,43 @@ +# Typematrix-like keymap with VIAL support for Idobao/ID75 v1 5x15 ortholinear keyboard + +I use it with bépo configured system. +Compatible with VIA and VIAL. Underglow available. + +![image](https://github.com/user-attachments/assets/11690e69-5a90-4032-96fa-311df556acb2) + +Due to limitations of atmega32u4 chip, some features where disabled to get enougth space to enable VIAL based on this documentation: https://docs.qmk.fm/#/squeezing_avr. It maybe possible to reenable some of them depending on what you may need. + +``` + * The firmware size is fine - 26640/28672 (92%, 2032 bytes free) +``` +## Compatibility + +This keymap should work with both v1 and v2 boards as they feature the same chip (Atmega32u4) but v2's RGB matrix is not enabled. +I only have a v1 board and can't test anything regarding v2. + +## List of disabled features + +RGB matrix is not disabled explicitly. + +In rules.mk + - SPACE_CADET_ENABLE = no + - GRAVE_ESC_ENABLE = no + - MAGIC_ENABLE = no + - MUSIC_ENABLE = no + + In config.h + - #undef LOCKING_SUPPORT_ENABLE #Disables Cherry MX lock switch + - #undef LOCKING_RESYNC_ENABLE #Disables Cherry MX lock switch + - #define NO_ACTION_ONESHOT #Disables oneshots + - #define NO_ACTION_TAPPING #Disables tapping keys + - #define NO_MUSIC_MODE #Disables RGB matrix feature, you won't miss as RGB matrix is disabled too (v1 of the keeb has no RGB matrix anyway) + - #define LAYER_STATE_8BIT #Limits number of layers to 8, you may try up to 16 layers with `LAYER_STATE_16BIT` + The following ones disable some underglow effects, this is a good way to limit firmware size, choose the ones you like (I kept `RGBLIGHT_EFFECT_RAINBOW_MOOD` and `RGBLIGHT_EFFECT_RAINBOW_SWIRL`) + - #undef RGBLIGHT_EFFECT_BREATHING + - #undef RGBLIGHT_EFFECT_SNAKE + - #undef RGBLIGHT_EFFECT_KNIGHT + - #undef RGBLIGHT_EFFECT_CHRISTMAS + - #undef RGBLIGHT_EFFECT_STATIC_GRADIENT + - #undef RGBLIGHT_EFFECT_RGB_TEST + - #undef RGBLIGHT_EFFECT_ALTERNATING + - #undef RGBLIGHT_EFFECT_TWINKLE diff --git a/keyboards/idobao/id75/keymaps/vial/rules.mk b/keyboards/idobao/id75/keymaps/vial/rules.mk new file mode 100644 index 0000000000..d98a0d055d --- /dev/null +++ b/keyboards/idobao/id75/keymaps/vial/rules.mk @@ -0,0 +1,19 @@ +VIA_ENABLE = yes + +VIAL_ENABLE = yes +LTO_ENABLE = yes # reduce firmware size +#VIALRGB_ENABLE = yes +#RGB_MATRIX_ENABLE= yes + +#RGB_MATRIX_DRIVER = is31fl3746a + +COMBO_ENABLE = no + +SPACE_CADET_ENABLE = no +GRAVE_ESC_ENABLE = no +MAGIC_ENABLE = no + +AVR_USE_MINIMAL_PRINTF = yes + +MUSIC_ENABLE = no + diff --git a/keyboards/idobao/id75/keymaps/vial/vial.json b/keyboards/idobao/id75/keymaps/vial/vial.json new file mode 100644 index 0000000000..4302a23d27 --- /dev/null +++ b/keyboards/idobao/id75/keymaps/vial/vial.json @@ -0,0 +1,96 @@ +{ + "name": "Idobao ID75 V1", + "vendorId": "0x6964", + "productId": "0x0075", + "lighting": "qmk_rgblight", + "matrix": { "rows": 5, "cols": 15 }, + "layouts": { + "keymap": [ + [ + "0,0", + "0,1", + "0,2", + "0,3", + "0,4", + "0,5", + "0,6", + "0,7", + "0,8", + "0,9", + "0,10", + "0,11", + "0,12", + "0,13", + "0,14" + ], + [ + "1,0", + "1,1", + "1,2", + "1,3", + "1,4", + "1,5", + "1,6", + "1,7", + "1,8", + "1,9", + "1,10", + "1,11", + "1,12", + "1,13", + "1,14" + ], + [ + "2,0", + "2,1", + "2,2", + "2,3", + "2,4", + "2,5", + "2,6", + "2,7", + "2,8", + "2,9", + "2,10", + "2,11", + "2,12", + "2,13", + "2,14" + ], + [ + "3,0", + "3,1", + "3,2", + "3,3", + "3,4", + "3,5", + "3,6", + "3,7", + "3,8", + "3,9", + "3,10", + "3,11", + "3,12", + "3,13", + "3,14" + ], + [ + "4,0", + "4,1", + "4,2", + "4,3", + "4,4", + "4,5", + "4,6", + "4,7", + "4,8", + "4,9", + "4,10", + "4,11", + "4,12", + "4,13", + "4,14" + ] + ] + } +} From bd93d9cdcabe376dcfba3bbf6321a2c3da884682 Mon Sep 17 00:00:00 2001 From: "Peter J. Jones" Date: Sun, 6 Oct 2024 22:50:12 +0200 Subject: [PATCH 05/10] Add support for keebio/quefrency revisions 3 and 5 (#794) --- .../quefrency/rev3/keymaps/vial/config.h | 13 + .../quefrency/rev3/keymaps/vial/keymap.c | 48 ++ .../quefrency/rev3/keymaps/vial/rules.mk | 26 + .../quefrency/rev3/keymaps/vial/vial.json | 504 ++++++++++++++++++ .../quefrency/rev5/keymaps/vial/config.h | 12 + .../quefrency/rev5/keymaps/vial/keymap.c | 42 ++ .../quefrency/rev5/keymaps/vial/rules.mk | 26 + .../quefrency/rev5/keymaps/vial/vial.json | 292 ++++++++++ 8 files changed, 963 insertions(+) create mode 100644 keyboards/keebio/quefrency/rev3/keymaps/vial/config.h create mode 100644 keyboards/keebio/quefrency/rev3/keymaps/vial/keymap.c create mode 100644 keyboards/keebio/quefrency/rev3/keymaps/vial/rules.mk create mode 100644 keyboards/keebio/quefrency/rev3/keymaps/vial/vial.json create mode 100644 keyboards/keebio/quefrency/rev5/keymaps/vial/config.h create mode 100644 keyboards/keebio/quefrency/rev5/keymaps/vial/keymap.c create mode 100644 keyboards/keebio/quefrency/rev5/keymaps/vial/rules.mk create mode 100644 keyboards/keebio/quefrency/rev5/keymaps/vial/vial.json diff --git a/keyboards/keebio/quefrency/rev3/keymaps/vial/config.h b/keyboards/keebio/quefrency/rev3/keymaps/vial/config.h new file mode 100644 index 0000000000..a2fa24096d --- /dev/null +++ b/keyboards/keebio/quefrency/rev3/keymaps/vial/config.h @@ -0,0 +1,13 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#pragma once + +#define VIAL_KEYBOARD_UID {0xBF, 0x59, 0x7D, 0x4C, 0xDF, 0x1C, 0xBC, 0x81} + +#define VIAL_UNLOCK_COMBO_ROWS { 0, 7 } +#define VIAL_UNLOCK_COMBO_COLS { 2, 7 } + +// Reduce the firmware size! +#undef LOCKING_SUPPORT_ENABLE +#undef LOCKING_RESYNC_ENABLE +#define LAYER_STATE_8BIT diff --git a/keyboards/keebio/quefrency/rev3/keymaps/vial/keymap.c b/keyboards/keebio/quefrency/rev3/keymaps/vial/keymap.c new file mode 100644 index 0000000000..859ee21651 --- /dev/null +++ b/keyboards/keebio/quefrency/rev3/keymaps/vial/keymap.c @@ -0,0 +1,48 @@ +// Copyright 2022 Danny Nguyen (@nooges) +// SPDX-License-Identifier: GPL-2.0-or-later + +#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. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +enum custom_layer { + _BASE, + _FN1, +}; + +enum custom_keycodes { + QWERTY = SAFE_RANGE, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_65_with_macro( + KC_F1, KC_F2, 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_DEL, KC_BSPC, KC_HOME, + KC_F3, KC_F4, 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_END, + KC_F5, KC_F6, 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_PGUP, + KC_F7, KC_F8, 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_PGDN, + KC_F9, KC_F10, KC_LCTL, KC_LALT, KC_LGUI, MO(_FN1),KC_SPC, MO(_FN1),KC_SPC, KC_RALT, KC_RCTL, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_FN1] = LAYOUT_65_with_macro( + _______, _______, QK_GESC, 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_BSPC, _______, + _______, _______, RGB_TOG, RGB_MOD, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + +#ifdef ENCODER_MAP_ENABLE +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD), ENCODER_CCW_CW(KC_PGUP, KC_PGDN) }, + [1] = { ENCODER_CCW_CW(RGB_MOD, RGB_RMOD), ENCODER_CCW_CW(KC_MNXT, KC_MPRV) } +}; +#endif + +#ifndef MAGIC_ENABLE +uint16_t keycode_config(uint16_t keycode) { + return keycode; +} +#endif diff --git a/keyboards/keebio/quefrency/rev3/keymaps/vial/rules.mk b/keyboards/keebio/quefrency/rev3/keymaps/vial/rules.mk new file mode 100644 index 0000000000..ba9b0f3287 --- /dev/null +++ b/keyboards/keebio/quefrency/rev3/keymaps/vial/rules.mk @@ -0,0 +1,26 @@ +VIA_ENABLE = yes +VIAL_ENABLE = yes + +LTO_ENABLE = yes +QMK_SETTINGS = yes +ENCODER_ENABLE = yes +ENCODER_MAP_ENABLE = yes + +AVR_USE_MINIMAL_PRINTF = yes +EXTRAKEY_ENABLE = yes + +# Reduce the firmware size: +BACKLIGHT_ENABLE = no +BOOTMAGIC_ENABLE = no +COMBO_ENABLE = no +COMMAND_ENABLE = no +CONSOLE_ENABLE = no +GRAVE_ESC_ENABLE = no +KEY_OVERRIDE_ENABLE = no +LEADER_ENABLE = no +MAGIC_ENABLE = no +MOUSEKEY_ENABLE = no +RGB_MATRIX_ENABLE = no +SPACE_CADET_ENABLE = no +TAP_DANCE_ENABLE = no +VIALRGB_ENABLE = no diff --git a/keyboards/keebio/quefrency/rev3/keymaps/vial/vial.json b/keyboards/keebio/quefrency/rev3/keymaps/vial/vial.json new file mode 100644 index 0000000000..a897eaa90c --- /dev/null +++ b/keyboards/keebio/quefrency/rev3/keymaps/vial/vial.json @@ -0,0 +1,504 @@ +{ + "name": "Quefrency Rev. 3", + "vendorId": "0xCB10", + "productId": "0x3357", + "matrix": { + "rows": 10, + "cols": 9 + }, + "lighting": "qmk_backlight_rgblight", + "layouts": { + "labels": [ + [ + "Left Macropad", + "Enabled", + "W/Encoder", + "No Macro" + ], + "Split Left Shift", + [ + "Left Space", + "1.25-2.25u", + "2.25-1.25u", + "1.25-1-1.25u" + ], + "Split Backspace", + "ISO Enter", + [ + "Right Column", + "Enabled", + "W/Encoder", + "Disabled" + ], + [ + "Right Shift", + "1.75u Shift-1u", + "2.75u", + "1.75u /" + ], + [ + "Right Mods", + "6x1u", + "2x1.25u__3x1u", + "4x1.25u-1u" + ], + "Split Right Space" + ], + "keymap": [ + [ + { + "x": 1.75 + }, + "0,0\n\n\n0,1\n\n\n\n\n\ne", + { + "c": "#aaaaaa" + }, + "0,1\n\n\n0,1\n\n\n\n\n\ne", + { + "x": 0.25, + "c": "#cccccc", + "d": true + }, + "\n\n\n0,0", + { + "d": true + }, + "\n\n\n0,0", + { + "x": 16.5, + "c": "#aaaaaa", + "d": true + }, + "\n\n\n5,0", + { + "d": true + }, + "\n\n\n5,0", + { + "x": 3.75 + }, + "1,0\n\n\n5,1\n\n\n\n\n\ne", + "1,1\n\n\n5,1\n\n\n\n\n\ne" + ], + [ + { + "c": "#cccccc", + "d": true + }, + "0,0\n\n\n0,2", + { + "d": true + }, + "0,1\n\n\n0,2", + { + "x": 0.25, + "c": "#aaaaaa" + }, + "0,0\n\n\n0,1", + "0,1\n\n\n0,1", + { + "x": 0.25 + }, + "0,0\n\n\n0,0", + "0,1\n\n\n0,0", + { + "x": 0.5, + "c": "#777777" + }, + "0,2", + { + "c": "#cccccc" + }, + "0,3", + "0,4", + "0,5", + "0,6", + "0,7", + "0,8", + { + "x": 1 + }, + "5,0", + "5,1", + "5,2", + "5,3", + "5,4", + "5,5", + { + "c": "#aaaaaa", + "w": 2 + }, + "5,7\n\n\n3,0", + "5,8\n\n\n5,0", + { + "x": 0.75 + }, + "5,6\n\n\n3,1", + "5,7\n\n\n3,1", + { + "x": 2 + }, + "5,8\n\n\n5,1\n\n\n\n\n\ne1", + { + "x": 0.25, + "c": "#cccccc", + "d": true + }, + "5,8\n\n\n5,2" + ], + [ + { + "d": true + }, + "1,0\n\n\n0,2", + { + "d": true + }, + "1,1\n\n\n0,2", + { + "x": 0.25, + "c": "#aaaaaa" + }, + "1,0\n\n\n0,1", + "1,1\n\n\n0,1", + { + "x": 0.25 + }, + "1,0\n\n\n0,0", + "1,1\n\n\n0,0", + { + "x": 0.5, + "w": 1.5 + }, + "1,2", + { + "c": "#cccccc" + }, + "1,3", + "1,4", + "1,5", + "1,6", + "1,7", + { + "x": 1 + }, + "6,0", + "6,1", + "6,2", + "6,3", + "6,4", + "6,5", + "6,6", + { + "w": 1.5 + }, + "6,7\n\n\n4,0", + { + "c": "#aaaaaa" + }, + "6,8\n\n\n5,0", + { + "x": 2, + "c": "#777777", + "w": 1.25, + "h": 2, + "w2": 1.5, + "h2": 1, + "x2": -0.25 + }, + "7,7\n\n\n4,1", + { + "x": 1.5, + "c": "#aaaaaa" + }, + "6,8\n\n\n5,1", + { + "x": 0.25, + "c": "#cccccc", + "d": true + }, + "6,8\n\n\n5,2" + ], + [ + { + "d": true + }, + "2,0\n\n\n0,2", + { + "d": true + }, + "2,1\n\n\n0,2", + { + "x": 0.25, + "c": "#aaaaaa" + }, + "2,0\n\n\n0,1", + "2,1\n\n\n0,1", + { + "x": 0.25 + }, + "2,0\n\n\n0,0", + "2,1\n\n\n0,0", + { + "x": 0.5, + "w": 1.75 + }, + "2,2", + { + "c": "#cccccc" + }, + "2,3", + "2,4", + "2,5", + "2,6", + "2,7", + { + "x": 1 + }, + "7,0", + "7,1", + "7,2", + "7,3", + "7,4", + "7,5", + { + "c": "#777777", + "w": 2.25 + }, + "7,7\n\n\n4,0", + { + "c": "#aaaaaa" + }, + "7,8\n\n\n5,0", + { + "x": 1, + "c": "#cccccc" + }, + "7,6\n\n\n4,1", + { + "x": 2.75, + "c": "#aaaaaa" + }, + "7,8\n\n\n5,1", + { + "x": 0.25, + "c": "#cccccc", + "d": true + }, + "7,8\n\n\n5,2" + ], + [ + { + "d": true + }, + "3,0\n\n\n0,2", + { + "d": true + }, + "3,1\n\n\n0,2", + { + "x": 0.25, + "c": "#aaaaaa" + }, + "3,0\n\n\n0,1", + "3,1\n\n\n0,1", + { + "x": 0.25 + }, + "3,0\n\n\n0,0", + "3,1\n\n\n0,0", + { + "x": 0.5, + "w": 2.25 + }, + "3,2\n\n\n1,0", + { + "c": "#cccccc" + }, + "3,4", + "3,5", + "3,6", + "3,7", + "3,8", + { + "x": 1 + }, + "8,0", + "8,1", + "8,2", + "8,3", + "8,4\n\n\n6,0", + { + "c": "#aaaaaa", + "w": 1.75 + }, + "8,6\n\n\n6,0", + "8,7\n\n\n6,0", + "8,8\n\n\n5,0", + { + "x": 0.75, + "c": "#cccccc" + }, + "8,4\n\n\n6,1", + { + "c": "#aaaaaa", + "w": 2.75 + }, + "8,6\n\n\n6,1", + { + "x": 0.25 + }, + "8,8\n\n\n5,1", + { + "x": 0.25, + "c": "#cccccc", + "d": true + }, + "8,8\n\n\n5,2" + ], + [ + { + "d": true + }, + "4,0\n\n\n0,2", + { + "d": true + }, + "4,1\n\n\n0,2", + { + "x": 0.25, + "c": "#aaaaaa" + }, + "4,0\n\n\n0,1", + "4,1\n\n\n0,1", + { + "x": 0.25 + }, + "4,0\n\n\n0,0", + "4,1\n\n\n0,0", + { + "x": 0.5, + "w": 1.25 + }, + "4,2", + { + "w": 1.25 + }, + "4,3", + { + "w": 1.25 + }, + "4,4", + { + "w": 1.25 + }, + "4,5\n\n\n2,0", + { + "w": 2.25 + }, + "4,7\n\n\n2,0", + { + "x": 1, + "w": 2.75 + }, + "9,1\n\n\n8,0", + "9,2\n\n\n7,0", + "9,3\n\n\n7,0", + "9,4\n\n\n7,0", + "9,6\n\n\n7,0", + "9,7\n\n\n7,0", + "9,8\n\n\n5,0", + { + "x": 0.75, + "c": "#cccccc", + "w": 1.75 + }, + "8,4\n\n\n6,2", + { + "c": "#aaaaaa" + }, + "8,6\n\n\n6,2", + "8,7\n\n\n6,2", + { + "x": 0.25 + }, + "9,8\n\n\n5,1", + { + "x": 0.25, + "c": "#cccccc", + "d": true + }, + "9,8\n\n\n5,2" + ], + [ + { + "x": 7, + "c": "#aaaaaa", + "w": 1.25 + }, + "3,2\n\n\n1,1", + "3,3\n\n\n1,1", + { + "x": 1.5, + "w": 2.25 + }, + "4,5\n\n\n2,1", + { + "w": 1.25 + }, + "4,7\n\n\n2,1", + { + "x": 1, + "w": 1.25 + }, + "9,0\n\n\n8,1", + { + "w": 1.5 + }, + "9,1\n\n\n8,1", + { + "w": 1.25 + }, + "9,2\n\n\n7,1", + { + "w": 1.25 + }, + "9,3\n\n\n7,1", + { + "x": 0.5 + }, + "9,6\n\n\n7,1", + "9,7\n\n\n7,1" + ], + [ + { + "x": 10.75, + "w": 1.25 + }, + "4,5\n\n\n2,2", + "4,6\n\n\n2,2", + { + "w": 1.25 + }, + "4,7\n\n\n2,2", + { + "x": 3.75, + "w": 1.25 + }, + "9,2\n\n\n7,2", + { + "w": 1.25 + }, + "9,3\n\n\n7,2", + { + "w": 1.25 + }, + "9,6\n\n\n7,2", + { + "w": 1.25 + }, + "9,7\n\n\n7,2" + ] +] + } +} diff --git a/keyboards/keebio/quefrency/rev5/keymaps/vial/config.h b/keyboards/keebio/quefrency/rev5/keymaps/vial/config.h new file mode 100644 index 0000000000..8c840039a7 --- /dev/null +++ b/keyboards/keebio/quefrency/rev5/keymaps/vial/config.h @@ -0,0 +1,12 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#pragma once + +#define VIAL_KEYBOARD_UID {0x71, 0xE4, 0x34, 0x62, 0x9C, 0x8E, 0x31, 0x68} + +#define VIAL_UNLOCK_COMBO_ROWS { 0, 7 } +#define VIAL_UNLOCK_COMBO_COLS { 2, 7 } + +// Reduce the firmware size! +#undef LOCKING_SUPPORT_ENABLE +#undef LOCKING_RESYNC_ENABLE diff --git a/keyboards/keebio/quefrency/rev5/keymaps/vial/keymap.c b/keyboards/keebio/quefrency/rev5/keymaps/vial/keymap.c new file mode 100644 index 0000000000..551208e87d --- /dev/null +++ b/keyboards/keebio/quefrency/rev5/keymaps/vial/keymap.c @@ -0,0 +1,42 @@ +// Copyright 2022 Danny Nguyen (@nooges) +// SPDX-License-Identifier: GPL-2.0-or-later + +#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. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +enum custom_layer { + _BASE, + _FN1, +}; + +enum custom_keycodes { + QWERTY = SAFE_RANGE, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_65_with_macro( + KC_F1, KC_F2, 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_DEL, KC_BSPC, KC_HOME, + KC_F3, KC_F4, 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_END, + KC_F5, KC_F6, 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_PGUP, + KC_F7, KC_F8, 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_PGDN, + KC_F9, KC_F10, KC_LCTL, KC_LALT, KC_LGUI, MO(_FN1),KC_SPC, MO(_FN1),KC_SPC, KC_RALT, KC_RCTL, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_FN1] = LAYOUT_65_with_macro( + _______, _______, QK_GESC, 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_BSPC, _______, + _______, _______, RGB_TOG, RGB_MOD, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + +#ifdef ENCODER_MAP_ENABLE +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD), ENCODER_CCW_CW(KC_PGUP, KC_PGDN) }, + [1] = { ENCODER_CCW_CW(RGB_MOD, RGB_RMOD), ENCODER_CCW_CW(KC_MNXT, KC_MPRV) } +}; +#endif diff --git a/keyboards/keebio/quefrency/rev5/keymaps/vial/rules.mk b/keyboards/keebio/quefrency/rev5/keymaps/vial/rules.mk new file mode 100644 index 0000000000..ba9b0f3287 --- /dev/null +++ b/keyboards/keebio/quefrency/rev5/keymaps/vial/rules.mk @@ -0,0 +1,26 @@ +VIA_ENABLE = yes +VIAL_ENABLE = yes + +LTO_ENABLE = yes +QMK_SETTINGS = yes +ENCODER_ENABLE = yes +ENCODER_MAP_ENABLE = yes + +AVR_USE_MINIMAL_PRINTF = yes +EXTRAKEY_ENABLE = yes + +# Reduce the firmware size: +BACKLIGHT_ENABLE = no +BOOTMAGIC_ENABLE = no +COMBO_ENABLE = no +COMMAND_ENABLE = no +CONSOLE_ENABLE = no +GRAVE_ESC_ENABLE = no +KEY_OVERRIDE_ENABLE = no +LEADER_ENABLE = no +MAGIC_ENABLE = no +MOUSEKEY_ENABLE = no +RGB_MATRIX_ENABLE = no +SPACE_CADET_ENABLE = no +TAP_DANCE_ENABLE = no +VIALRGB_ENABLE = no diff --git a/keyboards/keebio/quefrency/rev5/keymaps/vial/vial.json b/keyboards/keebio/quefrency/rev5/keymaps/vial/vial.json new file mode 100644 index 0000000000..a97d0feba4 --- /dev/null +++ b/keyboards/keebio/quefrency/rev5/keymaps/vial/vial.json @@ -0,0 +1,292 @@ +{ + "name": "Quefrency Rev. 5", + "vendorId": "0xCB10", + "productId": "0x5357", + "matrix": { + "rows": 10, + "cols": 9 + }, + "lighting": "qmk_rgblight", + "layouts": { + "labels": [ + "Split Backspace", + [ + "Left Macropad", + "Enabled", + "W/Encoder", + "No Macro" + ], + [ + "Right Mods", + "6x1u", + "2x1.25u__3x1u" + ], + "Right Encoder" + ], + "keymap": [ + [ + { + "y": 1, + "x": 1.75 + }, + "0,0\n\n\n1,1\n\n\n\n\n\ne", + { + "c": "#aaaaaa" + }, + "0,1\n\n\n1,1\n\n\n\n\n\ne", + { + "x": 0.25, + "d": true + }, + "\n\n\n1,0", + { + "d": true + }, + "\n\n\n1,0", + { + "x": 16.5, + "c": "#cccccc", + "d": true + }, + "\n\n\n3,0", + { + "d": true + }, + "\n\n\n3,0", + { + "x": 0.25 + }, + "1,0\n\n\n3,1\n\n\n\n\n\ne", + "1,1\n\n\n3,1\n\n\n\n\n\ne" + ], + [ + { + "x": 2.25, + "c": "#aaaaaa" + }, + "0,0\n\n\n1,1", + "0,1\n\n\n1,1", + { + "x": 0.25 + }, + "0,0\n\n\n1,0", + "0,1\n\n\n1,0", + { + "x": 0.5, + "c": "#777777" + }, + "0,2", + { + "c": "#cccccc" + }, + "0,3", + "0,4", + "0,5", + "0,6", + "0,7", + "0,8", + { + "x": 1 + }, + "5,0", + "5,1", + "5,2", + "5,3", + "5,4", + "5,5", + { + "c": "#aaaaaa", + "w": 2 + }, + "5,7\n\n\n0,0", + "5,8", + { + "x": 0.5 + }, + "5,6\n\n\n0,1", + "5,7\n\n\n0,1" + ], + [ + { + "x": 2.25 + }, + "1,0\n\n\n1,1", + "1,1\n\n\n1,1", + { + "x": 0.25 + }, + "1,0\n\n\n1,0", + "1,1\n\n\n1,0", + { + "x": 0.5, + "w": 1.5 + }, + "1,2", + { + "c": "#cccccc" + }, + "1,3", + "1,4", + "1,5", + "1,6", + "1,7", + { + "x": 1 + }, + "6,0", + "6,1", + "6,2", + "6,3", + "6,4", + "6,5", + "6,6", + { + "w": 1.5 + }, + "6,7", + { + "c": "#aaaaaa" + }, + "6,8" + ], + [ + { + "x": 2.25 + }, + "2,0\n\n\n1,1", + "2,1\n\n\n1,1", + { + "x": 0.25 + }, + "2,0\n\n\n1,0", + "2,1\n\n\n1,0", + { + "x": 0.5, + "w": 1.75 + }, + "2,2", + { + "c": "#cccccc" + }, + "2,3", + "2,4", + "2,5", + "2,6", + "2,7", + { + "x": 1 + }, + "7,0", + "7,1", + "7,2", + "7,3", + "7,4", + "7,5", + { + "c": "#777777", + "w": 2.25 + }, + "7,7", + { + "c": "#aaaaaa" + }, + "7,8" + ], + [ + { + "x": 2.25 + }, + "3,0\n\n\n1,1", + "3,1\n\n\n1,1", + { + "x": 0.25 + }, + "3,0\n\n\n1,0", + "3,1\n\n\n1,0", + { + "x": 0.5, + "w": 2.25 + }, + "3,2", + { + "c": "#cccccc" + }, + "3,4", + "3,5", + "3,6", + "3,7", + "3,8", + { + "x": 1 + }, + "8,0", + "8,1", + "8,2", + "8,3", + "8,4", + { + "c": "#aaaaaa", + "w": 1.75 + }, + "8,6", + "8,7", + "8,8" + ], + [ + { + "x": 2.25 + }, + "4,0\n\n\n1,1", + "4,1\n\n\n1,1", + { + "x": 0.25 + }, + "4,0\n\n\n1,0", + "4,1\n\n\n1,0", + { + "x": 0.5, + "w": 1.25 + }, + "4,2", + { + "w": 1.25 + }, + "4,3", + { + "w": 1.25 + }, + "4,4", + { + "w": 1.25 + }, + "4,5", + { + "w": 2.25 + }, + "4,7", + { + "x": 1, + "w": 2.75 + }, + "9,1", + "9,2\n\n\n2,0", + "9,3\n\n\n2,0", + "9,4\n\n\n2,0", + "9,6", + "9,7", + "9,8" + ], + [ + { + "x": 18, + "w": 1.25 + }, + "9,2\n\n\n2,1", + { + "w": 1.25 + }, + "9,3\n\n\n2,1" + ] + ] + } +} From 27f0980b71ba6b52afc281bc0c90dba9bc4af904 Mon Sep 17 00:00:00 2001 From: Zach Liu Date: Sun, 6 Oct 2024 16:50:41 -0400 Subject: [PATCH 06/10] Add vial to keyboard omkbd runner3680 5x6_5x8 (#795) * my runner * Add converter to rules.mk * RGBLIGHT_TIMEOUT adjust to 10 minutes * re-org rules --- .../runner3680/5x6_5x8/keymaps/vial/config.h | 36 ++++++ .../runner3680/5x6_5x8/keymaps/vial/keymap.c | 112 ++++++++++++++++++ .../runner3680/5x6_5x8/keymaps/vial/rules.mk | 13 ++ .../runner3680/5x6_5x8/keymaps/vial/vial.json | 20 ++++ 4 files changed, 181 insertions(+) create mode 100755 keyboards/omkbd/runner3680/5x6_5x8/keymaps/vial/config.h create mode 100755 keyboards/omkbd/runner3680/5x6_5x8/keymaps/vial/keymap.c create mode 100755 keyboards/omkbd/runner3680/5x6_5x8/keymaps/vial/rules.mk create mode 100755 keyboards/omkbd/runner3680/5x6_5x8/keymaps/vial/vial.json diff --git a/keyboards/omkbd/runner3680/5x6_5x8/keymaps/vial/config.h b/keyboards/omkbd/runner3680/5x6_5x8/keymaps/vial/config.h new file mode 100755 index 0000000000..883f67b460 --- /dev/null +++ b/keyboards/omkbd/runner3680/5x6_5x8/keymaps/vial/config.h @@ -0,0 +1,36 @@ +/* Copyright 2021 omkbd + * + * 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 . + */ + +#pragma once + +#define VIAL_KEYBOARD_UID {0x0F, 0x8A, 0x08, 0x8B, 0x22, 0x25, 0xAA, 0xA8} + +#define DYNAMIC_KEYMAP_LAYER_COUNT 4 + +// ~ + BACKSPACE = UNLOCK +#define VIAL_UNLOCK_COMBO_ROWS { 0, 5 } +#define VIAL_UNLOCK_COMBO_COLS { 2, 0 } + +//#define USE_MATRIX_I2C + +/* Select hand configuration */ + +#define MASTER_LEFT +// #define MASTER_RIGHT +// #define EE_HANDS + +#define RGBLIGHT_SLEEP // enable rgblight_suspend() and rgblight_wakeup() in keymap.c +#define RGBLIGHT_TIMEOUT 600000 // ms to wait until rgblight time out, 600K ms is 10min. diff --git a/keyboards/omkbd/runner3680/5x6_5x8/keymaps/vial/keymap.c b/keyboards/omkbd/runner3680/5x6_5x8/keymaps/vial/keymap.c new file mode 100755 index 0000000000..4dc473b3b9 --- /dev/null +++ b/keyboards/omkbd/runner3680/5x6_5x8/keymaps/vial/keymap.c @@ -0,0 +1,112 @@ +/* Copyright 2021 omkbd + * + * 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 + +enum layer_number { + _QWERTY = 0, + _ADJUST +}; + +// Fillers to make layering more clear +#define EISU LALT(KC_GRV) +#define ADJUST MO(_ADJUST) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* QWERTY + * ,-----------------------------------------. ,--------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | - | = | Bksp | + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | | Y | U | I | O | P | [ | ] | \ | + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | Ctrl | A | S | D | F | G | | H | J | K | L | ; | " | Enter| Enter| + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | | N | M | , | . | / | Shift| Up | Shift| + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | Ctrl | GUI | Alt | EISU | Space| Space| | Space| Space| Alt |Adjust| Ctrl | Left | Down | Right| + * `-----------------------------------------' `-------------------------------------------------------' + */ + [_QWERTY] = LAYOUT( + 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_LCTL, 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_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_UP, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, ADJUST, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, ADJUST, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + /* Adjust + * ,-----------------------------------------. ,--------------------------------------------------------. + * | ESC | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 | F12 | | + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | | TOG | HUI | SAI | VAI | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | | MOD | HUD | SAD | VAD | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | | | | + * `-----------------------------------------' `-------------------------------------------------------' + */ + [_ADJUST] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + +static uint32_t key_timer; // timer for last keyboard activity, use 32bit value and function to make longer idle time possible +static void refresh_rgb(void); // refreshes the activity timer and RGB, invoke whenever any activity happens +static void check_rgb_timeout(void); // checks if enough time has passed for RGB to timeout +bool is_rgb_timeout = false; // store if RGB has timed out or not in a boolean + +void refresh_rgb(void) { + key_timer = timer_read32(); // store time of last refresh + if (is_rgb_timeout) + { + is_rgb_timeout = false; + rgblight_wakeup(); + } +} +void check_rgb_timeout(void) { + if (!is_rgb_timeout && timer_elapsed32(key_timer) > RGBLIGHT_TIMEOUT) // check if RGB has already timeout and if enough time has passed + { + rgblight_suspend(); + is_rgb_timeout = true; + } +} +/* Then, call the above functions from QMK's built in post processing functions like so */ +/* Runs at the end of each scan loop, check if RGB timeout has occured or not */ +void housekeeping_task_user(void) { +#ifdef RGBLIGHT_TIMEOUT + check_rgb_timeout(); +#endif +} +/* Runs after each key press, check if activity occurred */ +void post_process_record_user(uint16_t keycode, keyrecord_t *record) { +#ifdef RGBLIGHT_TIMEOUT + if (record->event.pressed) + refresh_rgb(); +#endif +} +/* Runs after each encoder tick, check if activity occurred */ +void post_encoder_update_user(uint8_t index, bool clockwise) { +#ifdef RGBLIGHT_TIMEOUT + refresh_rgb(); +#endif +} diff --git a/keyboards/omkbd/runner3680/5x6_5x8/keymaps/vial/rules.mk b/keyboards/omkbd/runner3680/5x6_5x8/keymaps/vial/rules.mk new file mode 100755 index 0000000000..c0d44423f3 --- /dev/null +++ b/keyboards/omkbd/runner3680/5x6_5x8/keymaps/vial/rules.mk @@ -0,0 +1,13 @@ +VIA_ENABLE = yes +VIAL_ENABLE = yes + +RGBLIGHT_ENABLE = yes + +CONSOLE_ENABLE = yes +QMK_SETTINGS = yes + +TAP_DANCE_ENABLE = yes +COMBO_ENABLE = yes +KEY_OVERRIDE_ENABLE = yes + +CONVERT_TO = promicro_rp2040 diff --git a/keyboards/omkbd/runner3680/5x6_5x8/keymaps/vial/vial.json b/keyboards/omkbd/runner3680/5x6_5x8/keymaps/vial/vial.json new file mode 100755 index 0000000000..f8349f2ba2 --- /dev/null +++ b/keyboards/omkbd/runner3680/5x6_5x8/keymaps/vial/vial.json @@ -0,0 +1,20 @@ +{ + "name": "runner3680 5x6+5x8", + "vendorId": "0x3680", + "productId": "0x5658", + "firmwareVersion": "0.0.5", + "lighting": "qmk_rgblight", + "matrix": { + "rows": 10, + "cols": 8 + }, + "layouts": { + "keymap": [ + [{"c":"#777777"},"0,2",{"c":"#cccccc"},"0,3","0,4","0,5","0,6","0,7",{"x":0.75},"5,7","5,6","5,5","5,4","5,3",{"c":"#aaaaaa"},"5,2","5,1","5,0"], + ["1,2","1,3",{"c":"#cccccc"},"1,4","1,5","1,6","1,7",{"x":0.75},"6,7","6,6","6,5","6,4","6,3",{"c":"#aaaaaa"},"6,2","6,1","6,0"], + ["2,2","2,3",{"c":"#cccccc"},"2,4","2,5","2,6","2,7",{"x":0.75},"7,7","7,6","7,5","7,4",{"c":"#aaaaaa"},"7,3","7,2",{"c":"#777777"},"7,1","7,0"], + [{"c":"#aaaaaa"},"3,2","3,3",{"c":"#cccccc"},"3,4","3,5","3,6","3,7",{"x":0.75},"8,7","8,6",{"c":"#aaaaaa"},"8,5","8,4","8,3","8,2","8,1","8,0"], + ["4,2","4,3","4,4","4,5","4,6","4,7",{"x":0.75},"9,7","9,6","9,5","9,4","9,3","9,2","9,1","9,0"] + ] + } +} From 7638797c923fd8564259da01c6f460f288a1a984 Mon Sep 17 00:00:00 2001 From: 9R Date: Sat, 12 Oct 2024 03:19:30 +0100 Subject: [PATCH 07/10] add vial support for replicazeron (#798) * add vial support for replicazeron * reduce firmware size --- .../handwired/replicazeron/common/leds.c | 43 ++++++ .../handwired/replicazeron/common/leds.h | 23 +++ .../handwired/replicazeron/common/oled.c | 96 +++++++++++++ .../handwired/replicazeron/common/oled.h | 34 +++++ .../handwired/replicazeron/common/state.c | 28 ++++ .../handwired/replicazeron/common/state.h | 28 ++++ .../replicazeron/common/thumbstick.c | 111 +++++++++++++++ .../replicazeron/common/thumbstick.h | 51 +++++++ keyboards/handwired/replicazeron/config.h | 31 ++++ keyboards/handwired/replicazeron/info.json | 47 +++++++ .../replicazeron/keymaps/default/keymap.c | 57 ++++++++ .../replicazeron/keymaps/vial/config.h | 8 ++ .../replicazeron/keymaps/vial/keymap.c | 57 ++++++++ .../replicazeron/keymaps/vial/rules.mk | 5 + .../replicazeron/keymaps/vial/vial.json | 133 ++++++++++++++++++ .../handwired/replicazeron/post_rules.mk | 14 ++ .../handwired/replicazeron/promicro/config.h | 23 +++ .../replicazeron/promicro/keyboard.json | 18 +++ keyboards/handwired/replicazeron/readme.md | 69 +++++++++ .../handwired/replicazeron/replicazeron.c | 103 ++++++++++++++ .../handwired/replicazeron/replicazeron.h | 50 +++++++ keyboards/handwired/replicazeron/rules.mk | 14 ++ .../handwired/replicazeron/stm32f103/config.h | 29 ++++ .../replicazeron/stm32f103/keyboard.json | 31 ++++ .../replicazeron/stm32f103/mcuconf.h | 31 ++++ 25 files changed, 1134 insertions(+) create mode 100644 keyboards/handwired/replicazeron/common/leds.c create mode 100644 keyboards/handwired/replicazeron/common/leds.h create mode 100644 keyboards/handwired/replicazeron/common/oled.c create mode 100644 keyboards/handwired/replicazeron/common/oled.h create mode 100644 keyboards/handwired/replicazeron/common/state.c create mode 100644 keyboards/handwired/replicazeron/common/state.h create mode 100644 keyboards/handwired/replicazeron/common/thumbstick.c create mode 100644 keyboards/handwired/replicazeron/common/thumbstick.h create mode 100644 keyboards/handwired/replicazeron/config.h create mode 100644 keyboards/handwired/replicazeron/info.json create mode 100644 keyboards/handwired/replicazeron/keymaps/default/keymap.c create mode 100644 keyboards/handwired/replicazeron/keymaps/vial/config.h create mode 100644 keyboards/handwired/replicazeron/keymaps/vial/keymap.c create mode 100644 keyboards/handwired/replicazeron/keymaps/vial/rules.mk create mode 100644 keyboards/handwired/replicazeron/keymaps/vial/vial.json create mode 100644 keyboards/handwired/replicazeron/post_rules.mk create mode 100644 keyboards/handwired/replicazeron/promicro/config.h create mode 100644 keyboards/handwired/replicazeron/promicro/keyboard.json create mode 100644 keyboards/handwired/replicazeron/readme.md create mode 100644 keyboards/handwired/replicazeron/replicazeron.c create mode 100644 keyboards/handwired/replicazeron/replicazeron.h create mode 100644 keyboards/handwired/replicazeron/rules.mk create mode 100644 keyboards/handwired/replicazeron/stm32f103/config.h create mode 100644 keyboards/handwired/replicazeron/stm32f103/keyboard.json create mode 100644 keyboards/handwired/replicazeron/stm32f103/mcuconf.h diff --git a/keyboards/handwired/replicazeron/common/leds.c b/keyboards/handwired/replicazeron/common/leds.c new file mode 100644 index 0000000000..7bcb0cf39c --- /dev/null +++ b/keyboards/handwired/replicazeron/common/leds.c @@ -0,0 +1,43 @@ +/* Copyright 2023 9R + * + * 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 "leds.h" +#include +#include "gpio.h" + +//////////// Status LEDs ////////////// +void init_leds(void) { + // Both LEDs off, they have inverted logic + gpio_set_pin_output(STATUS_LED_A_PIN); + gpio_set_pin_output(STATUS_LED_B_PIN); + gpio_write_pin_high(STATUS_LED_A_PIN); + gpio_write_pin_high(STATUS_LED_B_PIN); +} + +void set_leds(uint8_t highest_active_layer) { + // any layer other than 0-3, quit and LEDs off + if (highest_active_layer > 3) { + gpio_write_pin_high(STATUS_LED_A_PIN); + gpio_write_pin_high(STATUS_LED_B_PIN); + return; + } + + // use bitwise operations to display active layer in binary + bool bit1 = !(highest_active_layer & 1); + bool bit2 = !(highest_active_layer & 2); + gpio_write_pin(STATUS_LED_A_PIN, bit1); + gpio_write_pin(STATUS_LED_B_PIN, bit2); +} diff --git a/keyboards/handwired/replicazeron/common/leds.h b/keyboards/handwired/replicazeron/common/leds.h new file mode 100644 index 0000000000..e9ccec1bb6 --- /dev/null +++ b/keyboards/handwired/replicazeron/common/leds.h @@ -0,0 +1,23 @@ +/* Copyright 2023 9R + * + * 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 . + */ + +#pragma once + +#include + +void init_leds(void); + +void set_leds(uint8_t active_layer); diff --git a/keyboards/handwired/replicazeron/common/oled.c b/keyboards/handwired/replicazeron/common/oled.c new file mode 100644 index 0000000000..9d3a3147a3 --- /dev/null +++ b/keyboards/handwired/replicazeron/common/oled.c @@ -0,0 +1,96 @@ +/* Copyright 2023 9R + * + * 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 "oled.h" +#include "oled_driver.h" +#include "progmem.h" +#include "util.h" + +uint8_t shiftbits =32 ; + +//////////// OLED output helpers ////////////// +void draw_mode(controller_state_t controller_state) { + //draw oled row showing thumbstick mode + oled_write_P(PSTR("Mode: "), false); + if (controller_state.wasdShiftMode) { + oled_write_ln_P(PSTR("WASD + Shift"), false); + } else if (controller_state.wasdMode) { + oled_write_ln_P(PSTR("WASD"), false); + } else { + oled_write_ln_P(PSTR("JoyStick"), false); + } +} + +void draw_wasd_key(wasd_state_t wasd_state) { + //draw oled row showing active keypresses emulated from thumbstick + const char* keys = "wasd"; + bool keystates [] = { wasd_state.w, wasd_state.a, wasd_state.s, wasd_state.d }; + // iterate over keystates + for (uint8_t i = 0 ; i < ARRAY_SIZE(keystates); ++i) { + if (keystates[i]) { + char k = keys[i] ; + //bitshift char to upper case + if (wasd_state.shift) { + k &= ~shiftbits; + } + oled_write_char(k, false); + } else { + oled_write_P(PSTR(" "), false); + } + } +} + +void draw_thumb_debug(thumbstick_polar_position_t thumbstick_polar_position) { + //draw oled row showing thumbstick direction and distance from center + oled_write_P(PSTR("Dir:"), false); + oled_write(get_u16_str(thumbstick_polar_position.angle, ' '), false); + oled_write_P(PSTR(" Dist:"), false); + oled_write_ln(get_u16_str(thumbstick_polar_position.distance, ' '), false); + //print registered key codes + oled_write_P(PSTR("Keycodes: "), false); + draw_wasd_key( wasd_state ); +} + +//////////// draw OLED output ////////////// +void draw_oled(controller_state_t controller_state) { + oled_write_P(PSTR("Layer: "), false); + + switch (controller_state.highestActiveLayer) { + case _SHOOTER: + oled_write_ln_P(PSTR("Shooter"), false); + break; + + case _MISC: + oled_write_ln_P(PSTR("Misc"), false); + break; + + case _SETTINGS: + oled_write_ln_P(PSTR("Settings"), false); + break; + + default: + oled_write_ln_P(PSTR("Default"), false); + } + + draw_mode(controller_state); + if (controller_state.highestActiveLayer == _SETTINGS ) { + draw_thumb_debug(thumbstick_polar_position); + } + else { + oled_write_ln_P(PSTR(" "), false); + } + oled_write_ln_P(PSTR(" "), false); +} diff --git a/keyboards/handwired/replicazeron/common/oled.h b/keyboards/handwired/replicazeron/common/oled.h new file mode 100644 index 0000000000..977aaa2c8d --- /dev/null +++ b/keyboards/handwired/replicazeron/common/oled.h @@ -0,0 +1,34 @@ +/* Copyright 2023 9R + * + * 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 . + */ +#pragma once + +#include "replicazeron.h" + +#include +#include "state.h" +#include "thumbstick.h" + +uint8_t shiftbits; + +char stringbuffer[8]; + +void draw_oled(controller_state_t controller_state); + +void draw_mode(controller_state_t controller_state); + +void draw_thumb_debug(thumbstick_polar_position_t thumbstick_polar_position); + +void draw_wasd_key(wasd_state_t wasd_state); diff --git a/keyboards/handwired/replicazeron/common/state.c b/keyboards/handwired/replicazeron/common/state.c new file mode 100644 index 0000000000..b80fcb5c3b --- /dev/null +++ b/keyboards/handwired/replicazeron/common/state.c @@ -0,0 +1,28 @@ +/* Copyright 2023 9R + * + * 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 "state.h" + +controller_state_t init_state (void) { + controller_state_t controller_state = { + .wasdMode = true, + .wasdShiftMode = false, + .autoRun = false, + .highestActiveLayer = 0, + }; + + return controller_state; +} diff --git a/keyboards/handwired/replicazeron/common/state.h b/keyboards/handwired/replicazeron/common/state.h new file mode 100644 index 0000000000..8ff69181a5 --- /dev/null +++ b/keyboards/handwired/replicazeron/common/state.h @@ -0,0 +1,28 @@ +/* Copyright 2023 9R + * + * 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 . + */ +#pragma once + +#include +#include + +typedef struct { + bool wasdMode; + bool wasdShiftMode; + bool autoRun; + uint8_t highestActiveLayer; +} controller_state_t; + +controller_state_t init_state(void); diff --git a/keyboards/handwired/replicazeron/common/thumbstick.c b/keyboards/handwired/replicazeron/common/thumbstick.c new file mode 100644 index 0000000000..51f27966c4 --- /dev/null +++ b/keyboards/handwired/replicazeron/common/thumbstick.c @@ -0,0 +1,111 @@ +/* Copyright 2023 9R + * + * 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 "thumbstick.h" +#include +#include "action.h" +#include "keycode.h" +#include "debug.h" + +void init_wasd_state (void) { + wasd_state.w = wasd_state.a = wasd_state.s = wasd_state.d = false; + last_wasd_state = wasd_state; + wasd_state.shift = false; +} + +thumbstick_polar_position_t get_thumbstick_polar_position(int16_t x, int16_t y) { + static thumbstick_polar_position_t position; + +#ifdef THUMBSTICK_DEBUG + dprintf("xN: %4d yN: %4d\n", x, y); +#endif + + //transform to carthesian coordinates to polar coordinates + //get distance from center as int in range [0-600] + position.distance = (double)sqrt((double)x * (double)x + (double)y * (double)y); + //get direction as int in range [0 to 359] + position.angle = (double)atan2(y, x) * (180 /M_PI) + 180; + + //apply thumbstick rotation const to modify forward direction + position.angle = (position.angle + _THUMBSTICK_ROTATION) % 360; + + return position; +} + +bool update_keystate(uint16_t angle_from, uint16_t angle_to, uint16_t angle) { + return (angle_from < angle && angle <= angle_to); +} + +void update_keycode(uint16_t keycode, bool keystate, bool last_keystate) { + if (keystate && keystate != last_keystate) { + register_code16(keycode); + } else if (!keystate) { + unregister_code16(keycode); + } +} + +void thumbstick(controller_state_t controller_state) { + xPos = joystick_state.axes[0]; + yPos = joystick_state.axes[1]; + + thumbstick_polar_position = get_thumbstick_polar_position(xPos, yPos); + +#ifdef THUMBSTICK_DEBUG + dprintf("distance: %5d angle: %5d\n", thumbstick_polar_position.distance, thumbstick_polar_position.angle); +#endif + + // Update WASD state depending on thumbstick position + // if thumbstick out of of deadzone + if (thumbstick_polar_position.distance >= _DEADZONE) { + wasd_state.w = update_keystate( 0, 90, thumbstick_polar_position.angle); + // A angle: 45 - 180 + wasd_state.a = update_keystate( 45, 181, thumbstick_polar_position.angle); + // S angle: 135 - 270 + wasd_state.s = update_keystate(135, 270, thumbstick_polar_position.angle); + // D angle: 225 - 359 + wasd_state.d = update_keystate(225, 359, thumbstick_polar_position.angle); + + if (!wasd_state.w ) { + wasd_state.w = update_keystate(315, 360, thumbstick_polar_position.angle); + } + } else { + //reset WASD state when in _DEADZONE + init_wasd_state(); + } + +#ifdef THUMBSTICK_DEBUG + dprintf("w: %2d a: %2d s: %2d d: %2d\n", wasd_state.w, wasd_state.a, wasd_state.s, wasd_state.d); +#endif + + update_keycode(KC_W, wasd_state.w, last_wasd_state.w); + update_keycode(KC_A, wasd_state.a, last_wasd_state.a); + update_keycode(KC_S, wasd_state.s, last_wasd_state.s); + update_keycode(KC_D, wasd_state.d, last_wasd_state.d); + + last_wasd_state = wasd_state ; + + // handle WASD-Shift mode + if (controller_state.wasdShiftMode) { + bool Shifted = thumbstick_polar_position.distance > _SHIFTZONE; + if (!wasd_state.shift && Shifted) { + register_code(KC_LSFT); + wasd_state.shift = true; + } else if (wasd_state.shift && !Shifted) { + unregister_code(KC_LSFT); + wasd_state.shift = false; + } + } +} diff --git a/keyboards/handwired/replicazeron/common/thumbstick.h b/keyboards/handwired/replicazeron/common/thumbstick.h new file mode 100644 index 0000000000..d9b4394a09 --- /dev/null +++ b/keyboards/handwired/replicazeron/common/thumbstick.h @@ -0,0 +1,51 @@ +/* Copyright 2023 9R + * + * 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 . + */ +#pragma once + +#include +#include "state.h" +#include "quantum.h" + +int16_t xPos; +int16_t yPos; + +typedef struct { + uint16_t angle; + uint16_t distance; +} thumbstick_polar_position_t; + +typedef struct { + bool w; + bool a; + bool s; + bool d; + bool shift; +} wasd_state_t; + +thumbstick_polar_position_t thumbstick_polar_position ; + +wasd_state_t wasd_state; +wasd_state_t last_wasd_state; + +void init_wasd_state(void); + +thumbstick_polar_position_t get_thumbstick_polar_position(int16_t x, int16_t y); + +bool update_keystate(uint16_t angle_from, uint16_t angle_to, uint16_t angle); + +void update_keycode(uint16_t keycode, bool keystate, bool last_keystate); + +void thumbstick(controller_state_t controller_state); diff --git a/keyboards/handwired/replicazeron/config.h b/keyboards/handwired/replicazeron/config.h new file mode 100644 index 0000000000..0c20f1d4b9 --- /dev/null +++ b/keyboards/handwired/replicazeron/config.h @@ -0,0 +1,31 @@ +/* Copyright 2023 9R + * + * 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 . + */ + +#pragma once + +#define THUMBSTICK_DEBUG + +/* joystick configuration */ +#define JOYSTICK_BUTTON_COUNT 0 +#define JOYSTICK_AXIS_COUNT 2 +#define JOYSTICK_AXIS_RESOLUTION 10 + +#define _DEADZONE 100 // 0 to _SHIFTZONE-1 +#define _SHIFTZONE 350 // _DEADZONE+1 to 600 +#define _THUMBSTICK_ROTATION 100 //degrees, adjusts forward direction + +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE diff --git a/keyboards/handwired/replicazeron/info.json b/keyboards/handwired/replicazeron/info.json new file mode 100644 index 0000000000..88f884c0bd --- /dev/null +++ b/keyboards/handwired/replicazeron/info.json @@ -0,0 +1,47 @@ +{ + "manufacturer": "9R", + "keyboard_name": "Replicazeron", + "maintainer": "9R", + "diode_direction": "COL2ROW", + "url": "https://github.com/9R/replicazeron", + "usb": { + "pid": "0x2305", + "vid": "0x4142" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "K04", "matrix": [0, 0], "x": 1.75, "y": 0.25, "w": 1.25}, + {"label": "K10", "matrix": [0, 1], "x": 3, "y": 0.25, "w": 1.25}, + {"label": "K16", "matrix": [0, 2], "x": 4.25, "y": 0.25, "w": 1.25}, + {"label": "K22", "matrix": [0, 3], "x": 5.5, "y": 0.25, "w": 1.25}, + {"label": "dwn", "matrix": [0, 4], "x": 9.5, "y": 2, "w": 1.25}, + {"label": "K03", "matrix": [1, 0], "x": 1.75, "y": 1, "w": 1.25, "h": 1.25}, + {"label": "K09", "matrix": [1, 1], "x": 3, "y": 1, "w": 1.25, "h": 1.25}, + {"label": "K15", "matrix": [1, 2], "x": 4.25, "y": 1, "w": 1.25, "h": 1.25}, + {"label": "K21", "matrix": [1, 3], "x": 5.5, "y": 1, "w": 1.25, "h": 1.25}, + {"label": "lft", "matrix": [1, 4], "x": 8.25, "y": 1, "w": 1.25}, + {"label": "K02", "matrix": [2, 0], "x": 1.75, "y": 2.5, "w": 1.25, "h": 1.25}, + {"label": "K08", "matrix": [2, 1], "x": 3, "y": 2.5, "w": 1.25, "h": 1.25}, + {"label": "K14", "matrix": [2, 2], "x": 4.25, "y": 2.5, "w": 1.25, "h": 1.25}, + {"label": "K20", "matrix": [2, 3], "x": 5.5, "y": 2.5, "w": 1.25, "h": 1.25}, + {"label": "ent", "matrix": [2, 4], "x": 9.5, "y": 1, "w": 1.25}, + {"label": "K01", "matrix": [3, 0], "x": 1.75, "y": 3.75, "w": 1.25}, + {"label": "K07", "matrix": [3, 1], "x": 3, "y": 3.75, "w": 1.25}, + {"label": "K13", "matrix": [3, 2], "x": 4.25, "y": 3.75, "w": 1.25}, + {"label": "K19", "matrix": [3, 3], "x": 5.5, "y": 3.75, "w": 1.25}, + {"label": "rgt", "matrix": [3, 4], "x": 10.75, "y": 1, "w": 1.25}, + {"label": "K00", "matrix": [4, 0], "x": 1.75, "y": 4.75, "w": 1.25}, + {"label": "K06", "matrix": [4, 1], "x": 3, "y": 4.75, "w": 1.25}, + {"label": "K12", "matrix": [4, 2], "x": 4.25, "y": 4.75, "w": 1.25}, + {"label": "K18", "matrix": [4, 3], "x": 5.5, "y": 4.75, "w": 1.25}, + {"label": "up ", "matrix": [4, 4], "x": 9.5, "y": 0, "w": 1.25}, + {"label": "K05", "matrix": [5, 0], "x": 0, "y": 2.5, "w": 1.75}, + {"label": "lyr", "matrix": [5, 1], "x": 7.5, "y": 4.25, "w": 1.5}, + {"label": "K17", "matrix": [5, 2], "x": 10.75, "y": 4, "w": 1.5}, + {"label": "K23", "matrix": [5, 3], "x": 6.75, "y": 2.5, "w": 1.5}, + {"label": "spc", "matrix": [5, 4], "x": 10.75, "y": 3, "w": 1.25} + ] + } + } +} diff --git a/keyboards/handwired/replicazeron/keymaps/default/keymap.c b/keyboards/handwired/replicazeron/keymaps/default/keymap.c new file mode 100644 index 0000000000..feb027271d --- /dev/null +++ b/keyboards/handwired/replicazeron/keymaps/default/keymap.c @@ -0,0 +1,57 @@ +/* Copyright 2023 9R + * + * 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 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( + // little | ring | middle | index | 5way-dpad | -finger + KC_GRV, KC_ESC, KC_J, KC_M, KC_RIGHT, // up + KC_T, KC_3, KC_4, KC_R, KC_ENT, // forward + KC_X, KC_LCTL, KC_LCTL, KC_LALT, KC_DOWN, // down + KC_LSFT, KC_SPC, KC_C, KC_F, KC_LEFT, // back 2 + KC_LSFT, KC_6, KC_Z, KC_V, KC_UP, // back 1 + KC_TAB, TG(_SHOOTER), KC_I, KC_B, KC_P // special + // ^side_l | ^case | ^thumb | ^side_r | ^analog click <= special row mapping + ), + + [_SHOOTER] = LAYOUT( + KC_NO, KC_NO, KC_NO, KC_NO, KC_RIGHT, + KC_NO, KC_NO, KC_NO, KC_NO, KC_ENT, + KC_NO, KC_NO, KC_NO, KC_NO, KC_DOWN, + KC_NO, KC_NO, KC_NO, KC_NO, KC_LEFT, + KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, + KC_NO, TG(_MISC), KC_NO, KC_NO, KC_P + ), + + [_MISC] = LAYOUT( + KC_NO, KC_NO, KC_NO, KC_NO, KC_RIGHT, + KC_NO, KC_NO, KC_NO, KC_NO, KC_ENT, + KC_NO, KC_NO, KC_NO, KC_NO, KC_DOWN, + KC_NO, KC_NO, KC_NO, KC_NO, KC_LEFT, + KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, + KC_NO, TG(_SETTINGS), KC_NO, KC_NO, KC_P + ), + + [_SETTINGS] = LAYOUT( + RGB_M_P, RGB_M_B, RGB_M_K, RGB_M_T, KC_RIGHT, + KC_NO, RGB_SAI, RGB_VAI, RGB_HUI, KC_ENT, + RGB_TOG, KC_NO, KC_NO, KC_NO , KC_DOWN, + EE_CLR, RGB_SAD, RGB_VAD, RGB_HUD, KC_LEFT, + QK_BOOT, AUTORUN, JOYMODE, KC_V, KC_UP, + RGB_MOD, TO(_BASE), KC_NO, RGB_RMOD, KC_P + ) +}; diff --git a/keyboards/handwired/replicazeron/keymaps/vial/config.h b/keyboards/handwired/replicazeron/keymaps/vial/config.h new file mode 100644 index 0000000000..60cec8eeac --- /dev/null +++ b/keyboards/handwired/replicazeron/keymaps/vial/config.h @@ -0,0 +1,8 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#pragma once + +#define VIAL_KEYBOARD_UID {0x3E, 0x15, 0xC1, 0x32, 0xC3, 0xDE, 0xCD, 0x83} + +#define VIAL_UNLOCK_COMBO_ROWS { 4, 4 } +#define VIAL_UNLOCK_COMBO_COLS { 0, 3 } diff --git a/keyboards/handwired/replicazeron/keymaps/vial/keymap.c b/keyboards/handwired/replicazeron/keymaps/vial/keymap.c new file mode 100644 index 0000000000..feb027271d --- /dev/null +++ b/keyboards/handwired/replicazeron/keymaps/vial/keymap.c @@ -0,0 +1,57 @@ +/* Copyright 2023 9R + * + * 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 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( + // little | ring | middle | index | 5way-dpad | -finger + KC_GRV, KC_ESC, KC_J, KC_M, KC_RIGHT, // up + KC_T, KC_3, KC_4, KC_R, KC_ENT, // forward + KC_X, KC_LCTL, KC_LCTL, KC_LALT, KC_DOWN, // down + KC_LSFT, KC_SPC, KC_C, KC_F, KC_LEFT, // back 2 + KC_LSFT, KC_6, KC_Z, KC_V, KC_UP, // back 1 + KC_TAB, TG(_SHOOTER), KC_I, KC_B, KC_P // special + // ^side_l | ^case | ^thumb | ^side_r | ^analog click <= special row mapping + ), + + [_SHOOTER] = LAYOUT( + KC_NO, KC_NO, KC_NO, KC_NO, KC_RIGHT, + KC_NO, KC_NO, KC_NO, KC_NO, KC_ENT, + KC_NO, KC_NO, KC_NO, KC_NO, KC_DOWN, + KC_NO, KC_NO, KC_NO, KC_NO, KC_LEFT, + KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, + KC_NO, TG(_MISC), KC_NO, KC_NO, KC_P + ), + + [_MISC] = LAYOUT( + KC_NO, KC_NO, KC_NO, KC_NO, KC_RIGHT, + KC_NO, KC_NO, KC_NO, KC_NO, KC_ENT, + KC_NO, KC_NO, KC_NO, KC_NO, KC_DOWN, + KC_NO, KC_NO, KC_NO, KC_NO, KC_LEFT, + KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, + KC_NO, TG(_SETTINGS), KC_NO, KC_NO, KC_P + ), + + [_SETTINGS] = LAYOUT( + RGB_M_P, RGB_M_B, RGB_M_K, RGB_M_T, KC_RIGHT, + KC_NO, RGB_SAI, RGB_VAI, RGB_HUI, KC_ENT, + RGB_TOG, KC_NO, KC_NO, KC_NO , KC_DOWN, + EE_CLR, RGB_SAD, RGB_VAD, RGB_HUD, KC_LEFT, + QK_BOOT, AUTORUN, JOYMODE, KC_V, KC_UP, + RGB_MOD, TO(_BASE), KC_NO, RGB_RMOD, KC_P + ) +}; diff --git a/keyboards/handwired/replicazeron/keymaps/vial/rules.mk b/keyboards/handwired/replicazeron/keymaps/vial/rules.mk new file mode 100644 index 0000000000..4afa6d59dd --- /dev/null +++ b/keyboards/handwired/replicazeron/keymaps/vial/rules.mk @@ -0,0 +1,5 @@ +VIA_ENABLE = yes +VIAL_ENABLE = yes + +COMBO_ENABLE = no +QMK_SETTINGS = no diff --git a/keyboards/handwired/replicazeron/keymaps/vial/vial.json b/keyboards/handwired/replicazeron/keymaps/vial/vial.json new file mode 100644 index 0000000000..42d809028c --- /dev/null +++ b/keyboards/handwired/replicazeron/keymaps/vial/vial.json @@ -0,0 +1,133 @@ +{ + "lighting": "none", + "matrix": { + "rows": 6, + "cols": 5 + }, + "layouts": { + "keymap": [ + [ + { + "x": 1.75 + }, + "0,0", + "0,1", + "0,2", + "0,3", + { + "x": 2.5 + }, + "0,4" + ], + [ + { + "x": 1.75, + "h": 1.25 + }, + "1,0", + { + "h": 1.25 + }, + "1,1", + { + "h": 1.25 + }, + "1,2", + { + "h": 1.25 + }, + "1,3", + { + "x": 1.5 + }, + "4,4", + "1,4", + "2,4" + ], + [ + { + "x": 8.25 + }, + "3,4" + ], + [ + { + "y": -0.75, + "x": 1.75, + "h": 1.5 + }, + "2,0", + { + "h": 1.5 + }, + "2,1", + { + "h": 1.5 + }, + "2,2", + { + "h": 1.5 + }, + "2,3" + ], + [ + { + "y": 0.5, + "x": 1.75 + }, + "3,0", + "3,1", + "3,2", + "3,3", + { + "x": 1.5, + "h": 1.5, + "w": 1.5 + }, + "5,4" + ], + [ + { + "x": 1.75 + }, + "4,0", + "4,1", + "4,2", + "4,3", + { + "x": 0.25 + }, + "5,1" + ], + [ + { + "r": 15, + "rx": 0.5, + "ry": 3, + "y": -0.75, + "x": -0.5, + "w": 1.5 + }, + "5,0" + ], + [ + { + "rx": 7, + "y": 0.5, + "x": 2.75, + "w": 1.5 + }, + "5,2" + ], + [ + { + "r": -15, + "y": -2.25, + "x": -1, + "w": 1.5 + }, + "5,3" + ] + ] + } +} diff --git a/keyboards/handwired/replicazeron/post_rules.mk b/keyboards/handwired/replicazeron/post_rules.mk new file mode 100644 index 0000000000..101759aa07 --- /dev/null +++ b/keyboards/handwired/replicazeron/post_rules.mk @@ -0,0 +1,14 @@ +ifeq ($(strip $(LEDS_ENABLE)), yes) + OPT_DEFS += -DLEDS_ENABLE + SRC += leds.c +endif + +ifeq ($(strip $(OLED_ENABLE)), yes) + SRC += oled.c +endif + +ifeq ($(strip $(THUMBSTICK_ENABLE)), yes) + OPT_DEFS += -DTHUMBSTICK_ENABLE + SRC += thumbstick.c + ANALOG_DRIVER_REQUIRED = yes +endif diff --git a/keyboards/handwired/replicazeron/promicro/config.h b/keyboards/handwired/replicazeron/promicro/config.h new file mode 100644 index 0000000000..55b4d5c2f4 --- /dev/null +++ b/keyboards/handwired/replicazeron/promicro/config.h @@ -0,0 +1,23 @@ +/* Copyright 2023 9R + * + * 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 . + */ + +#pragma once + +#define STATUS_LED_A_PIN D2 +#define STATUS_LED_B_PIN D3 + +#define ANALOG_AXIS_PIN_X F4 +#define ANALOG_AXIS_PIN_Y F5 diff --git a/keyboards/handwired/replicazeron/promicro/keyboard.json b/keyboards/handwired/replicazeron/promicro/keyboard.json new file mode 100644 index 0000000000..dbc2e1edf3 --- /dev/null +++ b/keyboards/handwired/replicazeron/promicro/keyboard.json @@ -0,0 +1,18 @@ +{ + "usb": { + "device_version": "0.0.1" + }, + "matrix_pins": { + "cols": ["C6", "D4", "D7", "E6", "F7"], + "rows": ["B1", "B3", "B2", "B6", "B5", "B4"] + }, + "development_board": "promicro", + "features": { + "bootmagic": false, + "console": false, + "extrakey": false, + "mousekey": false, + "nkro": false, + "rgblight": false, + } +} diff --git a/keyboards/handwired/replicazeron/readme.md b/keyboards/handwired/replicazeron/readme.md new file mode 100644 index 0000000000..c933ebc092 --- /dev/null +++ b/keyboards/handwired/replicazeron/readme.md @@ -0,0 +1,69 @@ + +# Replicazeron + +This is a config to run a 3dprinted keyboard controller with qmk based on this project: + +https://sites.google.com/view/alvaro-rosati/azeron-keypad-diy-tutorial + +Some additional and redesigned files (i.e. for the OLED-display) can be found in [this repo](https://github.com/9R/replicazeron). + +![Replicazeron](https://i.imgur.com/WTys4SM.jpg) + +[Gallery](https://imgur.com/a/2qlEPVl) + +## Features + + * 23 keys + * analog stick with WASD emulation + * 5way dpad + * 2 status LEDS + * 6x WS2812 RGB-LED lighting + +## Supported MCUs + +Currently configs for STM32F103 and atmega32U4 are available, but STM32 is recommended, since the atmega may run out of flash with all features enabled. + +With minor adjustments to Pinconfig it should be possible to use other MCUs that are supported by QMK + + +## Wirering + +Full schematics can be found in this repo: + +https://github.com/9R/replicazeron_schematics + +### Rows +|row| promiro gpios | promicro pin | stm32F103 gpios | color | +|---|---------------|--------------|-----------------|---------| +| 0 | B1 | 15 | B15 | red | +| 1 | B3 | 14 | A8 | blue | +| 2 | B2 | 16 | A9 | yellow | +| 3 | B6 | 10 | A10 | brown | +| 4 | B5 | 9 | A15 | orange | +| 5 | B4 | 8 | B3 | green | + +### Columns +|col| promiro gpios | promicro pin | stm32F103 gpios | color | +|---|---------------|--------------|-----------------|---------| +| 0 | C6 | 5 | A7 | white | +| 1 | D4 | 4 | A6 | grey | +| 2 | D7 | 6 | A5 | violet | +| 3 | E6 | 7 | A4 | grey | +| 4 | F7 | A0 | B4 | white | + +### Analog +| promicro gpio | stm32F103 gpio | pin | color | +|---------------|----------------|-----|-------| +| GND | GND | GND | white | +| VCC | VCC | VCC | red | +| F4 | B1 | VRx | brown | +| F5 | B0 | VRy | yellow| +| | | SW | blue | + +### OLED +| promicro gpio | stm32F103 gpio | pin | color | +|---------------|----------------|-----|-------| +| GND | GND | GND | white | +| VCC | VCC | VCC | red | +| D4 | B10 | SDA | green | +| C6 | B11 | SCL | yellow| diff --git a/keyboards/handwired/replicazeron/replicazeron.c b/keyboards/handwired/replicazeron/replicazeron.c new file mode 100644 index 0000000000..5c27916a7b --- /dev/null +++ b/keyboards/handwired/replicazeron/replicazeron.c @@ -0,0 +1,103 @@ +/* Copyright 2023 9R + * + * 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 "replicazeron.h" + +controller_state_t controller_state; + +#ifdef JOYSTICK_ENABLE +joystick_config_t joystick_axes[JOYSTICK_AXIS_COUNT] = { + JOYSTICK_AXIS_IN(ANALOG_AXIS_PIN_X , 0, 512, 1023), + JOYSTICK_AXIS_IN(ANALOG_AXIS_PIN_Y , 0, 512, 1023) +}; +#endif + +#ifdef THUMBSTICK_ENABLE +void housekeeping_task_kb(void) { + if (controller_state.wasdMode) { + thumbstick(controller_state); + } +} +#endif + +void keyboard_post_init_kb(void) { + // Customise these values to desired behaviour + debug_enable = true; + debug_matrix = true; + // debug_keyboard = true; + // debug_mouse = true; + +#ifdef LEDS_ENABLE + init_leds(); +#endif // LEDS_ENABLE + +#ifdef THUMBSTICK_ENABLE + init_wasd_state(); +#endif // THUMBSTICK_ENABLE + + controller_state = init_state(); + + keyboard_post_init_user(); +} + +#ifdef OLED_ENABLE +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } + + draw_oled(controller_state); + return false; +} +#endif + +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + if (!process_record_user(keycode, record)) { + return false; + } + + + if (keycode == JOYMODE && record->event.pressed) { + if (!controller_state.wasdMode) { + controller_state.wasdMode = true; + } else if (controller_state.wasdMode && !controller_state.wasdShiftMode) { + controller_state.wasdShiftMode = true; + } else { + controller_state.wasdMode = false; + controller_state.wasdShiftMode = false; + } + } else if (keycode == AUTORUN && record->event.pressed) { + if (!controller_state.autoRun) { + controller_state.autoRun = true; + register_code(KC_W); + } else { + controller_state.autoRun = false; + unregister_code(KC_W); + } + } + return true; +}; + +layer_state_t layer_state_set_kb(layer_state_t state) { + state = layer_state_set_user(state); + controller_state.highestActiveLayer = get_highest_layer(state) ; + +#ifdef LEDS_ENABLE + set_leds(controller_state.highestActiveLayer) ; +#endif // LEDS_ENABLE + + return state; +} diff --git a/keyboards/handwired/replicazeron/replicazeron.h b/keyboards/handwired/replicazeron/replicazeron.h new file mode 100644 index 0000000000..dbfc8cca33 --- /dev/null +++ b/keyboards/handwired/replicazeron/replicazeron.h @@ -0,0 +1,50 @@ +/* Copyright 2023 9R + * + * 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 . + */ + +#pragma once + +#include "quantum.h" + +#include "state.h" + +#ifdef LEDS_ENABLE +# include "leds.h" +#endif + +#ifdef OLED_ENABLE +# include "oled.h" +#endif + +#ifdef THUMBSTICK_ENABLE +# include "thumbstick.h" +#endif + +enum kb_layers { + _BASE, + _SHOOTER, + _MISC, + _SETTINGS, +}; + +enum kb_keycodes { + JOYMODE = QK_USER, + AUTORUN, + M_UP, + M_DWN, + M_L, + M_R, + M_SEL +}; diff --git a/keyboards/handwired/replicazeron/rules.mk b/keyboards/handwired/replicazeron/rules.mk new file mode 100644 index 0000000000..8a812f4fc3 --- /dev/null +++ b/keyboards/handwired/replicazeron/rules.mk @@ -0,0 +1,14 @@ +JOYSTICK_ENABLE = yes +OLED_ENABLE = yes + +LEDS_ENABLE = yes +THUMBSTICK_ENABLE = yes + +LTO_ENABLE = yes + +SRC += state.c + +VPATH += keyboards/handwired/replicazeron/common + +# redirect compilation against "handwired/replicazeron" to the stm32 variant +DEFAULT_FOLDER = handwired/replicazeron/stm32f103 diff --git a/keyboards/handwired/replicazeron/stm32f103/config.h b/keyboards/handwired/replicazeron/stm32f103/config.h new file mode 100644 index 0000000000..1efc89d080 --- /dev/null +++ b/keyboards/handwired/replicazeron/stm32f103/config.h @@ -0,0 +1,29 @@ +/* Copyright 2023 9R + * + * 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 . + */ + +#pragma once + +/* I2C Config */ +#define I2C_DRIVER I2CD2 +#define I2C1_SDA_PIN B11 +#define I2C1_SCL_PIN B10 + +#define STATUS_LED_A_PIN B13 +#define STATUS_LED_B_PIN B12 + +#define ANALOG_AXIS_PIN_X B0 +#define ANALOG_AXIS_PIN_Y B1 + diff --git a/keyboards/handwired/replicazeron/stm32f103/keyboard.json b/keyboards/handwired/replicazeron/stm32f103/keyboard.json new file mode 100644 index 0000000000..7298da1109 --- /dev/null +++ b/keyboards/handwired/replicazeron/stm32f103/keyboard.json @@ -0,0 +1,31 @@ +{ + "development_board": "bluepill", + "features": { + "bootmagic": true, + "console": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": true + }, + "matrix_pins": { + "cols": ["A7", "A6", "A5", "A4", "B4"], + "rows": ["B15", "A8", "A9", "A10", "A15", "B3"] + }, + "rgblight": { + "led_count": 6 + "animations": { + "breathing": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "twinkle": true + } + }, + "usb": { + "device_version": "0.0.2" + }, + "ws2812": { + "pin": "B14" + } +} diff --git a/keyboards/handwired/replicazeron/stm32f103/mcuconf.h b/keyboards/handwired/replicazeron/stm32f103/mcuconf.h new file mode 100644 index 0000000000..26db5392cf --- /dev/null +++ b/keyboards/handwired/replicazeron/stm32f103/mcuconf.h @@ -0,0 +1,31 @@ +/* Copyright 2022 9R + * + * 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 . + */ + +#pragma once + +#include_next + +//enable i2c for OLED +#undef STM32_I2C_USE_I2C2 +#define STM32_I2C_USE_I2C2 TRUE + +#undef STM32_PWM_USE_TIM1 +#define STM32_PWM_USE_TIM1 TRUE + +//enable ADC for thumbstick +#undef STM32_ADC_USE_ADC1 +#define STM32_ADC_USE_ADC1 TRUE + From 4d74b7d8fa44df88378be76a84d276dddae3462c Mon Sep 17 00:00:00 2001 From: jatounit <120270477+jatounit@users.noreply.github.com> Date: Fri, 11 Oct 2024 20:07:56 -0700 Subject: [PATCH 08/10] Update vial.json to fix OG Vault and Universal Stagger layouts (#799) Previously these two layouts were skipping 2,5 in the matrix, instead of 2,4. This was leading to incorrectly mapped keys in the position normally assigned to 'b' --- keyboards/jlw/vault35_universal/keymaps/vial/vial.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/jlw/vault35_universal/keymaps/vial/vial.json b/keyboards/jlw/vault35_universal/keymaps/vial/vial.json index 3295d2f1e7..82db6f3e04 100644 --- a/keyboards/jlw/vault35_universal/keymaps/vial/vial.json +++ b/keyboards/jlw/vault35_universal/keymaps/vial/vial.json @@ -119,7 +119,7 @@ "2,1\n\n\n0,0", "2,2\n\n\n0,0", "2,3\n\n\n0,0", - "2,4\n\n\n0,0", + "2,5\n\n\n0,0", "2,6\n\n\n0,0", "2,7\n\n\n0,0", "2,8\n\n\n0,0", @@ -585,7 +585,7 @@ "2,1\n\n\n0,5", "2,2\n\n\n0,5", "2,3\n\n\n0,5", - "2,4\n\n\n0,5", + "2,5\n\n\n0,5", "2,6\n\n\n0,5", "2,7\n\n\n0,5", "2,8\n\n\n0,5", From 6d5d4a6ff9839b307b02a5bd371cc03c5be952d8 Mon Sep 17 00:00:00 2001 From: vuzder Date: Sat, 12 Oct 2024 05:08:13 +0200 Subject: [PATCH 09/10] Add support for Keychron Q11 ISO encoder version (#800) --- .../q11/iso_encoder/keymaps/vial/config.h | 8 + .../q11/iso_encoder/keymaps/vial/keymap.c | 69 ++++ .../q11/iso_encoder/keymaps/vial/rules.mk | 7 + .../q11/iso_encoder/keymaps/vial/vial.json | 312 ++++++++++++++++++ 4 files changed, 396 insertions(+) create mode 100644 keyboards/keychron/q11/iso_encoder/keymaps/vial/config.h create mode 100644 keyboards/keychron/q11/iso_encoder/keymaps/vial/keymap.c create mode 100644 keyboards/keychron/q11/iso_encoder/keymaps/vial/rules.mk create mode 100644 keyboards/keychron/q11/iso_encoder/keymaps/vial/vial.json diff --git a/keyboards/keychron/q11/iso_encoder/keymaps/vial/config.h b/keyboards/keychron/q11/iso_encoder/keymaps/vial/config.h new file mode 100644 index 0000000000..03fd626cc0 --- /dev/null +++ b/keyboards/keychron/q11/iso_encoder/keymaps/vial/config.h @@ -0,0 +1,8 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#pragma once + +#define VIAL_KEYBOARD_UID {0xA4, 0x1E, 0xA5, 0x3C, 0xCC, 0x66, 0x08, 0xCD} + +#define VIAL_UNLOCK_COMBO_ROWS { 0, 9 } +#define VIAL_UNLOCK_COMBO_COLS { 1, 7 } diff --git a/keyboards/keychron/q11/iso_encoder/keymaps/vial/keymap.c b/keyboards/keychron/q11/iso_encoder/keymaps/vial/keymap.c new file mode 100644 index 0000000000..2c494c08d5 --- /dev/null +++ b/keyboards/keychron/q11/iso_encoder/keymaps/vial/keymap.c @@ -0,0 +1,69 @@ +/* Copyright 2023 @ Keychron (https://www.keychron.com) + * + * 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 + +enum layers{ + MAC_BASE, + MAC_FN, + WIN_BASE, + WIN_FN, +}; + +#define KC_TASK LGUI(KC_TAB) +#define KC_FLXP LGUI(KC_E) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [MAC_BASE] = LAYOUT_92_iso( + KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL, KC_MUTE, + _______, 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_PGUP, + _______, 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_PGDN, + _______, 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_NUHS, KC_ENT, KC_HOME, + _______, KC_LSFT, KC_NUBS, 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_LCTL, KC_LOPT, KC_LCMD, MO(MAC_FN), KC_SPC, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + [MAC_FN] = LAYOUT_92_iso( + RGB_TOG, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RGB_TOG, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + + [WIN_BASE] = LAYOUT_92_iso( + KC_MUTE, KC_ESC, 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, KC_DEL, KC_MUTE, + _______, 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_PGUP, + _______, 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_PGDN, + _______, 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_NUHS, KC_ENT, KC_HOME, + _______, KC_LSFT, KC_NUBS, 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_LCTL, KC_LWIN, KC_LALT, MO(WIN_FN), KC_SPC, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + [WIN_FN] = LAYOUT_92_iso( + RGB_TOG, _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_TOG, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI), ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }, + [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI), ENCODER_CCW_CW(RGB_VAD, RGB_VAI) } +}; +#endif // ENCODER_MAP_ENABLE diff --git a/keyboards/keychron/q11/iso_encoder/keymaps/vial/rules.mk b/keyboards/keychron/q11/iso_encoder/keymaps/vial/rules.mk new file mode 100644 index 0000000000..c4ca639d6c --- /dev/null +++ b/keyboards/keychron/q11/iso_encoder/keymaps/vial/rules.mk @@ -0,0 +1,7 @@ +VIA_ENABLE = yes +VIAL_ENABLE = yes +VIALRGB_ENABLE = yes +ENCODER_MAP_ENABLE = yes + +VPATH += keyboards/keychron/common +SRC += keychron_common.c diff --git a/keyboards/keychron/q11/iso_encoder/keymaps/vial/vial.json b/keyboards/keychron/q11/iso_encoder/keymaps/vial/vial.json new file mode 100644 index 0000000000..0f332519ed --- /dev/null +++ b/keyboards/keychron/q11/iso_encoder/keymaps/vial/vial.json @@ -0,0 +1,312 @@ +{ + "name": "Keychron Q11 ISO Knob", + "vendorId": "0x3434", + "productId": "0x01E1", + "lighting": "vialrgb", + "customKeycodes": [ + { + "name": "Mission Control", + "title": "Mission Control in macOS", + "shortName": "MCtrl" + }, + { + "name": "Launch Pad", + "title": "Launch Pad in macOS", + "shortName": "LPad" + }, + { + "name": "Left Option", + "title": "Left Option in macOS", + "shortName": "LOpt" + }, + { + "name": "Right Option", + "title": "Right Option in macOS", + "shortName": "ROpt" + }, + { + "name": "Left Cmd", + "title": "Left Command in macOS", + "shortName": "LCmd" + }, + { + "name": "Right Cmd", + "title": "Right Command in macOS", + "shortName": "RCmd" + }, + { + "name": "Siri", + "title": "Siri in macOS", + "shortName": "Siri" + }, + { + "name": "Task View", + "title": "Task View in windows", + "shortName": "Task" + }, + { + "name": "File Explorer", + "title": "File Explorer in windows", + "shortName": "File" + }, + { + "name": "Screen Shot", + "title": "Screenshot in macOS", + "shortName": "SShot" + }, + { + "name": "Cortana", + "title": "Cortana in windows", + "shortName": "Cortana" + } + ], + "matrix": {"rows": 12, "cols": 9}, + "layouts": { + "keymap": [ + [ + { + "x": 0.25 + }, + "0,0\n\n\n\n\n\n\n\n\ne", + "0,1\n\n\n\n\n\n\n\n\ne", + { + "x": 15 + }, + "1,0\n\n\n\n\n\n\n\n\ne", + "1,1\n\n\n\n\n\n\n\n\ne" + ], + [ + { + "c": "#aaaaaa" + }, + "0,0", + { + "x": 0.25, + "c": "#777777" + }, + "0,1\nESC", + { + "c": "#cccccc" + }, + "0,2", + "0,3", + "0,4", + "0,5", + { + "c": "#aaaaaa" + }, + "0,6", + "0,7", + { + "x": 0.75 + }, + "6,0", + "6,1", + { + "c": "#cccccc" + }, + "6,2", + "6,3", + "6,4", + "6,5", + { + "c": "#aaaaaa" + }, + "6,6", + "6,7", + { + "x": 0.25 + }, + "6,8" + ], + [ + { + "y": 0.25 + }, + "1,0", + { + "x": 0.25 + }, + "1,1", + { + "c": "#cccccc" + }, + "1,2", + "1,3", + "1,4", + "1,5", + "1,6", + "1,7", + { + "x": 0.75 + }, + "7,0", + "7,1", + "7,2", + "7,3", + "7,4", + "7,5", + { + "c": "#aaaaaa", + "w": 2 + }, + "7,6", + { + "x": 0.25 + }, + "7,8" + ], + [ + "2,0", + { + "x": 0.25, + "w": 1.5 + }, + "2,1", + { + "c": "#cccccc" + }, + "2,2", + "2,3", + "2,4", + "2,6", + "2,7", + { + "x": 0.75 + }, + "8,0", + "8,1", + "8,2", + "8,3", + "8,4", + "8,5", + "8,6", + { + "x": 0.25, + "c": "#777777", + "w": 1.25, + "h": 2, + "w2": 1.5, + "h2": 1, + "x2": -0.25 + }, + "8,7", + { + "x": 0.25, + "c": "#aaaaaa" + }, + "8,8" + ], + [ + "3,0", + { + "x": 0.25, + "w": 1.75 + }, + "3,1", + { + "c": "#cccccc" + }, + "3,2", + "3,3", + "3,4", + "3,5", + "3,6", + { + "x": 0.75 + }, + "9,0", + "9,1", + "9,2", + "9,3", + "9,4", + "9,5", + { + "c": "#aaaaaa" + }, + "9,7", + { + "x": 1.5 + }, + "9,8" + ], + [ + "4,0", + { + "x": 0.25, + "w": 1.25 + }, + "4,1", + "4,2", + { + "c": "#cccccc" + }, + "4,3", + "4,4", + "4,5", + "4,6", + "4,7", + { + "x": 0.75 + }, + "10,0", + "10,1", + "10,2", + "10,3", + "10,4", + { + "c": "#aaaaaa", + "w": 1.75 + }, + "10,5", + { + "x": 0.25, + "c": "#777777" + }, + "10,7" + ], + [ + { + "c": "#aaaaaa" + }, + "5,0", + { + "x": 0.25, + "w": 1.25 + }, + "5,1", + { + "w": 1.25 + }, + "5,2", + { + "w": 1.25 + }, + "5,3", + { + "w": 1.25 + }, + "5,4", + { + "w": 2.25 + }, + "5,6", + { + "x": 0.75, + "w": 2.75 + }, + "11,1", + "11,2", + "11,3", + "11,4", + { + "x": 0.25, + "c": "#777777" + }, + "11,6", + "11,7", + "11,8" + ] + ] + } +} From f2aa85450171582ce41a570fa70f50c8d233c3c8 Mon Sep 17 00:00:00 2001 From: azhizhinov Date: Sun, 13 Oct 2024 04:20:11 +0300 Subject: [PATCH 10/10] Add keyboard [Piantor UV 44] (#801) --- keyboards/piantoruv44/config.h | 12 + keyboards/piantoruv44/keyboard.json | 98 ++++++++ .../piantoruv44/keymaps/default/keymap.c | 30 +++ keyboards/piantoruv44/keymaps/vial/config.h | 9 + keyboards/piantoruv44/keymaps/vial/keymap.c | 30 +++ keyboards/piantoruv44/keymaps/vial/rules.mk | 3 + keyboards/piantoruv44/keymaps/vial/vial.json | 233 ++++++++++++++++++ keyboards/piantoruv44/readme.md | 27 ++ 8 files changed, 442 insertions(+) create mode 100644 keyboards/piantoruv44/config.h create mode 100644 keyboards/piantoruv44/keyboard.json create mode 100644 keyboards/piantoruv44/keymaps/default/keymap.c create mode 100644 keyboards/piantoruv44/keymaps/vial/config.h create mode 100644 keyboards/piantoruv44/keymaps/vial/keymap.c create mode 100644 keyboards/piantoruv44/keymaps/vial/rules.mk create mode 100644 keyboards/piantoruv44/keymaps/vial/vial.json create mode 100644 keyboards/piantoruv44/readme.md diff --git a/keyboards/piantoruv44/config.h b/keyboards/piantoruv44/config.h new file mode 100644 index 0000000000..e6ba4c0be9 --- /dev/null +++ b/keyboards/piantoruv44/config.h @@ -0,0 +1,12 @@ +// Copyright 2022 beekeeb +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + + +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U + +#define SERIAL_USART_FULL_DUPLEX +#define SERIAL_USART_TX_PIN GP0 +#define SERIAL_USART_RX_PIN GP1 diff --git a/keyboards/piantoruv44/keyboard.json b/keyboards/piantoruv44/keyboard.json new file mode 100644 index 0000000000..e2374dca6d --- /dev/null +++ b/keyboards/piantoruv44/keyboard.json @@ -0,0 +1,98 @@ +{ + "manufacturer": "azhizhinov", + "keyboard_name": "PIANTORUV44", + "maintainer": "azhizhinov", + "bootloader": "rp2040", + "bootmagic": { + "matrix": [0, 5] + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "direct": [ + ["GP5", "GP4", "GP11", "GP15", "GP3", "GP2"], + ["GP22", "GP20", "GP10", "GP14", "GP9", "GP8"], + ["GP21", "GP19", "GP6", "GP7", "GP13", "GP12"], + ["GP17", "GP18", "GP16", "GP26", null, null] + ] + }, + "processor": "RP2040", + "split": { + "enabled": true, + "matrix_pins": { + "right": { + "direct": [ + ["GP2", "GP3", "GP15", "GP11", "GP4", "GP5"], + ["GP8", "GP9", "GP14", "GP10", "GP20", "GP22"], + ["GP12", "GP13", "GP7", "GP6", "GP19", "GP21"], + ["GP26", "GP16", "GP18", "GP17", null, null] + ] + } + }, + "serial": { + "driver": "vendor" + } + }, + "url": "https://github.com/azhizhinov/PIANTORUV44", + "usb": { + "device_version": "1.0.0", + "pid": "0x0004", + "vid": "0x415A" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0.25}, + {"matrix": [0, 1], "x": 1, "y": 0.25}, + {"matrix": [0, 2], "x": 2, "y": 0.125}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0.125}, + {"matrix": [0, 5], "x": 5, "y": 0.25}, + {"matrix": [4, 0], "x": 8, "y": 0.25}, + {"matrix": [4, 1], "x": 9, "y": 0.125}, + {"matrix": [4, 2], "x": 10, "y": 0}, + {"matrix": [4, 3], "x": 11, "y": 0.125}, + {"matrix": [4, 4], "x": 12, "y": 0.25}, + {"matrix": [4, 5], "x": 13, "y": 0.25}, + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.125}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1.125}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [5, 0], "x": 8, "y": 1.25}, + {"matrix": [5, 1], "x": 9, "y": 1.125}, + {"matrix": [5, 2], "x": 10, "y": 1}, + {"matrix": [5, 3], "x": 11, "y": 1.125}, + {"matrix": [5, 4], "x": 12, "y": 1.25}, + {"matrix": [5, 5], "x": 13, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25}, + {"matrix": [2, 1], "x": 1, "y": 2.25}, + {"matrix": [2, 2], "x": 2, "y": 2.125}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2.125}, + {"matrix": [2, 5], "x": 5, "y": 2.25}, + {"matrix": [6, 0], "x": 8, "y": 2.25}, + {"matrix": [6, 1], "x": 9, "y": 2.125}, + {"matrix": [6, 2], "x": 10, "y": 2}, + {"matrix": [6, 3], "x": 11, "y": 2.125}, + {"matrix": [6, 4], "x": 12, "y": 2.25}, + {"matrix": [6, 5], "x": 13, "y": 2.25}, + {"matrix": [3, 0], "x": 2.5, "y": 3}, + {"matrix": [3, 1], "x": 3.5, "y": 3.25}, + {"matrix": [3, 2], "x": 4.5, "y": 3.5}, + {"matrix": [3, 3], "x": 5.5, "y": 3.75}, + {"matrix": [7, 0], "x": 7.5, "y": 3.75}, + {"matrix": [7, 1], "x": 8.5, "y": 3.5}, + {"matrix": [7, 2], "x": 9.5, "y": 3.25}, + {"matrix": [7, 3], "x": 10.5, "y": 3} + ] + } + } +} diff --git a/keyboards/piantoruv44/keymaps/default/keymap.c b/keyboards/piantoruv44/keymaps/default/keymap.c new file mode 100644 index 0000000000..49d5e4d178 --- /dev/null +++ b/keyboards/piantoruv44/keymaps/default/keymap.c @@ -0,0 +1,30 @@ +// Copyright 2021 azhizhinov (@azhizhinov) +// SPDX-License-Identifier: GPL-2.0-or-late +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_GRV, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_TAB, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RBRC, + KC_LALT, KC_LSFT, MO(1), KC_BSPC, KC_ENT, MO(2), KC_SPC, RCTL(KC_BSPC) + ), + [1] = LAYOUT( + 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_LCTL, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_LEFT, KC_UP, KC_RGHT, KC_NO, KC_HOME, KC_NO, + KC_LSFT, KC_CAPS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_DOWN, KC_NO, KC_NO, KC_END, KC_RALT, + KC_LALT, KC_LGUI, KC_TRNS, KC_ESC, KC_ENT, MO(3), KC_SPC, RCTL(KC_BSPC) + ), + [2] = 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, + KC_LCTL, KC_BSPC, KC_C, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_LSFT, KC_X, KC_V, KC_S, KC_L, KC_NO, KC_UNDS, KC_PLUS, KC_PMNS, KC_NO, KC_NO, KC_RALT, + KC_LALT, KC_LGUI, MO(3), KC_ESC, KC_ENT, KC_TRNS, KC_SPC, RCTL(KC_BSPC) + ), + [3] = LAYOUT( + KC_TAB, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_LCTL, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_GRV, + KC_LSFT, KC_CAPS, KC_NO, KC_NO, KC_NO, KC_NO, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, KC_RALT, + KC_LALT, KC_LGUI, KC_TRNS, KC_ESC, KC_ENT, KC_TRNS, KC_SPC, RCTL(KC_BSPC) + ) +}; diff --git a/keyboards/piantoruv44/keymaps/vial/config.h b/keyboards/piantoruv44/keymaps/vial/config.h new file mode 100644 index 0000000000..b7db2cad07 --- /dev/null +++ b/keyboards/piantoruv44/keymaps/vial/config.h @@ -0,0 +1,9 @@ +/* keyboard uid */ +#define VIAL_KEYBOARD_UID {0x09, 0xA9, 0x7F, 0x52, 0x09, 0x0A, 0xAA, 0x6F} + +#define VIAL_UNLOCK_COMBO_ROWS { 0, 4 } +#define VIAL_UNLOCK_COMBO_COLS { 0, 5 } + +/* default layer count */ +#define DYNAMIC_KEYMAP_LAYER_COUNT 10 + diff --git a/keyboards/piantoruv44/keymaps/vial/keymap.c b/keyboards/piantoruv44/keymaps/vial/keymap.c new file mode 100644 index 0000000000..49d5e4d178 --- /dev/null +++ b/keyboards/piantoruv44/keymaps/vial/keymap.c @@ -0,0 +1,30 @@ +// Copyright 2021 azhizhinov (@azhizhinov) +// SPDX-License-Identifier: GPL-2.0-or-late +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_GRV, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_TAB, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RBRC, + KC_LALT, KC_LSFT, MO(1), KC_BSPC, KC_ENT, MO(2), KC_SPC, RCTL(KC_BSPC) + ), + [1] = LAYOUT( + 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_LCTL, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_LEFT, KC_UP, KC_RGHT, KC_NO, KC_HOME, KC_NO, + KC_LSFT, KC_CAPS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_DOWN, KC_NO, KC_NO, KC_END, KC_RALT, + KC_LALT, KC_LGUI, KC_TRNS, KC_ESC, KC_ENT, MO(3), KC_SPC, RCTL(KC_BSPC) + ), + [2] = 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, + KC_LCTL, KC_BSPC, KC_C, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_LSFT, KC_X, KC_V, KC_S, KC_L, KC_NO, KC_UNDS, KC_PLUS, KC_PMNS, KC_NO, KC_NO, KC_RALT, + KC_LALT, KC_LGUI, MO(3), KC_ESC, KC_ENT, KC_TRNS, KC_SPC, RCTL(KC_BSPC) + ), + [3] = LAYOUT( + KC_TAB, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_LCTL, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_GRV, + KC_LSFT, KC_CAPS, KC_NO, KC_NO, KC_NO, KC_NO, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, KC_RALT, + KC_LALT, KC_LGUI, KC_TRNS, KC_ESC, KC_ENT, KC_TRNS, KC_SPC, RCTL(KC_BSPC) + ) +}; diff --git a/keyboards/piantoruv44/keymaps/vial/rules.mk b/keyboards/piantoruv44/keymaps/vial/rules.mk new file mode 100644 index 0000000000..5655f43ca2 --- /dev/null +++ b/keyboards/piantoruv44/keymaps/vial/rules.mk @@ -0,0 +1,3 @@ +VIA_ENABLE = yes +VIAL_ENABLE = yes + diff --git a/keyboards/piantoruv44/keymaps/vial/vial.json b/keyboards/piantoruv44/keymaps/vial/vial.json new file mode 100644 index 0000000000..6c52f244a3 --- /dev/null +++ b/keyboards/piantoruv44/keymaps/vial/vial.json @@ -0,0 +1,233 @@ +{ + "name": "piantoruv44", + "lighting": "none", + "vendorId": "0x415A", + "productId": "0x0004", + "matrix": { + "rows": 8, + "cols": 6 + }, + "layouts": { + "keymap": [ + [ + { + "x": 3 + }, + "0,3", + { + "x": 8.25 + }, + "4,2" + ], + [ + { + "y": -0.75, + "x": 2 + }, + "0,2", + { + "x": 1 + }, + "0,4", + { + "x": 6.25 + }, + "4,1", + { + "x": 1 + }, + "4,3" + ], + [ + { + "y": -0.9, + "x": 5 + }, + "0,5", + { + "x": 4.25 + }, + "4,0" + ], + [ + { + "y": -0.3500000000000001 + }, + "0,0", + "0,1", + { + "x": 1 + }, + "1,3", + { + "x": 8.25 + }, + "5,2", + { + "x": 1 + }, + "4,4", + "4,5" + ], + [ + { + "y": -0.75, + "x": 2 + }, + "1,2", + { + "x": 1, + "n": true + }, + "1,4", + { + "x": 6.25, + "n": true + }, + "5,1", + { + "x": 1 + }, + "5,3" + ], + [ + { + "y": -0.8999999999999999, + "x": 5 + }, + "1,5", + { + "x": 4.25 + }, + "5,0" + ], + [ + { + "y": -0.3500000000000001 + }, + "1,0", + "1,1", + { + "x": 1 + }, + "2,3", + { + "x": 8.25 + }, + "6,2", + { + "x": 1 + }, + "5,4", + "5,5" + ], + [ + { + "y": -0.75, + "x": 2 + }, + "2,2", + { + "x": 1 + }, + "2,4", + { + "x": 6.25 + }, + "6,1", + { + "x": 1 + }, + "6,3" + ], + [ + { + "y": -0.8999999999999999, + "x": 5 + }, + "2,5", + { + "x": 4.25 + }, + "6,0" + ], + [ + { + "y": -0.3500000000000001 + }, + "2,0", + "2,1", + { + "x": 12.25 + }, + "6,4", + "6,5" + ], + [ + { + "y": -0.5, + "x": 4 + }, + "3,0", + "3,1", + "3,2", + "3,3", + { + "x": 0.25 + }, + "7,0", + "7,1", + "7,2", + "7,3" + ] +], + "LAYOUT": { + "layout": [ + {"matrix": [0,3], "x": 3, "y": 0}, + {"matrix": [4,2], "x": 12.25, "y": 0}, + {"matrix": [0,2], "x": 2, "y": 0.25}, + {"matrix": [0,4], "x": 4, "y": 0.25}, + {"matrix": [4,1], "x": 11.25, "y": 0.25}, + {"matrix": [4,3], "x": 13.25, "y": 0.25}, + {"matrix": [0,5], "x": 5, "y": 0.35}, + {"matrix": [4,0], "x": 10.25, "y": 0.35}, + {"matrix": [0,0], "x": 0, "y": 1.0}, + {"matrix": [0,1], "x": 1, "y": 1.0}, + {"matrix": [1,3], "x": 3, "y": 1.0}, + {"matrix": [5,2], "x": 12.25, "y": 1.0}, + {"matrix": [4,4], "x": 14.25, "y": 1.0}, + {"matrix": [4,5], "x": 15.25, "y": 1.0}, + {"matrix": [1,2], "x": 2, "y": 1.25}, + {"matrix": [1,4], "x": 4, "y": 1.25}, + {"matrix": [5,1], "x": 11.25, "y": 1.25}, + {"matrix": [5,3], "x": 13.25, "y": 1.25}, + {"matrix": [1,5], "x": 5, "y": 1.35}, + {"matrix": [5,0], "x": 10.25, "y": 1.35}, + {"matrix": [1,0], "x": 0, "y": 2.0}, + {"matrix": [1,1], "x": 1, "y": 2.0}, + {"matrix": [2,3], "x": 3, "y": 2.0}, + {"matrix": [6,2], "x": 12.25, "y": 2.0}, + {"matrix": [5,4], "x": 14.25, "y": 2.0}, + {"matrix": [5,5], "x": 15.25, "y": 2.0}, + {"matrix": [2,2], "x": 2, "y": 2.25}, + {"matrix": [2,4], "x": 4, "y": 2.25}, + {"matrix": [6,1], "x": 11.25, "y": 2.25}, + {"matrix": [6,3], "x": 13.25, "y": 2.25}, + {"matrix": [2,5], "x": 5, "y": 2.35}, + {"matrix": [6,0], "x": 10.25, "y": 2.35}, + {"matrix": [2,0], "x": 0, "y": 3.0}, + {"matrix": [2,1], "x": 1, "y": 3.0}, + {"matrix": [6,4], "x": 14.25, "y": 3.0}, + {"matrix": [6,5], "x": 15.25, "y": 3.0}, + {"matrix": [3,0], "x": 4, "y": 3.5}, + {"matrix": [3,1], "x": 5, "y": 3.5}, + {"matrix": [3,2], "x": 6, "y": 3.5}, + {"matrix": [3,3], "x": 7, "y": 3.5}, + {"matrix": [7,0], "x": 8.25, "y": 3.5}, + {"matrix": [7,1], "x": 9.25, "y": 3.5}, + {"matrix": [7,2], "x": 10.25, "y": 3.5}, + {"matrix": [7,3], "x": 11.25, "y": 3.5} + ] + } + } +} diff --git a/keyboards/piantoruv44/readme.md b/keyboards/piantoruv44/readme.md new file mode 100644 index 0000000000..0fe5fe2d0c --- /dev/null +++ b/keyboards/piantoruv44/readme.md @@ -0,0 +1,27 @@ +# Piantor UV 44 + +![Piantor UV 44](https://i.ibb.co/QvJM1GR/20240806-PIANTORUV44-00.png) + +PiantorUV44 is a Piantor/Cantor fork with Raspberry Pi Pico, hybrid hotswap socket and soldered-in switches support and flippable PCB. + +* Keyboard Maintainer: [azhizhinov](https://github.com/azhizhinov) +* Hardware Supported: RP2040 +* Hardware Availability: https://github.com/azhizhinov/PIANTORUV44 + +Make example for this keyboard (after setting up your build environment): + + make piantoruv44:default + +Flashing example for this keyboard: + + make piantoruv44:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 2 ways: + +* **Physical reset button**: Hold the `BOOT` button on the Pico and press the `RST` button on the Pico, release the the `RST` button before the `BOOT` button. +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available +Once you enter the bootloader, the keyboard will show up as a USB device on your computer, you could drag and drop a firmware file to flash it, but I recommend using the flash commands for the respective side.