feat(users/flokli/kb/corneish_zen): init

This builds the keyboard firmware using zmk-nix.

The miryoku_zmk config is pulled in from manna-harbour/miryoku_zmk, but
slightly patched to add support for RALT and quick-tap.

Change-Id: I91efbbd789526cce7f086f367c7bccb7857b06e6
Reviewed-on: https://cl.tvl.fyi/c/depot/+/12695
Tested-by: BuildkiteCI
Reviewed-by: flokli <flokli@flokli.de>
Autosubmit: flokli <flokli@flokli.de>
This commit is contained in:
Florian Klink 2024-10-26 18:23:51 +02:00 committed by clbot
parent 0183c36843
commit 4c90f723d8
4 changed files with 146 additions and 0 deletions

View file

@ -0,0 +1,25 @@
From 9ed3e8ee2aad704fcfef2490617e2fd22902b2c4 Mon Sep 17 00:00:00 2001
From: Florian Klink <flokli@flokli.de>
Date: Sun, 27 Oct 2024 12:01:13 +0100
Subject: [PATCH] miryoku_behaviors: add quick-tap-ms, require-prior-idle-ms
---
miryoku/miryoku_behaviors.dtsi | 2 ++
1 file changed, 2 insertions(+)
diff --git a/miryoku/miryoku_behaviors.dtsi b/miryoku/miryoku_behaviors.dtsi
index 473df49..73211da 100644
--- a/miryoku/miryoku_behaviors.dtsi
+++ b/miryoku/miryoku_behaviors.dtsi
@@ -14,6 +14,8 @@
compatible = "zmk,behavior-hold-tap";
#binding-cells = <2>;
tapping-term-ms = <U_TAPPING_TERM>;
+ quick-tap-ms = <200>;
+ require-prior-idle-ms = <125>;
flavor = "tap-preferred";
bindings = <&mo>, <&kp>;
};
--
2.46.1

View file

@ -0,0 +1,25 @@
From a852a9738cc7510f6d3b80d1befb3c88ef8f08f7 Mon Sep 17 00:00:00 2001
From: Florian Klink <flokli@flokli.de>
Date: Sun, 27 Oct 2024 11:14:30 +0100
Subject: [PATCH] miryoku_layer_alternatives.h: expose alt-gr on G and M
---
miryoku/miryoku_babel/miryoku_layer_alternatives.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/miryoku/miryoku_babel/miryoku_layer_alternatives.h b/miryoku/miryoku_babel/miryoku_layer_alternatives.h
index 8044fdd..07ed9b6 100644
--- a/miryoku/miryoku_babel/miryoku_layer_alternatives.h
+++ b/miryoku/miryoku_babel/miryoku_layer_alternatives.h
@@ -86,7 +86,7 @@ U_NP, U_NP, U_LT(U_MEDIA, ESC),U_LT(U_NAV, SPACE),U_LT
#define MIRYOKU_ALTERNATIVES_BASE_COLEMAKDH \
&kp Q, &kp W, &kp F, &kp P, &kp B, &kp J, &kp L, &kp U, &kp Y, &kp SQT, \
-U_MT(LGUI, A), U_MT(LALT, R), U_MT(LCTRL, S), U_MT(LSHFT, T), &kp G, &kp M, U_MT(LSHFT, N), U_MT(LCTRL, E), U_MT(LALT, I), U_MT(LGUI, O), \
+U_MT(LGUI, A), U_MT(LALT, R), U_MT(LCTRL, S), U_MT(LSHFT, T), U_MT(RALT, G), U_MT(RALT, M), U_MT(LSHFT, N), U_MT(LCTRL, E), U_MT(LALT, I), U_MT(LGUI, O), \
U_LT(U_BUTTON, Z), U_MT(RALT, X), &kp C, &kp D, &kp V, &kp K, &kp H, &kp COMMA, U_MT(RALT, DOT), U_LT(U_BUTTON, SLASH),\
U_NP, U_NP, U_LT(U_MEDIA, ESC),U_LT(U_NAV, SPACE),U_LT(U_MOUSE, TAB),U_LT(U_SYM, RET), U_LT(U_NUM, BSPC), U_LT(U_FUN, DEL), U_NP, U_NP
--
2.46.1

