3.1.4 Keyboard Shortcuts / TastaturkürzelKeyboard Shortcuts sind Tastenkürzel, die auch dann wirken, wenn das entsprechende Menü nicht offen ist. Typische Fälle sind 'Strg-C' für Kopieren und 'Strg-P' für Drucken. Um einen Shortcut zu definieren müssen Sie außer dem ASCII-Code der Taste auch die 'Modifier'-Taste (Strg, Shift oder Alt) angeben, die gedrückt sein soll. Der ASCII-Code kann auch ein 'erweiterter' ASCII-Code sein, z.B. für die Cursortasten oder F12.Obwohl die Instancevariable kbdShortcut für alle GenericClass Objekte definiert ist wird sie hautsächlich für Buttons benutzt. Die im Folgenden für Buttons getroffenen Aussagen sind sinngemäß auf alle andere GenericClass Objekte übertragbar. Bitte beachten Sie bei der Wahl der Tastenkombination für kbdShortcut, dass diese vom 'R-BASIC Translator' nicht geändert werden kann. kbdShortcutDie Instancevariable kbdShortcut enthält einen WORD-Wert, der ein Tastenkürzel beschreibt. Drückt der Nutzer die entsprechende Tastenkombination (z.B. Strg + Z) wird der Button aktiviert, genau so, als sei er direkt angeklickt worden.
Syntax UI-Code: kbdShortcut = numVal
Lesen: <numVar> = <obj>. kbdShortcut
Schreiben: <obj>. kbdShortcut = numVal
Die niederwertigen 8 Bit (Bit 0 bis Bit 7) enthalten den ASCII-Code der Taste bzw. den Steuercode der Steuertaste. Die Bits 8 bis 11 sind gesetzt, wenn es sich um eine Steuer- oder Funktionstaste handelt, ansonsten sind sie Null. Die vier höchstwertigen Bits (Bit 12 bis Bit 15) enthalten 'Modifier'-Tasten, die gleichzeitig gedrückt sein müssen, damit das Kürzel aktiviert wird. Dafür sind die folgenden Konstanten definiert (KSM = Keyboard Shortcut Modifier):
Hinweise:
Beispiel: Ausschneiden (Ctrl-X) und Kopieren (Ctrl-C). Die Verwendung von KSM_PYHSICAL stellt sicher, dass die Kürzel auch funktionieren, wenn die Shift-Lock Taste eingerastet ist. Beachten Sie, dass die Codes der Kleinbuchstaben angegeben werden. | |||||||||||||||
Button CutButton
Caption$ = "Ausschneiden", 0
ActionHandler = DoCut ' ButtonAction
kbdShortcut = KSM_CTRL + KSM_PHYSICAL + ASC("x")
End OBJECT
Button CopyButton
Caption$ = "Kopieren" , 0
ActionHandler = DoCopy ' ButtonAction
kbdShortcut = KSM_CTRL + KSM_PHYSICAL + ASC("c")
End OBJECT
| |||||||||||||||
|
Beispiel: Umsch Ctrl A Um die Umschalttaste in einen Shortcut aufzunehmen können Sie entweder den ASCII-Code eines Großbuchstaben angeben oder einen Kleinbuchstaben mit dem Flag KSM_SHIFT kombinieren. In beiden Fällen müssen sie zusätzlich das Flag KSM_PHYSICAL setzen, weil der Tastaturtreiber die Shift-Taste bereits beim Erzeugen des ASCII-Codes verarbeitet. | |||||||||||||||
kbdShortcut = KSM_CTRL + KSM_PHYSICAL + ASC("A")
kbdShortcut = KSM_CTRL + KSM_SHIFT + KSM_PHYSICAL + ASC("a")
| |||||||||||||||
|
Beispiel: F12 Wenn Sie eine Steuertaste oder eine F-Taste als Shortcut setzen wollen benötigen Sie den entsprechenden 'erweiterten' ASCII-Code. Diese Codes sind in der Library 'KeyCodes' definiert. Suchen Sie im Wizzard der Library unter 'GetKey: Steuertasten' den passenden Code heraus. Sie müssen aber unbedingt beachten, dass die Codes alle 8 höherwertigen Bits gesetzt haben. Deswegen müssen Sie die 4 höchstwertigen Bit mit der Operation 'code AND &hFFF' ausblenden. In der Library 'KeyCodes' ist folgendes definiert: | |||||||||||||||
CONST KEY_F12 = &hFF8B
| |||||||||||||||
|
UI Code | |||||||||||||||
Include "KeyCodes"
Button MyButton
< ... >
kbdShortcut = KEY_F12 AND &hFFF
End OBJECT
| |||||||||||||||
|
Alternativ können Sie auch direkt den Code, aber ohne die höherwertigen 4 Bit, angeben: kbdShortcut = &hF8B Um Strg-F12 als Shortcut zu setzen verwenden Sie eine der folgenden Zeilen. Die Klammern sind wichtig! | |||||||||||||||
kbdShortcut = (KEY_F12 AND &hFFF) + KSM_CTRL
| |||||||||||||||
| bzw. | |||||||||||||||
kbdShortcut = &hF8B + KSM_CTRL
| |||||||||||||||
|
Beispiel: ESC Ein häufiger Fall ist das Verwenden der ESC-Taste für 'Abbrechen' oder 'Beenden'. Die ESC-Taste ist eine erweiterte Taste und hat den Code &hFF1B. Um die ESC-Taste einem Button als Tastenkürzel zuzuweisen verwenden Sie eine der folgenden Zeilen: | |||||||||||||||
kbdShortcut = KEY_ESC AND &hFFF
| |||||||||||||||
| bzw. | |||||||||||||||
kbdShortcut = &hF1B
| |||||||||||||||
kbdSearchPathDamit die Keyboard Shortcuts arbeiten können müssen die entsprechenden Objekte im 'Suchpfad' für Keyboard Shortcuts sein. Primaries, Menüs und Button sind per Default im Suchpfad. Aus Effizienzgründen ist das für die meisten anderen Objekte nicht der Fall. Wenn Ihre Keyboard Shortcuts nicht arbeiten müssen Sie das Objekt, sein Parent, dessen Parent usw. in den Suchpfad aufnehmen indem Sie die Instancevariable kbdSearchPath auf TRUE setzen.
Syntax UI-Code: kbdSearchPath = TRUE | FALSE
Lesen: <numVar> = <obj>. kbdSearchPath
Schreiben: <obj>. kbdSearchPath = TRUE | FALSE
^ |