Init: Corne-only zmk-config

Extracted from zmk-config-archive (multi-board repo).
Corne 42-key with nice_nano_v2, nice_oled, RGB, ZMK Studio, Javelin steno.
This commit is contained in:
afiqzudinhadi 2026-06-24 17:41:09 +08:00
commit 9d21b8ff1e
35 changed files with 3830 additions and 0 deletions

2
.gitattributes vendored Normal file
View file

@ -0,0 +1,2 @@
*.dtsi linguist-language=C++
*.keymap linguist-language=C++

5
.github/workflows/build.yml vendored Normal file
View file

@ -0,0 +1,5 @@
on: [push, pull_request, workflow_dispatch]
jobs:
build:
uses: zmkfirmware/zmk/.github/workflows/build-user-config.yml@v0.3.0

25
.github/workflows/keymap-drawer.yaml vendored Normal file
View file

@ -0,0 +1,25 @@
# keymap -c config/config_keymap-drawer.yaml parse -c 12 -z config/corne.keymap > keymap-drawer/corne.yaml
# keymap -c config/config_keymap-drawer.yaml draw keymap-drawer/corne.yaml > keymap-drawer/corne.svg
# Example for using the keymap-drawer ZMK user config workflow
name: Draw ZMK keymaps
on:
workflow_dispatch: # can be triggered manually
push: # automatically run on changes to following paths
paths:
- "config/*.keymap"
- "config/config_keymap-drawer.yaml"
- .github/workflows/keymap-drawer.yaml
jobs:
draw:
uses: caksoylar/keymap-drawer/.github/workflows/draw-zmk.yml@main
permissions:
contents: write # allow workflow to commit to the repo
with:
amend_commit: true
keymap_patterns: "config/*.keymap" # path to the keymaps to parse
config_path: "config/config_keymap-drawer.yaml" # config file, ignored if not exists
output_folder: "keymap-drawer" # path to save produced SVG and keymap YAML files
parse_args: "" # map of extra args to pass to `keymap parse`, e.g. "corne:'-l Def Lwr Rse' cradio:''"
draw_args: "" # map of extra args to pass to `keymap draw`, e.g. "corne:'-k corne_rotated' cradio:'-k paroxysm'"

91
.gitignore vendored Normal file
View file

@ -0,0 +1,91 @@
# zmk
zmk/
# sketchybar
sketchybar/dotfiles/
sketchybar/dotfiles
sketchybar/dotfiles/*
# MacOS
.DS_Store
vim-tools_notiz.vim
.DS_Store
./*/.DS_Store
.vscode
# .vimspector.json
push.sh
/test
test/
# c, cpp
*.x
*.d
*.dSYM
*.o
*.out
# firmware build output
*.uf2
*.hex
*.bin
# log
*.log
# cache
*.cache
cache/
# Windows
Thumbs.db
Desktop.ini
# Tags
#TAGS
#!TAGS/
#tags
doc/tags
tags-cn
!tags/
.tags
.tags1
tags.lock
tags.temp
gtags.files
GTAGS
GRTAGS
GPATH
cscope.files
cscope.out
cscope.in.out
cscope.po.out
# Vim
[._]*.s[a-w][a-z]
[._]s[a-w][a-z]
*.un~
Session.vim
.netrwhist
*~
# Test % Tmp
test.*
tmp.*
temp.*
# Java
*.class
# JavaScript
node_modules
# Python
*.pyc
.idea/
/.idea
# build/
__pycache__
# Rust
target/
**/*.rs.bk

21
LICENSE Normal file
View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2020 The ZMK Contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

47
boards/nice_nano.overlay Normal file
View file

@ -0,0 +1,47 @@
#include <dt-bindings/led/led.h>
&pinctrl {
spi3_default: spi3_default {
group1 {
psels = <NRF_PSEL(SPIM_MOSI, 0, 6)>;
};
};
spi3_sleep: spi3_sleep {
group1 {
psels = <NRF_PSEL(SPIM_MOSI, 0, 6)>;
low-power-enable;
};
};
};
&spi3 {
compatible = "nordic,nrf-spim";
status = "okay";
pinctrl-0 = <&spi3_default>;
pinctrl-1 = <&spi3_sleep>;
pinctrl-names = "default", "sleep";
led_strip: ws2812@0 {
compatible = "worldsemi,ws2812-spi";
/* SPI */
reg = <0>; /* ignored, but necessary for SPI bindings */
spi-max-frequency = <4000000>;
/* WS2812 */
chain-length = <10>; /* arbitrary; change at will */
spi-one-frame = <0x70>;
spi-zero-frame = <0x40>;
color-mapping = <LED_COLOR_ID_GREEN LED_COLOR_ID_RED LED_COLOR_ID_BLUE>;
};
};
/ {
chosen {
zmk,underglow = &led_strip;
};
};
// vim: filetype=dts fdm=marker:

View file

@ -0,0 +1,75 @@
#include <dt-bindings/led/led.h>
&pinctrl {
spi3_default: spi3_default {
group1 {
psels = <NRF_PSEL(SPIM_MOSI, 0, 6)>;
};
};
spi3_sleep: spi3_sleep {
group1 {
psels = <NRF_PSEL(SPIM_MOSI, 0, 6)>;
low-power-enable;
};
};
};
&spi3 {
compatible = "nordic,nrf-spim";
status = "okay";
pinctrl-0 = <&spi3_default>;
pinctrl-1 = <&spi3_sleep>;
pinctrl-names = "default", "sleep";
led_strip: ws2812@0 {
compatible = "worldsemi,ws2812-spi";
/* SPI */
reg = <0>; /* ignored, but necessary for SPI bindings */
spi-max-frequency = <4000000>;
/* WS2812 */
chain-length = <10>; /* arbitrary; change at will */
spi-one-frame = <0x70>;
spi-zero-frame = <0x40>;
color-mapping = <LED_COLOR_ID_GREEN LED_COLOR_ID_RED LED_COLOR_ID_BLUE>;
};
};
/ {
chosen {
zmk,underglow = &led_strip;
};
};
/* Override flash size for build testing — actual hardware may differ */
&flash0 {
reg = <0x00000000 DT_SIZE_M(4)>;
partitions {
/delete-node/ partition@0;
/delete-node/ partition@26000;
/delete-node/ partition@ec000;
/delete-node/ partition@f4000;
sd_partition: partition@0 {
reg = <0x00000000 0x00026000>;
};
code_partition: partition@26000 {
reg = <0x00026000 0x003c8000>;
};
storage_partition: partition@3ee000 {
reg = <0x003ee000 0x00008000>;
};
boot_partition: partition@3f6000 {
reg = <0x003f6000 0x0000a000>;
};
};
};
// vim: filetype=dts fdm=marker:

View file

@ -0,0 +1,58 @@
if SHIELD_CORNE_LEFT || SHIELD_CORNE_DONGLE_XIAO || SHIELD_CORNE_DONGLE_PRO_MICRO
config ZMK_KEYBOARD_NAME
default "Corne"
config ZMK_SPLIT_ROLE_CENTRAL
default y
# if SHIELD_CORNE_DONGLE_XIAO || SHIELD_CORNE_DONGLE_PRO_MICRO
# config ZMK_USB
# default y
# endif
endif
if SHIELD_CORNE_LEFT || SHIELD_CORNE_RIGHT || SHIELD_CORNE_LEFT_PERIPHERAL || SHIELD_CORNE_DONGLE_XIAO || SHIELD_CORNE_DONGLE_PRO_MICRO
config ZMK_SPLIT
default y
if ZMK_DISPLAY
config I2C
default y
config SSD1306
default y
if SHIELD_CORNE_DONGLE_XIAO || SHIELD_CORNE_DONGLE_PRO_MICRO
choice ZMK_DISPLAY_WORK_QUEUE
default ZMK_DISPLAY_WORK_QUEUE_DEDICATED
endchoice
endif
endif # ZMK_DISPLAY
if LVGL
config LV_Z_VDB_SIZE
default 64
config LV_DPI_DEF
default 148
config LV_Z_BITS_PER_PIXEL
default 1
choice LV_COLOR_DEPTH
default LV_COLOR_DEPTH_1
endchoice
endif # LVGL
endif

View file

@ -0,0 +1,17 @@
# Copyright (c) 2020 Pete Johanson
# SPDX-License-Identifier: MIT
config SHIELD_CORNE_LEFT
def_bool $(shields_list_contains,corne_left)
config SHIELD_CORNE_RIGHT
def_bool $(shields_list_contains,corne_right)
config SHIELD_CORNE_DONGLE_XIAO
def_bool $(shields_list_contains,corne_dongle_xiao)
config SHIELD_CORNE_LEFT_PERIPHERAL
def_bool $(shields_list_contains,corne_left_peripheral)
config SHIELD_CORNE_DONGLE_PRO_MICRO
def_bool $(shields_list_contains,corne_dongle_pro_micro)

View file

@ -0,0 +1,46 @@
#include <dt-bindings/led/led.h>
&pinctrl {
spi3_default: spi3_default {
group1 {
psels = <NRF_PSEL(SPIM_MOSI, 0, 6)>;
};
};
spi3_sleep: spi3_sleep {
group1 {
psels = <NRF_PSEL(SPIM_MOSI, 0, 6)>;
low-power-enable;
};
};
};
&spi3 {
compatible = "nordic,nrf-spim";
status = "okay";
pinctrl-0 = <&spi3_default>;
pinctrl-1 = <&spi3_sleep>;
pinctrl-names = "default", "sleep";
led_strip: ws2812@0 {
compatible = "worldsemi,ws2812-spi";
/* SPI */
reg = <0>; /* ignored, but necessary for SPI bindings */
spi-max-frequency = <4000000>;
/* WS2812 */
chain-length = <10>; /* arbitrary; change at will */
spi-one-frame = <0x70>;
spi-zero-frame = <0x40>;
color-mapping = <LED_COLOR_ID_GREEN LED_COLOR_ID_RED LED_COLOR_ID_BLUE>;
};
};
/ {
chosen {
zmk,underglow = &led_strip;
};
};

