diff --git a/README.md b/README.md index 5b0b588..698b106 100644 --- a/README.md +++ b/README.md @@ -65,7 +65,7 @@ Key positions reference: ` Q G M L W | Y F U B ; ->HUB [HUB] D S T N R | I A E O H ' LSHFT Z X C V J | K P , . / RSHFT - _ CTRL GUI | SPC ALT _ + [RGB] CTRL GUI | SPC ALT MUTE/PP Combos (layers 0+1): top+home row same col = 1-0, shift+combo = ! @ # $ % ^ & * ( ) @@ -74,6 +74,8 @@ Combos (layers 0+1): U+B (I+O on QWRT) = BSPC E+O (K+L on QWRT) = ENTER [HUB] = hold opens HUB layer, release goes back +[RGB] = tap-dance: 1×=toggle, 2×=effect fwd, 3×=effect rev +MUTE/PP = tap mute, hold play/pause ``` ### Layer 1: QWRT (QWERTY) @@ -81,10 +83,12 @@ Combos (layers 0+1): ` Q W E R T | Y U I O P ->HUB [HUB] A S D F G | H J K L ; ' LSHFT Z X C V B | N M , . / RSHFT - _ CTRL GUI | SPC ALT _ + [RGB] CTRL GUI | SPC ALT MUTE/PP Combos: same as CARP (top+home = 1-0, W+E = ESC, S+D = TAB, I+O = BSPC, K+L = ENTER) [HUB] = hold opens HUB layer, release goes back +[RGB] = tap-dance: 1×=toggle, 2×=effect fwd, 3×=effect rev +MUTE/PP = tap mute, hold play/pause ``` ### Layer 2: STEN (Plover keyboard mode) @@ -92,7 +96,7 @@ Combos: same as CARP (top+home = 1-0, W+E = ESC, S+D = TAB, I+O = BSPC, K+L = EN _ # # # # # | # # # # # ->HUB [HUB] S T P H * | * F P L T D _ S K W R * | * R B G S Z - _ A O | E U _ + [RGB] A O | E U MUTE/PP ``` ### Layer 3: FPS (WASD shifted right for ortho) @@ -105,13 +109,20 @@ M/ALT Z X C V G | _ _ _ _ _ _ Hold-taps: 1=tap/ESC=hold, E=tap/3=hold, R=tap/4=hold, M=tap/ALT=hold ``` -### Layer 4: HUB +### Layer 4: HUB (Utility — BT, RGB, Media, Nav) ``` -BT_CLR BT0 BT1 BT2 BT3 BT4 | + [ UP ] * = -_ _ _ _ _ _ | - LEFT DOWN RIGHT / \ -LSHFT Z X C V _ | ->CARP ->QWRT ->STEN ->FPS _ RSHFT - ESC CTRL GUI | SPC ALT _ +BT_CLR BT0 BT1 BT2 BT3 BT4 | + [ UP ] * = +OUT_TOG HUE+ SAT+ BRT+ SCRN+ VOL+ | - LEFT DOWN RIGHT / \ +LSHFT HUE- SAT- BRT- SCRN- VOL- | ->CARP ->QWRT ->STEN ->FPS [CLR] RSHFT + [RGB] CTRL GUI | SPC ALT MUTE/PP +OUT_TOG = toggle USB/BLE output +HUE/SAT/BRT = RGB underglow hue, saturation, brightness +SCRN = display brightness (C_BRI_UP/DN) +VOL = volume up/down +[RGB] = tap-dance: 1×=toggle, 2×=effect fwd, 3×=effect rev +[CLR] = tap-dance color presets: 1×=purple, 2×=white, 3×=red, 4×=blue, 5×=green +MUTE/PP = tap mute, hold play/pause ``` # Related Resources diff --git a/boards/nice_nano_v2.overlay b/boards/nice_nano_v2.overlay index 798f94b..3dcc5f7 100644 --- a/boards/nice_nano_v2.overlay +++ b/boards/nice_nano_v2.overlay @@ -44,4 +44,32 @@ 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: diff --git a/config/corne.conf b/config/corne.conf index c10e7a9..0d04489 100644 --- a/config/corne.conf +++ b/config/corne.conf @@ -126,6 +126,14 @@ CONFIG_ZMK_KSCAN_DEBOUNCE_RELEASE_MS=5 # 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 diff --git a/config/corne.keymap b/config/corne.keymap index d8774d6..0ec9836 100644 --- a/config/corne.keymap +++ b/config/corne.keymap @@ -13,12 +13,39 @@ #include #include #include +#include +#include &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) @@ -51,7 +78,7 @@ &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 - &none &kp LCTRL &kp LGUI &kp SPACE &kp RALT &none + &td_rgb &kp LCTRL &kp LGUI &kp SPACE &kp RALT &ht_mute_pp C_PLAY_PAUSE C_MUTE >; }; @@ -61,17 +88,17 @@ &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 - &none &kp LCTRL &kp LGUI &kp SPACE &kp RALT &none + &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 &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp N6 &kp N7 &kp N8 &kp N9 &kp N0 &to 4 -&mo 4 &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp LBKT -&none &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SEMI &kp SQT - &none &kp C &kp V &kp N &kp M &none +&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 >; }; @@ -89,9 +116,9 @@ 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 -&none &none &none &none &none &none &kp MINUS &kp LEFT &kp DOWN &kp RIGHT &kp FSLH &kp BSLH -&kp LSHFT &kp Z &kp X &kp C &kp V &none &to 0 &to 1 &to 2 &to 3 &none &kp RSHFT - &kp ESC &kp LCTRL &kp LGUI &kp SPACE &kp RALT &none +&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 >; }; diff --git a/config/west.yml b/config/west.yml index 1c4f319..8a02c72 100644 --- a/config/west.yml +++ b/config/west.yml @@ -11,6 +11,12 @@ manifest: # 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 @@ -36,5 +42,14 @@ manifest: - 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 diff --git a/keymap-drawer/corne.svg b/keymap-drawer/corne.svg index c5fcf24..82e3be7 100644 --- a/keymap-drawer/corne.svg +++ b/keymap-drawer/corne.svg @@ -15,6 +15,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /* end glyphs */