summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordennis <dennis@b9310e46-f624-0410-8ea1-cfbb3a30dc96>2011-05-11 19:50:33 +0000
committerdennis <dennis@b9310e46-f624-0410-8ea1-cfbb3a30dc96>2011-05-11 19:50:33 +0000
commitefcdb80eb706ea4c21f41f8c8c5e8c880fce606c (patch)
tree68382b87a4d2e1703f08666c6b05f63c2c7ea366
parent40c476df10112a9ba72a4a88126d6a478f5f50c4 (diff)
Fix: besser kommentierte Version von Pascal (via Mailingliste).
git-svn-id: https://svn.neo-layout.org@2389 b9310e46-f624-0410-8ea1-cfbb3a30dc96
-rwxr-xr-xlinux/bin/wiemitneo47
1 files changed, 29 insertions, 18 deletions
diff --git a/linux/bin/wiemitneo b/linux/bin/wiemitneo
index 403cd0e..c6cdec3 100755
--- a/linux/bin/wiemitneo
+++ b/linux/bin/wiemitneo
@@ -1,8 +1,7 @@
-#!/bin/bash
+#!/bin/sh
#
# Dieses Skript unterstützt die Benutzung der Neo-Tastatur
-# Als Argument kann ein einzelnes Zeichen oder eine Beschreibung eines
-# Zeichens übergeben werden
+# Als Argument kann ein einzelnes Zeichen oder eine Beschreibung eines Zeichens übergeben werden
#
# Dieses Skript stammt von:
# Pascal Hauck <pascal dot hauck at web dot de>
@@ -10,7 +9,7 @@
# Kontakt zu den Entwicklern der Neo-Tastatur:
# <diskussion at neo-layout dot org>
-COMPOSE=/usr/share/X11/locale/en_US.UTF-8/Compose
+COMPOSE=$HOME/.XCompose
REFERENZ=$HOME/neo/neo20.txt
VON[1]=7; BIS[1]=82; RAND[1]="┌─────┬──"; ORT[1]="" # HAUPTTASTATUR=1
@@ -22,19 +21,23 @@ zeichen=$1 # suche nach diesem Zeichen
typeset -i z s e j # z=zeile, s=spalte, e=Ebene
+# als TASTATURTEL wird immer 1 für die Haupttastatur und 2 für das Keypad verwendet
-bild () { # bild TASTATURTEIL , erzeugt das Bild des Tastaturteils wie die Skripte neo und num
+bild () { # Aufruf: 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
+position () { # Aufruf: position TASTATURTEIL ZEILE SPALTE
+# gibt das Zeichen aus, das an der durch $TASTATURTEIL, $ZEILE und $SPALTE spezifizierten stelle liegt
bild $1 | head -$2 | tail -1 | cut -c $3
}
-schau_auf_tastatur () {
- zeichen=$1
- j=0
- for tastatur in 1 2
+such_auf_tastatur () { # Aufruf: such_auf_tastatur ZEICHEN
+# sucht, ob das Zeichen $ZEICHEN irgendwo auf der Tastatur (Haupttastatur oder Keypad) zu finden ist
+ zeichen=$1 # zu suchendes Zeichen
+ j=0 # j=3, sobald das Zeichen gefunden wurde
+ for tastatur in 1 2 # durchsuche beide Tastaturteile
do
anzahl=`bild $tastatur | grep -n [│\ ]$zeichen[│\ ] | wc -l` # wie häufig ist $zeichen auf der Tastatur?
@@ -48,27 +51,35 @@ schau_auf_tastatur () {
do
j=j+1
z=`bild $tastatur | grep -n [│\ ]$zeichen[│\ ] | head -$i | tail -1 | cut -f1 -d:`
+# Zeile, an der das gesuchte Zeichen gefunden worden ist
s=`bild $tastatur | grep [│\ ]$zeichen[│\ ] | head -$i | tail -1 | cut -f1 -d $zeichen | wc -m`
+# Spalte, an der das gesuchte Zeichen gefunden worden ist
- e=0
- test=`teste $tastatur $z $s`
+ e=0 # e gibt am Ende die Ebene an, in der das gesuchte Zeichen liegt
+ test=`position $tastatur $z $s`
while [ ! "$test" = "─" ] && [ ! "$test" = "┬" ]
+# suche in dem Kästchen bis der untere Rand gefunden ist
+# Beispiel: ┬────┴┬
+# │N 4 ℕ│
+# │n ( ν│
+# ┴──┬──┴
do
-# finde Zeile z von $ursprung (=Tastenname), berechne die Ebene $e von $zeichen
+# finde Zeile z von $ursprung (=Tastenname, im Beispiel also ›n‹), berechne die Ebene $e von $zeichen
z=z+1
e=e+1
ursprung=$test
- test=`teste $tastatur $z $s`
+ test=`position $tastatur $z $s`
done
z=z-1
- ehilfe="1"
+ ehilfe="1" # ehilfe="1" - es gibt kein Leerzeichen neben dem Rand
test=$ursprung
while [ ! "$test" = "│" ]
+# suche in dem Kästchen bis der linke Rand gefunden ist
do
if [ "$test" = " " ]
then
- ehilfe="0"
+ ehilfe="0" # ehilfe="0" - es gibt kein Leerzeichen - neben dem Rand?
elif [ "$ehilfe" = "0" ]
then
e=e+2; ehilfe=1
@@ -76,7 +87,7 @@ schau_auf_tastatur () {
fi
s=s-1
- test=`teste $tastatur $z $s`
+ test=`position $tastatur $z $s`
done
ursprung=`echo $ursprung ${ORT[$tastatur]}`
@@ -113,7 +124,7 @@ schau_auf_tastatur () {
-schau_auf_tastatur $zeichen
+such_auf_tastatur $zeichen