Grafikverzeichnis neu organisiert

This commit is contained in:
Ulli Kehrle 2021-04-19 22:15:49 +02:00 committed by Ulli Kehrle
parent 972aa8fd8d
commit 784bba9096
81 changed files with 18169 additions and 13440 deletions

11
grafik/COPYING Normal file
View File

@ -0,0 +1,11 @@
Unless specified otherwise, all the artwork in this directory and its
subdirectories is licensed under the CC-BY-SA 3.0 license. You can obtain a copy
of this license at https://creativecommons.org/licenses/by-sa/3.0/legalcode .
Some Pictures are based on
https://commons.wikimedia.org/wiki/File:KB_Germany.svg (version from 2007)
which is also CC-BY-SA 3.0-licensed.
Unless specified otherwise, Scripts generating graphics are licensed under GPLv3
or later, which is provided in the COPYING file in the top level directory of
this repository.

View File

@ -1,84 +1,22 @@
EBENEN=$(foreach i, 1 1Caps 2 2Caps 3 4 5 6, tastatur_neo_Ebene${i}.svg)
EBENENSVG=$(foreach file, ${EBENEN}, tastatur3d/${file})
HAUPT=$(foreach file, ${EBENEN}, tastatur3d/hauptfeld/${file})
ZIFFERN=$(foreach file, ${EBENEN}, tastatur3d/ziffernfeld/${file})
HAUPTZIFFERN=$(foreach file, ${EBENEN}, tastatur3d/haupt_ziffern_feld/${file})
EBENENPDF=$(addsuffix .pdf,$(basename ${EBENENSVG}))
EBENENPNG=$(addsuffix .png,$(basename ${EBENENSVG} ${HAUPT} ${ZIFFERN} ${HAUPTZIFFERN}))
# directories to recursively
SUBDIRS=\
aufkleber \
aufsteller \
bilder-einzeln \
bilder-uebersicht \
handbuch-cover \
heatmap \
logos \
maskottchen
SVGFILES=$(filter-out ./tastatur3d/tastatur_neo_%.svg, $(shell find -name "*.svg")) ref2svg/ref2svg.svg
PDFFILES=$(filter-out ./promotion-material/Flyer-fs/neo_logo.pdf, $(addsuffix .pdf,$(basename ${SVGFILES})))
PNGFILES=$(addsuffix .png,$(basename ${SVGFILES}))
default_rule: all
default: svg pdf png
ref2svg/ref2svg.svg: ref2svg/ref2svg.pl ../A-REFERENZ-A/neo20.txt
cd ref2svg/; \
./ref2svg.pl > ref2svg.svg
svg: ref2svg/ref2svg.svg
pdf: ${PDFFILES} ${EBENENPDF} svg
png: ${PNGFILES} ${EBENENPNG} www svg
www: $(addsuffix .png,$(basename $(shell find ../www -name "*.svg")))
TARGETS=all svg svg-path pdf png clean
clean: cleansvg cleanpng cleanpdf
.PHONY: ${TARGETS}
cleanebenen:
rm -f ${EBENENSVG} ${EBENENPNG} ${EBENENPDF}
$(foreach dir, hauptfeld ziffernfeld haupt_ziffern_feld, if [ -d tastatur3d/${dir} ];then rmdir tastatur3d/${dir}; fi;)
cleansvg:
rm -f ref2svg/ref2svg.svg
cleanpng: cleanebenen
rm -f ${PNGFILES}
cleanpdf:
rm -f ${PDFFILES}
.SECONDARY:
tastatur3d/tastatur_neo_Ebene%.svg: tastatur3d/tastatur_neo_alle_Ebenen.svg
/bin/echo -e '/inkscape:label="Ebene $*"\n.+1\ns/none/inline/g\nw $@'|ed $<
tastatur3d/hauptfeld/%.png: tastatur3d/%.svg
mkdir -p tastatur3d/hauptfeld
inkscape --without-gui --export-id="Haupttastaturfeld" --export-png=$@ -h200 tastatur3d/$*.svg
optipng $@
tastatur3d/ziffernfeld/%.png: tastatur3d/%.svg
mkdir -p tastatur3d/ziffernfeld
inkscape --without-gui --export-id="Ziffernblock" --export-png=$@ -h200 tastatur3d/$*.svg
optipng $@
tastatur3d/haupt_ziffern_feld/%.png: tastatur3d/hauptfeld/%.png tastatur3d/ziffernfeld/%.png
mkdir -p tastatur3d/haupt_ziffern_feld
convert -splice 20x0 -background transparent -colors 256 -type Palette +dither -alpha off -alpha on tastatur3d/ziffernfeld/$*.png /tmp/$*_tmp.png
convert +append tastatur3d/hauptfeld/$*.png /tmp/$*_tmp.png $@
rm /tmp/$*_tmp.png
optipng $@
%.pdf: %.svg
inkscape --without-gui --export-pdf=$@ $<
../www/%.png: ../www/%.svg
inkscape --without-gui --export-png=$@ $<
optipng $@
%.png: %.svg
inkscape --without-gui --export-png=$@ -w1000 $<
optipng $@
FLATPNGS:=$(patsubst %.svg,%.png,$(wildcard flat/tastatur_e*.svg))
$(FLATPNGS): flat/tastatur.css flat/tastatur_base.svg
$(FLATPNGS): %.png: %.svg
sed -e "/^@import url('tastatur.css');$$/{r flat/tastatur.css" -e 'd;}' "$<" > "$<.imported.svg"
inkscape --without-gui --export-png="$@" "$<.imported.svg"
optipng "$@"
rm "$<.imported.svg"
.PHONY: default clean \
pdf cleanpdf \
png cleanpng \
ebenen cleanebenen \
svg cleansvg
# build the target of the same name in each subdirectory
$(TARGETS):
for dir in $(SUBDIRS); do \
$(MAKE) -C $$dir $@; \
done

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 179 KiB