View file

@ -0,0 +1,46 @@
#include <dt-bindings/led/led.h>
&pinctrl {
spi3_default: spi3_default {
group1 {
psels = <NRF_PSEL(SPIM_MOSI, 0, 6)>;
};
};
spi3_sleep: spi3_sleep {
group1 {
psels = <NRF_PSEL(SPIM_MOSI, 0, 6)>;
low-power-enable;
};
};
};
&spi3 {
compatible = "nordic,nrf-spim";
status = "okay";
pinctrl-0 = <&spi3_default>;
pinctrl-1 = <&spi3_sleep>;
pinctrl-names = "default", "sleep";
led_strip: ws2812@0 {
compatible = "worldsemi,ws2812-spi";
/* SPI */
reg = <0>; /* ignored, but necessary for SPI bindings */
spi-max-frequency = <4000000>;
/* WS2812 */
chain-length = <10>; /* arbitrary; change at will */
spi-one-frame = <0x70>;
spi-zero-frame = <0x40>;
color-mapping = <LED_COLOR_ID_GREEN LED_COLOR_ID_RED LED_COLOR_ID_BLUE>;
};
};
/ {
chosen {
zmk,underglow = &led_strip;
};
};

View file

@ -0,0 +1,6 @@
# Uncomment the following lines to enable the Corne RGB Underglow
# CONFIG_ZMK_RGB_UNDERGLOW=y
# CONFIG_WS2812_STRIP=y
# Uncomment the following line to enable the Corne OLED Display
# CONFIG_ZMK_DISPLAY=y

View file

@ -0,0 +1,94 @@
/*
* Copyright (c) 2020 Pete Johanson
*
* SPDX-License-Identifier: MIT
*/
#include <dt-bindings/zmk/matrix_transform.h>
#include <layouts/foostan/corne/5column.dtsi>
#include <layouts/foostan/corne/6column.dtsi>
&foostan_corne_6col_layout {
transform = <&default_transform>;
};
&foostan_corne_5col_layout {
transform = <&five_column_transform>;
};
/ {
chosen {
zephyr,display = &oled;
zmk,kscan = &kscan0;
zmk,physical-layout = &foostan_corne_6col_layout;
};
default_transform: keymap_transform_0 {
compatible = "zmk,matrix-transform";
columns = <12>;
rows = <4>;
// | SW1 | SW2 | SW3 | SW4 | SW5 | SW6 | | SW6 | SW5 | SW4 | SW3 | SW2 | SW1 |
// | SW7 | SW8 | SW9 | SW10 | SW11 | SW12 | | SW12 | SW11 | SW10 | SW9 | SW8 | SW7 |
// | SW13 | SW14 | SW15 | SW16 | SW17 | SW18 | | SW18 | SW17 | SW16 | SW15 | SW14 | SW13 |
// | SW19 | SW20 | SW21 | | SW21 | SW20 | SW19 |
map = <
RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,6) RC(0,7) RC(0,8) RC(0,9) RC(0,10) RC(0,11)
RC(1,0) RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(1,6) RC(1,7) RC(1,8) RC(1,9) RC(1,10) RC(1,11)
RC(2,0) RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(2,6) RC(2,7) RC(2,8) RC(2,9) RC(2,10) RC(2,11)
RC(3,3) RC(3,4) RC(3,5) RC(3,6) RC(3,7) RC(3,8)
>;
};
five_column_transform: keymap_transform_1 {
compatible = "zmk,matrix-transform";
columns = <10>;
rows = <4>;
// | SW2 | SW3 | SW4 | SW5 | SW6 | | SW6 | SW5 | SW4 | SW3 | SW2 |
// | SW8 | SW9 | SW10 | SW11 | SW12 | | SW12 | SW11 | SW10 | SW9 | SW8 |
// | SW14 | SW15 | SW16 | SW17 | SW18 | | SW18 | SW17 | SW16 | SW15 | SW14 |
// | SW19 | SW20 | SW21 | | SW21 | SW20 | SW19 |
map = <
RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,6) RC(0,7) RC(0,8) RC(0,9) RC(0,10)
RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(1,6) RC(1,7) RC(1,8) RC(1,9) RC(1,10)
RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(2,6) RC(2,7) RC(2,8) RC(2,9) RC(2,10)
RC(3,3) RC(3,4) RC(3,5) RC(3,6) RC(3,7) RC(3,8)
>;
};
kscan0: kscan {
compatible = "zmk,kscan-gpio-matrix";
wakeup-source;
diode-direction = "col2row";
row-gpios
= <&pro_micro 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
, <&pro_micro 5 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
, <&pro_micro 6 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
, <&pro_micro 7 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
;
};
// TODO: per-key RGB node(s)?
};
&pro_micro_i2c {
status = "okay";
oled: ssd1306@3c {
compatible = "solomon,ssd1306fb";
reg = <0x3c>;
width = <128>;
height = <32>;
segment-offset = <0>;
page-offset = <0>;
display-offset = <0>;
multiplex-ratio = <31>;
segment-remap;
com-invdir;
com-sequential;
inversion-on;
prechargep = <0x22>;
};
};

View file

@ -0,0 +1,58 @@
// #include "../../../corne.keymap"
/*
* Copyright (c) 2020 The ZMK Contributors
*
* SPDX-License-Identifier: MIT
*/
#include <behaviors.dtsi>
#include <dt-bindings/zmk/keys.h>
#include <dt-bindings/zmk/bt.h>
/ {
keymap {
compatible = "zmk,keymap";
default_layer {
// -----------------------------------------------------------------------------------------
// | TAB | Q | W | E | R | T | | Y | U | I | O | P | BKSP |
// | CTRL | A | S | D | F | G | | H | J | K | L | ; | ' |
// | SHFT | Z | X | C | V | B | | N | M | , | . | / | ESC |
// | GUI | LWR | SPC | | ENT | RSE | ALT |
bindings = <
&kp TAB &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp BSPC
&kp LCTRL &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SEMI &kp SQT
&kp LSHFT &kp Z &kp X &kp C &kp V &kp B &kp N &kp M &kp COMMA &kp DOT &kp FSLH &kp ESC
&kp LGUI &mo 1 &kp SPACE &kp RET &mo 2 &kp RALT
>;
};
lower_layer {
// -----------------------------------------------------------------------------------------
// | TAB | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BKSP |
// | BTCLR| BT1 | BT2 | BT3 | BT4 | BT5 | | LFT | DWN | UP | RGT | | |
// | SHFT | | | | | | | | | | | | |
// | GUI | | SPC | | ENT | | ALT |
bindings = <
&kp TAB &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp N6 &kp N7 &kp N8 &kp N9 &kp N0 &kp BSPC
&bt BT_CLR &bt BT_SEL 0 &bt BT_SEL 1 &bt BT_SEL 2 &bt BT_SEL 3 &bt BT_SEL 4 &kp LEFT &kp DOWN &kp UP &kp RIGHT &trans &trans
&kp LSHFT &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans
&kp LGUI &trans &kp SPACE &kp RET &trans &kp RALT
>;
};
raise_layer {
// -----------------------------------------------------------------------------------------
// | TAB | ! | @ | # | $ | % | | ^ | & | * | ( | ) | BKSP |
// | CTRL | | | | | | | - | = | [ | ] | \ | ` |
// | SHFT | | | | | | | _ | + | { | } | "|" | ~ |
// | GUI | | SPC | | ENT | | ALT |
bindings = <
&kp TAB &kp EXCL &kp AT &kp HASH &kp DLLR &kp PRCNT &kp CARET &kp AMPS &kp ASTRK &kp LPAR &kp RPAR &kp BSPC
&kp LCTRL &trans &trans &trans &trans &trans &kp MINUS &kp EQUAL &kp LBKT &kp RBKT &kp BSLH &kp GRAVE
&kp LSHFT &trans &trans &trans &trans &trans &kp UNDER &kp PLUS &kp LBRC &kp RBRC &kp PIPE &kp TILDE
&kp LGUI &trans &kp SPACE &kp RET &trans &kp RALT
>;
};
};
};

View file

@ -0,0 +1,18 @@
file_format: "1"
id: corne
name: Corne
type: shield
url: https://github.com/foostan/crkbd/
requires: [pro_micro]
exposes: [i2c_oled]
features:
- keys
- display
- underglow
- studio
siblings:
- corne_left
- corne_right
- corne_left_peripheral
- corne_dongle_xiao
- corne_dongle_pro_micro

View file

@ -0,0 +1,30 @@
# MC:
# compatible con todas las versiones de nrf52840 (pro_micro):
# - nice_nano (no probado)
# - nice_nano_v2 (probado)
# - nice_nano_v2 (super mini -> nice_nano_v2 clon) (probado)
# - nrfmicro_11 (no probado)
# - nrfmicro_11_flipped (no probado)
# - nrfmicro_13 (no probado)
# - puchi_ble_v1 (probado)
### DONGLE MODE
CONFIG_ZMK_SPLIT_BLE_CENTRAL_PERIPHERALS=2
### DONGLE OPTIONS
# 3 profiles (n+2)
CONFIG_BT_MAX_CONN=5
CONFIG_BT_MAX_PAIRED=5
### DISPLAY DONGLE OPTIONS
CONFIG_ZMK_DISPLAY=y
CONFIG_BT_BAS=n
CONFIG_ZMK_SPLIT_BLE_CENTRAL_BATTERY_LEVEL_FETCHING=y
### POWER OPTIONS
# La unidad del intervalo del informe de energía de la batería es segundos
CONFIG_ZMK_BATTERY_REPORT_INTERVAL=60
### DEBUG OPTIONS
# CONFIG_ZMK_USB_LOGGING=y
# CONFIG_LOG_PROCESS_THREAD_STARTUP_DELAY_MS=8000

