Es gibt drei grundlegende Möglichkeiten Sequenzen von Ereignismustern z.B. an Attribute von Objekten anzubinden.
Die einfachste Form ist ein einzelnes Zeichen, das die entsprechende Zuordnung erhalten soll, mit Ausnahme des Leerzeichens und der spitzen Klammer.
Die zweite Form von Ereignismustern findet Verwendung
zur anwenderdefinierten Erzeugung benannter virtueller Ereignisse.
Es hat die Form <<name>>, also der Name des virtuellen
Ereignisses eingeschlossen in doppelte, statt
einfache spitze Klammern.
Die dritte Form hat die Syntax (Abbildung 8.4)
<modifier-modifier-type-detail> |
Abbildung 8.4: Quellentextbeispiel: Syntax Ereignismuster
Beispiele für gültige und
bereits vordefinierte Modifizierer (engl.: ,,modifier``)
für Aktionen sind
Control,
Shift,
Lock,
Button1 oder B1,
Button2 oder B2,
Button3 oder B3,
Button4 oder B4,
Mod1 oder M1,
Mod2 oder M2,
Mod3 oder M3,
Mod4 oder M4,
Mod5 oder M5,
Meta oder M,
Alt,
Double,
Triple.
Typ-Elemente
(engl.: ,,type``) entsprechen dem Standard der Ereignistypen
des X Window Systems:
ButtonPress oder Button,
ButtonRelease,
Circulate,
Colormap,
Configure,
Destroy,
Enter,
Deactivate,
Expose,
FocusIn,
FocusOut,
Gravity,
KeyPress oder Key,
KeyRelease,
Leave,
Map,
Motion,
Property,
Reparent,
Unmap,
Visibility,
Activate.
Die erlaubten Werte der ,,Details`` (engl.: ,,detail``) hängen von dem jeweiligen Typ-Element ab.
In der angegebenen Syntax lassen sich die Ereignismuster also weitergehend mit Bezeichnern, Typ-Elementen und Details kombinieren, z.B. zu (Abbildung 8.5):
<Control-F5> <Control-Meta-Down> <Control-B3-Motion> <Control-ButtonRelease-3> <Shift-Button-2> |
Abbildung 8.5: Quellentextbeispiel: Beispiele für Kombinationen von Ereignismustern
Für einige Sequenzen existieren Abkürzungen. Es kommt auf den Einzelfall an, ob man solche weniger ,,sprechenden`` Abkürzungen verwenden sollte.
Nach einem der obigen Beispiele zur Anbindung von Ereignissen
stellt sich ein reales Beispiel
eines bind
wie in Abbildung 8.6 dar.
|
Abbildung 8.6: Quellentextbeispiel: Anbindung von Ereignissen mittels Ereignismuster
In diesem Beispiel wird allen Objekten (all)
im Pfad $w (z.B. mit set w .f.sub)
eine kleine Textausgabe zugeordnet, die ausgelöst wird,
wenn Meta gedrückt ist und gleichzeitig
die Maustaste 3 losgelassen wird.
Ereignisse lassen sich auch auf einfache Weise kombinieren. Es ist leicht möglich, beliebige Befehle an Sequenzen von mehreren Ereignissen anzubinden (Abbildung 8.7).
|
Abbildung 8.7: Quellentextbeispiel: Anbindung an Kombination von Ereignissen
Die Ausführung der Befehle, die an diese Ereignisse angebunden sind, beginnt, wenn die entsprechenden Ereignisse nacheinander ausgelöst worden sind.
Es lassen sich aber auch vom Anwender neue Ereignisgruppen
erzeugen.
Virtuelle Ereignisse
können durch event
Operationen
erzeugt und gehandhabt werden (Abbildung 8.8):
event operation [arg1 arg2 ...] |
Abbildung 8.8: Quellentextbeispiel: Syntax zur Handhabung virtueller Ereignisse
Operationen sind in diesem Zusammenhang
add,
delete,
generate und
info.
Diese Operationen haben spezifische Optionen und verarbeiten
eine Reihe von Argumenten.
Das folgende Beispiel (Abbildung 8.9) demonstriert die praktische Vorgehensweise:
|
Abbildung 8.9: Quellentextbeispiel: Beispiel virtuelles Ereignis
Der erste Befehl definiert ein neues virtuelles Ereignis
unter dem Namen myvirtual mittels der Operation
add und den zugeordneten Ereignismustern.
Die Anbindung bindet eine Ausgabe mittels puts
an das virtuelle Ereignis.
Der letzte Befehl liefert die Informationen über das betreffende virtuelle Ereignis. Ohne Angabe eines bestimmten Ereignisses liefert dieser Aufruf eine Liste aller aktuell definierten virtuellen Ereignisse.
Vordefiniert sind in der Regel z.B. die virtuellen
Ereignisse <<Copy>>, <<Paste>> und <<Cut>>.
Virtuelle Ereignisse helfen sowohl Systemunterschiede zu berücksichtigen als auch spezielle Gruppen von Ereignissen zu bilden.
Eine nützliche Funktion bei der Verwendung von Ereignissen
ist die Ersetzung in Ereignisfeldern.
Ähnlich wie Formate in Befehlen vieler Programmiersprachen
lassen sich Ersetzungen mit Ereignissen verwenden, z.B.
in bind Befehlen.
Auf diese Art und Weise ist es möglich, bei der Ereignisbehandlung
Informationen über das aktuelle Ereignis zu parametrisieren.
Eine Auswahl der wichtigsten Ersetzungen mit einer Kurzbeschreibung zeigt folgende Tabelle (Tabelle 8.1).
| Ausdruck | Kurzbeschreibung | ||
%% | einzelnes Prozentzeichen | ||
%W | Fenstername, ereignisempfangend | ||
%x | x-Koord. (Widget) des Mauszeigers | ||
%y | y-Koord. (Widget) des Mauszeigers | ||
%X | x-Koord. (Bildschirm) des Mauszeigers | ||
%Y | y-Koord. (Bildschirm) des Mauszeigers | ||
%b | Nummer der bedienten Maustaste | ||
%A | ASCII-Zeichen einer Taste | ||
%K | symbolischer Name einer Taste | ||
%h | Höhe eines Widgets | ||
%w | Breite eines Widgets |
Folgendes Beispiel (Abbildung 8.10) demonstriert eine einfache Anwendung:
|
Abbildung 8.10: Quellentextbeispiel: Einfaches Anwendungsbeispiel einer Ersetzung
Bei jeder Bewegung der Maus mit gehaltener erster Maustaste wird eine Zeichenkette mit den aktuellen Koordinaten des Mauszeigers ausgegeben.