diff --git a/keyboards/crin/keyboard.json b/keyboards/bachoo/crin/keyboard.json similarity index 100% rename from keyboards/crin/keyboard.json rename to keyboards/bachoo/crin/keyboard.json diff --git a/keyboards/crin/keymaps/default/keymap.c b/keyboards/bachoo/crin/keymaps/default/keymap.c similarity index 100% rename from keyboards/crin/keymaps/default/keymap.c rename to keyboards/bachoo/crin/keymaps/default/keymap.c diff --git a/keyboards/crin/keymaps/via/keymap.c b/keyboards/bachoo/crin/keymaps/via/keymap.c similarity index 100% rename from keyboards/crin/keymaps/via/keymap.c rename to keyboards/bachoo/crin/keymaps/via/keymap.c diff --git a/keyboards/crin/keymaps/via/rules.mk b/keyboards/bachoo/crin/keymaps/via/rules.mk similarity index 100% rename from keyboards/crin/keymaps/via/rules.mk rename to keyboards/bachoo/crin/keymaps/via/rules.mk diff --git a/keyboards/crin/readme.md b/keyboards/bachoo/crin/readme.md similarity index 100% rename from keyboards/crin/readme.md rename to keyboards/bachoo/crin/readme.md diff --git a/keyboards/nemui/chconf.h b/keyboards/bachoo/nemui/chconf.h similarity index 100% rename from keyboards/nemui/chconf.h rename to keyboards/bachoo/nemui/chconf.h diff --git a/keyboards/nemui/halconf.h b/keyboards/bachoo/nemui/halconf.h similarity index 100% rename from keyboards/nemui/halconf.h rename to keyboards/bachoo/nemui/halconf.h diff --git a/keyboards/nemui/keyboard.json b/keyboards/bachoo/nemui/keyboard.json similarity index 100% rename from keyboards/nemui/keyboard.json rename to keyboards/bachoo/nemui/keyboard.json diff --git a/keyboards/nemui/keymaps/default/keymap.c b/keyboards/bachoo/nemui/keymaps/default/keymap.c similarity index 100% rename from keyboards/nemui/keymaps/default/keymap.c rename to keyboards/bachoo/nemui/keymaps/default/keymap.c diff --git a/keyboards/nemui/keymaps/via/keymap.c b/keyboards/bachoo/nemui/keymaps/via/keymap.c similarity index 100% rename from keyboards/nemui/keymaps/via/keymap.c rename to keyboards/bachoo/nemui/keymaps/via/keymap.c diff --git a/keyboards/nemui/keymaps/via/rules.mk b/keyboards/bachoo/nemui/keymaps/via/rules.mk similarity index 100% rename from keyboards/nemui/keymaps/via/rules.mk rename to keyboards/bachoo/nemui/keymaps/via/rules.mk diff --git a/keyboards/nemui/mcuconf.h b/keyboards/bachoo/nemui/mcuconf.h similarity index 100% rename from keyboards/nemui/mcuconf.h rename to keyboards/bachoo/nemui/mcuconf.h diff --git a/keyboards/nemui/readme.md b/keyboards/bachoo/nemui/readme.md similarity index 100% rename from keyboards/nemui/readme.md rename to keyboards/bachoo/nemui/readme.md diff --git a/keyboards/bachoo/x88/config.h b/keyboards/bachoo/x88/config.h new file mode 100644 index 0000000000..48b2f2ff37 --- /dev/null +++ b/keyboards/bachoo/x88/config.h @@ -0,0 +1,10 @@ +// Copyright 2024 Bachoo (@cBachoo) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define WS2812_SPI_DRIVER SPID2 +#define WS2812_SPI_MOSI_PAL_MODE 0 +#define WS2812_SPI_SCK_PIN B13 +#define WS2812_SPI_SCK_PAL_MODE 0 +#define WS2812_EXTERNAL_PULLUP \ No newline at end of file diff --git a/keyboards/bachoo/x88/halconf.h b/keyboards/bachoo/x88/halconf.h new file mode 100644 index 0000000000..2c01239b3e --- /dev/null +++ b/keyboards/bachoo/x88/halconf.h @@ -0,0 +1,8 @@ +// Copyright 2024 Bachoo (@cBachoo) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define HAL_USE_SPI TRUE + +#include_next \ No newline at end of file diff --git a/keyboards/bachoo/x88/keyboard.json b/keyboards/bachoo/x88/keyboard.json new file mode 100644 index 0000000000..2d684dc11e --- /dev/null +++ b/keyboards/bachoo/x88/keyboard.json @@ -0,0 +1,279 @@ +{ + "manufacturer": "concreteflowers", + "keyboard_name": "X88", + "maintainer": "Bachoo", + "bootloader": "stm32-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "matrix_pins": { + "cols": ["A9", "A8", "B12", "B11", "B10", "B2", "B1", "B0", "A7", "A6", "A5", "A4", "A3", "A2", "A1", "B9", "B6"], + "rows": ["A15", "B3", "B4", "A10", "B8", "B7"] + }, + "processor": "STM32F072", + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x1001", + "vid": "0xC04C" + }, + "ws2812": { + "pin": "B15", + "driver": "spi" + }, + "rgb_matrix": { + "animations": { + "alphas_mods": true, + "gradient_up_down": true, + "gradient_left_right": true, + "breathing": true, + "band_sat": true, + "band_val": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_up_down": true, + "rainbow_moving_chevron": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "dual_beacon": true, + "rainbow_beacon": true, + "rainbow_pinwheels": true, + "raindrops": true, + "jellybean_raindrops": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "pixel_rain": true, + "pixel_flow": true, + "pixel_fractal": true, + "typing_heatmap": true, + "digital_rain": true, + "solid_reactive_simple": true, + "solid_reactive": true, + "solid_reactive_wide": true, + "solid_reactive_multiwide": true, + "solid_reactive_cross": true, + "solid_reactive_multicross": true, + "solid_reactive_nexus": true, + "solid_reactive_multinexus": true, + "splash": true, + "multisplash": true, + "solid_splash": true, + "solid_multisplash": true + }, + "driver": "ws2812", + "layout": [ + {"flags": 8, "matrix": [0,15], "x":208, "y":0}, + {"flags": 8, "matrix": [3, 0], "x":5, "y":40}, + + {"flags": 2, "matrix": [0, 0], "x":0, "y": 0}, + {"flags": 2, "matrix": [0, 2], "x":26, "y": 0}, + {"flags": 2, "matrix": [0, 3], "x":38, "y": 0}, + {"flags": 2, "matrix": [0, 4], "x":51, "y": 0}, + {"flags": 2, "matrix": [0, 5], "x":64, "y": 0}, + {"flags": 2, "matrix": [0, 6], "x":83, "y": 0}, + {"flags": 2, "matrix": [0, 7], "x":96, "y": 0}, + {"flags": 2, "matrix": [0, 8], "x":109, "y": 0}, + {"flags": 2, "matrix": [0, 9], "x":122, "y": 0}, + {"flags": 2, "matrix": [0,10], "x":141, "y": 0}, + {"flags": 2, "matrix": [0,11], "x":154, "y": 0}, + {"flags": 2, "matrix": [0,12], "x":166, "y": 0}, + {"flags": 2, "matrix": [0,13], "x":179, "y": 0}, + {"flags": 2, "matrix": [0,14], "x":195, "y": 0}, + {"flags": 2, "matrix": [0,16], "x":221, "y": 0}, + + {"flags": 2, "matrix": [1, 0], "x":0, "y": 15}, + {"flags": 2, "matrix": [1, 1], "x":13, "y": 15}, + {"flags": 2, "matrix": [1, 2], "x":26, "y": 15}, + {"flags": 2, "matrix": [1, 3], "x":38, "y": 15}, + {"flags": 2, "matrix": [1, 4], "x":51, "y": 15}, + {"flags": 2, "matrix": [1, 5], "x":64, "y": 15}, + {"flags": 2, "matrix": [1, 6], "x":77, "y": 15}, + {"flags": 2, "matrix": [1, 7], "x":90, "y": 15}, + {"flags": 2, "matrix": [1, 8], "x":102, "y": 15}, + {"flags": 2, "matrix": [1, 9], "x":115, "y": 15}, + {"flags": 2, "matrix": [1,10], "x":128, "y": 15}, + {"flags": 2, "matrix": [1,11], "x":141, "y": 15}, + {"flags": 2, "matrix": [1,12], "x":154, "y": 15}, + {"flags": 2, "matrix": [1,13], "x":166, "y": 15}, + {"flags": 2, "matrix": [3,13], "x":179, "y": 15}, + {"flags": 2, "matrix": [1,14], "x":195, "y": 15}, + {"flags": 2, "matrix": [1,15], "x":208, "y": 15}, + {"flags": 2, "matrix": [1,16], "x":221, "y": 15}, + + {"flags": 2, "matrix": [2, 0], "x":3, "y": 27}, + {"flags": 2, "matrix": [2, 1], "x":19, "y": 27}, + {"flags": 2, "matrix": [2, 2], "x":32, "y": 27}, + {"flags": 2, "matrix": [2, 3], "x":45, "y": 27}, + {"flags": 2, "matrix": [2, 4], "x":58, "y": 27}, + {"flags": 2, "matrix": [2, 5], "x":70, "y": 27}, + {"flags": 2, "matrix": [2, 6], "x":83, "y": 27}, + {"flags": 2, "matrix": [2, 7], "x":96, "y": 27}, + {"flags": 2, "matrix": [2, 8], "x":109, "y": 27}, + {"flags": 2, "matrix": [2, 9], "x":122, "y": 27}, + {"flags": 2, "matrix": [2,10], "x":134, "y": 27}, + {"flags": 2, "matrix": [2,11], "x":147, "y": 27}, + {"flags": 2, "matrix": [2,12], "x":160, "y": 27}, + {"flags": 2, "matrix": [2,13], "x":176, "y": 27}, + {"flags": 2, "matrix": [2,14], "x":195, "y": 27}, + {"flags": 2, "matrix": [2,15], "x":208, "y": 27}, + {"flags": 2, "matrix": [2,16], "x":221, "y": 27}, + + {"flags": 2, "matrix": [3, 1], "x":23, "y": 40}, + {"flags": 2, "matrix": [3, 2], "x":36, "y": 40}, + {"flags": 2, "matrix": [3, 3], "x":49, "y": 40}, + {"flags": 2, "matrix": [3, 4], "x":62, "y": 40}, + {"flags": 2, "matrix": [3, 5], "x":75, "y": 40}, + {"flags": 2, "matrix": [3, 6], "x":88, "y": 40}, + {"flags": 2, "matrix": [3, 7], "x":101, "y": 40}, + {"flags": 2, "matrix": [3, 8], "x":114, "y": 40}, + {"flags": 2, "matrix": [3, 9], "x":127, "y": 40}, + {"flags": 2, "matrix": [3,10], "x":140, "y": 40}, + {"flags": 2, "matrix": [3,11], "x":153, "y": 40}, + {"flags": 2, "matrix": [3,12], "x":166, "y": 40}, + + {"flags": 2, "matrix": [4, 0], "x":2, "y": 52}, + {"flags": 2, "matrix": [4, 1], "x":16, "y": 52}, + {"flags": 2, "matrix": [4, 2], "x":29, "y": 52}, + {"flags": 2, "matrix": [4, 3], "x":42, "y": 52}, + {"flags": 2, "matrix": [4, 4], "x":54, "y": 52}, + {"flags": 2, "matrix": [4, 5], "x":67, "y": 52}, + {"flags": 2, "matrix": [4, 6], "x":80, "y": 52}, + {"flags": 2, "matrix": [4, 7], "x":93, "y": 52}, + {"flags": 2, "matrix": [4, 8], "x":106, "y": 52}, + {"flags": 2, "matrix": [4, 9], "x":118, "y": 52}, + {"flags": 2, "matrix": [4,10], "x":131, "y": 52}, + {"flags": 2, "matrix": [4,11], "x":144, "y": 52}, + {"flags": 2, "matrix": [4,12], "x":162, "y": 52}, + {"flags": 2, "matrix": [4,13], "x":179, "y": 52}, + {"flags": 2, "matrix": [4,15], "x":208, "y": 52}, + + {"flags": 2, "matrix": [5, 0], "x":2, "y": 64}, + {"flags": 2, "matrix": [5, 1], "x":18, "y": 64}, + {"flags": 2, "matrix": [5, 2], "x":34, "y": 64}, + {"flags": 2, "matrix": [5, 6], "x":82, "y": 64}, + {"flags": 2, "matrix": [5,10], "x":130, "y": 64}, + {"flags": 2, "matrix": [5,11], "x":146, "y": 64}, + {"flags": 2, "matrix": [5,12], "x":162, "y": 64}, + {"flags": 2, "matrix": [5,13], "x":178, "y": 64}, + {"flags": 2, "matrix": [5,14], "x":195, "y": 64}, + {"flags": 2, "matrix": [5,15], "x":208, "y": 64}, + {"flags": 2, "matrix": [5,16], "x":221, "y": 64} + ] + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1.25, "y": 0}, + {"matrix": [0, 2], "x": 2.25, "y": 0}, + {"matrix": [0, 3], "x": 3.25, "y": 0}, + {"matrix": [0, 4], "x": 4.25, "y": 0}, + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.75, "y": 0}, + {"matrix": [0,10], "x": 10.75, "y": 0}, + {"matrix": [0,11], "x": 11.75, "y": 0}, + {"matrix": [0,12], "x": 12.75, "y": 0}, + {"matrix": [0,13], "x": 14, "y": 0}, + {"matrix": [0,14], "x": 15.25, "y": 0}, + {"matrix": [0,15], "x": 16.25, "y": 0}, + {"matrix": [0,16], "x": 17.25, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [1,10], "x": 10, "y": 1.25}, + {"matrix": [1,11], "x": 11, "y": 1.25}, + {"matrix": [1,12], "x": 12, "y": 1.25}, + {"matrix": [1,13], "x": 13, "y": 1.25}, + {"matrix": [3,13], "x": 14, "y": 1.25}, + {"matrix": [1,14], "x": 15.25, "y": 1.25}, + {"matrix": [1,15], "x": 16.25, "y": 1.25}, + {"matrix": [1,16], "x": 17.25, "y": 1.25}, + + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2,10], "x": 10.5, "y": 2.25}, + {"matrix": [2,11], "x": 11.5, "y": 2.25}, + {"matrix": [2,12], "x": 12.5, "y": 2.25}, + {"matrix": [2,13], "x": 13.5, "y": 2.25, "w": 1.5}, + {"matrix": [2,14], "x": 15.25, "y": 2.25}, + {"matrix": [2,15], "x": 16.25, "y": 2.25}, + {"matrix": [2,16], "x": 17.25, "y": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3,10], "x": 10.75, "y": 3.25}, + {"matrix": [3,11], "x": 11.75, "y": 3.25}, + {"matrix": [3,12], "x": 12.75, "y": 3.25, "w": 2.25}, + + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"matrix": [4,10], "x": 10.25, "y": 4.25}, + {"matrix": [4,11], "x": 11.25, "y": 4.25}, + {"matrix": [4,12], "x": 12.25, "y": 4.25, "w": 1.75}, + {"matrix": [4,13], "x": 14, "y": 4.25}, + {"matrix": [4,15], "x": 16.25, "y": 4.25}, + + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25}, + {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25}, + {"matrix": [5,10], "x": 10, "y": 5.25, "w": 1.25}, + {"matrix": [5,11], "x": 11.25, "y": 5.25, "w": 1.25}, + {"matrix": [5,12], "x": 12.5, "y": 5.25, "w": 1.25}, + {"matrix": [5,13], "x": 13.75, "y": 5.25, "w": 1.25}, + {"matrix": [5,14], "x": 15.25, "y": 5.25}, + {"matrix": [5,15], "x": 16.25, "y": 5.25}, + {"matrix": [5,16], "x": 17.25, "y": 5.25} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/bachoo/x88/keymaps/default/keymap.c b/keyboards/bachoo/x88/keymaps/default/keymap.c new file mode 100644 index 0000000000..7fbddc1bd6 --- /dev/null +++ b/keyboards/bachoo/x88/keymaps/default/keymap.c @@ -0,0 +1,30 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = 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, KC_F13, KC_PSCR, KC_SCRL, KC_PAUS, + 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_INS, KC_HOME, 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_BSLS, KC_DEL, KC_END, 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_ENT, + 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, MO(1), KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; + +#ifdef RGB_MATRIX_ENABLE +bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { + led_t led_state = host_keyboard_led_state(); + if (!led_state.scroll_lock) { + RGB_MATRIX_INDICATOR_SET_COLOR(0, 0, 0, 0); + } + + if (!led_state.caps_lock) { + RGB_MATRIX_INDICATOR_SET_COLOR(1, 0, 0, 0); + } + + return true; +} +#endif \ No newline at end of file diff --git a/keyboards/bachoo/x88/keymaps/vial/config.h b/keyboards/bachoo/x88/keymaps/vial/config.h new file mode 100644 index 0000000000..3be2c80e5e --- /dev/null +++ b/keyboards/bachoo/x88/keymaps/vial/config.h @@ -0,0 +1,9 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#pragma once + +#define VIAL_KEYBOARD_UID {0x66, 0xF7, 0x19, 0x9C, 0xDC, 0x61, 0xEF, 0x69} + +// Unlock combo is Esc + Enter +#define VIAL_UNLOCK_COMBO_ROWS { 0, 2 } +#define VIAL_UNLOCK_COMBO_COLS { 0, 12 } \ No newline at end of file diff --git a/keyboards/bachoo/x88/keymaps/vial/keymap.c b/keyboards/bachoo/x88/keymaps/vial/keymap.c new file mode 100644 index 0000000000..7fbddc1bd6 --- /dev/null +++ b/keyboards/bachoo/x88/keymaps/vial/keymap.c @@ -0,0 +1,30 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = 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, KC_F13, KC_PSCR, KC_SCRL, KC_PAUS, + 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_INS, KC_HOME, 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_BSLS, KC_DEL, KC_END, 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_ENT, + 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, MO(1), KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; + +#ifdef RGB_MATRIX_ENABLE +bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { + led_t led_state = host_keyboard_led_state(); + if (!led_state.scroll_lock) { + RGB_MATRIX_INDICATOR_SET_COLOR(0, 0, 0, 0); + } + + if (!led_state.caps_lock) { + RGB_MATRIX_INDICATOR_SET_COLOR(1, 0, 0, 0); + } + + return true; +} +#endif \ No newline at end of file diff --git a/keyboards/bachoo/x88/keymaps/vial/rules.mk b/keyboards/bachoo/x88/keymaps/vial/rules.mk new file mode 100644 index 0000000000..95572e946b --- /dev/null +++ b/keyboards/bachoo/x88/keymaps/vial/rules.mk @@ -0,0 +1,4 @@ +VIA_ENABLE = yes +VIAL_ENABLE = yes + +VIALRGB_ENABLE = yes \ No newline at end of file diff --git a/keyboards/bachoo/x88/keymaps/vial/vial.json b/keyboards/bachoo/x88/keymaps/vial/vial.json new file mode 100644 index 0000000000..0479f5733b --- /dev/null +++ b/keyboards/bachoo/x88/keymaps/vial/vial.json @@ -0,0 +1,33 @@ +{ + "name": "X88", + "vendorId": "0xC04C", + "productId": "0x1001", + "menus": ["qmk_rgb_matrix"], + "lighting": "vialrgb", + "matrix": {"rows": 6, "cols": 17}, + "layouts": { + "labels": [ + ["F-row", "F12", "F13"], + ["Backspace", "Full", "Split"], + ["Enter", "ANSI", "ISO"], + ["Left Shift", "Full", "Split"], + ["Right Shift", "Full", "Split"], + ["Bottom Row", "6.25u", "7u", "7u WKL"] + ], + "keymap": [ + [{"c":"#777777"},"0,0\n\n\n0,0",{"x":1,"c":"#aaaaaa"},"0,2\n\n\n0,0","0,3\n\n\n0,0","0,4\n\n\n0,0","0,5\n\n\n0,0",{"x":0.5},"0,6\n\n\n0,0","0,7\n\n\n0,0","0,8\n\n\n0,0","0,9\n\n\n0,0",{"x":0.5},"0,10\n\n\n0,0","0,11\n\n\n0,0","0,12\n\n\n0,0","0,13\n\n\n0,0",{"x":0.25},"0,14","0,15","0,16"], + [{"y":0.25,"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},"1,13\n\n\n1,0",{"x":0.25},"1,14","1,15","1,16"], + [{"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\n2,0",{"x":0.25,"c":"#aaaaaa"},"2,14","2,15","2,16"], + [{"w":1.75},"3,0",{"c":"#cccccc"},"3,1","3,2","3,3","3,4","3,5","3,6","3,7","3,8","3,9","3,10","3,11",{"c":"#777777","w":2.25},"3,12\n\n\n2,0"], + [{"c":"#aaaaaa","w":2.25},"4,0\n\n\n3,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":2.75},"4,12\n\n\n4,0",{"x":1.25,"c":"#777777"},"4,15"], + [{"c":"#aaaaaa","w":1.25},"5,0\n\n\n5,0",{"w":1.25},"5,1\n\n\n5,0",{"w":1.25},"5,2\n\n\n5,0",{"c":"#cccccc","w":6.25},"5,6\n\n\n5,0",{"c":"#aaaaaa","w":1.25},"5,10\n\n\n5,0",{"w":1.25},"5,11\n\n\n5,0",{"w":1.25},"5,12\n\n\n5,0",{"w":1.25},"5,13\n\n\n5,0",{"x":0.25,"c":"#777777"},"5,14","5,15","5,16"], + [{"y":0.25},"0,0\n\n\n0,1",{"x":0.25,"c":"#aaaaaa"},"0,1\n\n\n0,1","0,2\n\n\n0,1","0,3\n\n\n0,1","0,4\n\n\n0,1",{"x":0.25},"0,5\n\n\n0,1","0,6\n\n\n0,1","0,7\n\n\n0,1","0,8\n\n\n0,1",{"x":0.25},"0,9\n\n\n0,1","0,10\n\n\n0,1","0,11\n\n\n0,1","0,12\n\n\n0,1",{"x":0.25},"0,13\n\n\n0,1"], + [{"w":1.25},"4,0\n\n\n3,1",{"c":"#cccccc"},"4,1\n\n\n3,1",{"x":10.75,"c":"#aaaaaa"},"1,13\n\n\n1,1","3,13\n\n\n1,1"], + [{"x":13.75,"c":"#777777","w":1.25,"h":2,"w2":1.5,"h2":1,"x2":-0.25},"2,13\n\n\n2,1"], + [{"x":12.75,"c":"#cccccc"},"3,12\n\n\n2,1"], + [{"x":12.25,"c":"#aaaaaa","w":1.75},"4,12\n\n\n4,1","4,13\n\n\n4,1"], + [{"w":1.5},"5,0\n\n\n5,1","5,1\n\n\n5,1",{"w":1.5},"5,2\n\n\n5,1",{"c":"#cccccc","w":7},"5,6\n\n\n5,1",{"c":"#aaaaaa","w":1.5},"5,11\n\n\n5,1","5,12\n\n\n5,1",{"w":1.5},"5,13\n\n\n5,1"], + [{"w":1.5},"5,0\n\n\n5,2",{"d":true},"5,1\n\n\n5,2",{"w":1.5},"5,2\n\n\n5,2",{"c":"#cccccc","w":7},"5,6\n\n\n5,2",{"c":"#aaaaaa","w":1.5},"5,11\n\n\n5,2",{"d":true},"5,12\n\n\n5,2",{"w":1.5},"5,13\n\n\n5,2"] + ] + } +} \ No newline at end of file diff --git a/keyboards/bachoo/x88/mcuconf.h b/keyboards/bachoo/x88/mcuconf.h new file mode 100644 index 0000000000..2d62025c2d --- /dev/null +++ b/keyboards/bachoo/x88/mcuconf.h @@ -0,0 +1,9 @@ +// Copyright 2024 Bachoo (@cBachoo) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include_next + +#undef STM32_SPI_USE_SPI2 +#define STM32_SPI_USE_SPI2 TRUE \ No newline at end of file diff --git a/keyboards/bachoo/x88/readme.md b/keyboards/bachoo/x88/readme.md new file mode 100644 index 0000000000..e8f4637eed --- /dev/null +++ b/keyboards/bachoo/x88/readme.md @@ -0,0 +1,27 @@ +# x88 + +![x88](imgur.com image replace me!) + +*A short description of the keyboard/project* + +* Keyboard Maintainer: [Bachoo](https://github.com/cBachoo) +* Hardware Supported: *The PCBs, controllers supported* +* Hardware Availability: *Links to where you can find this hardware* + +Make example for this keyboard (after setting up your build environment): + + make x88:default + +Flashing example for this keyboard: + + make x88: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 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/dztech/og60/keymaps/vial/config.h b/keyboards/dztech/tofu60/keymaps/vial/config.h similarity index 100% rename from keyboards/dztech/og60/keymaps/vial/config.h rename to keyboards/dztech/tofu60/keymaps/vial/config.h diff --git a/keyboards/dztech/og60/keymaps/vial/keymap.c b/keyboards/dztech/tofu60/keymaps/vial/keymap.c similarity index 100% rename from keyboards/dztech/og60/keymaps/vial/keymap.c rename to keyboards/dztech/tofu60/keymaps/vial/keymap.c diff --git a/keyboards/dztech/og60/keymaps/vial/rules.mk b/keyboards/dztech/tofu60/keymaps/vial/rules.mk similarity index 100% rename from keyboards/dztech/og60/keymaps/vial/rules.mk rename to keyboards/dztech/tofu60/keymaps/vial/rules.mk diff --git a/keyboards/dztech/og60/keymaps/vial/vial.json b/keyboards/dztech/tofu60/keymaps/vial/vial.json similarity index 100% rename from keyboards/dztech/og60/keymaps/vial/vial.json rename to keyboards/dztech/tofu60/keymaps/vial/vial.json diff --git a/keyboards/ferris/sweep/keymaps/vial/config.h b/keyboards/ferris/sweep/keymaps/vial/config.h index c662c70ba6..90953b3896 100644 --- a/keyboards/ferris/sweep/keymaps/vial/config.h +++ b/keyboards/ferris/sweep/keymaps/vial/config.h @@ -2,6 +2,8 @@ #pragma once +#define DYNAMIC_KEYMAP_LAYER_COUNT 6 +#define VIAL_TAP_DANCE_ENTRIES 10 #define VIAL_KEYBOARD_UID {0x47, 0x97, 0x7E, 0x32, 0xC9, 0xAC, 0x13, 0xF3} #define VIAL_UNLOCK_COMBO_ROWS { 2, 3, 0, 0, 0 } diff --git a/keyboards/ferris/sweep/keymaps/vial/keymap.c b/keyboards/ferris/sweep/keymaps/vial/keymap.c index 70b51e3d91..99e02d63bb 100644 --- a/keyboards/ferris/sweep/keymaps/vial/keymap.c +++ b/keyboards/ferris/sweep/keymaps/vial/keymap.c @@ -40,4 +40,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, 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( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, 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( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, 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/horrortroll/chinese_pcb/black_e65/keymaps/vial/config.h b/keyboards/horrortroll/chinese_pcb/black_e65/keymaps/vial/config.h new file mode 100644 index 0000000000..dfbd9a86a0 --- /dev/null +++ b/keyboards/horrortroll/chinese_pcb/black_e65/keymaps/vial/config.h @@ -0,0 +1,9 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#pragma once + +#define VIAL_KEYBOARD_UID {0x17, 0x64, 0x41, 0xC1, 0x5F, 0xCA, 0x48, 0xDD} + +#define VIAL_UNLOCK_COMBO_ROWS { 0, 2 } + +#define VIAL_UNLOCK_COMBO_COLS { 0, 13 } \ No newline at end of file diff --git a/keyboards/horrortroll/chinese_pcb/black_e65/keymaps/vial/keymap.c b/keyboards/horrortroll/chinese_pcb/black_e65/keymaps/vial/keymap.c new file mode 100644 index 0000000000..469de2f7df --- /dev/null +++ b/keyboards/horrortroll/chinese_pcb/black_e65/keymaps/vial/keymap.c @@ -0,0 +1,87 @@ +/* Copyright 2022 HorrorTroll + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// 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 layer_names { + _BASE, + _FN, +}; + +// enum layer_keycodes { }; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* + ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ ` │Bks│Del│ + ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ + │ Tab │ q │ w │ e │ r │ t │ y │ u │ i │ o │ p │ [ │ ] │ \ │PgU│ + ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ + │ Caps │ a │ s │ d │ f │ g │ h │ j │ k │ l │ ; │ ' │ Enter │PgD│ + ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + │LSft│LSt│ z │ x │ c │ v │ b │ n │ m │ , │ . │ / │ RSft │ ↑ │Fn │ + ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤ + │LCrl│GUI │LAlt│ Space │RAt│Fn │RCl│ ← │ ↓ │ → │ + └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘ + ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + │ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │ ~ │ │ │ + ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ + │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ { │ } │ | │ │ + ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ + │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ : │ " │ │ │ + ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + │LSft│LSt│ Z │ X │ C │ V │ B │ N │ M │ < │ > │ ? │ RSft │ │ │ + ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤ + │ │ │ │ │ │ │ │ │ │ │ + └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘ +*/ + /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 */ + [_BASE] = LAYOUT_all( + 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_GRV, 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_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, MO(_FN), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + +/* + ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + │Rst│F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ │ │PSc│ + ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ + │RTog │Mod│Hui│Hud│Sai│Sad│Vai│Vad│ │ │ │ │ │ │Hom│ + ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ + │BTog │BTg│Dec│Inc│Ste│ │ │ │ │ │ │ │ │End│ + ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤ + │ │ │ │ │ │ │ │ │ │ │ + └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘ +*/ + /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 */ + [_FN] = LAYOUT_all( + QK_BOOT, 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, + RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, KC_HOME, + BL_TOGG, BL_TOGG, BL_DOWN, BL_UP, BL_STEP, _______, _______, _______, _______, _______, _______, _______, _______, KC_END, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/keyten/imi60/keymaps/vial/rules.mk b/keyboards/horrortroll/chinese_pcb/black_e65/keymaps/vial/rules.mk similarity index 54% rename from keyboards/keyten/imi60/keymaps/vial/rules.mk rename to keyboards/horrortroll/chinese_pcb/black_e65/keymaps/vial/rules.mk index 96d058b29d..5d865bba42 100644 --- a/keyboards/keyten/imi60/keymaps/vial/rules.mk +++ b/keyboards/horrortroll/chinese_pcb/black_e65/keymaps/vial/rules.mk @@ -1,7 +1,7 @@ VIA_ENABLE = yes VIAL_ENABLE = yes - LTO_ENABLE = yes +QMK_SETTINGS = yes +COMBO_ENABLE = yes TAP_DANCE_ENABLE = no -COMBO_ENABLE = no -KEY_OVERRIDE_ENABLE = no +KEY_OVERRIDE_ENABLE = no \ No newline at end of file diff --git a/keyboards/horrortroll/chinese_pcb/black_e65/keymaps/vial/vial.json b/keyboards/horrortroll/chinese_pcb/black_e65/keymaps/vial/vial.json new file mode 100644 index 0000000000..eb008c4b0f --- /dev/null +++ b/keyboards/horrortroll/chinese_pcb/black_e65/keymaps/vial/vial.json @@ -0,0 +1,306 @@ +{ + "name": "E6.5 Black PCB", + "vendorId": "0x4558", + "productId": "0xE605B", + "lighting": "none", + "matrix": { + "rows": 5, + "cols": 15 + }, + "keycodes": [ + "qmk_lighting" + ], + "menus": [ + "qmk_blacklight_rgblight" + ], + "layouts": { + "labels":[ + "Split Backspace", + "ISO Enter", + [ + "Bottom Row", + "No Blockers, 6.25U", + "No Blockers, 7U", + "Right Blocker, 6.25U", + "Right Blocker, 7U", + "WKL, 7U", + "HHKB" + ] + ], + "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,14\n\n\n0,0", + "4,14", + { + "x": 1 + }, + "0,13\n\n\n0,1", + "0,14\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\n\n\n1,0", + "1,14", + { + "x": 1.75, + "w": 1.25, + "h": 2, + "w2": 1.5, + "h2": 1, + "x2": -0.25 + }, + "1,13\n\n\n1,1" + ], + [ + { + "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 + }, + "1,13\n\n\n1,0", + "2,14", + { + "x": 0.75 + }, + "2,12\n\n\n1,1" + ], + [ + { + "w": 2.25 + }, + "3,0", + "3,2", + "3,3", + "3,4", + "3,5", + "3,6", + "3,7", + "3,8", + "3,9", + "3,10", + "3,11", + { + "w": 1.75 + }, + "3,12", + "3,13", + "3,14" + ], + [ + { + "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 + }, + "4,6\n\n\n2,0", + { + "w": 1.5 + }, + "4,8\n\n\n2,0", + { + "w": 1.5 + }, + "4,10\n\n\n2,0", + "4,11\n\n\n2,0", + "4,12\n\n\n2,0", + "4,13\n\n\n2,0" + ], + [ + { + "y": 0.25, + "w": 1.5 + }, + "4,0\n\n\n2,1", + { + "w": 1.5 + }, + "4,1\n\n\n2,1", + { + "w": 7 + }, + "4,6\n\n\n2,1", + { + "w": 1.5 + }, + "4,8\n\n\n2,1", + { + "w": 1.5 + }, + "4,10\n\n\n2,1", + "4,11\n\n\n2,1", + "4,12\n\n\n2,1", + "4,13\n\n\n2,1" + ], + [ + { + "w": 1.25 + }, + "4,0\n\n\n2,2", + { + "w": 1.25 + }, + "4,1\n\n\n2,2", + { + "w": 1.25 + }, + "4,2\n\n\n2,2", + { + "w": 6.25 + }, + "4,6\n\n\n2,2", + { + "w": 1.25 + }, + "4,8\n\n\n2,2", + { + "w": 1.25 + }, + "4,9\n\n\n2,2", + { + "x": 0.5 + }, + "4,11\n\n\n2,2", + "4,12\n\n\n2,2", + "4,13\n\n\n2,2" + ], + [ + { + "w": 1.5 + }, + "4,0\n\n\n2,3", + "4,1\n\n\n2,3", + { + "w": 1.5 + }, + "4,2\n\n\n2,3", + { + "w": 7 + }, + "4,6\n\n\n2,3", + { + "w": 1.5 + }, + "4,9\n\n\n2,3", + { + "x": 0.5 + }, + "4,11\n\n\n2,3", + "4,12\n\n\n2,3", + "4,13\n\n\n2,3" + ], + [ + { + "w": 1.5 + }, + "4,0\n\n\n2,4", + { + "d": true + }, + "4,1\n\n\n2,4", + { + "w": 1.5 + }, + "4,2\n\n\n2,4", + { + "w": 7 + }, + "4,6\n\n\n2,4", + { + "w": 1.5 + }, + "4,9\n\n\n2,4", + { + "x": 0.5 + }, + "4,11\n\n\n2,4", + "4,12\n\n\n2,4", + "4,13\n\n\n2,4" + ], + [ + { + "w": 0.5, + "d": true + }, + "4\n\n\n2,5", + "4,0\n\n\n2,5", + { + "w": 1.5 + }, + "4,1\n\n\n2,5", + { + "w": 7 + }, + "4,6\n\n\n2,5", + { + "w": 1.5 + }, + "4,8\n\n\n2,5", + "4,9\n\n\n2,5", + { + "x": 0.5 + }, + "4,11\n\n\n2,5", + "4,12\n\n\n2,5", + "4,13\n\n\n2,5" + ] + ] + } + } + \ No newline at end of file diff --git a/keyboards/keebio/chiri_ce/keymaps/vial/config.h b/keyboards/keebio/chiri_ce/keymaps/vial/config.h new file mode 100644 index 0000000000..eb09fe6577 --- /dev/null +++ b/keyboards/keebio/chiri_ce/keymaps/vial/config.h @@ -0,0 +1,16 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#pragma once + +#define VIAL_KEYBOARD_UID {0x38, 0x44, 0x95, 0x0E, 0x18, 0xF1, 0x64, 0x24} +#define VIAL_UNLOCK_COMBO_ROWS {0,7} +#define VIAL_UNLOCK_COMBO_COLS {1,5} + +// Since the outer columns can be broken off, redefine the bootmagic keys as second column from outside +#define BOOTMAGIC_ROW 0 +#define BOOTMAGIC_COLUMN 1 + +#undef BOOTMAGIC_COLUMN_RIGHT +#undef BOOTMAGIC_ROW_RIGHT +#define BOOTMAGIC_ROW_RIGHT 4 +#define BOOTMAGIC_COLUMN_RIGHT 1 diff --git a/keyboards/keebio/chiri_ce/keymaps/vial/keymap.json b/keyboards/keebio/chiri_ce/keymaps/vial/keymap.json new file mode 100644 index 0000000000..18c9e441e0 --- /dev/null +++ b/keyboards/keebio/chiri_ce/keymaps/vial/keymap.json @@ -0,0 +1,32 @@ +{ + "config": { "features": {"tri_layer": true} }, + "keyboard": "keebio/chiri_ce/rev1", + "keymap": "default", + "layout": "LAYOUT", + "layers": [ + [ + "KC_TAB" , "KC_Q" , "KC_W" , "KC_E" , "KC_R" , "KC_T" , "KC_Y" , "KC_U" , "KC_I" , "KC_O" , "KC_P" , "KC_DEL" , + "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" , "QK_GESC", "KC_BSPC", "KC_N" , "KC_M" , "KC_COMM", "KC_DOT" , "KC_SLSH", "KC_RSFT", + "KC_LGUI", "TL_LOWR", "KC_ENT" , "KC_SPC" , "TL_UPPR", "KC_RALT" + ], + [ + "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_ESC" , "KC_LEFT", "KC_DOWN", "KC_UP" , "KC_RGHT", "KC_LBRC", "KC_RBRC", "KC_P4" , "KC_P5" , "KC_P6" , "KC_PLUS", "KC_PIPE", + "RGB_MOD", "_______", "_______", "_______", "_______", "KC_LCBR", "KC_LPRN", "KC_RPRN", "KC_RCBR", "KC_P1" , "KC_P2" , "KC_P3" , "KC_MINS", "_______", + "_______", "_______", "KC_DEL" , "KC_DEL" , "_______", "KC_P0" + ], + [ + "RGB_TOG", "KC_EXLM", "KC_AT" , "KC_HASH", "KC_DLR" , "KC_PERC", "KC_CIRC", "KC_AMPR", "KC_ASTR", "KC_LPRN", "KC_RPRN", "QK_BOOT", + "RGB_MOD", "KC_MPRV", "KC_MNXT", "KC_VOLU", "KC_PGUP", "KC_UNDS", "KC_EQL" , "KC_HOME", "RGB_HUI", "RGB_SAI", "RGB_VAI", "KC_BSLS", + "KC_MUTE", "KC_MSTP", "KC_MPLY", "KC_VOLD", "KC_PGDN", "KC_MINS", "KC_LPRN", "_______", "KC_PLUS", "KC_END" , "RGB_HUD", "RGB_SAD", "RGB_VAD", "_______", + "_______", "_______", "_______", "_______", "_______", "_______" + ], + [ + "KC_F12" , "KC_F1" , "KC_F2" , "KC_F3" , "KC_F4" , "KC_F5" , "KC_F6" , "KC_F7" , "KC_F8" , "KC_F9" , "KC_F10" , "KC_F11" , + "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", + "_______", "EE_CLR" , "QK_BOOT", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "QK_BOOT", "EE_CLR" , "_______", + "_______", "_______", "_______", "_______", "_______", "_______" + ] + ] +} diff --git a/keyboards/keebio/chiri_ce/keymaps/vial/rules.mk b/keyboards/keebio/chiri_ce/keymaps/vial/rules.mk new file mode 100644 index 0000000000..d013bc62da --- /dev/null +++ b/keyboards/keebio/chiri_ce/keymaps/vial/rules.mk @@ -0,0 +1,3 @@ +VIA_ENABLE = yes +VIAL_ENABLE = yes +VIALRGB_ENABLE = yes diff --git a/keyboards/keebio/chiri_ce/keymaps/vial/vial.json b/keyboards/keebio/chiri_ce/keymaps/vial/vial.json new file mode 100644 index 0000000000..bcecc08271 --- /dev/null +++ b/keyboards/keebio/chiri_ce/keymaps/vial/vial.json @@ -0,0 +1,20 @@ +{ + "lighting": "vialrgb", + "matrix": { + "rows": 8, + "cols": 6 + }, + "layouts": { + "labels":[ + ["Size", "3x6", "3x5"] + ], + "keymap": [ + [{"y":0.375},"0,0\n\n\n0,0",{"x":-1,"d":true},"0,0\n\n\n0,1","0,1",{"y":-0.25},"0,2",{"y":-0.125},"0,3",{"y":0.125},"0,4",{"y":0.125},"0,5",{"x":4},"4,5",{"y":-0.125},"4,4",{"y":-0.125},"4,3",{"y":0.125},"4,2",{"y":0.25},"4,1","4,0\n\n\n0,0",{"x":-1,"d":true},"4,0\n\n\n0,1"], + ["1,0\n\n\n0,0",{"x":-1,"d":true},"1,0\n\n\n0,1","1,1",{"y":-0.25},"1,2",{"y":-0.125},"1,3",{"y":0.125},"1,4",{"y":0.125},"1,5",{"x":4},"5,5",{"y":-0.125},"5,4",{"y":-0.125},"5,3",{"y":0.125},"5,2",{"y":0.25},"5,1","5,0\n\n\n0,0",{"x":-1,"d":true},"5,0\n\n\n0,1"], + ["2,0\n\n\n0,0",{"x":-1,"d":true},"2,0\n\n\n0,1","2,1",{"y":-0.25},"2,2",{"y":-0.125},"2,3",{"y":0.125},"2,4",{"y":0.125},"2,5",{"x":4},"6,5",{"y":-0.125},"6,4",{"y":-0.125},"6,3",{"y":0.125},"6,2",{"y":0.25},"6,1","6,0\n\n\n0,0",{"x":-1,"d":true},"6,0\n\n\n0,1"], + [{"x":3.5},"3,2",{"y":0.125},"3,3",{"x":5},"7,3",{"y":-0.125},"7,2"], + [{"r":30,"rx":5.1,"ry":4.925,"y":-1.5,"x":0.25},"3,4",{"y":-1,"x":-1},"3,5"], + [{"r":330,"rx":9.0,"ry":4.925,"y":-1.5,"x":0.4},"7,5",{"y":1,"x":-1},"7,4"] + ] + } +} diff --git a/keyboards/keychron/q11/ansi_encoder/keymaps/vial/vial.json b/keyboards/keychron/q11/ansi_encoder/keymaps/vial/vial.json index 6897d36068..8224866f2c 100644 --- a/keyboards/keychron/q11/ansi_encoder/keymaps/vial/vial.json +++ b/keyboards/keychron/q11/ansi_encoder/keymaps/vial/vial.json @@ -4,21 +4,68 @@ "productId": "0x01E0", "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"} + { + "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}, + "matrix": { + "rows": 12, + "cols": 9 + }, "layouts": { - "keymap": [ + "keymap": [ [ { "x": 0.25 @@ -26,7 +73,7 @@ "0,0\n\n\n\n\n\n\n\n\ne", "0,1\n\n\n\n\n\n\n\n\ne", { - "x": 14.5 + "x": 15 }, "1,0\n\n\n\n\n\n\n\n\ne", "1,1\n\n\n\n\n\n\n\n\ne" @@ -53,6 +100,9 @@ }, "0,6", "0,7", + { + "x": 0.5 + }, "6,0", "6,1", { @@ -89,6 +139,9 @@ "1,5", "1,6", "1,7", + { + "x": 0.5 + }, "7,0", "7,1", "7,2", @@ -125,6 +178,9 @@ "2,4", "2,6", "2,7", + { + "x": 0.5 + }, "8,0", "8,1", "8,2", @@ -162,6 +218,9 @@ "3,4", "3,5", "3,6", + { + "x": 0.5 + }, "9,0", "9,1", "9,2", @@ -199,6 +258,9 @@ "4,5", "4,6", "4,7", + { + "x": 0.5 + }, "10,0", "10,1", "10,2", @@ -245,6 +307,7 @@ }, "5,6", { + "x": 0.5, "w": 2.75 }, "11,1", @@ -264,5 +327,4 @@ ] ] } -} - \ No newline at end of file +} \ No newline at end of file diff --git a/keyboards/keyten/imi60/info.json b/keyboards/keyten/imi60/info.json index f2885bb9db..d8ba7d13ac 100644 --- a/keyboards/keyten/imi60/info.json +++ b/keyboards/keyten/imi60/info.json @@ -2,93 +2,8 @@ "manufacturer": "keyten", "keyboard_name": "imi60", "maintainer": "key10iq", - "processor": "atmega32u4", - "bootloader": "atmel-dfu", "usb": { "vid": "0xEB69", - "pid": "0x6002", - "device_version": "0.0.1" - }, - "features": { - "bootmagic": true, - "command": false, - "console": false, - "extrakey": true, - "mousekey": true, - "nkro": true - }, - "diode_direction": "COL2ROW", - "matrix_pins": { - "rows": ["D1", "D0", "D3", "D2", "D5"], - "cols": ["B7", "F1", "F4", "F5", "F6", "F7", "C7", "C6", "B6", "B5", "B4", "D7", "D6", "D4"] - }, - "layouts": { - "LAYOUT": { - "layout": [ - { "matrix": [0, 0], "x": 0, "y": 0 }, - { "matrix": [0, 1], "x": 1, "y": 0 }, - { "matrix": [0, 2], "x": 2, "y": 0 }, - { "matrix": [0, 3], "x": 3, "y": 0 }, - { "matrix": [0, 4], "x": 4, "y": 0 }, - { "matrix": [0, 5], "x": 5, "y": 0 }, - { "matrix": [0, 6], "x": 6, "y": 0 }, - { "matrix": [0, 7], "x": 7, "y": 0 }, - { "matrix": [0, 8], "x": 8, "y": 0 }, - { "matrix": [0, 9], "x": 9, "y": 0 }, - { "matrix": [0, 10], "x": 10, "y": 0 }, - { "matrix": [0, 11], "x": 11, "y": 0 }, - { "matrix": [0, 12], "x": 12, "y": 0 }, - { "matrix": [0, 13], "x": 13, "y": 0 }, - { "matrix": [2, 13], "x": 14, "y": 0 }, - { "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, - { "matrix": [1, 1], "x": 1.5, "y": 1 }, - { "matrix": [1, 2], "x": 2.5, "y": 1 }, - { "matrix": [1, 3], "x": 3.5, "y": 1 }, - { "matrix": [1, 4], "x": 4.5, "y": 1 }, - { "matrix": [1, 5], "x": 5.5, "y": 1 }, - { "matrix": [1, 6], "x": 6.5, "y": 1 }, - { "matrix": [1, 7], "x": 7.5, "y": 1 }, - { "matrix": [1, 8], "x": 8.5, "y": 1 }, - { "matrix": [1, 9], "x": 9.5, "y": 1 }, - { "matrix": [1, 10], "x": 10.5, "y": 1 }, - { "matrix": [1, 11], "x": 11.5, "y": 1 }, - { "matrix": [1, 12], "x": 12.5, "y": 1 }, - { "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 }, - { "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, - { "matrix": [2, 1], "x": 1.75, "y": 2 }, - { "matrix": [2, 2], "x": 2.75, "y": 2 }, - { "matrix": [2, 3], "x": 3.75, "y": 2 }, - { "matrix": [2, 4], "x": 4.75, "y": 2 }, - { "matrix": [2, 5], "x": 5.75, "y": 2 }, - { "matrix": [2, 6], "x": 6.75, "y": 2 }, - { "matrix": [2, 7], "x": 7.75, "y": 2 }, - { "matrix": [2, 8], "x": 8.75, "y": 2 }, - { "matrix": [2, 9], "x": 9.75, "y": 2 }, - { "matrix": [2, 10], "x": 10.75, "y": 2 }, - { "matrix": [2, 11], "x": 11.75, "y": 2 }, - { "matrix": [2, 12], "w": 2.25, "x": 12.75, "y": 2 }, - { "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 }, - { "matrix": [3, 1], "x": 1.25, "y": 3 }, - { "matrix": [3, 2], "x": 2.25, "y": 3 }, - { "matrix": [3, 3], "x": 3.25, "y": 3 }, - { "matrix": [3, 4], "x": 4.25, "y": 3 }, - { "matrix": [3, 5], "x": 5.25, "y": 3 }, - { "matrix": [3, 6], "x": 6.25, "y": 3 }, - { "matrix": [3, 7], "x": 7.25, "y": 3 }, - { "matrix": [3, 8], "x": 8.25, "y": 3 }, - { "matrix": [3, 9], "x": 9.25, "y": 3 }, - { "matrix": [3, 10], "x": 10.25, "y": 3 }, - { "matrix": [3, 11], "x": 11.25, "y": 3 }, - { "matrix": [3, 12], "w": 1.75, "x": 12.25, "y": 3 }, - { "matrix": [3, 13], "x": 14, "y": 3 }, - { "matrix": [4, 0], "w": 1.5, "x": 0, "y": 4 }, - { "matrix": [4, 1], "x": 1.5, "y": 4 }, - { "matrix": [4, 3], "w": 1.5, "x": 2.5, "y": 4 }, - { "matrix": [4, 7], "w": 7, "x": 4, "y": 4 }, - { "matrix": [4, 11], "w": 1.5, "x": 11, "y": 4 }, - { "matrix": [4, 12], "x": 12.5, "y": 4 }, - { "matrix": [4, 13], "w": 1.5, "x": 13.5, "y": 4 } - ] - } + "pid": "0x6005" } } diff --git a/keyboards/keyten/imi60/keymaps/vial/keymap.c b/keyboards/keyten/imi60/keymaps/vial/keymap.c deleted file mode 100644 index dd11389cef..0000000000 --- a/keyboards/keyten/imi60/keymaps/vial/keymap.c +++ /dev/null @@ -1,22 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-or-later */ - -#include QMK_KEYBOARD_H - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [0] = LAYOUT( - 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_BSLS, 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_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_ENT, - KC_LSFT, KC_TRNS, 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_CAPS, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL - ), - - [1] = LAYOUT( - KC_TRNS, 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_TRNS, KC_TRNS, - KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_UP, KC_INS, KC_DEL, - KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_HOME, KC_LEFT, KC_RGHT, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, KC_END, KC_DOWN, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS -) -}; diff --git a/keyboards/keyten/imi60/rev1/keyboard.json b/keyboards/keyten/imi60/rev1/keyboard.json new file mode 100644 index 0000000000..e4f3b8b565 --- /dev/null +++ b/keyboards/keyten/imi60/rev1/keyboard.json @@ -0,0 +1,89 @@ +{ + "processor": "atmega32u4", + "bootloader": "atmel-dfu", + "usb": { + "device_version": "0.0.1" + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "diode_direction": "COL2ROW", + "matrix_pins": { + "rows": ["D1", "D0", "D3", "D2", "D5"], + "cols": ["B7", "F1", "F4", "F5", "F6", "F7", "C7", "C6", "B6", "B5", "B4", "D7", "D6", "D4"] + }, + "layouts": { + "LAYOUT": { + "layout": [ + { "matrix": [0, 0], "x": 0, "y": 0 }, + { "matrix": [0, 1], "x": 1, "y": 0 }, + { "matrix": [0, 2], "x": 2, "y": 0 }, + { "matrix": [0, 3], "x": 3, "y": 0 }, + { "matrix": [0, 4], "x": 4, "y": 0 }, + { "matrix": [0, 5], "x": 5, "y": 0 }, + { "matrix": [0, 6], "x": 6, "y": 0 }, + { "matrix": [0, 7], "x": 7, "y": 0 }, + { "matrix": [0, 8], "x": 8, "y": 0 }, + { "matrix": [0, 9], "x": 9, "y": 0 }, + { "matrix": [0, 10], "x": 10, "y": 0 }, + { "matrix": [0, 11], "x": 11, "y": 0 }, + { "matrix": [0, 12], "x": 12, "y": 0 }, + { "matrix": [0, 13], "x": 13, "y": 0 }, + { "matrix": [2, 13], "x": 14, "y": 0 }, + { "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "matrix": [1, 1], "x": 1.5, "y": 1 }, + { "matrix": [1, 2], "x": 2.5, "y": 1 }, + { "matrix": [1, 3], "x": 3.5, "y": 1 }, + { "matrix": [1, 4], "x": 4.5, "y": 1 }, + { "matrix": [1, 5], "x": 5.5, "y": 1 }, + { "matrix": [1, 6], "x": 6.5, "y": 1 }, + { "matrix": [1, 7], "x": 7.5, "y": 1 }, + { "matrix": [1, 8], "x": 8.5, "y": 1 }, + { "matrix": [1, 9], "x": 9.5, "y": 1 }, + { "matrix": [1, 10], "x": 10.5, "y": 1 }, + { "matrix": [1, 11], "x": 11.5, "y": 1 }, + { "matrix": [1, 12], "x": 12.5, "y": 1 }, + { "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 }, + { "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "matrix": [2, 1], "x": 1.75, "y": 2 }, + { "matrix": [2, 2], "x": 2.75, "y": 2 }, + { "matrix": [2, 3], "x": 3.75, "y": 2 }, + { "matrix": [2, 4], "x": 4.75, "y": 2 }, + { "matrix": [2, 5], "x": 5.75, "y": 2 }, + { "matrix": [2, 6], "x": 6.75, "y": 2 }, + { "matrix": [2, 7], "x": 7.75, "y": 2 }, + { "matrix": [2, 8], "x": 8.75, "y": 2 }, + { "matrix": [2, 9], "x": 9.75, "y": 2 }, + { "matrix": [2, 10], "x": 10.75, "y": 2 }, + { "matrix": [2, 11], "x": 11.75, "y": 2 }, + { "matrix": [2, 12], "w": 2.25, "x": 12.75, "y": 2 }, + { "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 }, + { "matrix": [3, 1], "x": 1.25, "y": 3 }, + { "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "matrix": [3, 12], "w": 1.75, "x": 12.25, "y": 3 }, + { "matrix": [3, 13], "x": 14, "y": 3 }, + { "matrix": [4, 0], "w": 1.5, "x": 0, "y": 4 }, + { "matrix": [4, 1], "x": 1.5, "y": 4 }, + { "matrix": [4, 3], "w": 1.5, "x": 2.5, "y": 4 }, + { "matrix": [4, 7], "w": 7, "x": 4, "y": 4 }, + { "matrix": [4, 11], "w": 1.5, "x": 11, "y": 4 }, + { "matrix": [4, 12], "x": 12.5, "y": 4 }, + { "matrix": [4, 13], "w": 1.5, "x": 13.5, "y": 4 } + ] + } + } +} diff --git a/keyboards/keyten/imi60/rev1/keymaps/default/keymap.c b/keyboards/keyten/imi60/rev1/keymaps/default/keymap.c new file mode 100644 index 0000000000..ec7228d897 --- /dev/null +++ b/keyboards/keyten/imi60/rev1/keymaps/default/keymap.c @@ -0,0 +1,22 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( + 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_BSLS, 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_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_ENT, + KC_LSFT, KC_TRNS, 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_CAPS, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL + ), + + [1] = LAYOUT( + KC_TRNS, 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_TRNS, KC_TRNS, + KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_UP, KC_INS, KC_DEL, + KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_HOME, KC_LEFT, KC_RGHT, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, KC_END, KC_DOWN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/keyten/imi60/keymaps/vial/config.h b/keyboards/keyten/imi60/rev1/keymaps/vial/config.h similarity index 63% rename from keyboards/keyten/imi60/keymaps/vial/config.h rename to keyboards/keyten/imi60/rev1/keymaps/vial/config.h index 0984cab61c..45f9587256 100644 --- a/keyboards/keyten/imi60/keymaps/vial/config.h +++ b/keyboards/keyten/imi60/rev1/keymaps/vial/config.h @@ -3,5 +3,6 @@ #pragma once #define VIAL_KEYBOARD_UID {0x49, 0x3C, 0xCA, 0xFB, 0xB6, 0xD2, 0xF6, 0xD8} -#define VIAL_UNLOCK_COMBO_ROWS { 0, 4 } -#define VIAL_UNLOCK_COMBO_COLS { 0, 13 } + +#define VIAL_UNLOCK_COMBO_ROWS {0, 4} +#define VIAL_UNLOCK_COMBO_COLS {0, 13} diff --git a/keyboards/keyten/imi60/rev1/keymaps/vial/keymap.c b/keyboards/keyten/imi60/rev1/keymaps/vial/keymap.c new file mode 100644 index 0000000000..ec7228d897 --- /dev/null +++ b/keyboards/keyten/imi60/rev1/keymaps/vial/keymap.c @@ -0,0 +1,22 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( + 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_BSLS, 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_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_ENT, + KC_LSFT, KC_TRNS, 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_CAPS, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL + ), + + [1] = LAYOUT( + KC_TRNS, 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_TRNS, KC_TRNS, + KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_UP, KC_INS, KC_DEL, + KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_HOME, KC_LEFT, KC_RGHT, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, KC_END, KC_DOWN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/keyten/imi60/rev1/keymaps/vial/rules.mk b/keyboards/keyten/imi60/rev1/keymaps/vial/rules.mk new file mode 100644 index 0000000000..46f9f1360f --- /dev/null +++ b/keyboards/keyten/imi60/rev1/keymaps/vial/rules.mk @@ -0,0 +1,3 @@ +VIA_ENABLE = yes +VIAL_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/keyten/imi60/keymaps/vial/vial.json b/keyboards/keyten/imi60/rev1/keymaps/vial/vial.json similarity index 98% rename from keyboards/keyten/imi60/keymaps/vial/vial.json rename to keyboards/keyten/imi60/rev1/keymaps/vial/vial.json index 9f0a714388..215096fa12 100644 --- a/keyboards/keyten/imi60/keymaps/vial/vial.json +++ b/keyboards/keyten/imi60/rev1/keymaps/vial/vial.json @@ -1,7 +1,7 @@ { "name": "imi60", "vendorId": "0xEB69", - "productId": "0x6002", + "productId": "0x6005", "lighting": "none", "matrix": { "rows": 5, diff --git a/keyboards/keyten/imi60/keyboard.json b/keyboards/keyten/imi60/rev2/keyboard.json similarity index 95% rename from keyboards/keyten/imi60/keyboard.json rename to keyboards/keyten/imi60/rev2/keyboard.json index 2ccf831411..bc3e1c59c8 100644 --- a/keyboards/keyten/imi60/keyboard.json +++ b/keyboards/keyten/imi60/rev2/keyboard.json @@ -1,7 +1,4 @@ { - "manufacturer": "keyten", - "keyboard_name": "imi60", - "maintainer": "key10iq", "bootloader": "stm32-dfu", "diode_direction": "COL2ROW", "features": { @@ -16,9 +13,7 @@ }, "processor": "STM32F072", "usb": { - "device_version": "0.0.1", - "pid": "0x6005", - "vid": "0xEB69" + "device_version": "0.0.2" }, "community_layouts": ["60_tsangan_hhkb"], "layouts": { diff --git a/keyboards/keyten/imi60/keymaps/default/keymap.c b/keyboards/keyten/imi60/rev2/keymaps/default/keymap.c similarity index 100% rename from keyboards/keyten/imi60/keymaps/default/keymap.c rename to keyboards/keyten/imi60/rev2/keymaps/default/keymap.c diff --git a/keyboards/keyten/imi60/keymaps/via/keymap.c b/keyboards/keyten/imi60/rev2/keymaps/via/keymap.c similarity index 100% rename from keyboards/keyten/imi60/keymaps/via/keymap.c rename to keyboards/keyten/imi60/rev2/keymaps/via/keymap.c diff --git a/keyboards/keyten/imi60/keymaps/via/rules.mk b/keyboards/keyten/imi60/rev2/keymaps/via/rules.mk similarity index 100% rename from keyboards/keyten/imi60/keymaps/via/rules.mk rename to keyboards/keyten/imi60/rev2/keymaps/via/rules.mk diff --git a/keyboards/keyten/imi60/rev2/keymaps/vial/config.h b/keyboards/keyten/imi60/rev2/keymaps/vial/config.h new file mode 100644 index 0000000000..f9703540ea --- /dev/null +++ b/keyboards/keyten/imi60/rev2/keymaps/vial/config.h @@ -0,0 +1,8 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#pragma once + +#define VIAL_KEYBOARD_UID {0x7D, 0x66, 0xE6, 0x10, 0xEA, 0x57, 0x97, 0xB3} + +#define VIAL_UNLOCK_COMBO_ROWS {0, 4} +#define VIAL_UNLOCK_COMBO_COLS {0, 13} diff --git a/keyboards/keyten/imi60/rev2/keymaps/vial/keymap.c b/keyboards/keyten/imi60/rev2/keymaps/vial/keymap.c new file mode 100644 index 0000000000..36859fad55 --- /dev/null +++ b/keyboards/keyten/imi60/rev2/keymaps/vial/keymap.c @@ -0,0 +1,22 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_60_tsangan_hhkb( + 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_BSLS, 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_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_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, KC_RCTL + ), + + [1] = LAYOUT_60_tsangan_hhkb( + KC_TRNS, 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_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SCRL, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS, + KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, + KC_TRNS, KC_MPRV, KC_MNXT, KC_MPLY, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/keyten/imi60/rev2/keymaps/vial/rules.mk b/keyboards/keyten/imi60/rev2/keymaps/vial/rules.mk new file mode 100644 index 0000000000..46f9f1360f --- /dev/null +++ b/keyboards/keyten/imi60/rev2/keymaps/vial/rules.mk @@ -0,0 +1,3 @@ +VIA_ENABLE = yes +VIAL_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/keyten/imi60/rev2/keymaps/vial/vial.json b/keyboards/keyten/imi60/rev2/keymaps/vial/vial.json new file mode 100644 index 0000000000..9d447ec97e --- /dev/null +++ b/keyboards/keyten/imi60/rev2/keymaps/vial/vial.json @@ -0,0 +1,235 @@ +{ + "name": "imi60", + "vendorId": "0xEB69", + "productId": "0x6005", + "lighting": "none", + "matrix": { + "rows": 5, + "cols": 14 + }, + "layouts": { + "labels": [ + "Split Backspace", + "Split Right Shift", + [ + "Bottom Row", + "Tsangan", + "WKL", + "HHKB" + ] + ], + "keymap": [ + [ + { + "c": "#777777" + }, + "0,0", + { + "c": "#cccccc" + }, + "0,1", + "0,2", + "0,3", + "0,4", + "0,5", + "0,6", + "0,7", + "0,8", + "0,9", + "0,10", + "0,11", + "0,12", + { + "c": "#aaaaaa", + "w": 2 + }, + "2,13\n\n\n0,0", + { + "x": 1, + "c": "#cccccc" + }, + "0,13\n\n\n0,1", + "2,13\n\n\n0,1" + ], + [ + { + "c": "#aaaaaa", + "w": 1.5 + }, + "1,0", + { + "c": "#cccccc" + }, + "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 + }, + "1,13" + ], + [ + { + "c": "#aaaaaa", + "w": 1.75 + }, + "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", + { + "c": "#777777", + "w": 2.25 + }, + "2,12" + ], + [ + { + "c": "#aaaaaa", + "w": 2.25 + }, + "3,0", + { + "c": "#cccccc" + }, + "3,1", + "3,2", + "3,3", + "3,4", + "3,5", + "3,6", + "3,7", + "3,8", + "3,9", + "3,10", + { + "c": "#aaaaaa", + "w": 2.75 + }, + "4,12\n\n\n1,0", + { + "x": 0.25, + "w": 1.75 + }, + "4,12\n\n\n1,1", + "3,13\n\n\n1,1" + ], + [ + { + "w": 1.5 + }, + "4,0\n\n\n2,0", + "4,1\n\n\n2,0", + { + "w": 1.5 + }, + "4,2\n\n\n2,0", + { + "c": "#cccccc", + "w": 7 + }, + "4,6\n\n\n2,0", + { + "c": "#aaaaaa", + "w": 1.5 + }, + "4,10\n\n\n2,0", + "4,11\n\n\n2,0", + { + "w": 1.5 + }, + "4,13\n\n\n2,0" + ], + [ + { + "y": 0.25, + "w": 1.5 + }, + "4,0\n\n\n2,1", + { + "c": "#cccccc", + "d": true + }, + "4,1\n\n\n2,1", + { + "c": "#aaaaaa", + "w": 1.5 + }, + "4,2\n\n\n2,1", + { + "c": "#cccccc", + "w": 7 + }, + "4,6\n\n\n2,1", + { + "c": "#aaaaaa", + "w": 1.5 + }, + "4,10\n\n\n2,1", + { + "c": "#cccccc", + "d": true + }, + "4,11\n\n\n2,1", + { + "c": "#aaaaaa", + "w": 1.5 + }, + "4,13\n\n\n2,1" + ], + [ + { + "c": "#cccccc", + "w": 1.5, + "d": true + }, + "4,0\n\n\n2,2", + { + "c": "#aaaaaa" + }, + "4,1\n\n\n2,2", + { + "w": 1.5 + }, + "4,2\n\n\n2,2", + { + "c": "#cccccc", + "w": 7 + }, + "4,6\n\n\n2,2", + { + "c": "#aaaaaa", + "w": 1.5 + }, + "4,10\n\n\n2,2", + "4,11\n\n\n2,2", + { + "c": "#cccccc", + "w": 1.5, + "d": true + }, + "4,13\n\n\n2,2" + ] + ] + } +} diff --git a/keyboards/keyten/imi60/rules.mk b/keyboards/keyten/imi60/rules.mk deleted file mode 100644 index 6e7633bfe0..0000000000 --- a/keyboards/keyten/imi60/rules.mk +++ /dev/null @@ -1 +0,0 @@ -# This file intentionally left blank diff --git a/keyboards/nachie/evelyn/config.h b/keyboards/nachie/evelyn/config.h new file mode 100755 index 0000000000..e52c3797b5 --- /dev/null +++ b/keyboards/nachie/evelyn/config.h @@ -0,0 +1,29 @@ +/* +Copyright 2024 nachie + +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 "config_common.h" +#define RP2040_FLASH_GENERIC_03H + +/* key matrix size */ +#define MATRIX_ROWS 7 +#define MATRIX_COLS 6 + +#define DEBUG_MATRIX_SCAN_RATE +#define DEBUG_ACTION + +#define VIA_CUSTOM_LIGHTING_ENABLE diff --git a/keyboards/nachie/evelyn/info.json b/keyboards/nachie/evelyn/info.json new file mode 100644 index 0000000000..7b0c80d08e --- /dev/null +++ b/keyboards/nachie/evelyn/info.json @@ -0,0 +1,87 @@ +{ + "manufacturer": "nachie", + "keyboard_name": "Syndrome", + "maintainer": "nachie", + "board": "GENERIC_RP_RP2040", + "bootloader": "rp2040", + "processor": "RP2040", + "url": "https://littlecraftery.com/products/evelyn", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": false, + "audio": false, + "backlight": false, + "rgb_matrix": false, + "rgblight": false, + "encoder": true + }, + "dynamic_keymap": { + "layer_count": 4 + }, + "usb": { + "device_version": "1.0.0", + "pid": "0x4B43", + "vid": "0x6F75" + }, + "diode_direction": "COL2ROW", + "matrix_pins": { + "cols": ["GP19", "GP18", "GP16", "GP7", "GP22", "GP2"], + "rows": ["GP24", "GP23", "GP25", "GP26", "GP20", "GP21", "GP17"] + }, + "encoder": { + "enabled": true, + "rotary": [ + { "pin_a": "GP12", "pin_b": "GP13", "resolution": 2 }, + { "pin_a": "GP0", "pin_b": "GP1", "resolution": 2 }, + { "pin_a": "GP27", "pin_b": "GP28", "resolution": 2 } + ] + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"y": 0.0, "x": 0.29, "matrix": [0, 0], "label": "0,0"}, + {"y": 0.0, "x": 10.190000000000001, "matrix": [1, 4], "label": "1,4"}, + {"y": 0.0, "x": 11.190000000000001, "matrix": [0, 5], "label": "0,5"}, + {"y": 0.99, "x": 0.15, "matrix": [2, 0], "w": 1.25, "label": "2,0"}, + {"y": 0.99, "x": 10.58, "matrix": [2, 5], "w": 1.75, "label": "2,5"}, + {"y": 1.99, "x": 0.0, "matrix": [4, 0], "w": 1.75, "label": "4,0"}, + {"y": 2.99, "x": 0.09000000000000001, "matrix": [6, 0], "w": 1.25, "label": "6,0"}, + {"y": 6.23, "x": 3.97, "matrix": [5, 4], "w": 1.25, "label": "5,4"}, + {"y": 6.23, "x": 5.220000000000001, "matrix": [4, 5], "label": "4,5"}, + {"y": 7.23, "x": 4.87, "matrix": [6, 5], "w": 1.25, "label": "6,5"}, + {"y": 8.23, "x": 1.43, "matrix": [1, 0], "label": "1,0"}, + {"y": 8.23, "x": 2.43, "matrix": [0, 1], "label": "0,1"}, + {"y": 8.23, "x": 3.43, "matrix": [1, 1], "label": "1,1"}, + {"y": 8.23, "x": 4.430000000000001, "matrix": [0, 2], "label": "0,2"}, + {"y": 9.23, "x": 1.68, "matrix": [3, 0], "label": "3,0"}, + {"y": 9.23, "x": 2.68, "matrix": [2, 1], "label": "2,1"}, + {"y": 9.23, "x": 3.68, "matrix": [3, 1], "label": "3,1"}, + {"y": 9.23, "x": 4.680000000000001, "matrix": [2, 2], "label": "2,2"}, + {"y": 10.23, "x": 2.18, "matrix": [5, 0], "label": "5,0"}, + {"y": 10.23, "x": 3.18, "matrix": [4, 1], "label": "4,1"}, + {"y": 10.23, "x": 4.180000000000001, "matrix": [5, 1], "label": "5,1"}, + {"y": 10.23, "x": 5.180000000000001, "matrix": [4, 2], "label": "4,2"}, + {"y": 11.23, "x": 2.93, "matrix": [6, 1], "label": "6,1"}, + {"y": 11.23, "x": 3.93, "matrix": [6, 2], "w": 2.25, "label": "6,2"}, + {"y": 9.89, "x": 5.930000000000001, "matrix": [1, 2], "label": "1,2"}, + {"y": 9.89, "x": 6.930000000000001, "matrix": [0, 3], "label": "0,3"}, + {"y": 9.89, "x": 7.930000000000001, "matrix": [1, 3], "label": "1,3"}, + {"y": 9.89, "x": 8.93, "matrix": [0, 4], "label": "0,4"}, + {"y": 10.89, "x": 6.180000000000001, "matrix": [3, 2], "label": "3,2"}, + {"y": 10.89, "x": 7.180000000000001, "matrix": [2, 3], "label": "2,3"}, + {"y": 10.89, "x": 8.18, "matrix": [3, 3], "label": "3,3"}, + {"y": 10.89, "x": 9.18, "matrix": [2, 4], "label": "2,4"}, + {"y": 11.89, "x": 5.680000000000001, "matrix": [5, 2], "label": "5,2"}, + {"y": 11.89, "x": 6.680000000000001, "matrix": [4, 3], "label": "4,3"}, + {"y": 11.89, "x": 7.680000000000001, "matrix": [5, 3], "label": "5,3"}, + {"y": 11.89, "x": 8.68, "matrix": [4, 4], "label": "4,4"}, + {"y": 12.89, "x": 5.680000000000001, "matrix": [6, 3], "w": 2, "label": "6,3"}, + {"y": 12.89, "x": 7.680000000000001, "matrix": [6, 4], "label": "6,4"} + ] + } + } +} diff --git a/keyboards/nachie/evelyn/keyboard.json b/keyboards/nachie/evelyn/keyboard.json new file mode 100644 index 0000000000..61d598a52b --- /dev/null +++ b/keyboards/nachie/evelyn/keyboard.json @@ -0,0 +1,87 @@ +{ + "manufacturer": "nachie", + "keyboard_name": "Syndrome", + "maintainer": "nachie", + "board": "GENERIC_RP_RP2040", + "bootloader": "rp2040", + "processor": "RP2040", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "rgb_matrix": false + }, + "dynamic_keymap": { + "layer_count": 4 + }, + "usb": { + "device_version": "1.0.0", + "pid": "0x4B43", + "vid": "0x6F75" + }, + "diode_direction": "COL2ROW", + "matrix_pins": { + "cols": ["GP19", "GP18", "GP16", "GP7", "GP22", "GP2"], + "rows": ["GP24", "GP23", "GP25", "GP26", "GP20", "GP21", "GP17"] + }, + "encoder": { + "enabled": true, + "rotary": [ + { "pin_a": "GP12", "pin_b": "GP13", "resolution": 2 }, + { "pin_a": "GP0", "pin_b": "GP1", "resolution": 2 }, + { "pin_a": "GP27", "pin_b": "GP28", "resolution": 2 } + ] + }, + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"y": 0.0, "x": 0.29, "matrix": [0, 0], "label": "0,0"}, + {"y": 0.0, "x": 10.190000000000001, "matrix": [1, 4], "label": "1,4"}, + {"y": 0.0, "x": 11.190000000000001, "matrix": [0, 5], "label": "0,5"}, + {"y": 0.99, "x": 0.15, "matrix": [2, 0], "w": 1.25, "label": "2,0"}, + {"y": 0.99, "x": 10.58, "matrix": [2, 5], "w": 1.75, "label": "2,5"}, + {"y": 1.99, "x": 0.0, "matrix": [4, 0], "w": 1.75, "label": "4,0"}, + {"y": 2.99, "x": 0.09000000000000001, "matrix": [6, 0], "w": 1.25, "label": "6,0"}, + {"y": 6.23, "x": 3.97, "matrix": [5, 4], "w": 1.25, "label": "5,4"}, + {"y": 6.23, "x": 5.220000000000001, "matrix": [4, 5], "label": "4,5"}, + {"y": 7.23, "x": 4.87, "matrix": [6, 5], "w": 1.25, "label": "6,5"}, + {"y": 8.23, "x": 1.43, "matrix": [1, 0], "label": "1,0"}, + {"y": 8.23, "x": 2.43, "matrix": [0, 1], "label": "0,1"}, + {"y": 8.23, "x": 3.43, "matrix": [1, 1], "label": "1,1"}, + {"y": 8.23, "x": 4.430000000000001, "matrix": [0, 2], "label": "0,2"}, + {"y": 9.23, "x": 1.68, "matrix": [3, 0], "label": "3,0"}, + {"y": 9.23, "x": 2.68, "matrix": [2, 1], "label": "2,1"}, + {"y": 9.23, "x": 3.68, "matrix": [3, 1], "label": "3,1"}, + {"y": 9.23, "x": 4.680000000000001, "matrix": [2, 2], "label": "2,2"}, + {"y": 10.23, "x": 2.18, "matrix": [5, 0], "label": "5,0"}, + {"y": 10.23, "x": 3.18, "matrix": [4, 1], "label": "4,1"}, + {"y": 10.23, "x": 4.180000000000001, "matrix": [5, 1], "label": "5,1"}, + {"y": 10.23, "x": 5.180000000000001, "matrix": [4, 2], "label": "4,2"}, + {"y": 11.23, "x": 2.93, "matrix": [6, 1], "label": "6,1"}, + {"y": 11.23, "x": 3.93, "matrix": [6, 2], "w": 2.25, "label": "6,2"}, + {"y": 9.89, "x": 5.930000000000001, "matrix": [1, 2], "label": "1,2"}, + {"y": 9.89, "x": 6.930000000000001, "matrix": [0, 3], "label": "0,3"}, + {"y": 9.89, "x": 7.930000000000001, "matrix": [1, 3], "label": "1,3"}, + {"y": 9.89, "x": 8.93, "matrix": [0, 4], "label": "0,4"}, + {"y": 10.89, "x": 6.180000000000001, "matrix": [3, 2], "label": "3,2"}, + {"y": 10.89, "x": 7.180000000000001, "matrix": [2, 3], "label": "2,3"}, + {"y": 10.89, "x": 8.18, "matrix": [3, 3], "label": "3,3"}, + {"y": 10.89, "x": 9.18, "matrix": [2, 4], "label": "2,4"}, + {"y": 11.89, "x": 5.680000000000001, "matrix": [5, 2], "label": "5,2"}, + {"y": 11.89, "x": 6.680000000000001, "matrix": [4, 3], "label": "4,3"}, + {"y": 11.89, "x": 7.680000000000001, "matrix": [5, 3], "label": "5,3"}, + {"y": 11.89, "x": 8.68, "matrix": [4, 4], "label": "4,4"}, + {"y": 12.89, "x": 5.680000000000001, "matrix": [6, 3], "w": 2, "label": "6,3"}, + {"y": 12.89, "x": 7.680000000000001, "matrix": [6, 4], "label": "6,4"} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/nachie/evelyn/keymaps/default/keymap.c b/keyboards/nachie/evelyn/keymaps/default/keymap.c new file mode 100755 index 0000000000..43266d2051 --- /dev/null +++ b/keyboards/nachie/evelyn/keymaps/default/keymap.c @@ -0,0 +1,27 @@ +/* +Copyright 2024 nachie + +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 */ + LAYOUT( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_DOT, KC_LSFT, MO(1), + KC_LCTL, KC_LGUI, KC_SPC, KC_SPC, KC_RGUI, MO(1)) +}; diff --git a/keyboards/nachie/evelyn/keymaps/default/readme.md b/keyboards/nachie/evelyn/keymaps/default/readme.md new file mode 100644 index 0000000000..80a227e25e --- /dev/null +++ b/keyboards/nachie/evelyn/keymaps/default/readme.md @@ -0,0 +1 @@ +The default keymap for the Evelyn. \ No newline at end of file diff --git a/keyboards/nachie/evelyn/keymaps/vial/config.h b/keyboards/nachie/evelyn/keymaps/vial/config.h new file mode 100644 index 0000000000..bf83820779 --- /dev/null +++ b/keyboards/nachie/evelyn/keymaps/vial/config.h @@ -0,0 +1,11 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#pragma once + +#define VIAL_KEYBOARD_UID {0x53, 0x01, 0x24, 0xD6, 0x96, 0x84, 0xF2, 0x0F} + +#define VIAL_UNLOCK_COMBO_ROWS { 0, 2 } +#define VIAL_UNLOCK_COMBO_COLS { 0, 5 } + +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS +#define RGB_MATRIX_KEYPRESSES \ No newline at end of file diff --git a/keyboards/nachie/evelyn/keymaps/vial/keymap.c b/keyboards/nachie/evelyn/keymaps/vial/keymap.c new file mode 100755 index 0000000000..9f58b5accb --- /dev/null +++ b/keyboards/nachie/evelyn/keymaps/vial/keymap.c @@ -0,0 +1,65 @@ +/* +Copyright 2024 nachie + +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 + +#include +char wpm_str[10]; + +enum layer_names { + _BASE, // Default Layer + _FN, // Fn Layer 1 + _FN2, // Fn Layer 2 + _FN3 // Fn Layer 3 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* QWERTY */ + [_BASE] = LAYOUT( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_DOT, KC_LSFT, MO(1), + KC_LCTL, KC_LGUI, KC_SPC, KC_SPC, KC_RGUI, MO(1)), + + /* FUNCTION */ + [_FN] = LAYOUT( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_DOT, KC_LSFT, MO(1), + KC_LGUI, KC_LGUI, KC_LALT, KC_BSPC, KC_RGUI, MO(1)), + + [_FN2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______), + + [_FN3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______) +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [_FN] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(RGB_RMOD, RGB_MOD) }, + [_FN2] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(RGB_RMOD, RGB_MOD) }, + [_FN3] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(RGB_RMOD, RGB_MOD) }, +}; +#endif diff --git a/keyboards/nachie/evelyn/keymaps/vial/readme.md b/keyboards/nachie/evelyn/keymaps/vial/readme.md new file mode 100644 index 0000000000..c68b8bea09 --- /dev/null +++ b/keyboards/nachie/evelyn/keymaps/vial/readme.md @@ -0,0 +1 @@ +The vial keymap for the Evelyn PCB. \ No newline at end of file diff --git a/keyboards/nachie/evelyn/keymaps/vial/rules.mk b/keyboards/nachie/evelyn/keymaps/vial/rules.mk new file mode 100644 index 0000000000..2b08f373bf --- /dev/null +++ b/keyboards/nachie/evelyn/keymaps/vial/rules.mk @@ -0,0 +1,6 @@ +VIA_ENABLE = yes +VIAL_ENABLE = yes + +#VIALRGB_ENABLE = yes + +ENCODER_MAP_ENABLE = yes \ No newline at end of file diff --git a/keyboards/nachie/evelyn/keymaps/vial/vial.json b/keyboards/nachie/evelyn/keymaps/vial/vial.json new file mode 100644 index 0000000000..4597db1978 --- /dev/null +++ b/keyboards/nachie/evelyn/keymaps/vial/vial.json @@ -0,0 +1,213 @@ +{ + "name": "Syndrome", + "vendorId": "0x4B43", + "productId": "0x6F75", + "matrix": { "rows": 7, "cols": 6 }, + "layouts": { + "labels":[ + [ + "Right Shift", + "Split Shift", + "Full Shift" + ], + "1.75 Left Space", + "1.75 Right Space" + ], + "keymap": [ + [ + { + "y": 0.16, + "x": 12.25 + }, + "1,0\n\n\n\n\n\n\n\n\ne", + "1,1\n\n\n\n\n\n\n\n\ne" + ], + [ + { + "y": -0.9199999999999999, + "x": 0.3, + "c": "#ffffff", + "t": "#2e2525" + }, + "0,0", + { + "x": 8.9 + }, + "1,4", + "0,5" + ], + [ + { + "y": -0.010000000000000009, + "x": 0.16, + "w": 1.25 + }, + "2,0", + { + "x": 9.18, + "w": 1.75 + }, + "2,5" + ], + [ + { + "x": 0.01, + "w": 1.75 + }, + "4,0" + ], + [ + { + "y": -0.9899999999999998, + "x": 12.73, + "w": 2.25 + }, + "5,4\n\n\n0,1" + ], + [ + { + "y": -0.010000000000000231, + "x": 0.1, + "w": 1.25 + }, + "6,0" + ], + [ + { + "y": 0.6799999999999997, + "x": 3.5, + "c": "#cccccc", + "t": "#000000" + }, + "2,0\n\n\n\n\n\n\n\n\ne", + "2,1\n\n\n\n\n\n\n\n\ne", + { + "x": 0.75 + }, + "3,0\n\n\n\n\n\n\n\n\ne", + "3,1\n\n\n\n\n\n\n\n\ne" + ], + [ + { + "rx": 6.25, + "y": 2.24, + "x": 3.9800000000000004, + "c": "#ffffff", + "t": "#2e2525", + "w": 1.25 + }, + "5,4\n\n\n0,0", + "4,5\n\n\n0,0" + ], + [ + { + "x": 4.879999999999999, + "w": 1.25 + }, + "6,5" + ], + [ + { + "r": 8, + "rx": 0, + "x": 1.44 + }, + "1,0", + "0,1", + "1,1", + "0,2" + ], + [ + { + "x": 1.69 + }, + "3,0", + "2,1", + "3,1", + "2,2" + ], + [ + { + "x": 2.19 + }, + "5,0", + "4,1", + "5,1", + "4,2" + ], + [ + { + "x": 2.94 + }, + "6,1\n\n\n1,0", + { + "w": 2.25 + }, + "6,2\n\n\n1,0" + ], + [ + { + "x": 2.94, + "t": "#000000", + "w": 1.5 + }, + "6,1\n\n\n1,1", + { + "x": 8.881784197001252e-16, + "w": 1.75 + }, + "6,2\n\n\n1,1" + ], + [ + { + "r": -8, + "y": -3.34, + "x": 5.9399999999999995, + "t": "#2e2525" + }, + "1,2", + "0,3", + "1,3", + "0,4" + ], + [ + { + "x": 6.19 + }, + "3,2", + "2,3", + "3,3", + "2,4" + ], + [ + { + "x": 5.69 + }, + "5,2", + "4,3", + "5,3", + "4,4" + ], + [ + { + "x": 5.69, + "w": 2 + }, + "6,3\n\n\n2,0", + "6,4\n\n\n2,0" + ], + [ + { + "x": 5.69, + "t": "#000000", + "w": 1.75 + }, + "6,3\n\n\n2,1", + { + "w": 1.25 + }, + "6,4\n\n\n2,1" + ] + ] + } +} \ No newline at end of file diff --git a/keyboards/nachie/evelyn/readme.md b/keyboards/nachie/evelyn/readme.md new file mode 100644 index 0000000000..2259be9671 --- /dev/null +++ b/keyboards/nachie/evelyn/readme.md @@ -0,0 +1,23 @@ +# Båge + +Firmware for the Båge + +* Keyboard Maintainer: [nachie](https://github.com/nachie) +* Hardware Supported: Båge +* Hardware Availability: [nachie](https://littlecraftery.com/products/Båge) + +Make example for this keyboard (after setting up your build environment): + + make nachie/syndrome:default + +Or to make and flash: + + make nachie/syndrome: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 + +* **Bootmagic reset**: Hold down ESC key (top left) and plug in the keyboard +* **Physical reset button**: Briefly press the button labeled "SW_RST1" on the back of the PCB diff --git a/keyboards/nachie/evelyn/rules.mk b/keyboards/nachie/evelyn/rules.mk new file mode 100755 index 0000000000..7ff128fa69 --- /dev/null +++ b/keyboards/nachie/evelyn/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank \ No newline at end of file diff --git a/keyboards/nachie/littlewritter/config.h b/keyboards/nachie/littlewritter/config.h new file mode 100755 index 0000000000..aeedd65f7f --- /dev/null +++ b/keyboards/nachie/littlewritter/config.h @@ -0,0 +1,25 @@ +/* +Copyright 2024 Nachie + +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 RP2040_FLASH_GENERIC_03H + +#ifdef HAPTIC_ENABLE +#define SOLENOID_PIN GP15 +#endif + +#define VIA_CUSTOM_LIGHTING_ENABLE diff --git a/keyboards/nachie/littlewritter/halconf.h b/keyboards/nachie/littlewritter/halconf.h new file mode 100644 index 0000000000..7691f8fd28 --- /dev/null +++ b/keyboards/nachie/littlewritter/halconf.h @@ -0,0 +1,3 @@ +#pragma once + +#include_next diff --git a/keyboards/nachie/littlewritter/info.json b/keyboards/nachie/littlewritter/info.json new file mode 100644 index 0000000000..3c55188b27 --- /dev/null +++ b/keyboards/nachie/littlewritter/info.json @@ -0,0 +1,148 @@ +{ + "keyboard_name": "LittleWritter", + "manufacturer": "Nachie", + "usb": { + "vid": "0x4B43", + "pid": "0x5358", + "device_version": "1.0.0" + }, + "board": "GENERIC_RP_RP2040", + "bootloader": "rp2040", + "processor": "RP2040", + "url": "https://littlecraftery.com/products/little-writter", + "maintainer": "nachie", + "ws2812": { + "pin": "GP29", + "driver": "vendor" + }, + "rgb_matrix": { + "driver": "ws2812", + "led_count": 16, + "animations": { + "alphas_mods": true, + "gradient_up_down": true, + "gradient_left_right": true, + "breathing": true, + "band_sat": true, + "band_val": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_up_down": true, + "rainbow_moving_chevron":true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "rainbow_pinwheels": true, + "raindrops": true, + "jellybean_raindrops": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "typing_heatmap": true, + "digital_rain": true, + "solid_reactive_simple": true, + "solid_reactive": true, + "solid_reactive_wide": true, + "solid_reactive_multiwide": true, + "solid_reactive_cross": true, + "solid_reactive_multicross": true, + "solid_reactive_nexus": true, + "solid_reactive_multinexus": true, + "splash": true, + "solid_splash": true, + "solid_multisplash": true, + "pixel_rain": true, + "pixel_fractal": true + } + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"y": 0, "x": 11.5, "matrix": [10, 5], "label": "10,5"}, + {"y": 1, "x": 10.5, "matrix": [10, 6], "label": "10,6"}, + {"y": 1, "x": 12.5, "matrix": [10, 7], "label": "10,7"}, + {"y": 1.75, "x": 0, "matrix": [8, 5], "label": "8,5"}, + {"y": 1.75, "x": 1, "matrix": [9, 5], "label": "9,5"}, + {"y": 1.75, "x": 3.25, "matrix": [8, 6], "label": "8,6"}, + {"y": 1.75, "x": 4.25, "matrix": [9, 6], "label": "9,6"}, + {"y": 1.75, "x": 5.25, "matrix": [8, 7], "label": "8,7"}, + {"y": 1.75, "x": 7.25, "matrix": [9, 7], "label": "9,7"}, + {"y": 1.75, "x": 8.25, "matrix": [8, 8], "label": "8,8"}, + {"y": 2, "x": 11.5, "matrix": [10, 8], "label": "10,8"}, + {"y": 3.5, "x": 0, "matrix": [0, 0], "label": "0,0"}, + {"y": 3.5, "x": 1, "matrix": [1, 0], "label": "1,0"}, + {"y": 3.5, "x": 2, "matrix": [0, 1], "label": "0,1"}, + {"y": 3.5, "x": 3, "matrix": [1, 1], "label": "1,1"}, + {"y": 3.5, "x": 4, "matrix": [0, 2], "label": "0,2"}, + {"y": 3.5, "x": 5, "matrix": [1, 2], "label": "1,2"}, + {"y": 3.5, "x": 6, "matrix": [0, 3], "label": "0,3"}, + {"y": 3.5, "x": 7, "matrix": [1, 3], "label": "1,3"}, + {"y": 3.5, "x": 8, "matrix": [0, 4], "label": "0,4"}, + {"y": 3.5, "x": 9, "matrix": [1, 4], "label": "1,4"}, + {"y": 3.5, "x": 10, "matrix": [7, 4], "label": "7,4"}, + {"y": 3.5, "x": 12.5, "matrix": [9, 8], "label": "9,8"}, + {"y": 4.5, "x": 0, "matrix": [2, 0], "w": 1.25, "label": "2,0"}, + {"y": 4.5, "x": 1.25, "matrix": [3, 0], "label": "3,0"}, + {"y": 4.5, "x": 2.25, "matrix": [2, 1], "label": "2,1"}, + {"y": 4.5, "x": 3.25, "matrix": [3, 1], "label": "3,1"}, + {"y": 4.5, "x": 4.25, "matrix": [2, 2], "label": "2,2"}, + {"y": 4.5, "x": 5.25, "matrix": [3, 2], "label": "3,2"}, + {"y": 4.5, "x": 6.25, "matrix": [2, 3], "label": "2,3"}, + {"y": 4.5, "x": 7.25, "matrix": [3, 3], "label": "3,3"}, + {"y": 4.5, "x": 8.25, "matrix": [2, 4], "label": "2,4"}, + {"y": 4.5, "x": 9.25, "matrix": [3, 4], "w": 1.75, "label": "3,4"}, + {"y": 4.5, "x": 12.5, "matrix": [8, 9], "label": "8,9"}, + {"y": 5.5, "x": 0, "matrix": [4, 0], "w": 1.75, "label": "4,0"}, + {"y": 5.5, "x": 1.75, "matrix": [5, 0], "label": "5,0"}, + {"y": 5.5, "x": 2.75, "matrix": [4, 1], "label": "4,1"}, + {"y": 5.5, "x": 3.75, "matrix": [5, 1], "label": "5,1"}, + {"y": 5.5, "x": 4.75, "matrix": [4, 2], "label": "4,2"}, + {"y": 5.5, "x": 5.75, "matrix": [5, 2], "label": "5,2"}, + {"y": 5.5, "x": 6.75, "matrix": [4, 3], "label": "4,3"}, + {"y": 5.5, "x": 7.75, "matrix": [5, 3], "label": "5,3"}, + {"y": 5.5, "x": 8.75, "matrix": [4, 4], "w": 1.25, "label": "4,4"}, + {"y": 5.5, "x": 10, "matrix": [5, 4], "label": "5,4"}, + {"y": 5.5, "x": 12.5, "matrix": [9, 9], "label": "9,9"}, + {"y": 6.5, "x": 0, "matrix": [6, 0], "w": 1.5, "label": "6,0"}, + {"y": 6.5, "x": 1.5, "matrix": [7, 0], "label": "7,0"}, + {"y": 6.5, "x": 2.5, "matrix": [6, 1], "w": 1.25, "label": "6,1"}, + {"y": 6.5, "x": 3.75, "matrix": [7, 1], "w": 1.75, "label": "7,1"}, + {"y": 6.5, "x": 5.5, "matrix": [7, 2], "w": 1.75, "label": "7,2"}, + {"y": 6.5, "x": 7.25, "matrix": [6, 3], "w": 1.25, "label": "6,3"}, + {"y": 6.5, "x": 8.5, "matrix": [7, 3], "label": "7,3"}, + {"y": 6.5, "x": 9.5, "matrix": [6, 4], "w": 1.5, "label": "6,4"} + ] + } + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": false, + "audio": false, + "backlight": false, + "rgblight": false, + "encoder": true, + "rgb_matrix": true + }, + "encoder": { + "enabled": true, + "rotary": [ + { "pin_a": "GP22", "pin_b": "GP23", "resolution": 2 }, + { "pin_a": "GP26", "pin_b": "GP27", "resolution": 2 }, + { "pin_a": "GP0", "pin_b": "GP1", "resolution": 2 } + ] + }, + "diode_direction": "COL2ROW", + "matrix_pins": { + "cols": ["GP28", "GP21", "GP20", "GP3", "GP2", "GP12", "GP13", "GP14", "GP10", "GP11"], + "rows": ["GP25", "GP24", "GP16", "GP7", "GP17", "GP18", "GP19", "GP4", "GP8", "GP9", "GP15"] + } +} diff --git a/keyboards/nachie/littlewritter/keyboard.json b/keyboards/nachie/littlewritter/keyboard.json new file mode 100644 index 0000000000..3c55188b27 --- /dev/null +++ b/keyboards/nachie/littlewritter/keyboard.json @@ -0,0 +1,148 @@ +{ + "keyboard_name": "LittleWritter", + "manufacturer": "Nachie", + "usb": { + "vid": "0x4B43", + "pid": "0x5358", + "device_version": "1.0.0" + }, + "board": "GENERIC_RP_RP2040", + "bootloader": "rp2040", + "processor": "RP2040", + "url": "https://littlecraftery.com/products/little-writter", + "maintainer": "nachie", + "ws2812": { + "pin": "GP29", + "driver": "vendor" + }, + "rgb_matrix": { + "driver": "ws2812", + "led_count": 16, + "animations": { + "alphas_mods": true, + "gradient_up_down": true, + "gradient_left_right": true, + "breathing": true, + "band_sat": true, + "band_val": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_up_down": true, + "rainbow_moving_chevron":true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "rainbow_pinwheels": true, + "raindrops": true, + "jellybean_raindrops": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "typing_heatmap": true, + "digital_rain": true, + "solid_reactive_simple": true, + "solid_reactive": true, + "solid_reactive_wide": true, + "solid_reactive_multiwide": true, + "solid_reactive_cross": true, + "solid_reactive_multicross": true, + "solid_reactive_nexus": true, + "solid_reactive_multinexus": true, + "splash": true, + "solid_splash": true, + "solid_multisplash": true, + "pixel_rain": true, + "pixel_fractal": true + } + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"y": 0, "x": 11.5, "matrix": [10, 5], "label": "10,5"}, + {"y": 1, "x": 10.5, "matrix": [10, 6], "label": "10,6"}, + {"y": 1, "x": 12.5, "matrix": [10, 7], "label": "10,7"}, + {"y": 1.75, "x": 0, "matrix": [8, 5], "label": "8,5"}, + {"y": 1.75, "x": 1, "matrix": [9, 5], "label": "9,5"}, + {"y": 1.75, "x": 3.25, "matrix": [8, 6], "label": "8,6"}, + {"y": 1.75, "x": 4.25, "matrix": [9, 6], "label": "9,6"}, + {"y": 1.75, "x": 5.25, "matrix": [8, 7], "label": "8,7"}, + {"y": 1.75, "x": 7.25, "matrix": [9, 7], "label": "9,7"}, + {"y": 1.75, "x": 8.25, "matrix": [8, 8], "label": "8,8"}, + {"y": 2, "x": 11.5, "matrix": [10, 8], "label": "10,8"}, + {"y": 3.5, "x": 0, "matrix": [0, 0], "label": "0,0"}, + {"y": 3.5, "x": 1, "matrix": [1, 0], "label": "1,0"}, + {"y": 3.5, "x": 2, "matrix": [0, 1], "label": "0,1"}, + {"y": 3.5, "x": 3, "matrix": [1, 1], "label": "1,1"}, + {"y": 3.5, "x": 4, "matrix": [0, 2], "label": "0,2"}, + {"y": 3.5, "x": 5, "matrix": [1, 2], "label": "1,2"}, + {"y": 3.5, "x": 6, "matrix": [0, 3], "label": "0,3"}, + {"y": 3.5, "x": 7, "matrix": [1, 3], "label": "1,3"}, + {"y": 3.5, "x": 8, "matrix": [0, 4], "label": "0,4"}, + {"y": 3.5, "x": 9, "matrix": [1, 4], "label": "1,4"}, + {"y": 3.5, "x": 10, "matrix": [7, 4], "label": "7,4"}, + {"y": 3.5, "x": 12.5, "matrix": [9, 8], "label": "9,8"}, + {"y": 4.5, "x": 0, "matrix": [2, 0], "w": 1.25, "label": "2,0"}, + {"y": 4.5, "x": 1.25, "matrix": [3, 0], "label": "3,0"}, + {"y": 4.5, "x": 2.25, "matrix": [2, 1], "label": "2,1"}, + {"y": 4.5, "x": 3.25, "matrix": [3, 1], "label": "3,1"}, + {"y": 4.5, "x": 4.25, "matrix": [2, 2], "label": "2,2"}, + {"y": 4.5, "x": 5.25, "matrix": [3, 2], "label": "3,2"}, + {"y": 4.5, "x": 6.25, "matrix": [2, 3], "label": "2,3"}, + {"y": 4.5, "x": 7.25, "matrix": [3, 3], "label": "3,3"}, + {"y": 4.5, "x": 8.25, "matrix": [2, 4], "label": "2,4"}, + {"y": 4.5, "x": 9.25, "matrix": [3, 4], "w": 1.75, "label": "3,4"}, + {"y": 4.5, "x": 12.5, "matrix": [8, 9], "label": "8,9"}, + {"y": 5.5, "x": 0, "matrix": [4, 0], "w": 1.75, "label": "4,0"}, + {"y": 5.5, "x": 1.75, "matrix": [5, 0], "label": "5,0"}, + {"y": 5.5, "x": 2.75, "matrix": [4, 1], "label": "4,1"}, + {"y": 5.5, "x": 3.75, "matrix": [5, 1], "label": "5,1"}, + {"y": 5.5, "x": 4.75, "matrix": [4, 2], "label": "4,2"}, + {"y": 5.5, "x": 5.75, "matrix": [5, 2], "label": "5,2"}, + {"y": 5.5, "x": 6.75, "matrix": [4, 3], "label": "4,3"}, + {"y": 5.5, "x": 7.75, "matrix": [5, 3], "label": "5,3"}, + {"y": 5.5, "x": 8.75, "matrix": [4, 4], "w": 1.25, "label": "4,4"}, + {"y": 5.5, "x": 10, "matrix": [5, 4], "label": "5,4"}, + {"y": 5.5, "x": 12.5, "matrix": [9, 9], "label": "9,9"}, + {"y": 6.5, "x": 0, "matrix": [6, 0], "w": 1.5, "label": "6,0"}, + {"y": 6.5, "x": 1.5, "matrix": [7, 0], "label": "7,0"}, + {"y": 6.5, "x": 2.5, "matrix": [6, 1], "w": 1.25, "label": "6,1"}, + {"y": 6.5, "x": 3.75, "matrix": [7, 1], "w": 1.75, "label": "7,1"}, + {"y": 6.5, "x": 5.5, "matrix": [7, 2], "w": 1.75, "label": "7,2"}, + {"y": 6.5, "x": 7.25, "matrix": [6, 3], "w": 1.25, "label": "6,3"}, + {"y": 6.5, "x": 8.5, "matrix": [7, 3], "label": "7,3"}, + {"y": 6.5, "x": 9.5, "matrix": [6, 4], "w": 1.5, "label": "6,4"} + ] + } + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": false, + "audio": false, + "backlight": false, + "rgblight": false, + "encoder": true, + "rgb_matrix": true + }, + "encoder": { + "enabled": true, + "rotary": [ + { "pin_a": "GP22", "pin_b": "GP23", "resolution": 2 }, + { "pin_a": "GP26", "pin_b": "GP27", "resolution": 2 }, + { "pin_a": "GP0", "pin_b": "GP1", "resolution": 2 } + ] + }, + "diode_direction": "COL2ROW", + "matrix_pins": { + "cols": ["GP28", "GP21", "GP20", "GP3", "GP2", "GP12", "GP13", "GP14", "GP10", "GP11"], + "rows": ["GP25", "GP24", "GP16", "GP7", "GP17", "GP18", "GP19", "GP4", "GP8", "GP9", "GP15"] + } +} diff --git a/keyboards/nachie/littlewritter/keymaps/default/keymap.c b/keyboards/nachie/littlewritter/keymaps/default/keymap.c new file mode 100755 index 0000000000..0ae29aa151 --- /dev/null +++ b/keyboards/nachie/littlewritter/keymaps/default/keymap.c @@ -0,0 +1,28 @@ +/* +Copyright 2024 Nachie + +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 */ + LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_W, + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_Q, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, KC_A, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_DOT, KC_LSFT, MO(1), KC_Z, + KC_LGUI, KC_LGUI, KC_LALT, KC_SPC, KC_BSPC, KC_RGUI, KC_RALT, MO(1)) +}; diff --git a/keyboards/nachie/littlewritter/keymaps/default/readme.md b/keyboards/nachie/littlewritter/keymaps/default/readme.md new file mode 100644 index 0000000000..0bb2e6026d --- /dev/null +++ b/keyboards/nachie/littlewritter/keymaps/default/readme.md @@ -0,0 +1 @@ +The default keymap for the Little Writter. \ No newline at end of file diff --git a/keyboards/nachie/littlewritter/keymaps/vial/config.h b/keyboards/nachie/littlewritter/keymaps/vial/config.h new file mode 100644 index 0000000000..a6cc2583d0 --- /dev/null +++ b/keyboards/nachie/littlewritter/keymaps/vial/config.h @@ -0,0 +1,11 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#pragma once + +#define VIAL_KEYBOARD_UID {0x81, 0x8E, 0x3C, 0xC9, 0xA3, 0x67, 0xDE, 0xA5} + +#define VIAL_UNLOCK_COMBO_ROWS { 0, 3 } +#define VIAL_UNLOCK_COMBO_COLS { 0, 4 } + +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS +#define RGB_MATRIX_KEYPRESSES \ No newline at end of file diff --git a/keyboards/nachie/littlewritter/keymaps/vial/keymap.c b/keyboards/nachie/littlewritter/keymaps/vial/keymap.c new file mode 100755 index 0000000000..fe744f7a0b --- /dev/null +++ b/keyboards/nachie/littlewritter/keymaps/vial/keymap.c @@ -0,0 +1,486 @@ +/* +Copyright 2024 Nachie + +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 + +#include +#include "os_detection.h" + +os_variant_t current_platform; +bool is_alt_tab_active = false; +uint16_t alt_tab_timer = 0; + +enum layer_names { + _BASE, // Default Layer + _FN, // Fn Layer 1 + _FN2, // Fn Layer 2 + _FN3 // Fn Layer 3 +}; + +enum custom_keycode { + JWRDL = QK_KB_0, + JWRDR, + SWRDL, + SWRDR, + TABL, + TABR, + DSKTPL, + DSKTPR, + PRVAPP, + NXTAPP +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_HOME: + if (record->event.pressed && current_platform == OS_MACOS) { + register_mods(MOD_LGUI); + tap_code(KC_LEFT); + unregister_mods(MOD_LGUI); + } else { + tap_code(KC_HOME); + } + break; + case KC_END: + if (record->event.pressed && current_platform == OS_MACOS) { + register_mods(MOD_LGUI); + tap_code(KC_RIGHT); + unregister_mods(MOD_LGUI); + } else { + tap_code(KC_END); + } + break; + case KC_PGUP: + if (record->event.pressed && current_platform == OS_MACOS) { + register_mods(MOD_LGUI); + tap_code(KC_UP); + unregister_mods(MOD_LGUI); + } else { + tap_code(KC_PGUP); + } + break; + case KC_PGDN: + if (record->event.pressed && current_platform == OS_MACOS) { + register_mods(MOD_LGUI); + tap_code(KC_DOWN); + unregister_mods(MOD_LGUI); + } else { + tap_code(KC_PGDN); + } + break; + case KC_NUM_LOCK: + if (record->event.pressed && current_platform == OS_MACOS) { + register_mods(MOD_LSFT); + tap_code(KC_CLEAR); + unregister_mods(MOD_LSFT); + } else { + tap_code(KC_NUM_LOCK); + } + break; + case KC_SCROLL_LOCK: + if (record->event.pressed && current_platform == OS_MACOS) { + register_mods(MOD_LCTL); + tap_code(KC_F14); + unregister_mods(MOD_LCTL); + } else { + tap_code(KC_SCROLL_LOCK); + } + break; + case KC_PRINT_SCREEN: + if (record->event.pressed && current_platform == OS_MACOS) { + register_mods(MOD_LSFT); + register_mods(MOD_LGUI); + tap_code(KC_5); + unregister_mods(MOD_LGUI); + unregister_mods(MOD_LSFT); + } else { + tap_code(KC_PRINT_SCREEN); + } + break; + case JWRDL: + if (record->event.pressed) { + (current_platform == OS_MACOS) ? register_mods(MOD_LALT) : register_mods(MOD_LCTL); + tap_code(KC_LEFT); + (current_platform == OS_MACOS) ? unregister_mods(MOD_LALT) : unregister_mods(MOD_LCTL); + } else { + } + break; + case JWRDR: + if (record->event.pressed) { + (current_platform == OS_MACOS) ? register_mods(MOD_LALT) : register_mods(MOD_LCTL); + tap_code(KC_RIGHT); + (current_platform == OS_MACOS) ? unregister_mods(MOD_LALT) : unregister_mods(MOD_LCTL); + } else { + } + break; + case SWRDL: + if (record->event.pressed) { + register_mods(MOD_LSFT); + (current_platform == OS_MACOS) ? register_mods(MOD_LALT) : register_mods(MOD_LCTL); + tap_code(KC_LEFT); + (current_platform == OS_MACOS) ? unregister_mods(MOD_LALT) : unregister_mods(MOD_LCTL); + unregister_mods(MOD_LSFT); + } else { + } + break; + case SWRDR: + if (record->event.pressed) { + register_mods(MOD_LSFT); + (current_platform == OS_MACOS) ? register_mods(MOD_LALT) : register_mods(MOD_LCTL); + tap_code(KC_RIGHT); + (current_platform == OS_MACOS) ? unregister_mods(MOD_LALT) : unregister_mods(MOD_LCTL); + unregister_mods(MOD_LSFT); + } else { + } + break; + case TABL: + if (record->event.pressed) { + register_mods(MOD_LCTL); + register_mods(MOD_LSFT); + tap_code(KC_TAB); + unregister_mods(MOD_LSFT); + unregister_mods(MOD_LCTL); + } else { + } + break; + case TABR: + if (record->event.pressed) { + register_mods(MOD_LCTL); + tap_code(KC_TAB); + unregister_mods(MOD_LCTL); + } else { + } + break; + case DSKTPL: + if (record->event.pressed) { + register_mods(MOD_LCTL); + register_mods(MOD_LGUI); + (current_platform == OS_LINUX) ? tap_code(KC_UP) : tap_code(KC_LEFT); + unregister_mods(MOD_LGUI); + unregister_mods(MOD_LCTL); + } else { + } + break; + case DSKTPR: + if (record->event.pressed) { + register_mods(MOD_LCTL); + register_mods(MOD_LGUI); + (current_platform == OS_LINUX) ? tap_code(KC_DOWN) : tap_code(KC_RGHT); + unregister_mods(MOD_LGUI); + unregister_mods(MOD_LCTL); + } else { + } + break; + case PRVAPP: + if (record->event.pressed) { + register_code(KC_LSFT); + if (!is_alt_tab_active) { + is_alt_tab_active = true; + (current_platform == OS_MACOS) ? register_code(KC_LGUI) : register_code(KC_LALT); + } + alt_tab_timer = timer_read(); + register_code(KC_TAB); + } else { + unregister_code(KC_TAB); + unregister_code(KC_LSFT); + } + break; + case NXTAPP: + if (record->event.pressed) { + if (!is_alt_tab_active) { + is_alt_tab_active = true; + (current_platform == OS_MACOS) ? register_code(KC_LGUI) : register_code(KC_LALT); + } + alt_tab_timer = timer_read(); + register_code(KC_TAB); + } else { + unregister_code(KC_TAB); + } + break; + } + return true; +}; + +#ifndef HAPTIC_ENABLE + #define HF_TOGG _______ +#endif + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* QWERTY */ + [_BASE] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_W, + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_Q, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, KC_A, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_DOT, KC_LSFT, MO(1), KC_Z, + KC_LGUI, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_BSPC, KC_RGUI, MO(2)), + + /* FUNCTION */ + [_FN] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_W, + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, _______, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, _______, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_DOT, KC_LSFT, MO(1), _______, + KC_LGUI, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_BSPC, KC_RGUI, MO(1)), + + [_FN2] = LAYOUT( + KC_ESC, QK_BOOTLOADER, QK_REBOOT, QK_DEBUG_TOGGLE, QK_CLEAR_EEPROM, _______, _______, _______, _______, _______, _______, + HF_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______), + + [_FN3] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______) +}; + +void matrix_scan_user(void) { // The very important timer. + if (is_alt_tab_active) { + if (timer_elapsed(alt_tab_timer) > 1000) { + (current_platform == OS_MACOS) ? unregister_code(KC_LGUI) : unregister_code(KC_LALT); + is_alt_tab_active = false; + } + } +} + +#if defined(ENCODER_MAP_ENABLE) + const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [_FN] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(RGB_RMOD, RGB_MOD) }, + [_FN2] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(RGB_RMOD, RGB_MOD) }, + [_FN3] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(RGB_RMOD, RGB_MOD) }, + }; +#endif + +#ifdef OLED_ENABLE + #ifdef DYNAMIC_MACRO_ENABLE + bool macro1; + bool macro1rec; + bool macro2; + bool macro2rec; + bool prevEnabled; + uint8_t prevRGBmode; + + void render_dynamic_macro_status(int col, int line){ + oled_set_cursor(col,line); + macro1rec ? oled_write(PSTR("DM1"), macro1) : oled_write(PSTR(" "),false); + oled_set_cursor(col,line+1); + macro2rec ? oled_write(PSTR("DM2"), macro2) : oled_write(PSTR(" "),false); + } + + //direction indicates which macro it is, with 1 being Macro 1, -1 being Macro 2, and 0 being no macro. + void dynamic_macro_record_start_user(int8_t direction){ + prevEnabled = rgb_matrix_is_enabled(); + if (!prevEnabled) { rgb_matrix_enable(); } + prevRGBmode = rgb_matrix_get_mode(); + rgb_matrix_mode(RGB_MATRIX_BREATHING); + switch(direction){ + case 1: + macro1 = false; + macro1rec = true; + break; + case -1: + macro2 = false; + macro2rec = true; + break; + default: + macro1 = false; + macro2 = false; + macro1rec = false; + macro2rec = false; + break; + } + } + + void dynamic_macro_record_end_user(int8_t direction){ + prevEnabled ? rgb_matrix_mode(prevRGBmode) : rgb_matrix_disable(); + switch(direction){ + case 1: + macro1 = true; + break; + case -1: + macro2 = true; + break; + default: + macro1 = false; + macro2 = false; + break; + } + } + #endif + + bool clear_screen = false; + bool rerender_platform = false; + + static void render_logo(void) { + static const char PROGMEM logo[] = { + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, + 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, + 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00 + }; + + oled_write(logo, false); + } + + void render_keylock_status(led_t led_state) { + bool caps_state = (led_state.caps_lock || is_caps_word_on()); + oled_write(PSTR("CAPS"), caps_state); + oled_write(PSTR(" "), false); + oled_write(PSTR("NUM"), led_state.num_lock); + oled_write(PSTR(" "), false); + oled_write(PSTR("SCRL"), led_state.scroll_lock); + //oled_write_ln_P(PSTR(" "), false); + } + + void render_mod_status(uint8_t modifiers) { + oled_write(PSTR("SH"), (modifiers & MOD_MASK_SHIFT)); + oled_write(PSTR(" "), false); + (current_platform == OS_MACOS || current_platform == OS_IOS) ? oled_write(PSTR("CMD"), (modifiers & MOD_MASK_GUI)) : oled_write(PSTR("CT"), (modifiers & MOD_MASK_CTRL)); + oled_write(PSTR(" "), false); + (current_platform == OS_MACOS || current_platform == OS_IOS) ? oled_write(PSTR("OPT"), (modifiers & MOD_MASK_ALT)) : oled_write(PSTR("ALT"), (modifiers & MOD_MASK_ALT)); + oled_write(PSTR(" "), false); + (current_platform == OS_MACOS || current_platform == OS_IOS) ? oled_write(PSTR("CT"), (modifiers & MOD_MASK_CTRL)) : oled_write(PSTR("GUI"), (modifiers & MOD_MASK_GUI)); + } + + void render_key_status_or_logo(){ + led_t led_state = host_keyboard_led_state(); + uint8_t mod_state = (get_mods()|get_oneshot_mods()); + if ( !led_state.num_lock && !led_state.caps_lock && !led_state.scroll_lock + && !(mod_state & MOD_MASK_SHIFT) && !(mod_state & MOD_MASK_ALT) && !(mod_state & MOD_MASK_CTRL) && !(mod_state & MOD_MASK_GUI)) { + if(!clear_screen) { + render_logo(); + rerender_platform = true; + } + clear_screen = true; + } else { + if (clear_screen == true) { + oled_clear(); + oled_render(); + clear_screen = false; + } + oled_set_cursor(8,0); + render_keylock_status(led_state); + oled_set_cursor(8,1); + render_mod_status(mod_state); + rerender_platform = true; + } + + } + + void render_current_layer(){ + switch (get_highest_layer(layer_state)) { + case 0: + oled_write(PSTR("Layer 0"), false); + break; + case 1: + oled_write(PSTR("Layer 1"), false); + break; + case 2: + oled_write(PSTR("Layer 2"), false); + break; + case 3: + oled_write(PSTR("Layer 3"), false); + break; + default: + oled_write(PSTR("Layer ?"), false); // Should never display, here as a catchall + } + } + + void render_current_wpm(){ + oled_write_P(PSTR("WPM: "), false); + oled_write(get_u8_str(get_current_wpm(), '0'), false); + } + + void render_platform_status(int col, int line) { + /* Show Ctrl-Gui Swap options */ + static const char PROGMEM logo[][5][3] = { + {{0x9B, 0x9C, 0}, {0xbb, 0xbc, 0}}, //Android + {{0x99, 0x9A, 0}, {0xb9, 0xba, 0}}, //Linux + {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}}, //Windows + {{0x95, 0x96, 0}, {0xb5, 0xb6, 0}}, //Mac/iOS + {{0x9D, 0x9E, 0}, {0xbd, 0xbe, 0}}, //Empty Placeholder + }; + current_platform = detected_host_os(); + switch (current_platform) { + /*case OS_ANDROID: //Android + oled_set_cursor(col,line); + oled_write(logo[0][0], false); + oled_set_cursor(col,line+1); + oled_write(logo[0][1], false); + break;*/ + case OS_LINUX: //Linux + oled_set_cursor(col,line); + oled_write(logo[1][0], false); + oled_set_cursor(col,line+1); + oled_write(logo[1][1], false); + keymap_config.swap_lctl_lgui = false; + keymap_config.swap_rctl_rgui = false; + break; + case OS_WINDOWS: //Windows + oled_set_cursor(col,line); + oled_write(logo[2][0], false); + oled_set_cursor(col,line+1); + oled_write(logo[2][1], false); + keymap_config.swap_lctl_lgui = false; + keymap_config.swap_rctl_rgui = false; + break; + case OS_MACOS: //Mac + oled_set_cursor(col,line); + oled_write(logo[3][0], false); + oled_set_cursor(col,line+1); + oled_write(logo[3][1], false); + keymap_config.swap_lctl_lgui = true; + keymap_config.swap_rctl_rgui = true; + break; + case OS_IOS: //iOS + oled_set_cursor(col,line); + oled_write(logo[3][0], false); + oled_set_cursor(col,line+1); + oled_write(logo[3][1], false); + keymap_config.swap_lctl_lgui = true; + keymap_config.swap_rctl_rgui = true; + break; + default: //OS_UNSURE or not configured + oled_set_cursor(col,line); + oled_write(logo[4][0], false); + oled_set_cursor(col,line+1); + oled_write(logo[4][1], false); + break; + } + rerender_platform = false; + } + + bool oled_task_user(void) { + render_key_status_or_logo(); + oled_set_cursor(8,2); + render_current_layer(); + #ifdef DYNAMIC_MACRO_ENABLE + render_dynamic_macro_status(18,2); + #endif + oled_set_cursor(8,3); + render_current_wpm(); + #ifdef OS_DETECTION_ENABLE + if(current_platform != detected_host_os() || rerender_platform) { render_platform_status(3,0); } + #endif + + return false; + } + +#endif diff --git a/keyboards/nachie/littlewritter/keymaps/vial/readme.md b/keyboards/nachie/littlewritter/keymaps/vial/readme.md new file mode 100644 index 0000000000..a0f0ba8669 --- /dev/null +++ b/keyboards/nachie/littlewritter/keymaps/vial/readme.md @@ -0,0 +1 @@ +The vial keymap for the Little Writter PCB. \ No newline at end of file diff --git a/keyboards/nachie/littlewritter/keymaps/vial/rules.mk b/keyboards/nachie/littlewritter/keymaps/vial/rules.mk new file mode 100644 index 0000000000..9f6eb0c0b1 --- /dev/null +++ b/keyboards/nachie/littlewritter/keymaps/vial/rules.mk @@ -0,0 +1,10 @@ +VIA_ENABLE = yes +VIAL_ENABLE = yes + +VIALRGB_ENABLE = yes +ENCODER_MAP_ENABLE = yes +BOOTMAGIC_ENABLE = yes +MAGIC_ENABLE = yes +OS_DETECTION_ENABLE = yes +DYNAMIC_MACRO_ENABLE = yes +CAPS_WORD_ENABLE = yes diff --git a/keyboards/nachie/littlewritter/keymaps/vial/vial.json b/keyboards/nachie/littlewritter/keymaps/vial/vial.json new file mode 100644 index 0000000000..a4c716e148 --- /dev/null +++ b/keyboards/nachie/littlewritter/keymaps/vial/vial.json @@ -0,0 +1,433 @@ +{ + "name": "LittleWritter", + "vendorId": "0x4B43", + "productId": "0x5358", + "customKeycodes": [ + { + "name": "JmpWordL", + "title": "Jump Word Left", + "shortName": "JWRDL" + }, + { + "name": "JmpWordR", + "title": "Jump Word Right", + "shortName": "JWRDR" + }, + { + "name": "SlcWordL", + "title": "Select Word Left", + "shortName": "SWRDL" + }, + { + "name": "SlcWordR", + "title": "Select Word Right", + "shortName": "SWRDR" + }, + { + "name": "TabLft", + "title": "Tab Left", + "shortName": "TABL" + }, + { + "name": "TabRght", + "title": "Tab Right", + "shortName": "TABR" + }, + { + "name": "DsktpLft", + "title": "Desktop Left", + "shortName": "DSKTPL" + }, + { + "name": "DsktpRght", + "title": "Desktop Right", + "shortName": "DSKTPR" + }, + { + "name": "PrevApp", + "title": "Previous App", + "shortName": "PRVAPP" + }, + { + "name": "NextApp", + "title": "Next App", + "shortName": "NXTAPP" + } + ], + "matrix": { "rows": 11, "cols": 10 }, + "lighting": "vialrgb", + "layouts": { + "labels":[ + [ + "Right Shift", + "Split Shift Fn", + "Split Fn Shift", + "No Split" + ], + [ + "Bottom Row", + "3U Centered", + "6U Big Bar", + "3U/3U", + "2U/2U", + "1.75U/1.75U", + "7U Big Bar", + "3U/1U/3U", + "2.75U ALPS", + "3U/ENC/3U" + ], + "Macro Row" + ], + "keymap": [ + [ + { + "y": 2.5, + "x": 13.5 + }, + "10,5" + ], + [ + { + "x": 12.5 + }, + "10,6", + { + "x": 1 + }, + "10,7\nBreak" + ], + [ + { + "y": -0.25, + "x": 2 + }, + "8,5", + "9,5", + { + "x": 1.25 + }, + "8,6", + "9,6", + "8,7", + { + "x": 1 + }, + "9,7", + "8,8" + ], + [ + { + "y": -0.75, + "x": 13.5 + }, + "10,8" + ], + [ + { + "x": 1 + }, + "0,0\n\n\n\n\n\n\n\n\ne", + { + "x": 11 + }, + "1,0\n\n\n\n\n\n\n\n\ne" + ], + [ + { + "y": -0.5, + "x": 2 + }, + "0,0", + "1,0", + "0,1", + "1,1", + "0,2", + "1,2", + "0,3", + "1,3", + "0,4", + "1,4", + "7,4", + { + "x": 1.5 + }, + "9,8" + ], + [ + { + "y": -0.5, + "x": 1 + }, + "0,1\n\n\n\n\n\n\n\n\ne", + { + "x": 11 + }, + "1,1\n\n\n\n\n\n\n\n\ne" + ], + [ + { + "y": -0.5, + "x": 2, + "c": "#aaaaaa", + "w": 1.25 + }, + "2,0", + { + "c": "#cccccc" + }, + "3,0", + "2,1", + "3,1", + "2,2", + "3,2", + "2,3", + "3,3", + "2,4", + { + "c": "#777777", + "w": 1.75 + }, + "3,4", + { + "x": 1.5, + "c": "#cccccc" + }, + "8,9" + ], + [ + { + "x": 2, + "c": "#aaaaaa", + "w": 1.75 + }, + "4,0", + { + "c": "#cccccc" + }, + "5,0", + "4,1", + "5,1", + "4,2", + "5,2", + "4,3", + "5,3", + { + "c": "#aaaaaa", + "w": 1.25 + }, + "4,4\n\n\n0,0", + { + "c": "#cccccc" + }, + "5,4\n\n\n0,0", + { + "x": 1.5 + }, + "9,9" + ], + [ + { + "x": 2, + "c": "#aaaaaa", + "w": 1.5 + }, + "6,0\n\n\n1,0", + "7,0\n\n\n1,0", + { + "w": 1.5 + }, + "6,1\n\n\n1,0", + { + "w": 3 + }, + "7,2\n\n\n1,0", + { + "w": 1.5 + }, + "6,3\n\n\n1,0", + "7,3\n\n\n1,0", + { + "w": 1.5 + }, + "6,4\n\n\n1,0" + ], + [ + { + "x": 6.5, + "c": "#cccccc" + }, + "2,0\n\n\n\n\n\n\n\n\ne", + "2,1\n\n\n\n\n\n\n\n\ne", + { + "x": 2.25 + }, + "4,4\n\n\n0,1", + { + "c": "#aaaaaa", + "w": 1.25 + }, + "5,4\n\n\n0,1" + ], + [ + { + "x": 10.75, + "w": 2.25 + }, + "4,4\n\n\n0,2" + ], + [ + { + "y": 0.25, + "x": 2, + "w": 1.5 + }, + "6,0\n\n\n1,1", + "7,0\n\n\n1,1", + { + "w": 6 + }, + "7,2\n\n\n1,1", + "7,3\n\n\n1,1", + { + "w": 1.5 + }, + "6,4\n\n\n1,1" + ], + [ + { + "x": 2, + "w": 1.5 + }, + "6,0\n\n\n1,2", + "7,0\n\n\n1,2", + { + "w": 3 + }, + "7,1\n\n\n1,2", + { + "w": 3 + }, + "7,2\n\n\n1,2", + "7,3\n\n\n1,2", + { + "w": 1.5 + }, + "6,4\n\n\n1,2" + ], + [ + { + "x": 2, + "w": 1.5 + }, + "6,0\n\n\n1,3", + "7,0\n\n\n1,3", + "6,1\n\n\n1,3", + { + "w": 2 + }, + "7,1\n\n\n1,3", + { + "w": 2 + }, + "7,2\n\n\n1,3", + "6,3\n\n\n1,3", + "7,3\n\n\n1,3", + { + "w": 1.5 + }, + "6,4\n\n\n1,3" + ], + [ + { + "x": 2, + "w": 1.5 + }, + "6,0\n\n\n1,4", + "7,0\n\n\n1,4", + { + "w": 1.25 + }, + "6,1\n\n\n1,4", + { + "w": 1.75 + }, + "7,1\n\n\n1,4", + { + "w": 1.75 + }, + "7,2\n\n\n1,4", + { + "w": 1.25 + }, + "6,3\n\n\n1,4", + "7,3\n\n\n1,4", + { + "w": 1.5 + }, + "6,4\n\n\n1,4" + ], + [ + { + "x": 2 + }, + "6,0\n\n\n1,5", + "7,0\n\n\n1,5", + { + "w": 7 + }, + "7,2\n\n\n1,5", + "7,3\n\n\n1,5", + "6,4\n\n\n1,5" + ], + [ + { + "x": 2 + }, + "6,0\n\n\n1,6", + "7,0\n\n\n1,6", + { + "w": 3 + }, + "6,1\n\n\n1,6", + "7,2\n\n\n1,6", + { + "w": 3 + }, + "6,3\n\n\n1,6", + "7,3\n\n\n1,6", + "6,4\n\n\n1,6" + ], + [ + { + "x": 2, + "w": 1.25 + }, + "6,0\n\n\n1,7", + { + "w": 1.5 + }, + "7,0\n\n\n1,7", + { + "w": 1.25 + }, + "6,1\n\n\n1,7", + { + "w": 2.75 + }, + "7,2\n\n\n1,7", + { + "w": 1.25 + }, + "6,3\n\n\n1,7", + { + "w": 1.5 + }, + "7,3\n\n\n1,7", + { + "w": 1.5 + }, + "6,4\n\n\n1,7" + ] + ] + } +} diff --git a/keyboards/nachie/littlewritter/littlewritter.c b/keyboards/nachie/littlewritter/littlewritter.c new file mode 100755 index 0000000000..9784354c9d --- /dev/null +++ b/keyboards/nachie/littlewritter/littlewritter.c @@ -0,0 +1,89 @@ +/* +Copyright 2024 Nachie + +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 "quantum.h" + + +led_config_t g_led_config = { { + { NO_LED, 6, 5, 4, NO_LED, 3, 2, 1, 0, NO_LED }, + { NO_LED, 6, 5, 4, NO_LED, 3, 2, 1, 0, NO_LED }, + { 7, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 15 }, + { 8, 9, 10, 11, 12, NO_LED, 13, 14, NO_LED, NO_LED}, + { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED } +}, { + { 183,0 }, { 162,0 }, { 142,0 }, { 122,0 }, { 81,0 }, { 61,0 }, { 40,0 }, + { 20,16 }, { 40,48 }, + { 61,48 }, { 81,48 }, { 101,48 }, { 122,48 }, { 162,48 }, { 203,48 }, { 244,16 } +}, { + 1, 1, 1, 1, 1, 1, 1, + 1, 1, + 1, 1, 1, 1, 1, 1, 1 +} }; + +#ifdef OLED_ENABLE + +static void render_logo(void) { + static const char PROGMEM my_logo[] = { + // 'Screenshot 2023-07-21 at 1', 128x32px +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xfe, 0x00, 0x03, 0xc0, 0x00, 0xc0, 0x00, 0x3c, 0x00, 0x0f, 0x1f, 0xf8, 0xe0, 0x00, 0x1f, 0xff, +0xff, 0x80, 0x01, 0xc0, 0x00, 0x40, 0x00, 0x38, 0x00, 0x07, 0x1f, 0xf8, 0xe0, 0x00, 0x1f, 0xff, +0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0x0f, 0xff, +0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0x8f, 0xff, +0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0x0f, 0xff, +0xfe, 0x1f, 0xf1, 0xc0, 0x03, 0xff, 0x8f, 0xf8, 0xff, 0xc7, 0x1f, 0xf8, 0xe1, 0xc0, 0x1f, 0xff, +0xfe, 0x1f, 0xf1, 0xc0, 0x03, 0xff, 0x8f, 0xf8, 0xff, 0xc7, 0x1f, 0xf8, 0xe1, 0xe0, 0x3f, 0xff, +0xfe, 0x1f, 0xf1, 0xc3, 0xff, 0xff, 0x8f, 0xf8, 0xff, 0xc7, 0x1f, 0xf8, 0xe1, 0xf0, 0xff, 0xff, +0xfe, 0x1f, 0xf1, 0xc3, 0xff, 0xff, 0x8f, 0xf8, 0xff, 0xc7, 0x1f, 0xf8, 0xe1, 0xf8, 0x7f, 0xff, +0xfe, 0x1f, 0xf1, 0xc3, 0xff, 0xff, 0x8f, 0xf8, 0xff, 0xc7, 0x1f, 0xf8, 0xe1, 0xf8, 0x7f, 0xff, +0xfe, 0x00, 0x01, 0xc0, 0x00, 0x7f, 0x8f, 0xf8, 0x00, 0x07, 0x00, 0x00, 0xe1, 0xfc, 0x3f, 0xff, +0xfe, 0x00, 0x03, 0xc0, 0x00, 0xff, 0x8f, 0xfc, 0x00, 0x0f, 0x80, 0x01, 0xe1, 0xfe, 0x1f, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff +}; + oled_write_raw_P(my_logo, sizeof(my_logo)); +} + +bool oled_task_kb(void) { + // Defer to the keymap if they want to override + + if(!oled_task_user()) { + return false; + } + + // default keyboard drawing code + render_logo(); + return false; +} + +#endif \ No newline at end of file diff --git a/keyboards/nachie/littlewritter/mcuconf.h b/keyboards/nachie/littlewritter/mcuconf.h new file mode 100644 index 0000000000..ed18e34905 --- /dev/null +++ b/keyboards/nachie/littlewritter/mcuconf.h @@ -0,0 +1,3 @@ +#pragma once + +#include_next diff --git a/keyboards/nachie/littlewritter/readme.md b/keyboards/nachie/littlewritter/readme.md new file mode 100644 index 0000000000..719ba4e63b --- /dev/null +++ b/keyboards/nachie/littlewritter/readme.md @@ -0,0 +1,23 @@ +# LittleWritter + +Firmware for the LittleWritter + +* Keyboard Maintainer: [Nachie](https://github.com/nachie) +* Hardware Supported: LittleWritter +* Hardware Availability: [Little Craftery](https://littlecraftery.com/products/littlewritter) + +Make example for this keyboard (after setting up your build environment): + + make nachie/littlewritter:default + +Or to make and flash: + + make nachie/littlewritter: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 + +* **Bootmagic reset**: Hold down ESC key (top left) and plug in the keyboard +* **Physical reset button**: Briefly press the button labeled "SW_RST1" on the back of the PCB diff --git a/keyboards/nachie/littlewritter/rules.mk b/keyboards/nachie/littlewritter/rules.mk new file mode 100755 index 0000000000..2c49b41d7a --- /dev/null +++ b/keyboards/nachie/littlewritter/rules.mk @@ -0,0 +1 @@ +# This file is intentionally left blank \ No newline at end of file diff --git a/keyboards/nachie/rnd60/config.h b/keyboards/nachie/rnd60/config.h new file mode 100644 index 0000000000..2451782afd --- /dev/null +++ b/keyboards/nachie/rnd60/config.h @@ -0,0 +1,29 @@ +/* +Copyright 2024 nachie + +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 + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/* number of backlight levels */ + +#define VIA_CUSTOM_LIGHTING_ENABLE + +#define LED_CAPS_LOCK_PIN GP17 +#define LED_KANA_PIN GP26 +#define LED_PIN_ON_STATE 1 diff --git a/keyboards/nachie/rnd60/info.json b/keyboards/nachie/rnd60/info.json new file mode 100644 index 0000000000..9664025c5b --- /dev/null +++ b/keyboards/nachie/rnd60/info.json @@ -0,0 +1,155 @@ +{ + "keyboard_name": "RND60", + "manufacturer": "Nachie", + "board": "GENERIC_RP_RP2040", + "bootloader": "rp2040", + "processor": "RP2040", + "usb": { + "vid": "0x4B43", + "pid": "0x5336", + "device_version": "1.0.0" + }, + "url": "https://rndkbd.com", + "maintainer": "nachie", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "audio": false, + "backlight": false, + "rgblight": false, + "encoder": false, + "rgb_matrix": true + }, + "diode_direction": "COL2ROW", + "matrix_pins": { + "cols": ["GP21", "GP5", "GP4", "GP3", "GP2", "GP1", "GP0", "GP15", "GP14", "GP13", "GP12", "GP11", "GP10", "GP8", "GP9"], + "rows": ["GP28", "GP27", "GP20", "GP6", "GP7"] + }, + "ws2812": { + "pin": "GP29", + "driver": "vendor" + }, + "rgb_matrix": { + "driver": "ws2812", + "led_count": 16, + "animations": { + "alphas_mods": true, + "gradient_up_down": true, + "gradient_left_right": true, + "breathing": true, + "band_sat": true, + "band_val": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_up_down": true, + "rainbow_moving_chevron":true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "rainbow_pinwheels": true, + "raindrops": true, + "jellybean_raindrops": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "typing_heatmap": true, + "digital_rain": true, + "solid_reactive_simple": true, + "solid_reactive": true, + "solid_reactive_wide": true, + "solid_reactive_multiwide": true, + "solid_reactive_cross": true, + "solid_reactive_multicross": true, + "solid_reactive_nexus": true, + "solid_reactive_multinexus": true, + "splash": true, + "solid_splash": true, + "solid_multisplash": true, + "pixel_rain": true, + "pixel_fractal": true + } + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"y": 0, "x": 0, "matrix": [0, 0], "label": "0,0"}, + {"y": 0, "x": 1, "matrix": [0, 1], "label": "0,1"}, + {"y": 0, "x": 2, "matrix": [0, 2], "label": "0,2"}, + {"y": 0, "x": 3, "matrix": [0, 3], "label": "0,3"}, + {"y": 0, "x": 4, "matrix": [0, 4], "label": "0,4"}, + {"y": 0, "x": 5, "matrix": [0, 5], "label": "0,5"}, + {"y": 0, "x": 6, "matrix": [0, 6], "label": "0,6"}, + {"y": 0, "x": 7, "matrix": [0, 7], "label": "0,7"}, + {"y": 0, "x": 8, "matrix": [0, 8], "label": "0,8"}, + {"y": 0, "x": 9, "matrix": [0, 9], "label": "0,9"}, + {"y": 0, "x": 10, "matrix": [0, 10], "label": "0,10"}, + {"y": 0, "x": 11, "matrix": [0, 11], "label": "0,11"}, + {"y": 0, "x": 12, "matrix": [0, 12], "label": "0,12"}, + {"y": 0, "x": 13, "matrix": [0, 13], "label": "0,13"}, + {"y": 0, "x": 14, "matrix": [0, 14], "label": "0,14"}, + {"y": 1, "x": 0, "matrix": [1, 0], "w": 1.5, "label": "1,0"}, + {"y": 1, "x": 1.5, "matrix": [1, 1], "label": "1,1"}, + {"y": 1, "x": 2.5, "matrix": [1, 2], "label": "1,2"}, + {"y": 1, "x": 3.5, "matrix": [1, 3], "label": "1,3"}, + {"y": 1, "x": 4.5, "matrix": [1, 4], "label": "1,4"}, + {"y": 1, "x": 5.5, "matrix": [1, 5], "label": "1,5"}, + {"y": 1, "x": 6.5, "matrix": [1, 6], "label": "1,6"}, + {"y": 1, "x": 7.5, "matrix": [1, 7], "label": "1,7"}, + {"y": 1, "x": 8.5, "matrix": [1, 8], "label": "1,8"}, + {"y": 1, "x": 9.5, "matrix": [1, 9], "label": "1,9"}, + {"y": 1, "x": 10.5, "matrix": [1, 10], "label": "1,10"}, + {"y": 1, "x": 11.5, "matrix": [1, 11], "label": "1,11"}, + {"y": 1, "x": 12.5, "matrix": [1, 12], "label": "1,12"}, + {"y": 1, "x": 13.5, "matrix": [1, 14], "w": 1.5, "label": "1,14"}, + {"y": 2, "x": 0, "matrix": [2, 0], "w": 1.75, "label": "2,0"}, + {"y": 2, "x": 1.75, "matrix": [2, 1], "label": "2,1"}, + {"y": 2, "x": 2.75, "matrix": [2, 2], "label": "2,2"}, + {"y": 2, "x": 3.75, "matrix": [2, 3], "label": "2,3"}, + {"y": 2, "x": 4.75, "matrix": [2, 4], "label": "2,4"}, + {"y": 2, "x": 5.75, "matrix": [2, 5], "label": "2,5"}, + {"y": 2, "x": 6.75, "matrix": [2, 6], "label": "2,6"}, + {"y": 2, "x": 7.75, "matrix": [2, 7], "label": "2,7"}, + {"y": 2, "x": 8.75, "matrix": [2, 8], "label": "2,8"}, + {"y": 2, "x": 9.75, "matrix": [2, 9], "label": "2,9"}, + {"y": 2, "x": 10.75, "matrix": [2, 10], "label": "2,10"}, + {"y": 2, "x": 11.75, "matrix": [2, 11], "label": "2,11"}, + {"y": 2, "x": 12.75, "matrix": [2, 12], "label": "2,12"}, + {"y": 2, "x": 12.75, "matrix": [2, 13], "w": 2.25, "label": "2,13"}, + {"y": 3, "x": 0, "matrix": [3, 0], "w": 1.25, "label": "3,0"}, + {"y": 3, "x": 1.25, "matrix": [3, 1], "label": "3,1"}, + {"y": 3, "x": 2.25, "matrix": [3, 2], "label": "3,2"}, + {"y": 3, "x": 3.25, "matrix": [3, 3], "label": "3,3"}, + {"y": 3, "x": 4.25, "matrix": [3, 4], "label": "3,4"}, + {"y": 3, "x": 5.25, "matrix": [3, 5], "label": "3,5"}, + {"y": 3, "x": 6.25, "matrix": [3, 6], "label": "3,6"}, + {"y": 3, "x": 7.25, "matrix": [3, 7], "label": "3,7"}, + {"y": 3, "x": 8.25, "matrix": [3, 8], "label": "3,8"}, + {"y": 3, "x": 9.25, "matrix": [3, 9], "label": "3,9"}, + {"y": 3, "x": 10.25, "matrix": [3, 10], "label": "3,10"}, + {"y": 3, "x": 11.25, "matrix": [3, 11], "label": "3,11"}, + {"y": 3, "x": 12.25, "matrix": [3, 12], "w": 1.75, "label": "3,12"}, + {"y": 3, "x": 14, "matrix": [3, 14], "label": "3,14"}, + {"y": 4, "x": 0, "matrix": [4, 0], "w": 1.25, "label": "4,0"}, + {"y": 4, "x": 1.25, "matrix": [4, 1], "w": 1.25, "label": "4,1"}, + {"y": 4, "x": 2.5, "matrix": [4, 2], "w": 1.25, "label": "4,2"}, + {"y": 4, "x": 4, "matrix": [4, 4], "label": "4,4"}, + {"y": 4, "x": 5, "matrix": [4, 5], "w": 2.25, "label": "4,5"}, + {"y": 4, "x": 7, "matrix": [4, 7], "label": "4,7"}, + {"y": 4, "x": 8, "matrix": [4, 9], "w": 3, "label": "4,9"}, + {"y": 4, "x": 10, "matrix": [4, 10], "w": 1.25, "label": "4,10"}, + {"y": 4, "x": 11.25, "matrix": [4, 11], "w": 1.25, "label": "4,11"}, + {"y": 4, "x": 12.5, "matrix": [4, 12], "w": 1.25, "label": "4,12"}, + {"y": 4, "x": 13.75, "matrix": [4, 14], "w": 1.25, "label": "4,14"} + ] + } + } + } diff --git a/keyboards/nachie/rnd60/keyboard.json b/keyboards/nachie/rnd60/keyboard.json new file mode 100644 index 0000000000..6e63a2d125 --- /dev/null +++ b/keyboards/nachie/rnd60/keyboard.json @@ -0,0 +1,155 @@ +{ + "keyboard_name": "RND60", + "manufacturer": "Nachie", + "board": "GENERIC_RP_RP2040", + "bootloader": "rp2040", + "processor": "RP2040", + "usb": { + "vid": "0x4B43", + "pid": "0x5336", + "device_version": "1.0.0" + }, + "url": "https://rndkbd.com", + "maintainer": "nachie", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "audio": false, + "backlight": false, + "rgblight": false, + "encoder": false, + "rgb_matrix": true + }, + "diode_direction": "COL2ROW", + "matrix_pins": { + "cols": ["GP21", "GP5", "GP4", "GP3", "GP2", "GP1", "GP0", "GP15", "GP14", "GP13", "GP12", "GP11", "GP10", "GP8", "GP9"], + "rows": ["GP28", "GP27", "GP20", "GP6", "GP7"] + }, + "ws2812": { + "pin": "GP29", + "driver": "vendor" + }, + "rgb_matrix": { + "driver": "ws2812", + "led_count": 16, + "animations": { + "alphas_mods": true, + "gradient_up_down": true, + "gradient_left_right": true, + "breathing": true, + "band_sat": true, + "band_val": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_up_down": true, + "rainbow_moving_chevron":true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "rainbow_pinwheels": true, + "raindrops": true, + "jellybean_raindrops": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "typing_heatmap": true, + "digital_rain": true, + "solid_reactive_simple": true, + "solid_reactive": true, + "solid_reactive_wide": true, + "solid_reactive_multiwide": true, + "solid_reactive_cross": true, + "solid_reactive_multicross": true, + "solid_reactive_nexus": true, + "solid_reactive_multinexus": true, + "splash": true, + "solid_splash": true, + "solid_multisplash": true, + "pixel_rain": true, + "pixel_fractal": true + } + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"y": 0, "x": 0, "matrix": [0, 0], "label": "0,0"}, + {"y": 0, "x": 1, "matrix": [0, 1], "label": "0,1"}, + {"y": 0, "x": 2, "matrix": [0, 2], "label": "0,2"}, + {"y": 0, "x": 3, "matrix": [0, 3], "label": "0,3"}, + {"y": 0, "x": 4, "matrix": [0, 4], "label": "0,4"}, + {"y": 0, "x": 5, "matrix": [0, 5], "label": "0,5"}, + {"y": 0, "x": 6, "matrix": [0, 6], "label": "0,6"}, + {"y": 0, "x": 7, "matrix": [0, 7], "label": "0,7"}, + {"y": 0, "x": 8, "matrix": [0, 8], "label": "0,8"}, + {"y": 0, "x": 9, "matrix": [0, 9], "label": "0,9"}, + {"y": 0, "x": 10, "matrix": [0, 10], "label": "0,10"}, + {"y": 0, "x": 11, "matrix": [0, 11], "label": "0,11"}, + {"y": 0, "x": 12, "matrix": [0, 12], "label": "0,12"}, + {"y": 0, "x": 13, "matrix": [0, 13], "label": "0,13"}, + {"y": 0, "x": 14, "matrix": [0, 14], "label": "0,14"}, + {"y": 1, "x": 0, "matrix": [1, 0], "w": 1.5, "label": "1,0"}, + {"y": 1, "x": 1.5, "matrix": [1, 1], "label": "1,1"}, + {"y": 1, "x": 2.5, "matrix": [1, 2], "label": "1,2"}, + {"y": 1, "x": 3.5, "matrix": [1, 3], "label": "1,3"}, + {"y": 1, "x": 4.5, "matrix": [1, 4], "label": "1,4"}, + {"y": 1, "x": 5.5, "matrix": [1, 5], "label": "1,5"}, + {"y": 1, "x": 6.5, "matrix": [1, 6], "label": "1,6"}, + {"y": 1, "x": 7.5, "matrix": [1, 7], "label": "1,7"}, + {"y": 1, "x": 8.5, "matrix": [1, 8], "label": "1,8"}, + {"y": 1, "x": 9.5, "matrix": [1, 9], "label": "1,9"}, + {"y": 1, "x": 10.5, "matrix": [1, 10], "label": "1,10"}, + {"y": 1, "x": 11.5, "matrix": [1, 11], "label": "1,11"}, + {"y": 1, "x": 12.5, "matrix": [1, 12], "label": "1,12"}, + {"y": 1, "x": 13.5, "matrix": [1, 14], "w": 1.5, "label": "1,14"}, + {"y": 2, "x": 0, "matrix": [2, 0], "w": 1.75, "label": "2,0"}, + {"y": 2, "x": 1.75, "matrix": [2, 1], "label": "2,1"}, + {"y": 2, "x": 2.75, "matrix": [2, 2], "label": "2,2"}, + {"y": 2, "x": 3.75, "matrix": [2, 3], "label": "2,3"}, + {"y": 2, "x": 4.75, "matrix": [2, 4], "label": "2,4"}, + {"y": 2, "x": 5.75, "matrix": [2, 5], "label": "2,5"}, + {"y": 2, "x": 6.75, "matrix": [2, 6], "label": "2,6"}, + {"y": 2, "x": 7.75, "matrix": [2, 7], "label": "2,7"}, + {"y": 2, "x": 8.75, "matrix": [2, 8], "label": "2,8"}, + {"y": 2, "x": 9.75, "matrix": [2, 9], "label": "2,9"}, + {"y": 2, "x": 10.75, "matrix": [2, 10], "label": "2,10"}, + {"y": 2, "x": 11.75, "matrix": [2, 11], "label": "2,11"}, + {"y": 2, "x": 12.75, "matrix": [2, 12], "label": "2,12"}, + {"y": 2, "x": 12.75, "matrix": [2, 13], "w": 2.25, "label": "2,13"}, + {"y": 3, "x": 0, "matrix": [3, 0], "w": 1.25, "label": "3,0"}, + {"y": 3, "x": 1.25, "matrix": [3, 1], "label": "3,1"}, + {"y": 3, "x": 2.25, "matrix": [3, 2], "label": "3,2"}, + {"y": 3, "x": 3.25, "matrix": [3, 3], "label": "3,3"}, + {"y": 3, "x": 4.25, "matrix": [3, 4], "label": "3,4"}, + {"y": 3, "x": 5.25, "matrix": [3, 5], "label": "3,5"}, + {"y": 3, "x": 6.25, "matrix": [3, 6], "label": "3,6"}, + {"y": 3, "x": 7.25, "matrix": [3, 7], "label": "3,7"}, + {"y": 3, "x": 8.25, "matrix": [3, 8], "label": "3,8"}, + {"y": 3, "x": 9.25, "matrix": [3, 9], "label": "3,9"}, + {"y": 3, "x": 10.25, "matrix": [3, 10], "label": "3,10"}, + {"y": 3, "x": 11.25, "matrix": [3, 11], "label": "3,11"}, + {"y": 3, "x": 12.25, "matrix": [3, 12], "w": 1.75, "label": "3,12"}, + {"y": 3, "x": 14, "matrix": [3, 14], "label": "3,14"}, + {"y": 4, "x": 0, "matrix": [4, 0], "w": 1.25, "label": "4,0"}, + {"y": 4, "x": 1.25, "matrix": [4, 1], "w": 1.25, "label": "4,1"}, + {"y": 4, "x": 2.5, "matrix": [4, 2], "w": 1.25, "label": "4,2"}, + {"y": 4, "x": 4, "matrix": [4, 4], "label": "4,4"}, + {"y": 4, "x": 5, "matrix": [4, 5], "w": 2.25, "label": "4,5"}, + {"y": 4, "x": 7, "matrix": [4, 7], "label": "4,7"}, + {"y": 4, "x": 8, "matrix": [4, 9], "w": 3, "label": "4,9"}, + {"y": 4, "x": 10, "matrix": [4, 10], "w": 1.25, "label": "4,10"}, + {"y": 4, "x": 11.25, "matrix": [4, 11], "w": 1.25, "label": "4,11"}, + {"y": 4, "x": 12.5, "matrix": [4, 12], "w": 1.25, "label": "4,12"}, + {"y": 4, "x": 13.75, "matrix": [4, 14], "w": 1.25, "label": "4,14"} + ] + } + } +} diff --git a/keyboards/nachie/rnd60/keymaps/default/keymap.c b/keyboards/nachie/rnd60/keymaps/default/keymap.c new file mode 100644 index 0000000000..45eac72322 --- /dev/null +++ b/keyboards/nachie/rnd60/keymaps/default/keymap.c @@ -0,0 +1,54 @@ +/* +Copyright 2024 nachie + +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( + 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_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUBS, KC_ENT, + KC_LSFT, KC_NUHS, 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_VOLD, KC_SPC, KC_MPLY, KC_SPC, KC_VOLU, KC_RALT, KC_LGUI, KC_LCTL + ), + + [1] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/nachie/rnd60/keymaps/vial/config.h b/keyboards/nachie/rnd60/keymaps/vial/config.h new file mode 100644 index 0000000000..181ca38486 --- /dev/null +++ b/keyboards/nachie/rnd60/keymaps/vial/config.h @@ -0,0 +1,9 @@ +#pragma once + +#define VIAL_KEYBOARD_UID {0xEB, 0x02, 0x48, 0xB5, 0x37, 0x0B, 0x55, 0x7B} + +#define VIAL_UNLOCK_COMBO_ROWS { 0, 2 } +#define VIAL_UNLOCK_COMBO_COLS { 0, 13 } + +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS +#define RGB_MATRIX_KEYPRESSES \ No newline at end of file diff --git a/keyboards/nachie/rnd60/keymaps/vial/keymap.c b/keyboards/nachie/rnd60/keymaps/vial/keymap.c new file mode 100644 index 0000000000..c9feda29ac --- /dev/null +++ b/keyboards/nachie/rnd60/keymaps/vial/keymap.c @@ -0,0 +1,54 @@ +/* +Copyright 2024 nachie + +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( + 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_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUBS, KC_ENT, + KC_LSFT, KC_NUHS, 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_SPC, KC_SPC, KC_SPC, KC_RALT, KC_LGUI, KC_APP, KC_LCTL + ), + + [1] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/nachie/rnd60/keymaps/vial/rules.mk b/keyboards/nachie/rnd60/keymaps/vial/rules.mk new file mode 100644 index 0000000000..d013bc62da --- /dev/null +++ b/keyboards/nachie/rnd60/keymaps/vial/rules.mk @@ -0,0 +1,3 @@ +VIA_ENABLE = yes +VIAL_ENABLE = yes +VIALRGB_ENABLE = yes diff --git a/keyboards/nachie/rnd60/keymaps/vial/vial.json b/keyboards/nachie/rnd60/keymaps/vial/vial.json new file mode 100644 index 0000000000..7fa02bd148 --- /dev/null +++ b/keyboards/nachie/rnd60/keymaps/vial/vial.json @@ -0,0 +1,346 @@ +{ + "name": "RND60", + "vendorId": "0x4B43", + "productId": "0x5345", + "lighting": "vialrgb", + "matrix": { + "rows": 5, + "cols": 15 + }, + "layouts": { + "labels": [ + "Split Backspace", + ["Enter", "ANSI", "ISO"], + "Split Left Shift", + "Split Right Shift", + ["Space", "6.25u", "3-1-3 Split", "Small Split", "10u", "7u"] + ], + "keymap": [ + [ + { + "x": 2.5, + "c": "#777777" + }, + "0,0", + { + "c": "#cccccc" + }, + "0,1", + "0,2", + "0,3", + "0,4", + "0,5", + "0,6", + "0,7", + "0,8", + "0,9", + "0,10", + "0,11", + "0,12", + { + "c": "#aaaaaa", + "w": 2 + }, + "0,14\n\n\n0,0", + { + "x": 1 + }, + "0,13\n\n\n0,1", + "0,14\n\n\n0,1" + ], + [ + { + "x": 2.5, + "w": 1.5 + }, + "1,0", + { + "c": "#cccccc" + }, + "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": 1.5 + }, + "1,14\n\n\n1,0", + { + "x": 1.75, + "c": "#777777", + "w": 1.25, + "h": 2, + "w2": 1.5, + "h2": 1, + "x2": -0.25 + }, + "2,13\n\n\n1,1" + ], + [ + { + "x": 2.5, + "c": "#aaaaaa", + "w": 1.75 + }, + "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", + { + "c": "#777777", + "w": 2.25 + }, + "2,13\n\n\n1,0", + { + "x": 0.75, + "c": "#cccccc" + }, + "2,12\n\n\n1,1" + ], + [ + { + "c": "#aaaaaa", + "w": 1.25 + }, + "3,0\n\n\n2,1", + "3,1\n\n\n2,1", + { + "x": 0.25, + "w": 2.25 + }, + "3,0\n\n\n2,0", + { + "c": "#cccccc" + }, + "3,2", + "3,3", + "3,4", + "3,5", + "3,6", + "3,7", + "3,8", + "3,9", + "3,10", + "3,11", + { + "c": "#aaaaaa", + "w": 2.75 + }, + "3,12\n\n\n3,0", + { + "x": 0.25, + "w": 1.75 + }, + "3,12\n\n\n3,1", + "3,14\n\n\n3,1" + ], + [ + { + "x": 2.5, + "w": 1.25 + }, + "4,0\n\n\n4,0", + { + "x": -1.25, + "w": 1.5 + }, + "4,0\n\n\n4,4", + { + "x": -1.5, + "w": 1.5 + }, + "4,0\n\n\n4,1", + { + "x": -1.5, + "w": 1.5 + }, + "4,0\n\n\n4,2", + { + "x": -1.5, + "w": 1.5 + }, + "4,0\n\n\n4,3", + { + "x": -0.25, + "w": 1.25 + }, + "4,1\n\n\n4,0", + { + "x": -1 + }, + "4,1\n\n\n4,4", + { + "x": -1 + }, + "4,1\n\n\n4,1", + { + "x": -1 + }, + "4,1\n\n\n4,2", + { + "x": -1 + }, + "4,1\n\n\n4,3", + { + "w": 1.25 + }, + "4,2\n\n\n4,0", + { + "x": -1.25, + "w": 1.5 + }, + "4,2\n\n\n4,4", + { + "x": -1.5, + "w": 1.5 + }, + "4,2\n\n\n4,1", + { + "x": -1.5, + "w": 1.5 + }, + "4,2\n\n\n4,2", + { + "x": -1.5, + "c": "#cccccc", + "w": 10 + }, + "4,7\n\n\n4,3", + { + "x": -8.75, + "w": 6.25 + }, + "4,7\n\n\n4,0", + { + "x": -6, + "w": 7 + }, + "4,7\n\n\n4,4", + { + "x": -7, + "w": 3 + }, + "4,5\n\n\n4,1", + { + "x": -3, + "c": "#aaaaaa" + }, + "4,4\n\n\n4,2", + { + "c": "#cccccc", + "w": 2.25 + }, + "4,5\n\n\n4,2", + { + "x": -0.25, + "c": "#aaaaaa" + }, + "4,7\n\n\n4,1", + { + "x": -0.75, + "c": "#cccccc", + "w": 2.75 + }, + "4,9\n\n\n4,2", + { + "x": -2, + "w": 3 + }, + "4,9\n\n\n4,1", + { + "x": -1, + "c": "#aaaaaa", + "w": 1.25 + }, + "4,10\n\n\n4,0", + { + "x": -1.25 + }, + "4,10\n\n\n4,2", + { + "w": 1.5 + }, + "4,11\n\n\n4,4", + { + "x": -1.5, + "w": 1.5 + }, + "4,11\n\n\n4,1", + { + "x": -1.5, + "w": 1.5 + }, + "4,11\n\n\n4,2", + { + "x": -1.25, + "w": 1.25 + }, + "4,11\n\n\n4,0", + { + "w": 1.25 + }, + "4,12\n\n\n4,0", + { + "x": -1.25 + }, + "4,12\n\n\n4,4", + { + "x": -1 + }, + "4,12\n\n\n4,1", + { + "x": -1 + }, + "4,12\n\n\n4,2", + { + "x": -1 + }, + "4,12\n\n\n4,3", + { + "w": 1.5 + }, + "4,14\n\n\n4,4", + { + "x": -1.5, + "w": 1.5 + }, + "4,14\n\n\n4,1", + { + "x": -1.5, + "w": 1.5 + }, + "4,14\n\n\n4,2", + { + "x": -1.5, + "w": 1.5 + }, + "4,14\n\n\n4,3", + { + "x": -1.25, + "w": 1.25 + }, + "4,14\n\n\n4,0" + ] + ] + } +} \ No newline at end of file diff --git a/keyboards/nachie/rnd60/rnd60.c b/keyboards/nachie/rnd60/rnd60.c new file mode 100644 index 0000000000..3d117420fc --- /dev/null +++ b/keyboards/nachie/rnd60/rnd60.c @@ -0,0 +1,38 @@ +/* +Copyright 2024 nachie + +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 "quantum.h" + +led_config_t g_led_config = { { + { NO_LED, 0, NO_LED, 1, NO_LED, 2, NO_LED, NO_LED, 3, NO_LED, 4, NO_LED, 5, NO_LED, NO_LED }, + { 6, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 7 }, + { 8, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED }, + { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 9 }, + { NO_LED, NO_LED, 10, NO_LED, 11, 12, NO_LED, NO_LED, 13, 14, NO_LED, 15, NO_LED, NO_LED, NO_LED } +}, { + { 16,0 }, { 49,0 }, { 81,0 }, { 130,0 }, { 163,0 }, { 195,0 }, + { 4,16 }, { 224,16 }, + { 6,32 }, + { 224,48 }, + { 16,64 }, { 51,64 }, { 79,64 }, { 120,64 }, { 153,64 }, { 204,64 } +}, { + 1, 1, 1, 1, 1, 1, + 1, 1, + 1, + 1, + 1, 1, 1, 1, 1, 1 +} }; \ No newline at end of file diff --git a/keyboards/nachie/rnd60/rules.mk b/keyboards/nachie/rnd60/rules.mk new file mode 100644 index 0000000000..837f4bffb5 --- /dev/null +++ b/keyboards/nachie/rnd60/rules.mk @@ -0,0 +1 @@ +# This file is intentionally left blank diff --git a/keyboards/nachie/subtext/chconf.h b/keyboards/nachie/subtext/chconf.h new file mode 100644 index 0000000000..f58ef8c02a --- /dev/null +++ b/keyboards/nachie/subtext/chconf.h @@ -0,0 +1,26 @@ +/* +Copyright 2024 Nachie + +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 CH_CFG_ST_FREQUENCY 10000 + +#define CH_CFG_OPTIMIZE_SPEED FALSE + +#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE + +#include_next diff --git a/keyboards/nachie/subtext/config.h b/keyboards/nachie/subtext/config.h new file mode 100644 index 0000000000..579b7833ba --- /dev/null +++ b/keyboards/nachie/subtext/config.h @@ -0,0 +1,46 @@ +/* +Copyright 2024 nachie + +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 + +#ifdef OLED_ENABLE +/* Oled config */ +#define OLED_DISPLAY_ADDRESS 0x3C +#define I2C1_SCL_PIN B6 +#define I2C1_SDA_PIN B7 +#define I2C1_SCL_PAL_MODE 1 +#define I2C1_SDA_PAL_MODE 1 + +#define OLED_TIMEOUT 60000 // Turns off the OLED screen after x ms of keyboard inactivity. Helps reduce OLED Burn-in. Set to 0 to disable. +#define OLED_BRIGHTNESS 50 // The default brightness level of the OLED, from 0 to 255. +#define OLED_UPDATE_INTERVAL 16 // limits in milliseconds how frequently the OLED updates. Calculation 1000/fps (increases keyboard responsiveness) + +#endif + +/* I2c Timings at 48mhz - Fast mode 400KHz */ +// #define I2C1_TIMINGR_PRESC 2U +// #define I2C1_TIMINGR_SCLDEL 1U +// #define I2C1_TIMINGR_SDADEL 0U +// #define I2C1_TIMINGR_SCLH 9U +// #define I2C1_TIMINGR_SCLL 26U + +/* I2c Timings at 48mhz - Fast mode plus 1MHz */ +#define I2C1_TIMINGR_PRESC 0x00U +#define I2C1_TIMINGR_SCLDEL 0x03U +#define I2C1_TIMINGR_SDADEL 0x01U +#define I2C1_TIMINGR_SCLH 0x03U +#define I2C1_TIMINGR_SCLL 0x09U diff --git a/keyboards/nachie/subtext/halconf.h b/keyboards/nachie/subtext/halconf.h new file mode 100644 index 0000000000..b80587a2f9 --- /dev/null +++ b/keyboards/nachie/subtext/halconf.h @@ -0,0 +1,22 @@ +/* +Copyright 2024 nachie + +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 HAL_USE_I2C TRUE + +#include_next diff --git a/keyboards/nachie/subtext/info.json b/keyboards/nachie/subtext/info.json new file mode 100644 index 0000000000..1ad2beadaf --- /dev/null +++ b/keyboards/nachie/subtext/info.json @@ -0,0 +1,83 @@ +{ + "keyboard_name": "Subtext", + "manufacturer": "Nachie", + "usb": { + "vid": "0x4B43", + "pid": "0x5354", + "device_version": "1.0.0" + }, + "url": "https://littlecraftery.com/products/subtext", + "maintainer": "nachie", + "bootloader": "stm32-dfu", + "processor": "STM32F072", + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "h": 0.75, "label": "0,0", "w": 1.0357, "y": 0.0, "x": 0}, + {"matrix": [1, 0], "h": 0.75, "label": "1,0", "w": 1.0357, "y": 0.0, "x": 1.03}, + {"matrix": [0, 1], "h": 0.75, "label": "0,1", "w": 1.0357, "y": 0.0, "x": 2.0700000000000003}, + {"matrix": [1, 1], "h": 0.75, "label": "1,1", "w": 1.0357, "y": 0.0, "x": 3.1}, + {"matrix": [0, 3], "h": 0.75, "label": "0,3", "w": 1.0357, "y": 0.0, "x": 6.46}, + {"matrix": [1, 3], "h": 0.75, "label": "1,3", "w": 1.0357, "y": 0.0, "x": 7.5}, + {"matrix": [0, 4], "h": 0.75, "label": "0,4", "w": 1.0357, "y": 0.0, "x": 8.530000000000001}, + {"matrix": [1, 4], "h": 0.75, "label": "1,4", "w": 1.0357, "y": 0.0, "x": 9.57}, + {"matrix": [2, 0], "h": 0.75, "label": "2,0", "w": 1.0357, "y": 1.0, "x": 0}, + {"matrix": [3, 0], "h": 0.75, "label": "3,0", "w": 1.0357, "y": 1.0, "x": 1.03}, + {"matrix": [2, 1], "h": 0.75, "label": "2,1", "w": 1.0357, "y": 1.0, "x": 2.0700000000000003}, + {"matrix": [3, 1], "h": 0.75, "label": "3,1", "w": 1.0357, "y": 1.0, "x": 3.1}, + {"matrix": [2, 2], "h": 0.75, "label": "2,2", "w": 1.0357, "y": 1.0, "x": 4.140000000000001}, + {"matrix": [3, 2], "h": 0.75, "label": "3,2", "w": 1.0357, "y": 1.0, "x": 5.180000000000001}, + {"matrix": [2, 3], "h": 0.75, "label": "2,3", "w": 1.0357, "y": 1.0, "x": 6.21}, + {"matrix": [3, 3], "h": 0.75, "label": "3,3", "w": 1.0357, "y": 1.0, "x": 7.250000000000001}, + {"matrix": [2, 4], "h": 0.75, "label": "2,4", "w": 1.0357, "y": 1.0, "x": 8.280000000000001}, + {"matrix": [3, 4], "h": 0.75, "label": "3,4", "w": 1.0357, "y": 1.0, "x": 9.32}, + {"matrix": [4, 0], "h": 0.75, "label": "4,0", "w": 1.0357, "y": 1.75, "x": 0.25}, + {"matrix": [5, 0], "h": 0.75, "label": "5,0", "w": 1.0357, "y": 1.75, "x": 1.28}, + {"matrix": [4, 1], "h": 0.75, "label": "4,1", "w": 1.0357, "y": 1.75, "x": 2.3200000000000003}, + {"matrix": [5, 1], "h": 0.75, "label": "5,1", "w": 1.0357, "y": 1.75, "x": 3.35}, + {"matrix": [4, 2], "h": 0.75, "label": "4,2", "w": 1.0357, "y": 1.75, "x": 4.390000000000001}, + {"matrix": [5, 2], "h": 0.75, "label": "5,2", "w": 1.0357, "y": 1.75, "x": 5.430000000000001}, + {"matrix": [4, 3], "h": 0.75, "label": "4,3", "w": 1.0357, "y": 1.75, "x": 6.46}, + {"matrix": [5, 3], "h": 0.75, "label": "5,3", "w": 1.0357, "y": 1.75, "x": 7.500000000000001}, + {"matrix": [4, 4], "h": 0.75, "label": "4,4", "w": 1.0357, "y": 1.75, "x": 8.530000000000001}, + {"matrix": [5, 4], "h": 0.75, "label": "5,4", "w": 1.0357, "y": 1.75, "x": 9.57}, + {"matrix": [7, 0], "h": 0.75, "label": "7,0", "w": 1.0357, "y": 2.5, "x": 0.5}, + {"matrix": [6, 1], "h": 0.75, "label": "6,1", "w": 1.0357, "y": 2.5, "x": 1.53}, + {"matrix": [7, 1], "h": 0.75, "label": "7,1", "w": 1.0357, "y": 2.5, "x": 2.5700000000000003}, + {"matrix": [6, 2], "h": 0.75, "label": "6,2", "w": 1.0357, "y": 2.5, "x": 3.6}, + {"matrix": [7, 2], "h": 0.75, "label": "7,2", "w": 1.0357, "y": 2.5, "x": 4.640000000000001}, + {"matrix": [6, 3], "h": 0.75, "label": "6,3", "w": 1.0357, "y": 2.5, "x": 5.680000000000001}, + {"matrix": [7, 3], "h": 0.75, "label": "7,3", "w": 1.0357, "y": 2.5, "x": 6.71}, + {"matrix": [6, 4], "h": 0.75, "label": "6,4", "w": 1.0357, "y": 2.5, "x": 7.750000000000001}, + {"matrix": [7, 4], "h": 0.75, "label": "7,4", "w": 1.0357, "y": 2.5, "x": 8.780000000000001}, + {"matrix": [8, 0], "h": 0.75, "label": "8,0", "w": 1.0357, "y": 3.25, "x": 1.25}, + {"matrix": [9, 0], "h": 0.75, "label": "9,0", "w": 1.0357, "y": 3.25, "x": 2.2800000000000002}, + {"matrix": [8, 1], "h": 0.75, "label": "8,1", "w": 1.0357, "y": 3.25, "x": 3.3200000000000003}, + {"matrix": [9, 1], "h": 0.75, "label": "9,1", "w": 1.0357, "y": 3.25, "x": 4.3500000000000005}, + {"matrix": [8, 2], "h": 0.75, "label": "8,2", "w": 1.0357, "y": 3.25, "x": 5.390000000000001}, + {"matrix": [9, 2], "h": 0.75, "label": "9,2", "w": 1.0357, "y": 3.25, "x": 6.430000000000001}, + {"matrix": [8, 3], "h": 0.75, "label": "8,3", "w": 1.0357, "y": 3.25, "x": 7.46}, + {"matrix": [9, 3], "h": 0.75, "label": "9,3", "w": 1.0357, "y": 3.25, "x": 8.5} + ] + } + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": false, + "audio": false, + "backlight": false, + "rgblight": false, + "encoder": false, + "oled": true, + "wpm": true + }, + "diode_direction": "COL2ROW", + "matrix_pins": { + "cols": ["A3", "A9", "A8", "B12", "B14"], + "rows": ["A2", "A4", "C13", "B5", "B9", "B3", "B4", "B8", "A15", "A10"] + } +} diff --git a/keyboards/nachie/subtext/keyboard.json b/keyboards/nachie/subtext/keyboard.json new file mode 100644 index 0000000000..2d16dd50b4 --- /dev/null +++ b/keyboards/nachie/subtext/keyboard.json @@ -0,0 +1,83 @@ +{ + "keyboard_name": "Subtext", + "manufacturer": "Nachie", + "usb": { + "vid": "0x4B43", + "pid": "0x5354", + "device_version": "1.0.0" + }, + "url": "https://littlecraftery.com/products/subtext", + "maintainer": "nachie", + "bootloader": "stm32-dfu", + "processor": "STM32F072", + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "h": 0.75, "label": "0,0", "w": 1.0357, "y": 0.0, "x": 0}, + {"matrix": [1, 0], "h": 0.75, "label": "1,0", "w": 1.0357, "y": 0.0, "x": 1.03}, + {"matrix": [0, 1], "h": 0.75, "label": "0,1", "w": 1.0357, "y": 0.0, "x": 2.0700000000000003}, + {"matrix": [1, 1], "h": 0.75, "label": "1,1", "w": 1.0357, "y": 0.0, "x": 3.1}, + {"matrix": [0, 3], "h": 0.75, "label": "0,3", "w": 1.0357, "y": 0.0, "x": 6.46}, + {"matrix": [1, 3], "h": 0.75, "label": "1,3", "w": 1.0357, "y": 0.0, "x": 7.5}, + {"matrix": [0, 4], "h": 0.75, "label": "0,4", "w": 1.0357, "y": 0.0, "x": 8.530000000000001}, + {"matrix": [1, 4], "h": 0.75, "label": "1,4", "w": 1.0357, "y": 0.0, "x": 9.57}, + {"matrix": [2, 0], "h": 0.75, "label": "2,0", "w": 1.0357, "y": 1.0, "x": 0}, + {"matrix": [3, 0], "h": 0.75, "label": "3,0", "w": 1.0357, "y": 1.0, "x": 1.03}, + {"matrix": [2, 1], "h": 0.75, "label": "2,1", "w": 1.0357, "y": 1.0, "x": 2.0700000000000003}, + {"matrix": [3, 1], "h": 0.75, "label": "3,1", "w": 1.0357, "y": 1.0, "x": 3.1}, + {"matrix": [2, 2], "h": 0.75, "label": "2,2", "w": 1.0357, "y": 1.0, "x": 4.140000000000001}, + {"matrix": [3, 2], "h": 0.75, "label": "3,2", "w": 1.0357, "y": 1.0, "x": 5.180000000000001}, + {"matrix": [2, 3], "h": 0.75, "label": "2,3", "w": 1.0357, "y": 1.0, "x": 6.21}, + {"matrix": [3, 3], "h": 0.75, "label": "3,3", "w": 1.0357, "y": 1.0, "x": 7.250000000000001}, + {"matrix": [2, 4], "h": 0.75, "label": "2,4", "w": 1.0357, "y": 1.0, "x": 8.280000000000001}, + {"matrix": [3, 4], "h": 0.75, "label": "3,4", "w": 1.0357, "y": 1.0, "x": 9.32}, + {"matrix": [4, 0], "h": 0.75, "label": "4,0", "w": 1.0357, "y": 1.75, "x": 0.25}, + {"matrix": [5, 0], "h": 0.75, "label": "5,0", "w": 1.0357, "y": 1.75, "x": 1.28}, + {"matrix": [4, 1], "h": 0.75, "label": "4,1", "w": 1.0357, "y": 1.75, "x": 2.3200000000000003}, + {"matrix": [5, 1], "h": 0.75, "label": "5,1", "w": 1.0357, "y": 1.75, "x": 3.35}, + {"matrix": [4, 2], "h": 0.75, "label": "4,2", "w": 1.0357, "y": 1.75, "x": 4.390000000000001}, + {"matrix": [5, 2], "h": 0.75, "label": "5,2", "w": 1.0357, "y": 1.75, "x": 5.430000000000001}, + {"matrix": [4, 3], "h": 0.75, "label": "4,3", "w": 1.0357, "y": 1.75, "x": 6.46}, + {"matrix": [5, 3], "h": 0.75, "label": "5,3", "w": 1.0357, "y": 1.75, "x": 7.500000000000001}, + {"matrix": [4, 4], "h": 0.75, "label": "4,4", "w": 1.0357, "y": 1.75, "x": 8.530000000000001}, + {"matrix": [5, 4], "h": 0.75, "label": "5,4", "w": 1.0357, "y": 1.75, "x": 9.57}, + {"matrix": [7, 0], "h": 0.75, "label": "7,0", "w": 1.0357, "y": 2.5, "x": 0.5}, + {"matrix": [6, 1], "h": 0.75, "label": "6,1", "w": 1.0357, "y": 2.5, "x": 1.53}, + {"matrix": [7, 1], "h": 0.75, "label": "7,1", "w": 1.0357, "y": 2.5, "x": 2.5700000000000003}, + {"matrix": [6, 2], "h": 0.75, "label": "6,2", "w": 1.0357, "y": 2.5, "x": 3.6}, + {"matrix": [7, 2], "h": 0.75, "label": "7,2", "w": 1.0357, "y": 2.5, "x": 4.640000000000001}, + {"matrix": [6, 3], "h": 0.75, "label": "6,3", "w": 1.0357, "y": 2.5, "x": 5.680000000000001}, + {"matrix": [7, 3], "h": 0.75, "label": "7,3", "w": 1.0357, "y": 2.5, "x": 6.71}, + {"matrix": [6, 4], "h": 0.75, "label": "6,4", "w": 1.0357, "y": 2.5, "x": 7.750000000000001}, + {"matrix": [7, 4], "h": 0.75, "label": "7,4", "w": 1.0357, "y": 2.5, "x": 8.780000000000001}, + {"matrix": [8, 0], "h": 0.75, "label": "8,0", "w": 1.0357, "y": 3.25, "x": 1.25}, + {"matrix": [9, 0], "h": 0.75, "label": "9,0", "w": 1.0357, "y": 3.25, "x": 2.2800000000000002}, + {"matrix": [8, 1], "h": 0.75, "label": "8,1", "w": 1.0357, "y": 3.25, "x": 3.3200000000000003}, + {"matrix": [9, 1], "h": 0.75, "label": "9,1", "w": 1.0357, "y": 3.25, "x": 4.3500000000000005}, + {"matrix": [8, 2], "h": 0.75, "label": "8,2", "w": 1.0357, "y": 3.25, "x": 5.390000000000001}, + {"matrix": [9, 2], "h": 0.75, "label": "9,2", "w": 1.0357, "y": 3.25, "x": 6.430000000000001}, + {"matrix": [8, 3], "h": 0.75, "label": "8,3", "w": 1.0357, "y": 3.25, "x": 7.46}, + {"matrix": [9, 3], "h": 0.75, "label": "9,3", "w": 1.0357, "y": 3.25, "x": 8.5} + ] + } + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": false, + "audio": false, + "backlight": false, + "rgblight": false, + "encoder": false, + "oled": true, + "wpm": true + }, + "diode_direction": "COL2ROW", + "matrix_pins": { + "cols": ["A3", "A9", "A8", "B12", "B14"], + "rows": ["A2", "A4", "C13", "B5", "B9", "B3", "B4", "B8", "A15", "A10"] + } +} diff --git a/keyboards/nachie/subtext/keymaps/default/keymap.c b/keyboards/nachie/subtext/keymaps/default/keymap.c new file mode 100644 index 0000000000..b87f5bb39a --- /dev/null +++ b/keyboards/nachie/subtext/keymaps/default/keymap.c @@ -0,0 +1,27 @@ +/* +Copyright 2024 nachie + +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] = { + LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_DOT, + KC_LGUI, KC_LALT, KC_SPC, KC_LGUI, KC_SPC, KC_BSPC, KC_RALT, KC_RCTL + ) +}; \ No newline at end of file diff --git a/keyboards/nachie/subtext/keymaps/default/readme.md b/keyboards/nachie/subtext/keymaps/default/readme.md new file mode 100644 index 0000000000..5f776a4427 --- /dev/null +++ b/keyboards/nachie/subtext/keymaps/default/readme.md @@ -0,0 +1 @@ +The default layout for the nachie SubText \ No newline at end of file diff --git a/keyboards/nachie/subtext/keymaps/vial/config.h b/keyboards/nachie/subtext/keymaps/vial/config.h new file mode 100644 index 0000000000..f11557a734 --- /dev/null +++ b/keyboards/nachie/subtext/keymaps/vial/config.h @@ -0,0 +1,8 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#pragma once + +#define VIAL_KEYBOARD_UID {0x7B, 0x8D, 0x18, 0xFF, 0xE1, 0x74, 0x36, 0xB2} + +#define VIAL_UNLOCK_COMBO_ROWS { 0, 5 } +#define VIAL_UNLOCK_COMBO_COLS { 0, 4 } diff --git a/keyboards/nachie/subtext/keymaps/vial/keymap.c b/keyboards/nachie/subtext/keymaps/vial/keymap.c new file mode 100644 index 0000000000..f40f343353 --- /dev/null +++ b/keyboards/nachie/subtext/keymaps/vial/keymap.c @@ -0,0 +1,487 @@ +/* +Copyright 2024 nachie + +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 + +#include +#include "os_detection.h" + +#ifdef OLED_ENABLE +void render_key_status_or_logo(void); +void render_current_layer(void); +void render_current_wpm(void); +#endif + +os_variant_t current_platform; +bool is_alt_tab_active = false; +uint16_t alt_tab_timer = 0; + +enum layer_names { + _BASE, // Default Layer + _FN, // Fn Layer 1 + _FN2, // Fn Layer 2 + _FN3 // Fn Layer 3 +}; + +enum custom_keycode { + JWRDL = QK_KB_0, + JWRDR, + SWRDL, + SWRDR, + TABL, + TABR, + DSKTPL, + DSKTPR, + PRVAPP, + NXTAPP +}; + + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_HOME: + if (record->event.pressed && current_platform == OS_MACOS) { + register_mods(MOD_LGUI); + tap_code(KC_LEFT); + unregister_mods(MOD_LGUI); + } else { + tap_code(KC_HOME); + } + break; + case KC_END: + if (record->event.pressed && current_platform == OS_MACOS) { + register_mods(MOD_LGUI); + tap_code(KC_RIGHT); + unregister_mods(MOD_LGUI); + } else { + tap_code(KC_END); + } + break; + case KC_PGUP: + if (record->event.pressed && current_platform == OS_MACOS) { + register_mods(MOD_LGUI); + tap_code(KC_UP); + unregister_mods(MOD_LGUI); + } else { + tap_code(KC_PGUP); + } + break; + case KC_PGDN: + if (record->event.pressed && current_platform == OS_MACOS) { + register_mods(MOD_LGUI); + tap_code(KC_DOWN); + unregister_mods(MOD_LGUI); + } else { + tap_code(KC_PGDN); + } + break; + case KC_NUM_LOCK: + if (record->event.pressed && current_platform == OS_MACOS) { + register_mods(MOD_LSFT); + tap_code(KC_CLEAR); + unregister_mods(MOD_LSFT); + } else { + tap_code(KC_NUM_LOCK); + } + break; + case KC_SCROLL_LOCK: + if (record->event.pressed && current_platform == OS_MACOS) { + register_mods(MOD_LCTL); + tap_code(KC_F14); + unregister_mods(MOD_LCTL); + } else { + tap_code(KC_SCROLL_LOCK); + } + break; + case KC_PRINT_SCREEN: + if (record->event.pressed && current_platform == OS_MACOS) { + register_mods(MOD_LSFT); + register_mods(MOD_LGUI); + tap_code(KC_5); + unregister_mods(MOD_LGUI); + unregister_mods(MOD_LSFT); + } else { + tap_code(KC_PRINT_SCREEN); + } + break; + case JWRDL: + if (record->event.pressed) { + (current_platform == OS_MACOS) ? register_mods(MOD_LALT) : register_mods(MOD_LCTL); + tap_code(KC_LEFT); + (current_platform == OS_MACOS) ? unregister_mods(MOD_LALT) : unregister_mods(MOD_LCTL); + } else { + } + break; + case JWRDR: + if (record->event.pressed) { + (current_platform == OS_MACOS) ? register_mods(MOD_LALT) : register_mods(MOD_LCTL); + tap_code(KC_RIGHT); + (current_platform == OS_MACOS) ? unregister_mods(MOD_LALT) : unregister_mods(MOD_LCTL); + } else { + } + break; + case SWRDL: + if (record->event.pressed) { + register_mods(MOD_LSFT); + (current_platform == OS_MACOS) ? register_mods(MOD_LALT) : register_mods(MOD_LCTL); + tap_code(KC_LEFT); + (current_platform == OS_MACOS) ? unregister_mods(MOD_LALT) : unregister_mods(MOD_LCTL); + unregister_mods(MOD_LSFT); + } else { + } + break; + case SWRDR: + if (record->event.pressed) { + register_mods(MOD_LSFT); + (current_platform == OS_MACOS) ? register_mods(MOD_LALT) : register_mods(MOD_LCTL); + tap_code(KC_RIGHT); + (current_platform == OS_MACOS) ? unregister_mods(MOD_LALT) : unregister_mods(MOD_LCTL); + unregister_mods(MOD_LSFT); + } else { + } + break; + case TABL: + if (record->event.pressed) { + register_mods(MOD_LCTL); + register_mods(MOD_LSFT); + tap_code(KC_TAB); + unregister_mods(MOD_LSFT); + unregister_mods(MOD_LCTL); + } else { + } + break; + case TABR: + if (record->event.pressed) { + register_mods(MOD_LCTL); + tap_code(KC_TAB); + unregister_mods(MOD_LCTL); + } else { + } + break; + case DSKTPL: + if (record->event.pressed) { + register_mods(MOD_LCTL); + register_mods(MOD_LGUI); + (current_platform == OS_LINUX) ? tap_code(KC_UP) : tap_code(KC_LEFT); + unregister_mods(MOD_LGUI); + unregister_mods(MOD_LCTL); + } else { + } + break; + case DSKTPR: + if (record->event.pressed) { + register_mods(MOD_LCTL); + register_mods(MOD_LGUI); + (current_platform == OS_LINUX) ? tap_code(KC_DOWN) : tap_code(KC_RGHT); + unregister_mods(MOD_LGUI); + unregister_mods(MOD_LCTL); + } else { + } + break; + case PRVAPP: + if (record->event.pressed) { + register_code(KC_LSFT); + if (!is_alt_tab_active) { + is_alt_tab_active = true; + (current_platform == OS_MACOS) ? register_code(KC_LGUI) : register_code(KC_LALT); + } + alt_tab_timer = timer_read(); + register_code(KC_TAB); + } else { + unregister_code(KC_TAB); + unregister_code(KC_LSFT); + } + break; + case NXTAPP: + if (record->event.pressed) { + if (!is_alt_tab_active) { + is_alt_tab_active = true; + (current_platform == OS_MACOS) ? register_code(KC_LGUI) : register_code(KC_LALT); + } + alt_tab_timer = timer_read(); + register_code(KC_TAB); + } else { + unregister_code(KC_TAB); + } + break; + } + return true; +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* QWERTY */ + [_BASE] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_DOT, + KC_LGUI, KC_LALT, KC_SPC, KC_LGUI, KC_SPC, KC_BSPC, KC_RALT, KC_RCTL + ), + + /* FUNCTION */ + [_FN] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_FN2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_FN3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ) + +}; + + +void matrix_scan_user(void) { // The very important timer. + if (is_alt_tab_active) { + if (timer_elapsed(alt_tab_timer) > 1000) { + (current_platform == OS_MACOS) ? unregister_code(KC_LGUI) : unregister_code(KC_LALT); + is_alt_tab_active = false; + } + } +} + + +#ifdef OLED_ENABLE + #ifdef DYNAMIC_MACRO_ENABLE + bool macro1; + bool macro1rec; + bool macro2; + bool macro2rec; + bool prevEnabled; + uint8_t prevRGBmode; + + void render_dynamic_macro_status(int col, int line){ + oled_set_cursor(col,line); + macro1rec ? oled_write(PSTR("DM1"), macro1) : oled_write(PSTR(" "),false); + oled_set_cursor(col,line+1); + macro2rec ? oled_write(PSTR("DM2"), macro2) : oled_write(PSTR(" "),false); + } + + //direction indicates which macro it is, with 1 being Macro 1, -1 being Macro 2, and 0 being no macro. + void dynamic_macro_record_start_user(int8_t direction){ + //prevEnabled = rgb_matrix_is_enabled(); + //if (!prevEnabled) { rgb_matrix_enable(); } + //prevRGBmode = rgb_matrix_get_mode(); + //rgb_matrix_mode(RGB_MATRIX_BREATHING); + switch(direction){ + case 1: + macro1 = false; + macro1rec = true; + break; + case -1: + macro2 = false; + macro2rec = true; + break; + default: + macro1 = false; + macro2 = false; + macro1rec = false; + macro2rec = false; + break; + } + } + + void dynamic_macro_record_end_user(int8_t direction){ + //prevEnabled ? rgb_matrix_mode(prevRGBmode) : rgb_matrix_disable(); + switch(direction){ + case 1: + macro1 = true; + break; + case -1: + macro2 = true; + break; + default: + macro1 = false; + macro2 = false; + break; + } + } + #endif + + bool clear_screen = false; + bool rerender_platform = false; + + static void render_logo(void) { + static const char PROGMEM logo[] = { + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, + 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, + 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00 + }; + + oled_write(logo, false); + } + + void render_keylock_status(led_t led_state) { + bool caps_state = (led_state.caps_lock || is_caps_word_on()); + oled_write(PSTR("CAPS"), caps_state); + oled_write(PSTR(" "), false); + oled_write(PSTR("NUM"), led_state.num_lock); + oled_write(PSTR(" "), false); + oled_write(PSTR("SCRL"), led_state.scroll_lock); + //oled_write_ln_P(PSTR(" "), false); + } + + void render_mod_status(uint8_t modifiers) { + oled_write(PSTR("SH"), (modifiers & MOD_MASK_SHIFT)); + oled_write(PSTR(" "), false); + (current_platform == OS_MACOS || current_platform == OS_IOS) ? oled_write(PSTR("CMD"), (modifiers & MOD_MASK_GUI)) : oled_write(PSTR("CT"), (modifiers & MOD_MASK_CTRL)); + oled_write(PSTR(" "), false); + (current_platform == OS_MACOS || current_platform == OS_IOS) ? oled_write(PSTR("OPT"), (modifiers & MOD_MASK_ALT)) : oled_write(PSTR("ALT"), (modifiers & MOD_MASK_ALT)); + oled_write(PSTR(" "), false); + (current_platform == OS_MACOS || current_platform == OS_IOS) ? oled_write(PSTR("CT"), (modifiers & MOD_MASK_CTRL)) : oled_write(PSTR("GUI"), (modifiers & MOD_MASK_GUI)); + } + + void render_key_status_or_logo(){ + led_t led_state = host_keyboard_led_state(); + uint8_t mod_state = (get_mods()|get_oneshot_mods()); + if ( !led_state.num_lock && !led_state.caps_lock && !led_state.scroll_lock + && !(mod_state & MOD_MASK_SHIFT) && !(mod_state & MOD_MASK_ALT) && !(mod_state & MOD_MASK_CTRL) && !(mod_state & MOD_MASK_GUI)) { + if(!clear_screen) { + render_logo(); + rerender_platform = true; + } + clear_screen = true; + } else { + if (clear_screen == true) { + oled_clear(); + oled_render(); + clear_screen = false; + } + oled_set_cursor(8,0); + render_keylock_status(led_state); + oled_set_cursor(8,1); + render_mod_status(mod_state); + rerender_platform = true; + } + + } + + void render_current_layer(){ + switch (get_highest_layer(layer_state)) { + case 0: + oled_write(PSTR("Layer 0"), false); + break; + case 1: + oled_write(PSTR("Layer 1"), false); + break; + case 2: + oled_write(PSTR("Layer 2"), false); + break; + case 3: + oled_write(PSTR("Layer 3"), false); + break; + default: + oled_write(PSTR("Layer ?"), false); // Should never display, here as a catchall + } + } + + void render_current_wpm(){ + oled_write_P(PSTR("WPM: "), false); + oled_write(get_u8_str(get_current_wpm(), '0'), false); + } + + void render_platform_status(int col, int line) { + /* Show Ctrl-Gui Swap options */ + static const char PROGMEM logo[][5][3] = { + {{0x9B, 0x9C, 0}, {0xbb, 0xbc, 0}}, //Android + {{0x99, 0x9A, 0}, {0xb9, 0xba, 0}}, //Linux + {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}}, //Windows + {{0x95, 0x96, 0}, {0xb5, 0xb6, 0}}, //Mac/iOS + {{0x9D, 0x9E, 0}, {0xbd, 0xbe, 0}}, //Empty Placeholder + }; + current_platform = detected_host_os(); + switch (current_platform) { + /*case OS_ANDROID: //Android + oled_set_cursor(col,line); + oled_write(logo[0][0], false); + oled_set_cursor(col,line+1); + oled_write(logo[0][1], false); + break;*/ + case OS_LINUX: //Linux + oled_set_cursor(col,line); + oled_write(logo[1][0], false); + oled_set_cursor(col,line+1); + oled_write(logo[1][1], false); + keymap_config.swap_lctl_lgui = false; + keymap_config.swap_rctl_rgui = false; + break; + case OS_WINDOWS: //Windows + oled_set_cursor(col,line); + oled_write(logo[2][0], false); + oled_set_cursor(col,line+1); + oled_write(logo[2][1], false); + keymap_config.swap_lctl_lgui = false; + keymap_config.swap_rctl_rgui = false; + break; + case OS_MACOS: //Mac + oled_set_cursor(col,line); + oled_write(logo[3][0], false); + oled_set_cursor(col,line+1); + oled_write(logo[3][1], false); + keymap_config.swap_lctl_lgui = true; + keymap_config.swap_rctl_rgui = true; + break; + case OS_IOS: //iOS + oled_set_cursor(col,line); + oled_write(logo[3][0], false); + oled_set_cursor(col,line+1); + oled_write(logo[3][1], false); + keymap_config.swap_lctl_lgui = true; + keymap_config.swap_rctl_rgui = true; + break; + default: //OS_UNSURE or not configured + oled_set_cursor(col,line); + oled_write(logo[4][0], false); + oled_set_cursor(col,line+1); + oled_write(logo[4][1], false); + break; + } + rerender_platform = false; + } + + bool oled_task_user(void) { + render_key_status_or_logo(); + oled_set_cursor(8,2); + render_current_layer(); + #ifdef DYNAMIC_MACRO_ENABLE + render_dynamic_macro_status(18,2); + #endif + oled_set_cursor(8,3); + render_current_wpm(); + #ifdef OS_DETECTION_ENABLE + if(current_platform != detected_host_os() || rerender_platform) { render_platform_status(3,0); } + #endif + + return false; + } + +#endif \ No newline at end of file diff --git a/keyboards/nachie/subtext/keymaps/vial/readme.md b/keyboards/nachie/subtext/keymaps/vial/readme.md new file mode 100644 index 0000000000..c7dbc0d8fa --- /dev/null +++ b/keyboards/nachie/subtext/keymaps/vial/readme.md @@ -0,0 +1 @@ +The VIAL Keymap for the nachie subtext \ No newline at end of file diff --git a/keyboards/nachie/subtext/keymaps/vial/rules.mk b/keyboards/nachie/subtext/keymaps/vial/rules.mk new file mode 100644 index 0000000000..038a797951 --- /dev/null +++ b/keyboards/nachie/subtext/keymaps/vial/rules.mk @@ -0,0 +1,9 @@ +VIA_ENABLE = yes +VIAL_ENABLE = yes + +ENCODER_MAP_ENABLE = no +BOOTMAGIC_ENABLE = yes +MAGIC_ENABLE = yes +OS_DETECTION_ENABLE = yes +DYNAMIC_MACRO_ENABLE = yes +CAPS_WORD_ENABLE = yes \ No newline at end of file diff --git a/keyboards/nachie/subtext/keymaps/vial/vial.json b/keyboards/nachie/subtext/keymaps/vial/vial.json new file mode 100644 index 0000000000..8c2b566aa4 --- /dev/null +++ b/keyboards/nachie/subtext/keymaps/vial/vial.json @@ -0,0 +1,298 @@ +{ + "name": "Subtext", + "vendorId": "0x4B43", + "productId": "0x5354", + "customKeycodes": [ + { + "name": "JmpWordL", + "title": "Jump Word Left", + "shortName": "JWRDL" + }, + { + "name": "JmpWordR", + "title": "Jump Word Right", + "shortName": "JWRDR" + }, + { + "name": "SlcWordL", + "title": "Select Word Left", + "shortName": "SWRDL" + }, + { + "name": "SlcWordR", + "title": "Select Word Right", + "shortName": "SWRDR" + }, + { + "name": "TabLft", + "title": "Tab Left", + "shortName": "TABL" + }, + { + "name": "TabRght", + "title": "Tab Right", + "shortName": "TABR" + }, + { + "name": "DsktpLft", + "title": "Desktop Left", + "shortName": "DSKTPL" + }, + { + "name": "DsktpRght", + "title": "Desktop Right", + "shortName": "DSKTPR" + }, + { + "name": "PrevApp", + "title": "Previous App", + "shortName": "PRVAPP" + }, + { + "name": "NextApp", + "title": "Next App", + "shortName": "NXTAPP" + } + ], + "matrix": { "rows": 10, "cols": 5 }, + "layouts": { + "keymap": [ + [ + { + "t": "#666666", + "f": 2, + "w": 1.0357 + }, + "0,0", + { + "x": -0.005700000000000038, + "w": 1.0357 + }, + "1,0", + { + "x": 0.0042999999999997485, + "w": 1.0357 + }, + "0,1", + { + "x": -0.005699999999999594, + "w": 1.0357 + }, + "1,1", + { + "x": 2.3243, + "w": 1.0357 + }, + "0,3", + { + "x": 0.0042999999999997485, + "w": 1.0357 + }, + "1,3", + { + "x": -0.0057000000000009265, + "w": 1.0357 + }, + "0,4", + { + "x": 0.004300000000000637, + "w": 1.0357 + }, + "1,4" + ], + [ + { + "y": 0.5, + "w": 1.0357 + }, + "2,0", + { + "x": -0.005700000000000038, + "w": 1.0357 + }, + "3,0", + { + "x": 0.0042999999999997485, + "w": 1.0357 + }, + "2,1", + { + "x": -0.005699999999999594, + "w": 1.0357 + }, + "3,1", + { + "x": 0.0042999999999997485, + "w": 1.0357 + }, + "2,2", + { + "x": 0.0042999999999997485, + "w": 1.0357 + }, + "3,2", + { + "x": -0.005700000000000038, + "w": 1.0357 + }, + "2,3", + { + "x": 0.0042999999999997485, + "w": 1.0357 + }, + "3,3", + { + "x": -0.0057000000000009265, + "w": 1.0357 + }, + "2,4", + { + "x": 0.004300000000000637, + "w": 1.0357 + }, + "3,4" + ], + [ + { + "x": 0.25, + "w": 1.0357 + }, + "4,0", + { + "x": -0.005700000000000038, + "w": 1.0357 + }, + "5,0", + { + "x": 0.0042999999999997485, + "w": 1.0357 + }, + "4,1", + { + "x": -0.005699999999999594, + "w": 1.0357 + }, + "5,1", + { + "x": 0.0042999999999997485, + "w": 1.0357 + }, + "4,2", + { + "x": 0.0042999999999997485, + "w": 1.0357 + }, + "5,2", + { + "x": -0.005700000000000038, + "w": 1.0357 + }, + "4,3", + { + "x": 0.0042999999999997485, + "w": 1.0357 + }, + "5,3", + { + "x": -0.0057000000000009265, + "w": 1.0357 + }, + "4,4", + { + "x": 0.004300000000000637, + "w": 1.0357 + }, + "5,4" + ], + [ + { + "x": 0.5, + "w": 1.0357 + }, + "7,0", + { + "x": -0.005700000000000038, + "w": 1.0357 + }, + "6,1", + { + "x": 0.0042999999999997485, + "w": 1.0357 + }, + "7,1", + { + "x": -0.005699999999999594, + "w": 1.0357 + }, + "6,2", + { + "x": 0.0042999999999997485, + "w": 1.0357 + }, + "7,2", + { + "x": 0.0042999999999997485, + "w": 1.0357 + }, + "6,3", + { + "x": -0.005700000000000038, + "w": 1.0357 + }, + "7,3", + { + "x": 0.0042999999999997485, + "w": 1.0357 + }, + "6,4", + { + "x": -0.0057000000000009265, + "w": 1.0357 + }, + "7,4" + ], + [ + { + "x": 1.25, + "w": 1.0357 + }, + "8,0", + { + "x": -0.0057000000000004825, + "w": 1.0357 + }, + "9,0", + { + "x": 0.0043000000000001926, + "w": 1.0357 + }, + "8,1", + { + "x": -0.005700000000000038, + "w": 1.0357 + }, + "9,1", + { + "x": 0.0042999999999997485, + "w": 1.0357 + }, + "8,2", + { + "x": 0.0042999999999997485, + "w": 1.0357 + }, + "9,2", + { + "x": -0.005700000000000038, + "w": 1.0357 + }, + "8,3", + { + "x": 0.004300000000000637, + "w": 1.0357 + }, + "9,3" + ] + ] + } + } diff --git a/keyboards/nachie/subtext/mcuconf.h b/keyboards/nachie/subtext/mcuconf.h new file mode 100644 index 0000000000..e8803b14f8 --- /dev/null +++ b/keyboards/nachie/subtext/mcuconf.h @@ -0,0 +1,22 @@ +/* +Copyright 2024 nachie + +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 + +#undef STM32_I2C_USE_I2C1 +#define STM32_I2C_USE_I2C1 TRUE diff --git a/keyboards/nachie/subtext/readme.md b/keyboards/nachie/subtext/readme.md new file mode 100644 index 0000000000..f4cb6f1bfb --- /dev/null +++ b/keyboards/nachie/subtext/readme.md @@ -0,0 +1,23 @@ +# Subtext + +Firmware for the nachie Subtext keyboard + +* Keyboard Maintainer: [nachie](https://github.com/nachie) +* Hardware Supported: Subtext +* Hardware Availability: [nachie](https://littlecraftery.com/products/subtext) + +Make example for this keyboard (after setting up your build environment): + + make nachie/subtext:default + +Or to make and flash: + + make nachie/subtext: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 + +* **Bootmagic reset**: Hold down ESC (top left) and plug in the keyboard +* **Physical reset button**: Briefly press the button labeled "SW_RST1" on the back of the PCB diff --git a/keyboards/nachie/subtext/rules.mk b/keyboards/nachie/subtext/rules.mk new file mode 100644 index 0000000000..934dbb46a9 --- /dev/null +++ b/keyboards/nachie/subtext/rules.mk @@ -0,0 +1,5 @@ + +OLED_DRIVER = ssd1306 # Set Driver to SSD1306 + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE \ No newline at end of file diff --git a/keyboards/nachie/subtext/subtext.c b/keyboards/nachie/subtext/subtext.c new file mode 100644 index 0000000000..aad919566d --- /dev/null +++ b/keyboards/nachie/subtext/subtext.c @@ -0,0 +1,79 @@ +/* +Copyright 2024 nachie + +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 "quantum.h" + +void board_init(void) { + SYSCFG->CFGR1 |= SYSCFG_CFGR1_I2C1_DMA_RMP; // DMA re-map, you may not need this depending on your +} + +#ifdef OLED_ENABLE + +oled_rotation_t oled_init_kb(oled_rotation_t rotation) { + return OLED_ROTATION_0; +} + +static void render_logo(void) { + static const char PROGMEM my_logo[] = { + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0x3f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0x7f, 0x7f, +0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0x00, 0x00, 0x1f, 0x8f, 0x07, 0x03, 0x71, 0xf8, 0xfc, 0xfe, 0xff, 0xff, 0x03, 0x01, +0x38, 0x1c, 0x06, 0xa6, 0xb6, 0x86, 0xfc, 0xf8, 0x00, 0x03, 0xff, 0xff, 0xff, 0x00, 0x00, 0xf1, +0xf9, 0xfc, 0xfc, 0xfc, 0xf8, 0xe1, 0x03, 0x0f, 0xff, 0xff, 0x1f, 0x03, 0x01, 0xf9, 0xfc, 0x1c, +0x80, 0xf8, 0xf0, 0xf1, 0xf7, 0xff, 0xff, 0xff, 0x03, 0x01, 0x38, 0x1c, 0x06, 0xa6, 0xb6, 0x86, +0xfc, 0xf8, 0x00, 0x03, 0xff, 0xff, 0xdf, 0x9f, 0x3f, 0x7f, 0xf8, 0xf2, 0xf2, 0x00, 0x01, 0xff, +0xff, 0xff, 0x07, 0x03, 0x91, 0x99, 0x9c, 0x9c, 0x9c, 0x98, 0x91, 0x83, 0x87, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xe0, 0xe0, 0xff, 0xff, 0xff, 0xfe, 0xf8, 0xe0, 0xe3, 0xe7, 0xff, 0xff, 0xff, 0xe0, +0xe0, 0xe0, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0xe0, 0xff, 0xff, 0xff, 0x00, 0x00, 0xf1, +0xe7, 0xe7, 0xe7, 0xe7, 0xe3, 0xf0, 0xf8, 0xfe, 0xff, 0xff, 0xfe, 0xf8, 0x70, 0x03, 0xc0, 0xe4, +0xe7, 0xe7, 0xe1, 0xf0, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xe0, 0xe0, 0xe0, 0xfe, 0xff, 0xff, 0xff, +0xff, 0xff, 0xe0, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf8, 0xf1, 0xe1, 0xe0, 0xe0, 0xff, +0xff, 0xff, 0xfc, 0xf0, 0xf1, 0xe3, 0xe7, 0xe7, 0xe7, 0xe7, 0xe3, 0xf1, 0xf9, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff +}; + oled_write_raw_P(my_logo, sizeof(my_logo)); +} + + +bool oled_task_kb(void) { + // Defer to the keymap if they want to override + if(!oled_task_user()) { + return false; + } + + // default keyboard drawing code + render_logo(); + return false; +} + +#endif \ No newline at end of file diff --git a/keyboards/nachie/syndrome/chconf.h b/keyboards/nachie/syndrome/chconf.h new file mode 100644 index 0000000000..ad01fb3387 --- /dev/null +++ b/keyboards/nachie/syndrome/chconf.h @@ -0,0 +1,11 @@ +/* + * `qmk chibios-confmigrate -i firmware/nachie/syndrome/chconf.h -r ../keymaps_qmk/platforms/chibios/boards/GENERIC_PROMICRO_RP2040/configs/chconf.h` + */ + + +#pragma once + +#include_next + +#undef CH_CFG_ST_TIMEDELTA +#define CH_CFG_ST_TIMEDELTA 100 \ No newline at end of file diff --git a/keyboards/nachie/syndrome/config.h b/keyboards/nachie/syndrome/config.h new file mode 100755 index 0000000000..e050f0be12 --- /dev/null +++ b/keyboards/nachie/syndrome/config.h @@ -0,0 +1,38 @@ +/* +Copyright 2024 Nachie + +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 RP2040_FLASH_GENERIC_03H + + +#ifdef HAPTIC_ENABLE +#define SOLENOID_PIN GP15 +#endif + +/* Oled config */ +#ifdef OLED_ENABLE +#define I2C_DRIVER I2CD1 +#define I2C1_SDA_PIN GP10 +#define I2C1_SCL_PIN GP11 +#define OLED_TIMEOUT 60000 // Turns off the OLED screen after x ms of screen update inactivity. Helps reduce OLED Burn-in. Set to 0 to disable. +#define OLED_FADE_OUT +#define OLED_FADE_OUT_INTERVAL 13 +#define OLED_BRIGHTNESS 50 // The default brightness level of the OLED, from 0 to 255. +#define OLED_UPDATE_INTERVAL 16 // limits in milliseconds how frequently the OLED updates. Calculation 1000/fps (increases keyboard responsiveness) +#endif + +#define VIA_CUSTOM_LIGHTING_ENABLE diff --git a/keyboards/nachie/syndrome/halconf.h b/keyboards/nachie/syndrome/halconf.h new file mode 100644 index 0000000000..23c08453a8 --- /dev/null +++ b/keyboards/nachie/syndrome/halconf.h @@ -0,0 +1,4 @@ +#pragma once + +#include_next +#define HAL_USE_I2C TRUE \ No newline at end of file diff --git a/keyboards/nachie/syndrome/info.json b/keyboards/nachie/syndrome/info.json new file mode 100644 index 0000000000..71825036b1 --- /dev/null +++ b/keyboards/nachie/syndrome/info.json @@ -0,0 +1,149 @@ +{ + "keyboard_name": "Syndrome", + "manufacturer": "Nachie", + "usb": { + "vid": "0x4B43", + "pid": "0x5359", + "device_version": "1.0.0" + }, + "board": "GENERIC_RP_RP2040", + "bootloader": "rp2040", + "processor": "RP2040", + "url": "https://littlecraftery.com/products/syndrome", + "maintainer": "nachie", + "ws2812": { + "pin": "GP29", + "driver": "vendor" + }, + "rgb_matrix": { + "driver": "ws2812", + "led_count": 16, + "animations": { + "alphas_mods": true, + "gradient_up_down": true, + "gradient_left_right": true, + "breathing": true, + "band_sat": true, + "band_val": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_up_down": true, + "rainbow_moving_chevron":true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "rainbow_pinwheels": true, + "raindrops": true, + "jellybean_raindrops": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "typing_heatmap": true, + "digital_rain": true, + "solid_reactive_simple": true, + "solid_reactive": true, + "solid_reactive_wide": true, + "solid_reactive_multiwide": true, + "solid_reactive_cross": true, + "solid_reactive_multicross": true, + "solid_reactive_nexus": true, + "solid_reactive_multinexus": true, + "splash": true, + "solid_splash": true, + "solid_multisplash": true, + "pixel_rain": true, + "pixel_fractal": true + } + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"y": 0, "x": 0, "matrix": [8, 5], "label": "8,5"}, + {"y": 0, "x": 7, "matrix": [9, 5], "label": "9,5"}, + {"y": 0, "x": 8, "matrix": [8, 6], "label": "8,6"}, + {"y": 0, "x": 9, "matrix": [9, 6], "label": "9,6"}, + {"y": 0, "x": 10, "matrix": [8, 7], "label": "8,7"}, + {"y": 2, "x": 0, "matrix": [0, 0], "label": "0,0"}, + {"y": 2, "x": 1, "matrix": [1, 0], "label": "1,0"}, + {"y": 2, "x": 2, "matrix": [0, 1], "label": "0,1"}, + {"y": 2, "x": 3, "matrix": [1, 1], "label": "1,1"}, + {"y": 2, "x": 4, "matrix": [0, 2], "label": "0,2"}, + {"y": 2, "x": 5, "matrix": [1, 2], "label": "1,2"}, + {"y": 2, "x": 6, "matrix": [0, 3], "label": "0,3"}, + {"y": 2, "x": 7, "matrix": [1, 3], "label": "1,3"}, + {"y": 2, "x": 8, "matrix": [0, 4], "label": "0,4"}, + {"y": 2, "x": 9, "matrix": [1, 4], "label": "1,4"}, + {"y": 2, "x": 10, "matrix": [7, 4], "label": "7,4"}, + {"y": 3, "x": 0, "matrix": [2, 0], "w": 1.25, "label": "2,0"}, + {"y": 3, "x": 1.25, "matrix": [3, 0], "label": "3,0"}, + {"y": 3, "x": 2.25, "matrix": [2, 1], "label": "2,1"}, + {"y": 3, "x": 3.25, "matrix": [3, 1], "label": "3,1"}, + {"y": 3, "x": 4.25, "matrix": [2, 2], "label": "2,2"}, + {"y": 3, "x": 5.25, "matrix": [3, 2], "label": "3,2"}, + {"y": 3, "x": 6.25, "matrix": [2, 3], "label": "2,3"}, + {"y": 3, "x": 7.25, "matrix": [3, 3], "label": "3,3"}, + {"y": 3, "x": 8.25, "matrix": [2, 4], "label": "2,4"}, + {"y": 3, "x": 9.25, "matrix": [3, 4], "w": 1.75, "label": "3,4"}, + {"y": 4, "x": 0, "matrix": [4, 0], "w": 1.75, "label": "4,0"}, + {"y": 4, "x": 1.75, "matrix": [5, 0], "label": "5,0"}, + {"y": 4, "x": 2.75, "matrix": [4, 1], "label": "4,1"}, + {"y": 4, "x": 3.75, "matrix": [5, 1], "label": "5,1"}, + {"y": 4, "x": 4.75, "matrix": [4, 2], "label": "4,2"}, + {"y": 4, "x": 5.75, "matrix": [5, 2], "label": "5,2"}, + {"y": 4, "x": 6.75, "matrix": [4, 3], "label": "4,3"}, + {"y": 4, "x": 7.75, "matrix": [5, 3], "label": "5,3"}, + {"y": 4, "x": 8.75, "matrix": [4, 4], "w": 1.25, "label": "4,4"}, + {"y": 4, "x": 10, "matrix": [5, 4], "label": "5,4"}, + {"y": 5, "x": 0, "matrix": [6, 0], "w": 1.5, "label": "6,0"}, + {"y": 5, "x": 1.5, "matrix": [7, 0], "label": "7,0"}, + {"y": 5, "x": 2.5, "matrix": [6, 1], "w": 1.25, "label": "6,1"}, + {"y": 5, "x": 3.75, "matrix": [7, 1], "w": 1.75, "label": "7,1"}, + {"y": 5, "x": 5.5, "matrix": [7, 2], "w": 1.75, "label": "7,2"}, + {"y": 5, "x": 7.25, "matrix": [6, 3], "w": 1.25, "label": "6,3"}, + {"y": 5, "x": 8.5, "matrix": [7, 3], "label": "7,3"}, + {"y": 5, "x": 9.5, "matrix": [6, 4], "w": 1.5, "label": "6,4"} + ] + } + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": false, + "audio": false, + "backlight": false, + "rgblight": false, + "encoder": true, + "rgb_matrix": true, + "haptic": true, + "oled": true, + "wpm": true + }, + "build": { + "lto": true + }, + "haptic": { + "driver": "solenoid" + }, + "encoder": { + "enabled": true, + "rotary": [ + { "pin_a": "GP22", "pin_b": "GP23", "resolution": 2 }, + { "pin_a": "GP26", "pin_b": "GP27", "resolution": 2 }, + { "pin_a": "GP0", "pin_b": "GP1", "resolution": 2 }, + { "pin_a": "GP5", "pin_b": "GP6", "resolution": 2 } + ] + }, + "diode_direction": "COL2ROW", + "matrix_pins": { + "cols": ["GP28", "GP21", "GP20", "GP3", "GP2", "GP12", "GP13", "GP14"], + "rows": ["GP25", "GP24", "GP16", "GP7", "GP17", "GP18", "GP19", "GP4", "GP8", "GP9"] + } +} diff --git a/keyboards/nachie/syndrome/keyboard.json b/keyboards/nachie/syndrome/keyboard.json new file mode 100644 index 0000000000..71825036b1 --- /dev/null +++ b/keyboards/nachie/syndrome/keyboard.json @@ -0,0 +1,149 @@ +{ + "keyboard_name": "Syndrome", + "manufacturer": "Nachie", + "usb": { + "vid": "0x4B43", + "pid": "0x5359", + "device_version": "1.0.0" + }, + "board": "GENERIC_RP_RP2040", + "bootloader": "rp2040", + "processor": "RP2040", + "url": "https://littlecraftery.com/products/syndrome", + "maintainer": "nachie", + "ws2812": { + "pin": "GP29", + "driver": "vendor" + }, + "rgb_matrix": { + "driver": "ws2812", + "led_count": 16, + "animations": { + "alphas_mods": true, + "gradient_up_down": true, + "gradient_left_right": true, + "breathing": true, + "band_sat": true, + "band_val": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_up_down": true, + "rainbow_moving_chevron":true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "rainbow_pinwheels": true, + "raindrops": true, + "jellybean_raindrops": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "typing_heatmap": true, + "digital_rain": true, + "solid_reactive_simple": true, + "solid_reactive": true, + "solid_reactive_wide": true, + "solid_reactive_multiwide": true, + "solid_reactive_cross": true, + "solid_reactive_multicross": true, + "solid_reactive_nexus": true, + "solid_reactive_multinexus": true, + "splash": true, + "solid_splash": true, + "solid_multisplash": true, + "pixel_rain": true, + "pixel_fractal": true + } + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"y": 0, "x": 0, "matrix": [8, 5], "label": "8,5"}, + {"y": 0, "x": 7, "matrix": [9, 5], "label": "9,5"}, + {"y": 0, "x": 8, "matrix": [8, 6], "label": "8,6"}, + {"y": 0, "x": 9, "matrix": [9, 6], "label": "9,6"}, + {"y": 0, "x": 10, "matrix": [8, 7], "label": "8,7"}, + {"y": 2, "x": 0, "matrix": [0, 0], "label": "0,0"}, + {"y": 2, "x": 1, "matrix": [1, 0], "label": "1,0"}, + {"y": 2, "x": 2, "matrix": [0, 1], "label": "0,1"}, + {"y": 2, "x": 3, "matrix": [1, 1], "label": "1,1"}, + {"y": 2, "x": 4, "matrix": [0, 2], "label": "0,2"}, + {"y": 2, "x": 5, "matrix": [1, 2], "label": "1,2"}, + {"y": 2, "x": 6, "matrix": [0, 3], "label": "0,3"}, + {"y": 2, "x": 7, "matrix": [1, 3], "label": "1,3"}, + {"y": 2, "x": 8, "matrix": [0, 4], "label": "0,4"}, + {"y": 2, "x": 9, "matrix": [1, 4], "label": "1,4"}, + {"y": 2, "x": 10, "matrix": [7, 4], "label": "7,4"}, + {"y": 3, "x": 0, "matrix": [2, 0], "w": 1.25, "label": "2,0"}, + {"y": 3, "x": 1.25, "matrix": [3, 0], "label": "3,0"}, + {"y": 3, "x": 2.25, "matrix": [2, 1], "label": "2,1"}, + {"y": 3, "x": 3.25, "matrix": [3, 1], "label": "3,1"}, + {"y": 3, "x": 4.25, "matrix": [2, 2], "label": "2,2"}, + {"y": 3, "x": 5.25, "matrix": [3, 2], "label": "3,2"}, + {"y": 3, "x": 6.25, "matrix": [2, 3], "label": "2,3"}, + {"y": 3, "x": 7.25, "matrix": [3, 3], "label": "3,3"}, + {"y": 3, "x": 8.25, "matrix": [2, 4], "label": "2,4"}, + {"y": 3, "x": 9.25, "matrix": [3, 4], "w": 1.75, "label": "3,4"}, + {"y": 4, "x": 0, "matrix": [4, 0], "w": 1.75, "label": "4,0"}, + {"y": 4, "x": 1.75, "matrix": [5, 0], "label": "5,0"}, + {"y": 4, "x": 2.75, "matrix": [4, 1], "label": "4,1"}, + {"y": 4, "x": 3.75, "matrix": [5, 1], "label": "5,1"}, + {"y": 4, "x": 4.75, "matrix": [4, 2], "label": "4,2"}, + {"y": 4, "x": 5.75, "matrix": [5, 2], "label": "5,2"}, + {"y": 4, "x": 6.75, "matrix": [4, 3], "label": "4,3"}, + {"y": 4, "x": 7.75, "matrix": [5, 3], "label": "5,3"}, + {"y": 4, "x": 8.75, "matrix": [4, 4], "w": 1.25, "label": "4,4"}, + {"y": 4, "x": 10, "matrix": [5, 4], "label": "5,4"}, + {"y": 5, "x": 0, "matrix": [6, 0], "w": 1.5, "label": "6,0"}, + {"y": 5, "x": 1.5, "matrix": [7, 0], "label": "7,0"}, + {"y": 5, "x": 2.5, "matrix": [6, 1], "w": 1.25, "label": "6,1"}, + {"y": 5, "x": 3.75, "matrix": [7, 1], "w": 1.75, "label": "7,1"}, + {"y": 5, "x": 5.5, "matrix": [7, 2], "w": 1.75, "label": "7,2"}, + {"y": 5, "x": 7.25, "matrix": [6, 3], "w": 1.25, "label": "6,3"}, + {"y": 5, "x": 8.5, "matrix": [7, 3], "label": "7,3"}, + {"y": 5, "x": 9.5, "matrix": [6, 4], "w": 1.5, "label": "6,4"} + ] + } + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": false, + "audio": false, + "backlight": false, + "rgblight": false, + "encoder": true, + "rgb_matrix": true, + "haptic": true, + "oled": true, + "wpm": true + }, + "build": { + "lto": true + }, + "haptic": { + "driver": "solenoid" + }, + "encoder": { + "enabled": true, + "rotary": [ + { "pin_a": "GP22", "pin_b": "GP23", "resolution": 2 }, + { "pin_a": "GP26", "pin_b": "GP27", "resolution": 2 }, + { "pin_a": "GP0", "pin_b": "GP1", "resolution": 2 }, + { "pin_a": "GP5", "pin_b": "GP6", "resolution": 2 } + ] + }, + "diode_direction": "COL2ROW", + "matrix_pins": { + "cols": ["GP28", "GP21", "GP20", "GP3", "GP2", "GP12", "GP13", "GP14"], + "rows": ["GP25", "GP24", "GP16", "GP7", "GP17", "GP18", "GP19", "GP4", "GP8", "GP9"] + } +} diff --git a/keyboards/nachie/syndrome/keymaps/default/keymap.c b/keyboards/nachie/syndrome/keymaps/default/keymap.c new file mode 100755 index 0000000000..9536a4d71c --- /dev/null +++ b/keyboards/nachie/syndrome/keymaps/default/keymap.c @@ -0,0 +1,28 @@ +/* +Copyright 2024 Nachie + +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 */ + LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_DOT, KC_LSFT, MO(1), + KC_LGUI, KC_LGUI, KC_LALT, KC_SPC, KC_BSPC, KC_RGUI, KC_RALT, MO(1)) +}; diff --git a/keyboards/nachie/syndrome/keymaps/default/readme.md b/keyboards/nachie/syndrome/keymaps/default/readme.md new file mode 100644 index 0000000000..4301f35d66 --- /dev/null +++ b/keyboards/nachie/syndrome/keymaps/default/readme.md @@ -0,0 +1 @@ +The default keymap for the Syndrome. \ No newline at end of file diff --git a/keyboards/nachie/syndrome/keymaps/vial/config.h b/keyboards/nachie/syndrome/keymaps/vial/config.h new file mode 100644 index 0000000000..db5d246379 --- /dev/null +++ b/keyboards/nachie/syndrome/keymaps/vial/config.h @@ -0,0 +1,11 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#pragma once + +#define VIAL_KEYBOARD_UID {0xBE, 0x9A, 0x53, 0x6B, 0x85, 0xE5, 0xE2, 0xFE} + +#define VIAL_UNLOCK_COMBO_ROWS { 0, 3 } +#define VIAL_UNLOCK_COMBO_COLS { 0, 4 } + +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS +#define RGB_MATRIX_KEYPRESSES \ No newline at end of file diff --git a/keyboards/nachie/syndrome/keymaps/vial/keymap.c b/keyboards/nachie/syndrome/keymaps/vial/keymap.c new file mode 100755 index 0000000000..229b78c6d9 --- /dev/null +++ b/keyboards/nachie/syndrome/keymaps/vial/keymap.c @@ -0,0 +1,492 @@ +/* +Copyright 2024 Nachie + +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 + +#include +#include "os_detection.h" + +#ifdef OLED_ENABLE +void render_key_status_or_logo(void); +void render_current_layer(void); +void render_current_wpm(void); +#endif + +os_variant_t current_platform; +bool is_alt_tab_active = false; +uint16_t alt_tab_timer = 0; + +enum layer_names { + _BASE, // Default Layer + _FN, // Fn Layer 1 + _FN2, // Fn Layer 2 + _FN3 // Fn Layer 3 +}; + +enum custom_keycode { + JWRDL = QK_KB_0, + JWRDR, + SWRDL, + SWRDR, + TABL, + TABR, + DSKTPL, + DSKTPR, + PRVAPP, + NXTAPP +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_HOME: + if (record->event.pressed && current_platform == OS_MACOS) { + register_mods(MOD_LGUI); + tap_code(KC_LEFT); + unregister_mods(MOD_LGUI); + } else { + tap_code(KC_HOME); + } + break; + case KC_END: + if (record->event.pressed && current_platform == OS_MACOS) { + register_mods(MOD_LGUI); + tap_code(KC_RIGHT); + unregister_mods(MOD_LGUI); + } else { + tap_code(KC_END); + } + break; + case KC_PGUP: + if (record->event.pressed && current_platform == OS_MACOS) { + register_mods(MOD_LGUI); + tap_code(KC_UP); + unregister_mods(MOD_LGUI); + } else { + tap_code(KC_PGUP); + } + break; + case KC_PGDN: + if (record->event.pressed && current_platform == OS_MACOS) { + register_mods(MOD_LGUI); + tap_code(KC_DOWN); + unregister_mods(MOD_LGUI); + } else { + tap_code(KC_PGDN); + } + break; + case KC_NUM_LOCK: + if (record->event.pressed && current_platform == OS_MACOS) { + register_mods(MOD_LSFT); + tap_code(KC_CLEAR); + unregister_mods(MOD_LSFT); + } else { + tap_code(KC_NUM_LOCK); + } + break; + case KC_SCROLL_LOCK: + if (record->event.pressed && current_platform == OS_MACOS) { + register_mods(MOD_LCTL); + tap_code(KC_F14); + unregister_mods(MOD_LCTL); + } else { + tap_code(KC_SCROLL_LOCK); + } + break; + case KC_PRINT_SCREEN: + if (record->event.pressed && current_platform == OS_MACOS) { + register_mods(MOD_LSFT); + register_mods(MOD_LGUI); + tap_code(KC_5); + unregister_mods(MOD_LGUI); + unregister_mods(MOD_LSFT); + } else { + tap_code(KC_PRINT_SCREEN); + } + break; + case JWRDL: + if (record->event.pressed) { + (current_platform == OS_MACOS) ? register_mods(MOD_LALT) : register_mods(MOD_LCTL); + tap_code(KC_LEFT); + (current_platform == OS_MACOS) ? unregister_mods(MOD_LALT) : unregister_mods(MOD_LCTL); + } else { + } + break; + case JWRDR: + if (record->event.pressed) { + (current_platform == OS_MACOS) ? register_mods(MOD_LALT) : register_mods(MOD_LCTL); + tap_code(KC_RIGHT); + (current_platform == OS_MACOS) ? unregister_mods(MOD_LALT) : unregister_mods(MOD_LCTL); + } else { + } + break; + case SWRDL: + if (record->event.pressed) { + register_mods(MOD_LSFT); + (current_platform == OS_MACOS) ? register_mods(MOD_LALT) : register_mods(MOD_LCTL); + tap_code(KC_LEFT); + (current_platform == OS_MACOS) ? unregister_mods(MOD_LALT) : unregister_mods(MOD_LCTL); + unregister_mods(MOD_LSFT); + } else { + } + break; + case SWRDR: + if (record->event.pressed) { + register_mods(MOD_LSFT); + (current_platform == OS_MACOS) ? register_mods(MOD_LALT) : register_mods(MOD_LCTL); + tap_code(KC_RIGHT); + (current_platform == OS_MACOS) ? unregister_mods(MOD_LALT) : unregister_mods(MOD_LCTL); + unregister_mods(MOD_LSFT); + } else { + } + break; + case TABL: + if (record->event.pressed) { + register_mods(MOD_LCTL); + register_mods(MOD_LSFT); + tap_code(KC_TAB); + unregister_mods(MOD_LSFT); + unregister_mods(MOD_LCTL); + } else { + } + break; + case TABR: + if (record->event.pressed) { + register_mods(MOD_LCTL); + tap_code(KC_TAB); + unregister_mods(MOD_LCTL); + } else { + } + break; + case DSKTPL: + if (record->event.pressed) { + register_mods(MOD_LCTL); + register_mods(MOD_LGUI); + (current_platform == OS_LINUX) ? tap_code(KC_UP) : tap_code(KC_LEFT); + unregister_mods(MOD_LGUI); + unregister_mods(MOD_LCTL); + } else { + } + break; + case DSKTPR: + if (record->event.pressed) { + register_mods(MOD_LCTL); + register_mods(MOD_LGUI); + (current_platform == OS_LINUX) ? tap_code(KC_DOWN) : tap_code(KC_RGHT); + unregister_mods(MOD_LGUI); + unregister_mods(MOD_LCTL); + } else { + } + break; + case PRVAPP: + if (record->event.pressed) { + register_code(KC_LSFT); + if (!is_alt_tab_active) { + is_alt_tab_active = true; + (current_platform == OS_MACOS) ? register_code(KC_LGUI) : register_code(KC_LALT); + } + alt_tab_timer = timer_read(); + register_code(KC_TAB); + } else { + unregister_code(KC_TAB); + unregister_code(KC_LSFT); + } + break; + case NXTAPP: + if (record->event.pressed) { + if (!is_alt_tab_active) { + is_alt_tab_active = true; + (current_platform == OS_MACOS) ? register_code(KC_LGUI) : register_code(KC_LALT); + } + alt_tab_timer = timer_read(); + register_code(KC_TAB); + } else { + unregister_code(KC_TAB); + } + break; + } + return true; +}; + +#ifndef HAPTIC_ENABLE + #define HF_TOGG _______ +#endif + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* QWERTY */ + [_BASE] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_DOT, KC_LSFT, MO(1), + KC_LGUI, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_BSPC, KC_RGUI, MO(2)), + + /* FUNCTION */ + [_FN] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_DOT, KC_LSFT, MO(1), + KC_LGUI, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_BSPC, KC_RGUI, MO(1)), + + [_FN2] = LAYOUT( + KC_ESC, QK_BOOTLOADER, QK_REBOOT, QK_DEBUG_TOGGLE, QK_CLEAR_EEPROM, + HF_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______), + + [_FN3] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______) +}; + +void matrix_scan_user(void) { // The very important timer. + if (is_alt_tab_active) { + if (timer_elapsed(alt_tab_timer) > 1000) { + (current_platform == OS_MACOS) ? unregister_code(KC_LGUI) : unregister_code(KC_LALT); + is_alt_tab_active = false; + } + } +} + +#if defined(ENCODER_MAP_ENABLE) + const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [_FN] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(RGB_RMOD, RGB_MOD) }, + [_FN2] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [_FN3] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + }; +#endif + +#ifdef OLED_ENABLE + #ifdef DYNAMIC_MACRO_ENABLE + bool macro1; + bool macro1rec; + bool macro2; + bool macro2rec; + bool prevEnabled; + uint8_t prevRGBmode; + + void render_dynamic_macro_status(int col, int line){ + oled_set_cursor(col,line); + macro1rec ? oled_write(PSTR("DM1"), macro1) : oled_write(PSTR(" "),false); + oled_set_cursor(col,line+1); + macro2rec ? oled_write(PSTR("DM2"), macro2) : oled_write(PSTR(" "),false); + } + + //direction indicates which macro it is, with 1 being Macro 1, -1 being Macro 2, and 0 being no macro. + void dynamic_macro_record_start_user(int8_t direction){ + prevEnabled = rgb_matrix_is_enabled(); + if (!prevEnabled) { rgb_matrix_enable(); } + prevRGBmode = rgb_matrix_get_mode(); + rgb_matrix_mode(RGB_MATRIX_BREATHING); + switch(direction){ + case 1: + macro1 = false; + macro1rec = true; + break; + case -1: + macro2 = false; + macro2rec = true; + break; + default: + macro1 = false; + macro2 = false; + macro1rec = false; + macro2rec = false; + break; + } + } + + void dynamic_macro_record_end_user(int8_t direction){ + prevEnabled ? rgb_matrix_mode(prevRGBmode) : rgb_matrix_disable(); + switch(direction){ + case 1: + macro1 = true; + break; + case -1: + macro2 = true; + break; + default: + macro1 = false; + macro2 = false; + break; + } + } + #endif + + bool clear_screen = false; + bool rerender_platform = false; + + static void render_logo(void) { + static const char PROGMEM logo[] = { + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, + 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, + 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00 + }; + + oled_write(logo, false); + } + + void render_keylock_status(led_t led_state) { + bool caps_state = (led_state.caps_lock || is_caps_word_on()); + oled_write(PSTR("CAPS"), caps_state); + oled_write(PSTR(" "), false); + oled_write(PSTR("NUM"), led_state.num_lock); + oled_write(PSTR(" "), false); + oled_write(PSTR("SCRL"), led_state.scroll_lock); + //oled_write_ln_P(PSTR(" "), false); + } + + void render_mod_status(uint8_t modifiers) { + oled_write(PSTR("SH"), (modifiers & MOD_MASK_SHIFT)); + oled_write(PSTR(" "), false); + (current_platform == OS_MACOS || current_platform == OS_IOS) ? oled_write(PSTR("CMD"), (modifiers & MOD_MASK_GUI)) : oled_write(PSTR("CT"), (modifiers & MOD_MASK_CTRL)); + oled_write(PSTR(" "), false); + (current_platform == OS_MACOS || current_platform == OS_IOS) ? oled_write(PSTR("OPT"), (modifiers & MOD_MASK_ALT)) : oled_write(PSTR("ALT"), (modifiers & MOD_MASK_ALT)); + oled_write(PSTR(" "), false); + (current_platform == OS_MACOS || current_platform == OS_IOS) ? oled_write(PSTR("CT"), (modifiers & MOD_MASK_CTRL)) : oled_write(PSTR("GUI"), (modifiers & MOD_MASK_GUI)); + } + + void render_key_status_or_logo(){ + led_t led_state = host_keyboard_led_state(); + uint8_t mod_state = (get_mods()|get_oneshot_mods()); + if ( !led_state.num_lock && !led_state.caps_lock && !led_state.scroll_lock + && !(mod_state & MOD_MASK_SHIFT) && !(mod_state & MOD_MASK_ALT) && !(mod_state & MOD_MASK_CTRL) && !(mod_state & MOD_MASK_GUI)) { + if(!clear_screen) { + render_logo(); + rerender_platform = true; + } + clear_screen = true; + } else { + if (clear_screen == true) { + oled_clear(); + oled_render(); + clear_screen = false; + } + oled_set_cursor(8,0); + render_keylock_status(led_state); + oled_set_cursor(8,1); + render_mod_status(mod_state); + rerender_platform = true; + } + + } + + void render_current_layer(){ + switch (get_highest_layer(layer_state)) { + case 0: + oled_write(PSTR("Layer 0"), false); + break; + case 1: + oled_write(PSTR("Layer 1"), false); + break; + case 2: + oled_write(PSTR("Layer 2"), false); + break; + case 3: + oled_write(PSTR("Layer 3"), false); + break; + default: + oled_write(PSTR("Layer ?"), false); // Should never display, here as a catchall + } + } + + void render_current_wpm(){ + oled_write_P(PSTR("WPM: "), false); + oled_write(get_u8_str(get_current_wpm(), '0'), false); + } + + void render_platform_status(int col, int line) { + /* Show Ctrl-Gui Swap options */ + static const char PROGMEM logo[][5][3] = { + {{0x9B, 0x9C, 0}, {0xbb, 0xbc, 0}}, //Android + {{0x99, 0x9A, 0}, {0xb9, 0xba, 0}}, //Linux + {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}}, //Windows + {{0x95, 0x96, 0}, {0xb5, 0xb6, 0}}, //Mac/iOS + {{0x9D, 0x9E, 0}, {0xbd, 0xbe, 0}}, //Empty Placeholder + }; + current_platform = detected_host_os(); + switch (current_platform) { + /*case OS_ANDROID: //Android + oled_set_cursor(col,line); + oled_write(logo[0][0], false); + oled_set_cursor(col,line+1); + oled_write(logo[0][1], false); + break;*/ + case OS_LINUX: //Linux + oled_set_cursor(col,line); + oled_write(logo[1][0], false); + oled_set_cursor(col,line+1); + oled_write(logo[1][1], false); + keymap_config.swap_lctl_lgui = false; + keymap_config.swap_rctl_rgui = false; + break; + case OS_WINDOWS: //Windows + oled_set_cursor(col,line); + oled_write(logo[2][0], false); + oled_set_cursor(col,line+1); + oled_write(logo[2][1], false); + keymap_config.swap_lctl_lgui = false; + keymap_config.swap_rctl_rgui = false; + break; + case OS_MACOS: //Mac + oled_set_cursor(col,line); + oled_write(logo[3][0], false); + oled_set_cursor(col,line+1); + oled_write(logo[3][1], false); + keymap_config.swap_lctl_lgui = true; + keymap_config.swap_rctl_rgui = true; + break; + case OS_IOS: //iOS + oled_set_cursor(col,line); + oled_write(logo[3][0], false); + oled_set_cursor(col,line+1); + oled_write(logo[3][1], false); + keymap_config.swap_lctl_lgui = true; + keymap_config.swap_rctl_rgui = true; + break; + default: //OS_UNSURE or not configured + oled_set_cursor(col,line); + oled_write(logo[4][0], false); + oled_set_cursor(col,line+1); + oled_write(logo[4][1], false); + break; + } + rerender_platform = false; + } + + bool oled_task_user(void) { + render_key_status_or_logo(); + oled_set_cursor(8,2); + render_current_layer(); + #ifdef DYNAMIC_MACRO_ENABLE + render_dynamic_macro_status(18,2); + #endif + oled_set_cursor(8,3); + render_current_wpm(); + #ifdef OS_DETECTION_ENABLE + if(current_platform != detected_host_os() || rerender_platform) { render_platform_status(3,0); } + #endif + + return false; + } + +#endif diff --git a/keyboards/nachie/syndrome/keymaps/vial/readme.md b/keyboards/nachie/syndrome/keymaps/vial/readme.md new file mode 100644 index 0000000000..4b24f26170 --- /dev/null +++ b/keyboards/nachie/syndrome/keymaps/vial/readme.md @@ -0,0 +1 @@ +The vial keymap for the Syndrome PCB. \ No newline at end of file diff --git a/keyboards/nachie/syndrome/keymaps/vial/rules.mk b/keyboards/nachie/syndrome/keymaps/vial/rules.mk new file mode 100644 index 0000000000..9f6eb0c0b1 --- /dev/null +++ b/keyboards/nachie/syndrome/keymaps/vial/rules.mk @@ -0,0 +1,10 @@ +VIA_ENABLE = yes +VIAL_ENABLE = yes + +VIALRGB_ENABLE = yes +ENCODER_MAP_ENABLE = yes +BOOTMAGIC_ENABLE = yes +MAGIC_ENABLE = yes +OS_DETECTION_ENABLE = yes +DYNAMIC_MACRO_ENABLE = yes +CAPS_WORD_ENABLE = yes diff --git a/keyboards/nachie/syndrome/keymaps/vial/vial.json b/keyboards/nachie/syndrome/keymaps/vial/vial.json new file mode 100644 index 0000000000..cc3f42f35e --- /dev/null +++ b/keyboards/nachie/syndrome/keymaps/vial/vial.json @@ -0,0 +1,397 @@ +{ + "name": "Syndrome", + "vendorId": "0x4B43", + "productId": "0x5359", + "customKeycodes": [ + { + "name": "JmpWordL", + "title": "Jump Word Left", + "shortName": "JWRDL" + }, + { + "name": "JmpWordR", + "title": "Jump Word Right", + "shortName": "JWRDR" + }, + { + "name": "SlcWordL", + "title": "Select Word Left", + "shortName": "SWRDL" + }, + { + "name": "SlcWordR", + "title": "Select Word Right", + "shortName": "SWRDR" + }, + { + "name": "TabLft", + "title": "Tab Left", + "shortName": "TABL" + }, + { + "name": "TabRght", + "title": "Tab Right", + "shortName": "TABR" + }, + { + "name": "DsktpLft", + "title": "Desktop Left", + "shortName": "DSKTPL" + }, + { + "name": "DsktpRght", + "title": "Desktop Right", + "shortName": "DSKTPR" + }, + { + "name": "PrevApp", + "title": "Previous App", + "shortName": "PRVAPP" + }, + { + "name": "NextApp", + "title": "Next App", + "shortName": "NXTAPP" + } + ], + "matrix": { "rows": 10, "cols": 8 }, + "lighting": "vialrgb", + "layouts": { + "labels":[ + [ + "Right Shift", + "Split Shift Fn", + "Split Fn Shift", + "No Split" + ], + [ + "Bottom Row", + "3U Centered", + "6U Big Bar", + "3U/3U", + "2U/2U", + "1.75U/1.75U", + "7U Big Bar", + "3U/1U/3U", + "2.75U ALPS", + "3U/ENC/3U" + ], + "Macro Row" + ], + "keymap": [ + [ + { + "y": 2.5, + "x": 1.5 + }, + "3,0\n\n\n\n\n\n\n\n\ne", + "3,1\n\n\n\n\n\n\n\n\ne" + ], + [ + { + "x": 2 + }, + "8,5\n\n\n2,0", + { + "x": 6 + }, + "9,5\n\n\n2,0", + "8,6\n\n\n2,0", + "9,6\n\n\n2,0", + "8,7\n\n\n2,0" + ], + [ + { + "y": 0.5, + "x": 1 + }, + "0,0\n\n\n\n\n\n\n\n\ne", + { + "x": 11 + }, + "1,0\n\n\n\n\n\n\n\n\ne" + ], + [ + { + "y": -0.5, + "x": 2 + }, + "0,0", + "1,0", + "0,1", + "1,1", + "0,2", + "1,2", + "0,3", + "1,3", + "0,4", + "1,4", + "7,4" + ], + [ + { + "y": -0.5, + "x": 1 + }, + "0,1\n\n\n\n\n\n\n\n\ne", + { + "x": 11 + }, + "1,1\n\n\n\n\n\n\n\n\ne" + ], + [ + { + "y": -0.5, + "x": 2, + "c": "#aaaaaa", + "w": 1.25 + }, + "2,0", + { + "c": "#cccccc" + }, + "3,0", + "2,1", + "3,1", + "2,2", + "3,2", + "2,3", + "3,3", + "2,4", + { + "c": "#777777", + "w": 1.75 + }, + "3,4" + ], + [ + { + "x": 2, + "c": "#aaaaaa", + "w": 1.75 + }, + "4,0", + { + "c": "#cccccc" + }, + "5,0", + "4,1", + "5,1", + "4,2", + "5,2", + "4,3", + "5,3", + { + "c": "#aaaaaa", + "w": 1.25 + }, + "4,4\n\n\n0,0", + { + "c": "#cccccc" + }, + "5,4\n\n\n0,0", + { + "x": 0.25 + }, + "4,4\n\n\n0,1", + { + "c": "#aaaaaa", + "w": 1.25 + }, + "5,4\n\n\n0,1", + { + "x": 0.25, + "w": 2.25 + }, + "4,4\n\n\n0,2" + ], + [ + { + "x": 2, + "w": 1.5 + }, + "6,0\n\n\n1,0", + "7,0\n\n\n1,0", + { + "w": 1.5 + }, + "6,1\n\n\n1,0", + { + "w": 3 + }, + "7,2\n\n\n1,0", + { + "w": 1.5 + }, + "6,3\n\n\n1,0", + "7,3\n\n\n1,0", + { + "w": 1.5 + }, + "6,4\n\n\n1,0" + ], + [ + { + "x": 6.5, + "c": "#cccccc" + }, + "2,0\n\n\n\n\n\n\n\n\ne", + "2,1\n\n\n\n\n\n\n\n\ne" + ], + [ + { + "y": 0.25, + "x": 2, + "c": "#aaaaaa", + "w": 1.5 + }, + "6,0\n\n\n1,1", + "7,0\n\n\n1,1", + { + "w": 6 + }, + "7,2\n\n\n1,1", + "7,3\n\n\n1,1", + { + "w": 1.5 + }, + "6,4\n\n\n1,1" + ], + [ + { + "x": 2, + "w": 1.5 + }, + "6,0\n\n\n1,2", + "7,0\n\n\n1,2", + { + "w": 3 + }, + "7,1\n\n\n1,2", + { + "w": 3 + }, + "7,2\n\n\n1,2", + "7,3\n\n\n1,2", + { + "w": 1.5 + }, + "6,4\n\n\n1,2" + ], + [ + { + "x": 2, + "w": 1.5 + }, + "6,0\n\n\n1,3", + "7,0\n\n\n1,3", + "6,1\n\n\n1,3", + { + "w": 2 + }, + "7,1\n\n\n1,3", + { + "w": 2 + }, + "7,2\n\n\n1,3", + "6,3\n\n\n1,3", + "7,3\n\n\n1,3", + { + "w": 1.5 + }, + "6,4\n\n\n1,3" + ], + [ + { + "x": 2, + "w": 1.5 + }, + "6,0\n\n\n1,4", + "7,0\n\n\n1,4", + { + "w": 1.25 + }, + "6,1\n\n\n1,4", + { + "w": 1.75 + }, + "7,1\n\n\n1,4", + { + "w": 1.75 + }, + "7,2\n\n\n1,4", + { + "w": 1.25 + }, + "6,3\n\n\n1,4", + "7,3\n\n\n1,4", + { + "w": 1.5 + }, + "6,4\n\n\n1,4" + ], + [ + { + "x": 2 + }, + "6,0\n\n\n1,5", + "7,0\n\n\n1,5", + { + "w": 7 + }, + "7,2\n\n\n1,5", + "7,3\n\n\n1,5", + "6,4\n\n\n1,5" + ], + [ + { + "x": 2 + }, + "6,0\n\n\n1,6", + "7,0\n\n\n1,6", + { + "w": 3 + }, + "6,1\n\n\n1,6", + "7,2\n\n\n1,6", + { + "w": 3 + }, + "6,3\n\n\n1,6", + "7,3\n\n\n1,6", + "6,4\n\n\n1,6" + ], + [ + { + "x": 2, + "w": 1.25 + }, + "6,0\n\n\n1,7", + { + "w": 1.5 + }, + "7,0\n\n\n1,7", + { + "w": 1.25 + }, + "6,1\n\n\n1,7", + { + "w": 2.75 + }, + "7,2\n\n\n1,7", + { + "w": 1.25 + }, + "6,3\n\n\n1,7", + { + "w": 1.5 + }, + "7,3\n\n\n1,7", + { + "w": 1.5 + }, + "6,4\n\n\n1,7" + ] + ] + } +} diff --git a/keyboards/nachie/syndrome/mcuconf.h b/keyboards/nachie/syndrome/mcuconf.h new file mode 100644 index 0000000000..771e56e0de --- /dev/null +++ b/keyboards/nachie/syndrome/mcuconf.h @@ -0,0 +1,9 @@ +#pragma once + +#include_next + +#undef RP_I2C_USE_I2C0 +#define RP_I2C_USE_I2C0 FALSE + +#undef RP_I2C_USE_I2C1 +#define RP_I2C_USE_I2C1 TRUE \ No newline at end of file diff --git a/keyboards/nachie/syndrome/readme.md b/keyboards/nachie/syndrome/readme.md new file mode 100644 index 0000000000..5d6bf99339 --- /dev/null +++ b/keyboards/nachie/syndrome/readme.md @@ -0,0 +1,23 @@ +# Syndrome + +Firmware for the Syndrome (and Detour) + +* Keyboard Maintainer: [Nachie](https://github.com/nachie) +* Hardware Supported: Syndrome +* Hardware Availability: [Little Craftery](https://littlecraftery.com/products/syndrome) + +Make example for this keyboard (after setting up your build environment): + + make nachie/syndrome:default + +Or to make and flash: + + make nachie/syndrome: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 + +* **Bootmagic reset**: Hold down ESC key (top left) and plug in the keyboard +* **Physical reset button**: Briefly press the button labeled "SW_RST1" on the back of the PCB diff --git a/keyboards/nachie/syndrome/rules.mk b/keyboards/nachie/syndrome/rules.mk new file mode 100755 index 0000000000..2af4b691b6 --- /dev/null +++ b/keyboards/nachie/syndrome/rules.mk @@ -0,0 +1,4 @@ + +OLED_DRIVER = ssd1306 + +OPT_DEFS += -DHAL_USE_I2C=TRUE diff --git a/keyboards/nachie/syndrome/syndrome.c b/keyboards/nachie/syndrome/syndrome.c new file mode 100755 index 0000000000..cc62882ef0 --- /dev/null +++ b/keyboards/nachie/syndrome/syndrome.c @@ -0,0 +1,89 @@ +/* +Copyright 2024 Nachie + +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 "quantum.h" + +led_config_t g_led_config = { { + {NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED}, + { 6, 5, 4, 3, 2, 1, 0, NO_LED }, + { 7, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 15 }, + { 8 , 9, NO_LED, 10, 11, 12, 13, 14 }, + { NO_LED, NO_LED, NO_LED,NO_LED, NO_LED, NO_LED, NO_LED, NO_LED } +}, { + { 183,0 }, { 162,0 }, { 142,0 }, { 122,0 }, { 81,0 }, { 61,0 }, { 40,0 }, + { 20,16 }, { 40,48 }, + { 61,48 }, { 81,48 }, { 101,48 }, { 122,48 }, { 162,48 }, { 203,48 }, { 244,16 } +}, { + 1, 1, 1, 1, 1, 1, 1, + 1, 1, + 1, 1, 1, 1, 1, 1, 1 +} }; + +#ifdef OLED_ENABLE + +static void render_logo(void) { + static const char PROGMEM my_logo[] = { + // 'Screenshot 2023-07-21 at 1', 128x32px +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xfe, 0x00, 0x03, 0xc0, 0x00, 0xc0, 0x00, 0x3c, 0x00, 0x0f, 0x1f, 0xf8, 0xe0, 0x00, 0x1f, 0xff, +0xff, 0x80, 0x01, 0xc0, 0x00, 0x40, 0x00, 0x38, 0x00, 0x07, 0x1f, 0xf8, 0xe0, 0x00, 0x1f, 0xff, +0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0x0f, 0xff, +0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0x8f, 0xff, +0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0x0f, 0xff, +0xfe, 0x1f, 0xf1, 0xc0, 0x03, 0xff, 0x8f, 0xf8, 0xff, 0xc7, 0x1f, 0xf8, 0xe1, 0xc0, 0x1f, 0xff, +0xfe, 0x1f, 0xf1, 0xc0, 0x03, 0xff, 0x8f, 0xf8, 0xff, 0xc7, 0x1f, 0xf8, 0xe1, 0xe0, 0x3f, 0xff, +0xfe, 0x1f, 0xf1, 0xc3, 0xff, 0xff, 0x8f, 0xf8, 0xff, 0xc7, 0x1f, 0xf8, 0xe1, 0xf0, 0xff, 0xff, +0xfe, 0x1f, 0xf1, 0xc3, 0xff, 0xff, 0x8f, 0xf8, 0xff, 0xc7, 0x1f, 0xf8, 0xe1, 0xf8, 0x7f, 0xff, +0xfe, 0x1f, 0xf1, 0xc3, 0xff, 0xff, 0x8f, 0xf8, 0xff, 0xc7, 0x1f, 0xf8, 0xe1, 0xf8, 0x7f, 0xff, +0xfe, 0x00, 0x01, 0xc0, 0x00, 0x7f, 0x8f, 0xf8, 0x00, 0x07, 0x00, 0x00, 0xe1, 0xfc, 0x3f, 0xff, +0xfe, 0x00, 0x03, 0xc0, 0x00, 0xff, 0x8f, 0xfc, 0x00, 0x0f, 0x80, 0x01, 0xe1, 0xfe, 0x1f, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff +}; + oled_write_raw_P(my_logo, sizeof(my_logo)); +} + +bool oled_task_kb(void) { + // Defer to the keymap if they want to override + + if(!oled_task_user()) { + return false; + } + + // default keyboard drawing code + render_logo(); + return false; +} + +#endif \ No newline at end of file diff --git a/keyboards/nachie/syndrome_ortho/chconf.h b/keyboards/nachie/syndrome_ortho/chconf.h new file mode 100644 index 0000000000..ad01fb3387 --- /dev/null +++ b/keyboards/nachie/syndrome_ortho/chconf.h @@ -0,0 +1,11 @@ +/* + * `qmk chibios-confmigrate -i firmware/nachie/syndrome/chconf.h -r ../keymaps_qmk/platforms/chibios/boards/GENERIC_PROMICRO_RP2040/configs/chconf.h` + */ + + +#pragma once + +#include_next + +#undef CH_CFG_ST_TIMEDELTA +#define CH_CFG_ST_TIMEDELTA 100 \ No newline at end of file diff --git a/keyboards/nachie/syndrome_ortho/config.h b/keyboards/nachie/syndrome_ortho/config.h new file mode 100755 index 0000000000..895749b5e2 --- /dev/null +++ b/keyboards/nachie/syndrome_ortho/config.h @@ -0,0 +1,37 @@ +/* +Copyright 2024 Nachie + +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 RP2040_FLASH_GENERIC_03H + +#ifdef HAPTIC_ENABLE +#define SOLENOID_PIN GP15 +#endif + +/* Oled config */ +#ifdef OLED_ENABLE +#define I2C_DRIVER I2CD1 +#define I2C1_SDA_PIN GP10 +#define I2C1_SCL_PIN GP11 +#define OLED_TIMEOUT 60000 // Turns off the OLED screen after x ms of screen update inactivity. Helps reduce OLED Burn-in. Set to 0 to disable. +#define OLED_FADE_OUT +#define OLED_FADE_OUT_INTERVAL 13 +#define OLED_BRIGHTNESS 50 // The default brightness level of the OLED, from 0 to 255. +#define OLED_UPDATE_INTERVAL 16 // limits in milliseconds how frequently the OLED updates. Calculation 1000/fps (increases keyboard responsiveness) +#endif + +#define VIA_CUSTOM_LIGHTING_ENABLE diff --git a/keyboards/nachie/syndrome_ortho/halconf.h b/keyboards/nachie/syndrome_ortho/halconf.h new file mode 100644 index 0000000000..23c08453a8 --- /dev/null +++ b/keyboards/nachie/syndrome_ortho/halconf.h @@ -0,0 +1,4 @@ +#pragma once + +#include_next +#define HAL_USE_I2C TRUE \ No newline at end of file diff --git a/keyboards/nachie/syndrome_ortho/info.json b/keyboards/nachie/syndrome_ortho/info.json new file mode 100644 index 0000000000..397b8c2209 --- /dev/null +++ b/keyboards/nachie/syndrome_ortho/info.json @@ -0,0 +1,154 @@ +{ + "keyboard_name": "Syndrome Ortho", + "manufacturer": "Nachie", + "usb": { + "vid": "0x4B43", + "pid": "0x5360", + "device_version": "1.0.0" + }, + "board": "GENERIC_RP_RP2040", + "bootloader": "rp2040", + "processor": "RP2040", + "url": "https://littlecraftery.com/products/syndrome-ortho", + "maintainer": "nachie", + "ws2812": { + "pin": "GP29", + "driver": "vendor" + }, + "rgb_matrix": { + "driver": "ws2812", + "led_count": 16, + "animations": { + "alphas_mods": true, + "gradient_up_down": true, + "gradient_left_right": true, + "breathing": true, + "band_sat": true, + "band_val": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_up_down": true, + "rainbow_moving_chevron":true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "rainbow_pinwheels": true, + "raindrops": true, + "jellybean_raindrops": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "typing_heatmap": true, + "digital_rain": true, + "solid_reactive_simple": true, + "solid_reactive": true, + "solid_reactive_wide": true, + "solid_reactive_multiwide": true, + "solid_reactive_cross": true, + "solid_reactive_multicross": true, + "solid_reactive_nexus": true, + "solid_reactive_multinexus": true, + "splash": true, + "solid_splash": true, + "solid_multisplash": true, + "pixel_rain": true, + "pixel_fractal": true + } + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"y": 0, "x": 0, "matrix": [8, 5], "label": "8,5"}, + {"y": 0, "x": 7, "matrix": [9, 5], "label": "9,5"}, + {"y": 0, "x": 8, "matrix": [8, 6], "label": "8,6"}, + {"y": 0, "x": 9, "matrix": [9, 6], "label": "9,6"}, + {"y": 0, "x": 10, "matrix": [8, 7], "label": "8,7"}, + {"y": 1.5, "x": 0, "matrix": [0, 0], "label": "0,0"}, + {"y": 1.5, "x": 1, "matrix": [1, 0], "label": "1,0"}, + {"y": 1.5, "x": 2, "matrix": [0, 1], "label": "0,1"}, + {"y": 1.5, "x": 3, "matrix": [1, 1], "label": "1,1"}, + {"y": 1.5, "x": 4, "matrix": [0, 2], "label": "0,2"}, + {"y": 1.5, "x": 5, "matrix": [1, 2], "label": "1,2"}, + {"y": 1.5, "x": 6, "matrix": [0, 3], "label": "0,3"}, + {"y": 1.5, "x": 7, "matrix": [1, 3], "label": "1,3"}, + {"y": 1.5, "x": 8, "matrix": [0, 4], "label": "0,4"}, + {"y": 1.5, "x": 9, "matrix": [1, 4], "label": "1,4"}, + {"y": 1.5, "x": 10, "matrix": [0, 5], "label": "0,5"}, + {"y": 2.5, "x": 0, "matrix": [2, 0], "label": "2,0"}, + {"y": 2.5, "x": 1, "matrix": [3, 0], "label": "3,0"}, + {"y": 2.5, "x": 2, "matrix": [2, 1], "label": "2,1"}, + {"y": 2.5, "x": 3, "matrix": [3, 1], "label": "3,1"}, + {"y": 2.5, "x": 4, "matrix": [2, 2], "label": "2,2"}, + {"y": 2.5, "x": 5, "matrix": [3, 2], "label": "3,2"}, + {"y": 2.5, "x": 6, "matrix": [2, 3], "label": "2,3"}, + {"y": 2.5, "x": 7, "matrix": [3, 3], "label": "3,3"}, + {"y": 2.5, "x": 8, "matrix": [2, 4], "label": "2,4"}, + {"y": 2.5, "x": 9, "matrix": [3, 4], "label": "3,4"}, + {"y": 2.5, "x": 10, "matrix": [2, 5], "label": "2,5"}, + {"y": 3.5, "x": 0, "matrix": [4, 0], "label": "4,0"}, + {"y": 3.5, "x": 1, "matrix": [5, 0], "label": "5,0"}, + {"y": 3.5, "x": 2, "matrix": [4, 1], "label": "4,1"}, + {"y": 3.5, "x": 3, "matrix": [5, 1], "label": "5,1"}, + {"y": 3.5, "x": 4, "matrix": [4, 2], "label": "4,2"}, + {"y": 3.5, "x": 5, "matrix": [5, 2], "label": "5,2"}, + {"y": 3.5, "x": 6, "matrix": [4, 3], "label": "4,3"}, + {"y": 3.5, "x": 7, "matrix": [5, 3], "label": "5,3"}, + {"y": 3.5, "x": 8, "matrix": [4, 4], "label": "4,4"}, + {"y": 3.5, "x": 9, "matrix": [5, 4], "label": "5,4"}, + {"y": 3.5, "x": 10, "matrix": [4, 5], "label": "4,5"}, + {"y": 4.5, "x": 0, "matrix": [6, 0], "w": 1.5, "label": "6,0"}, + {"y": 4.5, "x": 1.5, "matrix": [7, 0], "label": "7,0"}, + {"y": 4.5, "x": 2.5, "matrix": [6, 1], "label": "6,1"}, + {"y": 4.5, "x": 3.5, "matrix": [7, 1], "label": "7,1"}, + {"y": 4.5, "x": 4.5, "matrix": [6, 2], "label": "6,2"}, + {"y": 4.5, "x": 4.5, "matrix": [6, 3], "w": 2, "label": "6,3"}, + {"y": 4.5, "x": 5.5, "matrix": [7, 2], "label": "7,2"}, + {"y": 4.5, "x": 6.5, "matrix": [7, 3], "label": "7,3"}, + {"y": 4.5, "x": 7.5, "matrix": [6, 4], "label": "6,4"}, + {"y": 4.5, "x": 8.5, "matrix": [7, 4], "label": "7,4"}, + {"y": 4.5, "x": 9.5, "matrix": [6, 5], "w": 1.5, "label": "6,5"} + ] + } + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": false, + "audio": false, + "backlight": false, + "rgblight": false, + "encoder": true, + "rgb_matrix": true, + "haptic": true, + "oled": true, + "wpm": true + }, + "build": { + "lto": true + }, + "haptic": { + "driver": "solenoid" + }, + "encoder": { + "enabled": true, + "rotary": [ + { "pin_a": "GP22", "pin_b": "GP23", "resolution": 2 }, + { "pin_a": "GP26", "pin_b": "GP24", "resolution": 2 }, + { "pin_a": "GP0", "pin_b": "GP1", "resolution": 2 }, + { "pin_a": "GP5", "pin_b": "GP3", "resolution": 2 } + ] + }, + "diode_direction": "COL2ROW", + "matrix_pins": { + "cols": ["GP28", "GP21", "GP20", "GP6", "GP2", "GP12", "GP13", "GP14"], + "rows": ["GP25", "GP27", "GP16", "GP7", "GP17", "GP18", "GP19", "GP4", "GP8", "GP9"] + } +} diff --git a/keyboards/nachie/syndrome_ortho/keyboard.json b/keyboards/nachie/syndrome_ortho/keyboard.json new file mode 100644 index 0000000000..397b8c2209 --- /dev/null +++ b/keyboards/nachie/syndrome_ortho/keyboard.json @@ -0,0 +1,154 @@ +{ + "keyboard_name": "Syndrome Ortho", + "manufacturer": "Nachie", + "usb": { + "vid": "0x4B43", + "pid": "0x5360", + "device_version": "1.0.0" + }, + "board": "GENERIC_RP_RP2040", + "bootloader": "rp2040", + "processor": "RP2040", + "url": "https://littlecraftery.com/products/syndrome-ortho", + "maintainer": "nachie", + "ws2812": { + "pin": "GP29", + "driver": "vendor" + }, + "rgb_matrix": { + "driver": "ws2812", + "led_count": 16, + "animations": { + "alphas_mods": true, + "gradient_up_down": true, + "gradient_left_right": true, + "breathing": true, + "band_sat": true, + "band_val": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_up_down": true, + "rainbow_moving_chevron":true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "rainbow_pinwheels": true, + "raindrops": true, + "jellybean_raindrops": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "typing_heatmap": true, + "digital_rain": true, + "solid_reactive_simple": true, + "solid_reactive": true, + "solid_reactive_wide": true, + "solid_reactive_multiwide": true, + "solid_reactive_cross": true, + "solid_reactive_multicross": true, + "solid_reactive_nexus": true, + "solid_reactive_multinexus": true, + "splash": true, + "solid_splash": true, + "solid_multisplash": true, + "pixel_rain": true, + "pixel_fractal": true + } + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"y": 0, "x": 0, "matrix": [8, 5], "label": "8,5"}, + {"y": 0, "x": 7, "matrix": [9, 5], "label": "9,5"}, + {"y": 0, "x": 8, "matrix": [8, 6], "label": "8,6"}, + {"y": 0, "x": 9, "matrix": [9, 6], "label": "9,6"}, + {"y": 0, "x": 10, "matrix": [8, 7], "label": "8,7"}, + {"y": 1.5, "x": 0, "matrix": [0, 0], "label": "0,0"}, + {"y": 1.5, "x": 1, "matrix": [1, 0], "label": "1,0"}, + {"y": 1.5, "x": 2, "matrix": [0, 1], "label": "0,1"}, + {"y": 1.5, "x": 3, "matrix": [1, 1], "label": "1,1"}, + {"y": 1.5, "x": 4, "matrix": [0, 2], "label": "0,2"}, + {"y": 1.5, "x": 5, "matrix": [1, 2], "label": "1,2"}, + {"y": 1.5, "x": 6, "matrix": [0, 3], "label": "0,3"}, + {"y": 1.5, "x": 7, "matrix": [1, 3], "label": "1,3"}, + {"y": 1.5, "x": 8, "matrix": [0, 4], "label": "0,4"}, + {"y": 1.5, "x": 9, "matrix": [1, 4], "label": "1,4"}, + {"y": 1.5, "x": 10, "matrix": [0, 5], "label": "0,5"}, + {"y": 2.5, "x": 0, "matrix": [2, 0], "label": "2,0"}, + {"y": 2.5, "x": 1, "matrix": [3, 0], "label": "3,0"}, + {"y": 2.5, "x": 2, "matrix": [2, 1], "label": "2,1"}, + {"y": 2.5, "x": 3, "matrix": [3, 1], "label": "3,1"}, + {"y": 2.5, "x": 4, "matrix": [2, 2], "label": "2,2"}, + {"y": 2.5, "x": 5, "matrix": [3, 2], "label": "3,2"}, + {"y": 2.5, "x": 6, "matrix": [2, 3], "label": "2,3"}, + {"y": 2.5, "x": 7, "matrix": [3, 3], "label": "3,3"}, + {"y": 2.5, "x": 8, "matrix": [2, 4], "label": "2,4"}, + {"y": 2.5, "x": 9, "matrix": [3, 4], "label": "3,4"}, + {"y": 2.5, "x": 10, "matrix": [2, 5], "label": "2,5"}, + {"y": 3.5, "x": 0, "matrix": [4, 0], "label": "4,0"}, + {"y": 3.5, "x": 1, "matrix": [5, 0], "label": "5,0"}, + {"y": 3.5, "x": 2, "matrix": [4, 1], "label": "4,1"}, + {"y": 3.5, "x": 3, "matrix": [5, 1], "label": "5,1"}, + {"y": 3.5, "x": 4, "matrix": [4, 2], "label": "4,2"}, + {"y": 3.5, "x": 5, "matrix": [5, 2], "label": "5,2"}, + {"y": 3.5, "x": 6, "matrix": [4, 3], "label": "4,3"}, + {"y": 3.5, "x": 7, "matrix": [5, 3], "label": "5,3"}, + {"y": 3.5, "x": 8, "matrix": [4, 4], "label": "4,4"}, + {"y": 3.5, "x": 9, "matrix": [5, 4], "label": "5,4"}, + {"y": 3.5, "x": 10, "matrix": [4, 5], "label": "4,5"}, + {"y": 4.5, "x": 0, "matrix": [6, 0], "w": 1.5, "label": "6,0"}, + {"y": 4.5, "x": 1.5, "matrix": [7, 0], "label": "7,0"}, + {"y": 4.5, "x": 2.5, "matrix": [6, 1], "label": "6,1"}, + {"y": 4.5, "x": 3.5, "matrix": [7, 1], "label": "7,1"}, + {"y": 4.5, "x": 4.5, "matrix": [6, 2], "label": "6,2"}, + {"y": 4.5, "x": 4.5, "matrix": [6, 3], "w": 2, "label": "6,3"}, + {"y": 4.5, "x": 5.5, "matrix": [7, 2], "label": "7,2"}, + {"y": 4.5, "x": 6.5, "matrix": [7, 3], "label": "7,3"}, + {"y": 4.5, "x": 7.5, "matrix": [6, 4], "label": "6,4"}, + {"y": 4.5, "x": 8.5, "matrix": [7, 4], "label": "7,4"}, + {"y": 4.5, "x": 9.5, "matrix": [6, 5], "w": 1.5, "label": "6,5"} + ] + } + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": false, + "audio": false, + "backlight": false, + "rgblight": false, + "encoder": true, + "rgb_matrix": true, + "haptic": true, + "oled": true, + "wpm": true + }, + "build": { + "lto": true + }, + "haptic": { + "driver": "solenoid" + }, + "encoder": { + "enabled": true, + "rotary": [ + { "pin_a": "GP22", "pin_b": "GP23", "resolution": 2 }, + { "pin_a": "GP26", "pin_b": "GP24", "resolution": 2 }, + { "pin_a": "GP0", "pin_b": "GP1", "resolution": 2 }, + { "pin_a": "GP5", "pin_b": "GP3", "resolution": 2 } + ] + }, + "diode_direction": "COL2ROW", + "matrix_pins": { + "cols": ["GP28", "GP21", "GP20", "GP6", "GP2", "GP12", "GP13", "GP14"], + "rows": ["GP25", "GP27", "GP16", "GP7", "GP17", "GP18", "GP19", "GP4", "GP8", "GP9"] + } +} diff --git a/keyboards/nachie/syndrome_ortho/keymaps/default/keymap.c b/keyboards/nachie/syndrome_ortho/keymaps/default/keymap.c new file mode 100755 index 0000000000..cc7dcb2934 --- /dev/null +++ b/keyboards/nachie/syndrome_ortho/keymaps/default/keymap.c @@ -0,0 +1,28 @@ +/* +Copyright 2024 Nachie + +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 */ + LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_SPC, KC_H, KC_J, KC_K, KC_L, KC_ENT, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_SPC, KC_N, KC_M, KC_DOT, KC_LSFT, MO(1), + KC_LGUI, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_BSPC, KC_SPC, KC_SPC, KC_BSPC, KC_RGUI, MO(1)) +}; diff --git a/keyboards/nachie/syndrome_ortho/keymaps/default/readme.md b/keyboards/nachie/syndrome_ortho/keymaps/default/readme.md new file mode 100644 index 0000000000..bdaa70b6e3 --- /dev/null +++ b/keyboards/nachie/syndrome_ortho/keymaps/default/readme.md @@ -0,0 +1 @@ +The default keymap for the Syndrome Ortho. \ No newline at end of file diff --git a/keyboards/nachie/syndrome_ortho/keymaps/vial/config.h b/keyboards/nachie/syndrome_ortho/keymaps/vial/config.h new file mode 100644 index 0000000000..60cacf763c --- /dev/null +++ b/keyboards/nachie/syndrome_ortho/keymaps/vial/config.h @@ -0,0 +1,13 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#pragma once + +#define VIA_EEPROM_LAYOUT_OPTIONS_SIZE 2 + +#define VIAL_KEYBOARD_UID {0xC9, 0x3D, 0x14, 0x32, 0x17, 0xA3, 0xD1, 0x9D} + +#define VIAL_UNLOCK_COMBO_ROWS { 0, 3 } +#define VIAL_UNLOCK_COMBO_COLS { 0, 4 } + +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS +#define RGB_MATRIX_KEYPRESSES \ No newline at end of file diff --git a/keyboards/nachie/syndrome_ortho/keymaps/vial/keymap.c b/keyboards/nachie/syndrome_ortho/keymaps/vial/keymap.c new file mode 100755 index 0000000000..d5a1298178 --- /dev/null +++ b/keyboards/nachie/syndrome_ortho/keymaps/vial/keymap.c @@ -0,0 +1,492 @@ +/* +Copyright 2024 Nachie + +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 + +#include +#include "os_detection.h" + +#ifdef OLED_ENABLE +void render_key_status_or_logo(void); +void render_current_layer(void); +void render_current_wpm(void); +#endif + +os_variant_t current_platform; +bool is_alt_tab_active = false; +uint16_t alt_tab_timer = 0; + +enum layer_names { + _BASE, // Default Layer + _FN, // Fn Layer 1 + _FN2, // Fn Layer 2 + _FN3 // Fn Layer 3 +}; + +enum custom_keycode { + JWRDL = QK_KB_0, + JWRDR, + SWRDL, + SWRDR, + TABL, + TABR, + DSKTPL, + DSKTPR, + PRVAPP, + NXTAPP +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_HOME: + if (record->event.pressed && current_platform == OS_MACOS) { + register_mods(MOD_LGUI); + tap_code(KC_LEFT); + unregister_mods(MOD_LGUI); + } else { + tap_code(KC_HOME); + } + break; + case KC_END: + if (record->event.pressed && current_platform == OS_MACOS) { + register_mods(MOD_LGUI); + tap_code(KC_RIGHT); + unregister_mods(MOD_LGUI); + } else { + tap_code(KC_END); + } + break; + case KC_PGUP: + if (record->event.pressed && current_platform == OS_MACOS) { + register_mods(MOD_LGUI); + tap_code(KC_UP); + unregister_mods(MOD_LGUI); + } else { + tap_code(KC_PGUP); + } + break; + case KC_PGDN: + if (record->event.pressed && current_platform == OS_MACOS) { + register_mods(MOD_LGUI); + tap_code(KC_DOWN); + unregister_mods(MOD_LGUI); + } else { + tap_code(KC_PGDN); + } + break; + case KC_NUM_LOCK: + if (record->event.pressed && current_platform == OS_MACOS) { + register_mods(MOD_LSFT); + tap_code(KC_CLEAR); + unregister_mods(MOD_LSFT); + } else { + tap_code(KC_NUM_LOCK); + } + break; + case KC_SCROLL_LOCK: + if (record->event.pressed && current_platform == OS_MACOS) { + register_mods(MOD_LCTL); + tap_code(KC_F14); + unregister_mods(MOD_LCTL); + } else { + tap_code(KC_SCROLL_LOCK); + } + break; + case KC_PRINT_SCREEN: + if (record->event.pressed && current_platform == OS_MACOS) { + register_mods(MOD_LSFT); + register_mods(MOD_LGUI); + tap_code(KC_5); + unregister_mods(MOD_LGUI); + unregister_mods(MOD_LSFT); + } else { + tap_code(KC_PRINT_SCREEN); + } + break; + case JWRDL: + if (record->event.pressed) { + (current_platform == OS_MACOS) ? register_mods(MOD_LALT) : register_mods(MOD_LCTL); + tap_code(KC_LEFT); + (current_platform == OS_MACOS) ? unregister_mods(MOD_LALT) : unregister_mods(MOD_LCTL); + } else { + } + break; + case JWRDR: + if (record->event.pressed) { + (current_platform == OS_MACOS) ? register_mods(MOD_LALT) : register_mods(MOD_LCTL); + tap_code(KC_RIGHT); + (current_platform == OS_MACOS) ? unregister_mods(MOD_LALT) : unregister_mods(MOD_LCTL); + } else { + } + break; + case SWRDL: + if (record->event.pressed) { + register_mods(MOD_LSFT); + (current_platform == OS_MACOS) ? register_mods(MOD_LALT) : register_mods(MOD_LCTL); + tap_code(KC_LEFT); + (current_platform == OS_MACOS) ? unregister_mods(MOD_LALT) : unregister_mods(MOD_LCTL); + unregister_mods(MOD_LSFT); + } else { + } + break; + case SWRDR: + if (record->event.pressed) { + register_mods(MOD_LSFT); + (current_platform == OS_MACOS) ? register_mods(MOD_LALT) : register_mods(MOD_LCTL); + tap_code(KC_RIGHT); + (current_platform == OS_MACOS) ? unregister_mods(MOD_LALT) : unregister_mods(MOD_LCTL); + unregister_mods(MOD_LSFT); + } else { + } + break; + case TABL: + if (record->event.pressed) { + register_mods(MOD_LCTL); + register_mods(MOD_LSFT); + tap_code(KC_TAB); + unregister_mods(MOD_LSFT); + unregister_mods(MOD_LCTL); + } else { + } + break; + case TABR: + if (record->event.pressed) { + register_mods(MOD_LCTL); + tap_code(KC_TAB); + unregister_mods(MOD_LCTL); + } else { + } + break; + case DSKTPL: + if (record->event.pressed) { + register_mods(MOD_LCTL); + register_mods(MOD_LGUI); + (current_platform == OS_LINUX) ? tap_code(KC_UP) : tap_code(KC_LEFT); + unregister_mods(MOD_LGUI); + unregister_mods(MOD_LCTL); + } else { + } + break; + case DSKTPR: + if (record->event.pressed) { + register_mods(MOD_LCTL); + register_mods(MOD_LGUI); + (current_platform == OS_LINUX) ? tap_code(KC_DOWN) : tap_code(KC_RGHT); + unregister_mods(MOD_LGUI); + unregister_mods(MOD_LCTL); + } else { + } + break; + case PRVAPP: + if (record->event.pressed) { + register_code(KC_LSFT); + if (!is_alt_tab_active) { + is_alt_tab_active = true; + (current_platform == OS_MACOS) ? register_code(KC_LGUI) : register_code(KC_LALT); + } + alt_tab_timer = timer_read(); + register_code(KC_TAB); + } else { + unregister_code(KC_TAB); + unregister_code(KC_LSFT); + } + break; + case NXTAPP: + if (record->event.pressed) { + if (!is_alt_tab_active) { + is_alt_tab_active = true; + (current_platform == OS_MACOS) ? register_code(KC_LGUI) : register_code(KC_LALT); + } + alt_tab_timer = timer_read(); + register_code(KC_TAB); + } else { + unregister_code(KC_TAB); + } + break; + } + return true; +}; + +#ifndef HAPTIC_ENABLE + #define HF_TOGG _______ +#endif + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* QWERTY */ + [_BASE] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_SPC, KC_H, KC_J, KC_K, KC_L, KC_ENT, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_SPC, KC_N, KC_M, KC_DOT, KC_LSFT, MO(1), + KC_LGUI, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_BSPC, KC_SPC, KC_SPC, KC_BSPC, KC_RGUI, MO(2)), + + /* FUNCTION */ + [_FN] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_SPC, KC_H, KC_J, KC_K, KC_L, KC_ENT, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_SPC, KC_N, KC_M, KC_DOT, KC_LSFT, MO(1), + KC_LGUI, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_BSPC, KC_SPC, KC_SPC, KC_BSPC, KC_RGUI, MO(1)), + + [_FN2] = LAYOUT( + KC_ESC, QK_BOOTLOADER, QK_REBOOT, QK_DEBUG_TOGGLE, QK_CLEAR_EEPROM, + HF_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + + [_FN3] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) +}; + +void matrix_scan_user(void) { // The very important timer. + if (is_alt_tab_active) { + if (timer_elapsed(alt_tab_timer) > 1000) { + (current_platform == OS_MACOS) ? unregister_code(KC_LGUI) : unregister_code(KC_LALT); + is_alt_tab_active = false; + } + } +} + +#if defined(ENCODER_MAP_ENABLE) + const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [_FN] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(RGB_RMOD, RGB_MOD) }, + [_FN2] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [_FN3] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + }; +#endif + +#ifdef OLED_ENABLE + #ifdef DYNAMIC_MACRO_ENABLE + bool macro1; + bool macro1rec; + bool macro2; + bool macro2rec; + bool prevEnabled; + uint8_t prevRGBmode; + + void render_dynamic_macro_status(int col, int line){ + oled_set_cursor(col,line); + macro1rec ? oled_write(PSTR("DM1"), macro1) : oled_write(PSTR(" "),false); + oled_set_cursor(col,line+1); + macro2rec ? oled_write(PSTR("DM2"), macro2) : oled_write(PSTR(" "),false); + } + + //direction indicates which macro it is, with 1 being Macro 1, -1 being Macro 2, and 0 being no macro. + void dynamic_macro_record_start_user(int8_t direction){ + prevEnabled = rgb_matrix_is_enabled(); + if (!prevEnabled) { rgb_matrix_enable(); } + prevRGBmode = rgb_matrix_get_mode(); + rgb_matrix_mode(RGB_MATRIX_BREATHING); + switch(direction){ + case 1: + macro1 = false; + macro1rec = true; + break; + case -1: + macro2 = false; + macro2rec = true; + break; + default: + macro1 = false; + macro2 = false; + macro1rec = false; + macro2rec = false; + break; + } + } + + void dynamic_macro_record_end_user(int8_t direction){ + prevEnabled ? rgb_matrix_mode(prevRGBmode) : rgb_matrix_disable(); + switch(direction){ + case 1: + macro1 = true; + break; + case -1: + macro2 = true; + break; + default: + macro1 = false; + macro2 = false; + break; + } + } + #endif + + bool clear_screen = false; + bool rerender_platform = false; + + static void render_logo(void) { + static const char PROGMEM logo[] = { + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, + 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, + 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00 + }; + + oled_write(logo, false); + } + + void render_keylock_status(led_t led_state) { + bool caps_state = (led_state.caps_lock || is_caps_word_on()); + oled_write(PSTR("CAPS"), caps_state); + oled_write(PSTR(" "), false); + oled_write(PSTR("NUM"), led_state.num_lock); + oled_write(PSTR(" "), false); + oled_write(PSTR("SCRL"), led_state.scroll_lock); + //oled_write_ln_P(PSTR(" "), false); + } + + void render_mod_status(uint8_t modifiers) { + oled_write(PSTR("SH"), (modifiers & MOD_MASK_SHIFT)); + oled_write(PSTR(" "), false); + (current_platform == OS_MACOS || current_platform == OS_IOS) ? oled_write(PSTR("CMD"), (modifiers & MOD_MASK_GUI)) : oled_write(PSTR("CT"), (modifiers & MOD_MASK_CTRL)); + oled_write(PSTR(" "), false); + (current_platform == OS_MACOS || current_platform == OS_IOS) ? oled_write(PSTR("OPT"), (modifiers & MOD_MASK_ALT)) : oled_write(PSTR("ALT"), (modifiers & MOD_MASK_ALT)); + oled_write(PSTR(" "), false); + (current_platform == OS_MACOS || current_platform == OS_IOS) ? oled_write(PSTR("CT"), (modifiers & MOD_MASK_CTRL)) : oled_write(PSTR("GUI"), (modifiers & MOD_MASK_GUI)); + } + + void render_key_status_or_logo(){ + led_t led_state = host_keyboard_led_state(); + uint8_t mod_state = (get_mods()|get_oneshot_mods()); + if ( !led_state.num_lock && !led_state.caps_lock && !led_state.scroll_lock + && !(mod_state & MOD_MASK_SHIFT) && !(mod_state & MOD_MASK_ALT) && !(mod_state & MOD_MASK_CTRL) && !(mod_state & MOD_MASK_GUI)) { + if(!clear_screen) { + render_logo(); + rerender_platform = true; + } + clear_screen = true; + } else { + if (clear_screen == true) { + oled_clear(); + oled_render(); + clear_screen = false; + } + oled_set_cursor(8,0); + render_keylock_status(led_state); + oled_set_cursor(8,1); + render_mod_status(mod_state); + rerender_platform = true; + } + + } + + void render_current_layer(){ + switch (get_highest_layer(layer_state)) { + case 0: + oled_write(PSTR("Layer 0"), false); + break; + case 1: + oled_write(PSTR("Layer 1"), false); + break; + case 2: + oled_write(PSTR("Layer 2"), false); + break; + case 3: + oled_write(PSTR("Layer 3"), false); + break; + default: + oled_write(PSTR("Layer ?"), false); // Should never display, here as a catchall + } + } + + void render_current_wpm(){ + oled_write_P(PSTR("WPM: "), false); + oled_write(get_u8_str(get_current_wpm(), '0'), false); + } + + void render_platform_status(int col, int line) { + /* Show Ctrl-Gui Swap options */ + static const char PROGMEM logo[][5][3] = { + {{0x9B, 0x9C, 0}, {0xbb, 0xbc, 0}}, //Android + {{0x99, 0x9A, 0}, {0xb9, 0xba, 0}}, //Linux + {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}}, //Windows + {{0x95, 0x96, 0}, {0xb5, 0xb6, 0}}, //Mac/iOS + {{0x9D, 0x9E, 0}, {0xbd, 0xbe, 0}}, //Empty Placeholder + }; + current_platform = detected_host_os(); + switch (current_platform) { + /*case OS_ANDROID: //Android + oled_set_cursor(col,line); + oled_write(logo[0][0], false); + oled_set_cursor(col,line+1); + oled_write(logo[0][1], false); + break;*/ + case OS_LINUX: //Linux + oled_set_cursor(col,line); + oled_write(logo[1][0], false); + oled_set_cursor(col,line+1); + oled_write(logo[1][1], false); + keymap_config.swap_lctl_lgui = false; + keymap_config.swap_rctl_rgui = false; + break; + case OS_WINDOWS: //Windows + oled_set_cursor(col,line); + oled_write(logo[2][0], false); + oled_set_cursor(col,line+1); + oled_write(logo[2][1], false); + keymap_config.swap_lctl_lgui = false; + keymap_config.swap_rctl_rgui = false; + break; + case OS_MACOS: //Mac + oled_set_cursor(col,line); + oled_write(logo[3][0], false); + oled_set_cursor(col,line+1); + oled_write(logo[3][1], false); + keymap_config.swap_lctl_lgui = true; + keymap_config.swap_rctl_rgui = true; + break; + case OS_IOS: //iOS + oled_set_cursor(col,line); + oled_write(logo[3][0], false); + oled_set_cursor(col,line+1); + oled_write(logo[3][1], false); + keymap_config.swap_lctl_lgui = true; + keymap_config.swap_rctl_rgui = true; + break; + default: //OS_UNSURE or not configured + oled_set_cursor(col,line); + oled_write(logo[4][0], false); + oled_set_cursor(col,line+1); + oled_write(logo[4][1], false); + break; + } + rerender_platform = false; + } + + bool oled_task_user(void) { + render_key_status_or_logo(); + oled_set_cursor(8,2); + render_current_layer(); + #ifdef DYNAMIC_MACRO_ENABLE + render_dynamic_macro_status(18,2); + #endif + oled_set_cursor(8,3); + render_current_wpm(); + #ifdef OS_DETECTION_ENABLE + if(current_platform != detected_host_os() || rerender_platform) { render_platform_status(3,0); } + #endif + + return false; + } + +#endif diff --git a/keyboards/nachie/syndrome_ortho/keymaps/vial/readme.md b/keyboards/nachie/syndrome_ortho/keymaps/vial/readme.md new file mode 100644 index 0000000000..eb6fef76ce --- /dev/null +++ b/keyboards/nachie/syndrome_ortho/keymaps/vial/readme.md @@ -0,0 +1 @@ +The via keymap for the Syndrome Ortho PCB. \ No newline at end of file diff --git a/keyboards/nachie/syndrome_ortho/keymaps/vial/rules.mk b/keyboards/nachie/syndrome_ortho/keymaps/vial/rules.mk new file mode 100644 index 0000000000..9f6eb0c0b1 --- /dev/null +++ b/keyboards/nachie/syndrome_ortho/keymaps/vial/rules.mk @@ -0,0 +1,10 @@ +VIA_ENABLE = yes +VIAL_ENABLE = yes + +VIALRGB_ENABLE = yes +ENCODER_MAP_ENABLE = yes +BOOTMAGIC_ENABLE = yes +MAGIC_ENABLE = yes +OS_DETECTION_ENABLE = yes +DYNAMIC_MACRO_ENABLE = yes +CAPS_WORD_ENABLE = yes diff --git a/keyboards/nachie/syndrome_ortho/keymaps/vial/vial.json b/keyboards/nachie/syndrome_ortho/keymaps/vial/vial.json new file mode 100644 index 0000000000..a5a15ec4ce --- /dev/null +++ b/keyboards/nachie/syndrome_ortho/keymaps/vial/vial.json @@ -0,0 +1,302 @@ +{ + "name": "Syndrome", + "vendorId": "0x4B43", + "productId": "0x5360", + "customKeycodes": [ + { + "name": "JmpWordL", + "title": "Jump Word Left", + "shortName": "JWRDL" + }, + { + "name": "JmpWordR", + "title": "Jump Word Right", + "shortName": "JWRDR" + }, + { + "name": "SlcWordL", + "title": "Select Word Left", + "shortName": "SWRDL" + }, + { + "name": "SlcWordR", + "title": "Select Word Right", + "shortName": "SWRDR" + }, + { + "name": "TabLft", + "title": "Tab Left", + "shortName": "TABL" + }, + { + "name": "TabRght", + "title": "Tab Right", + "shortName": "TABR" + }, + { + "name": "DsktpLft", + "title": "Desktop Left", + "shortName": "DSKTPL" + }, + { + "name": "DsktpRght", + "title": "Desktop Right", + "shortName": "DSKTPR" + }, + { + "name": "PrevApp", + "title": "Previous App", + "shortName": "PRVAPP" + }, + { + "name": "NextApp", + "title": "Next App", + "shortName": "NXTAPP" + } + ], + "matrix": { "rows": 10, "cols": 8 }, + "lighting": "vialrgb", + "layouts": { + "labels":[ + [ + "Bottom Row", + "All 1U", + "2U Centered Space", + "6U Big Bar", + "3U/3U", + "2U/2U", + "1.75U/1.75U" + ], + "Alpha Stagger", + "R1 Encoder", + "R2 Encoder", + "R3 Encoder", + "Macro Row" + ], + "keymap": [ + [ + { + "y": 2.5, + "x": 2 + }, + "3,0\n\n\n\n\n\n\n\n\ne", + "3,1\n\n\n\n\n\n\n\n\ne" + ], + [ + { + "x": 2.5 + }, + "8,5\n\n\n5,0", + { + "x": 6 + }, + "9,5\n\n\n5,0", + "8,6\n\n\n5,0", + "9,6\n\n\n5,0", + "8,7\n\n\n5,0" + ], + [ + { + "y": 0.5, + "x": 2.5 + }, + "0,0", + "1,0", + "0,1", + "1,1", + "0,2", + "1,2", + "0,3", + "1,3", + "0,4", + "1,4", + "0,5", + { + "x": 0.75, + "d": true + }, + "0,0\n\n\n2,0\n\n\n\n\n\ne", + { + "d": true + }, + "0,1\n\n\n2,0\n\n\n\n\n\ne", + "0,0\n\n\n2,1\n\n\n\n\n\ne", + "0,1\n\n\n2,1\n\n\n\n\n\ne" + ], + [ + { + "x": 2.5, + "c": "#aaaaaa" + }, + "2,0", + { + "c": "#cccccc" + }, + "3,0", + "2,1", + "3,1", + "2,2", + "3,2", + "2,3", + "3,3", + "2,4", + { + "c": "#777777" + }, + "3,4", + "2,5", + { + "x": 0.75, + "c": "#cccccc", + "d": true + }, + "1,0\n\n\n3,0\n\n\n\n\n\ne", + { + "d": true + }, + "1,1\n\n\n3,0\n\n\n\n\n\ne", + "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.5, + "c": "#aaaaaa" + }, + "4,0\n\n\n1,0", + { + "c": "#cccccc" + }, + "5,0\n\n\n1,0", + "4,1\n\n\n1,0", + "5,1\n\n\n1,0", + "4,2\n\n\n1,0", + "5,2", + "4,3\n\n\n1,0", + "5,3\n\n\n1,0", + "4,4\n\n\n1,0", + { + "c": "#aaaaaa" + }, + "5,4\n\n\n1,0", + "4,5\n\n\n1,0", + { + "x": 0.75, + "c": "#cccccc", + "d": true + }, + "2,0\n\n\n4,0\n\n\n\n\n\ne", + { + "d": true + }, + "2,1\n\n\n4,0\n\n\n\n\n\ne", + "2,0\n\n\n4,1\n\n\n\n\n\ne", + "2,1\n\n\n4,1\n\n\n\n\n\ne" + ], + [ + { + "x": 2.5, + "w": 1.5 + }, + "6,0", + "7,0", + "6,1\n\n\n0,0", + "7,1\n\n\n0,0", + "6,2\n\n\n0,0", + "7,2\n\n\n0,0", + "7,3\n\n\n0,0", + "6,4\n\n\n0,0", + "7,4", + { + "w": 1.5 + }, + "6,5" + ], + [ + { + "x": 5 + }, + "6,1\n\n\n0,1", + "7,1\n\n\n0,1", + { + "w": 2 + }, + "6,3\n\n\n0,1", + "7,3\n\n\n0,1", + "6,4\n\n\n0,1" + ], + [ + { + "x": 5, + "w": 6 + }, + "6,3\n\n\n0,2" + ], + [ + { + "x": 5, + "w": 3 + }, + "7,1\n\n\n0,3", + { + "w": 3 + }, + "7,3\n\n\n0,3" + ], + [ + { + "x": 5 + }, + "6,1\n\n\n0,4", + { + "w": 2 + }, + "6,2\n\n\n0,4", + { + "w": 2 + }, + "7,3\n\n\n0,4", + "6,4\n\n\n0,4" + ], + [ + { + "x": 5, + "w": 1.25 + }, + "6,1\n\n\n0,5", + { + "w": 1.75 + }, + "6,2\n\n\n0,5", + { + "w": 1.75 + }, + "7,3\n\n\n0,5", + { + "w": 1.25 + }, + "6,4\n\n\n0,5" + ], + [ + { + "y": 1.25, + "x": 2.5, + "w": 1.5 + }, + "4,0\n\n\n1,1", + "5,0\n\n\n1,1", + "4,1\n\n\n1,1", + "5,1\n\n\n1,1", + "4,2\n\n\n1,1", + "4,3\n\n\n1,1", + "5,3\n\n\n1,1", + "4,4\n\n\n1,1", + "5,4\n\n\n1,1", + { + "w": 1.5 + }, + "4,5\n\n\n1,1" + ] + ] + } +} diff --git a/keyboards/nachie/syndrome_ortho/mcuconf.h b/keyboards/nachie/syndrome_ortho/mcuconf.h new file mode 100644 index 0000000000..771e56e0de --- /dev/null +++ b/keyboards/nachie/syndrome_ortho/mcuconf.h @@ -0,0 +1,9 @@ +#pragma once + +#include_next + +#undef RP_I2C_USE_I2C0 +#define RP_I2C_USE_I2C0 FALSE + +#undef RP_I2C_USE_I2C1 +#define RP_I2C_USE_I2C1 TRUE \ No newline at end of file diff --git a/keyboards/nachie/syndrome_ortho/readme.md b/keyboards/nachie/syndrome_ortho/readme.md new file mode 100644 index 0000000000..5c94323941 --- /dev/null +++ b/keyboards/nachie/syndrome_ortho/readme.md @@ -0,0 +1,23 @@ +# Syndrome Ortho + +Firmware for the Syndrome Ortho (and Detour) + +* Keyboard Maintainer: [Nachie](https://github.com/nachie) +* Hardware Supported: Syndrome Ortho +* Hardware Availability: [Little Craftery](https://littlecraftery.com/products/syndrome-ortho) + +Make example for this keyboard (after setting up your build environment): + + make nachie/syndrome_ortho:default + +Or to make and flash: + + make nachie/syndrome_ortho: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 + +* **Bootmagic reset**: Hold down ESC key (top left) and plug in the keyboard +* **Physical reset button**: Briefly press the button labeled "SW_RST1" on the back of the PCB diff --git a/keyboards/nachie/syndrome_ortho/rules.mk b/keyboards/nachie/syndrome_ortho/rules.mk new file mode 100755 index 0000000000..d45c132405 --- /dev/null +++ b/keyboards/nachie/syndrome_ortho/rules.mk @@ -0,0 +1,3 @@ +OLED_DRIVER = ssd1306 + +OPT_DEFS += -DHAL_USE_I2C=TRUE diff --git a/keyboards/nachie/syndrome_ortho/syndrome_ortho.c b/keyboards/nachie/syndrome_ortho/syndrome_ortho.c new file mode 100755 index 0000000000..ea88ac225b --- /dev/null +++ b/keyboards/nachie/syndrome_ortho/syndrome_ortho.c @@ -0,0 +1,89 @@ +/* +Copyright 2024 Nachie + +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 "quantum.h" + + +led_config_t g_led_config = { { + {NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED}, + { 6, 5, 4, 3, 2, 1, 0, NO_LED }, + { 7, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 15 }, + { 8 , 9, NO_LED, 10, 11, 12, 13, 14 }, + { NO_LED, NO_LED, NO_LED,NO_LED, NO_LED, NO_LED, NO_LED, NO_LED } +}, { + { 183,0 }, { 162,0 }, { 142,0 }, { 122,0 }, { 81,0 }, { 61,0 }, { 40,0 }, + { 20,16 }, { 40,48 }, + { 61,48 }, { 81,48 }, { 101,48 }, { 122,48 }, { 162,48 }, { 203,48 }, { 244,16 } +}, { + 1, 1, 1, 1, 1, 1, 1, + 1, 1, + 1, 1, 1, 1, 1, 1, 1 +} }; + +#ifdef OLED_ENABLE + +static void render_logo(void) { + static const char PROGMEM my_logo[] = { + // 'Screenshot 2023-07-21 at 1', 128x32px +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xfe, 0x00, 0x03, 0xc0, 0x00, 0xc0, 0x00, 0x3c, 0x00, 0x0f, 0x1f, 0xf8, 0xe0, 0x00, 0x1f, 0xff, +0xff, 0x80, 0x01, 0xc0, 0x00, 0x40, 0x00, 0x38, 0x00, 0x07, 0x1f, 0xf8, 0xe0, 0x00, 0x1f, 0xff, +0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0x0f, 0xff, +0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0x8f, 0xff, +0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0x0f, 0xff, +0xfe, 0x1f, 0xf1, 0xc0, 0x03, 0xff, 0x8f, 0xf8, 0xff, 0xc7, 0x1f, 0xf8, 0xe1, 0xc0, 0x1f, 0xff, +0xfe, 0x1f, 0xf1, 0xc0, 0x03, 0xff, 0x8f, 0xf8, 0xff, 0xc7, 0x1f, 0xf8, 0xe1, 0xe0, 0x3f, 0xff, +0xfe, 0x1f, 0xf1, 0xc3, 0xff, 0xff, 0x8f, 0xf8, 0xff, 0xc7, 0x1f, 0xf8, 0xe1, 0xf0, 0xff, 0xff, +0xfe, 0x1f, 0xf1, 0xc3, 0xff, 0xff, 0x8f, 0xf8, 0xff, 0xc7, 0x1f, 0xf8, 0xe1, 0xf8, 0x7f, 0xff, +0xfe, 0x1f, 0xf1, 0xc3, 0xff, 0xff, 0x8f, 0xf8, 0xff, 0xc7, 0x1f, 0xf8, 0xe1, 0xf8, 0x7f, 0xff, +0xfe, 0x00, 0x01, 0xc0, 0x00, 0x7f, 0x8f, 0xf8, 0x00, 0x07, 0x00, 0x00, 0xe1, 0xfc, 0x3f, 0xff, +0xfe, 0x00, 0x03, 0xc0, 0x00, 0xff, 0x8f, 0xfc, 0x00, 0x0f, 0x80, 0x01, 0xe1, 0xfe, 0x1f, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff +}; + oled_write_raw_P(my_logo, sizeof(my_logo)); +} + +bool oled_task_kb(void) { + // Defer to the keymap if they want to override + + if(!oled_task_user()) { + return false; + } + + // default keyboard drawing code + render_logo(); + return false; +} + +#endif \ No newline at end of file diff --git a/keyboards/sawnsprojects/bunnygirl65/keyboard.json b/keyboards/sawnsprojects/bunnygirl65/keyboard.json new file mode 100644 index 0000000000..6619ac46d9 --- /dev/null +++ b/keyboards/sawnsprojects/bunnygirl65/keyboard.json @@ -0,0 +1,243 @@ +{ + "manufacturer": "auaera", + "keyboard_name": "Bunnygirl65", + "maintainer": "MaiTheSan", + "bootloader": "stm32-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": false + }, + "matrix_pins": { + "cols": ["A10", "A0", "A9", "C13", "A1", "A2", "B11", "B10", "B1", "B0", "A7", "A6", "A5", "A4", "C14"], + "rows": ["B4", "A15", "A3", "A8", "B14"] + }, + "processor": "STM32F072", + "url": "", + "usb": { + "device_version": "1.0.0", + "force_nkro": true, + "pid": "0x00A2", + "vid": "0x5350" + }, + "community_layouts": ["65_ansi_blocker_tsangan", "65_ansi_blocker_tsangan_split_bs"], + "layouts": { + "LAYOUT_65_ansi_blocker_tsangan": { + "layout": [ + {"label": "K00", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "K01", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "K02", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "K03", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "K04", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "K05", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "K06", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "K07", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "K08", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "K09", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "K0A", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "K0B", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "K0C", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "K0D", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "K2D", "matrix": [2, 13], "x": 14, "y": 0, "w": 2}, + {"label": "K10", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "K11", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "K12", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "K13", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "K14", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "K15", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "K16", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "K17", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "K18", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "K19", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "K1A", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "K1B", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "K1C", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "K1D", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "K1E", "matrix": [1, 14], "x": 15, "y": 1}, + {"label": "K20", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "K21", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "K22", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "K23", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "K24", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "K25", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "K26", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "K27", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K28", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "K29", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": "K2A", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "K2B", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "K2C", "matrix": [2, 12], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "K2E", "matrix": [2, 14], "x": 15, "y": 2}, + {"label": "K30", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "K32", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "K33", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "K34", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "K35", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "K36", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "K37", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "K38", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "K39", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": "K3A", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "K3B", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "K3C", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "K3D", "matrix": [3, 13], "x": 14, "y": 3}, + {"label": "K3E", "matrix": [3, 14], "x": 15, "y": 3}, + {"label": "K40", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "K41", "matrix": [4, 1], "x": 1.5, "y": 4}, + {"label": "K42", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "K46", "matrix": [4, 7], "x": 4, "y": 4, "w": 7}, + {"label": "K4B", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"label": "K4C", "matrix": [4, 12], "x": 13, "y": 4}, + {"label": "K4D", "matrix": [4, 13], "x": 14, "y": 4}, + {"label": "K4E", "matrix": [4, 14], "x": 15, "y": 4} + ] + }, + "LAYOUT_65_ansi_blocker_tsangan_split_bs": { + "layout": [ + {"label": "K00", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "K01", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "K02", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "K03", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "K04", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "K05", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "K06", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "K07", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "K08", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "K09", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "K0A", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "K0B", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "K0C", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "K0D", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "K2D", "matrix": [2, 13], "x": 14, "y": 0}, + {"label": "K0E", "matrix": [0, 14], "x": 15, "y": 0}, + {"label": "K10", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "K11", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "K12", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "K13", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "K14", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "K15", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "K16", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "K17", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "K18", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "K19", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "K1A", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "K1B", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "K1C", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "K1D", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "K1E", "matrix": [1, 14], "x": 15, "y": 1}, + {"label": "K20", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "K21", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "K22", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "K23", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "K24", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "K25", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "K26", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "K27", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K28", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "K29", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": "K2A", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "K2B", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "K2C", "matrix": [2, 12], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "K2E", "matrix": [2, 14], "x": 15, "y": 2}, + {"label": "K30", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "K32", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "K33", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "K34", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "K35", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "K36", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "K37", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "K38", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "K39", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": "K3A", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "K3B", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "K3C", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "K3D", "matrix": [3, 13], "x": 14, "y": 3}, + {"label": "K3E", "matrix": [3, 14], "x": 15, "y": 3}, + {"label": "K40", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "K41", "matrix": [4, 1], "x": 1.5, "y": 4}, + {"label": "K42", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "K46", "matrix": [4, 7], "x": 4, "y": 4, "w": 7}, + {"label": "K4B", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"label": "K4C", "matrix": [4, 12], "x": 13, "y": 4}, + {"label": "K4D", "matrix": [4, 13], "x": 14, "y": 4}, + {"label": "K4E", "matrix": [4, 14], "x": 15, "y": 4} + ] + }, + "LAYOUT_all": { + "layout": [ + {"label": "K00", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "K01", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "K02", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "K03", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "K04", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "K05", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "K06", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "K07", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "K08", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "K09", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "K0A", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "K0B", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "K0C", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "K0D", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "K2D", "matrix": [2, 13], "x": 14, "y": 0}, + {"label": "K0E", "matrix": [0, 14], "x": 15, "y": 0}, + {"label": "K10", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "K11", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "K12", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "K13", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "K14", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "K15", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "K16", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "K17", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "K18", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "K19", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "K1A", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "K1B", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "K1C", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "K1D", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "K1E", "matrix": [1, 14], "x": 15, "y": 1}, + {"label": "K20", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "K21", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "K22", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "K23", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "K24", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "K25", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "K26", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "K27", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K28", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "K29", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": "K2A", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "K2B", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "K2C", "matrix": [2, 12], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "K2E", "matrix": [2, 14], "x": 15, "y": 2}, + {"label": "K30", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "K32", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "K33", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "K34", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "K35", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "K36", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "K37", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "K38", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "K39", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": "K3A", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "K3B", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "K3C", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "K3D", "matrix": [3, 13], "x": 14, "y": 3}, + {"label": "K3E", "matrix": [3, 14], "x": 15, "y": 3}, + {"label": "K40", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "K41", "matrix": [4, 1], "x": 1.5, "y": 4}, + {"label": "K42", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "K46", "matrix": [4, 7], "x": 4, "y": 4, "w": 7}, + {"label": "K4B", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"label": "K4C", "matrix": [4, 12], "x": 13, "y": 4}, + {"label": "K4D", "matrix": [4, 13], "x": 14, "y": 4}, + {"label": "K4E", "matrix": [4, 14], "x": 15, "y": 4} + ] + } + } +} diff --git a/keyboards/sawnsprojects/bunnygirl65/keymaps/default/keymap.c b/keyboards/sawnsprojects/bunnygirl65/keymaps/default/keymap.c new file mode 100644 index 0000000000..619e07b446 --- /dev/null +++ b/keyboards/sawnsprojects/bunnygirl65/keymaps/default/keymap.c @@ -0,0 +1,48 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Bsp│Bsp│Hom│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │PgU│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │PgD│ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │End│ + * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬─┬───┼───┼───┤ + * │Ctrl │GUI│Alt │ │ Fn│ │ ← │ ↓ │ → │ + * └─────┴───┴─────┴───────────────────────────┴─────┘ └───┴───┴───┘ + */ + [0] = LAYOUT_65_ansi_blocker_tsangan_split_bs( + 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_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │ ` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│Del│Del│ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ + * │ │ │ │ │ │ │Ins│ │ │ │ │PSc│Scr│Pause│ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + * │ │ │ │ │ │ │ │Mut│Vl-│Vl+│ │ │ │ │ + * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬─┬───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ │ + * └─────┴───┴─────┴───────────────────────────┴─────┘ └───┴───┴───┘ + */ + [1] = LAYOUT_65_ansi_blocker_tsangan_split_bs( + 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_DEL, _______, + _______, _______, _______, _______, _______, _______, KC_INS, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/sawnsprojects/bunnygirl65/keymaps/via/keymap.c b/keyboards/sawnsprojects/bunnygirl65/keymaps/via/keymap.c new file mode 100644 index 0000000000..b8deda0614 --- /dev/null +++ b/keyboards/sawnsprojects/bunnygirl65/keymaps/via/keymap.c @@ -0,0 +1,48 @@ +// Copyright 2023 Salane +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Bsp│Bsp│Hom│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │PgU│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │PgD│ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │End│ + * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬─┬───┼───┼───┤ + * │Ctrl │GUI│Alt │ │ Fn│ │ ← │ ↓ │ → │ + * └─────┴───┴─────┴───────────────────────────┴─────┘ └───┴───┴───┘ + */ + [0] = LAYOUT_all( + 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_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │ ` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│Del│Del│ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ + * │ │ │ │ │ │ │Ins│ │ │ │ │PSc│Scr│Pause│ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + * │ │ │ │ │ │ │ │Mut│Vl-│Vl+│ │ │ │ │ + * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬─┬───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ │ + * └─────┴───┴─────┴───────────────────────────┴─────┘ └───┴───┴───┘ + */ + [1] = LAYOUT_all( + 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_DEL, _______, + _______, _______, _______, _______, _______, _______, KC_INS, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/sawnsprojects/bunnygirl65/keymaps/via/rules.mk b/keyboards/sawnsprojects/bunnygirl65/keymaps/via/rules.mk new file mode 100644 index 0000000000..036bd6d1c3 --- /dev/null +++ b/keyboards/sawnsprojects/bunnygirl65/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/sawnsprojects/bunnygirl65/keymaps/vial/config.h b/keyboards/sawnsprojects/bunnygirl65/keymaps/vial/config.h new file mode 100644 index 0000000000..6a31252461 --- /dev/null +++ b/keyboards/sawnsprojects/bunnygirl65/keymaps/vial/config.h @@ -0,0 +1,7 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#pragma once + +#define VIAL_KEYBOARD_UID {0x39, 0x38, 0xEC, 0x66, 0xF1, 0xFB, 0x39, 0xD1} +#define VIAL_UNLOCK_COMBO_ROWS { 0, 2 } +#define VIAL_UNLOCK_COMBO_COLS { 0, 12 } \ No newline at end of file diff --git a/keyboards/sawnsprojects/bunnygirl65/keymaps/vial/keymap.c b/keyboards/sawnsprojects/bunnygirl65/keymaps/vial/keymap.c new file mode 100644 index 0000000000..45171ef6d7 --- /dev/null +++ b/keyboards/sawnsprojects/bunnygirl65/keymaps/vial/keymap.c @@ -0,0 +1,49 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Bsp│Bsp│Hom│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │PgU│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │PgD│ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │End│ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + * │Ctrl│GUI │Alt │ │ Alt│ Fn│ │ ← │ ↓ │ → │ + * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ + */ + [0] = LAYOUT_all( + 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_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │ ` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│Del│Del│ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ + * │ │ │ │ │ │ │Ins│ │ │ │ │PSc│Scr│Pause│ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + * │ │ │ │ │ │ │ │Mut│Vl-│Vl+│ │ │ │ │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ + * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ + */ + [1] = LAYOUT_all( + 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_DEL, _______, + _______, _______, _______, _______, _______, _______, KC_INS, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/sawnsprojects/bunnygirl65/keymaps/vial/rules.mk b/keyboards/sawnsprojects/bunnygirl65/keymaps/vial/rules.mk new file mode 100644 index 0000000000..6bc7063adc --- /dev/null +++ b/keyboards/sawnsprojects/bunnygirl65/keymaps/vial/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +VIAL_ENABLE = yes \ No newline at end of file diff --git a/keyboards/sawnsprojects/bunnygirl65/keymaps/vial/vial.json b/keyboards/sawnsprojects/bunnygirl65/keymaps/vial/vial.json new file mode 100644 index 0000000000..38e27c6637 --- /dev/null +++ b/keyboards/sawnsprojects/bunnygirl65/keymaps/vial/vial.json @@ -0,0 +1,168 @@ +{ + "name": "BunnyGirl65", + "vendorId": "0x5350", + "productId": "0x00A2", + "matrix": {"rows": 5, "cols": 15}, + "layouts": { + "labels": [ + "Split Backspace" + ], + "keymap": +[ + [ + { + "c": "#777777" + }, + "0,0", + { + "c": "#cccccc" + }, + "0,1", + "0,2", + "0,3", + "0,4", + "0,5", + "0,6", + "0,7", + "0,8", + "0,9", + "0,10", + "0,11", + "0,12", + { + "c": "#aaaaaa", + "w": 2 + }, + "0,13\n\n\n0,0", + { + "c": "#cccccc" + }, + "0,14", + { + "x": 0.5, + "c": "#aaaaaa" + }, + "0,13\n\n\n0,1", + "2,13\n\n\n0,1" + ], + [ + { + "w": 1.5 + }, + "1,0", + { + "c": "#cccccc" + }, + "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 + }, + "1,13", + "1,14" + ], + [ + { + "c": "#aaaaaa", + "w": 1.75 + }, + "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", + { + "c": "#777777", + "w": 2.25 + }, + "2,12", + { + "c": "#cccccc" + }, + "2,14" + ], + [ + { + "c": "#aaaaaa", + "w": 2.25 + }, + "3,0", + { + "c": "#cccccc" + }, + "3,2", + "3,3", + "3,4", + "3,5", + "3,6", + "3,7", + "3,8", + "3,9", + "3,10", + "3,11", + { + "c": "#aaaaaa", + "w": 1.75 + }, + "3,12", + { + "c": "#777777" + }, + "3,13", + { + "c": "#cccccc" + }, + "3,14" + ], + [ + { + "c": "#aaaaaa", + "w": 1.5 + }, + "4,0", + "4,1", + { + "w": 1.5 + }, + "4,2", + { + "c": "#cccccc", + "w": 7 + }, + "4,7", + { + "c": "#aaaaaa", + "w": 1.5 + }, + "4,11", + { + "x": 0.5, + "c": "#777777" + }, + "4,12", + "4,13", + "4,14" + ] +] + } +} \ No newline at end of file diff --git a/keyboards/sawnsprojects/bunnygirl65/readme.md b/keyboards/sawnsprojects/bunnygirl65/readme.md new file mode 100644 index 0000000000..b194850b39 --- /dev/null +++ b/keyboards/sawnsprojects/bunnygirl65/readme.md @@ -0,0 +1,27 @@ +# BunnyGirl65 + +![BunnyGirl65](https://i.imgur.com/APqNMhci.jpeg) + +A Wibu 60% keyboard PCB Design by inspire of Nekomata Okayu and can fit many keyboard case + +* Keyboard Maintainer: [Mai The San](https://github.com/maithesan) +* Hardware Supported: BunnyGirl65 +* Hardware Availability: [Waifu.Works](https://discord.gg/waifuworks) + +Make example for this keyboard (after setting up your build environment): + + make sawnsprojects/bunnygirl65:default + +Flashing example for this keyboard: + + make sawnsprojects/bunnygirl65: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 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/takayoshiotake/harmony_42/info.json b/keyboards/takayoshiotake/harmony_42/info.json new file mode 100644 index 0000000000..4f57fe2de8 --- /dev/null +++ b/keyboards/takayoshiotake/harmony_42/info.json @@ -0,0 +1,73 @@ +{ + "keyboard_name": "Harmony 42", + "maintainer": "takayoshiotake", + "manufacturer": "takayoshiotake", + "url": "https://github.com/takayoshiotake/harmony-42-keyboard", + "processor": "RP2040", + "bootloader": "rp2040", + "usb": { + "device_version": "1.0.0", + "pid": "0x8CAE", + "vid": "0x1209", + "force_nkro": true + }, + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "diode_direction": "COL2ROW", + "matrix_pins": { + "cols": ["GP22", "GP21", "GP20", "GP19", "GP18", "GP17", "GP27", "GP28", "GP29", "GP26", "GP25", "GP24"], + "rows": ["GP10", "GP11", "GP16", "GP23"] + }, + "layouts": { + "LAYOUT": { + "layout": [ + { "matrix": [0, 0], "x": 0, "y": 0 }, + { "matrix": [0, 1], "x": 1, "y": 0 }, + { "matrix": [0, 2], "x": 2, "y": 0 }, + { "matrix": [0, 3], "x": 3, "y": 0 }, + { "matrix": [0, 4], "x": 4, "y": 0 }, + { "matrix": [0, 5], "x": 5, "y": 0 }, + { "matrix": [0, 6], "x": 6, "y": 0 }, + { "matrix": [0, 7], "x": 7, "y": 0 }, + { "matrix": [0, 8], "x": 8, "y": 0 }, + { "matrix": [0, 9], "x": 9, "y": 0 }, + { "matrix": [0, 10], "x": 10, "y": 0 }, + { "matrix": [0, 11], "x": 11, "y": 0 }, + { "matrix": [1, 0], "x": 0, "y": 1 }, + { "matrix": [1, 1], "x": 1, "y": 1 }, + { "matrix": [1, 2], "x": 2, "y": 1 }, + { "matrix": [1, 3], "x": 3, "y": 1 }, + { "matrix": [1, 4], "x": 4, "y": 1 }, + { "matrix": [1, 5], "x": 5, "y": 1 }, + { "matrix": [1, 6], "x": 6, "y": 1 }, + { "matrix": [1, 7], "x": 7, "y": 1 }, + { "matrix": [1, 8], "x": 8, "y": 1 }, + { "matrix": [1, 9], "x": 9, "y": 1 }, + { "matrix": [1, 10], "x": 10, "y": 1 }, + { "matrix": [1, 11], "x": 11, "y": 1 }, + { "matrix": [2, 0], "x": 0, "y": 2 }, + { "matrix": [2, 1], "x": 1, "y": 2 }, + { "matrix": [2, 2], "x": 2, "y": 2 }, + { "matrix": [2, 3], "x": 3, "y": 2 }, + { "matrix": [2, 4], "x": 4, "y": 2 }, + { "matrix": [2, 5], "x": 5, "y": 2 }, + { "matrix": [2, 6], "x": 6, "y": 2 }, + { "matrix": [2, 7], "x": 7, "y": 2 }, + { "matrix": [2, 8], "x": 8, "y": 2 }, + { "matrix": [2, 9], "x": 9, "y": 2 }, + { "matrix": [2, 10], "x": 10, "y": 2 }, + { "matrix": [2, 11], "x": 11, "y": 2 }, + { "matrix": [3, 3], "x": 3, "y": 3 }, + { "matrix": [3, 4], "x": 4, "y": 3 }, + { "matrix": [3, 5], "x": 5, "y": 3 }, + { "matrix": [3, 6], "x": 6, "y": 3 }, + { "matrix": [3, 7], "x": 7, "y": 3 }, + { "matrix": [3, 8], "x": 8, "y": 3 } + ] + } + } +} diff --git a/keyboards/takayoshiotake/harmony_42/keymaps/default/keymap.c b/keyboards/takayoshiotake/harmony_42/keymaps/default/keymap.c new file mode 100644 index 0000000000..1c2a1c3cc0 --- /dev/null +++ b/keyboards/takayoshiotake/harmony_42/keymaps/default/keymap.c @@ -0,0 +1,19 @@ +#include QMK_KEYBOARD_H + +#define KC_JAPANESE_EISUU KC_LNG2 +#define KC_JAPANESE_KANA KC_LNG1 + +#define KC_JEIS KC_JAPANESE_EISUU +#define KC_JKAN KC_JAPANESE_KANA + +#define MT_LGJE MT(MOD_LGUI, KC_JEIS) +#define MT_RAJK MT(MOD_RALT, KC_JKAN) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + 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, XXXXXXX, KC_H, KC_J, KC_K, KC_L, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, KC_RSFT, + KC_LCTL, MT_LGJE, KC_SPC, KC_SPC, MT_RAJK, KC_RCTL + ) +}; \ No newline at end of file diff --git a/keyboards/takayoshiotake/harmony_42/keymaps/vial/config.h b/keyboards/takayoshiotake/harmony_42/keymaps/vial/config.h new file mode 100644 index 0000000000..b81fa8ce04 --- /dev/null +++ b/keyboards/takayoshiotake/harmony_42/keymaps/vial/config.h @@ -0,0 +1,8 @@ +#pragma once + +#define VIAL_KEYBOARD_UID {0x2B, 0x70, 0xFE, 0xEF, 0x1B, 0x5E, 0xB6, 0x8F} + +#define VIAL_UNLOCK_COMBO_ROWS {1, 1} +#define VIAL_UNLOCK_COMBO_COLS {0, 11} + +#define DYNAMIC_KEYMAP_LAYER_COUNT 8 diff --git a/keyboards/takayoshiotake/harmony_42/keymaps/vial/keymap.c b/keyboards/takayoshiotake/harmony_42/keymaps/vial/keymap.c new file mode 100644 index 0000000000..1c2a1c3cc0 --- /dev/null +++ b/keyboards/takayoshiotake/harmony_42/keymaps/vial/keymap.c @@ -0,0 +1,19 @@ +#include QMK_KEYBOARD_H + +#define KC_JAPANESE_EISUU KC_LNG2 +#define KC_JAPANESE_KANA KC_LNG1 + +#define KC_JEIS KC_JAPANESE_EISUU +#define KC_JKAN KC_JAPANESE_KANA + +#define MT_LGJE MT(MOD_LGUI, KC_JEIS) +#define MT_RAJK MT(MOD_RALT, KC_JKAN) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + 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, XXXXXXX, KC_H, KC_J, KC_K, KC_L, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, KC_RSFT, + KC_LCTL, MT_LGJE, KC_SPC, KC_SPC, MT_RAJK, KC_RCTL + ) +}; \ No newline at end of file diff --git a/keyboards/takayoshiotake/harmony_42/keymaps/vial/rules.mk b/keyboards/takayoshiotake/harmony_42/keymaps/vial/rules.mk new file mode 100644 index 0000000000..4f7618e9b2 --- /dev/null +++ b/keyboards/takayoshiotake/harmony_42/keymaps/vial/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +VIAL_ENABLE = yes diff --git a/keyboards/takayoshiotake/harmony_42/keymaps/vial/vial.json b/keyboards/takayoshiotake/harmony_42/keymaps/vial/vial.json new file mode 100644 index 0000000000..60144dccee --- /dev/null +++ b/keyboards/takayoshiotake/harmony_42/keymaps/vial/vial.json @@ -0,0 +1,431 @@ +{ + "lighting": "none", + "matrix": { + "rows": 4, + "cols": 12 + }, + "layouts": { + "keymap": [ + [ + { + "rx": 0.5, + "ry": 1.25, + "r": 0, + "x": -0.5, + "y": -0.5 + }, + "0,0" + ], + [ + { + "rx": 1.5, + "ry": 0.75, + "r": 0, + "x": -0.5, + "y": -0.5 + }, + "0,1" + ], + [ + { + "rx": 2.552307692307692, + "ry": 0.5584615384615379, + "r": 6.359660239728469, + "x": -0.5, + "y": -0.5 + }, + "0,2" + ], + [ + { + "rx": 3.5916639053254436, + "ry": 0.733126627218935, + "r": 12.719320479456938, + "x": -0.5, + "y": -0.5 + }, + "0,3" + ], + [ + { + "rx": 4.605276562585344, + "ry": 1.0218455421028665, + "r": 19.078980719185406, + "x": -0.5, + "y": -0.5 + }, + "0,4" + ], + [ + { + "rx": 5.5806704313826545, + "ry": 1.4210648195455349, + "r": 25.438640958913876, + "x": -0.5, + "y": -0.5 + }, + "0,5" + ], + [ + { + "rx": 8.419329568617346, + "ry": 1.4210648195455349, + "r": -25.438640958913876, + "x": -0.5, + "y": -0.5 + }, + "0,6" + ], + [ + { + "rx": 9.394723437414656, + "ry": 1.0218455421028665, + "r": -19.078980719185406, + "x": -0.5, + "y": -0.5 + }, + "0,7" + ], + [ + { + "rx": 10.408336094674556, + "ry": 0.733126627218935, + "r": -12.719320479456938, + "x": -0.5, + "y": -0.5 + }, + "0,8" + ], + [ + { + "rx": 11.447692307692307, + "ry": 0.5584615384615379, + "r": -6.359660239728469, + "x": -0.5, + "y": -0.5 + }, + "0,9 " + ], + [ + { + "rx": 12.5, + "ry": 0.75, + "r": 0, + "x": -0.5, + "y": -0.5 + }, + "0,10" + ], + [ + { + "rx": 13.5, + "ry": 1.25, + "r": 0, + "x": -0.5, + "y": -0.5 + }, + "0,11" + ], + [ + { + "rx": 0.5, + "ry": 2.25, + "r": 0, + "x": -0.5, + "y": -0.5 + }, + "1,0" + ], + [ + { + "rx": 1.5, + "ry": 1.75, + "r": 0, + "x": -0.5, + "y": -0.5 + }, + "1,1" + ], + [ + { + "rx": 2.5583657587548636, + "ry": 1.5661478599221788, + "r": 7.152668749994702, + "x": -0.5, + "y": -0.5 + }, + "1,2" + ], + [ + { + "rx": 3.6002588986964223, + "ry": 1.763561901012885, + "r": 14.305337499989404, + "x": -0.5, + "y": -0.5 + }, + "1,3" + ], + [ + { + "rx": 4.6094631841835625, + "ry": 2.0891695311928835, + "r": 21.45800624998411, + "x": -0.5, + "y": -0.5 + }, + "1,4" + ], + [ + { + "rx": 5.570271155519984, + "ry": 2.537902927424355, + "r": 28.61067499997881, + "x": -0.5, + "y": -0.5 + }, + "1,5" + ], + [ + { + "rx": 8.429728844480016, + "ry": 2.537902927424355, + "r": -28.61067499997881, + "x": -0.5, + "y": -0.5 + }, + "1,6" + ], + [ + { + "rx": 9.390536815816438, + "ry": 2.0891695311928835, + "r": -21.45800624998411, + "x": -0.5, + "y": -0.5 + }, + "1,7" + ], + [ + { + "rx": 10.399741101303578, + "ry": 1.763561901012885, + "r": -14.305337499989404, + "x": -0.5, + "y": -0.5 + }, + "1,8" + ], + [ + { + "rx": 11.441634241245136, + "ry": 1.5661478599221788, + "r": -7.152668749994702, + "x": -0.5, + "y": -0.5 + }, + "1,9" + ], + [ + { + "rx": 12.5, + "ry": 1.75, + "r": 0, + "x": -0.5, + "y": -0.5 + }, + "1,10" + ], + [ + { + "rx": 13.5, + "ry": 2.25, + "r": 0, + "x": -0.5, + "y": -0.5 + }, + "1,11" + ], + [ + { + "rx": 0.5, + "ry": 3.25, + "r": 0, + "x": -0.5, + "y": -0.5 + }, + "2,0" + ], + [ + { + "rx": 1.5, + "ry": 2.75, + "r": 0, + "x": -0.5, + "y": -0.5 + }, + "2,1" + ], + [ + { + "rx": 2.565989847715736, + "ry": 2.5761421319796955, + "r": 8.171233559949753, + "x": -0.5, + "y": -0.5 + }, + "2,2" + ], + [ + { + "rx": 3.6103352315184623, + "ry": 2.8030224947821374, + "r": 16.342467119899506, + "x": -0.5, + "y": -0.5 + }, + "2,3" + ], + [ + { + "rx": 4.61183116899594, + "ry": 3.1760343805331663, + "r": 24.513700679849258, + "x": -0.5, + "y": -0.5 + }, + "2,4" + ], + [ + { + "rx": 5.550142717255227, + "ry": 3.687603943836822, + "r": 32.68493423979901, + "x": -0.5, + "y": -0.5 + }, + "2,5" + ], + [ + { + "rx": 8.449857282744773, + "ry": 3.687603943836822, + "r": -32.68493423979901, + "x": -0.5, + "y": -0.5 + }, + "2,6" + ], + [ + { + "rx": 9.388168831004059, + "ry": 3.1760343805331663, + "r": -24.513700679849258, + "x": -0.5, + "y": -0.5 + }, + "2,7" + ], + [ + { + "rx": 10.389664768481538, + "ry": 2.8030224947821374, + "r": -16.342467119899506, + "x": -0.5, + "y": -0.5 + }, + "2,8" + ], + [ + { + "rx": 11.434010152284264, + "ry": 2.5761421319796955, + "r": -8.171233559949753, + "x": -0.5, + "y": -0.5 + }, + "2,9" + ], + [ + { + "rx": 12.5, + "ry": 2.75, + "r": 0, + "x": -0.5, + "y": -0.5 + }, + "2,10" + ], + [ + { + "rx": 13.5, + "ry": 3.25, + "r": 0, + "x": -0.5, + "y": -0.5 + }, + "2,11" + ], + [ + { + "rx": 3.6220451843043997, + "ry": 3.8561474435196192, + "r": 19.054566762904713, + "x": -0.5, + "y": -0.5 + }, + "3,3" + ], + [ + { + "rx": 4.609689122145229, + "ry": 4.2921253023904224, + "r": 28.581850144357066, + "x": -0.5, + "y": -0.5 + }, + "3,4" + ], + [ + { + "rx": 5.511548532478605, + "ry": 4.885561773609075, + "r": 38.109133525809426, + "x": -0.5, + "y": -0.5 + }, + "3,5" + ], + [ + { + "rx": 8.488451467521395, + "ry": 4.885561773609075, + "r": -38.109133525809426, + "x": -0.5, + "y": -0.5 + }, + "3,6" + ], + [ + { + "rx": 9.39031087785477, + "ry": 4.2921253023904224, + "r": -28.581850144357066, + "x": -0.5, + "y": -0.5 + }, + "3,7" + ], + [ + { + "rx": 10.3779548156956, + "ry": 3.8561474435196192, + "r": -19.054566762904713, + "x": -0.5, + "y": -0.5 + }, + "3,8" + ] + ] + } +} diff --git a/keyboards/takayoshiotake/harmony_42/readme.md b/keyboards/takayoshiotake/harmony_42/readme.md new file mode 100644 index 0000000000..c75e656669 --- /dev/null +++ b/keyboards/takayoshiotake/harmony_42/readme.md @@ -0,0 +1,7 @@ +# Harmony 42 + +![Harmony 42](https://github.com/takayoshiotake/harmony-42-keyboard/blob/main/layout/keyboard-layout.png?raw=true) + +Vial firmware for the Harmony 42 (40%) keyboard. You can find other information including hardware design in the [GitHub repository](https://github.com/takayoshiotake/harmony-42-keyboard). + +Keyboard Maintainer: [takayoshiotake](https://github.com/takayoshiotake) diff --git a/keyboards/takayoshiotake/harmony_42/rules.mk b/keyboards/takayoshiotake/harmony_42/rules.mk new file mode 100644 index 0000000000..e69de29bb2 diff --git a/quantum/mousekey.h b/quantum/mousekey.h index 814d348e31..b6dac1875b 100644 --- a/quantum/mousekey.h +++ b/quantum/mousekey.h @@ -183,7 +183,11 @@ extern uint8_t mk_interval; extern uint8_t mk_max_speed; extern uint8_t mk_time_to_max; extern uint8_t mk_wheel_delay; +#ifdef MK_KINETIC_SPEED +extern uint16_t mk_wheel_interval; +#else extern uint8_t mk_wheel_interval; +#endif extern uint8_t mk_wheel_max_speed; extern uint8_t mk_wheel_time_to_max;