From 0b2539103d756715cb753d41daa3413cfaa0149e Mon Sep 17 00:00:00 2001 From: Sei Date: Sun, 29 Oct 2023 13:19:45 -0700 Subject: [PATCH] Basic VIAL porting for Quark 4x12 and pi60 HSE --- .../pi60_hse/keymaps/vial/config.h | 14 +++ .../pi60_hse/keymaps/vial/keymap.c | 100 ++++++++++++++++++ .../pi60_hse/keymaps/vial/rules.mk | 6 ++ .../pi60_hse/keymaps/vial/vial.json | 24 +++++ .../checkerboards/quark/Quark VIAL files.zip | Bin 0 -> 31672 bytes .../quark/keymaps/vial_4x12/config.h | 14 +++ .../quark/keymaps/vial_4x12/keymap.c | 38 +++++++ .../quark/keymaps/vial_4x12/rules.mk | 16 +++ .../quark/keymaps/vial_4x12/vial.json | 30 ++++++ 9 files changed, 242 insertions(+) create mode 100644 keyboards/1upkeyboards/pi60_hse/keymaps/vial/config.h create mode 100644 keyboards/1upkeyboards/pi60_hse/keymaps/vial/keymap.c create mode 100644 keyboards/1upkeyboards/pi60_hse/keymaps/vial/rules.mk create mode 100644 keyboards/1upkeyboards/pi60_hse/keymaps/vial/vial.json create mode 100644 keyboards/checkerboards/quark/Quark VIAL files.zip create mode 100644 keyboards/checkerboards/quark/keymaps/vial_4x12/config.h create mode 100644 keyboards/checkerboards/quark/keymaps/vial_4x12/keymap.c create mode 100644 keyboards/checkerboards/quark/keymaps/vial_4x12/rules.mk create mode 100644 keyboards/checkerboards/quark/keymaps/vial_4x12/vial.json diff --git a/keyboards/1upkeyboards/pi60_hse/keymaps/vial/config.h b/keyboards/1upkeyboards/pi60_hse/keymaps/vial/config.h new file mode 100644 index 00000000000..79e33456b3d --- /dev/null +++ b/keyboards/1upkeyboards/pi60_hse/keymaps/vial/config.h @@ -0,0 +1,14 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#pragma once + +#define VIAL_KEYBOARD_UID {0x39, 0x54, 0xF2, 0xE5, 0xDD, 0x06, 0xD5, 0x30} + +#define VIAL_UNLOCK_COMBO_ROWS { 0, 2 } +#define VIAL_UNLOCK_COMBO_COLS { 0, 13 } + +#define VIAL_TAP_DANCE_ENTRIES 10 + +#define VIAL_COMBO_ENTRIES 10 + +#define DYNAMIC_KEYMAP_MACRO_COUNT 10 diff --git a/keyboards/1upkeyboards/pi60_hse/keymaps/vial/keymap.c b/keyboards/1upkeyboards/pi60_hse/keymaps/vial/keymap.c new file mode 100644 index 00000000000..781ef455c38 --- /dev/null +++ b/keyboards/1upkeyboards/pi60_hse/keymaps/vial/keymap.c @@ -0,0 +1,100 @@ +/* Copyright 2022 ziptyze + * + * 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_60_ansi_split_bs_rshift( + KC_ESC, 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_GRV, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL + ), + + [1] = LAYOUT_60_ansi_split_bs_rshift( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SCRL, KC_PAUS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, + KC_TRNS, KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(2), KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT_60_ansi_split_bs_rshift( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW,KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_RMOD,RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, RGB_M_SN,RGB_M_K, RGB_M_X, RGB_M_G, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [3] = LAYOUT_60_ansi_split_bs_rshift( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [4] = LAYOUT_60_ansi_split_bs_rshift( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [5] = LAYOUT_60_ansi_split_bs_rshift( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [6] = LAYOUT_60_ansi_split_bs_rshift( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [7] = LAYOUT_60_ansi_split_bs_rshift( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [8] = LAYOUT_60_ansi_split_bs_rshift( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [9] = LAYOUT_60_ansi_split_bs_rshift( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/1upkeyboards/pi60_hse/keymaps/vial/rules.mk b/keyboards/1upkeyboards/pi60_hse/keymaps/vial/rules.mk new file mode 100644 index 00000000000..39a69ac98db --- /dev/null +++ b/keyboards/1upkeyboards/pi60_hse/keymaps/vial/rules.mk @@ -0,0 +1,6 @@ +VIA_ENABLE = yes +VIAL_ENABLE = yes +LTO_ENABLE = yes +VIAL_INSECURE = no +QMK_SETTINGS = no +KEY_OVERRIDE_ENABLE = no \ No newline at end of file diff --git a/keyboards/1upkeyboards/pi60_hse/keymaps/vial/vial.json b/keyboards/1upkeyboards/pi60_hse/keymaps/vial/vial.json new file mode 100644 index 00000000000..c91ce48a3ed --- /dev/null +++ b/keyboards/1upkeyboards/pi60_hse/keymaps/vial/vial.json @@ -0,0 +1,24 @@ +{ + "name": "pi60HSE", + "lighting": "none", + "matrix": { + "rows": 6, + "cols": 14 + }, + "layouts": { + "labels":[ + "Split Backspace", + "Split Right Shift", + "Tsangan Bottom Row" + ], + "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",{"w":2},"0,13\n\n\n0,0","0,13\n\n\n0,1","1,13\n\n\n0,1"], + [{"w":1.5},"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",{"w":1.5},"2,12"], + [{"w":1.75},"2,0","2,1","2,2","2,3","2,4","2,5","2,6","2,7","2,8","2,9","2,10","2,11",{"w":2.25},"2,13"], + [{"w":2.25},"3,0","3,1","3,2","3,3","3,4","3,5","3,6","3,7","3,8","3,9","3,10",{"w":2.75},"3,12\n\n\n1,0",{"w":1.75},"3,12\n\n\n1,1","3,13\n\n\n1,1"], + [{"w":1.25},"4,0\n\n\n2,0",{"w":1.25},"4,1\n\n\n2,0",{"w":1.25},"4,2\n\n\n2,0",{"w":6.25},"5,5\n\n\n2,0",{"w":1.25},"5,9\n\n\n2,0",{"w":1.25},"5,10\n\n\n2,0",{"w":1.25},"5,12\n\n\n2,0",{"w":1.25},"5,13\n\n\n2,0"], + [{"w":1.5},"4,0\n\n\n2,1","4,1\n\n\n2,1",{"w":1.5},"4,2\n\n\n2,1",{"w":7},"5,5\n\n\n2,1",{"w":1.5},"5,10\n\n\n2,1","5,12\n\n\n2,1",{"w":1.5},"5,13\n\n\n2,1"] + ] + } +} + diff --git a/keyboards/checkerboards/quark/Quark VIAL files.zip b/keyboards/checkerboards/quark/Quark VIAL files.zip new file mode 100644 index 0000000000000000000000000000000000000000..fefce6e9d5397f5f8d9ef606682e9d9ec809fcbc GIT binary patch literal 31672 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 XqAZ7q1pN;q@Fjo_17qU|{q6q%$r}EA literal 0 HcmV?d00001 diff --git a/keyboards/checkerboards/quark/keymaps/vial_4x12/config.h b/keyboards/checkerboards/quark/keymaps/vial_4x12/config.h new file mode 100644 index 00000000000..b1739dece21 --- /dev/null +++ b/keyboards/checkerboards/quark/keymaps/vial_4x12/config.h @@ -0,0 +1,14 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#pragma once + +#define VIAL_KEYBOARD_UID {0x80, 0x05, 0x24, 0x36, 0xEA, 0x85, 0x20, 0x78} + +#define VIAL_UNLOCK_COMBO_ROWS { 1, 1 } +#define VIAL_UNLOCK_COMBO_COLS { 0, 11 } + +#define VIAL_TAP_DANCE_ENTRIES 2 + +#define VIAL_COMBO_ENTRIES 2 + +#define DYNAMIC_KEYMAP_MACRO_COUNT 2 \ No newline at end of file diff --git a/keyboards/checkerboards/quark/keymaps/vial_4x12/keymap.c b/keyboards/checkerboards/quark/keymaps/vial_4x12/keymap.c new file mode 100644 index 00000000000..f151449ead0 --- /dev/null +++ b/keyboards/checkerboards/quark/keymaps/vial_4x12/keymap.c @@ -0,0 +1,38 @@ +// Copyright 2020 Nathan Spears + +#include QMK_KEYBOARD_H + +// Defines for task manager and such +#define CALTDEL LCTL(LALT(KC_DEL)) +#define TSKMGR LCTL(LSFT(KC_ESC)) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ortho_4x12( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, 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_QUOT, + KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_SPC, MO(2), KC_RGUI, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT + ), + + [1] = LAYOUT_ortho_4x12( + KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINUS,KC_EQUAL,KC_TRNS, + KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT_ortho_4x12( + KC_EQL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_LBRC, KC_RBRC, KC_DELETE, + KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_BSLS, KC_ENT, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; + +#ifdef 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(_______, _______) }, + [2] = { ENCODER_CCW_CW(_______, _______) }, +}; +#endif diff --git a/keyboards/checkerboards/quark/keymaps/vial_4x12/rules.mk b/keyboards/checkerboards/quark/keymaps/vial_4x12/rules.mk new file mode 100644 index 00000000000..5163412beba --- /dev/null +++ b/keyboards/checkerboards/quark/keymaps/vial_4x12/rules.mk @@ -0,0 +1,16 @@ +VIA_ENABLE = yes +VIAL_ENABLE = yes +LTO_ENABLE = yes +ENCODER_MAP_ENABLE = yes +KEY_OVERRIDE_ENABLE = no +QMK_SETTINGS = no +VIAL_INSECURE = no +TAP_DANCE_ENABLE = yes +COMBO_ENABLE = yes +CONSOLE_ENABLE = no +COMMAND_ENABLE = no +MOUSEKEY_ENABLE = no +EXTRAKEY_ENABLE = no +SPACE_CADET_ENABLE = no +GRAVE_ESC_ENABLE = no +MAGIC_ENABLE = no \ No newline at end of file diff --git a/keyboards/checkerboards/quark/keymaps/vial_4x12/vial.json b/keyboards/checkerboards/quark/keymaps/vial_4x12/vial.json new file mode 100644 index 00000000000..f577ff45f5c --- /dev/null +++ b/keyboards/checkerboards/quark/keymaps/vial_4x12/vial.json @@ -0,0 +1,30 @@ +{ + "name": "Quark", + "matrix": { + "rows": 4, + "cols": 12 + }, + "layouts": { + "labels":[ + [ + "Bottom Row", + "Ortho 4x12", + "MIT (2u Space)", + "2x3u Space", + "6u Space", + "2x2.25u Space" + ] + ], + "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"], + ["1,0","1,1","1,2","1,3","1,4","1,5","1,6","1,7","1,8","1,9","1,10","1,11"], + ["2,0","2,1","2,2","2,3","2,4","2,5","2,6","2,7","2,8","2,9","2,10","2,11"], + ["3,0\n\n\n0,0","3,1\n\n\n0,0","3,2\n\n\n0,0","3,3\n\n\n0,0","3,4\n\n\n0,0","3,5\n\n\n0,0","3,6\n\n\n0,0","3,7\n\n\n0,0","3,8\n\n\n0,0","3,9\n\n\n0,0","3,10\n\n\n0,0","3,11\n\n\n0,0"], + ["3,0\n\n\n0,1","3,1\n\n\n0,1","3,2\n\n\n0,1","3,3\n\n\n0,1","3,4\n\n\n0,1",{"w":2},"3,5\n\n\n0,1","3,7\n\n\n0,1","3,8\n\n\n0,1","3,9\n\n\n0,1","3,10\n\n\n0,1","3,11\n\n\n0,1"], + ["3,0\n\n\n0,2","3,1\n\n\n0,2","3,2\n\n\n0,2",{"w":3},"3,4\n\n\n0,2",{"w":3},"3,7\n\n\n0,2","3,9\n\n\n0,2","3,10\n\n\n0,2","3,11\n\n\n0,2"], + ["3,0\n\n\n0,3","3,1\n\n\n0,3","3,2\n\n\n0,3",{"w":6},"3,5\n\n\n0,3","3,9\n\n\n0,3","3,10\n\n\n0,3","3,11\n\n\n0,3"], + [{"w":1.25},"3,0\n\n\n0,4",{"w":1.25},"3,1\n\n\n0,4",{"w":1.25},"3,3\n\n\n0,4",{"w":2.25},"3,4\n\n\n0,4",{"w":2.25},"3,7\n\n\n0,4",{"w":1.25},"3,8\n\n\n0,4",{"w":1.25},"3,10\n\n\n0,4",{"w":1.25},"3,11\n\n\n0,4"] + ] + } +} +