Move module to own repository (#18)

* refactor: move corax keyboard module to own repository

* feat: update readme to mention that this is only a configuration
This commit is contained in:
Daniel Bauer
2025-05-25 16:55:21 +02:00
committed by GitHub
parent 998f29ceb6
commit d2e6054d72
12 changed files with 237 additions and 501 deletions

View File

@@ -1,16 +1,48 @@
[![.github/workflows/build.yaml](https://github.com/dnlbauer/corax-zmk-config/actions/workflows/build.yaml/badge.svg)](https://github.com/dnlbauer/corax-zmk-config/actions/workflows/build.yaml)
# Firmware for the Corax keyboard
# Firmware configuration for the Corax keyboard
This is the [ZMK](https://zmk.dev/) firmware for the [Corax](https://github.com/dnlbauer/corax-keyboard).
This is my personal [ZMK](https://zmk.dev/) firmware configuration for the [Corax](https://github.com/dnlbauer/corax-keyboard).
Keymap optimised for US international.
The keymap optimised for US international.
## Using this Config as a template
You can use this configuration on your own Corax keyboard
or use it as a base to create your own configuration with a custom
keymap:
1. Fork this repository
2. Make sure the `config/west.yaml` contains a reference to the [zmk-keyboards-corax](https://github.com/dnlbauer/zmk-keyboards-corax) module
```yaml
manifest:
remotes:
- name: zmkfirmware
url-base: https://github.com/zmkfirmware
- name: dnlbauer
url-base: https://github.com/dnlbauer
projects:
- name: zmk
import: app/west.yml
remote: zmkfirmware
revision: main
- name: zmk-keyboards-corax
remote: dnlbauer
revision: main
self:
path: config
```
3. Customize the keymap in `config/corax.keymap`
4. Commit and push. Github Actions will build the firmware for you
5. Download the firmware artifact and copy it onto your keyboard (see [zmk user setup](https://zmk.dev/docs/user-setup)).
## Corax56 vs Corax54
The Corax56 and Corax54 use the same shield.
The hardware of both keyboards is identical except the Corax54 is missing one key.
Therefore, you can use this ZMK config for both keyboards.
The hardware of both keyboards is identical except the Corax54 is missing one hardware key.
Therefore, you can use the same ZMK firmware for both versions of the corax.
If you have a Corax54, just set the outer pinky key to `&none`
(basically, you can set it to whatever you want. It will be ignored).

View File

@@ -1,15 +0,0 @@
if SHIELD_CORAX_LEFT
config ZMK_KEYBOARD_NAME
default "Corax"
config ZMK_SPLIT_ROLE_CENTRAL
default y
endif
if SHIELD_CORAX_LEFT || SHIELD_CORAX_RIGHT
config ZMK_SPLIT
default y
endif

View File

@@ -1,5 +0,0 @@
config SHIELD_CORAX_LEFT
def_bool $(shields_list_contains,corax_left)
config SHIELD_CORAX_RIGHT
def_bool $(shields_list_contains,corax_right)

View File

@@ -1,8 +0,0 @@
# Uncomment these two lines to add support for encoders
# CONFIG_EC11=y
# CONFIG_EC11_TRIGGER_GLOBAL_THREAD=y
# Uncomment these 3 lines to use default zmk view widget
# CONFIG_ZMK_DISPLAY_STATUS_SCREEN_BUILT_IN=y
# CONFIG_ZMK_LV_FONT_DEFAULT_SMALL_MONTSERRAT_26=y
# CONFIG_LV_FONT_DEFAULT_MONTSERRAT_26=y

View File

@@ -1,49 +0,0 @@
#include <dt-bindings/zmk/matrix_transform.h>
/ {
chosen {
zmk,kscan = &kscan0;
zmk,matrix_transform = &default_transform;
};
default_transform: keymap_transform_0 {
compatible = "zmk,matrix-transform";
rows = <5>;
columns = <16>;
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,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(0,0) 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(0,11)
RC(3,0) RC(3,1) RC(3,2) RC(3,3) RC(3,4) RC(3,5) RC(4,5) RC(4,6) RC(3,6) RC(3,7) RC(3,8) RC(3,9) RC(3,10) RC(3,11)
RC(4,1) RC(4,2) RC(4,3) RC(4,4) RC(4,7) RC(4,8) RC(4,9) RC(4,10)
>;
};
kscan0: kscan {
compatible = "zmk,kscan-gpio-matrix";
wakeup-source;
};
encoder_left: encoder_left {
compatible = "alps,ec11";
a-gpios = <&pro_micro 20 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;
b-gpios = <&pro_micro 21 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;
steps = <30>;
status = "disabled";
};
encoder_right: encoder_right {
compatible = "alps,ec11";
a-gpios = <&pro_micro 2 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;
b-gpios = <&pro_micro 3 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;
steps = <30>;
status = "disabled";
};
sensors: sensors {
compatible = "zmk,keymap-sensors";
sensors = <&encoder_left &encoder_right>;
triggers-per-rotation = <15>;
};
};

View File

@@ -1,195 +0,0 @@
#include <behaviors.dtsi>
#include <dt-bindings/zmk/bt.h>
#include <dt-bindings/zmk/keys.h>
#include <dt-bindings/zmk/outputs.h>
#include <dt-bindings/zmk/ext_power.h>
#define COLEMAK 0
#define QWERTY 1
#define WASD 2
#define SYM 3
#define NAV 4
#define ADJUST 5
// additional caps word keys
&caps_word {
continue-list = <UNDERSCORE MINUS LS(MINUS) UP DOWN LEFT RIGHT BSPC DEL>;
};
/ {
behaviors {
lthp: layer_tap_hold_preferred {
compatible = "zmk,behavior-hold-tap";
#binding-cells = <2>;
flavor = "hold-preferred";
tapping-term-ms = <200>;
bindings = <&mo>, <&kp>;
};
mthp: mod_tap_hold_preferred {
compatible = "zmk,behavior-hold-tap";
#binding-cells = <2>;
flavor = "hold-preferred";
tapping-term-ms = <200>;
bindings = <&kp>, <&kp>;
};
};
macros {
// undead `
ud_grave: ud_grave {
compatible = "zmk,behavior-macro";
#binding-cells = <0>;
wait-ms = <10>;
tap-ms = <10>;
bindings = <&kp GRAVE &kp SPACE>;
};
// undead ~
ud_tilde: ud_tilde {
compatible = "zmk,behavior-macro";
#binding-cells = <0>;
wait-ms = <10>;
tap-ms = <10>;
bindings = <&kp TILDE &kp SPACE>;
};
// undead ^
ud_caret: ud_caret {
compatible = "zmk,behavior-macro";
#binding-cells = <0>;
wait-ms = <10>;
tap-ms = <10>;
bindings = <&kp CARET &kp SPACE>;
};
// undead '
ud_sqt: ud_sqt {
compatible = "zmk,behavior-macro";
#binding-cells = <0>;
wait-ms = <10>;
tap-ms = <10>;
bindings = <&kp SQT &kp SPACE>;
};
// undead "
ud_dqt: ud_dqt {
compatible = "zmk,behavior-macro";
#binding-cells = <0>;
wait-ms = <10>;
tap-ms = <10>;
bindings = <&kp LS(SQT) &kp SPACE>;
};
// ascii arrow ->
asc_arr: asc_arr {
compatible = "zmk,behavior-macro";
#binding-cells = <0>;
wait-ms = <10>;
tap-ms = <10>;
bindings = <&kp MINUS &kp LS(DOT)>;
};
};
combos {
compatible = "zmk,combos";
gm_capsword {
bindings = <&caps_word>;
// caps on G+M
key-positions = <28 29>;
};
sticky_adjust {
bindings = <&sl ADJUST>;
// sticky adjust layer on LALT+RALT
key-positions = <51 56>;
};
};
keymap {
compatible = "zmk,keymap";
colemak_layer {
display-name = "Colemak";
bindings = <
&kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp N6 &kp N7 &kp N8 &kp N9 &kp N0
&kp TAB &kp Q &kp W &kp F &kp P &kp B &kp J &kp L &kp U &kp Y &ud_sqt &kp RC(RA(F13))
&kp ESC &kp LCTRL &kp A &kp R &kp S &kp T &kp G &kp M &kp N &kp E &kp I &kp O &kp BSPC &kp RC(RA(F13))
&mt LSHFT LBRC &kp Z &kp X &kp C &kp D &kp V &kp C_MUTE &kp C_PP &kp K &kp H &kp COMMA &kp DOT &kp DEL &mt RSHFT RBRC
&kp LGUI &kp LALT &lthp SYM ESC &kp SPACE &kp ENTER &lt NAV ESC &kp RALT &kp RGUI
>;
sensor-bindings = <&inc_dec_kp C_VOL_DN C_VOL_UP &inc_dec_kp PG_DN PG_UP>;
};
qwerty_layer {
display-name = "QWERTY";
bindings = <
&trans &trans &trans &trans &trans &trans &trans &trans &trans &trans
&trans &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &trans
&trans &trans &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SEMI &trans &trans
&trans &kp Z &kp X &kp C &kp V &kp B &trans &trans &kp N &kp M &kp COMMA &kp DOT &trans &trans
&trans &trans &trans &trans &trans &trans &trans &trans
>;
sensor-bindings = <&inc_dec_kp C_VOL_DN C_VOL_UP &inc_dec_kp PG_DN PG_UP>;
};
gaming_layer {
display-name = "WASD";
bindings = <
&kp TILDE &kp N1 &kp N2 &kp N3 &kp N4 &trans &trans &trans &trans &trans
&kp ESC &kp N5 &kp Q &kp W &kp E &kp R &trans &trans &trans &trans &trans &trans
&trans &kp TAB &kp LCTRL &kp A &kp S &kp D &kp F &trans &trans &trans &trans &trans &trans &trans
&kp M &kp LSHIFT &kp Z &kp X &kp C &kp V &trans &trans &trans &trans &trans &trans &trans &trans
&trans &trans &trans &trans &trans &trans &trans &trans
>;
sensor-bindings = <&inc_dec_kp C_VOL_DN C_VOL_UP &inc_dec_kp PG_DN PG_UP>;
};
// left mod
sym_layer {
display-name = "Symbols";
bindings = <
&kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &kp F7 &kp F8 &kp F9 &kp F10
&trans &none &kp BSLH &kp PRCNT &kp DLLR &kp RA(LS(S)) &none &kp PIPE &ud_caret &kp SLASH &kp RA(N5) &kp F11
&trans &trans &none &kp LPAR &kp RPAR &kp COLON &asc_arr &none &ud_dqt &kp UNDER &kp LBKT &kp RBKT &kp F12 &trans
&trans &none &ud_grave &kp AT &kp AMPS &kp RC(RA(F14)) &trans &trans &none &kp HASH &kp QMARK &kp EXCL &trans &trans
&trans &trans &trans &trans &trans &kp LGUI &trans &trans
>;
sensor-bindings = <&inc_dec_kp C_VOL_DN C_VOL_UP &inc_dec_kp PG_DN PG_UP>;
};
// right mod
nav_layer {
display-name = "Num/Nav";
bindings = <
&kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &kp F7 &kp F8 &kp F9 &kp F10
&trans &kp MINUS &kp N7 &kp N8 &kp N9 &kp STAR &kp INS &kp HOME &kp END &kp PSCRN &none &trans
&trans &trans &kp DOT &kp N1 &kp N2 &kp N3 &kp EQUAL &kp LEFT &kp DOWN &kp UP &kp RIGHT &kp SEMI &trans &trans
&trans &ud_tilde &kp N4 &kp N5 &kp N6 &kp PLUS &trans &trans &kp PAUSE_BREAK &kp PG_DN &kp PG_UP &none &trans &trans
&trans &mt LALT MINUS &mt LGUI N0 &trans &trans &trans &trans &trans
>;
sensor-bindings = <&inc_dec_kp C_VOL_DN C_VOL_UP &inc_dec_kp C_PREV C_NEXT>;
};
adjust_layer {
display-name = "Adjust";
bindings = <
&none &none &none &none &sys_reset &sys_reset &none &none &none &none
&none &to QWERTY &none &to WASD &ext_power EP_ON &none &none &none &none &none &none &none
&none &none &bt BT_CLR &bt BT_SEL 0 &bt BT_SEL 1 &bt BT_SEL 2 &bt BT_SEL 3 &bt BT_SEL 4 &none &none &out OUT_TOG &none &none &none
&none &none &none &to COLEMAK &none &none &trans &trans &none &none &none &none &none &none
&trans &trans &trans &trans &trans &trans &trans &trans
>;
sensor-bindings = <&inc_dec_kp C_VOL_DN C_VOL_UP &inc_dec_kp PG_DN PG_UP>;
};
};
};

View File

@@ -1,12 +0,0 @@
file_format: "1"
id: corax
name: Corax
type: shield
url: https://github.com/dnlbauer/corax-keyboard
requires: [pro_micro]
features:
- keys
- encoder
siblings:
- corax_left
- corax_right

View File

@@ -1,54 +0,0 @@
#include "corax.dtsi"
&kscan0 {
diode-direction = "col2row";
// top to bottom
row-gpios
= <&pro_micro 5 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> // COL 0 (NUM)
, <&pro_micro 6 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> // COL 1 (UPPER)
, <&pro_micro 7 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> // COL 2 (HOME)
, <&pro_micro 8 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> // COL 3 (LOWER)
, <&pro_micro 9 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> // COL 4 (THUMB + ROT)
;
// left to right
col-gpios
= <&pro_micro 19 GPIO_ACTIVE_HIGH> // ROW 0 (outer)
, <&pro_micro 18 GPIO_ACTIVE_HIGH> // ROW 1 (pinky)
, <&pro_micro 15 GPIO_ACTIVE_HIGH> // ROW 2 (ring)
, <&pro_micro 14 GPIO_ACTIVE_HIGH> // ROW 3 (middle)
, <&pro_micro 16 GPIO_ACTIVE_HIGH> // ROW 4 (index)
, <&pro_micro 10 GPIO_ACTIVE_HIGH> // ROW 5 (inner)
;
};
&encoder_left {
status = "okay";
};
&pinctrl {
spi0_default: spi0_default {
group1 {
psels = <NRF_PSEL(SPIM_SCK, 0, 20)>,
<NRF_PSEL(SPIM_MOSI, 0, 17)>,
<NRF_PSEL(SPIM_MISO, 0, 25)>;
};
};
spi0_sleep: spi0_sleep {
group1 {
psels = <NRF_PSEL(SPIM_SCK, 0, 20)>,
<NRF_PSEL(SPIM_MOSI, 0, 17)>,
<NRF_PSEL(SPIM_MISO, 0, 25)>;
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 = <&pro_micro 4 GPIO_ACTIVE_HIGH>;
};

View File

@@ -1,58 +0,0 @@
#include "corax.dtsi"
&default_transform {
col-offset = <6>;
};
&kscan0 {
diode-direction = "col2row";
// top to bottom
row-gpios
= <&pro_micro 18 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> // COL 0 (NUM)
, <&pro_micro 15 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> // COL 1 (UPPER)
, <&pro_micro 14 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> // COL 2 (HOME)
, <&pro_micro 16 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> // COL 3 (LOWER)
, <&pro_micro 10 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> // COL 4 (THUMB + ROT)
;
// left to right
col-gpios
= <&pro_micro 9 GPIO_ACTIVE_HIGH> // ROW 0 (outer)
, <&pro_micro 8 GPIO_ACTIVE_HIGH> // ROW 1 (pinky)
, <&pro_micro 7 GPIO_ACTIVE_HIGH> // ROW 2 (ring)
, <&pro_micro 6 GPIO_ACTIVE_HIGH> // ROW 3 (middle)
, <&pro_micro 5 GPIO_ACTIVE_HIGH> // ROW 4 (index)
, <&pro_micro 4 GPIO_ACTIVE_HIGH> // ROW 5 (inner)
;
};
&encoder_right {
status = "okay";
};
&pinctrl {
spi0_default: spi0_default {
group1 {
psels = <NRF_PSEL(SPIM_SCK, 0, 29)>,
<NRF_PSEL(SPIM_MOSI, 0, 31)>,
<NRF_PSEL(SPIM_MISO, 0, 25)>;
};
};
spi0_sleep: spi0_sleep {
group1 {
psels = <NRF_PSEL(SPIM_SCK, 0, 29)>,
<NRF_PSEL(SPIM_MOSI, 0, 31)>,
<NRF_PSEL(SPIM_MISO, 0, 25)>;
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 = <&pro_micro 19 GPIO_ACTIVE_HIGH>;
};

View File

@@ -1,93 +0,0 @@
{
"id": "corax",
"name": "corax",
"keyboard_name": "Corax",
"url": "https://github.com/dnlbauer/corax-keyboard",
"maintainer": "",
"layouts": {
"LAYOUT": {
"layout": [
{ "label": "1", "row": 0, "col": 2, "r": -5, "x": 1.82, "y": 1.06, "rx": 2.32, "ry": 1.56 },
{ "label": "2", "row": 0, "col": 3, "r": 0, "x": 3.02, "y": 0.32 },
{ "label": "3", "row": 0, "col": 4, "r": 0, "x": 3.99, "y": 0 },
{ "label": "4", "row": 0, "col": 5, "r": 0, "x": 4.96, "y": 0.32 },
{ "label": "5", "row": 0, "col": 6, "r": 0, "x": 5.94, "y": 0.46 },
{ "label": "6", "row": 0, "col": 10, "r": 0, "x": 10.21, "y": 0.46 },
{ "label": "7", "row": 0, "col": 11, "r": 0, "x": 11.19, "y": 0.32 },
{ "label": "8", "row": 0, "col": 12, "r": 0, "x": 12.16, "y": 0 },
{ "label": "9", "row": 0, "col": 13, "r": 0, "x": 13.13, "y": 0.32 },
{ "label": "0", "row": 0, "col": 14, "r": 5, "x": 14.33, "y": 1.06, "rx": 14.83, "ry": 1.56 },
{ "label": "TAB", "row": 1, "col": 1, "r": -5, "x": 0.93, "y": 2.12, "rx": 1.43, "ry": 2.62 },
{ "label": "Q", "row": 1, "col": 2, "r": -5, "x": 1.9, "y": 2.03, "rx": 2.4, "ry": 2.53 },
{ "label": "W", "row": 1, "col": 3, "r": 0, "x": 3.02, "y": 1.29 },
{ "label": "E", "row": 1, "col": 4, "r": 0, "x": 3.99, "y": 0.97 },
{ "label": "R", "row": 1, "col": 5, "r": 0, "x": 4.96, "y": 1.29 },
{ "label": "T", "row": 1, "col": 6, "r": 0, "x": 5.94, "y": 1.43 },
{ "label": "Y", "row": 1, "col": 10, "r": 0, "x": 10.21, "y": 1.43 },
{ "label": "U", "row": 1, "col": 11, "r": 0, "x": 11.19, "y": 1.29 },
{ "label": "I", "row": 1, "col": 12, "r": 0, "x": 12.16, "y": 0.97 },
{ "label": "O", "row": 1, "col": 13, "r": 0, "x": 13.13, "y": 1.29 },
{ "label": "P", "row": 1, "col": 14, "r": 5, "x": 14.25, "y": 2.03, "rx": 14.75, "ry": 2.53 },
{ "label": "BCSP", "row": 1, "col": 15, "r": 5, "x": 15.22, "y": 2.12, "rx": 15.72, "ry": 2.62 },
{ "label": "ESC", "row": 2, "col": 0, "r": -5, "x": 0.04, "y": 3.18, "rx": 0.54, "ry": 3.68 },
{ "label": "`", "row": 2, "col": 1, "r": -5, "x": 1.01, "y": 3.09, "rx": 1.51, "ry": 3.59 },
{ "label": "A", "row": 2, "col": 2, "r": -5, "x": 1.98, "y": 3, "rx": 2.48, "ry": 3.5 },
{ "label": "S", "row": 2, "col": 3, "r": 0, "x": 3.02, "y": 2.26 },
{ "label": "D", "row": 2, "col": 4, "r": 0, "x": 3.99, "y": 1.94 },
{ "label": "F", "row": 2, "col": 5, "r": 0, "x": 4.96, "y": 2.26 },
{ "label": "G", "row": 2, "col": 6, "r": 0, "x": 5.94, "y": 2.41 },
{ "label": "H", "row": 2, "col": 10, "r": 0, "x": 10.21, "y": 2.41 },
{ "label": "J", "row": 2, "col": 11, "r": 0, "x": 11.19, "y": 2.26 },
{ "label": "K", "row": 2, "col": 12, "r": 0, "x": 12.16, "y": 1.94 },
{ "label": "L", "row": 2, "col": 13, "r": 0, "x": 13.13, "y": 2.26 },
{ "label": ";", "row": 2, "col": 14, "r": 5, "x": 14.17, "y": 3, "rx": 14.67, "ry": 3.5 },
{ "label": "'", "row": 2, "col": 15, "r": 5, "x": 15.14, "y": 3.09, "rx": 15.64, "ry": 3.59 },
{ "label": "MAGIC", "row": 2, "col": 16, "r": 5, "x": 16.11, "y": 3.18, "rx": 16.61, "ry": 3.68 },
{ "label": "SHFT", "row": 3, "col": 1, "r": -5, "x": 1.09, "y": 4.05, "rx": 1.59, "ry": 4.55 },
{ "label": "Z", "row": 3, "col": 2, "r": -5, "x": 2.06, "y": 3.97, "rx": 2.56, "ry": 4.47 },
{ "label": "X", "row": 3, "col": 3, "r": 0, "x": 3.02, "y": 3.23 },
{ "label": "C", "row": 3, "col": 4, "r": 0, "x": 3.99, "y": 2.91 },
{ "label": "V", "row": 3, "col": 5, "r": 0, "x": 4.96, "y": 3.23 },
{ "label": "B", "row": 3, "col": 6, "r": 0, "x": 5.94, "y": 3.38 },
{ "label": "MUTE", "row": 3, "col": 7, "r": 0, "x": 6.94, "y": 3.38 },
{ "label": "PAUSE", "row": 3, "col": 9, "r": 0, "x": 9.21, "y": 3.38 },
{ "label": "N", "row": 3, "col": 10, "r": 0, "x": 10.21, "y": 3.38 },
{ "label": "M", "row": 3, "col": 11, "r": 0, "x": 11.19, "y": 3.23 },
{ "label": ",", "row": 3, "col": 12, "r": 0, "x": 12.16, "y": 2.91 },
{ "label": ".", "row": 3, "col": 13, "r": 0, "x": 13.13, "y": 3.23 },
{ "label": "/", "row": 3, "col": 14, "r": 5, "x": 14.09, "y": 3.97, "rx": 14.59, "ry": 4.47 },
{ "label": "SHFT", "row": 3, "col": 15, "r": 5, "x": 15.06, "y": 4.05, "rx": 15.56, "ry": 4.55 },
{ "label": "GUI", "row": 4, "col": 4, "r": 0, "x": 3.99, "y": 3.89 },
{ "label": "ALT", "row": 4, "col": 5, "r": 0, "x": 4.96, "y": 4.21 },
{ "label": "MOD", "row": 4, "col": 6, "r": 15, "x": 6.04, "y": 4.46, "rx": 6.54, "ry": 4.96 },
{ "label": "SPC", "row": 4, "col": 7, "r": 30, "x": 7.08, "y": 4.83, "rx": 7.58, "ry": 5.58, "h": 1.5 },
{ "label": "RET", "row": 4, "col": 9, "r": -30, "x": 9.08, "y": 4.83, "rx": 9.58, "ry": 5.58, "h": 1.5 },
{ "label": "MOD", "row": 4, "col": 10, "r": -15, "x": 10.11, "y": 4.46, "rx": 10.61, "ry": 4.96 },
{ "label": "ALT", "row": 4, "col": 11, "r": 0, "x": 11.19, "y": 4.21 },
{ "label": "GUI", "row": 4, "col": 12, "r": 0, "x": 12.16, "y": 3.89 }
]
}
},
"sensors": [
{
"ref": "encoder_left",
"name": "encoder_left",
"identifier": "encoder_left",
"compatible": "alps,ec11",
"label": "LEFT_ENCODER",
"enabled": false
},
{
"ref": "encoder_right",
"name": "encoder_right",
"identifier": "encoder_right",
"compatible": "alps,ec11",
"label": "RIGHT_ENCODER",
"enabled": false
}
]
}

View File

@@ -1 +0,0 @@
boards/shields/corax/corax.keymap

195
config/corax.keymap Normal file
View File

@@ -0,0 +1,195 @@
#include <behaviors.dtsi>
#include <dt-bindings/zmk/bt.h>
#include <dt-bindings/zmk/keys.h>
#include <dt-bindings/zmk/outputs.h>
#include <dt-bindings/zmk/ext_power.h>
#define COLEMAK 0
#define QWERTY 1
#define WASD 2
#define SYM 3
#define NAV 4
#define ADJUST 5
// additional caps word keys
&caps_word {
continue-list = <UNDERSCORE MINUS LS(MINUS) UP DOWN LEFT RIGHT BSPC DEL>;
};
/ {
behaviors {
lthp: layer_tap_hold_preferred {
compatible = "zmk,behavior-hold-tap";
#binding-cells = <2>;
flavor = "hold-preferred";
tapping-term-ms = <200>;
bindings = <&mo>, <&kp>;
};
mthp: mod_tap_hold_preferred {
compatible = "zmk,behavior-hold-tap";
#binding-cells = <2>;
flavor = "hold-preferred";
tapping-term-ms = <200>;
bindings = <&kp>, <&kp>;
};
};
macros {
// undead `
ud_grave: ud_grave {
compatible = "zmk,behavior-macro";
#binding-cells = <0>;
wait-ms = <10>;
tap-ms = <10>;
bindings = <&kp GRAVE &kp SPACE>;
};
// undead ~
ud_tilde: ud_tilde {
compatible = "zmk,behavior-macro";
#binding-cells = <0>;
wait-ms = <10>;
tap-ms = <10>;
bindings = <&kp TILDE &kp SPACE>;
};
// undead ^
ud_caret: ud_caret {
compatible = "zmk,behavior-macro";
#binding-cells = <0>;
wait-ms = <10>;
tap-ms = <10>;
bindings = <&kp CARET &kp SPACE>;
};
// undead '
ud_sqt: ud_sqt {
compatible = "zmk,behavior-macro";
#binding-cells = <0>;
wait-ms = <10>;
tap-ms = <10>;
bindings = <&kp SQT &kp SPACE>;
};
// undead "
ud_dqt: ud_dqt {
compatible = "zmk,behavior-macro";
#binding-cells = <0>;
wait-ms = <10>;
tap-ms = <10>;
bindings = <&kp LS(SQT) &kp SPACE>;
};
// ascii arrow ->
asc_arr: asc_arr {
compatible = "zmk,behavior-macro";
#binding-cells = <0>;
wait-ms = <10>;
tap-ms = <10>;
bindings = <&kp MINUS &kp LS(DOT)>;
};
};
combos {
compatible = "zmk,combos";
gm_capsword {
bindings = <&caps_word>;
// caps on G+M
key-positions = <28 29>;
};
sticky_adjust {
bindings = <&sl ADJUST>;
// sticky adjust layer on LALT+RALT
key-positions = <51 56>;
};
};
keymap {
compatible = "zmk,keymap";
colemak_layer {
display-name = "Colemak";
bindings = <
&kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp N6 &kp N7 &kp N8 &kp N9 &kp N0
&kp TAB &kp Q &kp W &kp F &kp P &kp B &kp J &kp L &kp U &kp Y &ud_sqt &kp RC(RA(F13))
&kp ESC &kp LCTRL &kp A &kp R &kp S &kp T &kp G &kp M &kp N &kp E &kp I &kp O &kp BSPC &kp RC(RA(F13))
&mt LSHFT LBRC &kp Z &kp X &kp C &kp D &kp V &kp C_MUTE &kp C_PP &kp K &kp H &kp COMMA &kp DOT &kp DEL &mt RSHFT RBRC
&kp LGUI &kp LALT &lthp SYM ESC &kp SPACE &kp ENTER &lt NAV ESC &kp RALT &kp RGUI
>;
sensor-bindings = <&inc_dec_kp C_VOL_DN C_VOL_UP &inc_dec_kp PG_DN PG_UP>;
};
qwerty_layer {
display-name = "QWERTY";
bindings = <
&trans &trans &trans &trans &trans &trans &trans &trans &trans &trans
&trans &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &trans
&trans &trans &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SEMI &trans &trans
&trans &kp Z &kp X &kp C &kp V &kp B &trans &trans &kp N &kp M &kp COMMA &kp DOT &trans &trans
&trans &trans &trans &trans &trans &trans &trans &trans
>;
sensor-bindings = <&inc_dec_kp C_VOL_DN C_VOL_UP &inc_dec_kp PG_DN PG_UP>;
};
gaming_layer {
display-name = "WASD";
bindings = <
&kp TILDE &kp N1 &kp N2 &kp N3 &kp N4 &trans &trans &trans &trans &trans
&kp ESC &kp N5 &kp Q &kp W &kp E &kp R &trans &trans &trans &trans &trans &trans
&trans &kp TAB &kp LCTRL &kp A &kp S &kp D &kp F &trans &trans &trans &trans &trans &trans &trans
&kp M &kp LSHIFT &kp Z &kp X &kp C &kp V &trans &trans &trans &trans &trans &trans &trans &trans
&trans &trans &trans &trans &trans &trans &trans &trans
>;
sensor-bindings = <&inc_dec_kp C_VOL_DN C_VOL_UP &inc_dec_kp PG_DN PG_UP>;
};
// left mod
sym_layer {
display-name = "Symbols";
bindings = <
&kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &kp F7 &kp F8 &kp F9 &kp F10
&trans &none &kp BSLH &kp PRCNT &kp DLLR &kp RA(LS(S)) &none &kp PIPE &ud_caret &kp SLASH &kp RA(N5) &kp F11
&trans &trans &none &kp LPAR &kp RPAR &kp COLON &asc_arr &none &ud_dqt &kp UNDER &kp LBKT &kp RBKT &kp F12 &trans
&trans &none &ud_grave &kp AT &kp AMPS &kp RC(RA(F14)) &trans &trans &none &kp HASH &kp QMARK &kp EXCL &trans &trans
&trans &trans &trans &trans &trans &kp LGUI &trans &trans
>;
sensor-bindings = <&inc_dec_kp C_VOL_DN C_VOL_UP &inc_dec_kp PG_DN PG_UP>;
};
// right mod
nav_layer {
display-name = "Num/Nav";
bindings = <
&kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &kp F7 &kp F8 &kp F9 &kp F10
&trans &kp MINUS &kp N7 &kp N8 &kp N9 &kp STAR &kp INS &kp HOME &kp END &kp PSCRN &none &trans
&trans &trans &kp DOT &kp N1 &kp N2 &kp N3 &kp EQUAL &kp LEFT &kp DOWN &kp UP &kp RIGHT &kp SEMI &trans &trans
&trans &ud_tilde &kp N4 &kp N5 &kp N6 &kp PLUS &trans &trans &kp PAUSE_BREAK &kp PG_DN &kp PG_UP &none &trans &trans
&trans &mt LALT MINUS &mt LGUI N0 &trans &trans &trans &trans &trans
>;
sensor-bindings = <&inc_dec_kp C_VOL_DN C_VOL_UP &inc_dec_kp C_PREV C_NEXT>;
};
adjust_layer {
display-name = "Adjust";
bindings = <
&none &none &none &none &sys_reset &sys_reset &none &none &none &none
&none &to QWERTY &none &to WASD &ext_power EP_ON &none &none &none &none &none &none &none
&none &none &bt BT_CLR &bt BT_SEL 0 &bt BT_SEL 1 &bt BT_SEL 2 &bt BT_SEL 3 &bt BT_SEL 4 &none &none &out OUT_TOG &none &none &none
&none &none &none &to COLEMAK &none &none &trans &trans &none &none &none &none &none &none
&trans &trans &trans &trans &trans &trans &trans &trans
>;
sensor-bindings = <&inc_dec_kp C_VOL_DN C_VOL_UP &inc_dec_kp PG_DN PG_UP>;
};
};
};

View File

@@ -2,16 +2,15 @@ manifest:
remotes:
- name: zmkfirmware
url-base: https://github.com/zmkfirmware
- name: petejohanson
url-base: https://github.com/petejohanson
- name: dnlbauer
url-base: https://github.com/dnlbauer
projects:
- name: zmk
import: app/west.yml
remote: zmkfirmware
revision: main
# use this branch for right side encoder support
# until split encoder is merged into main
#remote: petejohanson
#revision: stephen/split-encoder
- name: zmk-keyboards-corax
remote: dnlbauer
revision: main
self:
path: config