From efcdb80eb706ea4c21f41f8c8c5e8c880fce606c Mon Sep 17 00:00:00 2001 From: dennis Date: Wed, 11 May 2011 19:50:33 +0000 Subject: Fix: besser kommentierte Version von Pascal (via Mailingliste). git-svn-id: https://svn.neo-layout.org@2389 b9310e46-f624-0410-8ea1-cfbb3a30dc96 --- linux/bin/wiemitneo | 47 +++++++++++++++++++++++++++++------------------ 1 file 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 @@ -10,7 +9,7 @@ # Kontakt zu den Entwicklern der Neo-Tastatur: # -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 -- cgit v1.2.3