View file

@ -0,0 +1,182 @@
/*
* Copyright (c) 2020 Pete Johanson
*
* SPDX-License-Identifier: MIT
*/
#include <dt-bindings/zmk/matrix_transform.h>
#include <layouts/foostan/corne/5column.dtsi>
#include <layouts/foostan/corne/6column.dtsi>
&foostan_corne_6col_layout {
transform = <&default_transform>;
};
&foostan_corne_5col_layout {
transform = <&five_column_transform>;
};
/ {
chosen {
zephyr,display = &oled;
zmk,kscan = &mock_kscan;
zmk,physical-layout = &foostan_corne_6col_layout;
};
default_transform: keymap_transform_0 {
compatible = "zmk,matrix-transform";
columns = <12>;
rows = <4>;
// | SW1 | SW2 | SW3 | SW4 | SW5 | SW6 | | SW6 | SW5 | SW4 | SW3 | SW2 | SW1 |
// | SW7 | SW8 | SW9 | SW10 | SW11 | SW12 | | SW12 | SW11 | SW10 | SW9 | SW8 | SW7 |
// | SW13 | SW14 | SW15 | SW16 | SW17 | SW18 | | SW18 | SW17 | SW16 | SW15 | SW14 | SW13 |
// | SW19 | SW20 | SW21 | | SW21 | SW20 | SW19 |
map = <
RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,6) RC(0,7) RC(0,8) RC(0,9) RC(0,10) RC(0,11)
RC(1,0) RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(1,6) RC(1,7) RC(1,8) RC(1,9) RC(1,10) RC(1,11)
RC(2,0) RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(2,6) RC(2,7) RC(2,8) RC(2,9) RC(2,10) RC(2,11)
RC(3,3) RC(3,4) RC(3,5) RC(3,6) RC(3,7) RC(3,8)
>;
};
five_column_transform: keymap_transform_1 {
compatible = "zmk,matrix-transform";
columns = <10>;
rows = <4>;
// | SW2 | SW3 | SW4 | SW5 | SW6 | | SW6 | SW5 | SW4 | SW3 | SW2 |
// | SW8 | SW9 | SW10 | SW11 | SW12 | | SW12 | SW11 | SW10 | SW9 | SW8 |
// | SW14 | SW15 | SW16 | SW17 | SW18 | | SW18 | SW17 | SW16 | SW15 | SW14 |
// | SW19 | SW20 | SW21 | | SW21 | SW20 | SW19 |
map = <
RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,6) RC(0,7) RC(0,8) RC(0,9) RC(0,10)
RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(1,6) RC(1,7) RC(1,8) RC(1,9) RC(1,10)
RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(2,6) RC(2,7) RC(2,8) RC(2,9) RC(2,10)
RC(3,3) RC(3,4) RC(3,5) RC(3,6) RC(3,7) RC(3,8)
>;
};
/*
kscan0: kscan {
compatible = "zmk,kscan-gpio-direct";
input-gpios
= <&xiao_d 0 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&xiao_d 1 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&xiao_d 2 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&xiao_d 3 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
;
};
*/
mock_kscan: kscan_0 {
compatible = "zmk,kscan-mock";
// wakeup-source;
columns = <0>;
rows = <0>;
events = <0>;
};
// TODO: per-key RGB node(s)?
};
&pro_micro_i2c {
status = "okay";
oled: ssd1306@3c {
compatible = "solomon,ssd1306fb";
reg = <0x3c>;
width = <128>;
height = <64>;
segment-offset = <0>;
page-offset = <0>;
display-offset = <0>;
multiplex-ratio = <63>;
segment-remap;
com-invdir;
inversion-on;
prechargep = <0x22>;
};
};
/*
// 128x64 OLED
&pro_micro_i2c {
status = "okay";
oled: ssd1306@3c {
compatible = "solomon,ssd1306fb";
reg = <0x3c>;
width = <128>;
height = <64>;
segment-offset = <0>;
page-offset = <0>;
display-offset = <0>;
multiplex-ratio = <63>;
segment-remap;
com-invdir;
inversion-on;
prechargep = <0x22>;
};
};
// 128x32 OLED
&pro_micro_i2c {
status = "okay";
oled: ssd1306@3c {
compatible = "solomon,ssd1306fb";
reg = <0x3c>;
width = <128>;
height = <32>;
segment-offset = <0>;
page-offset = <0>;
display-offset = <0>;
multiplex-ratio = <31>;
segment-remap;
com-invdir;
com-sequential;
inversion-on;
prechargep = <0x22>;
};
};
// 128x64 OLED model sh1106
&pro_micro_i2c {
status = "okay";
oled: sh1106@3c {
compatible = "sinowealth,sh1106";
reg = <0x3c>;
width = <129>;
height = <64>;
segment-offset = <1>;
page-offset = <0>;
display-offset = <0>;
multiplex-ratio = <63>;
segment-remap;
com-invdir;
inversion-on;
prechargep = <0x22>;
};
};
// 128x128 OLED model sh1107
&pro_micro_i2c {
status = "okay";
oled: sh1106@3c {
compatible = "sinowealth,sh1106";
reg = <0x3c>;
width = <120>;
height = <128>;
segment-offset = <0>;
page-offset = <0>;
display-offset = <0>;
multiplex-ratio = <119>;
segment-remap;
com-invdir;
inversion-on;
prechargep = <0x22>;
};
};
*/
// vim: filetype=dts fdm=marker:

View file

@ -0,0 +1,24 @@
# MC:
# compatible con todas las versiones de nrf52840 (xiao):
# - seeeduino_xiao_ble (probado)
### DONGLE MODE
CONFIG_ZMK_SPLIT_BLE_CENTRAL_PERIPHERALS=2
### DONGLE OPTIONS
# 3 profiles (n+2)
CONFIG_BT_MAX_CONN=5
CONFIG_BT_MAX_PAIRED=5
### DISPLAY DONGLE OPTIONS
CONFIG_ZMK_DISPLAY=y
CONFIG_BT_BAS=n
CONFIG_ZMK_SPLIT_BLE_CENTRAL_BATTERY_LEVEL_FETCHING=y
### POWER OPTIONS
# La unidad del intervalo del informe de energía de la batería es segundos
CONFIG_ZMK_BATTERY_REPORT_INTERVAL=60
### DEBUG OPTIONS
# CONFIG_ZMK_USB_LOGGING=y
# CONFIG_LOG_PROCESS_THREAD_STARTUP_DELAY_MS=8000

View file

