summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpascal <pascal@b9310e46-f624-0410-8ea1-cfbb3a30dc96>2008-11-28 08:22:50 +0000
committerpascal <pascal@b9310e46-f624-0410-8ea1-cfbb3a30dc96>2008-11-28 08:22:50 +0000
commitb924b1b2db7d70d51471448d4f654c39d1b0c2a2 (patch)
tree5b7c9c998ad3c00de9c13ae9e3b8334b50d0c977
parent88840201d6bcb240e603d3a159a3cfb4ca25f2a7 (diff)
Neugestaltung des Skripts, Abfrage des Keypads möglich
git-svn-id: https://svn.neo-layout.org@1254 b9310e46-f624-0410-8ea1-cfbb3a30dc96
-rwxr-xr-xlinux/bin/wiemitneo196
-rw-r--r--linux/bin/wiemitneo.todo12
2 files changed, 125 insertions, 83 deletions
diff --git a/linux/bin/wiemitneo b/linux/bin/wiemitneo
index 69dadef..cda71e9 100755
--- a/linux/bin/wiemitneo
+++ b/linux/bin/wiemitneo
@@ -1,100 +1,130 @@
#!/bin/sh
+#
+# Dieses Skript unterstützt die Benutzung der NEO-Tastatur
+# Als Argument kann ein einzelnes Zeichen oder eine Beschrbeibung eines Zeichens übergeben werden
+#
+# Dieses Skript stammt von:
+# Pascal Hauck <pascal dot hauck at web dot de>
+#
+# Kontakt zu den Entwicklern der NEO-Tastatur:
+# <mailinglist at neo-layout dot org>
-# Verzeichnis muss eventuell an den Ort der neo20.txt angepasst werden:
COMPOSE=/usr/share/X11/locale/en_US.UTF-8/Compose
-REFERENZ=$HOME/neo/A-REFERENZ-A/neo20.txt
+REFERENZ=$HOME/neo/neo20.txt
+
+VON[1]=7; BIS[1]=82; RAND[1]="┌─────┬──"; ORT[1]="" # HAUPTTASTATUR=1
+VON[2]=1; BIS[2]=33; RAND[2]="┌───────┬──"; ORT[2]="auf dem Keypad" # KEYPAD=2
+
+
+
+zeichen=$1 # suche nach diesem Zeichen
+typeset -i z s e j # z=zeile, s=spalte, e=Ebene
-zeichen=`echo $1 | cut -c1`
-# suche nach diesem Zeichen
-typeset -i z s e
-# z=zeile, s=spalte, e=Ebene
-find=`grep -m 1 -B 15 "┴──────┘" $REFERENZ | grep [│\ ]$zeichen[│\ ] | head -1 | cut -f1 -d \ `
-anzahl=`grep -m 1 -B 15 "┴──────┘" $REFERENZ | grep -n [│\ ]$zeichen[│\ ] | wc -l`
-if [ $find ]
-then
-# $zeichen gibt es direkt auf der Tastatur bei Ebene $e auf der Taste $ursprung
- for i in $(seq 1 $anzahl)
+bild () { # bild TASTATURTEIL , erzeugt das Bild des Tastaturteils wie die Skripte neo und num
+ grep -m 1 -A 15 ${RAND[$1]} $REFERENZ | cut -c ${VON[$1]}-${BIS[$1]}
+}
+
+teste () { # teste TASTATURTEIL ZEILE SPALTE
+ bild $1 | head -$2 | tail -1 | cut -c $3
+}
+
+schau_auf_tastatur () {
+ zeichen=$1
+ j=0
+ for tastatur in 1 2
do
-# eventuell mehrfach auf der Tastatur vorhanden
- e=1
- zeile=`grep -m 1 -B 15 "┴──────┘" $REFERENZ | grep -n [│\ ]$zeichen[│\ ] | head -$i | tail -1 | cut -f1 -d:`
- spalte=`grep -m 1 -B 15 "┴──────┘" $REFERENZ | grep [│\ ]$zeichen[│\ ] | head -$i | tail -1| cut -f1 -d $zeichen | wc -m`
- z=$((zeile))
- s=$((spalte))
-
- teste=`grep -m 1 -B 15 "┴──────┘" $REFERENZ | head -$z | tail -1 | cut -c $s`
- while [ ! "$teste" = "─" ] && [ ! "$teste" = "┬" ]
- do
-# finde Zeile z von $ursprung (=Tastenname), berechne die Ebene $e von $zeichen
- z=z+1
- e=e+1
- ursprung=$teste
- teste=`grep -m 1 -B 15 "┴──────┘" $REFERENZ | head -$z | tail -1 | cut -c $s`
- done
-
- teste=$ursprung
- z=z-1
- e=e-1
- while [ ! "$teste" = "│" ]
- do
-# finde Spalte s von $ursprung (=Tastenname), berechne die Ebene $e von $zeichen
- s=s-1
- e=e+1
- ursprung=$teste
- teste=`grep -m 1 -B 15 "┴──────┘" $REFERENZ | head -$z | tail -1 | cut -c $s`
- done
- e=e-1
-
- case $e in
- 1)
- echo $zeichen ist eine eigene Taste
- ;;
- 2)
- echo $zeichen erreicht man mit Shift+$ursprung
- ;;
- 3)
- echo $zeichen erreicht man mit Mod3+$ursprung
- ;;
- 4)
- echo $zeichen erreicht man mit Mod4+$ursprung
- ;;
- 5)
- echo $zeichen erreicht man mit Shift+Mod3+$ursprung
- ;;
- 6)
- echo $zeichen erreicht man mit Mod3+Mod4+$ursprung
- ;;
- esac
+
+ anzahl=`bild $tastatur | grep -n [│\ ]$zeichen[│\ ] | wc -l` # wie häufig ist $zeichen auf der Tastatur?
+
+ if [ $anzahl -ge 1 ]
+ then
+# $zeichen gibt es direkt auf der Tastatur bei Ebene $e auf der Taste $ursprung
+ [ $j -le 2 ] && echo • $zeichen gibt es direkt auf der NEO-Tastatur: && j=3
+
+ for i in $(seq 1 $anzahl) # eventuell mehrfach auf der Tastatur vorhanden
+ do
+ j=j+1
+ z=`bild $tastatur | grep -n [│\ ]$zeichen[│\ ] | head -$i | tail -1 | cut -f1 -d:`
+ s=`bild $tastatur | grep [│\ ]$zeichen[│\ ] | head -$i | tail -1 | cut -f1 -d $zeichen | wc -m`
+
+ e=0
+ test=`teste $tastatur $z $s`
+ while [ ! "$test" = "─" ] && [ ! "$test" = "┬" ]
+ do
+# finde Zeile z von $ursprung (=Tastenname), berechne die Ebene $e von $zeichen
+ z=z+1
+ e=e+1
+ ursprung=$test
+ test=`teste $tastatur $z $s`
+ done
+ z=z-1
+
+ ehilfe="1"
+ test=$ursprung
+ while [ ! "$test" = "│" ]
+ do
+ if [ "$test" = " " ]
+ then
+ ehilfe="0"
+ elif [ "$ehilfe" = "0" ]
+ then
+ e=e+2; ehilfe=1
+ ursprung=$test
+ fi
+
+ s=s-1
+ test=`teste $tastatur $z $s`
+ done
+ ursprung=`echo $ursprung ${ORT[$tastatur]}`
+
+# gebe Position eines gefundenen Zeichens aus
+ case $e in
+ 1)
+ echo $zeichen ist eine eigene Taste ${ORT[$tastatur]}
+ ;;
+ 2)
+ echo $zeichen erreicht man mit Shift+$ursprung
+ ;;
+ 3)
+ echo $zeichen erreicht man mit Mod3+$ursprung
+ ;;
+ 4)
+ echo $zeichen erreicht man mit Mod4+$ursprung
+ ;;
+ 5)
+ echo $zeichen erreicht man mit Shift+Mod3+$ursprung
+ ;;
+ 6)
+ echo ›$zeichen erreicht man mit Mod3+Mod4+$ursprung
+ ;;
+ esac
+ done
+
+ else
+# $zeichen gibt es nicht direkt auf der Haupttastatur
+ [ $j -eq 2 ] && echo • $zeichen gibt es nicht direkt auf der NEO-Tastatur && j=3
+ fi
done
+}
-else
-# $zeichen gibt es nicht direkt auf der Tastatur
- keinetaste=1
-fi
-such=\"$zeichen\"
-find=`grep $such $COMPOSE | head -1 | cut -f1 -d \ `
+schau_auf_tastatur $zeichen
+
+
+
+find=`grep "\"$zeichen\"" $COMPOSE | head -1 | cut -f1 -d \ `
if [ $find ]
then
# $zeichen gibt es als Compose
- if [ "$keinetaste" = "1" ]
- then
- echo $zeichen ist nicht direkt auf der NEO-Tastatur
- echo
- echo Aber $zeichen ist über Compose folgendermaßen darstellbar:
- else
- echo
- echo Außerdem ist $zeichen über Compose folgendermaßen darstellbar:
- fi
- grep ^\<.*$such $COMPOSE | cut -f1 -d: | sed -e 's/> </> + </g'
+ echo
+ echo • $zeichen ist über Compose folgendermaßen darstellbar:
+ grep ^\<.*"\"$zeichen\"" $COMPOSE | cut -f1 -d: | sed -e 's/> </> + </g'
else
# $zeichen gibt es nicht als Compose
- if [ "$keinetaste" = "1" ]
- then
- echo $zeichen kann man mit der NEO nicht erzeugen
- fi
-fi \ No newline at end of file
+ echo
+ echo • $zeichen kann man nicht über Compose erzeugen
+fi
diff --git a/linux/bin/wiemitneo.todo b/linux/bin/wiemitneo.todo
new file mode 100644
index 0000000..3e61e77
--- /dev/null
+++ b/linux/bin/wiemitneo.todo
@@ -0,0 +1,12 @@
+In dieser Datei sind Verhaltensweisen beschrieben, die noch nicht oder unzureichend im Skript ›wiemitneo‹ implementiert worden sind.
+
+Offene Punkte:
+• ›schau_auf_tastatur‹ nur dann ausführen, wenn nach einem einzelnen Zeichen gesucht wird
+• das Ergebnis der Suche in Compose in der Form ♫:) statt
+<Multi_key> + <colon> + <parenright> präsentieren
+• für tote Tasten schlage ich ⁽ˆ⁾ ⁽˜⁾ ₍¸₎ u.s.w. vor, also die Ausgabe von <totes Zeichen>+<Shift>+<Mod3>+<Space> umringt von hochgestellten (bzw. im Ausnahmefall ₍¸₎ tiefegstellten) Klammern
+• die Funktionalität von ›beschreibe‹ soll in ›wiemitneo‹ integriert werden
+• bei einer Eingabe wie ›wiemitneo root‹ sollen wie bei ›beschreibe root‹ die Ergebnisse ∛ und ∜ gefunden werden
+• gefundene Zeichen sollten jeweils nur einmal auftauchen
+• eventuell sollte eine Berschreibung (CUBE ROOT, FOURTH ROOT) ergänzt werden
+• neben Compose sollte auch sollte auch die keysymdef.h abgefragt werden, so dass ›wiemitneo integral‹ neben ∬, ∭, ⨌, ∯ auch ∫ anbietet