blob: 5393c483de15b15d52e1af74adf358d4be379bd8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
#!/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:
# <diskussion 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
|