@ -0,0 +1,220 @@
/*
* Copyright (c) 2020 Pete Johanson
*
* SPDX-License-Identifier: MIT
*/
#include <dt-bindings/zmk/matrix_transform.h>
#include <layouts/foostan/corne/5column.dtsi>
#include <layouts/foostan/corne/6column.dtsi>
&foostan_corne_6col_layout {
transform = <&default_transform>;
};
&foostan_corne_5col_layout {
transform = <&five_column_transform>;
};
/ {
chosen {
zephyr,display = &oled;
zmk,kscan = &mock_kscan;
zmk,physical-layout = &foostan_corne_6col_layout;
};
default_transform: keymap_transform_0 {
compatible = "zmk,matrix-transform";
columns = <12>;
rows = <4>;
// | SW1 | SW2 | SW3 | SW4 | SW5 | SW6 | | SW6 | SW5 | SW4 | SW3 | SW2 | SW1 |
// | SW7 | SW8 | SW9 | SW10 | SW11 | SW12 | | SW12 | SW11 | SW10 | SW9 | SW8 | SW7 |
// | SW13 | SW14 | SW15 | SW16 | SW17 | SW18 | | SW18 | SW17 | SW16 | SW15 | SW14 | SW13 |
// | SW19 | SW20 | SW21 | | SW21 | SW20 | SW19 |
map = <
RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,6) RC(0,7) RC(0,8) RC(0,9) RC(0,10) RC(0,11)
RC(1,0) RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(1,6) RC(1,7) RC(1,8) RC(1,9) RC(1,10) RC(1,11)
RC(2,0) RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(2,6) RC(2,7) RC(2,8) RC(2,9) RC(2,10) RC(2,11)
RC(3,3) RC(3,4) RC(3,5) RC(3,6) RC(3,7) RC(3,8)
>;
};
five_column_transform: keymap_transform_1 {
compatible = "zmk,matrix-transform";
columns = <10>;
rows = <4>;
// | SW2 | SW3 | SW4 | SW5 | SW6 | | SW6 | SW5 | SW4 | SW3 | SW2 |
// | SW8 | SW9 | SW10 | SW11 | SW12 | | SW12 | SW11 | SW10 | SW9 | SW8 |
// | SW14 | SW15 | SW16 | SW17 | SW18 | | SW18 | SW17 | SW16 | SW15 | SW14 |
// | SW19 | SW20 | SW21 | | SW21 | SW20 | SW19 |
map = <
RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,6) RC(0,7) RC(0,8) RC(0,9) RC(0,10)
RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(1,6) RC(1,7) RC(1,8) RC(1,9) RC(1,10)
RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(2,6) RC(2,7) RC(2,8) RC(2,9) RC(2,10)
RC(3,3) RC(3,4) RC(3,5) RC(3,6) RC(3,7) RC(3,8)
>;
};
/*
kscan0: kscan {
compatible = "zmk,kscan-gpio-direct";
input-gpios
= <&xiao_d 0 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&xiao_d 1 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&xiao_d 2 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&xiao_d 3 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
;
};
*/
mock_kscan: kscan_0 {
compatible = "zmk,kscan-mock";
// wakeup-source;
columns = <0>;
rows = <0>;
events = <0>;
};
// TODO: per-key RGB node(s)?
};
// 128x64 OLED
&xiao_i2c {
status = "okay";
oled: ssd1306@3c {
compatible = "solomon,ssd1306fb";
reg = <0x3c>;
width = <128>;
height = <64>;
segment-offset = <0>;
page-offset = <0>;
display-offset = <0>;
multiplex-ratio = <63>;
segment-remap;
com-invdir;
inversion-on;
prechargep = <0x22>;
};
};
/*
// 128x64 OLED
&xiao_i2c {
status = "okay";
oled: ssd1306@3c {
compatible = "solomon,ssd1306fb";
reg = <0x3c>;
width = <128>;
height = <64>;
segment-offset = <0>;
page-offset = <0>;
display-offset = <0>;
multiplex-ratio = <63>;
segment-remap;
com-invdir;
inversion-on;
prechargep = <0x22>;
};
};
// 128x32 OLED
&xiao_i2c {
status = "okay";
oled: ssd1306@3c {
compatible = "solomon,ssd1306fb";
reg = <0x3c>;
width = <128>;
height = <32>;
segment-offset = <0>;
page-offset = <0>;
display-offset = <0>;
multiplex-ratio = <31>;
segment-remap;
com-invdir;
com-sequential;
inversion-on;
prechargep = <0x22>;
};
};
// 128x64 OLED model sh1106
&xiao_i2c {
status = "okay";
oled: sh1106@3c {
compatible = "sinowealth,sh1106";
reg = <0x3c>;
width = <129>;
height = <64>;
segment-offset = <1>;
page-offset = <0>;
display-offset = <0>;
multiplex-ratio = <63>;
segment-remap;
com-invdir;
inversion-on;
prechargep = <0x22>;
};
};
// 128x128 OLED model sh1107
&xiao_i2c {
status = "okay";
oled: sh1106@3c {
compatible = "sinowealth,sh1106";
reg = <0x3c>;
width = <120>;
height = <128>;
segment-offset = <0>;
page-offset = <0>;
display-offset = <0>;
multiplex-ratio = <119>;
segment-remap;
com-invdir;
inversion-on;
prechargep = <0x22>;
};
};
// ################# niceview working fine START #################
// doc: https://wiki.seeedstudio.com/XIAO-SAMD21-Zephyr-RTOS/
// @bravekarma nice Discord server
// The &gpioX Y and NRF_PSEL(..., X, Y) uses the PX.Y notation (underlying nRF
// pin numbers), &xiao_d x uses the unified pinout Dx
&pinctrl {
spi0_default: spi0_default {
group1 {
psels = <NRF_PSEL(SPIM_SCK, 1, 13)>,
<NRF_PSEL(SPIM_MOSI, 1, 15)>,
<NRF_PSEL(SPIM_MISO, 1, 14)>;
};
};
spi0_sleep: spi0_sleep {
group1 {
psels = <NRF_PSEL(SPIM_SCK, 1, 13)>,
<NRF_PSEL(SPIM_MOSI, 1, 15)>,
<NRF_PSEL(SPIM_MISO, 1, 14)>;
low-power-enable;
};
};
};
nice_view_spi: &spi0 {
compatible = "nordic,nrf-spim";
pinctrl-0 = <&spi0_default>;
pinctrl-1 = <&spi0_sleep>;
pinctrl-names = "default", "sleep";
cs-gpios = <&xiao_d 6 GPIO_ACTIVE_HIGH>; // Pin D6 as CS
};
&xiao_i2c {
status = "disabled";
};
// ################# niceview working fine END #################
*/
// vim: filetype=dts fdm=marker:

View file

View file

@ -0,0 +1,20 @@
/*
* Copyright (c) 2020 Pete Johanson
*
* SPDX-License-Identifier: MIT
*/
#include "corne.dtsi"
&kscan0 {
col-gpios
= <&pro_micro 21 GPIO_ACTIVE_HIGH>
, <&pro_micro 20 GPIO_ACTIVE_HIGH>
, <&pro_micro 19 GPIO_ACTIVE_HIGH>
, <&pro_micro 18 GPIO_ACTIVE_HIGH>
, <&pro_micro 15 GPIO_ACTIVE_HIGH>
, <&pro_micro 14 GPIO_ACTIVE_HIGH>
;
};
// vim: filetype=dts fdm=marker:

View file

@ -0,0 +1,20 @@
/*
* Copyright (c) 2020 Pete Johanson
*
* SPDX-License-Identifier: MIT
*/
#include "corne.dtsi"
&kscan0 {
col-gpios
= <&pro_micro 21 GPIO_ACTIVE_HIGH>
, <&pro_micro 20 GPIO_ACTIVE_HIGH>
, <&pro_micro 19 GPIO_ACTIVE_HIGH>
, <&pro_micro 18 GPIO_ACTIVE_HIGH>
, <&pro_micro 15 GPIO_ACTIVE_HIGH>
, <&pro_micro 14 GPIO_ACTIVE_HIGH>
;
};
// vim: filetype=dts fdm=marker:

View file

View file

@ -0,0 +1,28 @@
/*
* Copyright (c) 2020 Pete Johanson
*
* SPDX-License-Identifier: MIT
*/
#include "corne.dtsi"
&default_transform {
col-offset = <6>;
};
&five_column_transform {
col-offset = <6>;
};
&kscan0 {
col-gpios
= <&pro_micro 14 GPIO_ACTIVE_HIGH>
, <&pro_micro 15 GPIO_ACTIVE_HIGH>
, <&pro_micro 18 GPIO_ACTIVE_HIGH>
, <&pro_micro 19 GPIO_ACTIVE_HIGH>
, <&pro_micro 20 GPIO_ACTIVE_HIGH>
, <&pro_micro 21 GPIO_ACTIVE_HIGH>
;
};
// vim: filetype=dts fdm=marker:

20
build.yaml Normal file
View file

@ -0,0 +1,20 @@
---
include:
### CORNE START ###
- board: nice_nano_v2
shield: corne_left nice_oled
artifact-name: nice_corne_left_oled_rgb
snippet: rgb-config studio-rpc-usb-uart
- board: nice_nano_v2
shield: corne_right nice_oled
cmake-args: -DCONFIG_NICE_OLED_WIDGET_ANIMATION_PERIPHERAL_CAT=n -DCONFIG_NICE_OLED_WIDGET_ANIMATION_PERIPHERAL_KM=y
artifact-name: nice_corne_right_oled_rgb
snippet: rgb-config
### CORNE END ###
### SETTINGS_RESET START ###
- board: nice_nano_v2
shield: settings_reset
artifact-name: nice_settings_reset
### SETTINGS_RESET END ###

View file

