(******************************************************************************) (* This MODULE is Public Domain. Copy me like a beast! *) (* Christian Ledermann *) (* W”lfelkofen 2 *) (* 84166 Adlkofen *) (******************************************************************************) (* *) (* Started: 20.12.92 03:54:30 *) (* Version: 20.01.94 04:12:54 *) (* *) (******************************************************************************) (* *) (* Diese Software ist ohne jede Garantie. Ich verspreche *) (* keinerlei Wartung und bernehme keine Verantwortung fr Sch„den die *) (* durch die Benutzung dieses Programmes entstehen. *) (* Jegliche Ersatzansprche lehne ich ab. *) (* *) (******************************************************************************) DEFINITION MODULE KbdEvnt; FROM SYSTEM IMPORT ADDRESS; PROCEDURE MenuSearch(AppID:INTEGER; MenuTree:ADDRESS;KeyState,Key:INTEGER; VAR Taste:CHAR ):BOOLEAN; (*************************************************************************) (* Mit MenuSearch kann man seine Drop-Down Mens durch Tastaturkrzel *) (* bedienen. *) (* Der Meneintrag muž dabei folgendermažen aufgebaut sein: *) (* Text (wie šblich); Blank (wichtig sonst wird der Shortcut nicht als *) (* solcher erkannt!); Zeichen fr Shift, Alternate, Control; Taste (hier *) (* sind nur Grožbuchstaben oder Sonderzeichen erlaubt) *) (* Zeichen fr Shift : CHR(1), Im RCS 1.4 mit Control 'A' zu erreichen. *) (* Zeichen fr Alternate : CHR(7), Im RCS mit Control 'G' zu erreichen. *) (* Zeichen fr Control : ^ *) (* Diese drei Zeichen k”nnen kombiniert werden mssen aber in dieser *) (* Reihenfolge stehen. *) (* Als Taste sind s„mtliche Zeichen zugelassen die auf der Tastatur *) (* stehen inclusive der Funktionstasten und Help. *) (* Ein Meneintrag muž also folgendermažen aussehen : ' Speichern ^F2' *) (* Im Programm hat dann der Druck der Taste control F2 die gleiche *) (* Wirkung wie die Anwahl des Meneintrages. *) (* Einschr„nkungen : Shift 0-9 kann nur ber das Nummernfeld erreicht *) (* werden, vor Ý,",!,%,... muss(!) das Shift zeichen stehen. *) (* Wenn man einige Eintr„ge doppelt vergibt wird immer nur der erste *) (* gefunden, es sei denn er w„re disabled. *) (* *) (* AppID : ID des aufrufenden Programmes, dies ist der Rckgabewert von *) (* AppInitialize. *) (* MenuTree : Die ADDRESSe des Mens das auf Shortcuts untersucht wird, *) (* Diese ADDRESSe braucht man auch zum Aufbau der Menzeile mit *) (* AES.MenuBar; sie wird mit AES.ResourceGetAdrr ermittelt. *) (* KeyState : Status der Shift, Control und Alternate Tasten; wird von *) (* AES.EventMultiple als MoKState geliefert. *) (* Key : Scancode und Asciiwert der gedrckten Taste, wird von *) (* AES.EventMultiple als KReturn geliefert. *) (* Taste : gibt den CHAR der gedrckten Taste als Grožbuchstabe zurck *) (* dies ist dazu gedacht falls die Taste nicht im Men zu finden war in *) (* eine eigene Tastaturroutine zu verzweigen, und die Berechnung der *) (* Taste zu vermeiden. *) (* Rckgabe : TRUE falls die Taste gefunden wurde und die entsprechende *) (* Message ans eigene Programm abgeschickt wurde, FALSE wenn der Shortcut*) (* nicht in der Menleiste gefunden wurde. *) (* Dies wieder um eine eigene Tastaturroutine einzubinden fr nicht im *) (* Men verzeichnete Shortcuts. *) (* -> ST-Computer 11/89. *) (*************************************************************************) PROCEDURE ConcatScanString(VAR ScanString : ARRAY OF CHAR;KeyState, Key :INTEGER); (*********** Hilfsprogramm fr MenuSearch ************************) END KbdEvnt.