neo-layout/linux/bin/wiemitneo

131 lines
3.3 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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>
COMPOSE=/usr/share/X11/locale/en_US.UTF-8/Compose
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
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
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
}
schau_auf_tastatur $zeichen
find=`grep "\"$zeichen\"" $COMPOSE | head -1 | cut -f1 -d \ `
if [ $find ]
then
# $zeichen gibt es als Compose
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
echo
echo$zeichen kann man nicht über Compose erzeugen
fi