@ -0,0 +1,433 @@
# configuration for https://github.com/caksoylar/keymap-drawer
draw_config:
footer_text: 'Keymap View: <a href="https://github.com/caksoylar/keymap-drawer">keymap-drawer</a>'
# dark_mode: auto
n_columns: 1
# draw_key_sides: true # draw a square in the middle of the keys
key_w: 60.0
key_h: 56.0
split_gap: 30.0
combo_w: 28.0
combo_h: 26.0
key_rx: 6.0
key_ry: 6.0
inner_pad_w: 2.0
inner_pad_h: 2.0
outer_pad_w: 40.0
outer_pad_h: 56.0
line_spacing: 1.2
arc_radius: 6.0
append_colon_to_layer_header: true
small_pad: 2.0
svg_extra_style: |
/* For default sytles, see https://github.com/caksoylar/keymap-drawer/blob/main/keymap_drawer/config.py#L85 */
svg.keymap {
font-family: Ubuntu Mono, Inconsolata, Consolas, Liberation Mono, Menlo, monospace;
font-size: 16px;
font-weight: bold;
text-rendering: optimizeLegibility;
}
/* Color accent for held keys
red = #f00
green = #0f0
blue = #00f
yellow = #ff0
cyan = #0ff
magenta = #f0f
white = #fff
black = #000
grey = #888
light grey = #ccc
#ffc
*/
rect.held, rect.combo.held {
fill: #f00;
}
/* Technique borrowed and extended from https://github.com/englmaxi/zmk-config/blob/master/keymap-drawer/config.yaml */
.sym_sub_text.tap {
translate: -5px 2px;
font-size: 20px;
}
.sym_sub_text.shifted {
translate: 10px 13px;
font-size: 10px;
opacity: 1.0;
}
.combo.sym_sub_text.tap {
translate: -1px 1px;
}
.combo.sym_sub_text.shifted {
translate: 7px 5px;
font-size: 10px;
opacity: 1.0;
}
/* Toggle */
.toggle.shifted {
translate: -10px 12px;
}
.toggle.hold {
translate: 13px -23px;
}
/* Variant for tap-dances */
.tap_dance.tap {
translate: -7px 0px;
font-size: 12px;
}
.tap_dance.shifted {
translate: 7px 17px;
font-size: 12px;
opacity: 1.0;
}
/* Variant for symbol next to symbol */
.sym_by_sym.tap {
translate: -6px 0px;
}
.sym_by_sym.shifted {
translate: 10px 12px;
opacity: 1.0;
}
.combo.sym_by_sym.tap {
translate: -35px 0px;
}
.combo.sym_by_sym.shifted {
translate: 35px 20px;
opacity: 1.0;
}
.combo.sym_by_sym.hold {
visibility: hidden;
}
/* hide hold box for combo sym_by_sym */
.combo.sym_by_sym.hold > path[stroke="none"][fill="none"] {
visibility: hidden;
}
shrink_wide_legends: 6
glyph_tap_size: 18
glyph_hold_size: 15
glyph_shifted_size: 15
glyphs: {}
glyph_urls:
tabler: https://unpkg.com/@tabler/icons/icons/outline/{}.svg
tablerf: https://unpkg.com/@tabler/icons/icons/filled/{}.svg
mdi: https://raw.githubusercontent.com/Templarian/MaterialDesign-SVG/master/svg/{}.svg
mdil: https://raw.githubusercontent.com/Pictogrammers/MaterialDesignLight/master/svg/{}.svg
material: https://fonts.gstatic.com/s/i/short-term/release/materialsymbolsoutlined/{}/default/48px.svg
use_local_cache: true
parse_config:
raw_binding_map:
'&sys_reset': Reset
'&bootloader': Boot
'&swapper': Win Next
'&caps_word': Caps Word
'&inv_qm': ¿
'&kp LC(LG(LEFT))': Desk Left
'&kp LC(LG(RIGHT))': Desk Right
'&kp LC(TAB)': Tab Right
'&kp LC(LS(TAB))': Tab Left
'&kp LA(F4)': Win Close
'&kp LC(F4)': Tab Close
'&kp LS(TAB)': Win Prev
'&kp LS(INS)': Paste
'&kp LG(L)': Lock
'&out OUT_USB': Out USB
'&out OUT_BLE': Out BLE
'&bt BT_SEL 0': BT 1
'&bt BT_SEL 1': BT 2
'&bt BT_SEL 2': BT 3
'&bt BT_SEL 3': BT 4
'&bt BT_SEL 4': BT 5
# Display
'DISPLAY_UP': {t: $$mdi:television-classic$$, h: $$mdi:arrow-up$$, type: tap_dance}
'DISPLAY_DOWN': {t: $$mdi:television-classic$$, h: $$mdi:arrow-down$$, type: tap_dance}
'DISPLAY_LEFT': {t: $$mdi:television-classic$$, h: $$mdi:arrow-left$$, type: tap_dance}
'DISPLAY_RIGHT': {t: $$mdi:television-classic$$, h: $$mdi:arrow-right$$, type: tap_dance}
'DISPLAY_SPACE': {t: $$mdi:television-classic$$, h: $$mdi:keyboard-space$$, type: tap_dance}
# Rgb
'&rgb_ug RGB_TOG': {t: $$mdi:led-on$$, h: $$mdi:toggle-switch$$, s: $$mdi:led-outline$$, type: toggle}
'&rgb_ug RGB_VAI': {t: $$mdi:led-on$$, s: $$tabler:brightness-up$$, type: sym_by_sym}
'&rgb_ug RGB_VAD': {t: $$mdi:led-outline$$, s: $$tabler:brightness-down$$, type: sym_by_sym}
'&rgb_ug RGB_BRD': {t: $$mdi:led-on$$, s: $$tabler:brightness-up$$, type: sym_by_sym}
'&rgb_ug RGB_BRI': {t: $$mdi:led-outline$$, s: $$tabler:brightness-down$$, type: sym_by_sym}
'&rgb_ug RGB_SAI': {t: $$mdi:led-outline$$, s: $$mdi:eyedropper$$, type: sym_by_sym}
'&rgb_ug RGB_SAD': {t: $$mdi:led-on$$, s: $$mdi:eyedropper$$, type: sym_by_sym}
'&rgb_ug RGB_HUI': {t: $$mdi:led-on$$, s: $$mdi:palette$$, type: sym_by_sym}
'&rgb_ug RGB_HUD': {t: $$mdi:led-outline$$, s: $$mdi:palette$$, type: sym_by_sym}
'&rgb_ug RGB_RMOD': {t: $$mdi:led-on$$, h: $$mdi:page-previous-outline$$, type: tap_dance}
'&rgb_ug RGB_MOD': {t: $$mdi:led-on$$, h: $$mdi:page-next-outline$$, type: tap_dance}
'&rgb_ug RGB_EFF': {t: $$mdi:led-on$$, h: $$mdi:page-previous-outline$$, type: tap_dance}
'&rgb_ug RGB_EFR': {t: $$mdi:led-on$$, h: $$mdi:page-next-outline$$, type: tap_dance}
'&rgb_ug RGB_SPI': {t: $$mdi:led-on$$, h: $$mdi:speedometer$$, type: sym_by_sym}
'&rgb_ug RGB_SPD': {t: $$mdi:led-on$$, h: $$mdi:speedometer-slow$$, type: sym_by_sym}
'&rgb_ug RGB_UP': {t: $$mdi:led-on$$, h: $$mdi:arrow-up$$, type: tap_dance}
'&rgb_ug RGB_DOWN': {t: $$mdi:led-on$$, h: $$mdi:arrow-down$$, type: tap_dance}
'&rgb_ug RGB_LEFT': {t: $$mdi:led-on$$, h: $$mdi:arrow-left$$, type: tap_dance}
'&rgb_ug RGB_RIGHT': {t: $$mdi:led-on$$, h: $$mdi:arrow-right$$, type: tap_dance}
'&rgb_ug RGB_SPACE': {t: $$mdi:led-on$$, h: $$mdi:keyboard-space$$, type: tap_dance}
'&rgb_ug RGB_COLOR_HSB(0,0,100)': {t: $$mdi:led-on$$, h: $$mdi:palette$$, type: tap_dance}
'&rgb_ug RGB_COLOR_HSB(224,100,100)': {t: $$mdi:led-on$$, h: $$mdi:palette$$, type: tap_dance}
# Mouse
'U_WH_L': {t: $$mdi:mouse-outline$$, h: $$mdi:arrow-left$$, type: tap_dance}
'U_WH_R': {t: $$mdi:mouse-outline$$, h: $$mdi:arrow-right$$, type: tap_dance}
'U_WH_U': {t: $$mdi:mouse-outline$$, h: $$mdi:arrow-up$$, type: tap_dance}
'U_WH_D': {t: $$mdi:mouse-outline$$, h: $$mdi:arrow-down$$, type: tap_dance}
'U_MS_L': {t: $$mdi:mouse$$, h: $$mdi:arrow-left$$, type: tap_dance}
'U_MS_D': {t: $$mdi:mouse$$, h: $$mdi:arrow-down$$, type: tap_dance}
'U_MS_R': {t: $$mdi:mouse$$, h: $$mdi:arrow-right$$, type: tap_dance}
'U_MS_U': {t: $$mdi:mouse$$, h: $$mdi:arrow-up$$, type: tap_dance}
'CLICK_LEFT': $$mdi:cursor-default-click$$
'CLICK_RIGHT': $$mdi:cursor-default-click-outline$$
'CLICK_MIDDLE': $$mdi:cursor-default-click-outline$$
# '&mmv MOVE_UP': Mouse ↑
# '&mmv MOVE_DOWN': Mouse ↓
# '&mmv MOVE_LEFT': Mouse ←
# '&mmv MOVE_RIGHT': Mouse →
# '&msc SCRL_UP': Scroll ↑
# '&msc SCRL_DOWN': Scroll ↓
# '&msc SCRL_LEFT': Scroll ←
# '&msc SCRL_RIGHT': Scroll →
# '&mkp MCLK': Middle Click
# '&mkp MB4': Back Click
# '&mkp MB5': Forward Click
# layers
'MEDIA_ESC': {t: $$mdi:keyboard-esc$$, h: $$mdi:music-note$$}
'MOUSE_TAB': {t: $$mdi:keyboard-tab$$, h: $$mdi:mouse$$}
'NUMBER_SPACE': {t: $$mdi:keyboard-space$$, h: $$mdi:numeric$$}
'&mo _FUNCTION': $$mdi:function-variant$$
'&mo _CONFIG': $$mdi:cog$$
'&mo _LOCK': $$mdi:lock$$
'&mo _SYMBOL': $$mdi:symbol$$
'&mo _DISPLAY': $$mdi:television-classic$$
'&mo _OLED': $$mdi:television-classic$$
'&mo _LINUX': $$mdi:linux$$
'&mo _RGB': $$mdi:led-on$$
'DE_CAPS': $$mdi:keyboard-caps$$
'TAB': $$mdi:keyboard-tab$$
'&mt LSHFT COMMA': {t: $$mdi:google-downasaur$$, h: $$mdi:apple-keyboard-shift$$, type: tap_dance}
# CONTROL CMD/WINDOWS SHIFT ALT/META/OPTION
'&kp LSHFT': $$mdi:apple-keyboard-shift$$
'&kp LCTRL': $$mdi:apple-keyboard-control$$
'&kp RCTRL': $$mdi:apple-keyboard-control$$
'&kp LGUI': $$mdi:apple-keyboard-command$$
'&kp RGUI': $$mdi:apple-keyboard-command$$
'&kp LALT': $$mdi:apple-keyboard-option$$
'&kp RALT': $$mdi:apple-keyboard-option$$
'&kp RSHFT': $$mdi:apple-keyboard-shift$$
'&kp BSPC': $$mdi:backspace-outline$$
qmk_keycode_map:
XXXXXXX: ''
'NO': ''
MINUS: '-'
MINS: '-'
EQUAL: '='
EQL: '='
LEFT_BRACKET: '['
LBRC: '['
RIGHT_BRACKET: ']'
RBRC: ']'
BACKSLASH: \
BSLS: \
NONUS_HASH: '#'
NUHS: '#'
SEMICOLON: ;
SCLN: ;
QUOTE: ''''
QUOT: ''''
GRAVE: '`'
GRV: '`'
COMMA: ','
COMM: ','
DOT: .
SLASH: /
SLSH: /
TILDE: '~'
TILD: '~'
EXCLAIM: '!'
EXLM: '!'
AT: '@'
HASH: '#'
DOLLAR: $
DLR: $
PERCENT: '%'
PERC: '%'
CIRCUMFLEX: ^
CIRC: ^
AMPERSAND: '&'
AMPR: '&'
ASTERISK: '*'
ASTR: '*'
LEFT_PAREN: (
LPRN: (
RIGHT_PAREN: )
RPRN: )
UNDERSCORE: _
UNDS: _
PLUS: +
LEFT_CURLY_BRACE: '{'
LCBR: '{'
RIGHT_CURLY_BRACE: '}'
RCBR: '}'
PIPE: '|'
COLON: ':'
COLN: ':'
DOUBLE_QUOTE: '"'
DQUO: '"'
DQT: '"'
LEFT_ANGLE_BRACKET: <
LABK: <
LT: <
RIGHT_ANGLE_BRACKET: '>'
RABK: '>'
GT: '>'
QUESTION: '?'
QUES: '?'
zmk_combos:
combo_tab: {align: top, o: 0.15}
combo_del: {align: top, o: 0.15}
combo_f12: {align: bottom}
combo_btclr: {align: bottom}
combo_play: {align: right}
combo_capswd: {draw_separate: true}
combo_semi: {draw_separate: true}
combo_grave: {draw_separate: true}
combo_lpar: {draw_separate: true}
combo_rpar: {draw_separate: true}
combo_lbkt: {draw_separate: true}
combo_rbkt: {draw_separate: true}
combo_tab: {draw_separate: true}
combo_del: {draw_separate: true}
combo_esc: {draw_separate: true}
combo_ret: {draw_separate: true}
combo_lock: {draw_separate: true}
combo_bslh: {draw_separate: true}
combo_slsh: {draw_separate: true}
zmk_keycode_map:
# custom mappings
C_VOL_UP: Vol Up
C_VOL_DN: Vol Down
C_AL_CALC: Calc
# C_PP: Play Pause
LCTRL: Ctrl
RCTRL: Ctrl
LALT: Alt
RALT: Alt
LGUI: Gui
RGUI: Gui
LSHFT: Shift
RSHFT: Shift
ESC: Esc
SPACE:
BSPC:
RET:
TAB:
DEL:
PG_UP: Page Up
PG_DN: Page Down
INS: Insert
HOME: Home
END: End
CAPS: Caps Lock
PSCRN: Print Scrn
PAUSE_BREAK: Pause Break
UP:
DOWN:
LEFT:
RIGHT:
C_PP:
C_NEXT: ⏭️
C_PREV: ⏮️
# defaults
# AMPERSAND: '&'
# AMPS: '&'
APOS: "'"
APOSTROPHE: "'"
ASTERISK: '*'
ASTRK: '*'
AT: '@'
AT_SIGN: '@'
BACKSLASH: \
BSLH: \
CARET: ^
COLON: ':'
COMMA: ','
DLLR: $
DOLLAR: $
DOT: .
DOUBLE_QUOTES: '"'
DQT: '"'
EQUAL: '='
EXCL: '!'
EXCLAMATION: '!'
FSLH: /
GRAVE: '`'
GREATER_THAN: '>'
GT: '>'
HASH: '#'
LBKT: '['
LBRC: '{'
LEFT_BRACE: '{'
LEFT_BRACKET: '['
LEFT_PARENTHESIS: (
LESS_THAN: <
LPAR: (
LT: <
MINUS: '-'
NON_US_BACKSLASH: \
NON_US_BSLH: '|'
NON_US_HASH: '#'
NUHS: '#'
PERCENT: '%'
PERIOD: .
PIPE: '|'
PIPE2: '|'
PLUS: +
POUND: '#'
PRCNT: '%'
QMARK: '?'
QUESTION: '?'
RBKT: ']'
RBRC: '}'
RIGHT_BRACE: '}'
RIGHT_BRACKET: ']'
RIGHT_PARENTHESIS: )
RPAR: )
SEMI: ;
SEMICOLON: ;
SINGLE_QUOTE: ''''
SLASH: /
SQT: ''''
STAR: '*'
TILDE: '~'
TILDE2: '~'
UNDER: _
UNDERSCORE: _