View file

@ -0,0 +1,62 @@
{ pkgs, lib, ... }:
let
zmk-nix = pkgs.fetchFromGitHub {
owner = "lilyinstarlight";
repo = "zmk-nix";
rev = "d72e94ab94b2bceb60a29a2a8c2e1d304a4e922e";
hash = "sha256-3WXPPBJ2u8rMxejPhUahSiqOBr1BOfTgDa7oQDPtw54=";
};
builders = pkgs.callPackage (import (zmk-nix + "/nix/builders.nix")) { };
miryoku_zmk = pkgs.fetchFromGitHub {
owner = "manna-harbour";
repo = "miryoku_zmk";
rev = "e6683e9f8b6c199b339208b1b501e88a7308ed48";
hash = "sha256-GjTbAoyhr557Tn4JaWsA3Po5KxMsQXrpKc9H+PU3T8A=";
};
miryoku_zmk_patched = pkgs.runCommand "miryoku_zmk_patched" { } ''
mkdir -p $out
cp -r ${miryoku_zmk}/. $out/
cd $out
chmod -R +w $out
patch -p1 < ${./0001-miryoku_layer_alternatives.h-expose-alt-gr-on-G-and-.patch}
patch -p1 < ${./0001-miryoku_behaviors-add-quick-tap-ms-require-prior-idl.patch}
'';
in
rec {
config = pkgs.runCommand "config" { } ''
mkdir -p $out/config
cp -r ${miryoku_zmk_patched}/miryoku $out/
cp ${./west.yml} $out/config/west.yml
cp ${miryoku_zmk_patched}/config/corneish_zen.keymap $out/config/
'';
# helpful for debugging the resulting keymap
config-flat = pkgs.runCommand "config-flat"
{
nativeBuildInputs = [ pkgs.python3.pkgs.pcpp ];
} ''
mkdir -p $out/config
cp ${./west.yml} $out/config/west.yml
pcpp --passthru-unfound-includes -o $out/config/corneish_zen.keymap ${miryoku_zmk_patched}/config/corneish_zen.keymap
'';
firmware = builders.buildSplitKeyboard {
name = "corneish_zen_v1";
board = "corneish_zen_v1_%PART%";
zephyrDepsHash = "sha256-D5CAlrO/E6DPbtUJyh/ec8ACpo1XM1jx2gLS2TpklBQ=";
src = config;
};
flash-left = pkgs.writeShellScript "flash.sh" ''
cp ${firmware}/zmk_left.uf2 /run/media/$USER/CORNEISHZEN/
'';
flash-right = pkgs.writeShellScript "flash.sh" ''
cp ${firmware}/zmk_right.uf2 /run/media/$USER/CORNEISHZEN/
'';
}

View file

@ -0,0 +1,34 @@
manifest:
remotes:
- name: zmkfirmware
url-base: https://github.com/zmkfirmware
projects:
- name: zephyr
remote: zmkfirmware
revision: f8e4d15791602c67405c0fd2651167a895939565 # v3.5.0+zmk-fixes
import:
name-blocklist:
- ci-tools
- hal_altera
- hal_cypress
- hal_infineon
- hal_microchip
- hal_nxp
- hal_openisa
- hal_silabs
- hal_xtensa
- hal_st
- hal_ti
- loramac-node
- mcuboot
- mcumgr
- net-tools
- openthread
- edtt
- trusted-firmware-m
- name: zmk
remote: zmkfirmware
revision: 7f1ee320ab638245bbdae9b1cda5d5c50e2cb16e # main
import: app/west.yml
self:
path: config