a fancy pants keyboard i'm making

feat: add zmk config

dunkirk.sh 83a15f6c 03af0883

verified
+6
.github/workflows/build.yml
···
+
name: Build ZMK firmware
+
on: [push, pull_request, workflow_dispatch]
+
+
jobs:
+
build:
+
uses: zmkfirmware/zmk/.github/workflows/build-user-config.yml@main
zmk-config/boards/shields/.gitkeep

This is a binary file and will not be displayed.

+5
zmk-config/boards/shields/thyme/.Kconfig.shield
···
+
config SHIELD_THYME_LEFT
+
def_bool $(shields_list_contains,thyme_left)
+
+
config SHIELD_THYME_RIGHT
+
def_bool $(shields_list_contains,thyme_right)
+16
zmk-config/boards/shields/thyme/Kconfig.defconfig
···
+
if SHIELD_THYME_LEFT
+
+
config ZMK_KEYBOARD_NAME
+
default "Thyme"
+
+
config ZMK_SPLIT_ROLE_CENTRAL
+
default y
+
+
endif
+
+
if SHIELD_THYME_LEFT || SHIELD_THYME_RIGHT
+
+
config ZMK_SPLIT
+
default y
+
+
endif
+19
zmk-config/boards/shields/thyme/thyme-left.overlay
···
+
#include "thyme.dtsi"
+
+
&kscan0 {
+
row-gpios
+
= <&pro_micro 17 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
+
, <&pro_micro 12 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
+
, <&pro_micro 11 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
+
, <&pro_micro 18 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
+
;
+
+
col-gpios
+
= <&pro_micro 5 GPIO_ACTIVE_HIGH>
+
, <&pro_micro 6 GPIO_ACTIVE_HIGH>
+
, <&pro_micro 10 GPIO_ACTIVE_HIGH>
+
, <&pro_micro 7 GPIO_ACTIVE_HIGH>
+
, <&pro_micro 8 GPIO_ACTIVE_HIGH>
+
, <&pro_micro 9 GPIO_ACTIVE_HIGH>
+
;
+
};
+23
zmk-config/boards/shields/thyme/thyme-right.overlay
···
+
#include "thyme.dtsi"
+
+
&default_transform {
+
col-offset = <6>;
+
};
+
+
&kscan0 {
+
row-gpios
+
= <&pro_micro 17 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
+
, <&pro_micro 24 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
+
, <&pro_micro 10 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
+
, <&pro_micro 11 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
+
;
+
+
col-gpios
+
= <&pro_micro 18 GPIO_ACTIVE_HIGH>
+
, <&pro_micro 19 GPIO_ACTIVE_HIGH>
+
, <&pro_micro 20 GPIO_ACTIVE_HIGH>
+
, <&pro_micro 21 GPIO_ACTIVE_HIGH>
+
, <&pro_micro 22 GPIO_ACTIVE_HIGH>
+
, <&pro_micro 23 GPIO_ACTIVE_HIGH>
+
;
+
};
+37
zmk-config/boards/shields/thyme/thyme.dtsi
···
+
#include <dt-bindings/zmk/matrix_transform.h>
+
+
#include <layouts/foostan/corne/6column.dtsi>
+
+
&foostan_corne_6col_layout {
+
transform = <&default_transform>;
+
};
+
+
/ {
+
chosen {
+
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 | | SW22 | SW23 | SW26 | SW29 | SW32 | SW35 |
+
// | SW7 | SW8 | SW9 | SW10 | SW11 | SW12 | | SW23 | SW24 | SW27 | SW30 | SW33 | SW36 |
+
// | SW13 | SW14 | SW15 | SW16 | SW17 | SW18 | | SW24 | SW25 | SW28 | SW31 | SW34 | SW37 |
+
// | SW19 | SW20 | SW21 | | SW38 | SW39 | SW40 |
+
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)
+
>;
+
};
+
+
kscan0: kscan {
+
compatible = "zmk,kscan-gpio-matrix";
+
wakeup-source;
+
+
diode-direction = "col2row";
+
};
+
};
+50
zmk-config/boards/shields/thyme/thyme.keymap
···
+
#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 | BSPC |
+
// | 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 | BSPC |
+
// | 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 | ! | @ | # | $ | % | | ^ | & | * | ( | ) | BSPC |
+
// | 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
+
>;
+
};
+
};
+
};
+11
zmk-config/boards/shields/thyme/thyme.zmk.yml
···
+
file_format: "1"
+
id: thyme
+
name: Thyme
+
type: shield
+
url: https://github.com/taciturnaxolotl/thyme
+
requires: [pro_micro]
+
features:
+
- keys
+
siblings:
+
- thyme_left
+
- thyme_right
+25
zmk-config/build.yaml
···
+
# This file generates the GitHub Actions matrix.
+
# For simple board + shield combinations, add them to the top level board and
+
# shield arrays, for more control, add individual board + shield combinations
+
# to the `include` property. You can also use the `cmake-args` property to
+
# pass flags to the build command, `snippet` to add a Zephyr snippet, and
+
# `artifact-name` to assign a name to distinguish build outputs from each other:
+
#
+
# board: [ "nice_nano_v2" ]
+
# shield: [ "corne_left", "corne_right" ]
+
# include:
+
# - board: bdn9_rev2
+
# - board: nice_nano_v2
+
# shield: reviung41
+
# - board: nice_nano_v2
+
# shield: corne_left
+
# snippet: studio-rpc-usb-uart
+
# cmake-args: -DCONFIG_ZMK_STUDIO=y
+
# artifact-name: corne_left_with_studio
+
#
+
---
+
include:
+
- board: nice_nano
+
shield: thyme_left
+
- board: nice_nano
+
shield: thyme_right
+6
zmk-config/config/thyme.conf
···
+
# 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
+56
zmk-config/config/thyme.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 | BSPC |
+
// | 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 | BSPC |
+
// | 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 | ! | @ | # | $ | % | | ^ | & | * | ( | ) | BSPC |
+
// | 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
+
>;
+
};
+
};
+
};
+13
zmk-config/config/west.yml
···
+
manifest:
+
remotes:
+
- name: zmkfirmware
+
url-base: https://github.com/zmkfirmware
+
# Additional modules containing boards/shields/custom code can be listed here as well
+
# See https://docs.zephyrproject.org/3.2.0/develop/west/manifest.html#projects
+
projects:
+
- name: zmk
+
remote: zmkfirmware
+
revision: main
+
import: app/west.yml
+
self:
+
path: config
+4
zmk-config/zephyr/module.yml
···
+
name: zmk-keyboard-thyme
+
build:
+
settings:
+
board_root: .