139
config/corne.conf Normal file
View file

@ -0,0 +1,139 @@
# ========================================
# FileName: corne.conf
# Date: 07.06.2023
# Author: Marcos Chow Castro
# Email: mctechnology170318@gmail.com
# GitHub: https://github.com/mctechnology17
# Brief: configuration file for ZMK firmware
# Board: nice_nano_v2 and puchi_ble_v1
# ╔═╦═╦═╗
# ╔════╗ ║║║║║╔╝
# ║╔╗╔╗║ ║║║║║╚╗
# ╚╝║║╚╝ ║╠═╩╩═╝
# ║╠═╦═╣╚╦═╦╦═╦╗╔═╦═╦╦╗
# ║║╩╣═╣║║║║║╬║╚╣╬║╬║║║
# ╚╩═╩═╩╩╩╩═╩═╩═╩═╬╗╠╗║
# ╚═╩═╝
# Copyright (c) 2020 The ZMK Contributors
# SPDX-License-Identifier: MIT
# =========================================
# on config_zmk.h file enable/disable the following options, if you want to
# use CONFIG_ZMK_MOUSE=y, CONFIG_ZMK_RGB_UNDERGLOW=y, CONFIG_ZMK_RGB_UNDERGLOW=y
# mouse config, 1 = enable, 0 = disable, default = 1
# 2 = enable, but with rgb matrix
# #define MC_TECHNOLOGY_MOUSE_ENABLE 1
# rgb matrix config, 1 = enable, 0 = disable, default = 0
# #define MC_TECHNOLOGY_RGB_ENABLE 0
# define macros on for .dtsi file 1 = enable, 0 = disable default = 1
# #define MC_TECHNOLOGY_MACROS_ENABLE 1
### Turn of pin code pairing
CONFIG_ZMK_BLE_PASSKEY_ENTRY=n
CONFIG_ZMK_BLE_EXPERIMENTAL_SEC=n
CONFIG_ZMK_BLE_EXPERIMENTAL_FEATURES=n
### Keyboard name
CONFIG_ZMK_KEYBOARD_NAME="Afiq Zudin Corne42"
CONFIG_BT_DEVICE_NAME_MAX=28
### Boost Bluetooth TX power, also make Bluetooth stronger
CONFIG_BT_CTLR_TX_PWR_PLUS_8=y
CONFIG_ZMK_BLE_EXPERIMENTAL_FEATURES=y
# Tune bluetooth profiles for quick select
# CONFIG_BT_MAX_CONN=3
# Uncomment the following line if you facing issue on win 11 connection
# Enables a combination of settings that are planned to be default in future
# versions of ZMK to improve connection stability. This includes changes to
# timing on BLE pairing initiation, restores use of the updated/new LLCP
# implementation, and disables 2M PHY support.
CONFIG_ZMK_BLE_EXPERIMENTAL_CONN=y
### POWER OPTIONS
CONFIG_ZMK_SLEEP=y
CONFIG_ZMK_EXT_POWER=y
# 15 min (15*60*1000ms)
# CONFIG_ZMK_IDLE_SLEEP_TIMEOUT=900000
# 1 min Número de milisegundos de inactividad antes de entrar en estado inactivo
# CONFIG_ZMK_IDLE_TIMEOUT=60000
# 30 min (30*60*1000ms)
# CONFIG_ZMK_IDLE_SLEEP_TIMEOUT=1800000
# CONFIG_ZMK_IDLE_TIMEOUT=120000
# Disable external power when not connected to USB
# CONFIG_ZMK_EXT_POWER_USB_ONLY=y
### MOUSE
# https://github.com/zmkfirmware/zmk/blob/main/docs/docs/keymaps/behaviors/mouse-emulation.md
# CONFIG_ZMK_MOUSE=y
### ZMK STUDIO
# MC: 2. zmk-studio test START
# https://github.com/zmkfirmware/zmk/blob/main/docs/docs/config/studio.md
CONFIG_ZMK_STUDIO=y
CONFIG_ZMK_STUDIO_LOCKING=n
# MC: zmk-studio test END
### RGB UNDERGLOW
# uncomment to enable RGB Underglow or backlight
# CONFIG_ZMK_RGB_UNDERGLOW=y
# CONFIG_WS2812_STRIP=y
# apaga si no se usa el teclado
# CONFIG_ZMK_RGB_UNDERGLOW_AUTO_OFF_IDLE=y
# 0 Solid color 1 Breathe 2 Spectrum 3 Swirl
# CONFIG_ZMK_RGB_UNDERGLOW_EFF_START=3
# nivel de brillo en porcentaje, el valor por defecto es 10 por ciento
# CONFIG_ZMK_RGB_UNDERGLOW_BRT_STEP=1
# Turn off RGB underglow when keyboard goes into idle state
# CONFIG_ZMK_RGB_UNDERGLOW_AUTO_OFF_IDLE=y
# # Hue step in degrees (0-359) used by RGB actions default 10
# CONFIG_ZMK_RGB_UNDERGLOW_HUE_STEP=30
# # Brightness step in percent used by RGB actions default 10
# CONFIG_ZMK_RGB_UNDERGLOW_SAT_STEP=2
# CONFIG_ZMK_RGB_UNDERGLOW_HUE_START=240
# CONFIG_ZMK_RGB_UNDERGLOW_SAT_START=10
# CONFIG_ZMK_RGB_UNDERGLOW_BRT_START=15
# Uncomment the line below to disable external power toggling by the underglow.
# By default toggling the underglow on and off also toggles external power
# on and off. This also causes the display to turn off.
# CONFIG_ZMK_RGB_UNDERGLOW_EXT_POWER=n
### OLED DISPLAY
CONFIG_ZMK_DISPLAY=y
CONFIG_ZMK_DISPLAY_STATUS_SCREEN_CUSTOM=y
# esto creo que ya no es necesario
# CONFIG_ZMK_DISPLAY_WORK_QUEUE_DEDICATED=y
# CONFIG_ZMK_DISPLAY_STATUS_SCREEN_BUILT_IN=y
### WIDGET SETTINGS
# No Widget configurations added since nice!view has its own custom widgets
# activar solo estos dos widgets
# CONFIG_ZMK_WIDGET_WPM_STATUS=n
# CONFIG_ZMK_WIDGET_BATTERY_STATUS_SHOW_PERCENTAGE=y
# CONFIG_ZMK_WIDGET_LAYER_STATUS=y
# CONFIG_ZMK_WIDGET_BATTERY_STATUS=y
# CONFIG_ZMK_WIDGET_OUTPUT_STATUS=y
### HID para nice!view ePaperDisplay
# Enable eager debouncing
# "Eager Debouncing"
# Trying to lower the input lag.
CONFIG_ZMK_KSCAN_DEBOUNCE_PRESS_MS=1
CONFIG_ZMK_KSCAN_DEBOUNCE_RELEASE_MS=5
### Improves compatibility with iPad
# ref: https://zmk.dev/docs/config/system#hid
CONFIG_ZMK_HID_CONSUMER_REPORT_USAGES_BASIC=y
### JAVELIN STENO ENGINE
CONFIG_ZMK_JAVELIN_STENO=y
CONFIG_ZMK_JAVELIN_STENO_DICT_PLOVER=n
CONFIG_ZMK_JAVELIN_STENO_DICT_LAPWING=y
CONFIG_CPLUSPLUS=y
CONFIG_LIB_CPLUSPLUS=y
CONFIG_HEAP_MEM_POOL_SIZE=32768
### DEBUG OPTIONS
# CONFIG_ZMK_USB_LOGGING=y
# CONFIG_LOG_PROCESS_THREAD_STARTUP_DELAY_MS=8000

