Add docs and layout auto-generation
This commit is contained in:
parent
996908b729
commit
07e03b03ef
28
.github/workflows/generate-layout-previews.yaml
vendored
Normal file
28
.github/workflows/generate-layout-previews.yaml
vendored
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
name: Generate layout previews
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout Code
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Install Nix
|
||||||
|
uses: cachix/install-nix-action@v22
|
||||||
|
|
||||||
|
- name: Generate Files
|
||||||
|
run: |
|
||||||
|
nix run .#generate-layout-previews
|
||||||
|
|
||||||
|
- name: Commit and Push Changes
|
||||||
|
run: |
|
||||||
|
git config --local user.email "action@github.com"
|
||||||
|
git config --local user.name "GitHub Action"
|
||||||
|
git add .
|
||||||
|
git diff --quiet --cached || git commit -m "Auto-generated layout previews [skip ci]"
|
||||||
|
git push
|
13
README.md
Normal file
13
README.md
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
# Welcome to KeySwirl
|
||||||
|
|
||||||
|
This is my repository for lots of keyboard related things!
|
||||||
|
|
||||||
|
| Name | Description |
|
||||||
|
| ---------------------------- | ----------------------------------- |
|
||||||
|
| [keyboards](./keyboards/qmk) | qmk configurations for my keyboards |
|
||||||
|
| [layout-lens](./layout-lens) | keyboard layout to SVG renderer |
|
||||||
|
|
||||||
|
Some neat thingies:
|
||||||
|
|
||||||
|
- This repository provides a nix flake for devshells and builds.
|
||||||
|
- Each keyboard contains a `lens.json` which automatically generates a prevew in CI!
|
|
@ -14,6 +14,15 @@
|
||||||
defaultPackage = packages.layout-lens;
|
defaultPackage = packages.layout-lens;
|
||||||
devShells.layout-lens = pkgs.callPackage ./layout-lens/shell.nix { };
|
devShells.layout-lens = pkgs.callPackage ./layout-lens/shell.nix { };
|
||||||
devShells.qmk = pkgs.callPackage ./keyboards/qmk/shell.nix { };
|
devShells.qmk = pkgs.callPackage ./keyboards/qmk/shell.nix { };
|
||||||
|
|
||||||
|
apps.generate-layout-previews = {
|
||||||
|
type = "app";
|
||||||
|
program = pkgs.lib.getExe (pkgs.writeShellApplication {
|
||||||
|
name = "generate-layout-previes";
|
||||||
|
runtimeInputs = [ layout-lens ];
|
||||||
|
text = builtins.readFile ./layout-lens/scripts/generate-layouts.sh;
|
||||||
|
});
|
||||||
|
};
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
10
keyboards/qmk/ferris-sweep/README.md
Normal file
10
keyboards/qmk/ferris-sweep/README.md
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# Ferris sweep
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
This directory contains the configuration files for my ferris sweep!
|
||||||
|
|
||||||
|
## Layout philosophy
|
||||||
|
|
||||||
|
- every symbol must be accessible without having to press `shift`
|
||||||
|
- combos are awesome
|
517
keyboards/qmk/ferris-sweep/lens.svg
Normal file
517
keyboards/qmk/ferris-sweep/lens.svg
Normal file
|
@ -0,0 +1,517 @@
|
||||||
|
<svg viewBox="-20 -20 640 340" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||||
|
<g transform="undefined">
|
||||||
|
<rect width="50px" height="50px" x="0" y="50" fill="#ffffff" stroke="#000000" stroke-width="2px">
|
||||||
|
</rect>
|
||||||
|
<text x="25" y="75" textLength="25px" fill="black" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
Q
|
||||||
|
</text>
|
||||||
|
<text x="8.333333333333334" y="58.333333333333336" fill="blue" font-size="66%" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
!
|
||||||
|
</text>
|
||||||
|
<text x="45" y="58.333333333333336" fill="red" font-size="66%" text-anchor="end" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
TR
|
||||||
|
</text>
|
||||||
|
<text x="5" y="91.66666666666666" fill="purple" font-size="66%" text-anchor="start" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
f1
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<g transform="undefined">
|
||||||
|
<rect width="50px" height="50px" x="0" y="100" fill="#ffffff" stroke="#000000" stroke-width="2px">
|
||||||
|
</rect>
|
||||||
|
<text x="25" y="125" textLength="25px" fill="black" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
A
|
||||||
|
</text>
|
||||||
|
<text x="8.333333333333334" y="108.33333333333333" fill="blue" font-size="66%" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
<
|
||||||
|
</text>
|
||||||
|
<text x="45" y="108.33333333333333" fill="red" font-size="66%" text-anchor="end" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
6
|
||||||
|
</text>
|
||||||
|
<text x="5" y="141.66666666666666" fill="purple" font-size="66%" text-anchor="start" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
f6
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<g transform="undefined">
|
||||||
|
<rect width="50px" height="50px" x="0" y="150" fill="#ffffff" stroke="#000000" stroke-width="2px">
|
||||||
|
</rect>
|
||||||
|
<text x="25" y="175" textLength="25px" fill="black" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
X
|
||||||
|
</text>
|
||||||
|
<text x="8.333333333333334" y="158.33333333333334" fill="blue" font-size="66%" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
>
|
||||||
|
</text>
|
||||||
|
<text x="45" y="158.33333333333334" fill="red" font-size="66%" text-anchor="end" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
</text>
|
||||||
|
<text x="5" y="191.66666666666666" fill="purple" font-size="66%" text-anchor="start" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
f11
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<g transform="undefined">
|
||||||
|
<rect width="50px" height="50px" x="50" y="25" fill="#ffffff" stroke="#000000" stroke-width="2px">
|
||||||
|
</rect>
|
||||||
|
<text x="75" y="50" textLength="25px" fill="black" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
W
|
||||||
|
</text>
|
||||||
|
<text x="58.333333333333336" y="33.333333333333336" fill="blue" font-size="66%" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
@
|
||||||
|
</text>
|
||||||
|
<text x="95" y="33.333333333333336" fill="red" font-size="66%" text-anchor="end" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
2
|
||||||
|
</text>
|
||||||
|
<text x="55" y="66.66666666666666" fill="purple" font-size="66%" text-anchor="start" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
f2
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<g transform="undefined">
|
||||||
|
<rect width="50px" height="50px" x="50" y="75" fill="#ffffff" stroke="#000000" stroke-width="2px">
|
||||||
|
</rect>
|
||||||
|
<text x="75" y="100" textLength="25px" fill="black" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
R
|
||||||
|
</text>
|
||||||
|
<text x="58.333333333333336" y="83.33333333333333" fill="blue" font-size="66%" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
(
|
||||||
|
</text>
|
||||||
|
<text x="95" y="83.33333333333333" fill="red" font-size="66%" text-anchor="end" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
7
|
||||||
|
</text>
|
||||||
|
<text x="55" y="116.66666666666666" fill="purple" font-size="66%" text-anchor="start" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
f7
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<g transform="undefined">
|
||||||
|
<rect width="50px" height="50px" x="50" y="125" fill="#ffffff" stroke="#000000" stroke-width="2px">
|
||||||
|
</rect>
|
||||||
|
<text x="75" y="150" textLength="25px" fill="black" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
C
|
||||||
|
</text>
|
||||||
|
<text x="58.333333333333336" y="133.33333333333334" fill="blue" font-size="66%" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
]
|
||||||
|
</text>
|
||||||
|
<text x="95" y="133.33333333333334" fill="red" font-size="66%" text-anchor="end" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
</text>
|
||||||
|
<text x="55" y="166.66666666666666" fill="purple" font-size="66%" text-anchor="start" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
f12
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<g transform="undefined">
|
||||||
|
<rect width="50px" height="50px" x="100" y="0" fill="#ffffff" stroke="#000000" stroke-width="2px">
|
||||||
|
</rect>
|
||||||
|
<text x="125" y="25" textLength="25px" fill="black" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
F
|
||||||
|
</text>
|
||||||
|
<text x="108.33333333333333" y="8.333333333333334" fill="blue" font-size="66%" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
#
|
||||||
|
</text>
|
||||||
|
<text x="145" y="8.333333333333334" fill="red" font-size="66%" text-anchor="end" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
3
|
||||||
|
</text>
|
||||||
|
<text x="105" y="41.666666666666664" fill="purple" font-size="66%" text-anchor="start" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
f3
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<g transform="undefined">
|
||||||
|
<rect width="50px" height="50px" x="100" y="50" fill="#ffffff" stroke="#000000" stroke-width="2px">
|
||||||
|
</rect>
|
||||||
|
<text x="125" y="75" textLength="25px" fill="black" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
S
|
||||||
|
</text>
|
||||||
|
<text x="108.33333333333333" y="58.333333333333336" fill="blue" font-size="66%" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
[
|
||||||
|
</text>
|
||||||
|
<text x="145" y="58.333333333333336" fill="red" font-size="66%" text-anchor="end" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
8
|
||||||
|
</text>
|
||||||
|
<text x="105" y="91.66666666666666" fill="purple" font-size="66%" text-anchor="start" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
f8
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<g transform="undefined">
|
||||||
|
<rect width="50px" height="50px" x="100" y="100" fill="#ffffff" stroke="#000000" stroke-width="2px">
|
||||||
|
</rect>
|
||||||
|
<text x="125" y="125" textLength="25px" fill="black" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
D
|
||||||
|
</text>
|
||||||
|
<text x="108.33333333333333" y="108.33333333333333" fill="blue" font-size="66%" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
]
|
||||||
|
</text>
|
||||||
|
<text x="145" y="108.33333333333333" fill="red" font-size="66%" text-anchor="end" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
</text>
|
||||||
|
<text x="105" y="141.66666666666666" fill="purple" font-size="66%" text-anchor="start" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<g transform="undefined">
|
||||||
|
<rect width="50px" height="50px" x="150" y="25" fill="#ffffff" stroke="#000000" stroke-width="2px">
|
||||||
|
</rect>
|
||||||
|
<text x="175" y="50" textLength="25px" fill="black" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
P
|
||||||
|
</text>
|
||||||
|
<text x="158.33333333333334" y="33.333333333333336" fill="blue" font-size="66%" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
$
|
||||||
|
</text>
|
||||||
|
<text x="195" y="33.333333333333336" fill="red" font-size="66%" text-anchor="end" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
4
|
||||||
|
</text>
|
||||||
|
<text x="155" y="66.66666666666666" fill="purple" font-size="66%" text-anchor="start" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
f4
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<g transform="undefined">
|
||||||
|
<rect width="50px" height="50px" x="150" y="75" fill="#ffffff" stroke="#000000" stroke-width="2px">
|
||||||
|
</rect>
|
||||||
|
<text x="175" y="100" textLength="25px" fill="black" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
T
|
||||||
|
</text>
|
||||||
|
<text x="158.33333333333334" y="83.33333333333333" fill="blue" font-size="66%" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
{
|
||||||
|
</text>
|
||||||
|
<text x="195" y="83.33333333333333" fill="red" font-size="66%" text-anchor="end" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
9
|
||||||
|
</text>
|
||||||
|
<text x="155" y="116.66666666666666" fill="purple" font-size="66%" text-anchor="start" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
f9
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<g transform="undefined">
|
||||||
|
<rect width="50px" height="50px" x="150" y="125" fill="#ffffff" stroke="#000000" stroke-width="2px">
|
||||||
|
</rect>
|
||||||
|
<text x="175" y="150" textLength="25px" fill="black" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
V
|
||||||
|
</text>
|
||||||
|
<text x="158.33333333333334" y="133.33333333333334" fill="blue" font-size="66%" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
}
|
||||||
|
</text>
|
||||||
|
<text x="195" y="133.33333333333334" fill="red" font-size="66%" text-anchor="end" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
</text>
|
||||||
|
<text x="155" y="166.66666666666666" fill="purple" font-size="66%" text-anchor="start" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<g transform="undefined">
|
||||||
|
<rect width="50px" height="50px" x="200" y="50" fill="#ffffff" stroke="#000000" stroke-width="2px">
|
||||||
|
</rect>
|
||||||
|
<text x="225" y="75" textLength="25px" fill="black" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
B
|
||||||
|
</text>
|
||||||
|
<text x="208.33333333333334" y="58.333333333333336" fill="blue" font-size="66%" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
%
|
||||||
|
</text>
|
||||||
|
<text x="245" y="58.333333333333336" fill="red" font-size="66%" text-anchor="end" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
5
|
||||||
|
</text>
|
||||||
|
<text x="205" y="91.66666666666666" fill="purple" font-size="66%" text-anchor="start" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
f5
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<g transform="undefined">
|
||||||
|
<rect width="50px" height="50px" x="200" y="100" fill="#ffffff" stroke="#000000" stroke-width="2px">
|
||||||
|
</rect>
|
||||||
|
<text x="225" y="125" textLength="25px" fill="black" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
G
|
||||||
|
</text>
|
||||||
|
<text x="208.33333333333334" y="108.33333333333333" fill="blue" font-size="66%" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
-
|
||||||
|
</text>
|
||||||
|
<text x="245" y="108.33333333333333" fill="red" font-size="66%" text-anchor="end" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
TL
|
||||||
|
</text>
|
||||||
|
<text x="205" y="141.66666666666666" fill="purple" font-size="66%" text-anchor="start" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
f10
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<g transform="undefined">
|
||||||
|
<rect width="50px" height="50px" x="200" y="150" fill="#ffffff" stroke="#000000" stroke-width="2px">
|
||||||
|
</rect>
|
||||||
|
<text x="225" y="175" textLength="25px" fill="black" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
Z
|
||||||
|
</text>
|
||||||
|
<text x="208.33333333333334" y="158.33333333333334" fill="blue" font-size="66%" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
—
|
||||||
|
</text>
|
||||||
|
<text x="245" y="158.33333333333334" fill="red" font-size="66%" text-anchor="end" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
</text>
|
||||||
|
<text x="205" y="191.66666666666666" fill="purple" font-size="66%" text-anchor="start" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<g transform="rotate(15, 200, 250)">
|
||||||
|
<rect width="50px" height="50px" x="175" y="225" fill="#ffffff" stroke="#000000" stroke-width="2px">
|
||||||
|
</rect>
|
||||||
|
<text x="200" y="250" textLength="25px" fill="red" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
■
|
||||||
|
</text>
|
||||||
|
<text x="183.33333333333334" y="233.33333333333334" fill="blue" font-size="66%" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
</text>
|
||||||
|
<text x="220" y="233.33333333333334" fill="red" font-size="66%" text-anchor="end" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
</text>
|
||||||
|
<text x="180" y="266.6666666666667" fill="purple" font-size="66%" text-anchor="start" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<g transform="rotate(15, 248.2962913144534, 262.94095225512604)">
|
||||||
|
<rect width="50px" height="50px" x="223.2962913144534" y="237.94095225512604" fill="#ffffff" stroke="#000000" stroke-width="2px">
|
||||||
|
</rect>
|
||||||
|
<text x="248.2962913144534" y="262.94095225512604" textLength="25px" fill="black" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
␣
|
||||||
|
</text>
|
||||||
|
<text x="231.62962464778676" y="246.27428558845938" fill="blue" font-size="66%" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
</text>
|
||||||
|
<text x="268.2962913144534" y="246.27428558845938" fill="red" font-size="66%" text-anchor="end" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
</text>
|
||||||
|
<text x="228.2962913144534" y="279.6076189217927" fill="purple" font-size="66%" text-anchor="start" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<g transform="rotate(-15, 351.7037086855466, 262.94095225512604)">
|
||||||
|
<rect width="50px" height="50px" x="326.7037086855466" y="237.94095225512604" fill="#ffffff" stroke="#000000" stroke-width="2px">
|
||||||
|
</rect>
|
||||||
|
<text x="351.7037086855466" y="262.94095225512604" textLength="25px" fill="black" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
⇧
|
||||||
|
</text>
|
||||||
|
<text x="335.0370420188799" y="246.27428558845938" fill="blue" font-size="66%" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
</text>
|
||||||
|
<text x="371.7037086855466" y="246.27428558845938" fill="red" font-size="66%" text-anchor="end" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
</text>
|
||||||
|
<text x="331.7037086855466" y="279.6076189217927" fill="purple" font-size="66%" text-anchor="start" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<g transform="rotate(-15, 400, 250)">
|
||||||
|
<rect width="50px" height="50px" x="375" y="225" fill="#ffffff" stroke="#000000" stroke-width="2px">
|
||||||
|
</rect>
|
||||||
|
<text x="400" y="250" textLength="25px" fill="blue" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
■
|
||||||
|
</text>
|
||||||
|
<text x="383.3333333333333" y="233.33333333333334" fill="blue" font-size="66%" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
</text>
|
||||||
|
<text x="420" y="233.33333333333334" fill="red" font-size="66%" text-anchor="end" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
</text>
|
||||||
|
<text x="380" y="266.6666666666667" fill="purple" font-size="66%" text-anchor="start" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<g transform="undefined">
|
||||||
|
<rect width="50px" height="50px" x="350" y="50" fill="#ffffff" stroke="#000000" stroke-width="2px">
|
||||||
|
</rect>
|
||||||
|
<text x="375" y="75" textLength="25px" fill="black" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
J
|
||||||
|
</text>
|
||||||
|
<text x="358.3333333333333" y="58.333333333333336" fill="blue" font-size="66%" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
^
|
||||||
|
</text>
|
||||||
|
<text x="395" y="58.333333333333336" fill="red" font-size="66%" text-anchor="end" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
🏠
|
||||||
|
</text>
|
||||||
|
<text x="355" y="91.66666666666666" fill="purple" font-size="66%" text-anchor="start" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<g transform="undefined">
|
||||||
|
<rect width="50px" height="50px" x="350" y="100" fill="#ffffff" stroke="#000000" stroke-width="2px">
|
||||||
|
</rect>
|
||||||
|
<text x="375" y="125" textLength="25px" fill="black" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
M
|
||||||
|
</text>
|
||||||
|
<text x="358.3333333333333" y="108.33333333333333" fill="blue" font-size="66%" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
?
|
||||||
|
</text>
|
||||||
|
<text x="395" y="108.33333333333333" fill="red" font-size="66%" text-anchor="end" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
◄
|
||||||
|
</text>
|
||||||
|
<text x="355" y="141.66666666666666" fill="purple" font-size="66%" text-anchor="start" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
😱
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<g transform="undefined">
|
||||||
|
<rect width="50px" height="50px" x="350" y="150" fill="#ffffff" stroke="#000000" stroke-width="2px">
|
||||||
|
</rect>
|
||||||
|
<text x="375" y="175" textLength="25px" fill="black" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
K
|
||||||
|
</text>
|
||||||
|
<text x="358.3333333333333" y="158.33333333333334" fill="blue" font-size="66%" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
</text>
|
||||||
|
<text x="395" y="158.33333333333334" fill="red" font-size="66%" text-anchor="end" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
</text>
|
||||||
|
<text x="355" y="191.66666666666666" fill="purple" font-size="66%" text-anchor="start" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
🎮
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<g transform="undefined">
|
||||||
|
<rect width="50px" height="50px" x="400" y="25" fill="#ffffff" stroke="#000000" stroke-width="2px">
|
||||||
|
</rect>
|
||||||
|
<text x="425" y="50" textLength="25px" fill="black" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
L
|
||||||
|
</text>
|
||||||
|
<text x="408.3333333333333" y="33.333333333333336" fill="blue" font-size="66%" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
&
|
||||||
|
</text>
|
||||||
|
<text x="445" y="33.333333333333336" fill="red" font-size="66%" text-anchor="end" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
⏬
|
||||||
|
</text>
|
||||||
|
<text x="405" y="66.66666666666666" fill="purple" font-size="66%" text-anchor="start" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
🔊
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<g transform="undefined">
|
||||||
|
<rect width="50px" height="50px" x="400" y="75" fill="#ffffff" stroke="#000000" stroke-width="2px">
|
||||||
|
</rect>
|
||||||
|
<text x="425" y="100" textLength="25px" fill="black" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
N
|
||||||
|
</text>
|
||||||
|
<text x="408.3333333333333" y="83.33333333333333" fill="blue" font-size="66%" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
_
|
||||||
|
</text>
|
||||||
|
<text x="445" y="83.33333333333333" fill="red" font-size="66%" text-anchor="end" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
▼
|
||||||
|
</text>
|
||||||
|
<text x="405" y="116.66666666666666" fill="purple" font-size="66%" text-anchor="start" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
🔉
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<g transform="undefined">
|
||||||
|
<rect width="50px" height="50px" x="400" y="125" fill="#ffffff" stroke="#000000" stroke-width="2px">
|
||||||
|
</rect>
|
||||||
|
<text x="425" y="150" textLength="25px" fill="black" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
H
|
||||||
|
</text>
|
||||||
|
<text x="408.3333333333333" y="133.33333333333334" fill="blue" font-size="66%" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
|
|
||||||
|
</text>
|
||||||
|
<text x="445" y="133.33333333333334" fill="red" font-size="66%" text-anchor="end" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
</text>
|
||||||
|
<text x="405" y="166.66666666666666" fill="purple" font-size="66%" text-anchor="start" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
🔇
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<g transform="undefined">
|
||||||
|
<rect width="50px" height="50px" x="450" y="0" fill="#ffffff" stroke="#000000" stroke-width="2px">
|
||||||
|
</rect>
|
||||||
|
<text x="475" y="25" textLength="25px" fill="black" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
U
|
||||||
|
</text>
|
||||||
|
<text x="458.3333333333333" y="8.333333333333334" fill="blue" font-size="66%" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
*
|
||||||
|
</text>
|
||||||
|
<text x="495" y="8.333333333333334" fill="red" font-size="66%" text-anchor="end" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
⏫
|
||||||
|
</text>
|
||||||
|
<text x="455" y="41.666666666666664" fill="purple" font-size="66%" text-anchor="start" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
🔆
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<g transform="undefined">
|
||||||
|
<rect width="50px" height="50px" x="450" y="50" fill="#ffffff" stroke="#000000" stroke-width="2px">
|
||||||
|
</rect>
|
||||||
|
<text x="475" y="75" textLength="25px" fill="black" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
E
|
||||||
|
</text>
|
||||||
|
<text x="458.3333333333333" y="58.333333333333336" fill="blue" font-size="66%" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
/
|
||||||
|
</text>
|
||||||
|
<text x="495" y="58.333333333333336" fill="red" font-size="66%" text-anchor="end" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
▲
|
||||||
|
</text>
|
||||||
|
<text x="455" y="91.66666666666666" fill="purple" font-size="66%" text-anchor="start" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
🔅
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<g transform="undefined">
|
||||||
|
<rect width="50px" height="50px" x="450" y="100" fill="#ffffff" stroke="#000000" stroke-width="2px">
|
||||||
|
</rect>
|
||||||
|
<text x="475" y="125" textLength="25px" fill="black" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
,
|
||||||
|
</text>
|
||||||
|
<text x="458.3333333333333" y="108.33333333333333" fill="blue" font-size="66%" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
\
|
||||||
|
</text>
|
||||||
|
<text x="495" y="108.33333333333333" fill="red" font-size="66%" text-anchor="end" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
</text>
|
||||||
|
<text x="455" y="141.66666666666666" fill="purple" font-size="66%" text-anchor="start" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<g transform="undefined">
|
||||||
|
<rect width="50px" height="50px" x="500" y="25" fill="#ffffff" stroke="#000000" stroke-width="2px">
|
||||||
|
</rect>
|
||||||
|
<text x="525" y="50" textLength="25px" fill="black" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
Y
|
||||||
|
</text>
|
||||||
|
<text x="508.3333333333333" y="33.333333333333336" fill="blue" font-size="66%" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
~
|
||||||
|
</text>
|
||||||
|
<text x="545" y="33.333333333333336" fill="red" font-size="66%" text-anchor="end" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
end
|
||||||
|
</text>
|
||||||
|
<text x="505" y="66.66666666666666" fill="purple" font-size="66%" text-anchor="start" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
⏪
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<g transform="undefined">
|
||||||
|
<rect width="50px" height="50px" x="500" y="75" fill="#ffffff" stroke="#000000" stroke-width="2px">
|
||||||
|
</rect>
|
||||||
|
<text x="525" y="100" textLength="25px" fill="black" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
I
|
||||||
|
</text>
|
||||||
|
<text x="508.3333333333333" y="83.33333333333333" fill="blue" font-size="66%" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
=
|
||||||
|
</text>
|
||||||
|
<text x="545" y="83.33333333333333" fill="red" font-size="66%" text-anchor="end" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
►
|
||||||
|
</text>
|
||||||
|
<text x="505" y="116.66666666666666" fill="purple" font-size="66%" text-anchor="start" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
⏯️
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<g transform="undefined">
|
||||||
|
<rect width="50px" height="50px" x="500" y="125" fill="#ffffff" stroke="#000000" stroke-width="2px">
|
||||||
|
</rect>
|
||||||
|
<text x="525" y="150" textLength="25px" fill="black" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
.
|
||||||
|
</text>
|
||||||
|
<text x="508.3333333333333" y="133.33333333333334" fill="blue" font-size="66%" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
+
|
||||||
|
</text>
|
||||||
|
<text x="545" y="133.33333333333334" fill="red" font-size="66%" text-anchor="end" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
</text>
|
||||||
|
<text x="505" y="166.66666666666666" fill="purple" font-size="66%" text-anchor="start" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
⏩
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<g transform="undefined">
|
||||||
|
<rect width="50px" height="50px" x="550" y="50" fill="#ffffff" stroke="#000000" stroke-width="2px">
|
||||||
|
</rect>
|
||||||
|
<text x="575" y="75" textLength="25px" fill="black" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
:
|
||||||
|
</text>
|
||||||
|
<text x="558.3333333333334" y="58.333333333333336" fill="blue" font-size="66%" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
`
|
||||||
|
</text>
|
||||||
|
<text x="595" y="58.333333333333336" fill="red" font-size="66%" text-anchor="end" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
del
|
||||||
|
</text>
|
||||||
|
<text x="555" y="91.66666666666666" fill="purple" font-size="66%" text-anchor="start" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
copy
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<g transform="undefined">
|
||||||
|
<rect width="50px" height="50px" x="550" y="100" fill="#ffffff" stroke="#000000" stroke-width="2px">
|
||||||
|
</rect>
|
||||||
|
<text x="575" y="125" textLength="25px" fill="black" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
O
|
||||||
|
</text>
|
||||||
|
<text x="558.3333333333334" y="108.33333333333333" fill="blue" font-size="66%" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
;
|
||||||
|
</text>
|
||||||
|
<text x="595" y="108.33333333333333" fill="red" font-size="66%" text-anchor="end" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
</text>
|
||||||
|
<text x="555" y="141.66666666666666" fill="purple" font-size="66%" text-anchor="start" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
paste
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<g transform="undefined">
|
||||||
|
<rect width="50px" height="50px" x="550" y="150" fill="#ffffff" stroke="#000000" stroke-width="2px">
|
||||||
|
</rect>
|
||||||
|
<text x="575" y="175" textLength="25px" fill="black" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
'
|
||||||
|
</text>
|
||||||
|
<text x="558.3333333333334" y="158.33333333333334" fill="blue" font-size="66%" text-anchor="middle" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
"
|
||||||
|
</text>
|
||||||
|
<text x="595" y="158.33333333333334" fill="red" font-size="66%" text-anchor="end" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
</text>
|
||||||
|
<text x="555" y="191.66666666666666" fill="purple" font-size="66%" text-anchor="start" dominant-baseline="middle" font-family="Helvetica">
|
||||||
|
cut
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 27 KiB |
13
layout-lens/README.md
Normal file
13
layout-lens/README.md
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
# Layout-lens
|
||||||
|
|
||||||
|
> NOTE: this project cannot yet render combos, which will change soon
|
||||||
|
|
||||||
|
This is a quickly-thrown-together set of scripts for generating SVG previews of keyboard layouts. For example configurations check out any config in the `keyboards` directory of this repository. To run this on your config simply do
|
||||||
|
|
||||||
|
```sh
|
||||||
|
nix run github:mateiadrielrafael/keyswirl#layout-lens my-config.json out.svg
|
||||||
|
```
|
||||||
|
|
||||||
|
## Technical details
|
||||||
|
|
||||||
|
The code isn't very well written (i.e.: no error handling, only contains the features I needed myself, etc). I'd rewrite this in a better language given the motivation, but the current version does the job just fine. If you want to contribute a layout preset, add it to [./src/layouts](./src/layouts) and then modify the enum in [./src/types.ts](./src/types.ts) to know about it's existence.
|
|
@ -1,7 +1,7 @@
|
||||||
{ pkgs ? import <nixpkgs> { } }:
|
{ pkgs ? import <nixpkgs> { } }:
|
||||||
|
|
||||||
pkgs.stdenv.mkDerivation {
|
pkgs.stdenv.mkDerivation {
|
||||||
name = "swoop";
|
name = "layout-lens";
|
||||||
|
|
||||||
src = ./src;
|
src = ./src;
|
||||||
|
|
||||||
|
@ -17,6 +17,6 @@ pkgs.stdenv.mkDerivation {
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
mkdir $out/bin -p
|
mkdir $out/bin -p
|
||||||
cp -rv out.js $out/bin/swoop
|
cp -rv out.js $out/bin/layout-lens
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
|
5
layout-lens/package-lock.json
generated
5
layout-lens/package-lock.json
generated
|
@ -1,12 +1,9 @@
|
||||||
{
|
{
|
||||||
"name": "swoop",
|
"name": "layout-lens",
|
||||||
"version": "1.0.0",
|
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "swoop",
|
|
||||||
"version": "1.0.0",
|
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^18.11.18"
|
"@types/node": "^18.11.18"
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
{
|
{
|
||||||
"name": "swoop",
|
|
||||||
"version": "1.0.0",
|
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^18.11.18"
|
"@types/node": "^18.11.18"
|
||||||
}
|
}
|
||||||
|
|
11
layout-lens/scripts/generate-layouts.sh
Normal file
11
layout-lens/scripts/generate-layouts.sh
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
shopt -s globstar # Enable the globstar option to use **
|
||||||
|
|
||||||
|
for config in **/lens.json; do
|
||||||
|
# Check if the path is a regular file
|
||||||
|
if [ -f "$config" ]; then
|
||||||
|
# Replace the .txt extension with a new extension (e.g., .newext)
|
||||||
|
out="${config%.json}.svg"
|
||||||
|
# Generate preview
|
||||||
|
layout-lens "$config" "$out"
|
||||||
|
fi
|
||||||
|
done
|
Loading…
Reference in a new issue