Add support for boards and pcbs from nachie (#764)
Syndrome Syndrome Ortho Little Writter Evelyn Subtext Also includes changes from Matt Piasecki <matthewpiasecki@icloud.com> for OLED support for syndrome Co-authored-by: Nachiket Kulkarni <nachiket_kulkarni@apple.com>
This commit is contained in:
parent
a23664c742
commit
1df15a95b8
29
keyboards/nachie/evelyn/config.h
Executable file
29
keyboards/nachie/evelyn/config.h
Executable 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
|
87
keyboards/nachie/evelyn/info.json
Normal file
87
keyboards/nachie/evelyn/info.json
Normal 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"}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
87
keyboards/nachie/evelyn/keyboard.json
Normal file
87
keyboards/nachie/evelyn/keyboard.json
Normal 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"}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
27
keyboards/nachie/evelyn/keymaps/default/keymap.c
Executable file
27
keyboards/nachie/evelyn/keymaps/default/keymap.c
Executable 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))
|
||||
};
|
1
keyboards/nachie/evelyn/keymaps/default/readme.md
Normal file
1
keyboards/nachie/evelyn/keymaps/default/readme.md
Normal file
@ -0,0 +1 @@
|
||||
The default keymap for the Evelyn.
|
11
keyboards/nachie/evelyn/keymaps/vial/config.h
Normal file
11
keyboards/nachie/evelyn/keymaps/vial/config.h
Normal 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
|
65
keyboards/nachie/evelyn/keymaps/vial/keymap.c
Executable file
65
keyboards/nachie/evelyn/keymaps/vial/keymap.c
Executable 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
|
1
keyboards/nachie/evelyn/keymaps/vial/readme.md
Normal file
1
keyboards/nachie/evelyn/keymaps/vial/readme.md
Normal file
@ -0,0 +1 @@
|
||||
The vial keymap for the Evelyn PCB.
|
6
keyboards/nachie/evelyn/keymaps/vial/rules.mk
Normal file
6
keyboards/nachie/evelyn/keymaps/vial/rules.mk
Normal file
@ -0,0 +1,6 @@
|
||||
VIA_ENABLE = yes
|
||||
VIAL_ENABLE = yes
|
||||
|
||||
#VIALRGB_ENABLE = yes
|
||||
|
||||
ENCODER_MAP_ENABLE = yes
|
213
keyboards/nachie/evelyn/keymaps/vial/vial.json
Normal file
213
keyboards/nachie/evelyn/keymaps/vial/vial.json
Normal 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"
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
23
keyboards/nachie/evelyn/readme.md
Normal file
23
keyboards/nachie/evelyn/readme.md
Normal 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
|
1
keyboards/nachie/evelyn/rules.mk
Executable file
1
keyboards/nachie/evelyn/rules.mk
Executable file
@ -0,0 +1 @@
|
||||
# This file intentionally left blank
|
25
keyboards/nachie/littlewritter/config.h
Executable file
25
keyboards/nachie/littlewritter/config.h
Executable 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
|
3
keyboards/nachie/littlewritter/halconf.h
Normal file
3
keyboards/nachie/littlewritter/halconf.h
Normal file
@ -0,0 +1,3 @@
|
||||
#pragma once
|
||||
|
||||
#include_next <halconf.h>
|
148
keyboards/nachie/littlewritter/info.json
Normal file
148
keyboards/nachie/littlewritter/info.json
Normal 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"]
|
||||
}
|
||||
}
|
148
keyboards/nachie/littlewritter/keyboard.json
Normal file
148
keyboards/nachie/littlewritter/keyboard.json
Normal 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"]
|
||||
}
|
||||
}
|
28
keyboards/nachie/littlewritter/keymaps/default/keymap.c
Executable file
28
keyboards/nachie/littlewritter/keymaps/default/keymap.c
Executable 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))
|
||||
};
|
1
keyboards/nachie/littlewritter/keymaps/default/readme.md
Normal file
1
keyboards/nachie/littlewritter/keymaps/default/readme.md
Normal file
@ -0,0 +1 @@
|
||||
The default keymap for the Little Writter.
|
11
keyboards/nachie/littlewritter/keymaps/vial/config.h
Normal file
11
keyboards/nachie/littlewritter/keymaps/vial/config.h
Normal 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
|
486
keyboards/nachie/littlewritter/keymaps/vial/keymap.c
Executable file
486
keyboards/nachie/littlewritter/keymaps/vial/keymap.c
Executable 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
|
1
keyboards/nachie/littlewritter/keymaps/vial/readme.md
Normal file
1
keyboards/nachie/littlewritter/keymaps/vial/readme.md
Normal file
@ -0,0 +1 @@
|
||||
The vial keymap for the Little Writter PCB.
|
10
keyboards/nachie/littlewritter/keymaps/vial/rules.mk
Normal file
10
keyboards/nachie/littlewritter/keymaps/vial/rules.mk
Normal 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
|
433
keyboards/nachie/littlewritter/keymaps/vial/vial.json
Normal file
433
keyboards/nachie/littlewritter/keymaps/vial/vial.json
Normal 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"
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
89
keyboards/nachie/littlewritter/littlewritter.c
Executable file
89
keyboards/nachie/littlewritter/littlewritter.c
Executable 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
|
3
keyboards/nachie/littlewritter/mcuconf.h
Normal file
3
keyboards/nachie/littlewritter/mcuconf.h
Normal file
@ -0,0 +1,3 @@
|
||||
#pragma once
|
||||
|
||||
#include_next <mcuconf.h>
|
23
keyboards/nachie/littlewritter/readme.md
Normal file
23
keyboards/nachie/littlewritter/readme.md
Normal 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
|
1
keyboards/nachie/littlewritter/rules.mk
Executable file
1
keyboards/nachie/littlewritter/rules.mk
Executable file
@ -0,0 +1 @@
|
||||
# This file is intentionally left blank
|
29
keyboards/nachie/rnd60/config.h
Normal file
29
keyboards/nachie/rnd60/config.h
Normal 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
|
155
keyboards/nachie/rnd60/info.json
Normal file
155
keyboards/nachie/rnd60/info.json
Normal 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"}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
155
keyboards/nachie/rnd60/keyboard.json
Normal file
155
keyboards/nachie/rnd60/keyboard.json
Normal 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"}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
54
keyboards/nachie/rnd60/keymaps/default/keymap.c
Normal file
54
keyboards/nachie/rnd60/keymaps/default/keymap.c
Normal 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
|
||||
)
|
||||
|
||||
};
|
9
keyboards/nachie/rnd60/keymaps/vial/config.h
Normal file
9
keyboards/nachie/rnd60/keymaps/vial/config.h
Normal 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
|
54
keyboards/nachie/rnd60/keymaps/vial/keymap.c
Normal file
54
keyboards/nachie/rnd60/keymaps/vial/keymap.c
Normal 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
|
||||
)
|
||||
|
||||
};
|
3
keyboards/nachie/rnd60/keymaps/vial/rules.mk
Normal file
3
keyboards/nachie/rnd60/keymaps/vial/rules.mk
Normal file
@ -0,0 +1,3 @@
|
||||
VIA_ENABLE = yes
|
||||
VIAL_ENABLE = yes
|
||||
VIALRGB_ENABLE = yes
|
346
keyboards/nachie/rnd60/keymaps/vial/vial.json
Normal file
346
keyboards/nachie/rnd60/keymaps/vial/vial.json
Normal 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"
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
38
keyboards/nachie/rnd60/rnd60.c
Normal file
38
keyboards/nachie/rnd60/rnd60.c
Normal 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
|
||||
} };
|
1
keyboards/nachie/rnd60/rules.mk
Normal file
1
keyboards/nachie/rnd60/rules.mk
Normal file
@ -0,0 +1 @@
|
||||
# This file is intentionally left blank
|
26
keyboards/nachie/subtext/chconf.h
Normal file
26
keyboards/nachie/subtext/chconf.h
Normal 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>
|
46
keyboards/nachie/subtext/config.h
Normal file
46
keyboards/nachie/subtext/config.h
Normal 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
|
22
keyboards/nachie/subtext/halconf.h
Normal file
22
keyboards/nachie/subtext/halconf.h
Normal 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>
|
83
keyboards/nachie/subtext/info.json
Normal file
83
keyboards/nachie/subtext/info.json
Normal 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"]
|
||||
}
|
||||
}
|
83
keyboards/nachie/subtext/keyboard.json
Normal file
83
keyboards/nachie/subtext/keyboard.json
Normal 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"]
|
||||
}
|
||||
}
|
27
keyboards/nachie/subtext/keymaps/default/keymap.c
Normal file
27
keyboards/nachie/subtext/keymaps/default/keymap.c
Normal 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
|
||||
)
|
||||
};
|
1
keyboards/nachie/subtext/keymaps/default/readme.md
Normal file
1
keyboards/nachie/subtext/keymaps/default/readme.md
Normal file
@ -0,0 +1 @@
|
||||
The default layout for the nachie SubText
|
8
keyboards/nachie/subtext/keymaps/vial/config.h
Normal file
8
keyboards/nachie/subtext/keymaps/vial/config.h
Normal 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 }
|
487
keyboards/nachie/subtext/keymaps/vial/keymap.c
Normal file
487
keyboards/nachie/subtext/keymaps/vial/keymap.c
Normal file
@ -0,0 +1,487 @@
|
||||
/*
|
||||
Copyright 2024 nachie
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
#include <stdio.h>
|
||||
#include "os_detection.h"
|
||||
|
||||
#ifdef OLED_ENABLE
|
||||
void render_key_status_or_logo(void);
|
||||
void render_current_layer(void);
|
||||
void render_current_wpm(void);
|
||||
#endif
|
||||
|
||||
os_variant_t current_platform;
|
||||
bool is_alt_tab_active = false;
|
||||
uint16_t alt_tab_timer = 0;
|
||||
|
||||
enum layer_names {
|
||||
_BASE, // Default Layer
|
||||
_FN, // Fn Layer 1
|
||||
_FN2, // Fn Layer 2
|
||||
_FN3 // Fn Layer 3
|
||||
};
|
||||
|
||||
enum custom_keycode {
|
||||
JWRDL = QK_KB_0,
|
||||
JWRDR,
|
||||
SWRDL,
|
||||
SWRDR,
|
||||
TABL,
|
||||
TABR,
|
||||
DSKTPL,
|
||||
DSKTPR,
|
||||
PRVAPP,
|
||||
NXTAPP
|
||||
};
|
||||
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case KC_HOME:
|
||||
if (record->event.pressed && current_platform == OS_MACOS) {
|
||||
register_mods(MOD_LGUI);
|
||||
tap_code(KC_LEFT);
|
||||
unregister_mods(MOD_LGUI);
|
||||
} else {
|
||||
tap_code(KC_HOME);
|
||||
}
|
||||
break;
|
||||
case KC_END:
|
||||
if (record->event.pressed && current_platform == OS_MACOS) {
|
||||
register_mods(MOD_LGUI);
|
||||
tap_code(KC_RIGHT);
|
||||
unregister_mods(MOD_LGUI);
|
||||
} else {
|
||||
tap_code(KC_END);
|
||||
}
|
||||
break;
|
||||
case KC_PGUP:
|
||||
if (record->event.pressed && current_platform == OS_MACOS) {
|
||||
register_mods(MOD_LGUI);
|
||||
tap_code(KC_UP);
|
||||
unregister_mods(MOD_LGUI);
|
||||
} else {
|
||||
tap_code(KC_PGUP);
|
||||
}
|
||||
break;
|
||||
case KC_PGDN:
|
||||
if (record->event.pressed && current_platform == OS_MACOS) {
|
||||
register_mods(MOD_LGUI);
|
||||
tap_code(KC_DOWN);
|
||||
unregister_mods(MOD_LGUI);
|
||||
} else {
|
||||
tap_code(KC_PGDN);
|
||||
}
|
||||
break;
|
||||
case KC_NUM_LOCK:
|
||||
if (record->event.pressed && current_platform == OS_MACOS) {
|
||||
register_mods(MOD_LSFT);
|
||||
tap_code(KC_CLEAR);
|
||||
unregister_mods(MOD_LSFT);
|
||||
} else {
|
||||
tap_code(KC_NUM_LOCK);
|
||||
}
|
||||
break;
|
||||
case KC_SCROLL_LOCK:
|
||||
if (record->event.pressed && current_platform == OS_MACOS) {
|
||||
register_mods(MOD_LCTL);
|
||||
tap_code(KC_F14);
|
||||
unregister_mods(MOD_LCTL);
|
||||
} else {
|
||||
tap_code(KC_SCROLL_LOCK);
|
||||
}
|
||||
break;
|
||||
case KC_PRINT_SCREEN:
|
||||
if (record->event.pressed && current_platform == OS_MACOS) {
|
||||
register_mods(MOD_LSFT);
|
||||
register_mods(MOD_LGUI);
|
||||
tap_code(KC_5);
|
||||
unregister_mods(MOD_LGUI);
|
||||
unregister_mods(MOD_LSFT);
|
||||
} else {
|
||||
tap_code(KC_PRINT_SCREEN);
|
||||
}
|
||||
break;
|
||||
case JWRDL:
|
||||
if (record->event.pressed) {
|
||||
(current_platform == OS_MACOS) ? register_mods(MOD_LALT) : register_mods(MOD_LCTL);
|
||||
tap_code(KC_LEFT);
|
||||
(current_platform == OS_MACOS) ? unregister_mods(MOD_LALT) : unregister_mods(MOD_LCTL);
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
case JWRDR:
|
||||
if (record->event.pressed) {
|
||||
(current_platform == OS_MACOS) ? register_mods(MOD_LALT) : register_mods(MOD_LCTL);
|
||||
tap_code(KC_RIGHT);
|
||||
(current_platform == OS_MACOS) ? unregister_mods(MOD_LALT) : unregister_mods(MOD_LCTL);
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
case SWRDL:
|
||||
if (record->event.pressed) {
|
||||
register_mods(MOD_LSFT);
|
||||
(current_platform == OS_MACOS) ? register_mods(MOD_LALT) : register_mods(MOD_LCTL);
|
||||
tap_code(KC_LEFT);
|
||||
(current_platform == OS_MACOS) ? unregister_mods(MOD_LALT) : unregister_mods(MOD_LCTL);
|
||||
unregister_mods(MOD_LSFT);
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
case SWRDR:
|
||||
if (record->event.pressed) {
|
||||
register_mods(MOD_LSFT);
|
||||
(current_platform == OS_MACOS) ? register_mods(MOD_LALT) : register_mods(MOD_LCTL);
|
||||
tap_code(KC_RIGHT);
|
||||
(current_platform == OS_MACOS) ? unregister_mods(MOD_LALT) : unregister_mods(MOD_LCTL);
|
||||
unregister_mods(MOD_LSFT);
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
case TABL:
|
||||
if (record->event.pressed) {
|
||||
register_mods(MOD_LCTL);
|
||||
register_mods(MOD_LSFT);
|
||||
tap_code(KC_TAB);
|
||||
unregister_mods(MOD_LSFT);
|
||||
unregister_mods(MOD_LCTL);
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
case TABR:
|
||||
if (record->event.pressed) {
|
||||
register_mods(MOD_LCTL);
|
||||
tap_code(KC_TAB);
|
||||
unregister_mods(MOD_LCTL);
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
case DSKTPL:
|
||||
if (record->event.pressed) {
|
||||
register_mods(MOD_LCTL);
|
||||
register_mods(MOD_LGUI);
|
||||
(current_platform == OS_LINUX) ? tap_code(KC_UP) : tap_code(KC_LEFT);
|
||||
unregister_mods(MOD_LGUI);
|
||||
unregister_mods(MOD_LCTL);
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
case DSKTPR:
|
||||
if (record->event.pressed) {
|
||||
register_mods(MOD_LCTL);
|
||||
register_mods(MOD_LGUI);
|
||||
(current_platform == OS_LINUX) ? tap_code(KC_DOWN) : tap_code(KC_RGHT);
|
||||
unregister_mods(MOD_LGUI);
|
||||
unregister_mods(MOD_LCTL);
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
case PRVAPP:
|
||||
if (record->event.pressed) {
|
||||
register_code(KC_LSFT);
|
||||
if (!is_alt_tab_active) {
|
||||
is_alt_tab_active = true;
|
||||
(current_platform == OS_MACOS) ? register_code(KC_LGUI) : register_code(KC_LALT);
|
||||
}
|
||||
alt_tab_timer = timer_read();
|
||||
register_code(KC_TAB);
|
||||
} else {
|
||||
unregister_code(KC_TAB);
|
||||
unregister_code(KC_LSFT);
|
||||
}
|
||||
break;
|
||||
case NXTAPP:
|
||||
if (record->event.pressed) {
|
||||
if (!is_alt_tab_active) {
|
||||
is_alt_tab_active = true;
|
||||
(current_platform == OS_MACOS) ? register_code(KC_LGUI) : register_code(KC_LALT);
|
||||
}
|
||||
alt_tab_timer = timer_read();
|
||||
register_code(KC_TAB);
|
||||
} else {
|
||||
unregister_code(KC_TAB);
|
||||
}
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/* QWERTY */
|
||||
[_BASE] = LAYOUT(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7,
|
||||
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
|
||||
KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT,
|
||||
KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_DOT,
|
||||
KC_LGUI, KC_LALT, KC_SPC, KC_LGUI, KC_SPC, KC_BSPC, KC_RALT, KC_RCTL
|
||||
),
|
||||
|
||||
/* FUNCTION */
|
||||
[_FN] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
[_FN2] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
[_FN3] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
|
||||
};
|
||||
|
||||
|
||||
void matrix_scan_user(void) { // The very important timer.
|
||||
if (is_alt_tab_active) {
|
||||
if (timer_elapsed(alt_tab_timer) > 1000) {
|
||||
(current_platform == OS_MACOS) ? unregister_code(KC_LGUI) : unregister_code(KC_LALT);
|
||||
is_alt_tab_active = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#ifdef OLED_ENABLE
|
||||
#ifdef DYNAMIC_MACRO_ENABLE
|
||||
bool macro1;
|
||||
bool macro1rec;
|
||||
bool macro2;
|
||||
bool macro2rec;
|
||||
bool prevEnabled;
|
||||
uint8_t prevRGBmode;
|
||||
|
||||
void render_dynamic_macro_status(int col, int line){
|
||||
oled_set_cursor(col,line);
|
||||
macro1rec ? oled_write(PSTR("DM1"), macro1) : oled_write(PSTR(" "),false);
|
||||
oled_set_cursor(col,line+1);
|
||||
macro2rec ? oled_write(PSTR("DM2"), macro2) : oled_write(PSTR(" "),false);
|
||||
}
|
||||
|
||||
//direction indicates which macro it is, with 1 being Macro 1, -1 being Macro 2, and 0 being no macro.
|
||||
void dynamic_macro_record_start_user(int8_t direction){
|
||||
//prevEnabled = rgb_matrix_is_enabled();
|
||||
//if (!prevEnabled) { rgb_matrix_enable(); }
|
||||
//prevRGBmode = rgb_matrix_get_mode();
|
||||
//rgb_matrix_mode(RGB_MATRIX_BREATHING);
|
||||
switch(direction){
|
||||
case 1:
|
||||
macro1 = false;
|
||||
macro1rec = true;
|
||||
break;
|
||||
case -1:
|
||||
macro2 = false;
|
||||
macro2rec = true;
|
||||
break;
|
||||
default:
|
||||
macro1 = false;
|
||||
macro2 = false;
|
||||
macro1rec = false;
|
||||
macro2rec = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void dynamic_macro_record_end_user(int8_t direction){
|
||||
//prevEnabled ? rgb_matrix_mode(prevRGBmode) : rgb_matrix_disable();
|
||||
switch(direction){
|
||||
case 1:
|
||||
macro1 = true;
|
||||
break;
|
||||
case -1:
|
||||
macro2 = true;
|
||||
break;
|
||||
default:
|
||||
macro1 = false;
|
||||
macro2 = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
bool clear_screen = false;
|
||||
bool rerender_platform = false;
|
||||
|
||||
static void render_logo(void) {
|
||||
static const char PROGMEM logo[] = {
|
||||
0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94,
|
||||
0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4,
|
||||
0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00
|
||||
};
|
||||
|
||||
oled_write(logo, false);
|
||||
}
|
||||
|
||||
void render_keylock_status(led_t led_state) {
|
||||
bool caps_state = (led_state.caps_lock || is_caps_word_on());
|
||||
oled_write(PSTR("CAPS"), caps_state);
|
||||
oled_write(PSTR(" "), false);
|
||||
oled_write(PSTR("NUM"), led_state.num_lock);
|
||||
oled_write(PSTR(" "), false);
|
||||
oled_write(PSTR("SCRL"), led_state.scroll_lock);
|
||||
//oled_write_ln_P(PSTR(" "), false);
|
||||
}
|
||||
|
||||
void render_mod_status(uint8_t modifiers) {
|
||||
oled_write(PSTR("SH"), (modifiers & MOD_MASK_SHIFT));
|
||||
oled_write(PSTR(" "), false);
|
||||
(current_platform == OS_MACOS || current_platform == OS_IOS) ? oled_write(PSTR("CMD"), (modifiers & MOD_MASK_GUI)) : oled_write(PSTR("CT"), (modifiers & MOD_MASK_CTRL));
|
||||
oled_write(PSTR(" "), false);
|
||||
(current_platform == OS_MACOS || current_platform == OS_IOS) ? oled_write(PSTR("OPT"), (modifiers & MOD_MASK_ALT)) : oled_write(PSTR("ALT"), (modifiers & MOD_MASK_ALT));
|
||||
oled_write(PSTR(" "), false);
|
||||
(current_platform == OS_MACOS || current_platform == OS_IOS) ? oled_write(PSTR("CT"), (modifiers & MOD_MASK_CTRL)) : oled_write(PSTR("GUI"), (modifiers & MOD_MASK_GUI));
|
||||
}
|
||||
|
||||
void render_key_status_or_logo(){
|
||||
led_t led_state = host_keyboard_led_state();
|
||||
uint8_t mod_state = (get_mods()|get_oneshot_mods());
|
||||
if ( !led_state.num_lock && !led_state.caps_lock && !led_state.scroll_lock
|
||||
&& !(mod_state & MOD_MASK_SHIFT) && !(mod_state & MOD_MASK_ALT) && !(mod_state & MOD_MASK_CTRL) && !(mod_state & MOD_MASK_GUI)) {
|
||||
if(!clear_screen) {
|
||||
render_logo();
|
||||
rerender_platform = true;
|
||||
}
|
||||
clear_screen = true;
|
||||
} else {
|
||||
if (clear_screen == true) {
|
||||
oled_clear();
|
||||
oled_render();
|
||||
clear_screen = false;
|
||||
}
|
||||
oled_set_cursor(8,0);
|
||||
render_keylock_status(led_state);
|
||||
oled_set_cursor(8,1);
|
||||
render_mod_status(mod_state);
|
||||
rerender_platform = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void render_current_layer(){
|
||||
switch (get_highest_layer(layer_state)) {
|
||||
case 0:
|
||||
oled_write(PSTR("Layer 0"), false);
|
||||
break;
|
||||
case 1:
|
||||
oled_write(PSTR("Layer 1"), false);
|
||||
break;
|
||||
case 2:
|
||||
oled_write(PSTR("Layer 2"), false);
|
||||
break;
|
||||
case 3:
|
||||
oled_write(PSTR("Layer 3"), false);
|
||||
break;
|
||||
default:
|
||||
oled_write(PSTR("Layer ?"), false); // Should never display, here as a catchall
|
||||
}
|
||||
}
|
||||
|
||||
void render_current_wpm(){
|
||||
oled_write_P(PSTR("WPM: "), false);
|
||||
oled_write(get_u8_str(get_current_wpm(), '0'), false);
|
||||
}
|
||||
|
||||
void render_platform_status(int col, int line) {
|
||||
/* Show Ctrl-Gui Swap options */
|
||||
static const char PROGMEM logo[][5][3] = {
|
||||
{{0x9B, 0x9C, 0}, {0xbb, 0xbc, 0}}, //Android
|
||||
{{0x99, 0x9A, 0}, {0xb9, 0xba, 0}}, //Linux
|
||||
{{0x97, 0x98, 0}, {0xb7, 0xb8, 0}}, //Windows
|
||||
{{0x95, 0x96, 0}, {0xb5, 0xb6, 0}}, //Mac/iOS
|
||||
{{0x9D, 0x9E, 0}, {0xbd, 0xbe, 0}}, //Empty Placeholder
|
||||
};
|
||||
current_platform = detected_host_os();
|
||||
switch (current_platform) {
|
||||
/*case OS_ANDROID: //Android
|
||||
oled_set_cursor(col,line);
|
||||
oled_write(logo[0][0], false);
|
||||
oled_set_cursor(col,line+1);
|
||||
oled_write(logo[0][1], false);
|
||||
break;*/
|
||||
case OS_LINUX: //Linux
|
||||
oled_set_cursor(col,line);
|
||||
oled_write(logo[1][0], false);
|
||||
oled_set_cursor(col,line+1);
|
||||
oled_write(logo[1][1], false);
|
||||
keymap_config.swap_lctl_lgui = false;
|
||||
keymap_config.swap_rctl_rgui = false;
|
||||
break;
|
||||
case OS_WINDOWS: //Windows
|
||||
oled_set_cursor(col,line);
|
||||
oled_write(logo[2][0], false);
|
||||
oled_set_cursor(col,line+1);
|
||||
oled_write(logo[2][1], false);
|
||||
keymap_config.swap_lctl_lgui = false;
|
||||
keymap_config.swap_rctl_rgui = false;
|
||||
break;
|
||||
case OS_MACOS: //Mac
|
||||
oled_set_cursor(col,line);
|
||||
oled_write(logo[3][0], false);
|
||||
oled_set_cursor(col,line+1);
|
||||
oled_write(logo[3][1], false);
|
||||
keymap_config.swap_lctl_lgui = true;
|
||||
keymap_config.swap_rctl_rgui = true;
|
||||
break;
|
||||
case OS_IOS: //iOS
|
||||
oled_set_cursor(col,line);
|
||||
oled_write(logo[3][0], false);
|
||||
oled_set_cursor(col,line+1);
|
||||
oled_write(logo[3][1], false);
|
||||
keymap_config.swap_lctl_lgui = true;
|
||||
keymap_config.swap_rctl_rgui = true;
|
||||
break;
|
||||
default: //OS_UNSURE or not configured
|
||||
oled_set_cursor(col,line);
|
||||
oled_write(logo[4][0], false);
|
||||
oled_set_cursor(col,line+1);
|
||||
oled_write(logo[4][1], false);
|
||||
break;
|
||||
}
|
||||
rerender_platform = false;
|
||||
}
|
||||
|
||||
bool oled_task_user(void) {
|
||||
render_key_status_or_logo();
|
||||
oled_set_cursor(8,2);
|
||||
render_current_layer();
|
||||
#ifdef DYNAMIC_MACRO_ENABLE
|
||||
render_dynamic_macro_status(18,2);
|
||||
#endif
|
||||
oled_set_cursor(8,3);
|
||||
render_current_wpm();
|
||||
#ifdef OS_DETECTION_ENABLE
|
||||
if(current_platform != detected_host_os() || rerender_platform) { render_platform_status(3,0); }
|
||||
#endif
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
#endif
|
1
keyboards/nachie/subtext/keymaps/vial/readme.md
Normal file
1
keyboards/nachie/subtext/keymaps/vial/readme.md
Normal file
@ -0,0 +1 @@
|
||||
The VIAL Keymap for the nachie subtext
|
9
keyboards/nachie/subtext/keymaps/vial/rules.mk
Normal file
9
keyboards/nachie/subtext/keymaps/vial/rules.mk
Normal file
@ -0,0 +1,9 @@
|
||||
VIA_ENABLE = yes
|
||||
VIAL_ENABLE = yes
|
||||
|
||||
ENCODER_MAP_ENABLE = no
|
||||
BOOTMAGIC_ENABLE = yes
|
||||
MAGIC_ENABLE = yes
|
||||
OS_DETECTION_ENABLE = yes
|
||||
DYNAMIC_MACRO_ENABLE = yes
|
||||
CAPS_WORD_ENABLE = yes
|
298
keyboards/nachie/subtext/keymaps/vial/vial.json
Normal file
298
keyboards/nachie/subtext/keymaps/vial/vial.json
Normal file
@ -0,0 +1,298 @@
|
||||
{
|
||||
"name": "Subtext",
|
||||
"vendorId": "0x4B43",
|
||||
"productId": "0x5354",
|
||||
"customKeycodes": [
|
||||
{
|
||||
"name": "JmpWordL",
|
||||
"title": "Jump Word Left",
|
||||
"shortName": "JWRDL"
|
||||
},
|
||||
{
|
||||
"name": "JmpWordR",
|
||||
"title": "Jump Word Right",
|
||||
"shortName": "JWRDR"
|
||||
},
|
||||
{
|
||||
"name": "SlcWordL",
|
||||
"title": "Select Word Left",
|
||||
"shortName": "SWRDL"
|
||||
},
|
||||
{
|
||||
"name": "SlcWordR",
|
||||
"title": "Select Word Right",
|
||||
"shortName": "SWRDR"
|
||||
},
|
||||
{
|
||||
"name": "TabLft",
|
||||
"title": "Tab Left",
|
||||
"shortName": "TABL"
|
||||
},
|
||||
{
|
||||
"name": "TabRght",
|
||||
"title": "Tab Right",
|
||||
"shortName": "TABR"
|
||||
},
|
||||
{
|
||||
"name": "DsktpLft",
|
||||
"title": "Desktop Left",
|
||||
"shortName": "DSKTPL"
|
||||
},
|
||||
{
|
||||
"name": "DsktpRght",
|
||||
"title": "Desktop Right",
|
||||
"shortName": "DSKTPR"
|
||||
},
|
||||
{
|
||||
"name": "PrevApp",
|
||||
"title": "Previous App",
|
||||
"shortName": "PRVAPP"
|
||||
},
|
||||
{
|
||||
"name": "NextApp",
|
||||
"title": "Next App",
|
||||
"shortName": "NXTAPP"
|
||||
}
|
||||
],
|
||||
"matrix": { "rows": 10, "cols": 5 },
|
||||
"layouts": {
|
||||
"keymap": [
|
||||
[
|
||||
{
|
||||
"t": "#666666",
|
||||
"f": 2,
|
||||
"w": 1.0357
|
||||
},
|
||||
"0,0",
|
||||
{
|
||||
"x": -0.005700000000000038,
|
||||
"w": 1.0357
|
||||
},
|
||||
"1,0",
|
||||
{
|
||||
"x": 0.0042999999999997485,
|
||||
"w": 1.0357
|
||||
},
|
||||
"0,1",
|
||||
{
|
||||
"x": -0.005699999999999594,
|
||||
"w": 1.0357
|
||||
},
|
||||
"1,1",
|
||||
{
|
||||
"x": 2.3243,
|
||||
"w": 1.0357
|
||||
},
|
||||
"0,3",
|
||||
{
|
||||
"x": 0.0042999999999997485,
|
||||
"w": 1.0357
|
||||
},
|
||||
"1,3",
|
||||
{
|
||||
"x": -0.0057000000000009265,
|
||||
"w": 1.0357
|
||||
},
|
||||
"0,4",
|
||||
{
|
||||
"x": 0.004300000000000637,
|
||||
"w": 1.0357
|
||||
},
|
||||
"1,4"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": 0.5,
|
||||
"w": 1.0357
|
||||
},
|
||||
"2,0",
|
||||
{
|
||||
"x": -0.005700000000000038,
|
||||
"w": 1.0357
|
||||
},
|
||||
"3,0",
|
||||
{
|
||||
"x": 0.0042999999999997485,
|
||||
"w": 1.0357
|
||||
},
|
||||
"2,1",
|
||||
{
|
||||
"x": -0.005699999999999594,
|
||||
"w": 1.0357
|
||||
},
|
||||
"3,1",
|
||||
{
|
||||
"x": 0.0042999999999997485,
|
||||
"w": 1.0357
|
||||
},
|
||||
"2,2",
|
||||
{
|
||||
"x": 0.0042999999999997485,
|
||||
"w": 1.0357
|
||||
},
|
||||
"3,2",
|
||||
{
|
||||
"x": -0.005700000000000038,
|
||||
"w": 1.0357
|
||||
},
|
||||
"2,3",
|
||||
{
|
||||
"x": 0.0042999999999997485,
|
||||
"w": 1.0357
|
||||
},
|
||||
"3,3",
|
||||
{
|
||||
"x": -0.0057000000000009265,
|
||||
"w": 1.0357
|
||||
},
|
||||
"2,4",
|
||||
{
|
||||
"x": 0.004300000000000637,
|
||||
"w": 1.0357
|
||||
},
|
||||
"3,4"
|
||||
],
|
||||
[
|
||||
{
|
||||
"x": 0.25,
|
||||
"w": 1.0357
|
||||
},
|
||||
"4,0",
|
||||
{
|
||||
"x": -0.005700000000000038,
|
||||
"w": 1.0357
|
||||
},
|
||||
"5,0",
|
||||
{
|
||||
"x": 0.0042999999999997485,
|
||||
"w": 1.0357
|
||||
},
|
||||
"4,1",
|
||||
{
|
||||
"x": -0.005699999999999594,
|
||||
"w": 1.0357
|
||||
},
|
||||
"5,1",
|
||||
{
|
||||
"x": 0.0042999999999997485,
|
||||
"w": 1.0357
|
||||
},
|
||||
"4,2",
|
||||
{
|
||||
"x": 0.0042999999999997485,
|
||||
"w": 1.0357
|
||||
},
|
||||
"5,2",
|
||||
{
|
||||
"x": -0.005700000000000038,
|
||||
"w": 1.0357
|
||||
},
|
||||
"4,3",
|
||||
{
|
||||
"x": 0.0042999999999997485,
|
||||
"w": 1.0357
|
||||
},
|
||||
"5,3",
|
||||
{
|
||||
"x": -0.0057000000000009265,
|
||||
"w": 1.0357
|
||||
},
|
||||
"4,4",
|
||||
{
|
||||
"x": 0.004300000000000637,
|
||||
"w": 1.0357
|
||||
},
|
||||
"5,4"
|
||||
],
|
||||
[
|
||||
{
|
||||
"x": 0.5,
|
||||
"w": 1.0357
|
||||
},
|
||||
"7,0",
|
||||
{
|
||||
"x": -0.005700000000000038,
|
||||
"w": 1.0357
|
||||
},
|
||||
"6,1",
|
||||
{
|
||||
"x": 0.0042999999999997485,
|
||||
"w": 1.0357
|
||||
},
|
||||
"7,1",
|
||||
{
|
||||
"x": -0.005699999999999594,
|
||||
"w": 1.0357
|
||||
},
|
||||
"6,2",
|
||||
{
|
||||
"x": 0.0042999999999997485,
|
||||
"w": 1.0357
|
||||
},
|
||||
"7,2",
|
||||
{
|
||||
"x": 0.0042999999999997485,
|
||||
"w": 1.0357
|
||||
},
|
||||
"6,3",
|
||||
{
|
||||
"x": -0.005700000000000038,
|
||||
"w": 1.0357
|
||||
},
|
||||
"7,3",
|
||||
{
|
||||
"x": 0.0042999999999997485,
|
||||
"w": 1.0357
|
||||
},
|
||||
"6,4",
|
||||
{
|
||||
"x": -0.0057000000000009265,
|
||||
"w": 1.0357
|
||||
},
|
||||
"7,4"
|
||||
],
|
||||
[
|
||||
{
|
||||
"x": 1.25,
|
||||
"w": 1.0357
|
||||
},
|
||||
"8,0",
|
||||
{
|
||||
"x": -0.0057000000000004825,
|
||||
"w": 1.0357
|
||||
},
|
||||
"9,0",
|
||||
{
|
||||
"x": 0.0043000000000001926,
|
||||
"w": 1.0357
|
||||
},
|
||||
"8,1",
|
||||
{
|
||||
"x": -0.005700000000000038,
|
||||
"w": 1.0357
|
||||
},
|
||||
"9,1",
|
||||
{
|
||||
"x": 0.0042999999999997485,
|
||||
"w": 1.0357
|
||||
},
|
||||
"8,2",
|
||||
{
|
||||
"x": 0.0042999999999997485,
|
||||
"w": 1.0357
|
||||
},
|
||||
"9,2",
|
||||
{
|
||||
"x": -0.005700000000000038,
|
||||
"w": 1.0357
|
||||
},
|
||||
"8,3",
|
||||
{
|
||||
"x": 0.004300000000000637,
|
||||
"w": 1.0357
|
||||
},
|
||||
"9,3"
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
22
keyboards/nachie/subtext/mcuconf.h
Normal file
22
keyboards/nachie/subtext/mcuconf.h
Normal 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
|
||||
#include_next <mcuconf.h>
|
||||
|
||||
#undef STM32_I2C_USE_I2C1
|
||||
#define STM32_I2C_USE_I2C1 TRUE
|
23
keyboards/nachie/subtext/readme.md
Normal file
23
keyboards/nachie/subtext/readme.md
Normal file
@ -0,0 +1,23 @@
|
||||
# Subtext
|
||||
|
||||
Firmware for the nachie Subtext keyboard
|
||||
|
||||
* Keyboard Maintainer: [nachie](https://github.com/nachie)
|
||||
* Hardware Supported: Subtext
|
||||
* Hardware Availability: [nachie](https://littlecraftery.com/products/subtext)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make nachie/subtext:default
|
||||
|
||||
Or to make and flash:
|
||||
|
||||
make nachie/subtext:default:flash
|
||||
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
|
||||
## Bootloader
|
||||
|
||||
* **Bootmagic reset**: Hold down ESC (top left) and plug in the keyboard
|
||||
* **Physical reset button**: Briefly press the button labeled "SW_RST1" on the back of the PCB
|
5
keyboards/nachie/subtext/rules.mk
Normal file
5
keyboards/nachie/subtext/rules.mk
Normal file
@ -0,0 +1,5 @@
|
||||
|
||||
OLED_DRIVER = ssd1306 # Set Driver to SSD1306
|
||||
|
||||
# Enter lower-power sleep mode when on the ChibiOS idle thread
|
||||
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
|
79
keyboards/nachie/subtext/subtext.c
Normal file
79
keyboards/nachie/subtext/subtext.c
Normal file
@ -0,0 +1,79 @@
|
||||
/*
|
||||
Copyright 2024 nachie
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include "quantum.h"
|
||||
|
||||
void board_init(void) {
|
||||
SYSCFG->CFGR1 |= SYSCFG_CFGR1_I2C1_DMA_RMP; // DMA re-map, you may not need this depending on your
|
||||
}
|
||||
|
||||
#ifdef OLED_ENABLE
|
||||
|
||||
oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
|
||||
return OLED_ROTATION_0;
|
||||
}
|
||||
|
||||
static void render_logo(void) {
|
||||
static const char PROGMEM my_logo[] = {
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0x3f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0x7f, 0x7f,
|
||||
0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0x00, 0x00, 0x1f, 0x8f, 0x07, 0x03, 0x71, 0xf8, 0xfc, 0xfe, 0xff, 0xff, 0x03, 0x01,
|
||||
0x38, 0x1c, 0x06, 0xa6, 0xb6, 0x86, 0xfc, 0xf8, 0x00, 0x03, 0xff, 0xff, 0xff, 0x00, 0x00, 0xf1,
|
||||
0xf9, 0xfc, 0xfc, 0xfc, 0xf8, 0xe1, 0x03, 0x0f, 0xff, 0xff, 0x1f, 0x03, 0x01, 0xf9, 0xfc, 0x1c,
|
||||
0x80, 0xf8, 0xf0, 0xf1, 0xf7, 0xff, 0xff, 0xff, 0x03, 0x01, 0x38, 0x1c, 0x06, 0xa6, 0xb6, 0x86,
|
||||
0xfc, 0xf8, 0x00, 0x03, 0xff, 0xff, 0xdf, 0x9f, 0x3f, 0x7f, 0xf8, 0xf2, 0xf2, 0x00, 0x01, 0xff,
|
||||
0xff, 0xff, 0x07, 0x03, 0x91, 0x99, 0x9c, 0x9c, 0x9c, 0x98, 0x91, 0x83, 0x87, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xe0, 0xe0, 0xff, 0xff, 0xff, 0xfe, 0xf8, 0xe0, 0xe3, 0xe7, 0xff, 0xff, 0xff, 0xe0,
|
||||
0xe0, 0xe0, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0xe0, 0xff, 0xff, 0xff, 0x00, 0x00, 0xf1,
|
||||
0xe7, 0xe7, 0xe7, 0xe7, 0xe3, 0xf0, 0xf8, 0xfe, 0xff, 0xff, 0xfe, 0xf8, 0x70, 0x03, 0xc0, 0xe4,
|
||||
0xe7, 0xe7, 0xe1, 0xf0, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xe0, 0xe0, 0xe0, 0xfe, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xe0, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf8, 0xf1, 0xe1, 0xe0, 0xe0, 0xff,
|
||||
0xff, 0xff, 0xfc, 0xf0, 0xf1, 0xe3, 0xe7, 0xe7, 0xe7, 0xe7, 0xe3, 0xf1, 0xf9, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
|
||||
};
|
||||
oled_write_raw_P(my_logo, sizeof(my_logo));
|
||||
}
|
||||
|
||||
|
||||
bool oled_task_kb(void) {
|
||||
// Defer to the keymap if they want to override
|
||||
if(!oled_task_user()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// default keyboard drawing code
|
||||
render_logo();
|
||||
return false;
|
||||
}
|
||||
|
||||
#endif
|
11
keyboards/nachie/syndrome/chconf.h
Normal file
11
keyboards/nachie/syndrome/chconf.h
Normal file
@ -0,0 +1,11 @@
|
||||
/*
|
||||
* `qmk chibios-confmigrate -i firmware/nachie/syndrome/chconf.h -r ../keymaps_qmk/platforms/chibios/boards/GENERIC_PROMICRO_RP2040/configs/chconf.h`
|
||||
*/
|
||||
|
||||
|
||||
#pragma once
|
||||
|
||||
#include_next <chconf.h>
|
||||
|
||||
#undef CH_CFG_ST_TIMEDELTA
|
||||
#define CH_CFG_ST_TIMEDELTA 100
|
38
keyboards/nachie/syndrome/config.h
Executable file
38
keyboards/nachie/syndrome/config.h
Executable 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/>.
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#define RP2040_FLASH_GENERIC_03H
|
||||
|
||||
|
||||
#ifdef HAPTIC_ENABLE
|
||||
#define SOLENOID_PIN GP15
|
||||
#endif
|
||||
|
||||
/* Oled config */
|
||||
#ifdef OLED_ENABLE
|
||||
#define I2C_DRIVER I2CD1
|
||||
#define I2C1_SDA_PIN GP10
|
||||
#define I2C1_SCL_PIN GP11
|
||||
#define OLED_TIMEOUT 60000 // Turns off the OLED screen after x ms of screen update inactivity. Helps reduce OLED Burn-in. Set to 0 to disable.
|
||||
#define OLED_FADE_OUT
|
||||
#define OLED_FADE_OUT_INTERVAL 13
|
||||
#define OLED_BRIGHTNESS 50 // The default brightness level of the OLED, from 0 to 255.
|
||||
#define OLED_UPDATE_INTERVAL 16 // limits in milliseconds how frequently the OLED updates. Calculation 1000/fps (increases keyboard responsiveness)
|
||||
#endif
|
||||
|
||||
#define VIA_CUSTOM_LIGHTING_ENABLE
|
4
keyboards/nachie/syndrome/halconf.h
Normal file
4
keyboards/nachie/syndrome/halconf.h
Normal file
@ -0,0 +1,4 @@
|
||||
#pragma once
|
||||
|
||||
#include_next <halconf.h>
|
||||
#define HAL_USE_I2C TRUE
|
149
keyboards/nachie/syndrome/info.json
Normal file
149
keyboards/nachie/syndrome/info.json
Normal file
@ -0,0 +1,149 @@
|
||||
{
|
||||
"keyboard_name": "Syndrome",
|
||||
"manufacturer": "Nachie",
|
||||
"usb": {
|
||||
"vid": "0x4B43",
|
||||
"pid": "0x5359",
|
||||
"device_version": "1.0.0"
|
||||
},
|
||||
"board": "GENERIC_RP_RP2040",
|
||||
"bootloader": "rp2040",
|
||||
"processor": "RP2040",
|
||||
"url": "https://littlecraftery.com/products/syndrome",
|
||||
"maintainer": "nachie",
|
||||
"ws2812": {
|
||||
"pin": "GP29",
|
||||
"driver": "vendor"
|
||||
},
|
||||
"rgb_matrix": {
|
||||
"driver": "ws2812",
|
||||
"led_count": 16,
|
||||
"animations": {
|
||||
"alphas_mods": true,
|
||||
"gradient_up_down": true,
|
||||
"gradient_left_right": true,
|
||||
"breathing": true,
|
||||
"band_sat": true,
|
||||
"band_val": true,
|
||||
"band_pinwheel_sat": true,
|
||||
"band_pinwheel_val": true,
|
||||
"band_spiral_sat": true,
|
||||
"band_spiral_val": true,
|
||||
"cycle_all": true,
|
||||
"cycle_left_right": true,
|
||||
"cycle_up_down": true,
|
||||
"rainbow_moving_chevron":true,
|
||||
"cycle_out_in": true,
|
||||
"cycle_out_in_dual": true,
|
||||
"cycle_pinwheel": true,
|
||||
"cycle_spiral": true,
|
||||
"rainbow_pinwheels": true,
|
||||
"raindrops": true,
|
||||
"jellybean_raindrops": true,
|
||||
"hue_breathing": true,
|
||||
"hue_pendulum": true,
|
||||
"hue_wave": true,
|
||||
"typing_heatmap": true,
|
||||
"digital_rain": true,
|
||||
"solid_reactive_simple": true,
|
||||
"solid_reactive": true,
|
||||
"solid_reactive_wide": true,
|
||||
"solid_reactive_multiwide": true,
|
||||
"solid_reactive_cross": true,
|
||||
"solid_reactive_multicross": true,
|
||||
"solid_reactive_nexus": true,
|
||||
"solid_reactive_multinexus": true,
|
||||
"splash": true,
|
||||
"solid_splash": true,
|
||||
"solid_multisplash": true,
|
||||
"pixel_rain": true,
|
||||
"pixel_fractal": true
|
||||
}
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"y": 0, "x": 0, "matrix": [8, 5], "label": "8,5"},
|
||||
{"y": 0, "x": 7, "matrix": [9, 5], "label": "9,5"},
|
||||
{"y": 0, "x": 8, "matrix": [8, 6], "label": "8,6"},
|
||||
{"y": 0, "x": 9, "matrix": [9, 6], "label": "9,6"},
|
||||
{"y": 0, "x": 10, "matrix": [8, 7], "label": "8,7"},
|
||||
{"y": 2, "x": 0, "matrix": [0, 0], "label": "0,0"},
|
||||
{"y": 2, "x": 1, "matrix": [1, 0], "label": "1,0"},
|
||||
{"y": 2, "x": 2, "matrix": [0, 1], "label": "0,1"},
|
||||
{"y": 2, "x": 3, "matrix": [1, 1], "label": "1,1"},
|
||||
{"y": 2, "x": 4, "matrix": [0, 2], "label": "0,2"},
|
||||
{"y": 2, "x": 5, "matrix": [1, 2], "label": "1,2"},
|
||||
{"y": 2, "x": 6, "matrix": [0, 3], "label": "0,3"},
|
||||
{"y": 2, "x": 7, "matrix": [1, 3], "label": "1,3"},
|
||||
{"y": 2, "x": 8, "matrix": [0, 4], "label": "0,4"},
|
||||
{"y": 2, "x": 9, "matrix": [1, 4], "label": "1,4"},
|
||||
{"y": 2, "x": 10, "matrix": [7, 4], "label": "7,4"},
|
||||
{"y": 3, "x": 0, "matrix": [2, 0], "w": 1.25, "label": "2,0"},
|
||||
{"y": 3, "x": 1.25, "matrix": [3, 0], "label": "3,0"},
|
||||
{"y": 3, "x": 2.25, "matrix": [2, 1], "label": "2,1"},
|
||||
{"y": 3, "x": 3.25, "matrix": [3, 1], "label": "3,1"},
|
||||
{"y": 3, "x": 4.25, "matrix": [2, 2], "label": "2,2"},
|
||||
{"y": 3, "x": 5.25, "matrix": [3, 2], "label": "3,2"},
|
||||
{"y": 3, "x": 6.25, "matrix": [2, 3], "label": "2,3"},
|
||||
{"y": 3, "x": 7.25, "matrix": [3, 3], "label": "3,3"},
|
||||
{"y": 3, "x": 8.25, "matrix": [2, 4], "label": "2,4"},
|
||||
{"y": 3, "x": 9.25, "matrix": [3, 4], "w": 1.75, "label": "3,4"},
|
||||
{"y": 4, "x": 0, "matrix": [4, 0], "w": 1.75, "label": "4,0"},
|
||||
{"y": 4, "x": 1.75, "matrix": [5, 0], "label": "5,0"},
|
||||
{"y": 4, "x": 2.75, "matrix": [4, 1], "label": "4,1"},
|
||||
{"y": 4, "x": 3.75, "matrix": [5, 1], "label": "5,1"},
|
||||
{"y": 4, "x": 4.75, "matrix": [4, 2], "label": "4,2"},
|
||||
{"y": 4, "x": 5.75, "matrix": [5, 2], "label": "5,2"},
|
||||
{"y": 4, "x": 6.75, "matrix": [4, 3], "label": "4,3"},
|
||||
{"y": 4, "x": 7.75, "matrix": [5, 3], "label": "5,3"},
|
||||
{"y": 4, "x": 8.75, "matrix": [4, 4], "w": 1.25, "label": "4,4"},
|
||||
{"y": 4, "x": 10, "matrix": [5, 4], "label": "5,4"},
|
||||
{"y": 5, "x": 0, "matrix": [6, 0], "w": 1.5, "label": "6,0"},
|
||||
{"y": 5, "x": 1.5, "matrix": [7, 0], "label": "7,0"},
|
||||
{"y": 5, "x": 2.5, "matrix": [6, 1], "w": 1.25, "label": "6,1"},
|
||||
{"y": 5, "x": 3.75, "matrix": [7, 1], "w": 1.75, "label": "7,1"},
|
||||
{"y": 5, "x": 5.5, "matrix": [7, 2], "w": 1.75, "label": "7,2"},
|
||||
{"y": 5, "x": 7.25, "matrix": [6, 3], "w": 1.25, "label": "6,3"},
|
||||
{"y": 5, "x": 8.5, "matrix": [7, 3], "label": "7,3"},
|
||||
{"y": 5, "x": 9.5, "matrix": [6, 4], "w": 1.5, "label": "6,4"}
|
||||
]
|
||||
}
|
||||
},
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"command": false,
|
||||
"console": false,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": false,
|
||||
"audio": false,
|
||||
"backlight": false,
|
||||
"rgblight": false,
|
||||
"encoder": true,
|
||||
"rgb_matrix": true,
|
||||
"haptic": true,
|
||||
"oled": true,
|
||||
"wpm": true
|
||||
},
|
||||
"build": {
|
||||
"lto": true
|
||||
},
|
||||
"haptic": {
|
||||
"driver": "solenoid"
|
||||
},
|
||||
"encoder": {
|
||||
"enabled": true,
|
||||
"rotary": [
|
||||
{ "pin_a": "GP22", "pin_b": "GP23", "resolution": 2 },
|
||||
{ "pin_a": "GP26", "pin_b": "GP27", "resolution": 2 },
|
||||
{ "pin_a": "GP0", "pin_b": "GP1", "resolution": 2 },
|
||||
{ "pin_a": "GP5", "pin_b": "GP6", "resolution": 2 }
|
||||
]
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"matrix_pins": {
|
||||
"cols": ["GP28", "GP21", "GP20", "GP3", "GP2", "GP12", "GP13", "GP14"],
|
||||
"rows": ["GP25", "GP24", "GP16", "GP7", "GP17", "GP18", "GP19", "GP4", "GP8", "GP9"]
|
||||
}
|
||||
}
|
149
keyboards/nachie/syndrome/keyboard.json
Normal file
149
keyboards/nachie/syndrome/keyboard.json
Normal file
@ -0,0 +1,149 @@
|
||||
{
|
||||
"keyboard_name": "Syndrome",
|
||||
"manufacturer": "Nachie",
|
||||
"usb": {
|
||||
"vid": "0x4B43",
|
||||
"pid": "0x5359",
|
||||
"device_version": "1.0.0"
|
||||
},
|
||||
"board": "GENERIC_RP_RP2040",
|
||||
"bootloader": "rp2040",
|
||||
"processor": "RP2040",
|
||||
"url": "https://littlecraftery.com/products/syndrome",
|
||||
"maintainer": "nachie",
|
||||
"ws2812": {
|
||||
"pin": "GP29",
|
||||
"driver": "vendor"
|
||||
},
|
||||
"rgb_matrix": {
|
||||
"driver": "ws2812",
|
||||
"led_count": 16,
|
||||
"animations": {
|
||||
"alphas_mods": true,
|
||||
"gradient_up_down": true,
|
||||
"gradient_left_right": true,
|
||||
"breathing": true,
|
||||
"band_sat": true,
|
||||
"band_val": true,
|
||||
"band_pinwheel_sat": true,
|
||||
"band_pinwheel_val": true,
|
||||
"band_spiral_sat": true,
|
||||
"band_spiral_val": true,
|
||||
"cycle_all": true,
|
||||
"cycle_left_right": true,
|
||||
"cycle_up_down": true,
|
||||
"rainbow_moving_chevron":true,
|
||||
"cycle_out_in": true,
|
||||
"cycle_out_in_dual": true,
|
||||
"cycle_pinwheel": true,
|
||||
"cycle_spiral": true,
|
||||
"rainbow_pinwheels": true,
|
||||
"raindrops": true,
|
||||
"jellybean_raindrops": true,
|
||||
"hue_breathing": true,
|
||||
"hue_pendulum": true,
|
||||
"hue_wave": true,
|
||||
"typing_heatmap": true,
|
||||
"digital_rain": true,
|
||||
"solid_reactive_simple": true,
|
||||
"solid_reactive": true,
|
||||
"solid_reactive_wide": true,
|
||||
"solid_reactive_multiwide": true,
|
||||
"solid_reactive_cross": true,
|
||||
"solid_reactive_multicross": true,
|
||||
"solid_reactive_nexus": true,
|
||||
"solid_reactive_multinexus": true,
|
||||
"splash": true,
|
||||
"solid_splash": true,
|
||||
"solid_multisplash": true,
|
||||
"pixel_rain": true,
|
||||
"pixel_fractal": true
|
||||
}
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"y": 0, "x": 0, "matrix": [8, 5], "label": "8,5"},
|
||||
{"y": 0, "x": 7, "matrix": [9, 5], "label": "9,5"},
|
||||
{"y": 0, "x": 8, "matrix": [8, 6], "label": "8,6"},
|
||||
{"y": 0, "x": 9, "matrix": [9, 6], "label": "9,6"},
|
||||
{"y": 0, "x": 10, "matrix": [8, 7], "label": "8,7"},
|
||||
{"y": 2, "x": 0, "matrix": [0, 0], "label": "0,0"},
|
||||
{"y": 2, "x": 1, "matrix": [1, 0], "label": "1,0"},
|
||||
{"y": 2, "x": 2, "matrix": [0, 1], "label": "0,1"},
|
||||
{"y": 2, "x": 3, "matrix": [1, 1], "label": "1,1"},
|
||||
{"y": 2, "x": 4, "matrix": [0, 2], "label": "0,2"},
|
||||
{"y": 2, "x": 5, "matrix": [1, 2], "label": "1,2"},
|
||||
{"y": 2, "x": 6, "matrix": [0, 3], "label": "0,3"},
|
||||
{"y": 2, "x": 7, "matrix": [1, 3], "label": "1,3"},
|
||||
{"y": 2, "x": 8, "matrix": [0, 4], "label": "0,4"},
|
||||
{"y": 2, "x": 9, "matrix": [1, 4], "label": "1,4"},
|
||||
{"y": 2, "x": 10, "matrix": [7, 4], "label": "7,4"},
|
||||
{"y": 3, "x": 0, "matrix": [2, 0], "w": 1.25, "label": "2,0"},
|
||||
{"y": 3, "x": 1.25, "matrix": [3, 0], "label": "3,0"},
|
||||
{"y": 3, "x": 2.25, "matrix": [2, 1], "label": "2,1"},
|
||||
{"y": 3, "x": 3.25, "matrix": [3, 1], "label": "3,1"},
|
||||
{"y": 3, "x": 4.25, "matrix": [2, 2], "label": "2,2"},
|
||||
{"y": 3, "x": 5.25, "matrix": [3, 2], "label": "3,2"},
|
||||
{"y": 3, "x": 6.25, "matrix": [2, 3], "label": "2,3"},
|
||||
{"y": 3, "x": 7.25, "matrix": [3, 3], "label": "3,3"},
|
||||
{"y": 3, "x": 8.25, "matrix": [2, 4], "label": "2,4"},
|
||||
{"y": 3, "x": 9.25, "matrix": [3, 4], "w": 1.75, "label": "3,4"},
|
||||
{"y": 4, "x": 0, "matrix": [4, 0], "w": 1.75, "label": "4,0"},
|
||||
{"y": 4, "x": 1.75, "matrix": [5, 0], "label": "5,0"},
|
||||
{"y": 4, "x": 2.75, "matrix": [4, 1], "label": "4,1"},
|
||||
{"y": 4, "x": 3.75, "matrix": [5, 1], "label": "5,1"},
|
||||
{"y": 4, "x": 4.75, "matrix": [4, 2], "label": "4,2"},
|
||||
{"y": 4, "x": 5.75, "matrix": [5, 2], "label": "5,2"},
|
||||
{"y": 4, "x": 6.75, "matrix": [4, 3], "label": "4,3"},
|
||||
{"y": 4, "x": 7.75, "matrix": [5, 3], "label": "5,3"},
|
||||
{"y": 4, "x": 8.75, "matrix": [4, 4], "w": 1.25, "label": "4,4"},
|
||||
{"y": 4, "x": 10, "matrix": [5, 4], "label": "5,4"},
|
||||
{"y": 5, "x": 0, "matrix": [6, 0], "w": 1.5, "label": "6,0"},
|
||||
{"y": 5, "x": 1.5, "matrix": [7, 0], "label": "7,0"},
|
||||
{"y": 5, "x": 2.5, "matrix": [6, 1], "w": 1.25, "label": "6,1"},
|
||||
{"y": 5, "x": 3.75, "matrix": [7, 1], "w": 1.75, "label": "7,1"},
|
||||
{"y": 5, "x": 5.5, "matrix": [7, 2], "w": 1.75, "label": "7,2"},
|
||||
{"y": 5, "x": 7.25, "matrix": [6, 3], "w": 1.25, "label": "6,3"},
|
||||
{"y": 5, "x": 8.5, "matrix": [7, 3], "label": "7,3"},
|
||||
{"y": 5, "x": 9.5, "matrix": [6, 4], "w": 1.5, "label": "6,4"}
|
||||
]
|
||||
}
|
||||
},
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"command": false,
|
||||
"console": false,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": false,
|
||||
"audio": false,
|
||||
"backlight": false,
|
||||
"rgblight": false,
|
||||
"encoder": true,
|
||||
"rgb_matrix": true,
|
||||
"haptic": true,
|
||||
"oled": true,
|
||||
"wpm": true
|
||||
},
|
||||
"build": {
|
||||
"lto": true
|
||||
},
|
||||
"haptic": {
|
||||
"driver": "solenoid"
|
||||
},
|
||||
"encoder": {
|
||||
"enabled": true,
|
||||
"rotary": [
|
||||
{ "pin_a": "GP22", "pin_b": "GP23", "resolution": 2 },
|
||||
{ "pin_a": "GP26", "pin_b": "GP27", "resolution": 2 },
|
||||
{ "pin_a": "GP0", "pin_b": "GP1", "resolution": 2 },
|
||||
{ "pin_a": "GP5", "pin_b": "GP6", "resolution": 2 }
|
||||
]
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"matrix_pins": {
|
||||
"cols": ["GP28", "GP21", "GP20", "GP3", "GP2", "GP12", "GP13", "GP14"],
|
||||
"rows": ["GP25", "GP24", "GP16", "GP7", "GP17", "GP18", "GP19", "GP4", "GP8", "GP9"]
|
||||
}
|
||||
}
|
28
keyboards/nachie/syndrome/keymaps/default/keymap.c
Executable file
28
keyboards/nachie/syndrome/keymaps/default/keymap.c
Executable 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_4,
|
||||
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||
KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT,
|
||||
KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_DOT, KC_LSFT, MO(1),
|
||||
KC_LGUI, KC_LGUI, KC_LALT, KC_SPC, KC_BSPC, KC_RGUI, KC_RALT, MO(1))
|
||||
};
|
1
keyboards/nachie/syndrome/keymaps/default/readme.md
Normal file
1
keyboards/nachie/syndrome/keymaps/default/readme.md
Normal file
@ -0,0 +1 @@
|
||||
The default keymap for the Syndrome.
|
11
keyboards/nachie/syndrome/keymaps/vial/config.h
Normal file
11
keyboards/nachie/syndrome/keymaps/vial/config.h
Normal file
@ -0,0 +1,11 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
#pragma once
|
||||
|
||||
#define VIAL_KEYBOARD_UID {0xBE, 0x9A, 0x53, 0x6B, 0x85, 0xE5, 0xE2, 0xFE}
|
||||
|
||||
#define VIAL_UNLOCK_COMBO_ROWS { 0, 3 }
|
||||
#define VIAL_UNLOCK_COMBO_COLS { 0, 4 }
|
||||
|
||||
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
|
||||
#define RGB_MATRIX_KEYPRESSES
|
492
keyboards/nachie/syndrome/keymaps/vial/keymap.c
Executable file
492
keyboards/nachie/syndrome/keymaps/vial/keymap.c
Executable file
@ -0,0 +1,492 @@
|
||||
/*
|
||||
Copyright 2024 Nachie
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
#include <stdio.h>
|
||||
#include "os_detection.h"
|
||||
|
||||
#ifdef OLED_ENABLE
|
||||
void render_key_status_or_logo(void);
|
||||
void render_current_layer(void);
|
||||
void render_current_wpm(void);
|
||||
#endif
|
||||
|
||||
os_variant_t current_platform;
|
||||
bool is_alt_tab_active = false;
|
||||
uint16_t alt_tab_timer = 0;
|
||||
|
||||
enum layer_names {
|
||||
_BASE, // Default Layer
|
||||
_FN, // Fn Layer 1
|
||||
_FN2, // Fn Layer 2
|
||||
_FN3 // Fn Layer 3
|
||||
};
|
||||
|
||||
enum custom_keycode {
|
||||
JWRDL = QK_KB_0,
|
||||
JWRDR,
|
||||
SWRDL,
|
||||
SWRDR,
|
||||
TABL,
|
||||
TABR,
|
||||
DSKTPL,
|
||||
DSKTPR,
|
||||
PRVAPP,
|
||||
NXTAPP
|
||||
};
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case KC_HOME:
|
||||
if (record->event.pressed && current_platform == OS_MACOS) {
|
||||
register_mods(MOD_LGUI);
|
||||
tap_code(KC_LEFT);
|
||||
unregister_mods(MOD_LGUI);
|
||||
} else {
|
||||
tap_code(KC_HOME);
|
||||
}
|
||||
break;
|
||||
case KC_END:
|
||||
if (record->event.pressed && current_platform == OS_MACOS) {
|
||||
register_mods(MOD_LGUI);
|
||||
tap_code(KC_RIGHT);
|
||||
unregister_mods(MOD_LGUI);
|
||||
} else {
|
||||
tap_code(KC_END);
|
||||
}
|
||||
break;
|
||||
case KC_PGUP:
|
||||
if (record->event.pressed && current_platform == OS_MACOS) {
|
||||
register_mods(MOD_LGUI);
|
||||
tap_code(KC_UP);
|
||||
unregister_mods(MOD_LGUI);
|
||||
} else {
|
||||
tap_code(KC_PGUP);
|
||||
}
|
||||
break;
|
||||
case KC_PGDN:
|
||||
if (record->event.pressed && current_platform == OS_MACOS) {
|
||||
register_mods(MOD_LGUI);
|
||||
tap_code(KC_DOWN);
|
||||
unregister_mods(MOD_LGUI);
|
||||
} else {
|
||||
tap_code(KC_PGDN);
|
||||
}
|
||||
break;
|
||||
case KC_NUM_LOCK:
|
||||
if (record->event.pressed && current_platform == OS_MACOS) {
|
||||
register_mods(MOD_LSFT);
|
||||
tap_code(KC_CLEAR);
|
||||
unregister_mods(MOD_LSFT);
|
||||
} else {
|
||||
tap_code(KC_NUM_LOCK);
|
||||
}
|
||||
break;
|
||||
case KC_SCROLL_LOCK:
|
||||
if (record->event.pressed && current_platform == OS_MACOS) {
|
||||
register_mods(MOD_LCTL);
|
||||
tap_code(KC_F14);
|
||||
unregister_mods(MOD_LCTL);
|
||||
} else {
|
||||
tap_code(KC_SCROLL_LOCK);
|
||||
}
|
||||
break;
|
||||
case KC_PRINT_SCREEN:
|
||||
if (record->event.pressed && current_platform == OS_MACOS) {
|
||||
register_mods(MOD_LSFT);
|
||||
register_mods(MOD_LGUI);
|
||||
tap_code(KC_5);
|
||||
unregister_mods(MOD_LGUI);
|
||||
unregister_mods(MOD_LSFT);
|
||||
} else {
|
||||
tap_code(KC_PRINT_SCREEN);
|
||||
}
|
||||
break;
|
||||
case JWRDL:
|
||||
if (record->event.pressed) {
|
||||
(current_platform == OS_MACOS) ? register_mods(MOD_LALT) : register_mods(MOD_LCTL);
|
||||
tap_code(KC_LEFT);
|
||||
(current_platform == OS_MACOS) ? unregister_mods(MOD_LALT) : unregister_mods(MOD_LCTL);
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
case JWRDR:
|
||||
if (record->event.pressed) {
|
||||
(current_platform == OS_MACOS) ? register_mods(MOD_LALT) : register_mods(MOD_LCTL);
|
||||
tap_code(KC_RIGHT);
|
||||
(current_platform == OS_MACOS) ? unregister_mods(MOD_LALT) : unregister_mods(MOD_LCTL);
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
case SWRDL:
|
||||
if (record->event.pressed) {
|
||||
register_mods(MOD_LSFT);
|
||||
(current_platform == OS_MACOS) ? register_mods(MOD_LALT) : register_mods(MOD_LCTL);
|
||||
tap_code(KC_LEFT);
|
||||
(current_platform == OS_MACOS) ? unregister_mods(MOD_LALT) : unregister_mods(MOD_LCTL);
|
||||
unregister_mods(MOD_LSFT);
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
case SWRDR:
|
||||
if (record->event.pressed) {
|
||||
register_mods(MOD_LSFT);
|
||||
(current_platform == OS_MACOS) ? register_mods(MOD_LALT) : register_mods(MOD_LCTL);
|
||||
tap_code(KC_RIGHT);
|
||||
(current_platform == OS_MACOS) ? unregister_mods(MOD_LALT) : unregister_mods(MOD_LCTL);
|
||||
unregister_mods(MOD_LSFT);
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
case TABL:
|
||||
if (record->event.pressed) {
|
||||
register_mods(MOD_LCTL);
|
||||
register_mods(MOD_LSFT);
|
||||
tap_code(KC_TAB);
|
||||
unregister_mods(MOD_LSFT);
|
||||
unregister_mods(MOD_LCTL);
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
case TABR:
|
||||
if (record->event.pressed) {
|
||||
register_mods(MOD_LCTL);
|
||||
tap_code(KC_TAB);
|
||||
unregister_mods(MOD_LCTL);
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
case DSKTPL:
|
||||
if (record->event.pressed) {
|
||||
register_mods(MOD_LCTL);
|
||||
register_mods(MOD_LGUI);
|
||||
(current_platform == OS_LINUX) ? tap_code(KC_UP) : tap_code(KC_LEFT);
|
||||
unregister_mods(MOD_LGUI);
|
||||
unregister_mods(MOD_LCTL);
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
case DSKTPR:
|
||||
if (record->event.pressed) {
|
||||
register_mods(MOD_LCTL);
|
||||
register_mods(MOD_LGUI);
|
||||
(current_platform == OS_LINUX) ? tap_code(KC_DOWN) : tap_code(KC_RGHT);
|
||||
unregister_mods(MOD_LGUI);
|
||||
unregister_mods(MOD_LCTL);
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
case PRVAPP:
|
||||
if (record->event.pressed) {
|
||||
register_code(KC_LSFT);
|
||||
if (!is_alt_tab_active) {
|
||||
is_alt_tab_active = true;
|
||||
(current_platform == OS_MACOS) ? register_code(KC_LGUI) : register_code(KC_LALT);
|
||||
}
|
||||
alt_tab_timer = timer_read();
|
||||
register_code(KC_TAB);
|
||||
} else {
|
||||
unregister_code(KC_TAB);
|
||||
unregister_code(KC_LSFT);
|
||||
}
|
||||
break;
|
||||
case NXTAPP:
|
||||
if (record->event.pressed) {
|
||||
if (!is_alt_tab_active) {
|
||||
is_alt_tab_active = true;
|
||||
(current_platform == OS_MACOS) ? register_code(KC_LGUI) : register_code(KC_LALT);
|
||||
}
|
||||
alt_tab_timer = timer_read();
|
||||
register_code(KC_TAB);
|
||||
} else {
|
||||
unregister_code(KC_TAB);
|
||||
}
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
#ifndef HAPTIC_ENABLE
|
||||
#define HF_TOGG _______
|
||||
#endif
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/* QWERTY */
|
||||
[_BASE] = LAYOUT(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4,
|
||||
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||
KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT,
|
||||
KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_DOT, KC_LSFT, MO(1),
|
||||
KC_LGUI, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_BSPC, KC_RGUI, MO(2)),
|
||||
|
||||
/* FUNCTION */
|
||||
[_FN] = LAYOUT(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4,
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
|
||||
KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT,
|
||||
KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_DOT, KC_LSFT, MO(1),
|
||||
KC_LGUI, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_BSPC, KC_RGUI, MO(1)),
|
||||
|
||||
[_FN2] = LAYOUT(
|
||||
KC_ESC, QK_BOOTLOADER, QK_REBOOT, QK_DEBUG_TOGGLE, QK_CLEAR_EEPROM,
|
||||
HF_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______),
|
||||
|
||||
[_FN3] = LAYOUT(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______)
|
||||
};
|
||||
|
||||
void matrix_scan_user(void) { // The very important timer.
|
||||
if (is_alt_tab_active) {
|
||||
if (timer_elapsed(alt_tab_timer) > 1000) {
|
||||
(current_platform == OS_MACOS) ? unregister_code(KC_LGUI) : unregister_code(KC_LALT);
|
||||
is_alt_tab_active = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(ENCODER_MAP_ENABLE)
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
|
||||
[_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
[_FN] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(RGB_RMOD, RGB_MOD) },
|
||||
[_FN2] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
[_FN3] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef OLED_ENABLE
|
||||
#ifdef DYNAMIC_MACRO_ENABLE
|
||||
bool macro1;
|
||||
bool macro1rec;
|
||||
bool macro2;
|
||||
bool macro2rec;
|
||||
bool prevEnabled;
|
||||
uint8_t prevRGBmode;
|
||||
|
||||
void render_dynamic_macro_status(int col, int line){
|
||||
oled_set_cursor(col,line);
|
||||
macro1rec ? oled_write(PSTR("DM1"), macro1) : oled_write(PSTR(" "),false);
|
||||
oled_set_cursor(col,line+1);
|
||||
macro2rec ? oled_write(PSTR("DM2"), macro2) : oled_write(PSTR(" "),false);
|
||||
}
|
||||
|
||||
//direction indicates which macro it is, with 1 being Macro 1, -1 being Macro 2, and 0 being no macro.
|
||||
void dynamic_macro_record_start_user(int8_t direction){
|
||||
prevEnabled = rgb_matrix_is_enabled();
|
||||
if (!prevEnabled) { rgb_matrix_enable(); }
|
||||
prevRGBmode = rgb_matrix_get_mode();
|
||||
rgb_matrix_mode(RGB_MATRIX_BREATHING);
|
||||
switch(direction){
|
||||
case 1:
|
||||
macro1 = false;
|
||||
macro1rec = true;
|
||||
break;
|
||||
case -1:
|
||||
macro2 = false;
|
||||
macro2rec = true;
|
||||
break;
|
||||
default:
|
||||
macro1 = false;
|
||||
macro2 = false;
|
||||
macro1rec = false;
|
||||
macro2rec = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void dynamic_macro_record_end_user(int8_t direction){
|
||||
prevEnabled ? rgb_matrix_mode(prevRGBmode) : rgb_matrix_disable();
|
||||
switch(direction){
|
||||
case 1:
|
||||
macro1 = true;
|
||||
break;
|
||||
case -1:
|
||||
macro2 = true;
|
||||
break;
|
||||
default:
|
||||
macro1 = false;
|
||||
macro2 = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
bool clear_screen = false;
|
||||
bool rerender_platform = false;
|
||||
|
||||
static void render_logo(void) {
|
||||
static const char PROGMEM logo[] = {
|
||||
0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94,
|
||||
0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4,
|
||||
0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00
|
||||
};
|
||||
|
||||
oled_write(logo, false);
|
||||
}
|
||||
|
||||
void render_keylock_status(led_t led_state) {
|
||||
bool caps_state = (led_state.caps_lock || is_caps_word_on());
|
||||
oled_write(PSTR("CAPS"), caps_state);
|
||||
oled_write(PSTR(" "), false);
|
||||
oled_write(PSTR("NUM"), led_state.num_lock);
|
||||
oled_write(PSTR(" "), false);
|
||||
oled_write(PSTR("SCRL"), led_state.scroll_lock);
|
||||
//oled_write_ln_P(PSTR(" "), false);
|
||||
}
|
||||
|
||||
void render_mod_status(uint8_t modifiers) {
|
||||
oled_write(PSTR("SH"), (modifiers & MOD_MASK_SHIFT));
|
||||
oled_write(PSTR(" "), false);
|
||||
(current_platform == OS_MACOS || current_platform == OS_IOS) ? oled_write(PSTR("CMD"), (modifiers & MOD_MASK_GUI)) : oled_write(PSTR("CT"), (modifiers & MOD_MASK_CTRL));
|
||||
oled_write(PSTR(" "), false);
|
||||
(current_platform == OS_MACOS || current_platform == OS_IOS) ? oled_write(PSTR("OPT"), (modifiers & MOD_MASK_ALT)) : oled_write(PSTR("ALT"), (modifiers & MOD_MASK_ALT));
|
||||
oled_write(PSTR(" "), false);
|
||||
(current_platform == OS_MACOS || current_platform == OS_IOS) ? oled_write(PSTR("CT"), (modifiers & MOD_MASK_CTRL)) : oled_write(PSTR("GUI"), (modifiers & MOD_MASK_GUI));
|
||||
}
|
||||
|
||||
void render_key_status_or_logo(){
|
||||
led_t led_state = host_keyboard_led_state();
|
||||
uint8_t mod_state = (get_mods()|get_oneshot_mods());
|
||||
if ( !led_state.num_lock && !led_state.caps_lock && !led_state.scroll_lock
|
||||
&& !(mod_state & MOD_MASK_SHIFT) && !(mod_state & MOD_MASK_ALT) && !(mod_state & MOD_MASK_CTRL) && !(mod_state & MOD_MASK_GUI)) {
|
||||
if(!clear_screen) {
|
||||
render_logo();
|
||||
rerender_platform = true;
|
||||
}
|
||||
clear_screen = true;
|
||||
} else {
|
||||
if (clear_screen == true) {
|
||||
oled_clear();
|
||||
oled_render();
|
||||
clear_screen = false;
|
||||
}
|
||||
oled_set_cursor(8,0);
|
||||
render_keylock_status(led_state);
|
||||
oled_set_cursor(8,1);
|
||||
render_mod_status(mod_state);
|
||||
rerender_platform = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void render_current_layer(){
|
||||
switch (get_highest_layer(layer_state)) {
|
||||
case 0:
|
||||
oled_write(PSTR("Layer 0"), false);
|
||||
break;
|
||||
case 1:
|
||||
oled_write(PSTR("Layer 1"), false);
|
||||
break;
|
||||
case 2:
|
||||
oled_write(PSTR("Layer 2"), false);
|
||||
break;
|
||||
case 3:
|
||||
oled_write(PSTR("Layer 3"), false);
|
||||
break;
|
||||
default:
|
||||
oled_write(PSTR("Layer ?"), false); // Should never display, here as a catchall
|
||||
}
|
||||
}
|
||||
|
||||
void render_current_wpm(){
|
||||
oled_write_P(PSTR("WPM: "), false);
|
||||
oled_write(get_u8_str(get_current_wpm(), '0'), false);
|
||||
}
|
||||
|
||||
void render_platform_status(int col, int line) {
|
||||
/* Show Ctrl-Gui Swap options */
|
||||
static const char PROGMEM logo[][5][3] = {
|
||||
{{0x9B, 0x9C, 0}, {0xbb, 0xbc, 0}}, //Android
|
||||
{{0x99, 0x9A, 0}, {0xb9, 0xba, 0}}, //Linux
|
||||
{{0x97, 0x98, 0}, {0xb7, 0xb8, 0}}, //Windows
|
||||
{{0x95, 0x96, 0}, {0xb5, 0xb6, 0}}, //Mac/iOS
|
||||
{{0x9D, 0x9E, 0}, {0xbd, 0xbe, 0}}, //Empty Placeholder
|
||||
};
|
||||
current_platform = detected_host_os();
|
||||
switch (current_platform) {
|
||||
/*case OS_ANDROID: //Android
|
||||
oled_set_cursor(col,line);
|
||||
oled_write(logo[0][0], false);
|
||||
oled_set_cursor(col,line+1);
|
||||
oled_write(logo[0][1], false);
|
||||
break;*/
|
||||
case OS_LINUX: //Linux
|
||||
oled_set_cursor(col,line);
|
||||
oled_write(logo[1][0], false);
|
||||
oled_set_cursor(col,line+1);
|
||||
oled_write(logo[1][1], false);
|
||||
keymap_config.swap_lctl_lgui = false;
|
||||
keymap_config.swap_rctl_rgui = false;
|
||||
break;
|
||||
case OS_WINDOWS: //Windows
|
||||
oled_set_cursor(col,line);
|
||||
oled_write(logo[2][0], false);
|
||||
oled_set_cursor(col,line+1);
|
||||
oled_write(logo[2][1], false);
|
||||
keymap_config.swap_lctl_lgui = false;
|
||||
keymap_config.swap_rctl_rgui = false;
|
||||
break;
|
||||
case OS_MACOS: //Mac
|
||||
oled_set_cursor(col,line);
|
||||
oled_write(logo[3][0], false);
|
||||
oled_set_cursor(col,line+1);
|
||||
oled_write(logo[3][1], false);
|
||||
keymap_config.swap_lctl_lgui = true;
|
||||
keymap_config.swap_rctl_rgui = true;
|
||||
break;
|
||||
case OS_IOS: //iOS
|
||||
oled_set_cursor(col,line);
|
||||
oled_write(logo[3][0], false);
|
||||
oled_set_cursor(col,line+1);
|
||||
oled_write(logo[3][1], false);
|
||||
keymap_config.swap_lctl_lgui = true;
|
||||
keymap_config.swap_rctl_rgui = true;
|
||||
break;
|
||||
default: //OS_UNSURE or not configured
|
||||
oled_set_cursor(col,line);
|
||||
oled_write(logo[4][0], false);
|
||||
oled_set_cursor(col,line+1);
|
||||
oled_write(logo[4][1], false);
|
||||
break;
|
||||
}
|
||||
rerender_platform = false;
|
||||
}
|
||||
|
||||
bool oled_task_user(void) {
|
||||
render_key_status_or_logo();
|
||||
oled_set_cursor(8,2);
|
||||
render_current_layer();
|
||||
#ifdef DYNAMIC_MACRO_ENABLE
|
||||
render_dynamic_macro_status(18,2);
|
||||
#endif
|
||||
oled_set_cursor(8,3);
|
||||
render_current_wpm();
|
||||
#ifdef OS_DETECTION_ENABLE
|
||||
if(current_platform != detected_host_os() || rerender_platform) { render_platform_status(3,0); }
|
||||
#endif
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
#endif
|
1
keyboards/nachie/syndrome/keymaps/vial/readme.md
Normal file
1
keyboards/nachie/syndrome/keymaps/vial/readme.md
Normal file
@ -0,0 +1 @@
|
||||
The vial keymap for the Syndrome PCB.
|
10
keyboards/nachie/syndrome/keymaps/vial/rules.mk
Normal file
10
keyboards/nachie/syndrome/keymaps/vial/rules.mk
Normal 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
|
397
keyboards/nachie/syndrome/keymaps/vial/vial.json
Normal file
397
keyboards/nachie/syndrome/keymaps/vial/vial.json
Normal file
@ -0,0 +1,397 @@
|
||||
{
|
||||
"name": "Syndrome",
|
||||
"vendorId": "0x4B43",
|
||||
"productId": "0x5359",
|
||||
"customKeycodes": [
|
||||
{
|
||||
"name": "JmpWordL",
|
||||
"title": "Jump Word Left",
|
||||
"shortName": "JWRDL"
|
||||
},
|
||||
{
|
||||
"name": "JmpWordR",
|
||||
"title": "Jump Word Right",
|
||||
"shortName": "JWRDR"
|
||||
},
|
||||
{
|
||||
"name": "SlcWordL",
|
||||
"title": "Select Word Left",
|
||||
"shortName": "SWRDL"
|
||||
},
|
||||
{
|
||||
"name": "SlcWordR",
|
||||
"title": "Select Word Right",
|
||||
"shortName": "SWRDR"
|
||||
},
|
||||
{
|
||||
"name": "TabLft",
|
||||
"title": "Tab Left",
|
||||
"shortName": "TABL"
|
||||
},
|
||||
{
|
||||
"name": "TabRght",
|
||||
"title": "Tab Right",
|
||||
"shortName": "TABR"
|
||||
},
|
||||
{
|
||||
"name": "DsktpLft",
|
||||
"title": "Desktop Left",
|
||||
"shortName": "DSKTPL"
|
||||
},
|
||||
{
|
||||
"name": "DsktpRght",
|
||||
"title": "Desktop Right",
|
||||
"shortName": "DSKTPR"
|
||||
},
|
||||
{
|
||||
"name": "PrevApp",
|
||||
"title": "Previous App",
|
||||
"shortName": "PRVAPP"
|
||||
},
|
||||
{
|
||||
"name": "NextApp",
|
||||
"title": "Next App",
|
||||
"shortName": "NXTAPP"
|
||||
}
|
||||
],
|
||||
"matrix": { "rows": 10, "cols": 8 },
|
||||
"lighting": "vialrgb",
|
||||
"layouts": {
|
||||
"labels":[
|
||||
[
|
||||
"Right Shift",
|
||||
"Split Shift Fn",
|
||||
"Split Fn Shift",
|
||||
"No Split"
|
||||
],
|
||||
[
|
||||
"Bottom Row",
|
||||
"3U Centered",
|
||||
"6U Big Bar",
|
||||
"3U/3U",
|
||||
"2U/2U",
|
||||
"1.75U/1.75U",
|
||||
"7U Big Bar",
|
||||
"3U/1U/3U",
|
||||
"2.75U ALPS",
|
||||
"3U/ENC/3U"
|
||||
],
|
||||
"Macro Row"
|
||||
],
|
||||
"keymap": [
|
||||
[
|
||||
{
|
||||
"y": 2.5,
|
||||
"x": 1.5
|
||||
},
|
||||
"3,0\n\n\n\n\n\n\n\n\ne",
|
||||
"3,1\n\n\n\n\n\n\n\n\ne"
|
||||
],
|
||||
[
|
||||
{
|
||||
"x": 2
|
||||
},
|
||||
"8,5\n\n\n2,0",
|
||||
{
|
||||
"x": 6
|
||||
},
|
||||
"9,5\n\n\n2,0",
|
||||
"8,6\n\n\n2,0",
|
||||
"9,6\n\n\n2,0",
|
||||
"8,7\n\n\n2,0"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": 0.5,
|
||||
"x": 1
|
||||
},
|
||||
"0,0\n\n\n\n\n\n\n\n\ne",
|
||||
{
|
||||
"x": 11
|
||||
},
|
||||
"1,0\n\n\n\n\n\n\n\n\ne"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.5,
|
||||
"x": 2
|
||||
},
|
||||
"0,0",
|
||||
"1,0",
|
||||
"0,1",
|
||||
"1,1",
|
||||
"0,2",
|
||||
"1,2",
|
||||
"0,3",
|
||||
"1,3",
|
||||
"0,4",
|
||||
"1,4",
|
||||
"7,4"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.5,
|
||||
"x": 1
|
||||
},
|
||||
"0,1\n\n\n\n\n\n\n\n\ne",
|
||||
{
|
||||
"x": 11
|
||||
},
|
||||
"1,1\n\n\n\n\n\n\n\n\ne"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.5,
|
||||
"x": 2,
|
||||
"c": "#aaaaaa",
|
||||
"w": 1.25
|
||||
},
|
||||
"2,0",
|
||||
{
|
||||
"c": "#cccccc"
|
||||
},
|
||||
"3,0",
|
||||
"2,1",
|
||||
"3,1",
|
||||
"2,2",
|
||||
"3,2",
|
||||
"2,3",
|
||||
"3,3",
|
||||
"2,4",
|
||||
{
|
||||
"c": "#777777",
|
||||
"w": 1.75
|
||||
},
|
||||
"3,4"
|
||||
],
|
||||
[
|
||||
{
|
||||
"x": 2,
|
||||
"c": "#aaaaaa",
|
||||
"w": 1.75
|
||||
},
|
||||
"4,0",
|
||||
{
|
||||
"c": "#cccccc"
|
||||
},
|
||||
"5,0",
|
||||
"4,1",
|
||||
"5,1",
|
||||
"4,2",
|
||||
"5,2",
|
||||
"4,3",
|
||||
"5,3",
|
||||
{
|
||||
"c": "#aaaaaa",
|
||||
"w": 1.25
|
||||
},
|
||||
"4,4\n\n\n0,0",
|
||||
{
|
||||
"c": "#cccccc"
|
||||
},
|
||||
"5,4\n\n\n0,0",
|
||||
{
|
||||
"x": 0.25
|
||||
},
|
||||
"4,4\n\n\n0,1",
|
||||
{
|
||||
"c": "#aaaaaa",
|
||||
"w": 1.25
|
||||
},
|
||||
"5,4\n\n\n0,1",
|
||||
{
|
||||
"x": 0.25,
|
||||
"w": 2.25
|
||||
},
|
||||
"4,4\n\n\n0,2"
|
||||
],
|
||||
[
|
||||
{
|
||||
"x": 2,
|
||||
"w": 1.5
|
||||
},
|
||||
"6,0\n\n\n1,0",
|
||||
"7,0\n\n\n1,0",
|
||||
{
|
||||
"w": 1.5
|
||||
},
|
||||
"6,1\n\n\n1,0",
|
||||
{
|
||||
"w": 3
|
||||
},
|
||||
"7,2\n\n\n1,0",
|
||||
{
|
||||
"w": 1.5
|
||||
},
|
||||
"6,3\n\n\n1,0",
|
||||
"7,3\n\n\n1,0",
|
||||
{
|
||||
"w": 1.5
|
||||
},
|
||||
"6,4\n\n\n1,0"
|
||||
],
|
||||
[
|
||||
{
|
||||
"x": 6.5,
|
||||
"c": "#cccccc"
|
||||
},
|
||||
"2,0\n\n\n\n\n\n\n\n\ne",
|
||||
"2,1\n\n\n\n\n\n\n\n\ne"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": 0.25,
|
||||
"x": 2,
|
||||
"c": "#aaaaaa",
|
||||
"w": 1.5
|
||||
},
|
||||
"6,0\n\n\n1,1",
|
||||
"7,0\n\n\n1,1",
|
||||
{
|
||||
"w": 6
|
||||
},
|
||||
"7,2\n\n\n1,1",
|
||||
"7,3\n\n\n1,1",
|
||||
{
|
||||
"w": 1.5
|
||||
},
|
||||
"6,4\n\n\n1,1"
|
||||
],
|
||||
[
|
||||
{
|
||||
"x": 2,
|
||||
"w": 1.5
|
||||
},
|
||||
"6,0\n\n\n1,2",
|
||||
"7,0\n\n\n1,2",
|
||||
{
|
||||
"w": 3
|
||||
},
|
||||
"7,1\n\n\n1,2",
|
||||
{
|
||||
"w": 3
|
||||
},
|
||||
"7,2\n\n\n1,2",
|
||||
"7,3\n\n\n1,2",
|
||||
{
|
||||
"w": 1.5
|
||||
},
|
||||
"6,4\n\n\n1,2"
|
||||
],
|
||||
[
|
||||
{
|
||||
"x": 2,
|
||||
"w": 1.5
|
||||
},
|
||||
"6,0\n\n\n1,3",
|
||||
"7,0\n\n\n1,3",
|
||||
"6,1\n\n\n1,3",
|
||||
{
|
||||
"w": 2
|
||||
},
|
||||
"7,1\n\n\n1,3",
|
||||
{
|
||||
"w": 2
|
||||
},
|
||||
"7,2\n\n\n1,3",
|
||||
"6,3\n\n\n1,3",
|
||||
"7,3\n\n\n1,3",
|
||||
{
|
||||
"w": 1.5
|
||||
},
|
||||
"6,4\n\n\n1,3"
|
||||
],
|
||||
[
|
||||
{
|
||||
"x": 2,
|
||||
"w": 1.5
|
||||
},
|
||||
"6,0\n\n\n1,4",
|
||||
"7,0\n\n\n1,4",
|
||||
{
|
||||
"w": 1.25
|
||||
},
|
||||
"6,1\n\n\n1,4",
|
||||
{
|
||||
"w": 1.75
|
||||
},
|
||||
"7,1\n\n\n1,4",
|
||||
{
|
||||
"w": 1.75
|
||||
},
|
||||
"7,2\n\n\n1,4",
|
||||
{
|
||||
"w": 1.25
|
||||
},
|
||||
"6,3\n\n\n1,4",
|
||||
"7,3\n\n\n1,4",
|
||||
{
|
||||
"w": 1.5
|
||||
},
|
||||
"6,4\n\n\n1,4"
|
||||
],
|
||||
[
|
||||
{
|
||||
"x": 2
|
||||
},
|
||||
"6,0\n\n\n1,5",
|
||||
"7,0\n\n\n1,5",
|
||||
{
|
||||
"w": 7
|
||||
},
|
||||
"7,2\n\n\n1,5",
|
||||
"7,3\n\n\n1,5",
|
||||
"6,4\n\n\n1,5"
|
||||
],
|
||||
[
|
||||
{
|
||||
"x": 2
|
||||
},
|
||||
"6,0\n\n\n1,6",
|
||||
"7,0\n\n\n1,6",
|
||||
{
|
||||
"w": 3
|
||||
},
|
||||
"6,1\n\n\n1,6",
|
||||
"7,2\n\n\n1,6",
|
||||
{
|
||||
"w": 3
|
||||
},
|
||||
"6,3\n\n\n1,6",
|
||||
"7,3\n\n\n1,6",
|
||||
"6,4\n\n\n1,6"
|
||||
],
|
||||
[
|
||||
{
|
||||
"x": 2,
|
||||
"w": 1.25
|
||||
},
|
||||
"6,0\n\n\n1,7",
|
||||
{
|
||||
"w": 1.5
|
||||
},
|
||||
"7,0\n\n\n1,7",
|
||||
{
|
||||
"w": 1.25
|
||||
},
|
||||
"6,1\n\n\n1,7",
|
||||
{
|
||||
"w": 2.75
|
||||
},
|
||||
"7,2\n\n\n1,7",
|
||||
{
|
||||
"w": 1.25
|
||||
},
|
||||
"6,3\n\n\n1,7",
|
||||
{
|
||||
"w": 1.5
|
||||
},
|
||||
"7,3\n\n\n1,7",
|
||||
{
|
||||
"w": 1.5
|
||||
},
|
||||
"6,4\n\n\n1,7"
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
9
keyboards/nachie/syndrome/mcuconf.h
Normal file
9
keyboards/nachie/syndrome/mcuconf.h
Normal file
@ -0,0 +1,9 @@
|
||||
#pragma once
|
||||
|
||||
#include_next <mcuconf.h>
|
||||
|
||||
#undef RP_I2C_USE_I2C0
|
||||
#define RP_I2C_USE_I2C0 FALSE
|
||||
|
||||
#undef RP_I2C_USE_I2C1
|
||||
#define RP_I2C_USE_I2C1 TRUE
|
23
keyboards/nachie/syndrome/readme.md
Normal file
23
keyboards/nachie/syndrome/readme.md
Normal file
@ -0,0 +1,23 @@
|
||||
# Syndrome
|
||||
|
||||
Firmware for the Syndrome (and Detour)
|
||||
|
||||
* Keyboard Maintainer: [Nachie](https://github.com/nachie)
|
||||
* Hardware Supported: Syndrome
|
||||
* Hardware Availability: [Little Craftery](https://littlecraftery.com/products/syndrome)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make nachie/syndrome:default
|
||||
|
||||
Or to make and flash:
|
||||
|
||||
make nachie/syndrome:default:flash
|
||||
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
|
||||
## Bootloader
|
||||
|
||||
* **Bootmagic reset**: Hold down ESC key (top left) and plug in the keyboard
|
||||
* **Physical reset button**: Briefly press the button labeled "SW_RST1" on the back of the PCB
|
4
keyboards/nachie/syndrome/rules.mk
Executable file
4
keyboards/nachie/syndrome/rules.mk
Executable file
@ -0,0 +1,4 @@
|
||||
|
||||
OLED_DRIVER = ssd1306
|
||||
|
||||
OPT_DEFS += -DHAL_USE_I2C=TRUE
|
89
keyboards/nachie/syndrome/syndrome.c
Executable file
89
keyboards/nachie/syndrome/syndrome.c
Executable 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, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED},
|
||||
{ 6, 5, 4, 3, 2, 1, 0, NO_LED },
|
||||
{ 7, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 15 },
|
||||
{ 8 , 9, NO_LED, 10, 11, 12, 13, 14 },
|
||||
{ NO_LED, NO_LED, NO_LED,NO_LED, NO_LED, NO_LED, NO_LED, NO_LED }
|
||||
}, {
|
||||
{ 183,0 }, { 162,0 }, { 142,0 }, { 122,0 }, { 81,0 }, { 61,0 }, { 40,0 },
|
||||
{ 20,16 }, { 40,48 },
|
||||
{ 61,48 }, { 81,48 }, { 101,48 }, { 122,48 }, { 162,48 }, { 203,48 }, { 244,16 }
|
||||
}, {
|
||||
1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1
|
||||
} };
|
||||
|
||||
#ifdef OLED_ENABLE
|
||||
|
||||
static void render_logo(void) {
|
||||
static const char PROGMEM my_logo[] = {
|
||||
// 'Screenshot 2023-07-21 at 1', 128x32px
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xfe, 0x00, 0x03, 0xc0, 0x00, 0xc0, 0x00, 0x3c, 0x00, 0x0f, 0x1f, 0xf8, 0xe0, 0x00, 0x1f, 0xff,
|
||||
0xff, 0x80, 0x01, 0xc0, 0x00, 0x40, 0x00, 0x38, 0x00, 0x07, 0x1f, 0xf8, 0xe0, 0x00, 0x1f, 0xff,
|
||||
0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0x0f, 0xff,
|
||||
0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0x8f, 0xff,
|
||||
0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0x0f, 0xff,
|
||||
0xfe, 0x1f, 0xf1, 0xc0, 0x03, 0xff, 0x8f, 0xf8, 0xff, 0xc7, 0x1f, 0xf8, 0xe1, 0xc0, 0x1f, 0xff,
|
||||
0xfe, 0x1f, 0xf1, 0xc0, 0x03, 0xff, 0x8f, 0xf8, 0xff, 0xc7, 0x1f, 0xf8, 0xe1, 0xe0, 0x3f, 0xff,
|
||||
0xfe, 0x1f, 0xf1, 0xc3, 0xff, 0xff, 0x8f, 0xf8, 0xff, 0xc7, 0x1f, 0xf8, 0xe1, 0xf0, 0xff, 0xff,
|
||||
0xfe, 0x1f, 0xf1, 0xc3, 0xff, 0xff, 0x8f, 0xf8, 0xff, 0xc7, 0x1f, 0xf8, 0xe1, 0xf8, 0x7f, 0xff,
|
||||
0xfe, 0x1f, 0xf1, 0xc3, 0xff, 0xff, 0x8f, 0xf8, 0xff, 0xc7, 0x1f, 0xf8, 0xe1, 0xf8, 0x7f, 0xff,
|
||||
0xfe, 0x00, 0x01, 0xc0, 0x00, 0x7f, 0x8f, 0xf8, 0x00, 0x07, 0x00, 0x00, 0xe1, 0xfc, 0x3f, 0xff,
|
||||
0xfe, 0x00, 0x03, 0xc0, 0x00, 0xff, 0x8f, 0xfc, 0x00, 0x0f, 0x80, 0x01, 0xe1, 0xfe, 0x1f, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
|
||||
};
|
||||
oled_write_raw_P(my_logo, sizeof(my_logo));
|
||||
}
|
||||
|
||||
bool oled_task_kb(void) {
|
||||
// Defer to the keymap if they want to override
|
||||
|
||||
if(!oled_task_user()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// default keyboard drawing code
|
||||
render_logo();
|
||||
return false;
|
||||
}
|
||||
|
||||
#endif
|
11
keyboards/nachie/syndrome_ortho/chconf.h
Normal file
11
keyboards/nachie/syndrome_ortho/chconf.h
Normal file
@ -0,0 +1,11 @@
|
||||
/*
|
||||
* `qmk chibios-confmigrate -i firmware/nachie/syndrome/chconf.h -r ../keymaps_qmk/platforms/chibios/boards/GENERIC_PROMICRO_RP2040/configs/chconf.h`
|
||||
*/
|
||||
|
||||
|
||||
#pragma once
|
||||
|
||||
#include_next <chconf.h>
|
||||
|
||||
#undef CH_CFG_ST_TIMEDELTA
|
||||
#define CH_CFG_ST_TIMEDELTA 100
|
37
keyboards/nachie/syndrome_ortho/config.h
Executable file
37
keyboards/nachie/syndrome_ortho/config.h
Executable file
@ -0,0 +1,37 @@
|
||||
/*
|
||||
Copyright 2024 Nachie
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#define RP2040_FLASH_GENERIC_03H
|
||||
|
||||
#ifdef HAPTIC_ENABLE
|
||||
#define SOLENOID_PIN GP15
|
||||
#endif
|
||||
|
||||
/* Oled config */
|
||||
#ifdef OLED_ENABLE
|
||||
#define I2C_DRIVER I2CD1
|
||||
#define I2C1_SDA_PIN GP10
|
||||
#define I2C1_SCL_PIN GP11
|
||||
#define OLED_TIMEOUT 60000 // Turns off the OLED screen after x ms of screen update inactivity. Helps reduce OLED Burn-in. Set to 0 to disable.
|
||||
#define OLED_FADE_OUT
|
||||
#define OLED_FADE_OUT_INTERVAL 13
|
||||
#define OLED_BRIGHTNESS 50 // The default brightness level of the OLED, from 0 to 255.
|
||||
#define OLED_UPDATE_INTERVAL 16 // limits in milliseconds how frequently the OLED updates. Calculation 1000/fps (increases keyboard responsiveness)
|
||||
#endif
|
||||
|
||||
#define VIA_CUSTOM_LIGHTING_ENABLE
|
4
keyboards/nachie/syndrome_ortho/halconf.h
Normal file
4
keyboards/nachie/syndrome_ortho/halconf.h
Normal file
@ -0,0 +1,4 @@
|
||||
#pragma once
|
||||
|
||||
#include_next <halconf.h>
|
||||
#define HAL_USE_I2C TRUE
|
154
keyboards/nachie/syndrome_ortho/info.json
Normal file
154
keyboards/nachie/syndrome_ortho/info.json
Normal file
@ -0,0 +1,154 @@
|
||||
{
|
||||
"keyboard_name": "Syndrome Ortho",
|
||||
"manufacturer": "Nachie",
|
||||
"usb": {
|
||||
"vid": "0x4B43",
|
||||
"pid": "0x5360",
|
||||
"device_version": "1.0.0"
|
||||
},
|
||||
"board": "GENERIC_RP_RP2040",
|
||||
"bootloader": "rp2040",
|
||||
"processor": "RP2040",
|
||||
"url": "https://littlecraftery.com/products/syndrome-ortho",
|
||||
"maintainer": "nachie",
|
||||
"ws2812": {
|
||||
"pin": "GP29",
|
||||
"driver": "vendor"
|
||||
},
|
||||
"rgb_matrix": {
|
||||
"driver": "ws2812",
|
||||
"led_count": 16,
|
||||
"animations": {
|
||||
"alphas_mods": true,
|
||||
"gradient_up_down": true,
|
||||
"gradient_left_right": true,
|
||||
"breathing": true,
|
||||
"band_sat": true,
|
||||
"band_val": true,
|
||||
"band_pinwheel_sat": true,
|
||||
"band_pinwheel_val": true,
|
||||
"band_spiral_sat": true,
|
||||
"band_spiral_val": true,
|
||||
"cycle_all": true,
|
||||
"cycle_left_right": true,
|
||||
"cycle_up_down": true,
|
||||
"rainbow_moving_chevron":true,
|
||||
"cycle_out_in": true,
|
||||
"cycle_out_in_dual": true,
|
||||
"cycle_pinwheel": true,
|
||||
"cycle_spiral": true,
|
||||
"rainbow_pinwheels": true,
|
||||
"raindrops": true,
|
||||
"jellybean_raindrops": true,
|
||||
"hue_breathing": true,
|
||||
"hue_pendulum": true,
|
||||
"hue_wave": true,
|
||||
"typing_heatmap": true,
|
||||
"digital_rain": true,
|
||||
"solid_reactive_simple": true,
|
||||
"solid_reactive": true,
|
||||
"solid_reactive_wide": true,
|
||||
"solid_reactive_multiwide": true,
|
||||
"solid_reactive_cross": true,
|
||||
"solid_reactive_multicross": true,
|
||||
"solid_reactive_nexus": true,
|
||||
"solid_reactive_multinexus": true,
|
||||
"splash": true,
|
||||
"solid_splash": true,
|
||||
"solid_multisplash": true,
|
||||
"pixel_rain": true,
|
||||
"pixel_fractal": true
|
||||
}
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"y": 0, "x": 0, "matrix": [8, 5], "label": "8,5"},
|
||||
{"y": 0, "x": 7, "matrix": [9, 5], "label": "9,5"},
|
||||
{"y": 0, "x": 8, "matrix": [8, 6], "label": "8,6"},
|
||||
{"y": 0, "x": 9, "matrix": [9, 6], "label": "9,6"},
|
||||
{"y": 0, "x": 10, "matrix": [8, 7], "label": "8,7"},
|
||||
{"y": 1.5, "x": 0, "matrix": [0, 0], "label": "0,0"},
|
||||
{"y": 1.5, "x": 1, "matrix": [1, 0], "label": "1,0"},
|
||||
{"y": 1.5, "x": 2, "matrix": [0, 1], "label": "0,1"},
|
||||
{"y": 1.5, "x": 3, "matrix": [1, 1], "label": "1,1"},
|
||||
{"y": 1.5, "x": 4, "matrix": [0, 2], "label": "0,2"},
|
||||
{"y": 1.5, "x": 5, "matrix": [1, 2], "label": "1,2"},
|
||||
{"y": 1.5, "x": 6, "matrix": [0, 3], "label": "0,3"},
|
||||
{"y": 1.5, "x": 7, "matrix": [1, 3], "label": "1,3"},
|
||||
{"y": 1.5, "x": 8, "matrix": [0, 4], "label": "0,4"},
|
||||
{"y": 1.5, "x": 9, "matrix": [1, 4], "label": "1,4"},
|
||||
{"y": 1.5, "x": 10, "matrix": [0, 5], "label": "0,5"},
|
||||
{"y": 2.5, "x": 0, "matrix": [2, 0], "label": "2,0"},
|
||||
{"y": 2.5, "x": 1, "matrix": [3, 0], "label": "3,0"},
|
||||
{"y": 2.5, "x": 2, "matrix": [2, 1], "label": "2,1"},
|
||||
{"y": 2.5, "x": 3, "matrix": [3, 1], "label": "3,1"},
|
||||
{"y": 2.5, "x": 4, "matrix": [2, 2], "label": "2,2"},
|
||||
{"y": 2.5, "x": 5, "matrix": [3, 2], "label": "3,2"},
|
||||
{"y": 2.5, "x": 6, "matrix": [2, 3], "label": "2,3"},
|
||||
{"y": 2.5, "x": 7, "matrix": [3, 3], "label": "3,3"},
|
||||
{"y": 2.5, "x": 8, "matrix": [2, 4], "label": "2,4"},
|
||||
{"y": 2.5, "x": 9, "matrix": [3, 4], "label": "3,4"},
|
||||
{"y": 2.5, "x": 10, "matrix": [2, 5], "label": "2,5"},
|
||||
{"y": 3.5, "x": 0, "matrix": [4, 0], "label": "4,0"},
|
||||
{"y": 3.5, "x": 1, "matrix": [5, 0], "label": "5,0"},
|
||||
{"y": 3.5, "x": 2, "matrix": [4, 1], "label": "4,1"},
|
||||
{"y": 3.5, "x": 3, "matrix": [5, 1], "label": "5,1"},
|
||||
{"y": 3.5, "x": 4, "matrix": [4, 2], "label": "4,2"},
|
||||
{"y": 3.5, "x": 5, "matrix": [5, 2], "label": "5,2"},
|
||||
{"y": 3.5, "x": 6, "matrix": [4, 3], "label": "4,3"},
|
||||
{"y": 3.5, "x": 7, "matrix": [5, 3], "label": "5,3"},
|
||||
{"y": 3.5, "x": 8, "matrix": [4, 4], "label": "4,4"},
|
||||
{"y": 3.5, "x": 9, "matrix": [5, 4], "label": "5,4"},
|
||||
{"y": 3.5, "x": 10, "matrix": [4, 5], "label": "4,5"},
|
||||
{"y": 4.5, "x": 0, "matrix": [6, 0], "w": 1.5, "label": "6,0"},
|
||||
{"y": 4.5, "x": 1.5, "matrix": [7, 0], "label": "7,0"},
|
||||
{"y": 4.5, "x": 2.5, "matrix": [6, 1], "label": "6,1"},
|
||||
{"y": 4.5, "x": 3.5, "matrix": [7, 1], "label": "7,1"},
|
||||
{"y": 4.5, "x": 4.5, "matrix": [6, 2], "label": "6,2"},
|
||||
{"y": 4.5, "x": 4.5, "matrix": [6, 3], "w": 2, "label": "6,3"},
|
||||
{"y": 4.5, "x": 5.5, "matrix": [7, 2], "label": "7,2"},
|
||||
{"y": 4.5, "x": 6.5, "matrix": [7, 3], "label": "7,3"},
|
||||
{"y": 4.5, "x": 7.5, "matrix": [6, 4], "label": "6,4"},
|
||||
{"y": 4.5, "x": 8.5, "matrix": [7, 4], "label": "7,4"},
|
||||
{"y": 4.5, "x": 9.5, "matrix": [6, 5], "w": 1.5, "label": "6,5"}
|
||||
]
|
||||
}
|
||||
},
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"command": false,
|
||||
"console": false,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": false,
|
||||
"audio": false,
|
||||
"backlight": false,
|
||||
"rgblight": false,
|
||||
"encoder": true,
|
||||
"rgb_matrix": true,
|
||||
"haptic": true,
|
||||
"oled": true,
|
||||
"wpm": true
|
||||
},
|
||||
"build": {
|
||||
"lto": true
|
||||
},
|
||||
"haptic": {
|
||||
"driver": "solenoid"
|
||||
},
|
||||
"encoder": {
|
||||
"enabled": true,
|
||||
"rotary": [
|
||||
{ "pin_a": "GP22", "pin_b": "GP23", "resolution": 2 },
|
||||
{ "pin_a": "GP26", "pin_b": "GP24", "resolution": 2 },
|
||||
{ "pin_a": "GP0", "pin_b": "GP1", "resolution": 2 },
|
||||
{ "pin_a": "GP5", "pin_b": "GP3", "resolution": 2 }
|
||||
]
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"matrix_pins": {
|
||||
"cols": ["GP28", "GP21", "GP20", "GP6", "GP2", "GP12", "GP13", "GP14"],
|
||||
"rows": ["GP25", "GP27", "GP16", "GP7", "GP17", "GP18", "GP19", "GP4", "GP8", "GP9"]
|
||||
}
|
||||
}
|
154
keyboards/nachie/syndrome_ortho/keyboard.json
Normal file
154
keyboards/nachie/syndrome_ortho/keyboard.json
Normal file
@ -0,0 +1,154 @@
|
||||
{
|
||||
"keyboard_name": "Syndrome Ortho",
|
||||
"manufacturer": "Nachie",
|
||||
"usb": {
|
||||
"vid": "0x4B43",
|
||||
"pid": "0x5360",
|
||||
"device_version": "1.0.0"
|
||||
},
|
||||
"board": "GENERIC_RP_RP2040",
|
||||
"bootloader": "rp2040",
|
||||
"processor": "RP2040",
|
||||
"url": "https://littlecraftery.com/products/syndrome-ortho",
|
||||
"maintainer": "nachie",
|
||||
"ws2812": {
|
||||
"pin": "GP29",
|
||||
"driver": "vendor"
|
||||
},
|
||||
"rgb_matrix": {
|
||||
"driver": "ws2812",
|
||||
"led_count": 16,
|
||||
"animations": {
|
||||
"alphas_mods": true,
|
||||
"gradient_up_down": true,
|
||||
"gradient_left_right": true,
|
||||
"breathing": true,
|
||||
"band_sat": true,
|
||||
"band_val": true,
|
||||
"band_pinwheel_sat": true,
|
||||
"band_pinwheel_val": true,
|
||||
"band_spiral_sat": true,
|
||||
"band_spiral_val": true,
|
||||
"cycle_all": true,
|
||||
"cycle_left_right": true,
|
||||
"cycle_up_down": true,
|
||||
"rainbow_moving_chevron":true,
|
||||
"cycle_out_in": true,
|
||||
"cycle_out_in_dual": true,
|
||||
"cycle_pinwheel": true,
|
||||
"cycle_spiral": true,
|
||||
"rainbow_pinwheels": true,
|
||||
"raindrops": true,
|
||||
"jellybean_raindrops": true,
|
||||
"hue_breathing": true,
|
||||
"hue_pendulum": true,
|
||||
"hue_wave": true,
|
||||
"typing_heatmap": true,
|
||||
"digital_rain": true,
|
||||
"solid_reactive_simple": true,
|
||||
"solid_reactive": true,
|
||||
"solid_reactive_wide": true,
|
||||
"solid_reactive_multiwide": true,
|
||||
"solid_reactive_cross": true,
|
||||
"solid_reactive_multicross": true,
|
||||
"solid_reactive_nexus": true,
|
||||
"solid_reactive_multinexus": true,
|
||||
"splash": true,
|
||||
"solid_splash": true,
|
||||
"solid_multisplash": true,
|
||||
"pixel_rain": true,
|
||||
"pixel_fractal": true
|
||||
}
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"y": 0, "x": 0, "matrix": [8, 5], "label": "8,5"},
|
||||
{"y": 0, "x": 7, "matrix": [9, 5], "label": "9,5"},
|
||||
{"y": 0, "x": 8, "matrix": [8, 6], "label": "8,6"},
|
||||
{"y": 0, "x": 9, "matrix": [9, 6], "label": "9,6"},
|
||||
{"y": 0, "x": 10, "matrix": [8, 7], "label": "8,7"},
|
||||
{"y": 1.5, "x": 0, "matrix": [0, 0], "label": "0,0"},
|
||||
{"y": 1.5, "x": 1, "matrix": [1, 0], "label": "1,0"},
|
||||
{"y": 1.5, "x": 2, "matrix": [0, 1], "label": "0,1"},
|
||||
{"y": 1.5, "x": 3, "matrix": [1, 1], "label": "1,1"},
|
||||
{"y": 1.5, "x": 4, "matrix": [0, 2], "label": "0,2"},
|
||||
{"y": 1.5, "x": 5, "matrix": [1, 2], "label": "1,2"},
|
||||
{"y": 1.5, "x": 6, "matrix": [0, 3], "label": "0,3"},
|
||||
{"y": 1.5, "x": 7, "matrix": [1, 3], "label": "1,3"},
|
||||
{"y": 1.5, "x": 8, "matrix": [0, 4], "label": "0,4"},
|
||||
{"y": 1.5, "x": 9, "matrix": [1, 4], "label": "1,4"},
|
||||
{"y": 1.5, "x": 10, "matrix": [0, 5], "label": "0,5"},
|
||||
{"y": 2.5, "x": 0, "matrix": [2, 0], "label": "2,0"},
|
||||
{"y": 2.5, "x": 1, "matrix": [3, 0], "label": "3,0"},
|
||||
{"y": 2.5, "x": 2, "matrix": [2, 1], "label": "2,1"},
|
||||
{"y": 2.5, "x": 3, "matrix": [3, 1], "label": "3,1"},
|
||||
{"y": 2.5, "x": 4, "matrix": [2, 2], "label": "2,2"},
|
||||
{"y": 2.5, "x": 5, "matrix": [3, 2], "label": "3,2"},
|
||||
{"y": 2.5, "x": 6, "matrix": [2, 3], "label": "2,3"},
|
||||
{"y": 2.5, "x": 7, "matrix": [3, 3], "label": "3,3"},
|
||||
{"y": 2.5, "x": 8, "matrix": [2, 4], "label": "2,4"},
|
||||
{"y": 2.5, "x": 9, "matrix": [3, 4], "label": "3,4"},
|
||||
{"y": 2.5, "x": 10, "matrix": [2, 5], "label": "2,5"},
|
||||
{"y": 3.5, "x": 0, "matrix": [4, 0], "label": "4,0"},
|
||||
{"y": 3.5, "x": 1, "matrix": [5, 0], "label": "5,0"},
|
||||
{"y": 3.5, "x": 2, "matrix": [4, 1], "label": "4,1"},
|
||||
{"y": 3.5, "x": 3, "matrix": [5, 1], "label": "5,1"},
|
||||
{"y": 3.5, "x": 4, "matrix": [4, 2], "label": "4,2"},
|
||||
{"y": 3.5, "x": 5, "matrix": [5, 2], "label": "5,2"},
|
||||
{"y": 3.5, "x": 6, "matrix": [4, 3], "label": "4,3"},
|
||||
{"y": 3.5, "x": 7, "matrix": [5, 3], "label": "5,3"},
|
||||
{"y": 3.5, "x": 8, "matrix": [4, 4], "label": "4,4"},
|
||||
{"y": 3.5, "x": 9, "matrix": [5, 4], "label": "5,4"},
|
||||
{"y": 3.5, "x": 10, "matrix": [4, 5], "label": "4,5"},
|
||||
{"y": 4.5, "x": 0, "matrix": [6, 0], "w": 1.5, "label": "6,0"},
|
||||
{"y": 4.5, "x": 1.5, "matrix": [7, 0], "label": "7,0"},
|
||||
{"y": 4.5, "x": 2.5, "matrix": [6, 1], "label": "6,1"},
|
||||
{"y": 4.5, "x": 3.5, "matrix": [7, 1], "label": "7,1"},
|
||||
{"y": 4.5, "x": 4.5, "matrix": [6, 2], "label": "6,2"},
|
||||
{"y": 4.5, "x": 4.5, "matrix": [6, 3], "w": 2, "label": "6,3"},
|
||||
{"y": 4.5, "x": 5.5, "matrix": [7, 2], "label": "7,2"},
|
||||
{"y": 4.5, "x": 6.5, "matrix": [7, 3], "label": "7,3"},
|
||||
{"y": 4.5, "x": 7.5, "matrix": [6, 4], "label": "6,4"},
|
||||
{"y": 4.5, "x": 8.5, "matrix": [7, 4], "label": "7,4"},
|
||||
{"y": 4.5, "x": 9.5, "matrix": [6, 5], "w": 1.5, "label": "6,5"}
|
||||
]
|
||||
}
|
||||
},
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"command": false,
|
||||
"console": false,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": false,
|
||||
"audio": false,
|
||||
"backlight": false,
|
||||
"rgblight": false,
|
||||
"encoder": true,
|
||||
"rgb_matrix": true,
|
||||
"haptic": true,
|
||||
"oled": true,
|
||||
"wpm": true
|
||||
},
|
||||
"build": {
|
||||
"lto": true
|
||||
},
|
||||
"haptic": {
|
||||
"driver": "solenoid"
|
||||
},
|
||||
"encoder": {
|
||||
"enabled": true,
|
||||
"rotary": [
|
||||
{ "pin_a": "GP22", "pin_b": "GP23", "resolution": 2 },
|
||||
{ "pin_a": "GP26", "pin_b": "GP24", "resolution": 2 },
|
||||
{ "pin_a": "GP0", "pin_b": "GP1", "resolution": 2 },
|
||||
{ "pin_a": "GP5", "pin_b": "GP3", "resolution": 2 }
|
||||
]
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"matrix_pins": {
|
||||
"cols": ["GP28", "GP21", "GP20", "GP6", "GP2", "GP12", "GP13", "GP14"],
|
||||
"rows": ["GP25", "GP27", "GP16", "GP7", "GP17", "GP18", "GP19", "GP4", "GP8", "GP9"]
|
||||
}
|
||||
}
|
28
keyboards/nachie/syndrome_ortho/keymaps/default/keymap.c
Executable file
28
keyboards/nachie/syndrome_ortho/keymaps/default/keymap.c
Executable 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_4,
|
||||
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||
KC_A, KC_S, KC_D, KC_F, KC_G, KC_SPC, KC_H, KC_J, KC_K, KC_L, KC_ENT,
|
||||
KC_Z, KC_X, KC_C, KC_V, KC_B, KC_SPC, KC_N, KC_M, KC_DOT, KC_LSFT, MO(1),
|
||||
KC_LGUI, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_BSPC, KC_SPC, KC_SPC, KC_BSPC, KC_RGUI, MO(1))
|
||||
};
|
@ -0,0 +1 @@
|
||||
The default keymap for the Syndrome Ortho.
|
13
keyboards/nachie/syndrome_ortho/keymaps/vial/config.h
Normal file
13
keyboards/nachie/syndrome_ortho/keymaps/vial/config.h
Normal file
@ -0,0 +1,13 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
#pragma once
|
||||
|
||||
#define VIA_EEPROM_LAYOUT_OPTIONS_SIZE 2
|
||||
|
||||
#define VIAL_KEYBOARD_UID {0xC9, 0x3D, 0x14, 0x32, 0x17, 0xA3, 0xD1, 0x9D}
|
||||
|
||||
#define VIAL_UNLOCK_COMBO_ROWS { 0, 3 }
|
||||
#define VIAL_UNLOCK_COMBO_COLS { 0, 4 }
|
||||
|
||||
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
|
||||
#define RGB_MATRIX_KEYPRESSES
|
492
keyboards/nachie/syndrome_ortho/keymaps/vial/keymap.c
Executable file
492
keyboards/nachie/syndrome_ortho/keymaps/vial/keymap.c
Executable file
@ -0,0 +1,492 @@
|
||||
/*
|
||||
Copyright 2024 Nachie
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
#include <stdio.h>
|
||||
#include "os_detection.h"
|
||||
|
||||
#ifdef OLED_ENABLE
|
||||
void render_key_status_or_logo(void);
|
||||
void render_current_layer(void);
|
||||
void render_current_wpm(void);
|
||||
#endif
|
||||
|
||||
os_variant_t current_platform;
|
||||
bool is_alt_tab_active = false;
|
||||
uint16_t alt_tab_timer = 0;
|
||||
|
||||
enum layer_names {
|
||||
_BASE, // Default Layer
|
||||
_FN, // Fn Layer 1
|
||||
_FN2, // Fn Layer 2
|
||||
_FN3 // Fn Layer 3
|
||||
};
|
||||
|
||||
enum custom_keycode {
|
||||
JWRDL = QK_KB_0,
|
||||
JWRDR,
|
||||
SWRDL,
|
||||
SWRDR,
|
||||
TABL,
|
||||
TABR,
|
||||
DSKTPL,
|
||||
DSKTPR,
|
||||
PRVAPP,
|
||||
NXTAPP
|
||||
};
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case KC_HOME:
|
||||
if (record->event.pressed && current_platform == OS_MACOS) {
|
||||
register_mods(MOD_LGUI);
|
||||
tap_code(KC_LEFT);
|
||||
unregister_mods(MOD_LGUI);
|
||||
} else {
|
||||
tap_code(KC_HOME);
|
||||
}
|
||||
break;
|
||||
case KC_END:
|
||||
if (record->event.pressed && current_platform == OS_MACOS) {
|
||||
register_mods(MOD_LGUI);
|
||||
tap_code(KC_RIGHT);
|
||||
unregister_mods(MOD_LGUI);
|
||||
} else {
|
||||
tap_code(KC_END);
|
||||
}
|
||||
break;
|
||||
case KC_PGUP:
|
||||
if (record->event.pressed && current_platform == OS_MACOS) {
|
||||
register_mods(MOD_LGUI);
|
||||
tap_code(KC_UP);
|
||||
unregister_mods(MOD_LGUI);
|
||||
} else {
|
||||
tap_code(KC_PGUP);
|
||||
}
|
||||
break;
|
||||
case KC_PGDN:
|
||||
if (record->event.pressed && current_platform == OS_MACOS) {
|
||||
register_mods(MOD_LGUI);
|
||||
tap_code(KC_DOWN);
|
||||
unregister_mods(MOD_LGUI);
|
||||
} else {
|
||||
tap_code(KC_PGDN);
|
||||
}
|
||||
break;
|
||||
case KC_NUM_LOCK:
|
||||
if (record->event.pressed && current_platform == OS_MACOS) {
|
||||
register_mods(MOD_LSFT);
|
||||
tap_code(KC_CLEAR);
|
||||
unregister_mods(MOD_LSFT);
|
||||
} else {
|
||||
tap_code(KC_NUM_LOCK);
|
||||
}
|
||||
break;
|
||||
case KC_SCROLL_LOCK:
|
||||
if (record->event.pressed && current_platform == OS_MACOS) {
|
||||
register_mods(MOD_LCTL);
|
||||
tap_code(KC_F14);
|
||||
unregister_mods(MOD_LCTL);
|
||||
} else {
|
||||
tap_code(KC_SCROLL_LOCK);
|
||||
}
|
||||
break;
|
||||
case KC_PRINT_SCREEN:
|
||||
if (record->event.pressed && current_platform == OS_MACOS) {
|
||||
register_mods(MOD_LSFT);
|
||||
register_mods(MOD_LGUI);
|
||||
tap_code(KC_5);
|
||||
unregister_mods(MOD_LGUI);
|
||||
unregister_mods(MOD_LSFT);
|
||||
} else {
|
||||
tap_code(KC_PRINT_SCREEN);
|
||||
}
|
||||
break;
|
||||
case JWRDL:
|
||||
if (record->event.pressed) {
|
||||
(current_platform == OS_MACOS) ? register_mods(MOD_LALT) : register_mods(MOD_LCTL);
|
||||
tap_code(KC_LEFT);
|
||||
(current_platform == OS_MACOS) ? unregister_mods(MOD_LALT) : unregister_mods(MOD_LCTL);
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
case JWRDR:
|
||||
if (record->event.pressed) {
|
||||
(current_platform == OS_MACOS) ? register_mods(MOD_LALT) : register_mods(MOD_LCTL);
|
||||
tap_code(KC_RIGHT);
|
||||
(current_platform == OS_MACOS) ? unregister_mods(MOD_LALT) : unregister_mods(MOD_LCTL);
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
case SWRDL:
|
||||
if (record->event.pressed) {
|
||||
register_mods(MOD_LSFT);
|
||||
(current_platform == OS_MACOS) ? register_mods(MOD_LALT) : register_mods(MOD_LCTL);
|
||||
tap_code(KC_LEFT);
|
||||
(current_platform == OS_MACOS) ? unregister_mods(MOD_LALT) : unregister_mods(MOD_LCTL);
|
||||
unregister_mods(MOD_LSFT);
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
case SWRDR:
|
||||
if (record->event.pressed) {
|
||||
register_mods(MOD_LSFT);
|
||||
(current_platform == OS_MACOS) ? register_mods(MOD_LALT) : register_mods(MOD_LCTL);
|
||||
tap_code(KC_RIGHT);
|
||||
(current_platform == OS_MACOS) ? unregister_mods(MOD_LALT) : unregister_mods(MOD_LCTL);
|
||||
unregister_mods(MOD_LSFT);
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
case TABL:
|
||||
if (record->event.pressed) {
|
||||
register_mods(MOD_LCTL);
|
||||
register_mods(MOD_LSFT);
|
||||
tap_code(KC_TAB);
|
||||
unregister_mods(MOD_LSFT);
|
||||
unregister_mods(MOD_LCTL);
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
case TABR:
|
||||
if (record->event.pressed) {
|
||||
register_mods(MOD_LCTL);
|
||||
tap_code(KC_TAB);
|
||||
unregister_mods(MOD_LCTL);
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
case DSKTPL:
|
||||
if (record->event.pressed) {
|
||||
register_mods(MOD_LCTL);
|
||||
register_mods(MOD_LGUI);
|
||||
(current_platform == OS_LINUX) ? tap_code(KC_UP) : tap_code(KC_LEFT);
|
||||
unregister_mods(MOD_LGUI);
|
||||
unregister_mods(MOD_LCTL);
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
case DSKTPR:
|
||||
if (record->event.pressed) {
|
||||
register_mods(MOD_LCTL);
|
||||
register_mods(MOD_LGUI);
|
||||
(current_platform == OS_LINUX) ? tap_code(KC_DOWN) : tap_code(KC_RGHT);
|
||||
unregister_mods(MOD_LGUI);
|
||||
unregister_mods(MOD_LCTL);
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
case PRVAPP:
|
||||
if (record->event.pressed) {
|
||||
register_code(KC_LSFT);
|
||||
if (!is_alt_tab_active) {
|
||||
is_alt_tab_active = true;
|
||||
(current_platform == OS_MACOS) ? register_code(KC_LGUI) : register_code(KC_LALT);
|
||||
}
|
||||
alt_tab_timer = timer_read();
|
||||
register_code(KC_TAB);
|
||||
} else {
|
||||
unregister_code(KC_TAB);
|
||||
unregister_code(KC_LSFT);
|
||||
}
|
||||
break;
|
||||
case NXTAPP:
|
||||
if (record->event.pressed) {
|
||||
if (!is_alt_tab_active) {
|
||||
is_alt_tab_active = true;
|
||||
(current_platform == OS_MACOS) ? register_code(KC_LGUI) : register_code(KC_LALT);
|
||||
}
|
||||
alt_tab_timer = timer_read();
|
||||
register_code(KC_TAB);
|
||||
} else {
|
||||
unregister_code(KC_TAB);
|
||||
}
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
#ifndef HAPTIC_ENABLE
|
||||
#define HF_TOGG _______
|
||||
#endif
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/* QWERTY */
|
||||
[_BASE] = LAYOUT(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4,
|
||||
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||
KC_A, KC_S, KC_D, KC_F, KC_G, KC_SPC, KC_H, KC_J, KC_K, KC_L, KC_ENT,
|
||||
KC_Z, KC_X, KC_C, KC_V, KC_B, KC_SPC, KC_N, KC_M, KC_DOT, KC_LSFT, MO(1),
|
||||
KC_LGUI, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_BSPC, KC_SPC, KC_SPC, KC_BSPC, KC_RGUI, MO(2)),
|
||||
|
||||
/* FUNCTION */
|
||||
[_FN] = LAYOUT(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4,
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
|
||||
KC_A, KC_S, KC_D, KC_F, KC_G, KC_SPC, KC_H, KC_J, KC_K, KC_L, KC_ENT,
|
||||
KC_Z, KC_X, KC_C, KC_V, KC_B, KC_SPC, KC_N, KC_M, KC_DOT, KC_LSFT, MO(1),
|
||||
KC_LGUI, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_BSPC, KC_SPC, KC_SPC, KC_BSPC, KC_RGUI, MO(1)),
|
||||
|
||||
[_FN2] = LAYOUT(
|
||||
KC_ESC, QK_BOOTLOADER, QK_REBOOT, QK_DEBUG_TOGGLE, QK_CLEAR_EEPROM,
|
||||
HF_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
|
||||
|
||||
[_FN3] = LAYOUT(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
|
||||
};
|
||||
|
||||
void matrix_scan_user(void) { // The very important timer.
|
||||
if (is_alt_tab_active) {
|
||||
if (timer_elapsed(alt_tab_timer) > 1000) {
|
||||
(current_platform == OS_MACOS) ? unregister_code(KC_LGUI) : unregister_code(KC_LALT);
|
||||
is_alt_tab_active = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(ENCODER_MAP_ENABLE)
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
|
||||
[_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
[_FN] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(RGB_RMOD, RGB_MOD) },
|
||||
[_FN2] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
[_FN3] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef OLED_ENABLE
|
||||
#ifdef DYNAMIC_MACRO_ENABLE
|
||||
bool macro1;
|
||||
bool macro1rec;
|
||||
bool macro2;
|
||||
bool macro2rec;
|
||||
bool prevEnabled;
|
||||
uint8_t prevRGBmode;
|
||||
|
||||
void render_dynamic_macro_status(int col, int line){
|
||||
oled_set_cursor(col,line);
|
||||
macro1rec ? oled_write(PSTR("DM1"), macro1) : oled_write(PSTR(" "),false);
|
||||
oled_set_cursor(col,line+1);
|
||||
macro2rec ? oled_write(PSTR("DM2"), macro2) : oled_write(PSTR(" "),false);
|
||||
}
|
||||
|
||||
//direction indicates which macro it is, with 1 being Macro 1, -1 being Macro 2, and 0 being no macro.
|
||||
void dynamic_macro_record_start_user(int8_t direction){
|
||||
prevEnabled = rgb_matrix_is_enabled();
|
||||
if (!prevEnabled) { rgb_matrix_enable(); }
|
||||
prevRGBmode = rgb_matrix_get_mode();
|
||||
rgb_matrix_mode(RGB_MATRIX_BREATHING);
|
||||
switch(direction){
|
||||
case 1:
|
||||
macro1 = false;
|
||||
macro1rec = true;
|
||||
break;
|
||||
case -1:
|
||||
macro2 = false;
|
||||
macro2rec = true;
|
||||
break;
|
||||
default:
|
||||
macro1 = false;
|
||||
macro2 = false;
|
||||
macro1rec = false;
|
||||
macro2rec = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void dynamic_macro_record_end_user(int8_t direction){
|
||||
prevEnabled ? rgb_matrix_mode(prevRGBmode) : rgb_matrix_disable();
|
||||
switch(direction){
|
||||
case 1:
|
||||
macro1 = true;
|
||||
break;
|
||||
case -1:
|
||||
macro2 = true;
|
||||
break;
|
||||
default:
|
||||
macro1 = false;
|
||||
macro2 = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
bool clear_screen = false;
|
||||
bool rerender_platform = false;
|
||||
|
||||
static void render_logo(void) {
|
||||
static const char PROGMEM logo[] = {
|
||||
0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94,
|
||||
0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4,
|
||||
0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00
|
||||
};
|
||||
|
||||
oled_write(logo, false);
|
||||
}
|
||||
|
||||
void render_keylock_status(led_t led_state) {
|
||||
bool caps_state = (led_state.caps_lock || is_caps_word_on());
|
||||
oled_write(PSTR("CAPS"), caps_state);
|
||||
oled_write(PSTR(" "), false);
|
||||
oled_write(PSTR("NUM"), led_state.num_lock);
|
||||
oled_write(PSTR(" "), false);
|
||||
oled_write(PSTR("SCRL"), led_state.scroll_lock);
|
||||
//oled_write_ln_P(PSTR(" "), false);
|
||||
}
|
||||
|
||||
void render_mod_status(uint8_t modifiers) {
|
||||
oled_write(PSTR("SH"), (modifiers & MOD_MASK_SHIFT));
|
||||
oled_write(PSTR(" "), false);
|
||||
(current_platform == OS_MACOS || current_platform == OS_IOS) ? oled_write(PSTR("CMD"), (modifiers & MOD_MASK_GUI)) : oled_write(PSTR("CT"), (modifiers & MOD_MASK_CTRL));
|
||||
oled_write(PSTR(" "), false);
|
||||
(current_platform == OS_MACOS || current_platform == OS_IOS) ? oled_write(PSTR("OPT"), (modifiers & MOD_MASK_ALT)) : oled_write(PSTR("ALT"), (modifiers & MOD_MASK_ALT));
|
||||
oled_write(PSTR(" "), false);
|
||||
(current_platform == OS_MACOS || current_platform == OS_IOS) ? oled_write(PSTR("CT"), (modifiers & MOD_MASK_CTRL)) : oled_write(PSTR("GUI"), (modifiers & MOD_MASK_GUI));
|
||||
}
|
||||
|
||||
void render_key_status_or_logo(){
|
||||
led_t led_state = host_keyboard_led_state();
|
||||
uint8_t mod_state = (get_mods()|get_oneshot_mods());
|
||||
if ( !led_state.num_lock && !led_state.caps_lock && !led_state.scroll_lock
|
||||
&& !(mod_state & MOD_MASK_SHIFT) && !(mod_state & MOD_MASK_ALT) && !(mod_state & MOD_MASK_CTRL) && !(mod_state & MOD_MASK_GUI)) {
|
||||
if(!clear_screen) {
|
||||
render_logo();
|
||||
rerender_platform = true;
|
||||
}
|
||||
clear_screen = true;
|
||||
} else {
|
||||
if (clear_screen == true) {
|
||||
oled_clear();
|
||||
oled_render();
|
||||
clear_screen = false;
|
||||
}
|
||||
oled_set_cursor(8,0);
|
||||
render_keylock_status(led_state);
|
||||
oled_set_cursor(8,1);
|
||||
render_mod_status(mod_state);
|
||||
rerender_platform = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void render_current_layer(){
|
||||
switch (get_highest_layer(layer_state)) {
|
||||
case 0:
|
||||
oled_write(PSTR("Layer 0"), false);
|
||||
break;
|
||||
case 1:
|
||||
oled_write(PSTR("Layer 1"), false);
|
||||
break;
|
||||
case 2:
|
||||
oled_write(PSTR("Layer 2"), false);
|
||||
break;
|
||||
case 3:
|
||||
oled_write(PSTR("Layer 3"), false);
|
||||
break;
|
||||
default:
|
||||
oled_write(PSTR("Layer ?"), false); // Should never display, here as a catchall
|
||||
}
|
||||
}
|
||||
|
||||
void render_current_wpm(){
|
||||
oled_write_P(PSTR("WPM: "), false);
|
||||
oled_write(get_u8_str(get_current_wpm(), '0'), false);
|
||||
}
|
||||
|
||||
void render_platform_status(int col, int line) {
|
||||
/* Show Ctrl-Gui Swap options */
|
||||
static const char PROGMEM logo[][5][3] = {
|
||||
{{0x9B, 0x9C, 0}, {0xbb, 0xbc, 0}}, //Android
|
||||
{{0x99, 0x9A, 0}, {0xb9, 0xba, 0}}, //Linux
|
||||
{{0x97, 0x98, 0}, {0xb7, 0xb8, 0}}, //Windows
|
||||
{{0x95, 0x96, 0}, {0xb5, 0xb6, 0}}, //Mac/iOS
|
||||
{{0x9D, 0x9E, 0}, {0xbd, 0xbe, 0}}, //Empty Placeholder
|
||||
};
|
||||
current_platform = detected_host_os();
|
||||
switch (current_platform) {
|
||||
/*case OS_ANDROID: //Android
|
||||
oled_set_cursor(col,line);
|
||||
oled_write(logo[0][0], false);
|
||||
oled_set_cursor(col,line+1);
|
||||
oled_write(logo[0][1], false);
|
||||
break;*/
|
||||
case OS_LINUX: //Linux
|
||||
oled_set_cursor(col,line);
|
||||
oled_write(logo[1][0], false);
|
||||
oled_set_cursor(col,line+1);
|
||||
oled_write(logo[1][1], false);
|
||||
keymap_config.swap_lctl_lgui = false;
|
||||
keymap_config.swap_rctl_rgui = false;
|
||||
break;
|
||||
case OS_WINDOWS: //Windows
|
||||
oled_set_cursor(col,line);
|
||||
oled_write(logo[2][0], false);
|
||||
oled_set_cursor(col,line+1);
|
||||
oled_write(logo[2][1], false);
|
||||
keymap_config.swap_lctl_lgui = false;
|
||||
keymap_config.swap_rctl_rgui = false;
|
||||
break;
|
||||
case OS_MACOS: //Mac
|
||||
oled_set_cursor(col,line);
|
||||
oled_write(logo[3][0], false);
|
||||
oled_set_cursor(col,line+1);
|
||||
oled_write(logo[3][1], false);
|
||||
keymap_config.swap_lctl_lgui = true;
|
||||
keymap_config.swap_rctl_rgui = true;
|
||||
break;
|
||||
case OS_IOS: //iOS
|
||||
oled_set_cursor(col,line);
|
||||
oled_write(logo[3][0], false);
|
||||
oled_set_cursor(col,line+1);
|
||||
oled_write(logo[3][1], false);
|
||||
keymap_config.swap_lctl_lgui = true;
|
||||
keymap_config.swap_rctl_rgui = true;
|
||||
break;
|
||||
default: //OS_UNSURE or not configured
|
||||
oled_set_cursor(col,line);
|
||||
oled_write(logo[4][0], false);
|
||||
oled_set_cursor(col,line+1);
|
||||
oled_write(logo[4][1], false);
|
||||
break;
|
||||
}
|
||||
rerender_platform = false;
|
||||
}
|
||||
|
||||
bool oled_task_user(void) {
|
||||
render_key_status_or_logo();
|
||||
oled_set_cursor(8,2);
|
||||
render_current_layer();
|
||||
#ifdef DYNAMIC_MACRO_ENABLE
|
||||
render_dynamic_macro_status(18,2);
|
||||
#endif
|
||||
oled_set_cursor(8,3);
|
||||
render_current_wpm();
|
||||
#ifdef OS_DETECTION_ENABLE
|
||||
if(current_platform != detected_host_os() || rerender_platform) { render_platform_status(3,0); }
|
||||
#endif
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
#endif
|
1
keyboards/nachie/syndrome_ortho/keymaps/vial/readme.md
Normal file
1
keyboards/nachie/syndrome_ortho/keymaps/vial/readme.md
Normal file
@ -0,0 +1 @@
|
||||
The via keymap for the Syndrome Ortho PCB.
|
10
keyboards/nachie/syndrome_ortho/keymaps/vial/rules.mk
Normal file
10
keyboards/nachie/syndrome_ortho/keymaps/vial/rules.mk
Normal 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
|
302
keyboards/nachie/syndrome_ortho/keymaps/vial/vial.json
Normal file
302
keyboards/nachie/syndrome_ortho/keymaps/vial/vial.json
Normal file
@ -0,0 +1,302 @@
|
||||
{
|
||||
"name": "Syndrome",
|
||||
"vendorId": "0x4B43",
|
||||
"productId": "0x5360",
|
||||
"customKeycodes": [
|
||||
{
|
||||
"name": "JmpWordL",
|
||||
"title": "Jump Word Left",
|
||||
"shortName": "JWRDL"
|
||||
},
|
||||
{
|
||||
"name": "JmpWordR",
|
||||
"title": "Jump Word Right",
|
||||
"shortName": "JWRDR"
|
||||
},
|
||||
{
|
||||
"name": "SlcWordL",
|
||||
"title": "Select Word Left",
|
||||
"shortName": "SWRDL"
|
||||
},
|
||||
{
|
||||
"name": "SlcWordR",
|
||||
"title": "Select Word Right",
|
||||
"shortName": "SWRDR"
|
||||
},
|
||||
{
|
||||
"name": "TabLft",
|
||||
"title": "Tab Left",
|
||||
"shortName": "TABL"
|
||||
},
|
||||
{
|
||||
"name": "TabRght",
|
||||
"title": "Tab Right",
|
||||
"shortName": "TABR"
|
||||
},
|
||||
{
|
||||
"name": "DsktpLft",
|
||||
"title": "Desktop Left",
|
||||
"shortName": "DSKTPL"
|
||||
},
|
||||
{
|
||||
"name": "DsktpRght",
|
||||
"title": "Desktop Right",
|
||||
"shortName": "DSKTPR"
|
||||
},
|
||||
{
|
||||
"name": "PrevApp",
|
||||
"title": "Previous App",
|
||||
"shortName": "PRVAPP"
|
||||
},
|
||||
{
|
||||
"name": "NextApp",
|
||||
"title": "Next App",
|
||||
"shortName": "NXTAPP"
|
||||
}
|
||||
],
|
||||
"matrix": { "rows": 10, "cols": 8 },
|
||||
"lighting": "vialrgb",
|
||||
"layouts": {
|
||||
"labels":[
|
||||
[
|
||||
"Bottom Row",
|
||||
"All 1U",
|
||||
"2U Centered Space",
|
||||
"6U Big Bar",
|
||||
"3U/3U",
|
||||
"2U/2U",
|
||||
"1.75U/1.75U"
|
||||
],
|
||||
"Alpha Stagger",
|
||||
"R1 Encoder",
|
||||
"R2 Encoder",
|
||||
"R3 Encoder",
|
||||
"Macro Row"
|
||||
],
|
||||
"keymap": [
|
||||
[
|
||||
{
|
||||
"y": 2.5,
|
||||
"x": 2
|
||||
},
|
||||
"3,0\n\n\n\n\n\n\n\n\ne",
|
||||
"3,1\n\n\n\n\n\n\n\n\ne"
|
||||
],
|
||||
[
|
||||
{
|
||||
"x": 2.5
|
||||
},
|
||||
"8,5\n\n\n5,0",
|
||||
{
|
||||
"x": 6
|
||||
},
|
||||
"9,5\n\n\n5,0",
|
||||
"8,6\n\n\n5,0",
|
||||
"9,6\n\n\n5,0",
|
||||
"8,7\n\n\n5,0"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": 0.5,
|
||||
"x": 2.5
|
||||
},
|
||||
"0,0",
|
||||
"1,0",
|
||||
"0,1",
|
||||
"1,1",
|
||||
"0,2",
|
||||
"1,2",
|
||||
"0,3",
|
||||
"1,3",
|
||||
"0,4",
|
||||
"1,4",
|
||||
"0,5",
|
||||
{
|
||||
"x": 0.75,
|
||||
"d": true
|
||||
},
|
||||
"0,0\n\n\n2,0\n\n\n\n\n\ne",
|
||||
{
|
||||
"d": true
|
||||
},
|
||||
"0,1\n\n\n2,0\n\n\n\n\n\ne",
|
||||
"0,0\n\n\n2,1\n\n\n\n\n\ne",
|
||||
"0,1\n\n\n2,1\n\n\n\n\n\ne"
|
||||
],
|
||||
[
|
||||
{
|
||||
"x": 2.5,
|
||||
"c": "#aaaaaa"
|
||||
},
|
||||
"2,0",
|
||||
{
|
||||
"c": "#cccccc"
|
||||
},
|
||||
"3,0",
|
||||
"2,1",
|
||||
"3,1",
|
||||
"2,2",
|
||||
"3,2",
|
||||
"2,3",
|
||||
"3,3",
|
||||
"2,4",
|
||||
{
|
||||
"c": "#777777"
|
||||
},
|
||||
"3,4",
|
||||
"2,5",
|
||||
{
|
||||
"x": 0.75,
|
||||
"c": "#cccccc",
|
||||
"d": true
|
||||
},
|
||||
"1,0\n\n\n3,0\n\n\n\n\n\ne",
|
||||
{
|
||||
"d": true
|
||||
},
|
||||
"1,1\n\n\n3,0\n\n\n\n\n\ne",
|
||||
"1,0\n\n\n3,1\n\n\n\n\n\ne",
|
||||
"1,1\n\n\n3,1\n\n\n\n\n\ne"
|
||||
],
|
||||
[
|
||||
{
|
||||
"x": 2.5,
|
||||
"c": "#aaaaaa"
|
||||
},
|
||||
"4,0\n\n\n1,0",
|
||||
{
|
||||
"c": "#cccccc"
|
||||
},
|
||||
"5,0\n\n\n1,0",
|
||||
"4,1\n\n\n1,0",
|
||||
"5,1\n\n\n1,0",
|
||||
"4,2\n\n\n1,0",
|
||||
"5,2",
|
||||
"4,3\n\n\n1,0",
|
||||
"5,3\n\n\n1,0",
|
||||
"4,4\n\n\n1,0",
|
||||
{
|
||||
"c": "#aaaaaa"
|
||||
},
|
||||
"5,4\n\n\n1,0",
|
||||
"4,5\n\n\n1,0",
|
||||
{
|
||||
"x": 0.75,
|
||||
"c": "#cccccc",
|
||||
"d": true
|
||||
},
|
||||
"2,0\n\n\n4,0\n\n\n\n\n\ne",
|
||||
{
|
||||
"d": true
|
||||
},
|
||||
"2,1\n\n\n4,0\n\n\n\n\n\ne",
|
||||
"2,0\n\n\n4,1\n\n\n\n\n\ne",
|
||||
"2,1\n\n\n4,1\n\n\n\n\n\ne"
|
||||
],
|
||||
[
|
||||
{
|
||||
"x": 2.5,
|
||||
"w": 1.5
|
||||
},
|
||||
"6,0",
|
||||
"7,0",
|
||||
"6,1\n\n\n0,0",
|
||||
"7,1\n\n\n0,0",
|
||||
"6,2\n\n\n0,0",
|
||||
"7,2\n\n\n0,0",
|
||||
"7,3\n\n\n0,0",
|
||||
"6,4\n\n\n0,0",
|
||||
"7,4",
|
||||
{
|
||||
"w": 1.5
|
||||
},
|
||||
"6,5"
|
||||
],
|
||||
[
|
||||
{
|
||||
"x": 5
|
||||
},
|
||||
"6,1\n\n\n0,1",
|
||||
"7,1\n\n\n0,1",
|
||||
{
|
||||
"w": 2
|
||||
},
|
||||
"6,3\n\n\n0,1",
|
||||
"7,3\n\n\n0,1",
|
||||
"6,4\n\n\n0,1"
|
||||
],
|
||||
[
|
||||
{
|
||||
"x": 5,
|
||||
"w": 6
|
||||
},
|
||||
"6,3\n\n\n0,2"
|
||||
],
|
||||
[
|
||||
{
|
||||
"x": 5,
|
||||
"w": 3
|
||||
},
|
||||
"7,1\n\n\n0,3",
|
||||
{
|
||||
"w": 3
|
||||
},
|
||||
"7,3\n\n\n0,3"
|
||||
],
|
||||
[
|
||||
{
|
||||
"x": 5
|
||||
},
|
||||
"6,1\n\n\n0,4",
|
||||
{
|
||||
"w": 2
|
||||
},
|
||||
"6,2\n\n\n0,4",
|
||||
{
|
||||
"w": 2
|
||||
},
|
||||
"7,3\n\n\n0,4",
|
||||
"6,4\n\n\n0,4"
|
||||
],
|
||||
[
|
||||
{
|
||||
"x": 5,
|
||||
"w": 1.25
|
||||
},
|
||||
"6,1\n\n\n0,5",
|
||||
{
|
||||
"w": 1.75
|
||||
},
|
||||
"6,2\n\n\n0,5",
|
||||
{
|
||||
"w": 1.75
|
||||
},
|
||||
"7,3\n\n\n0,5",
|
||||
{
|
||||
"w": 1.25
|
||||
},
|
||||
"6,4\n\n\n0,5"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": 1.25,
|
||||
"x": 2.5,
|
||||
"w": 1.5
|
||||
},
|
||||
"4,0\n\n\n1,1",
|
||||
"5,0\n\n\n1,1",
|
||||
"4,1\n\n\n1,1",
|
||||
"5,1\n\n\n1,1",
|
||||
"4,2\n\n\n1,1",
|
||||
"4,3\n\n\n1,1",
|
||||
"5,3\n\n\n1,1",
|
||||
"4,4\n\n\n1,1",
|
||||
"5,4\n\n\n1,1",
|
||||
{
|
||||
"w": 1.5
|
||||
},
|
||||
"4,5\n\n\n1,1"
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
9
keyboards/nachie/syndrome_ortho/mcuconf.h
Normal file
9
keyboards/nachie/syndrome_ortho/mcuconf.h
Normal file
@ -0,0 +1,9 @@
|
||||
#pragma once
|
||||
|
||||
#include_next <mcuconf.h>
|
||||
|
||||
#undef RP_I2C_USE_I2C0
|
||||
#define RP_I2C_USE_I2C0 FALSE
|
||||
|
||||
#undef RP_I2C_USE_I2C1
|
||||
#define RP_I2C_USE_I2C1 TRUE
|
23
keyboards/nachie/syndrome_ortho/readme.md
Normal file
23
keyboards/nachie/syndrome_ortho/readme.md
Normal file
@ -0,0 +1,23 @@
|
||||
# Syndrome Ortho
|
||||
|
||||
Firmware for the Syndrome Ortho (and Detour)
|
||||
|
||||
* Keyboard Maintainer: [Nachie](https://github.com/nachie)
|
||||
* Hardware Supported: Syndrome Ortho
|
||||
* Hardware Availability: [Little Craftery](https://littlecraftery.com/products/syndrome-ortho)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make nachie/syndrome_ortho:default
|
||||
|
||||
Or to make and flash:
|
||||
|
||||
make nachie/syndrome_ortho:default:flash
|
||||
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
|
||||
## Bootloader
|
||||
|
||||
* **Bootmagic reset**: Hold down ESC key (top left) and plug in the keyboard
|
||||
* **Physical reset button**: Briefly press the button labeled "SW_RST1" on the back of the PCB
|
3
keyboards/nachie/syndrome_ortho/rules.mk
Executable file
3
keyboards/nachie/syndrome_ortho/rules.mk
Executable file
@ -0,0 +1,3 @@
|
||||
OLED_DRIVER = ssd1306
|
||||
|
||||
OPT_DEFS += -DHAL_USE_I2C=TRUE
|
89
keyboards/nachie/syndrome_ortho/syndrome_ortho.c
Executable file
89
keyboards/nachie/syndrome_ortho/syndrome_ortho.c
Executable 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, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED},
|
||||
{ 6, 5, 4, 3, 2, 1, 0, NO_LED },
|
||||
{ 7, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 15 },
|
||||
{ 8 , 9, NO_LED, 10, 11, 12, 13, 14 },
|
||||
{ NO_LED, NO_LED, NO_LED,NO_LED, NO_LED, NO_LED, NO_LED, NO_LED }
|
||||
}, {
|
||||
{ 183,0 }, { 162,0 }, { 142,0 }, { 122,0 }, { 81,0 }, { 61,0 }, { 40,0 },
|
||||
{ 20,16 }, { 40,48 },
|
||||
{ 61,48 }, { 81,48 }, { 101,48 }, { 122,48 }, { 162,48 }, { 203,48 }, { 244,16 }
|
||||
}, {
|
||||
1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1
|
||||
} };
|
||||
|
||||
#ifdef OLED_ENABLE
|
||||
|
||||
static void render_logo(void) {
|
||||
static const char PROGMEM my_logo[] = {
|
||||
// 'Screenshot 2023-07-21 at 1', 128x32px
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xfe, 0x00, 0x03, 0xc0, 0x00, 0xc0, 0x00, 0x3c, 0x00, 0x0f, 0x1f, 0xf8, 0xe0, 0x00, 0x1f, 0xff,
|
||||
0xff, 0x80, 0x01, 0xc0, 0x00, 0x40, 0x00, 0x38, 0x00, 0x07, 0x1f, 0xf8, 0xe0, 0x00, 0x1f, 0xff,
|
||||
0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0x0f, 0xff,
|
||||
0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0x8f, 0xff,
|
||||
0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0x0f, 0xff,
|
||||
0xfe, 0x1f, 0xf1, 0xc0, 0x03, 0xff, 0x8f, 0xf8, 0xff, 0xc7, 0x1f, 0xf8, 0xe1, 0xc0, 0x1f, 0xff,
|
||||
0xfe, 0x1f, 0xf1, 0xc0, 0x03, 0xff, 0x8f, 0xf8, 0xff, 0xc7, 0x1f, 0xf8, 0xe1, 0xe0, 0x3f, 0xff,
|
||||
0xfe, 0x1f, 0xf1, 0xc3, 0xff, 0xff, 0x8f, 0xf8, 0xff, 0xc7, 0x1f, 0xf8, 0xe1, 0xf0, 0xff, 0xff,
|
||||
0xfe, 0x1f, 0xf1, 0xc3, 0xff, 0xff, 0x8f, 0xf8, 0xff, 0xc7, 0x1f, 0xf8, 0xe1, 0xf8, 0x7f, 0xff,
|
||||
0xfe, 0x1f, 0xf1, 0xc3, 0xff, 0xff, 0x8f, 0xf8, 0xff, 0xc7, 0x1f, 0xf8, 0xe1, 0xf8, 0x7f, 0xff,
|
||||
0xfe, 0x00, 0x01, 0xc0, 0x00, 0x7f, 0x8f, 0xf8, 0x00, 0x07, 0x00, 0x00, 0xe1, 0xfc, 0x3f, 0xff,
|
||||
0xfe, 0x00, 0x03, 0xc0, 0x00, 0xff, 0x8f, 0xfc, 0x00, 0x0f, 0x80, 0x01, 0xe1, 0xfe, 0x1f, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
|
||||
};
|
||||
oled_write_raw_P(my_logo, sizeof(my_logo));
|
||||
}
|
||||
|
||||
bool oled_task_kb(void) {
|
||||
// Defer to the keymap if they want to override
|
||||
|
||||
if(!oled_task_user()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// default keyboard drawing code
|
||||
render_logo();
|
||||
return false;
|
||||
}
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user