126
config/corne.keymap Normal file
View file

@ -0,0 +1,126 @@
/*
* Copyright (c) 2020 The ZMK Contributors
*
* SPDX-License-Identifier: MIT
*/
#include <behaviors.dtsi>
#include <dt-bindings/zmk/keys.h>
#include <dt-bindings/zmk/bt.h>
#include <dt-bindings/zmk/outputs.h>
#include <dt-bindings/zmk/ext_power.h>
#include <dt-bindings/led/led.h>
#include <dt-bindings/zmk/backlight.h>
#include <dt-bindings/zmk/rgb.h>
#include <dt-bindings/zmk/reset.h>
#include <dt-bindings/zmk/javelin_steno.h>
#include <behaviors/javelin_steno.dtsi>
&led_strip {
chain-length = <27>;
};
/ {
behaviors {
ht_mute_pp: ht_mute_pp {
compatible = "zmk,behavior-hold-tap";
#binding-cells = <2>;
tapping-term-ms = <200>;
bindings = <&kp>, <&kp>;
};
td_rgb: td_rgb {
compatible = "zmk,behavior-tap-dance";
#binding-cells = <0>;
tapping-term-ms = <300>;
bindings = <&rgb_ug RGB_TOG>, <&rgb_ug RGB_EFF>, <&rgb_ug RGB_EFR>;
};
td_colors: td_colors {
compatible = "zmk,behavior-tap-dance";
#binding-cells = <0>;
tapping-term-ms = <400>;
bindings = <&rgb_ug RGB_COLOR_HSB(270,89,90)>,
<&rgb_ug RGB_COLOR_HSB(0,0,100)>,
<&rgb_ug RGB_COLOR_HSB(0,100,100)>,
<&rgb_ug RGB_COLOR_HSB(240,100,100)>,
<&rgb_ug RGB_COLOR_HSB(120,100,100)>;
};
};
combos {
compatible = "zmk,combos";
// Top + home row combos = numbers (like ecosteno)
combo_1 { key-positions = <1 13>; bindings = <&kp N1>; layers = <0 1>; };
combo_2 { key-positions = <2 14>; bindings = <&kp N2>; layers = <0 1>; };
combo_3 { key-positions = <3 15>; bindings = <&kp N3>; layers = <0 1>; };
combo_4 { key-positions = <4 16>; bindings = <&kp N4>; layers = <0 1>; };
combo_5 { key-positions = <5 17>; bindings = <&kp N5>; layers = <0 1>; };
combo_6 { key-positions = <6 18>; bindings = <&kp N6>; layers = <0 1>; };
combo_7 { key-positions = <7 19>; bindings = <&kp N7>; layers = <0 1>; };
combo_8 { key-positions = <8 20>; bindings = <&kp N8>; layers = <0 1>; };
combo_9 { key-positions = <9 21>; bindings = <&kp N9>; layers = <0 1>; };
combo_0 { key-positions = <10 22>; bindings = <&kp N0>; layers = <0 1>; };
// I+O (QWRT) / U+B (CARP) = BSPC
combo_bspc { key-positions = <8 9>; bindings = <&kp BSPC>; layers = <0 1>; };
// K+L (QWRT) / E+O (CARP) = ENTER
combo_enter { key-positions = <20 21>; bindings = <&kp RET>; layers = <0 1>; };
// W+E (QWRT) / G+M (CARP) = ESC
combo_esc { key-positions = <2 3>; bindings = <&kp ESC>; layers = <0 1>; };
// S+D (QWRT) / S+T (CARP) = TAB
combo_tab { key-positions = <14 15>; bindings = <&kp TAB>; layers = <0 1>; };
};
keymap {
compatible = "zmk,keymap";
carpalx_layer {
display-name = "CARP";
bindings = <
&kp GRAVE &kp Q &kp G &kp M &kp L &kp W &kp Y &kp F &kp U &kp B &kp SEMI &to 4
&mo 4 &kp D &kp S &kp T &kp N &kp R &kp I &kp A &kp E &kp O &kp H &kp SQT
&kp LSHFT &kp Z &kp X &kp C &kp V &kp J &kp K &kp P &kp COMMA &kp DOT &kp FSLH &kp RSHFT
&td_rgb &kp LCTRL &kp LGUI &kp SPACE &kp RALT &ht_mute_pp C_PLAY_PAUSE C_MUTE
>;
};
qwerty_layer {
display-name = "QWRT";
bindings = <
&kp GRAVE &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &to 4
&mo 4 &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SEMI &kp SQT
&kp LSHFT &kp Z &kp X &kp C &kp V &kp B &kp N &kp M &kp COMMA &kp DOT &kp FSLH &kp RSHFT
&td_rgb &kp LCTRL &kp LGUI &kp SPACE &kp RALT &ht_mute_pp C_PLAY_PAUSE C_MUTE
>;
};
steno_layer {
display-name = "STEN";
bindings = <
&none &javsteno STENO_NUM1 &javsteno STENO_NUM2 &javsteno STENO_NUM3 &javsteno STENO_NUM4 &javsteno STENO_NUM5 &javsteno STENO_NUM6 &javsteno STENO_NUM7 &javsteno STENO_NUM8 &javsteno STENO_NUM9 &javsteno STENO_NUM10 &to 4
&mo 4 &javsteno STENO_S1 &javsteno STENO_TL &javsteno STENO_PL &javsteno STENO_HL &javsteno STENO_STAR1 &javsteno STENO_STAR3 &javsteno STENO_FR &javsteno STENO_PR &javsteno STENO_LR &javsteno STENO_TR &javsteno STENO_DR
&none &javsteno STENO_S2 &javsteno STENO_KL &javsteno STENO_WL &javsteno STENO_RL &javsteno STENO_STAR2 &javsteno STENO_STAR4 &javsteno STENO_RR &javsteno STENO_BR &javsteno STENO_GR &javsteno STENO_SR &javsteno STENO_ZR
&none &javsteno STENO_A &javsteno STENO_O &javsteno STENO_E &javsteno STENO_U &none
>;
};
fps_layer {
display-name = "FPS";
bindings = <
&mt ESC N1 &kp N2 &kp Q &kp W &mt N3 E &mt N4 R &kp N5 &kp N6 &kp N7 &kp N8 &kp N9 &to 4
&kp TAB &kp LSHFT &kp A &kp S &kp D &kp F &none &none &none &none &none &none
&mt LALT M &kp Z &kp X &kp C &kp V &kp G &none &none &none &none &none &none
&kp T &kp LCTRL &kp SPACE &none &none &none
>;
};
hub_layer {
display-name = "HUB";
bindings = <
&bt BT_CLR &bt BT_SEL 0 &bt BT_SEL 1 &bt BT_SEL 2 &bt BT_SEL 3 &bt BT_SEL 4 &kp PLUS &kp LBKT &kp UP &kp RBKT &kp ASTRK &kp EQUAL
&out OUT_TOG &rgb_ug RGB_HUI &rgb_ug RGB_SAI &rgb_ug RGB_BRI &kp C_BRI_UP &kp C_VOL_UP &kp MINUS &kp LEFT &kp DOWN &kp RIGHT &kp FSLH &kp BSLH
&kp LSHFT &rgb_ug RGB_HUD &rgb_ug RGB_SAD &rgb_ug RGB_BRD &kp C_BRI_DN &kp C_VOL_DN &to 0 &to 1 &to 2 &to 3 &td_colors &kp RSHFT
&td_rgb &kp LCTRL &kp LGUI &kp SPACE &kp RALT &ht_mute_pp C_PLAY_PAUSE C_MUTE
>;
};
};
};

55
config/west.yml Normal file
View file

