2.1 accelerator und Mnemonic

Accelerators und Mnemonics ermöglichen geübten Benutzern schnelles und effektives Arbeiten mit der Anwendung. Mnemonics und Accelerators werden primär im Menüsystem verwendet. Der Dialog Manager selbst unterstützt für alle selektierbaren Objekte Mnemonics und Accelerators. Ihre Einsatzfähigkeit ist jedoch stark vom Fenstersystem abhängig.

Beim Einsatz von Mnemonics und Accelerators sind die Randbedingungen Multilingualität und Verwendung unterschiedlicher Tastaturen zu beachten, denn Alpha-Zeichen sind sprachabhängig, und Funktionstasten und Sondertasten sind tastaturabhängig. Es gibt bei Tastaturen keine verlässliche Untergruppe von Funktions- und Sondertasten.

Anmerkungen

2.1.1 accelerator

Ein Accelerator ist eine Taste oder eine Tastenkombination, die mit einem Dialogobjekt verbunden ist. Durch Betätigung einer Accelerator-Taste oder

  • alphanumerischer Tasten, die sprachabhängig sind, aber tastaturabhängig sein können,
  • alphanumerischer Tasten, die nicht sprachabhängig sind, aber tastaturabhängig sein können.

Um einem Objekt einen Accelerator zu geben, muss zuerst eine Ressource accelerator definiert werden. Die Ressource accelerator besteht aus dem Schlüsselwort accelerator, einem Identifikator, einer öffnenden geschweiften Klammer, einer oder mehrerer Tastenspezifikationen und der schließenden geschweiften Klammer. Vor der Tastenspezifikation steht eine Zahl, gefolgt von einem Doppelpunkt. Diese Zahl steht für den Tastaturtyp. Durch Setzen des Tastaturtyps wird die jeweilige Tastenspezifikation ausgewählt.

Durch Drücken der Tastenkombination, wird das mit diesem Accelerator verbundene Dialogobjekt selektiert und die mit diesem Objekt verbundene Aktion ausgeführt.

Definition

{ export | reexport } accelerator <Bezeichner> <acceleratorSpec> | <variantDef>
acceleratorSpec ::=
  <Tastendefinition> { , "<angezeigter Name>" | <text-Ressource> } ;
Tastendefinition ::=
  { <Modifikator> + } { <Modifikator> + } { <Modifikator> + }
  & | '<alphanumerische Taste>' | <Funktionstaste> | <Sondertaste>
Modifikator ::= alt | cntrl | shift
Funktionstaste ::= F1 | F2 | … | F98 | F99
variantDef ::=
{
           0 : <acceleratorSpec>
  [ <Nummer> : <acceleratorSpec> ]
}

Die Tastenkombination für einen Accelerator wird bei einigen Dialogobjekten rechts neben dem Text angezeigt (fenstersystemabhängig).

Über den optionalen String oder die optionale Textressource nach der eigentlichen Definition der Taste kann der Text angegeben werden, der als Acceleratortext im Objekt erscheinen soll. Dieser Text wird dann in Menüeinträgen entsprechend angezeigt.

Accelerators besitzen im Gegensatz zu Mnemonics kein visuelles Feedback. Das Attribut .real_visible muss true sein, das mit dem Accelerator verbundene Objekt muss nicht im sichtbaren Bereich liegen. Selektiert werden können nur Dialogobjekte mit Accelerators im aktiven Fenster. Die Accelerators aller Dialogobjekte in einem Fenster müssen eindeutig sein. Wird ein Accelerator in einem Fenster mehrfach verwendet, ist nicht vorhersagbar, welcher Accelerator wirksam werden wird.

Accelerators sind sprach- und tastaturabhängig und werden deshalb wie andere Ressourcen (Farben und Zeichensätze) behandelt, die ebenfalls hardwareabhängig sind.

Der DM unterscheidet zwischen drei Arten von Tasten:

Die Acceleratorvariante kann beim Aufruf des Dialog Managers mit der Option

-IDMkeyboard [<Zahl>]

eingestellt werden.

