source: linux/bin/wiemitneo

Letzte Änderung dieser Datei war 2391, erstellt von dennis, vor 7 Jahren

Fix: Fallback-Lösungen für die benötigten Dateien eingebaut.

  • Eigenschaft svn:executable auf * gesetzt
Dateigröße: 4.6 KB
Zeile 
1#!/bin/bash
2#
3# Dieses Skript unterstützt die Benutzung der Neo-Tastatur
4# Als Argument kann ein einzelnes Zeichen oder eine Beschreibung eines Zeichens übergeben werden
5#
6# Dieses Skript stammt von:
7#      Pascal Hauck <pascal dot hauck at web dot de>
8#
9# Kontakt zu den Entwicklern der Neo-Tastatur:
10#      <diskussion at neo-layout dot org>
11
12
13# Benutze die beutzerspezifische Compose-Datei (wenn vorhanden); ansonsten die des Systems
14if [ -f $HOME/.XCompose ]; then
15        COMPOSE=$HOME/.XCompose
16else
17        COMPOSE=/usr/share/X11/locale/en_US.UTF-8/Compose
18fi
19
20# Benutze die von installiere_neo installierte Referenz-Datei (wenn vorhanden); ansonsten die aus dem SVN
21if [ -f $HOME/neo/neo20.txt ]; then
22        REFERENZ=$HOME/neo/neo20.txt
23else
24        REFERENZ=../../A-REFERENZ-A/neo20.txt
25fi
26
27VON[1]=7; BIS[1]=82; RAND[1]="┌─────┬──";   ORT[1]=""                   # HAUPTTASTATUR=1
28VON[2]=1; BIS[2]=33; RAND[2]="┌───────┬──"; ORT[2]="auf dem Keypad"     # KEYPAD=2
29
30
31
32zeichen=$1                                                              # suche nach diesem Zeichen
33typeset -i z s e j                                                      # z=zeile, s=spalte, e=Ebene
34
35
36# als TASTATURTEL wird immer 1 für die Haupttastatur und 2 für das Keypad verwendet
37
38bild () {       # Aufruf: bild TASTATURTEIL
39# erzeugt das Bild des Tastaturteils wie die Skripte neo und num
40        grep -m 1 -A 15 ${RAND[$1]} $REFERENZ | cut -c ${VON[$1]}-${BIS[$1]}
41}
42
43position () {   # Aufruf: position TASTATURTEIL ZEILE SPALTE
44# gibt das Zeichen aus, das an der durch $TASTATURTEIL, $ZEILE und $SPALTE spezifizierten stelle liegt
45        bild $1 | head -$2 | tail -1 | cut -c $3
46}
47
48such_auf_tastatur () { # Aufruf: such_auf_tastatur ZEICHEN
49# sucht, ob das Zeichen $ZEICHEN irgendwo auf der Tastatur (Haupttastatur oder Keypad) zu finden ist
50        zeichen=$1                                                      # zu suchendes Zeichen
51        j=0                                                             # j=3, sobald das Zeichen gefunden wurde
52        for tastatur in 1 2                                             # durchsuche beide Tastaturteile
53        do
54
55                anzahl=`bild $tastatur | grep -n [\ ]$zeichen[\ ] | wc -l`    # wie häufig ist $zeichen auf der Tastatur?
56
57                if [ $anzahl -ge 1 ]
58                then
59#               $zeichen gibt es direkt auf der Tastatur bei Ebene $e auf der Taste $ursprung
60                [ $j -le 2 ] && echo • $zeichen gibt es  direkt auf der Neo-Tastatur: && j=3
61
62                        for i in $(seq 1 $anzahl)                       # eventuell mehrfach auf der Tastatur vorhanden
63                        do
64                                j=j+1
65                                z=`bild $tastatur | grep -n [\ ]$zeichen[\ ] | head -$i | tail -1 | cut -f1 -d:`
66#                               Zeile, an der das gesuchte Zeichen gefunden worden ist
67                                s=`bild $tastatur | grep [\ ]$zeichen[\ ] | head -$i | tail -1 | cut -f1 -d $zeichen | wc -m`
68#                               Spalte, an der das gesuchte Zeichen gefunden worden ist
69
70                                e=0                                     # e gibt am Ende die Ebene an, in der das gesuchte Zeichen liegt
71                                test=`position $tastatur $z $s`
72                                while [ ! "$test" = "─" ] && [ ! "$test" = "┬" ]
73#                               suche in dem Kästchen bis der untere Rand gefunden ist
74#                               Beispiel:       ┬────┴┬
75#                                               │N 4 ℕ│
76#                                               │n ( ν│
77#                                               ┴──┬──┴
78                                do
79#                               finde Zeile z von $ursprung (=Tastenname, im Beispiel also ›n‹), berechne die Ebene $e von $zeichen
80                                        z=z+1
81                                        e=e+1
82                                        ursprung=$test
83                                        test=`position $tastatur $z $s`
84                                done
85                                z=z-1
86
87                                ehilfe="1"                              # ehilfe="1" - es gibt kein Leerzeichen neben dem Rand
88                                test=$ursprung
89                                while [ ! "$test" = "│" ]
90#                               suche in dem Kästchen bis der linke Rand gefunden ist
91                                do
92                                        if [ "$test" = " " ]
93                                        then
94                                                ehilfe="0"              # ehilfe="0" - es gibt kein Leerzeichen - neben dem Rand?
95                                        elif [ "$ehilfe" = "0" ]
96                                        then
97                                                e=e+2; ehilfe=1
98                                                ursprung=$test
99                                        fi
100                               
101                                        s=s-1
102                                        test=`position $tastatur $z $s`
103                                done   
104                                ursprung=`echo $ursprung ${ORT[$tastatur]}`
105
106#                               gebe Position eines gefundenen Zeichens aus
107                                case $e in
108                                        1)
109                                                echo $zeichen ist eine eigene Taste ${ORT[$tastatur]}
110                                                ;;
111                                        2)
112                                                echo $zeichen erreicht man mit Shift+$ursprung
113                                                ;;
114                                        3)
115                                                echo $zeichen erreicht man mit Mod3+$ursprung
116                                                ;;
117                                        4)
118                                                echo $zeichen erreicht man mit Mod4+$ursprung
119                                                ;;
120                                        5)
121                                                echo $zeichen erreicht man mit Shift+Mod3+$ursprung
122                                                ;;
123                                        6)
124                                                echo ›$zeichen erreicht man mit Mod3+Mod4+$ursprung
125                                                ;;
126                                esac
127       
128                        done
129
130                else
131#               $zeichen gibt es nicht direkt auf der Haupttastatur
132                        [ $j -eq 2 ] && echo • $zeichen gibt es nicht direkt auf der Neo-Tastatur && j=3
133                fi
134        done
135}
136
137
138
139such_auf_tastatur $zeichen
140
141
142
143find=`grep "\"$zeichen\"" $COMPOSE | head -1 | cut -f1 -d \ `
144if [ $find ]
145then
146# $zeichen gibt es als Compose
147        echo
148        echo  • $zeichen ist über Compose folgendermaßen darstellbar:
149        grep ^\<.*"\"$zeichen\"" $COMPOSE | cut -f1 -d: | sed -e 's/> </> + </g'
150else
151# $zeichen gibt es nicht als Compose
152        echo
153        echo • $zeichen kann man nicht über Compose erzeugen
154fi
Hinweis: Hilfe zum Repository-Browser finden Sie in TracBrowser.