View File

@ -1,55 +0,0 @@
<?php
if ($argc == 1) {
echo("Usage: ./neo_svg.php [neo20|bone|neoqwertz]\n");
exit(1);
}
# Referenz laden
$layout = $argv[1];
$reference = file_get_contents('http://neo-layout.org/git/A-REFERENZ-A/' . $layout . ".txt");
# Haupttastatur finden
preg_match('/┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────────┐\n(.*)\n└──────┴──────┴──────┴──────────────────────────────────────┴──────┴──────┴──────┴──────┘/s', $reference, $found);
# Tastaturreihen aufspalten
$rows = preg_split('/\n├.*\n/', $found[1]);
$n = 1;
# Für jede Reihe:
foreach ($rows as $row) {
$sub_rows = preg_split('/\n/', $row);
# Finde Zeichen in beiden Zeilen.
# U030F ist ein combining-character und tritt zusammen mit einem Leerzeichen auf, damit es angezeigt wird
preg_match_all('/│(.) (\x{030F} |.) (.)(?=│)/u', $sub_rows[0], $r1);
preg_match_all('/│(.) (.) (.)(?=│)/u', $sub_rows[1], $r2);
# Für jede Taste:
for ($i = 0; $i < count($r1[0]); $i++) {
# Überspringe Enter-Taste, die nicht dazugehört
if ($r1[2][$i] == "" && $i == 11) {
$n--;
continue;
}
# Lade die Zeichen der beiden Zeilen in das Array, geordnet nach ihrer Ebene
$key[$n+$i.'_1'] = $r2[1][$i];
$key[$n+$i.'_2'] = $r1[1][$i];
$key[$n+$i.'_3'] = $r2[2][$i];
$key[$n+$i.'_4'] = $r1[2][$i];
$key[$n+$i.'_5'] = $r2[3][$i];
$key[$n+$i.'_6'] = $r1[3][$i];
}
$n += $i;
}
# Lade das "rohe" SVG
$svg = file_get_contents('neo_raw.svg');
# Ersetze die Platzhalter mit den Zeichen aus dem Array
foreach ($key as $search => $replace) {
# Die Zeichen werden in HTML-NCRs (numeric character references) umgewandelt, damit sie nicht falsch interpretiert werden.
$svg = preg_replace('/{'.preg_quote($search).'}/', mb_encode_numericentity ($replace, array (0x0, 0xffff, 0, 0xffff), 'UTF-8'), $svg);
}
# Speichern und Fertig
file_put_contents($layout . '.svg', $svg);
?>

