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

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