0 ist der Default-Tastaturtyp, der benutzt wird, wenn kein Tastaturtyp gesetzt worden ist oder der Accelerator für den eingestellten Tastaturtyp keine Variante besitzt. Daher ist es nützlich, die 0-Variante in der Accelerator-Definition allgemein zu verwenden.

Eine Accelerator-Tastenkombination besteht aus einer Taste, der eine beliebige Kombination von Modifiertasten durch das +-Symbol vorangestellt sein kann. Modifiertasten sind alt, cntrl und shift. Alphanumerische Tasten werden mit 'Hochkomma-Zeichen-Hochkomma' spezifiziert.

Beispiel

accelerator A

{

  0:  alt+'a';

}

In der vorliegenden Motif-Version des Dialog Managers werden zurzeit Acceleratoren nur im Objekt menuitem beschriftet.

Beispiel

accelerator A_QUIT

{

  0:  cntrl+F2;

  1:  cntrl+F5;

}

Soll ein Accelerator sprachabhängig sein und sich durch Änderung der Sprache automatisch mit ändern, so spezifiziert man an Stelle der Taste ein &. Dies bewirkt, dass das mnemonische Zeichen für das Dialogobjekt auch für den Accelerator benutzt wird. Voraussetzung ist, dass das jeweilige Objekt ein Mnemonic besitzt.

Beispiel

accelerator A_QUIT

{

  0:  cntrl+&;

  1:  cntrl+alt+&;

}

text  "E&xit"

{

  1:  "&Beenden";

  2:  "&Finito";

}

child menuitem M1

{

  .text         E&xit;

  .accelerator  A_QUIT;

}

Diese Ressource mit dem Namen A_QUIT kann jetzt einem Dialogobjekt zugewiesen werden. Das Dialogobjekt wird automatisch mit dem Text des Accelerators beschriftet, unter der Voraussetzung, dass das verwendete Fenstersystem eine Beschriftung für dieses Objekt zulässt.

Anmerkung

Die Tasten Strg, Alt und Entf sollten nicht alle drei gleichzeitig verwendet werden.

Modifiertasten können nicht als Accelerator verwendet werden, alleinstehende alpha-numerische Zeichen und Cursor-Tasten allein sollten nicht als Accelerator verwendet werden. Das heißt sie sollten in Kombination mit anderen Tasten verwendet werden.

Tasten oder Tastenkombinationen, die bereits eine vordefinierte Funktion im Fenstersystem haben, sollten nicht verwendet werden.

Bitte beachten Sie außerdem den Abschnitt „Anmerkung zu problematischen Situationen“.

Alpha-numerische Zeichen können nicht in Verbindung mit dem shift-Modifier spezifiziert werden.

Funktions- und Sondertasten werden mit den Namen angegeben, die in der folgenden Tabelle aufgelistet sind:

BackSpace

/* back space, back char */

Begin

/* BOL */

Break

 

Cancel

/* Cancel, stop, abort, exit */

Clear

 

Delete

/* Delete, rubout */

Down

/* Move down, down arrow */

End

/* EOL */

Escape

 

Execute

/* Execute, run, do */

Find

/* Find, search */

Home

 

Insert

/* Insert, insert here */

Left

/* Move left, left arrow */

Linefeed

/* Linefeed, LF */

Next

/* Next, Page Down */

Pause

/* Pause, hold, scroll lock */

Print

 

Prior

/* Prior, previous, PageUp */

Redo

/* redo, again */

Return

/* Return, enter */

Right

/* Move right, right arrow */

Select

/* Select, mark */

Tab

 

Undo

/* Undo previous*/

Up

/* Move up, up arrow */

Funktionstasten:

F1 - F99

Modifiertasten:

Anmerkung zur Caps-Lock-Taste

Die Shift-Taste wird bei den Funktionstasten in der üblichen Art und Weise interpretiert, die Caps Lock-Taste jedoch ignoriert. Wenn der Benutzer also Shift + F3 auslösen möchte, muss er die Shift-Taste und die F3-Taste drücken, die Kombination Caps Lock-Taste und F3-Taste hingegen führt nicht zum Auslösen des entsprechenden Accelerators.

Anmerkung zu problematischen Situationen

