Ordnung im Verzeichnis "ktouch" einbringen:

- Verschiebe die neue Keyboard-Datei "de.neo2.all.keyboard.xml" in das Verzeichnis "keyboards".
- Verschiebe die alten Keyboard-Dateien "*.keyboard" in das Unterverzeichnis "keyboards/kde3" (da veraltet).
- Verschiebe alle Lektionen in das Verzeichnis "lectures".

Konventionen zur Namensgebung bei den Lektionen einhalten:
- Ändere die Dateinamen und Titel der Lektionen gemäß http://wiki.neo-layout.org/wiki/EigeneKTouchLektionenSchreiben#Konventionen um.
- Den Titel der Neo2-Keyboarddatei anpassen von "Neo 2" auf "Deutsch (Neo2)".

Sonstiges:
- Auslagern der "README.txt" Datei in das Wiki und verlinke darauf.
- Hinzufügen einer neuen Lektion "german.neo2.10000words.ktouch.xml".
- Hinzufügen eines Tools zum generieren von KTouch-Lektionen "tools/sortWords".
This commit is contained in:
adam 2009-11-13 21:01:06 +00:00
parent 03d78a358c
commit 7d16db2d5f
16 changed files with 16093 additions and 30 deletions

View File

@ -1,27 +1,9 @@
== Kleine Anleitung ==
Die neue, an Neo 2 angepasste Tastaturdefinitionsdatei de.neo2.keyboard für
KTouch muss man nach der Installation von KTouch manuell installieren, da
KTouch bisher nur die alte Neo-Belegung mitliefert.
Die Datei muss in das Verzeichnis
~/.kde/share/apps/ktouch # (wenn man keine Root-Rechte hat)
oder
/opt/local/share/apps/ktouch
oder
/usr/share/apps/ktouch
oder
/opt/kde3/share/apps/ktouch/
oder
/usr/lib/kde4/share/kde4/apps/ktouch
oder äquivalentes (je nach Betriebssystem) kopiert werden und kann dann in
KTouch über das Menü
Einstellungen --> Tastaturbelegungen
ausgewählt werden.
=== Dateien welche für was? ===
de.neo2.keyboard zeigt die Belegung der 1. Ebene an
de.neo2.mod3.keyboard zeigt die Belegung der 3. Ebene an
de.neo2.mod4.keyboard zeigt die Belegung der 4. Ebene an
german.neo.ktouch.xml Trainingslektion speziell für Neo
german.neo.ktouch-Neo1.xml alte Trainingslektionen von Hanno
neo2-test.ktouch.xml Test-Trainingslektion um alle Neo-Zeichen zu testen
=== Verzeichnisstruktur ====
./keyboards - Tastaturdefinitionsdateien für KTouch
./lectures - Lektionen für KTouch
./tools - Werkzeuge zum erstellen von KTouch-Lektionen. Näheres in den entsprechenden README.txt Dateien
Eine genaue Beschreibung und Installationsanleitung zu den Lektionen und Tastaturdefinitionsdateien findet sich im Wiki:
http://wiki.neo-layout.org/wiki/KTouchFuerNeoEinrichten
Eine allgemeine Einführung in KTouch steht unter:
http://wiki.neo-layout.org/wiki/Tipptrainer#KTouch

View File

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<KTouchLecture>
<Title>Deutsch (Häufigkeitsanalyse)</Title>
<Title>Deutsch (Neo Häufigkeitsanalyse)</Title>
<FontSuggestions>Monospace</FontSuggestions>
<Levels>
<Level>

View File

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<KTouchLecture>
<Title>Deutsch (Neo-Tastaturbelegung)</Title>
<Title>Deutsch (Neo1 Tastaturbelegung)</Title>
<Comment>Created 2005 by Hanno Behrens &lt;Hanno.Behrens@gmx.de>
Homepage: http://neo-layout.org
</Comment>

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<KTouchLecture>
<Title>German (Neo keyboard layout)</Title>
<Title>Deutsch (Neo2 Tastaturbelegung)</Title>
<Comment>Überarbeitet 2009 von Carsten MISCHKE &lt;Carsten,Mischke@gmail.com> inspiriert durch die Vorlage von Hanno Behrens
Homepage: http://neo-layout.org
</Comment>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<KTouchLecture>
<Title>Neo-2-Test</Title>
<Title>Deutsch (Neo2 Test)</Title>
<Comment>Created 2007 by Erik Streb</Comment>
<FontSuggestions>Monospace</FontSuggestions>
<Levels>

View File

@ -0,0 +1,2 @@
Siehe Wiki:
http://wiki.neo-layout.org/wiki/SortWords

10000
ktouch/tools/sortWords/in.txt Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,17 @@
# Diese Konfigurationsdatei enthält eine Zeichenfolge, nach der die Wörter sortiert werden.
# Bei einer Zeichenfolge
# fj dk sl aö e i
# Werden zuerst alle Wörter die, nur aus den Buchstaben {f,j} bestehen, heraussortiert.
# Danach alle Wörter, die nur aus {f,j,d,k} bestehen und danach alle Wörter, die nur
# aus {f,j,d,k,s,l} bestehen... . Jedes Wort wird höchstens ein mal heraussortiert.
#
# Es müssen nur klein geschrieben Zeichen aufgelistet werden. Die großen Zeichen werden
# automatisch angehängt, sofern nicht die Option '-k' genutzt wird.
# Es wird nur die erste, nicht kommentierte Zeile als Eingabe betrachtet
# Die Datei muss im UTF-8 Format mit Unix-Zeilenumbruch kodiert sein.
# Die Standardbelegung von Neo2
en ar ud it l g c h o s w k p m z b ä , v f ö . x q ü j ß y
# Die Standardbelegung von Neo1
#en ar ud it l g c h o s w k p m z b v f ä q j y ü ß ö x

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,234 @@
#!/bin/bash
# Autor: Adam Taras <www.adam-taras.de/opensource>
# Datum: 20.06.2009
#=== Hilfe ===
printHelp(){
echo "Usage: "$0" [OPTIONEN]"
echo "Liest aus der Datei \"$fileIn\" alle Wörter ein und gibt diese sortiert nach der in der Datei \"$fileKey\" festgelegten Reihenfolge weider aus."
echo "Sie werden einmal in eine Klartextdatei \"$fileOut\" und in eine KTouch-Lektion \"$fileKTouch\" geschrieben."
echo "Dabei ist egal, wie die Worte in \"$fileIn\" voneinander getrennt sind. (Windows-Zeilentrennzeichen, Linux-Zeilentrennzeichen, Leerzeichen, Tabulator, ...)"
echo
echo " -k berücksichtige nur komplett klein geschriebene Worte"
echo " -w wandle alle Worte in klein-schreibeise um. Setzt automatisch die Option '-k'"
echo " -e entfernt doppelt vorkommende Worte und sortiert dabei die Ergebnisliste nach dem Alphabet. Empfehlenswert in Verbindung mit der Option '-w', da hierbei zwei gleiche Worte auftreten können, die sich zuvor durch Groß/kleinschreibung unterschieden haben"
echo " -f:<SPALTEN> faltet die Ausgabedatei \"$fileOut\" nach der angegebenen Anzahl von Spalten. Standard=80"
echo " -z:<ZEILEN> maximale Anzahl an Zeilen pro Trainings-Lektion-Stufe. (WARNUNG: Ausführung dauert sehr lange!)"
echo
echo "Beispiel: ./sortWords.sh -w -e -z:4"
exit 0
}
#=== Parameter ===
# Datei mit den häufigsten Wörtern der deutschen Sprache. Es ist egal, wie die Wörter von einander getrennt sind.
fileIn=in.txt
# Falls eine benutzerspezifische Zeichenreihenfolge gewählt werden soll, muss sie sich in dieser Datei befinden.
fileKey=key.conf
# Die standard Ausgabedatei
fileOut=out.txt
# Die standard Ausgabedatei für eine KTouch-Lektion
fileKTouch=out.ktouch.xml
# Sollen nur klein geschriebene Worte berücksichtigt werden?
paramSet_k=false
# Sollen alle Worte in kleinschreibweise umgewandelt werden?
paramSet_w=false
# Sollen doppelte Einträge in der Quelldatei igonriert werden? Die Wörter müssen dazu jedoch alphabetisch sortiert werden
paramSet_e=false
# Sollen die Zeilen auf eine Maximale Größe pro Trainigs-Lektion-Stufe begrenzt werden?
paramSet_z=false
# Nach wie vielen Spalten sollen die Zeilen der Ausgabedatei umgebrochen werden?
paramF_Amount=80
# Wie viele Zeilen sind pro Trainings-Lektion-Stufe maximal erlaubt?
paramZ_Amount=4
# Lese die Parameter aus der Kommandozeile aus
for param
do
case $param in
-k ) paramSet_k=true;;
-w ) paramSet_w=true; paramSet_k=true;;
-e ) paramSet_e=true;;
-f:[[:digit:]]* ) paramF_Amount=`echo $param | grep -E -o [[:digit:]]+`;;
-z:[[:digit:]]* ) paramSet_z=true; paramZ_Amount=`echo $param | grep -E -o [[:digit:]]+`;;
* ) printHelp;;
esac
done
# TODO: Lese den Letzten Parameter als fileIn raus und Prüfe, ob dieser existiert
#=== Initialisierung ===
# Temporäre Datei
fileTmpFormatted=tmpFormatted.txt
# Falls ein KeyFile existiert, wird es geladen
# Das key-Array enthält die Buchstaben, die in jeder neuen Lektion hinzu kommen
echo -n "Zeichenreihenfolge wird geladen: "
if [ -e $fileKey ]
then
echo -n "Aus Datei \"$fileKey\"..."
key=(`grep ^[^#] key.conf | head -n 1`)
else
echo -n "Standard..."
# Lade die Standard-Zeichenreihenfolge
key=(en ar ud it l g c h o s w k p m z b v f ä q j y ü ß ö x)
fi
# Falls der Parameter '-k' NICHT gewählt wurde, füge die großen Buchstaben direkt an die kleinen an.
if [ $paramSet_k = false ]
then
for smallKey in `echo ${key[*]}`
do
bigKey=`echo $smallKey | tr 'a-zäöü' 'A-ZÄÖÜ'`
list=$list' '$smallKey$bigKey
done
key=($list)
fi
echo "OK"
#=== Quelldatei einlesen ===
echo -n "Quelldatei \"$fileIn\" wird eingelesen..."
if [ ! -e $fileIn ]
then
echo FEHLER: Die Quelldatei $fileIn existiert nicht!
exit 1
fi
# assertion: Quelldatei existiert
wordsCount=`wc -w $fileIn | grep -E -o [[:digit:]]+`
echo "OK"
echo "Wörter gesamt = $wordsCount"
#=== Formatiere den Quelltext ===
# Entferne alle NICHT-Buchstaben und alle NICHT-Whitespace
# Ersetze Whitespace durch ein einzelnes LineFeed-Zeichen
# Wandle alle Großbuchstaben in Kleinbuchstaben um (|tr 'A-ZÄÖÜ' 'a-zäöü' \)
# Filtere alle ein-buchstabigen Wörter raus
# Entferne die doppelten Wörter (leider wird hierbei auch sortiert)
# Schreibe in eine temporäre Datei
echo -n "Formatiere den Quelltext..."
cat $fileIn \
| tr -d -c 'a-zA-ZäöüÄÖÜß\n\t ' \
| tr -s [:space:] '\n' \
| grep -E -x .\{2,\} \
> $fileTmpFormatted
# Wandle alle Worte in kleinschreibweise um
if [ $paramSet_w = true ]
then
tr 'A-ZÄÖÜ' 'a-zäöü' < $fileTmpFormatted > $fileTmpFormatted.small
rm $fileTmpFormatted
mv $fileTmpFormatted.small $fileTmpFormatted
fi
# Entferne doppelte Wörter
if [ $paramSet_e = true ]
then
sort -u $fileTmpFormatted > $fileTmpFormatted.sorted
rm $fileTmpFormatted
mv $fileTmpFormatted.sorted $fileTmpFormatted
fi
# Ausgabe
wordsCount=`wc -l $fileTmpFormatted | grep -E -o [[:digit:]]+`
echo "OK"
echo "Nach dem Filtern bleiben $wordsCount Wörter übrig."
#=== Hauptschleife ===
pOld=. # Nur initialisierung
rm $fileOut
echo
echo Buchstaben \| Anzahl der neuen Wörter
echo =====================================
for newKey in `echo ${key[*]}`
do
pNew=$pNew$newKey
#Schreibe in Datei
echo "===$newKey===" >> $fileOut
grep -E -x [$pNew]+ $fileTmpFormatted \
| grep -E -x -v [$pOld]+ \
| tr -s '\n' ' ' \
| sed -e 's/ $//' \
>> $fileOut
echo >> $fileOut
#Ausgabe auf die Konsole
echo $newKey \| `grep -E -x [$pNew]+ $fileTmpFormatted | grep -E -x -v -c [$pOld]+`
pOld=$pNew
done
echo
#=== Faltung ===
echo -n "Falte die Datei \"$fileOut\" nach spätestens $paramF_Amount Spalten..."
fold -s -w $paramF_Amount < $fileOut \
| sed -e 's/ $//' \
> $fileOut.wrapped
rm $fileOut
mv $fileOut.wrapped $fileOut
echo "OK"
#=== Zeilen Begrenzung ===
if [ $paramSet_z = true ]
then
echo -n "Trainings-Lektions-Stufen werden auf $paramZ_Amount Zeilen begrenzt"
rm -f $fileOut.splitted
zeilenNr=1
count=0
teileNaechsteZeile=false
zeilenGesamt=`wc -l $fileOut | grep -E -o [[:digit:]]+`
while [ $zeilenNr -le $zeilenGesamt ]
do
zeile=`sed -n ${zeilenNr}p $fileOut`
if [ `echo $zeile | grep -c ^===` -gt 0 ]
then
teileNaechsteZeile=false
kopfZeile=$zeile
count=0
echo -n "."
else
if [ $teileNaechsteZeile = true ]
then
# insert new line at this position
echo $kopfZeile >> $fileOut.splitted
teileNaechsteZeile=false
fi
count=`expr $count + 1`
if [ $count -eq $paramZ_Amount ]
then
teileNaechsteZeile=true
count=0
fi
fi
zeilenNr=`expr $zeilenNr + 1`
echo $zeile >> $fileOut.splitted
done
rm $fileOut
mv $fileOut.splitted $fileOut
echo "OK"
fi
#=== Erstelle KTouch-Lektion ===
echo -n "Erstelle KTouch-Lektion \"$fileKTouch\"..."
echo -e "<KTouchLecture>\n"\
"<Title>Deutsch (Neo2 Sortierte Wörter)</Title>\n"\
"<Comment>`date -I` - Neo2 - Mit \"$0\" automatisch generierte Datei</Comment>\n"\
"<FontSuggestions>Monospace</FontSuggestions>\n"\
"<Levels>" > $fileKTouch
sed -e 's/^===/ <Level>\n <NewCharacters>/' \
-e 's/===$/<\/NewCharacters>/' \
-e '/^ /! s/$/<\/Line>/' -e '/^ /! s/^/ <Line>/' \
-e '/^ <Level>/ i\ <\/Level>' \
$fileOut >> $fileKTouch
sed -e '6d' $fileKTouch > $fileKTouch.tmp #Entferne die erste zu viel eingefügte " </Level>" Zeile
rm $fileKTouch
mv $fileKTouch.tmp $fileKTouch
echo -e " </Level>\n </Levels>\n</KTouchLecture>" >> $fileKTouch
echo "OK"
#=== Clean & Exit ===
rm $fileTmpFormatted
exit 0