summaryrefslogtreecommitdiff
path: root/linux/bin/wiemitneo
blob: cda71e9293da9bfbdd416d5410ed18bc4841c730 (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
#!/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