@ -0,0 +1,55 @@
manifest:
remotes:
- name: zmkfirmware
url-base: https://github.com/zmkfirmware
# dongle_display
- name: englmaxi
url-base: https://github.com/englmaxi
# nice_oled - nice_epaper - dongle_display!view - oled Adapter
- name: mctechnology17
url-base: https://github.com/mctechnology17
# fork of zmk-nice-oled with custom KM medal animation
- name: KeebMaker
url-base: https://github.com/KeebMaker
# javelin steno engine module
- name: afiqzudinhadi
url-base: https://github.com/afiqzudinhadi
# javelin steno engine source
- name: jthlim
url-base: https://github.com/jthlim
projects:
# Pinned to v0.3.0 instead of `main`: ZMK main tracks Zephyr 4.1, whose
# board-model rewrite renamed `nice_nano_v2` (now `nice_nano//zmk`) and
# split the `WS2812_STRIP` Kconfig symbol per-driver. Bumping this back to
# `main` will break every build.yaml entry below until those are updated.
- name: zmk
remote: zmkfirmware
revision: v0.3.0
import: app/west.yml
# dongle_display
- name: zmk-dongle-display
remote: englmaxi
revision: v0.3
# nice_oled - nice_epaper (fork with custom KM medal animation)
- name: zmk-nice-oled
remote: KeebMaker
revision: km-medal-animation
# dongle_display!view
- name: zmk-dongle-display-view
remote: mctechnology17
revision: main
# oled Adapter
- name: zmk-oled-adapter
remote: mctechnology17
revision: main
# javelin steno engine module
- name: zmk-javelin-steno
remote: afiqzudinhadi
revision: main
# javelin steno engine source (fetched into module's javelin/ dir)
- name: javelin-steno
remote: jthlim
revision: main
path: zmk-javelin-steno/javelin
self:
path: config

1634
keymap-drawer/corne.svg Normal file

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 72 KiB

262
keymap-drawer/corne.yaml Normal file
View file

@ -0,0 +1,262 @@
layout: {zmk_keyboard: corne}
layers:
CARP:
- '`'
- Q
- G
- M
- L
- W
- Y
- F
- U
- B
- ;
- {t: HUB, h: toggle}
- HUB
- D
- S
- T
- N
- R
- I
- A
- E
- O
- H
- ''''
- $$mdi:apple-keyboard-shift$$
- Z
- X
- C
- V
- J
- K
- P
- ','
- .
- /
- $$mdi:apple-keyboard-shift$$
- '&td_rgb'
- $$mdi:apple-keyboard-control$$
- $$mdi:apple-keyboard-command$$
-
- $$mdi:apple-keyboard-option$$
- {t: MUTE, h: PLAY PAUSE}
QWRT:
- '`'
- Q
- W
- E
- R
- T
- Y
- U
- I
- O
- P
- {t: HUB, h: toggle}
- HUB
- A
- S
- D
- F
- G
- H
- J
- K
- L
- ;
- ''''
- $$mdi:apple-keyboard-shift$$
- Z
- X
- C
- V
- B
- N
- M
- ','
- .
- /
- $$mdi:apple-keyboard-shift$$
- '&td_rgb'
- $$mdi:apple-keyboard-control$$
- $$mdi:apple-keyboard-command$$
-
- $$mdi:apple-keyboard-option$$
- {t: MUTE, h: PLAY PAUSE}
STEN:
- ''
- '&javsteno STENO_NUM1'
- '&javsteno STENO_NUM2'
- '&javsteno STENO_NUM3'
- '&javsteno STENO_NUM4'
- '&javsteno STENO_NUM5'
- '&javsteno STENO_NUM6'
- '&javsteno STENO_NUM7'
- '&javsteno STENO_NUM8'
- '&javsteno STENO_NUM9'
- '&javsteno STENO_NUM10'
- {t: HUB, h: toggle}
- HUB
- '&javsteno STENO_S1'
- '&javsteno STENO_TL'
- '&javsteno STENO_PL'
- '&javsteno STENO_HL'
- '&javsteno STENO_STAR1'
- '&javsteno STENO_STAR3'
- '&javsteno STENO_FR'
- '&javsteno STENO_PR'
- '&javsteno STENO_LR'
- '&javsteno STENO_TR'
- '&javsteno STENO_DR'
- ''
- '&javsteno STENO_S2'
- '&javsteno STENO_KL'
- '&javsteno STENO_WL'
- '&javsteno STENO_RL'
- '&javsteno STENO_STAR2'
- '&javsteno STENO_STAR4'
- '&javsteno STENO_RR'
- '&javsteno STENO_BR'
- '&javsteno STENO_GR'
- '&javsteno STENO_SR'
- '&javsteno STENO_ZR'
- ''
- '&javsteno STENO_A'
- '&javsteno STENO_O'
- '&javsteno STENO_E'
- '&javsteno STENO_U'
- ''
FPS:
- {t: '1', h: Esc}
- '2'
- Q
- W
- {t: E, h: '3'}
- {t: R, h: '4'}
- '5'
- '6'
- '7'
- '8'
- '9'
- {t: HUB, h: toggle}
-
- $$mdi:apple-keyboard-shift$$
- A
- S
- D
- F
- ''
- ''
- ''
- ''
- ''
- ''
- {t: M, h: '$$mdi:apple-keyboard-option$$'}
- Z
- X
- C
- V
- G
- ''
- ''
- ''
- ''
- ''
- ''
- T
- $$mdi:apple-keyboard-control$$
-
- ''
- ''
- ''
HUB:
- BT CLR
- BT 1
- BT 2
- BT 3
- BT 4
- BT 5
- +
- '['
-
- ']'
- '*'
- '='
- {t: OUT TOG, type: held}
- {t: '$$mdi:led-on$$', s: '$$mdi:palette$$', type: sym_by_sym}
- {t: '$$mdi:led-outline$$', s: '$$mdi:eyedropper$$', type: sym_by_sym}
- {t: '$$mdi:led-outline$$', s: '$$tabler:brightness-down$$', type: sym_by_sym}
- BRI UP
- Vol Up
- '-'
-
-
-
- /
- \
- $$mdi:apple-keyboard-shift$$
- {t: '$$mdi:led-outline$$', s: '$$mdi:palette$$', type: sym_by_sym}
- {t: '$$mdi:led-on$$', s: '$$mdi:eyedropper$$', type: sym_by_sym}
- {t: '$$mdi:led-on$$', s: '$$tabler:brightness-up$$', type: sym_by_sym}
- BRI DN
- Vol Down
- {t: CARP, h: toggle}
- {t: QWRT, h: toggle}
- {t: STEN, h: toggle}
- {t: FPS, h: toggle}
- '&td_colors'
- $$mdi:apple-keyboard-shift$$
- '&td_rgb'
- $$mdi:apple-keyboard-control$$
- $$mdi:apple-keyboard-command$$
-
- $$mdi:apple-keyboard-option$$
- {t: MUTE, h: PLAY PAUSE}
combos:
- p: [1, 13]
k: '1'
l: [CARP, QWRT]
- p: [2, 14]
k: '2'
l: [CARP, QWRT]
- p: [3, 15]
k: '3'
l: [CARP, QWRT]
- p: [4, 16]
k: '4'
l: [CARP, QWRT]
- p: [5, 17]
k: '5'
l: [CARP, QWRT]
- p: [6, 18]
k: '6'
l: [CARP, QWRT]
- p: [7, 19]
k: '7'
l: [CARP, QWRT]
- p: [8, 20]
k: '8'
l: [CARP, QWRT]
- p: [9, 21]
k: '9'
l: [CARP, QWRT]
- p: [10, 22]
k: '0'
l: [CARP, QWRT]
- p: [8, 9]
k: $$mdi:backspace-outline$$
l: [CARP, QWRT]
- p: [20, 21]
k:
l: [CARP, QWRT]
- p: [2, 3]
k: Esc
l: [CARP, QWRT]
draw_separate: true
- p: [14, 15]
k:
l: [CARP, QWRT]
draw_separate: true

View file

@ -0,0 +1,21 @@
### RGB UNDERGLOW
CONFIG_ZMK_RGB_UNDERGLOW=y
CONFIG_ZMK_RGB_UNDERGLOW_ON_START=n
CONFIG_WS2812_STRIP=y
# 0 Solid color 1 Breathe 2 Spectrum 3 Swirl
CONFIG_ZMK_RGB_UNDERGLOW_EFF_START=3
# brightness level in percentage, the default value is 10 percent
CONFIG_ZMK_RGB_UNDERGLOW_BRT_STEP=1
# Turn off RGB underglow when keyboard goes into idle state
CONFIG_ZMK_RGB_UNDERGLOW_AUTO_OFF_IDLE=y
# # Hue step in degrees (0-359) used by RGB actions default 10
# CONFIG_ZMK_RGB_UNDERGLOW_HUE_STEP=30
# CONFIG_ZMK_RGB_UNDERGLOW_SAT_STEP=2
# CONFIG_ZMK_RGB_UNDERGLOW_HUE_START=240
# CONFIG_ZMK_RGB_UNDERGLOW_SAT_START=10
# CONFIG_ZMK_RGB_UNDERGLOW_BRT_START=15
# Uncomment the line below to disable external power toggling by the underglow.
# By default toggling the underglow on and off also toggles external power
# on and off. This also causes the display to turn off.
CONFIG_ZMK_RGB_UNDERGLOW_EXT_POWER=n

View file

@ -0,0 +1,3 @@
name: rgb-config
append:
EXTRA_CONF_FILE: rgb-config.conf

4
zephyr/module.yml Normal file
View file

@ -0,0 +1,4 @@
build:
settings:
board_root: .
snippet_root: .