36
grafik/Readme.md Normal file
View File

@ -0,0 +1,36 @@
# Readme
Die meisten der Neo-Grafiken gibt es in vier Formaten:
- svg
- svg mit Text in Pfade umgewandelt
- png
- pdf
In diesem Reposity befinden sich aber nur svgs und Skripte, mit denen man noch
mehr svgs (aus Treibern oder Referenzen) und daraus dann die anderen Formate
erstellt. Die fertigen Grafiken befinden sich aber auf
https://dl.neo-layout.org/grafik .
Um alle Bilder erzeugen können, benötigt man eine Vielzahl an Abhängigkeiten:
- make
- inkscape
- optipng
- imagemagick
- libicns
- libreoffice
- sed
- ed
- setxkbmap und xkbcomp
- python mit numpy, pandas, matplotlib und seaborn
- perl mit XML::Writer
- php
- Linux Libertine
- Gentium Plus Compact
- DejaVu Sans Mono
- vermutlich noch weitere Schriften
Sind alle Abhängigkeiten erfüllt, sollte man alle Bilder mit `make` erstellen
können. Man kann `make` auch in jedem Unterverzeichnis ausführen, um jeweils
weniger Bilder zu generieren. Außerdem können gewünschte Formate oder gar
Dateinamen direkt als Target übergeben werden•
`

View File

Before

Width:  |  Height:  |  Size: 243 KiB

After

Width:  |  Height:  |  Size: 243 KiB

11
grafik/aufkleber/Makefile Normal file
View File

@ -0,0 +1,11 @@
all: default
%-grau-1234.svg: ../../A-REFERENZ-A/%.txt
./alle-grau-1234.pl $< > $@
EXTRASVG=\
neo20-grau-1234.svg \
bone-grau-1234.svg \
neoqwertz-grau-1234.svg
include ../common.mk

View File

@ -1,4 +1,4 @@
#!/usr/bin/perl -wT
#!/usr/bin/env -S perl -wT
use strict;
use warnings;
@ -63,7 +63,7 @@ exit;
# parse reference and return multi-array
sub parse_ref {
my @letters;
open REF, "../../A-REFERENZ-A/neo20.txt"
open REF, $ARGV[0]
or die 'Error opening reference: '.$!;
while (<REF>) {
my @layer;

View File

Before

Width:  |  Height:  |  Size: 687 KiB

After

Width:  |  Height:  |  Size: 687 KiB

View File

Before

Width:  |  Height:  |  Size: 679 KiB

After

Width:  |  Height:  |  Size: 679 KiB

View File

Before

Width:  |  Height:  |  Size: 1.5 MiB

After

Width:  |  Height:  |  Size: 1.5 MiB

View File

Before

Width:  |  Height:  |  Size: 954 KiB

After

Width:  |  Height:  |  Size: 954 KiB

View File

Before

Width:  |  Height:  |  Size: 435 KiB

After

Width:  |  Height:  |  Size: 435 KiB

View File

Before

Width:  |  Height:  |  Size: 310 KiB

After

Width:  |  Height:  |  Size: 310 KiB

View File

Before

Width:  |  Height:  |  Size: 1.5 MiB

After

Width:  |  Height:  |  Size: 1.5 MiB

View File

Before

Width:  |  Height:  |  Size: 433 KiB

After

Width:  |  Height:  |  Size: 433 KiB

View File

@ -0,0 +1,2 @@
all: default
include ../common.mk

View File

Before

Width:  |  Height:  |  Size: 289 KiB

After

Width:  |  Height:  |  Size: 289 KiB

View File

Before

Width:  |  Height:  |  Size: 567 KiB

After

Width:  |  Height:  |  Size: 567 KiB

View File

@ -0,0 +1,58 @@
EBENENNAMEN=1 1Caps 2 2Caps 3 4 5 6
BONE=$(foreach i, ${EBENENNAMEN}, bone-ebene${i}.svg)
NEO=$(foreach i, ${EBENENNAMEN}, neo-ebene${i}.svg)
KYRILLISCH=$(foreach i, ${EBENENNAMEN}, kyrillisch-ebene${i}.svg)
EBENENSVG=${BONE} ${NEO} ${KYRILLISCH}
HAUPT=$(foreach file, ${EBENENSVG}, hauptfeld/${file})
ZIFFERN=$(foreach file, ${EBENENSVG}, ziffernfeld/${file})
HAUPTZIFFERN=$(foreach file, ${EBENENSVG}, haupt_ziffern_feld/${file})
EBENENPDF=$(addsuffix .pdf,$(basename ${EBENENSVG}))
EBENENPNG=$(addsuffix .png,$(basename ${EBENENSVG} ${HAUPT} ${ZIFFERN} ${HAUPTZIFFERN}))
EBENENSVGPATH=$(addsuffix .path.svg,$(basename ${EBENENSVG}))
all: svg pdf png svg-path
svg: ${EBENENSVG}
svg-path: ${EBENENSVGPATH}
pdf: ${EBENENPDF}
png: ${EBENENPNG}
clean:
rm -f ${EBENENSVG} ${EBENENPNG} ${EBENENPDF} ${EBENENSVGPATH}
$(foreach dir, hauptfeld ziffernfeld haupt_ziffern_feld, if [ -d ${dir} ];then rmdir ${dir}; fi;)
$(BONE): bone-ebene%.svg: bone.svg.template
echo -e '/inkscape:label="Ebene $*"\n.+1\ns/none/inline/g\nw $@'|ed $<
$(NEO): neo-ebene%.svg: neo.svg.template
echo -e '/inkscape:label="Ebene $*"\n.+1\ns/none/inline/g\nw $@'|ed $<
$(KYRILLISCH): kyrillisch-ebene%.svg: kyrillisch.svg.template
echo -e '/inkscape:label="Ebene $*"\n.+1\ns/none/inline/g\nw $@'|ed $<
hauptfeld/%.png: %.svg
mkdir -p hauptfeld
inkscape --export-id="Haupttastaturfeld" --export-filename=$@ --export-height=200 $<
optipng $@
ziffernfeld/%.png: %.svg
mkdir -p ziffernfeld
inkscape --export-id="Ziffernblock" --export-filename=$@ --export-height=200 $<
optipng $@
haupt_ziffern_feld/%.png: hauptfeld/%.png ziffernfeld/%.png
mkdir -p haupt_ziffern_feld
convert -splice 20x0 -background transparent -colors 256 -type Palette +dither -alpha off -alpha on ziffernfeld/$*.png /tmp/$*_tmp.png
convert +append hauptfeld/$*.png /tmp/$*_tmp.png $@
rm /tmp/$*_tmp.png
optipng $@
%.pdf: %.svg
inkscape --export-filename=$@ $<
%.png: %.svg
inkscape --export-filename=$@ --export-width=1000 $<
optipng $@
%.path.svg: %.svg
inkscape --export-filename=$@ -T $<

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 953 KiB

View File

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 1.1 MiB

View File

Before

Width:  |  Height:  |  Size: 970 KiB

After

Width:  |  Height:  |  Size: 970 KiB

View File

@ -0,0 +1,18 @@
# directories to recursively
SUBDIRS=\
3d \
bunt-einfach \
flat \
grau
default_rule: all
TARGETS=all svg svg-path pdf png clean
.PHONY: ${TARGETS}
# build the target of the same name in each subdirectory
$(TARGETS):
for dir in $(SUBDIRS); do \
$(MAKE) -C $$dir $@; \
done

View File

@ -0,0 +1,2 @@
all: default
include ../../common.mk

View File

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 46 KiB

View File

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 42 KiB

View File

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 43 KiB

View File

@ -1,12 +1,16 @@
VARIANTS=neo bone neo_qwertz neo_qwerty koy adnw
LAYERS=1 2 3 4 5 6 Pseudoebene
VERSIONS=numpad tkl
SUFFIXES=$(foreach version, ${VERSIONS}, $(foreach layer, ${LAYERS}, -Ebene-${layer}-${version}.svg))
SUFFIXES=$(foreach version, ${VERSIONS}, $(foreach layer, ${LAYERS}, -${layer}-${version}.svg))
SVG_TARGETS=$(foreach suffix, ${SUFFIXES}, $(foreach variant, ${VARIANTS}, ${variant}${suffix}))
SVG_PATH_TARGETS=$(addsuffix .path.svg,$(basename ${SVG_TARGETS}))
PDF_TARGETS=$(addsuffix .pdf,$(basename ${SVG_TARGETS}))
PNG_TARGETS=$(addsuffix .png,$(basename ${SVG_TARGETS}))
SOURCES=generate-graphics.py replacements.py base.svg.template
default: all cleansvg cleanpycache
svg-path: ${SVG_PATH_TARGETS}
svg: ${SVG_TARGETS}
pdf: ${PDF_TARGETS}
png: ${PNG_TARGETS}
@ -15,7 +19,9 @@ $(foreach suffix, ${SUFFIXES}, %${suffix}) &: ${SOURCES}
@echo "Erzeuge $@."
./generate-graphics.py `echo $@ | cut -d - -f 1` numpad
./generate-graphics.py `echo $@ | cut -d - -f 1`
inkscape --export-filename=$@ -T $@
%.path.svg: %.svg
inkscape --export-filename=$@ -T $<
%.pdf: %.svg
inkscape --export-filename=$@ $<
@ -24,7 +30,10 @@ $(foreach suffix, ${SUFFIXES}, %${suffix}) &: ${SOURCES}
inkscape --export-filename=$@ --export-height=183 $<
optipng $@
all: svg pdf png
all: svg-path svg pdf png
cleansvgpath:
rm -f ${SVG_PATH_TARGETS}
cleansvg:
rm -f ${SVG_TARGETS}
@ -34,5 +43,7 @@ cleanpng:
cleanpdf:
rm -f ${PDF_TARGETS}
cleanpycache:
rm -rf __pycache__
clean: cleansvg cleanpng cleanpdf
clean: cleansvgpath cleansvg cleanpng cleanpdf cleanpycache

View File

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -53,7 +53,7 @@ with open('/tmp/keymap', 'r') as file:
layerdict["numpad"] = numpad
layerdict["swap_m3r_ä"] = swap_m3r_ä
versionstring = "-numpad" if numpad else "-tkl"
out = open(layout + "-Ebene-" + layernames[layer] + versionstring + ".svg", "w")
out = open(layout + "-" + layernames[layer] + versionstring + ".svg", "w")
with open(templatename) as templatefile:
template = Template(templatefile.read())
out.write(template.render(layerdict))

View File

@ -0,0 +1,2 @@
all: default
include ../../common.mk

View File

Before

Width:  |  Height:  |  Size: 454 KiB

After

Width:  |  Height:  |  Size: 454 KiB

View File

@ -0,0 +1,27 @@
all: default neo-bunt-123456.pdf neo-bunt-123456.png
neo-bunt-123456.pdf: neo-bunt-123456.ods
libreoffice --convert-to pdf $<
neo-bunt-123456.png: neo-bunt-123456.ods
libreoffice --convert-to png $<
neo20-grau-123456.svg:
./all-grau-123456.php neo20
bone-grau-123456.svg:
./all-grau-123456.php bone
neoqwertz-grau-123456.svg:
./all-grau-123456.php neoqwertz
EXTRASVG=\
neo20-grau-123456.svg \
bone-grau-123456.svg \
neoqwertz-grau-123456.svg
EXTRAPDF=neo-bunt-123456.pdf
EXTRAPNG=neo-bunt-123456.png
include ../common.mk

View File

@ -1,3 +1,127 @@
#!/usr/bin/env php
<?php
/* Dieser Textabschnitt befand sich vorher (etwa bei Commit 705fac448a0d0562e4e1bc16bf0b6cadbe235771)
in einer separaten Datei "neo_basierend_auf_wikipedias_KB_Germany.txt".
Ich denke, er bezieht sich auf das Template, das hier weiter unten geinlint ist
und habe ihn mal in diese Datei eingefügt, damit er nicht verloren geht.
-- hrnz
== Quelle ==
Die Datei wurde vom Wikipedia-Bild „KB_Germany.svg“ mit Inkscape angepasst.
Quelle: http://upload.wikimedia.org/wikipedia/commons/3/36/KB_Germany.svg
Stand: Januar 2007
Angepasst von Erik Streb (mail at erikstreb dot de)
== Dokumenteneinstellungen ==
=== Einrasten ===
- Umrandungsboxen am Gitter einrasten
- Einrastempfindlichkeit ca. 10
=== Gitter/Führungslinien ===
Die Tasten sind auf einem Raster von 60 mal 60 Pixeln erstellt. Daher Abstand
X und Abstand Y = 60.
Die Startpositionen des Rasters (Ursprung X und Ursprung Y) für die Beschriftung der
einzelnen Tasten sind unten angegeben als Ux und Uy.
Immer (außer bei Ausnahmen) muss die Beschriftung von oben rechts aus
angepasst werden.
== Schrift ==
Was Schrift Größe Fett
Buchstaben DejaVu LGC Sans 22 Ja
Modifikatoren DejaVu LGC Sans 14 Ja
== Gitterursprung ==
=== Für die einzelnen Reihen und Ebenen ===
Tastatur Position Ebene Zeichen Ux Uy Ax Ay
0. Reihe 1. X 9 7 60 60
1. Reihe 1. X 39 7 60 60
3. Reihe 1. X 24 7 60 60
0. Reihe 2. X 9 37 60 60
1. Reihe 2. X 39 37 60 60
2. Reihe 2. X 54 37 60 60
3. Reihe 2. X 24 37 60 60
0. Reihe 3. X 37 7 60 60
1. Reihe 3. X 7 7 60 60
2. Reihe 3. X 22 7 60 60
3. Reihe 3. X 52 7 60 60
0. Reihe 4. X 37 37 60 60
1. Reihe 4. X 7 37 60 60
2. Reihe 4. X 22 37 60 60
3. Reihe 4. X 52 37 60 60
=== Für die Modifier ===
Bei Strg für Positionierung das „g“ wegnehmen und links ausrichten.
Modifier ganz links und auch rechtes Mod3:
Ux 9
Uy 25 oder 40 (linkes Shift)
Alt, rechte Strg und Menü:
Ux 39
Uy 25
Alt Option:
Ux 35
Uy 15
Enter (rechts ausrichten, von oben links anpassen):
Ux 51
Uy 40
Backspace (von unten rechts anpassen):
Ux 9
Uy 25
*/
if ($argc == 1) {
echo("Usage: ./neo_svg.php [neo20|bone|neoqwertz]\n");
exit(1);
}
# Referenz laden
$layout = $argv[1];
$reference = file_get_contents('http://neo-layout.org/git/A-REFERENZ-A/' . $layout . ".txt");
# Haupttastatur finden
preg_match('/┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────────┐\n(.*)\n└──────┴──────┴──────┴──────────────────────────────────────┴──────┴──────┴──────┴──────┘/s', $reference, $found);
# Tastaturreihen aufspalten
$rows = preg_split('/\n├.*\n/', $found[1]);
$n = 1;
# Für jede Reihe:
foreach ($rows as $row) {
$sub_rows = preg_split('/\n/', $row);
# Finde Zeichen in beiden Zeilen.
# U030F ist ein combining-character und tritt zusammen mit einem Leerzeichen auf, damit es angezeigt wird
preg_match_all('/│(.) (\x{030F} |.) (.)(?=│)/u', $sub_rows[0], $r1);
preg_match_all('/│(.) (.) (.)(?=│)/u', $sub_rows[1], $r2);
# Für jede Taste:
for ($i = 0; $i < count($r1[0]); $i++) {
# Überspringe Enter-Taste, die nicht dazugehört
if ($r1[2][$i] == "" && $i == 11) {
$n--;
continue;
}
# Lade die Zeichen der beiden Zeilen in das Array, geordnet nach ihrer Ebene
$key[$n+$i.'_1'] = $r2[1][$i];
$key[$n+$i.'_2'] = $r1[1][$i];
$key[$n+$i.'_3'] = $r2[2][$i];
$key[$n+$i.'_4'] = $r1[2][$i];
$key[$n+$i.'_5'] = $r2[3][$i];
$key[$n+$i.'_6'] = $r1[3][$i];
}
$n += $i;
}
# Lade das "rohe" SVG
$svg = <<<EOF
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
@ -3339,3 +3463,14 @@
y="239.62675">{46_6}</tspan></text>
</g>
</svg>
EOF;
# Ersetze die Platzhalter mit den Zeichen aus dem Array
foreach ($key as $search => $replace) {
# Die Zeichen werden in HTML-NCRs (numeric character references) umgewandelt, damit sie nicht falsch interpretiert werden.
$svg = preg_replace('/{'.preg_quote($search).'}/', mb_encode_numericentity ($replace, array (0x0, 0xffff, 0, 0xffff), 'UTF-8'), $svg);
}
# Speichern und Fertig
file_put_contents($layout . '-grau-123456.svg', $svg);
?>

Before

Width:  |  Height:  |  Size: 179 KiB

After

Width:  |  Height:  |  Size: 183 KiB

View File

Before

Width:  |  Height:  |  Size: 73 KiB

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

View File

Before

Width:  |  Height:  |  Size: 123 KiB

After

Width:  |  Height:  |  Size: 123 KiB

View File

Before

Width:  |  Height:  |  Size: 88 KiB

After

Width:  |  Height:  |  Size: 88 KiB

View File

Before

Width:  |  Height:  |  Size: 123 KiB

After

Width:  |  Height:  |  Size: 123 KiB

View File

Before

Width:  |  Height:  |  Size: 257 KiB

After

Width:  |  Height:  |  Size: 257 KiB

27
grafik/common.mk Normal file
View File

@ -0,0 +1,27 @@
SVGFILES=$(filter-out $(wildcard *.path.svg */*.path.svg), $(wildcard *.svg */*.svg)) ${EXTRASVG}
SVGPATHFILES=$(addsuffix .path.svg,$(basename ${SVGFILES}))
PDFFILES=$(addsuffix .pdf,$(basename ${SVGFILES})) ${EXTRAPDF}
PNGFILES=$(addsuffix .png,$(basename ${SVGFILES})) ${EXTRAPNG}
default: svg-path svg pdf png
svg: ${EXTRASVG}
svg-path: ${SVGPATHFILES}
pdf: ${PDFFILES}
png: ${PNGFILES}
clean:
rm -f ${EXTRASVG} ${SVGPATHFILES} ${PDFFILES} ${PNGFILES} ${EXTRAPDF} ${EXTRAPNG} ${EXTRACLEAN}
%.path.svg: %.svg
inkscape --export-filename=$@ -T $<
%.pdf: %.svg
inkscape --export-filename=$@ $<
%.png: %.svg
inkscape --export-filename=$@ --export-width=2000 $<
optipng $@

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 384 KiB

View File

@ -1,22 +0,0 @@
## Dateien
neo-druckvorlage.svg
: Zum Erstellen der Tastaturaufkleber
neo-druckvorlage-hc.svg
: Eine inhaltlich veraltete Version, die aber die Modifiertasten
farblich überarbeitet.
### Begründung gegen das aktuelle Farbkonzept
- die blau-rot-gestrichelten Rähmchen erschließen sich auch bei
längerem Nachdenken nur schwer
- die Information ist zum Teil aus der Hintergrundfarbe zu entnehmen,
bei anderen Ebenen aber aus der Pfeilfarbe. Das ist inkonsistent.
- die Hintergrundfarben der Modifiertasten sind zu ähnlich der
Farbpalette der normalen Tasten
- die dicken Rahmen gehen beim Ausschneiden/Stanzen ohnehin verloren

Binary file not shown.

Before

Width:  |  Height:  |  Size: 215 KiB

View File

@ -0,0 +1,2 @@
all: default
include ../common.mk

View File

Before

Width:  |  Height:  |  Size: 402 KiB

After

Width:  |  Height:  |  Size: 402 KiB

12
grafik/heatmap/Makefile Normal file
View File

@ -0,0 +1,12 @@
all: heatmap.png
neo.png:
$(MAKE) -C "../bilder-einzeln/flat/" neo-1-tkl.png
cp ../bilder-einzeln/flat/neo-1-tkl.png neo.png
heatmap.png: heatmap.py faust.txt neo.png
./heatmap.py
EXTRAPNG=heatmap.png neo.png
include ../common.mk

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

View File

@ -1,4 +1,5 @@
#!/usr/bin/env python
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

18
grafik/logos/Makefile Normal file
View File

@ -0,0 +1,18 @@
LAYOUTS = neo neoqwertz bone
ICOFILES = $(addsuffix -icon.ico, ${LAYOUTS})
ICNSFILES = $(addsuffix -icon.ico, ${LAYOUTS})
EXTRACLEAN = ${ICOFILES} ${ICNSFILES}
all: default ico
ico: ${ICOFILES}
ico: ${ICNSFILES}
%.ico: %.png
convert $< -define icon:auto-resize=16,32,48,128,256 $@
# TODO: find a way to generate icns icons a normal loonix machine
include ../common.mk

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

View File

Before

Width:  |  Height:  |  Size: 77 KiB

After

Width:  |  Height:  |  Size: 77 KiB

View File

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 5.9 KiB

View File

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 1.1 MiB

View File

Before

Width:  |  Height:  |  Size: 8.5 KiB

After

Width:  |  Height:  |  Size: 8.5 KiB

View File

Before

Width:  |  Height:  |  Size: 6.3 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

View File

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 5.9 KiB

View File

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

View File

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

@ -0,0 +1,2 @@
all: default
include ../common.mk

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 207 KiB

View File

@ -1,70 +0,0 @@
== Quelle ==
Die Datei wurde vom Wikipedia-Bild „KB_Germany.svg“ mit Inkscape angepasst.
Quelle: http://upload.wikimedia.org/wikipedia/commons/3/36/KB_Germany.svg
Stand: Januar 2007
Angepasst von Erik Streb (mail at erikstreb dot de)
== Dokumenteneinstellungen ==
=== Einrasten ===
- Umrandungsboxen am Gitter einrasten
- Einrastempfindlichkeit ca. 10
=== Gitter/Führungslinien ===
Die Tasten sind auf einem Raster von 60 mal 60 Pixeln erstellt. Daher Abstand
X und Abstand Y = 60.
Die Startpositionen des Rasters (Ursprung X und Ursprung Y) für die Beschriftung der
einzelnen Tasten sind unten angegeben als Ux und Uy.
Immer (außer bei Ausnahmen) muss die Beschriftung von oben rechts aus
angepasst werden.
== Schrift ==
Was Schrift Größe Fett
Buchstaben DejaVu LGC Sans 22 Ja
Modifikatoren DejaVu LGC Sans 14 Ja
== Gitterursprung ==
=== Für die einzelnen Reihen und Ebenen ===
Tastatur Position Ebene Zeichen Ux Uy Ax Ay
0. Reihe 1. X 9 7 60 60
1. Reihe 1. X 39 7 60 60
3. Reihe 1. X 24 7 60 60
0. Reihe 2. X 9 37 60 60
1. Reihe 2. X 39 37 60 60
2. Reihe 2. X 54 37 60 60
3. Reihe 2. X 24 37 60 60
0. Reihe 3. X 37 7 60 60
1. Reihe 3. X 7 7 60 60
2. Reihe 3. X 22 7 60 60
3. Reihe 3. X 52 7 60 60
0. Reihe 4. X 37 37 60 60
1. Reihe 4. X 7 37 60 60
2. Reihe 4. X 22 37 60 60
3. Reihe 4. X 52 37 60 60
=== Für die Modifier ===
Bei Strg für Positionierung das „g“ wegnehmen und links ausrichten.
Modifier ganz links und auch rechtes Mod3:
Ux 9
Uy 25 oder 40 (linkes Shift)
Alt, rechte Strg und Menü:
Ux 39
Uy 25
Alt Option:
Ux 35
Uy 15
Enter (rechts ausrichten, von oben links anpassen):
Ux 51
Uy 40
Backspace (von unten rechts anpassen):
Ux 9
Uy 25