Merge branch 'vial-kb:vial' into HLB_PoorKoi

This commit is contained in:
H3lli0n 2024-09-04 22:10:12 +02:00 committed by GitHub
commit cf23e957b7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
158 changed files with 9347 additions and 137 deletions

View file

@ -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

View file

@ -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 <halconf.h>

View file

@ -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}
]
}
}
}

View file

@ -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

View file

@ -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 }

View file

@ -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

View file

@ -0,0 +1,4 @@
VIA_ENABLE = yes
VIAL_ENABLE = yes
VIALRGB_ENABLE = yes

View file

@ -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"]
]
}
}

View file

@ -0,0 +1,9 @@
// Copyright 2024 Bachoo (@cBachoo)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include_next <mcuconf.h>
#undef STM32_SPI_USE_SPI2
#define STM32_SPI_USE_SPI2 TRUE

View file

@ -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

View file

@ -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 }

View file

@ -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
),
};

View file

@ -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 }

View file

@ -0,0 +1,87 @@
/* Copyright 2022 HorrorTroll <https://github.com/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 <http://www.gnu.org/licenses/>.
*/
#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 - = ` BksDel
Tab q w e r t y u i o p [ ] \ PgU
Caps a s d f g h j k l ; ' Enter PgD
LSftLSt z x c v b n m , . / RSft Fn
LCrlGUI LAlt Space RAtFn RCl
! @ # $ % ^ & * ( ) _ + ~
Q W E R T Y U I O P { } |
Caps A S D F G H J K L : " │ │ │
LSftLSt 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
),
/*
RstF1 F2 F3 F4 F5 F6 F7 F8 F9 F10F11F12 PSc
RTog ModHuiHudSaiSadVaiVad Hom
BTog BTgDecIncSte 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,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};

View file

@ -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

View file

@ -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"
]
]
}
}

View file

@ -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

View file

@ -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" , "_______",
"_______", "_______", "_______", "_______", "_______", "_______"
]
]
}

View file

@ -0,0 +1,3 @@
VIA_ENABLE = yes
VIAL_ENABLE = yes
VIALRGB_ENABLE = yes

View file

@ -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"]
]
}
}

View file

@ -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 @@
]
]
}
}
}

View file

@ -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"
}
}

View file

@ -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
)
};

View file

@ -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 }
]
}
}
}

View file

@ -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
)
};

View file

@ -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}

View file

@ -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
)
};

View file

@ -0,0 +1,3 @@
VIA_ENABLE = yes
VIAL_ENABLE = yes
LTO_ENABLE = yes

View file

@ -1,7 +1,7 @@
{
"name": "imi60",
"vendorId": "0xEB69",
"productId": "0x6002",
"productId": "0x6005",
"lighting": "none",
"matrix": {
"rows": 5,

View file

@ -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": {

View file

@ -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}

View file

@ -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
)
};

View file

@ -0,0 +1,3 @@
VIA_ENABLE = yes
VIAL_ENABLE = yes
LTO_ENABLE = yes

View file

@ -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"
]
]
}
}

View file

@ -1 +0,0 @@
# This file intentionally left blank

View file

@ -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 <http://www.gnu.org/licenses/>.
*/
#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

View file

@ -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"}
]
}
}
}

View file

@ -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"}
]
}
}
}

View file

@ -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 <http://www.gnu.org/licenses/>.
*/
#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))
};

View file

@ -0,0 +1 @@
The default keymap for the Evelyn.

View file

@ -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

View file

@ -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 <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
#include <stdio.h>
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

View file

@ -0,0 +1 @@
The vial keymap for the Evelyn PCB.

View file

@ -0,0 +1,6 @@
VIA_ENABLE = yes
VIAL_ENABLE = yes
#VIALRGB_ENABLE = yes
ENCODER_MAP_ENABLE = yes

View file

@ -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"
]
]
}
}

View file

@ -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

View file

@ -0,0 +1 @@
# This file intentionally left blank

View file

@ -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 <http://www.gnu.org/licenses/>.
*/
#pragma once
#define RP2040_FLASH_GENERIC_03H
#ifdef HAPTIC_ENABLE
#define SOLENOID_PIN GP15
#endif
#define VIA_CUSTOM_LIGHTING_ENABLE

View file

@ -0,0 +1,3 @@
#pragma once
#include_next <halconf.h>

View file

@ -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"]
}
}

View file

@ -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"]
}
}

View file

@ -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 <http://www.gnu.org/licenses/>.
*/
#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))
};

View file

@ -0,0 +1 @@
The default keymap for the Little Writter.

View file

@ -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

View file

@ -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 <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
#include <stdio.h>
#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

View file

@ -0,0 +1 @@
The vial keymap for the Little Writter PCB.

View file

@ -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

View file

@ -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"
]
]
}
}

View file

@ -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 <http://www.gnu.org/licenses/>.
*/
#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

View file

@ -0,0 +1,3 @@
#pragma once
#include_next <mcuconf.h>

View file

@ -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

View file

@ -0,0 +1 @@
# This file is intentionally left blank

View file

@ -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 <http://www.gnu.org/licenses/>.
*/
#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

View file

@ -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"}
]
}
}
}

View file

@ -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"}
]
}
}
}

View file

@ -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 <http://www.gnu.org/licenses/>.
*/
#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
)
};

View file

@ -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

View file

@ -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 <http://www.gnu.org/licenses/>.
*/
#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
)
};

View file

@ -0,0 +1,3 @@
VIA_ENABLE = yes
VIAL_ENABLE = yes
VIALRGB_ENABLE = yes

View file

@ -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"
]
]
}
}

View file

@ -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 <http://www.gnu.org/licenses/>.
*/
#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
} };

View file

@ -0,0 +1 @@
# This file is intentionally left blank

View file

@ -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 <http://www.gnu.org/licenses/>.
*/
#pragma once
#define CH_CFG_ST_FREQUENCY 10000
#define CH_CFG_OPTIMIZE_SPEED FALSE
#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE
#include_next <chconf.h>

View file

@ -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 <http://www.gnu.org/licenses/>.
*/
#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

View file

@ -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 <http://www.gnu.org/licenses/>.
*/
#pragma once
#define HAL_USE_I2C TRUE
#include_next <halconf.h>

View file

@ -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"]
}
}

View file

@ -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"]
}
}

View file

@ -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 <http://www.gnu.org/licenses/>.
*/
#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
)
};

View file

@ -0,0 +1 @@
The default layout for the nachie SubText

View file

@ -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 }

Some files were not shown because too many files have changed in this diff Show more