Es sollten keine Systemacceleratoren verwendet werden, da es ansonsten zu einer Mehrfachauslösung bzw. einem Abfangen des Ereignisses (on key bzw. select) kommen kann; dies kann außerdem je nach Accelerator und Fenstersystem unterschiedlich sein.

Beispiele

Außerdem sollte die Verwendung eines Accelerators

genau überlegt sein. Je nach verwendetem Fenstersystem, augenblicklichem Dialogzustand, Art und Weise bzw. Reihenfolge der Sichtbarmachung der Fenster könnte es zu Doppelauslösungen des betroffenen Accelerators an verschiedenen Objekten oder am selben Objekt kommen.

2.1.1.1 Menüs und Acceleratoren unter Microsoft Windows

Unter Microsoft Windows dienen Acceleratoren dazu, Menüfunktionen auszuwählen ohne dazu ein Menü zu öffnen. Daraus ergibt sich, dass bei einem geöffneten Menü die Acceleratoren nicht mehr ausgelöst werden. Stattdessen kann man jetzt die jeweiligen Mnemonics zur Auswahl eines Menüeintrags nutzen.

2.1.2 Mnemonic

Mnemonics zählen nicht zu den Ressourcen als solche; sie müssen als Attribute definiert werden. Aber aufgrund ihrer engen Verwandtschaft zum Accelerator wird ihre Definition an dieser Stelle aufgeführt.

Ein Mnemonic ist genau ein im Text eines Dialogobjektes hervorgehobenes, alphanumerisches Zeichen, mit dem das entsprechende Objekt angewählt werden kann.

Beispiel

In einer Menübox:

Ablage

In einem Pushbutton:

Exit

Das entsprechende Menü wird durch Drücken einer speziellen Taste, der "Mnemonictaste", zusammen mit dem in diesem Menü markierten Zeichen geöffnet. Ein Menüeintrag kann nun durch das Drücken der Taste aktiviert werden, welche dem im Menü markierten Zeichen entspricht. Nun kann keine Spezial-Taste mehr aktiviert werden.

Mnemonics haben üblicherweise ein visuelles Feedback, d.h. das angewählte Dialogobjekt erscheint auf dem Bildschirm selektiert und die mit dem Objekt verbundene Aktion wird ausgeführt, wenn die zugeordnete Taste gedrückt wird. Mit Mnemonics können nur die Dialogobjekte angewählt werden, die sich im aktiven Fenster befinden.

Das mnemonische Zeichen stammt immer aus dem gegebenenfalls sprachabhängigen Text und wird mit diesem Text zusammen spezifiziert. Der auf das &-Symbol folgende Buchstabe ist das mnemonische Zeichen und wird hervorgehoben auf dem Bildschirm dargestellt. Das &-Symbol wird nicht angezeigt. Soll ein &-Zeichen in einem Dialogobjekt auf dem Bildschirm erscheinen, müssen zwei aufeinanderfolgende &-Zeichen spezifiziert werden.

Die Sprache wird beim Aufruf des Dialog Managers mit

-IDMlanguage [<Zahl>]

eingestellt.

Beispiel

text  "E&xit"

{

  1:  "&Beenden";

  2:  "&Finito";

}

child menuitem M1

{

  .text  E&xit;

}

Die Verfügbarkeit der Mnemonics ist abhängig vom jeweiligen Fenstersystem und funktionieren nur, wenn das Objekt vom Benutzer selektiert werden könnte.

Microsoft Windows

Mnemonics werden für folgende Objekte unterstützt:

Mnemonics können ausgelöst werden durch Drücken von

Alternativ zu Alt kann auch das Menü-Zeichen F10 verwendet werden.

Mnemonic-Zeichen können ohne Alt-Taste verwendet werden, wenn ein Menü markiert ist.

Motif

Mnemonics werden für folgende Objekte unterstützt:

Mnemonics können ausgelöst werden durch gleichzeitiges Drücken von

Ist schon ein Menü aktiviert, muss nur noch das mnemonische Zeichen gedrückt werden.

Sie können nur Objekte mit Mnemonics anwählen, die Sie gerade sehen.

Qt

Mnemonics werden für folgende Objekte unterstützt: