diff --git a/grafik/COPYING b/grafik/COPYING
new file mode 100644
index 00000000..28163b7b
--- /dev/null
+++ b/grafik/COPYING
@@ -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.
diff --git a/grafik/Makefile b/grafik/Makefile
index 79613f55..4c88e02b 100644
--- a/grafik/Makefile
+++ b/grafik/Makefile
@@ -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
diff --git a/grafik/NEO-20-Layout-alle-6-Ebenen.ods b/grafik/NEO-20-Layout-alle-6-Ebenen.ods
deleted file mode 100644
index 51b17a0f..00000000
Binary files a/grafik/NEO-20-Layout-alle-6-Ebenen.ods and /dev/null differ
diff --git a/grafik/Php-Skript/neo_raw.svg b/grafik/Php-Skript/neo_raw.svg
deleted file mode 100644
index 2e39e2fb..00000000
--- a/grafik/Php-Skript/neo_raw.svg
+++ /dev/null
@@ -1,3341 +0,0 @@
-
-
-
diff --git a/grafik/Php-Skript/neo_svg.php b/grafik/Php-Skript/neo_svg.php
deleted file mode 100644
index 7c5fe2ba..00000000
--- a/grafik/Php-Skript/neo_svg.php
+++ /dev/null
@@ -1,55 +0,0 @@
- $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);
-?>
diff --git a/grafik/Readme.md b/grafik/Readme.md
new file mode 100644
index 00000000..d8e504b0
--- /dev/null
+++ b/grafik/Readme.md
@@ -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•
+`
diff --git a/grafik/not_working/xkb2svg/xkb2svg.sh b/grafik/_not_working/xkb2svg/xkb2svg.sh
similarity index 100%
rename from grafik/not_working/xkb2svg/xkb2svg.sh
rename to grafik/_not_working/xkb2svg/xkb2svg.sh
diff --git a/grafik/not_working/xmodmap2tastenaufkleber/README.md b/grafik/_not_working/xmodmap2tastenaufkleber/README.md
similarity index 100%
rename from grafik/not_working/xmodmap2tastenaufkleber/README.md
rename to grafik/_not_working/xmodmap2tastenaufkleber/README.md
diff --git a/grafik/not_working/xmodmap2tastenaufkleber/beispielausgabe/beispiel.svg b/grafik/_not_working/xmodmap2tastenaufkleber/beispielausgabe/beispiel.svg
similarity index 100%
rename from grafik/not_working/xmodmap2tastenaufkleber/beispielausgabe/beispiel.svg
rename to grafik/_not_working/xmodmap2tastenaufkleber/beispielausgabe/beispiel.svg
diff --git a/grafik/not_working/xmodmap2tastenaufkleber/beispielausgabe/modifiertasten.svg b/grafik/_not_working/xmodmap2tastenaufkleber/beispielausgabe/modifiertasten.svg
similarity index 100%
rename from grafik/not_working/xmodmap2tastenaufkleber/beispielausgabe/modifiertasten.svg
rename to grafik/_not_working/xmodmap2tastenaufkleber/beispielausgabe/modifiertasten.svg
diff --git a/grafik/not_working/xmodmap2tastenaufkleber/beispielausgabe/neue_neo_de.xmodmap b/grafik/_not_working/xmodmap2tastenaufkleber/beispielausgabe/neue_neo_de.xmodmap
similarity index 100%
rename from grafik/not_working/xmodmap2tastenaufkleber/beispielausgabe/neue_neo_de.xmodmap
rename to grafik/_not_working/xmodmap2tastenaufkleber/beispielausgabe/neue_neo_de.xmodmap
diff --git a/grafik/not_working/xmodmap2tastenaufkleber/keysymdef.h b/grafik/_not_working/xmodmap2tastenaufkleber/keysymdef.h
similarity index 100%
rename from grafik/not_working/xmodmap2tastenaufkleber/keysymdef.h
rename to grafik/_not_working/xmodmap2tastenaufkleber/keysymdef.h
diff --git a/grafik/not_working/xmodmap2tastenaufkleber/svg_kopf b/grafik/_not_working/xmodmap2tastenaufkleber/svg_kopf
similarity index 100%
rename from grafik/not_working/xmodmap2tastenaufkleber/svg_kopf
rename to grafik/_not_working/xmodmap2tastenaufkleber/svg_kopf
diff --git a/grafik/not_working/xmodmap2tastenaufkleber/tastaturbilder/tastatur1.jpg b/grafik/_not_working/xmodmap2tastenaufkleber/tastaturbilder/tastatur1.jpg
similarity index 100%
rename from grafik/not_working/xmodmap2tastenaufkleber/tastaturbilder/tastatur1.jpg
rename to grafik/_not_working/xmodmap2tastenaufkleber/tastaturbilder/tastatur1.jpg
diff --git a/grafik/not_working/xmodmap2tastenaufkleber/tastaturbilder/tastatur2.jpg b/grafik/_not_working/xmodmap2tastenaufkleber/tastaturbilder/tastatur2.jpg
similarity index 100%
rename from grafik/not_working/xmodmap2tastenaufkleber/tastaturbilder/tastatur2.jpg
rename to grafik/_not_working/xmodmap2tastenaufkleber/tastaturbilder/tastatur2.jpg
diff --git a/grafik/not_working/xmodmap2tastenaufkleber/tastaturbilder/tastatur3.jpg b/grafik/_not_working/xmodmap2tastenaufkleber/tastaturbilder/tastatur3.jpg
similarity index 100%
rename from grafik/not_working/xmodmap2tastenaufkleber/tastaturbilder/tastatur3.jpg
rename to grafik/_not_working/xmodmap2tastenaufkleber/tastaturbilder/tastatur3.jpg
diff --git a/grafik/not_working/xmodmap2tastenaufkleber/xmodmap2tastenaufkleber.sh b/grafik/_not_working/xmodmap2tastenaufkleber/xmodmap2tastenaufkleber.sh
similarity index 100%
rename from grafik/not_working/xmodmap2tastenaufkleber/xmodmap2tastenaufkleber.sh
rename to grafik/_not_working/xmodmap2tastenaufkleber/xmodmap2tastenaufkleber.sh
diff --git a/grafik/aufkleber/Makefile b/grafik/aufkleber/Makefile
new file mode 100644
index 00000000..402bb79a
--- /dev/null
+++ b/grafik/aufkleber/Makefile
@@ -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
diff --git a/grafik/ref2svg/ref2svg.pl b/grafik/aufkleber/alle-grau-1234.pl
similarity index 98%
rename from grafik/ref2svg/ref2svg.pl
rename to grafik/aufkleber/alle-grau-1234.pl
index 0807af49..47304029 100755
--- a/grafik/ref2svg/ref2svg.pl
+++ b/grafik/aufkleber/alle-grau-1234.pl
@@ -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 ([) {
my @layer;
diff --git a/grafik/druckvorlage/neo-druckvorlage.svg b/grafik/aufkleber/neo-bunt-123456.svg
similarity index 100%
rename from grafik/druckvorlage/neo-druckvorlage.svg
rename to grafik/aufkleber/neo-bunt-123456.svg
diff --git a/grafik/druckvorlage/neo-druckvorlage-hc.svg b/grafik/aufkleber/neo-bunt-swmod-123456.svg
similarity index 100%
rename from grafik/druckvorlage/neo-druckvorlage-hc.svg
rename to grafik/aufkleber/neo-bunt-swmod-123456.svg
diff --git a/grafik/druckvorlage/Tastenaufkleber_Ebenen_1-3-Schwarz.svg b/grafik/aufkleber/neo-schwarz-123.svg
similarity index 100%
rename from grafik/druckvorlage/Tastenaufkleber_Ebenen_1-3-Schwarz.svg
rename to grafik/aufkleber/neo-schwarz-123.svg
diff --git a/grafik/druckvorlage/Tastenaufkleber_Ebenen_1-6_inkl_qwertz_Schwarz.svg b/grafik/aufkleber/neo-schwarz-123456.svg
similarity index 100%
rename from grafik/druckvorlage/Tastenaufkleber_Ebenen_1-6_inkl_qwertz_Schwarz.svg
rename to grafik/aufkleber/neo-schwarz-123456.svg
diff --git a/grafik/druckvorlage/Tastenaufkleber_Ebenen_1-4_SW-Schwarz.svg b/grafik/aufkleber/neo-schwarz-gross-1234.svg
similarity index 100%
rename from grafik/druckvorlage/Tastenaufkleber_Ebenen_1-4_SW-Schwarz.svg
rename to grafik/aufkleber/neo-schwarz-gross-1234.svg
diff --git a/grafik/druckvorlage/Tastenaufkleber_Neo2__SW_6erBlock.svg b/grafik/aufkleber/neo-sw-block-123456.svg
similarity index 100%
rename from grafik/druckvorlage/Tastenaufkleber_Neo2__SW_6erBlock.svg
rename to grafik/aufkleber/neo-sw-block-123456.svg
diff --git a/grafik/druckvorlage/Tastenaufkleber_Ebenen_1-3-Weiss.svg b/grafik/aufkleber/neo-weiss-123.svg
similarity index 100%
rename from grafik/druckvorlage/Tastenaufkleber_Ebenen_1-3-Weiss.svg
rename to grafik/aufkleber/neo-weiss-123.svg
diff --git a/grafik/druckvorlage/Tastenaufkleber_Ebenen_1-4_SW-Weiß.svg b/grafik/aufkleber/neo-weiss-gross-1234.svg
similarity index 100%
rename from grafik/druckvorlage/Tastenaufkleber_Ebenen_1-4_SW-Weiß.svg
rename to grafik/aufkleber/neo-weiss-gross-1234.svg
diff --git a/grafik/aufsteller/Makefile b/grafik/aufsteller/Makefile
new file mode 100644
index 00000000..7308f315
--- /dev/null
+++ b/grafik/aufsteller/Makefile
@@ -0,0 +1,2 @@
+all: default
+include ../common.mk
diff --git a/grafik/aufsteller/neo20-aufsteller-ben.svg b/grafik/aufsteller/neo-aufsteller-vereinfacht.svg
similarity index 100%
rename from grafik/aufsteller/neo20-aufsteller-ben.svg
rename to grafik/aufsteller/neo-aufsteller-vereinfacht.svg
diff --git a/grafik/aufsteller/neo20-aufsteller.svg b/grafik/aufsteller/neo-aufsteller.svg
similarity index 100%
rename from grafik/aufsteller/neo20-aufsteller.svg
rename to grafik/aufsteller/neo-aufsteller.svg
diff --git a/grafik/bilder-einzeln/3d/Makefile b/grafik/bilder-einzeln/3d/Makefile
new file mode 100644
index 00000000..cc1f94e7
--- /dev/null
+++ b/grafik/bilder-einzeln/3d/Makefile
@@ -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 $<
diff --git a/grafik/bilder-einzeln/3d/bone.svg.template b/grafik/bilder-einzeln/3d/bone.svg.template
new file mode 100644
index 00000000..0afa3601
--- /dev/null
+++ b/grafik/bilder-einzeln/3d/bone.svg.template
@@ -0,0 +1,17768 @@
+
+
diff --git a/grafik/tastatur3d/tastatur_neo_kyrillisch.svg b/grafik/bilder-einzeln/3d/kyrillisch.svg.template
similarity index 100%
rename from grafik/tastatur3d/tastatur_neo_kyrillisch.svg
rename to grafik/bilder-einzeln/3d/kyrillisch.svg.template
diff --git a/grafik/tastatur3d/tastatur_neo_alle_Ebenen.svg b/grafik/bilder-einzeln/3d/neo.svg.template
similarity index 100%
rename from grafik/tastatur3d/tastatur_neo_alle_Ebenen.svg
rename to grafik/bilder-einzeln/3d/neo.svg.template
diff --git a/grafik/bilder-einzeln/Makefile b/grafik/bilder-einzeln/Makefile
new file mode 100644
index 00000000..a68cdc88
--- /dev/null
+++ b/grafik/bilder-einzeln/Makefile
@@ -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
diff --git a/grafik/bilder-einzeln/bunt-einfach/Makefile b/grafik/bilder-einzeln/bunt-einfach/Makefile
new file mode 100644
index 00000000..5a65ee37
--- /dev/null
+++ b/grafik/bilder-einzeln/bunt-einfach/Makefile
@@ -0,0 +1,2 @@
+all: default
+include ../../common.mk
diff --git a/grafik/tastatur2d/neo_Ebene_1.svg b/grafik/bilder-einzeln/bunt-einfach/neo-1.svg
similarity index 100%
rename from grafik/tastatur2d/neo_Ebene_1.svg
rename to grafik/bilder-einzeln/bunt-einfach/neo-1.svg
diff --git a/grafik/tastatur2d/neo_Ebene_3.svg b/grafik/bilder-einzeln/bunt-einfach/neo-3.svg
similarity index 100%
rename from grafik/tastatur2d/neo_Ebene_3.svg
rename to grafik/bilder-einzeln/bunt-einfach/neo-3.svg
diff --git a/grafik/tastatur2d/neo_Ebene_4.svg b/grafik/bilder-einzeln/bunt-einfach/neo-4.svg
similarity index 100%
rename from grafik/tastatur2d/neo_Ebene_4.svg
rename to grafik/bilder-einzeln/bunt-einfach/neo-4.svg
diff --git a/grafik/flat-generator/Makefile b/grafik/bilder-einzeln/flat/Makefile
similarity index 70%
rename from grafik/flat-generator/Makefile
rename to grafik/bilder-einzeln/flat/Makefile
index c6dbc5ef..06987731 100644
--- a/grafik/flat-generator/Makefile
+++ b/grafik/bilder-einzeln/flat/Makefile
@@ -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
diff --git a/grafik/flat-generator/base.svg.template b/grafik/bilder-einzeln/flat/base.svg.template
similarity index 100%
rename from grafik/flat-generator/base.svg.template
rename to grafik/bilder-einzeln/flat/base.svg.template
diff --git a/grafik/flat-generator/generate-graphics.py b/grafik/bilder-einzeln/flat/generate-graphics.py
similarity index 96%
rename from grafik/flat-generator/generate-graphics.py
rename to grafik/bilder-einzeln/flat/generate-graphics.py
index 4c099284..a1da8b8c 100755
--- a/grafik/flat-generator/generate-graphics.py
+++ b/grafik/bilder-einzeln/flat/generate-graphics.py
@@ -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))
diff --git a/grafik/flat-generator/replacements.py b/grafik/bilder-einzeln/flat/replacements.py
similarity index 100%
rename from grafik/flat-generator/replacements.py
rename to grafik/bilder-einzeln/flat/replacements.py
diff --git a/grafik/bilder-einzeln/grau/Makefile b/grafik/bilder-einzeln/grau/Makefile
new file mode 100644
index 00000000..5a65ee37
--- /dev/null
+++ b/grafik/bilder-einzeln/grau/Makefile
@@ -0,0 +1,2 @@
+all: default
+include ../../common.mk
diff --git a/grafik/druckvorlage/Druckvorlage_Ebenen_1-6_SW_Einzeln.svg b/grafik/bilder-einzeln/grau/neo-grau-123456.svg
similarity index 100%
rename from grafik/druckvorlage/Druckvorlage_Ebenen_1-6_SW_Einzeln.svg
rename to grafik/bilder-einzeln/grau/neo-grau-123456.svg
diff --git a/grafik/bilder-uebersicht/Makefile b/grafik/bilder-uebersicht/Makefile
new file mode 100644
index 00000000..ad41df75
--- /dev/null
+++ b/grafik/bilder-uebersicht/Makefile
@@ -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
diff --git a/grafik/Php-Skript/.svg b/grafik/bilder-uebersicht/all-grau-123456.php
old mode 100644
new mode 100755
similarity index 97%
rename from grafik/Php-Skript/.svg
rename to grafik/bilder-uebersicht/all-grau-123456.php
index 2e39e2fb..2a4c1f3c
--- a/grafik/Php-Skript/.svg
+++ b/grafik/bilder-uebersicht/all-grau-123456.php
@@ -1,3 +1,127 @@
+#!/usr/bin/env php
+
+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);
+?>
diff --git a/grafik/tastatur2d/neo_Ebenen_1_2_3_4.svg b/grafik/bilder-uebersicht/neo-bunt-1234.svg
similarity index 100%
rename from grafik/tastatur2d/neo_Ebenen_1_2_3_4.svg
rename to grafik/bilder-uebersicht/neo-bunt-1234.svg
diff --git a/grafik/bilder-uebersicht/neo-bunt-123456.ods b/grafik/bilder-uebersicht/neo-bunt-123456.ods
new file mode 100644
index 00000000..da2131b3
Binary files /dev/null and b/grafik/bilder-uebersicht/neo-bunt-123456.ods differ
diff --git a/grafik/tastatur2d/neo20_Farbe_Ebene_1,2,3,5.svg b/grafik/bilder-uebersicht/neo-bunt-1235.svg
similarity index 100%
rename from grafik/tastatur2d/neo20_Farbe_Ebene_1,2,3,5.svg
rename to grafik/bilder-uebersicht/neo-bunt-1235.svg
diff --git a/grafik/tastatur2d/neo_Ebenen_1_2_5_6.svg b/grafik/bilder-uebersicht/neo-bunt-1256.svg
similarity index 100%
rename from grafik/tastatur2d/neo_Ebenen_1_2_5_6.svg
rename to grafik/bilder-uebersicht/neo-bunt-1256.svg
diff --git a/grafik/tastatur2d/neo20_Grau_Ebene_1,2,3,5.svg b/grafik/bilder-uebersicht/neo-grau-1235.svg
similarity index 100%
rename from grafik/tastatur2d/neo20_Grau_Ebene_1,2,3,5.svg
rename to grafik/bilder-uebersicht/neo-grau-1235.svg
diff --git a/grafik/tastatur2d/matrix_ebene_[1]2,3,4,[5]6_[Martin].svg b/grafik/bilder-uebersicht/neo-matrix.svg
similarity index 100%
rename from grafik/tastatur2d/matrix_ebene_[1]2,3,4,[5]6_[Martin].svg
rename to grafik/bilder-uebersicht/neo-matrix.svg
diff --git a/grafik/common.mk b/grafik/common.mk
new file mode 100644
index 00000000..bebf5de0
--- /dev/null
+++ b/grafik/common.mk
@@ -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 $@
diff --git a/grafik/druckvorlage/Druckvorlage_Ebenen_1-4_SW.svg b/grafik/druckvorlage/Druckvorlage_Ebenen_1-4_SW.svg
deleted file mode 100644
index 5ef80a4c..00000000
--- a/grafik/druckvorlage/Druckvorlage_Ebenen_1-4_SW.svg
+++ /dev/null
@@ -1,6514 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/grafik/druckvorlage/README.md b/grafik/druckvorlage/README.md
deleted file mode 100644
index e864b7c3..00000000
--- a/grafik/druckvorlage/README.md
+++ /dev/null
@@ -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
diff --git a/grafik/druckvorlage/Tastenaufkleber_Neo2__SW_6erBlock.pdf b/grafik/druckvorlage/Tastenaufkleber_Neo2__SW_6erBlock.pdf
deleted file mode 100644
index 12223742..00000000
Binary files a/grafik/druckvorlage/Tastenaufkleber_Neo2__SW_6erBlock.pdf and /dev/null differ
diff --git a/grafik/druckvorlage/Tastenaufkleber_Neo2__SW_6erBlock.png b/grafik/druckvorlage/Tastenaufkleber_Neo2__SW_6erBlock.png
deleted file mode 100644
index 7deb6249..00000000
Binary files a/grafik/druckvorlage/Tastenaufkleber_Neo2__SW_6erBlock.png and /dev/null differ
diff --git a/grafik/handbuch-cover/Makefile b/grafik/handbuch-cover/Makefile
new file mode 100644
index 00000000..7308f315
--- /dev/null
+++ b/grafik/handbuch-cover/Makefile
@@ -0,0 +1,2 @@
+all: default
+include ../common.mk
diff --git a/grafik/deckblatt_fuer_handbuch/deckblatt_neo6.svg b/grafik/handbuch-cover/cover.svg
similarity index 100%
rename from grafik/deckblatt_fuer_handbuch/deckblatt_neo6.svg
rename to grafik/handbuch-cover/cover.svg
diff --git a/grafik/heatmap/Makefile b/grafik/heatmap/Makefile
new file mode 100644
index 00000000..43037f41
--- /dev/null
+++ b/grafik/heatmap/Makefile
@@ -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
diff --git a/grafik/heatmap/heatmap.png b/grafik/heatmap/heatmap.png
deleted file mode 100644
index cad3e59b..00000000
Binary files a/grafik/heatmap/heatmap.png and /dev/null differ
diff --git a/grafik/heatmap/heatmap.py b/grafik/heatmap/heatmap.py
index eafeef72..d896dd1a 100755
--- a/grafik/heatmap/heatmap.py
+++ b/grafik/heatmap/heatmap.py
@@ -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
diff --git a/grafik/heatmap/neo.png b/grafik/heatmap/neo.png
deleted file mode 100644
index b926a06e..00000000
Binary files a/grafik/heatmap/neo.png and /dev/null differ
diff --git a/grafik/logos/Makefile b/grafik/logos/Makefile
new file mode 100644
index 00000000..583d751e
--- /dev/null
+++ b/grafik/logos/Makefile
@@ -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
diff --git a/grafik/logos/Neo-Icon.ico b/grafik/logos/Neo-Icon.ico
deleted file mode 100644
index bf8f8bee..00000000
Binary files a/grafik/logos/Neo-Icon.ico and /dev/null differ
diff --git a/grafik/logos/neo_status_86.svg b/grafik/logos/_unused/neo-badges.svg
similarity index 100%
rename from grafik/logos/neo_status_86.svg
rename to grafik/logos/_unused/neo-badges.svg
diff --git a/grafik/logos/Neo-Icon.svg b/grafik/logos/_unused/neo-icon-rot.svg
similarity index 100%
rename from grafik/logos/Neo-Icon.svg
rename to grafik/logos/_unused/neo-icon-rot.svg
diff --git a/grafik/logos/Neo-e.svg b/grafik/logos/_unused/neo-logo-e.svg
similarity index 100%
rename from grafik/logos/Neo-e.svg
rename to grafik/logos/_unused/neo-logo-e.svg
diff --git a/grafik/logos/Neo-eps.svg b/grafik/logos/_unused/neo-logo-eps.svg
similarity index 100%
rename from grafik/logos/Neo-eps.svg
rename to grafik/logos/_unused/neo-logo-eps.svg
diff --git a/grafik/logos/paletten2_plus_Martin.svg b/grafik/logos/_unused/neo-logo-vorschlaege.svg
similarity index 100%
rename from grafik/logos/paletten2_plus_Martin.svg
rename to grafik/logos/_unused/neo-logo-vorschlaege.svg
diff --git a/grafik/logos/Bone-Icon-Osterblau.svg b/grafik/logos/bone-icon.svg
similarity index 100%
rename from grafik/logos/Bone-Icon-Osterblau.svg
rename to grafik/logos/bone-icon.svg
diff --git a/grafik/logos/Bone-Icon-Schriftzug.svg b/grafik/logos/bone-schriftzug.svg
similarity index 100%
rename from grafik/logos/Bone-Icon-Schriftzug.svg
rename to grafik/logos/bone-schriftzug.svg
diff --git a/grafik/logos/Neo-Icon-Osterblau.svg b/grafik/logos/neo-icon.svg
similarity index 100%
rename from grafik/logos/Neo-Icon-Osterblau.svg
rename to grafik/logos/neo-icon.svg
diff --git a/grafik/logos/Neo-Icon-Schriftzug.svg b/grafik/logos/neo-schriftzug.svg
similarity index 100%
rename from grafik/logos/Neo-Icon-Schriftzug.svg
rename to grafik/logos/neo-schriftzug.svg
diff --git a/grafik/logos/neo-taste.ico b/grafik/logos/neo-taste.ico
deleted file mode 100644
index c3ca547a..00000000
Binary files a/grafik/logos/neo-taste.ico and /dev/null differ
diff --git a/grafik/logos/Neoqwertz-Icon-Osterblau.svg b/grafik/logos/neoqwertz-icon.svg
similarity index 100%
rename from grafik/logos/Neoqwertz-Icon-Osterblau.svg
rename to grafik/logos/neoqwertz-icon.svg
diff --git a/grafik/logos/Neoqwertz-Logo-Schriftzug.svg b/grafik/logos/neoqwertz-schriftzug.svg
similarity index 100%
rename from grafik/logos/Neoqwertz-Logo-Schriftzug.svg
rename to grafik/logos/neoqwertz-schriftzug.svg
diff --git a/grafik/maskottchen/Makefile b/grafik/maskottchen/Makefile
new file mode 100644
index 00000000..7308f315
--- /dev/null
+++ b/grafik/maskottchen/Makefile
@@ -0,0 +1,2 @@
+all: default
+include ../common.mk
diff --git a/grafik/tastatur2d/neo_Alle_Ebenen.svg b/grafik/tastatur2d/neo_Alle_Ebenen.svg
deleted file mode 100644
index 63a54490..00000000
--- a/grafik/tastatur2d/neo_Alle_Ebenen.svg
+++ /dev/null
@@ -1,3350 +0,0 @@
-
-
-
diff --git a/grafik/tastatur2d/neo_basierend_auf_wikipedias_KB_Germany.txt b/grafik/tastatur2d/neo_basierend_auf_wikipedias_KB_Germany.txt
deleted file mode 100644
index e1a016dc..00000000
--- a/grafik/tastatur2d/neo_basierend_auf_wikipedias_KB_Germany.txt
+++ /dev/null
@@ -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
]