Neo ist eine ergonomische Tastaturbelegung, welche für die deutsche Sprache optimiert ist.
https://neo-layout.org
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
131 lines
3.3 KiB
131 lines
3.3 KiB
#!/bin/bash
|
|
#
|
|
# Dieses Skript unterstützt die Benutzung der NEO-Tastatur
|
|
# 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>
|
|
#
|
|
# 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
|
|
|