|##########| |#MAGIC #|CLABLMGI |#PROJECT #|"" |#PATHS #|"StdProject" |#FLAGS #|xx---x--x---xxx----------------- |#USERSW #|-------------------------------- |#USERMASK#|-------------------------------- |#SWITCHES#|xx---xxxxx------ |##########| DEFINITION MODULE GfxInput; FROM GfxScreen IMPORT Screen; TYPE (*----------------------------------------------------------------------------* * UserActions : mögliche Eingaben des Benutzers * * - userKey : Tastendruck * * - userMouse : Mausknopfdruck * * UserAct : Menge der Möglichen Eingaben * * * * KeyTypes : Qualifizierung von Tasten * * - S... : zusammen mit Shift * * - A... : zusammen mit Alt * * - C... : zusammen mit Control * * - M... : zusammen mit Amiga * *----------------------------------------------------------------------------*) UserActions = (userKey,userMouse); UserAct = SET OF UserActions; KeyTypes = (KeyReturn,KeyBackspace,KeyDelete,KeyTab,KeyHelp,KeyEsc, KeyCsrUp,KeyCsrDown,KeyCsrLeft,KeyCsrRight, KeyF1,KeyF2,KeyF3,KeyF4,KeyF5, KeyF6,KeyF7,KeyF8,KeyF9,KeyF10, SKeyReturn,SKeyBackspace,SKeyDelete,SKeyTab,SKeyHelp,SKeyEsc, SKeyCsrUp,SKeyCsrDown,SKeyCsrLeft,SKeyCsrRight, SKeyF1,SKeyF2,SKeyF3,SKeyF4,SKeyF5, SKeyF6,SKeyF7,SKeyF8,SKeyF9,SKeyF10, AKeyReturn,AKeyBackspace,AKeyDelete,AKeyTab,AKeyHelp,AKeyEsc, AKeyCsrUp,AKeyCsrDown,AKeyCsrLeft,AKeyCsrRight, AKeyF1,AKeyF2,AKeyF3,AKeyF4,AKeyF5, AKeyF6,AKeyF7,AKeyF8,AKeyF9,AKeyF10, CKeyReturn,CKeyBackspace,CKeyDelete,CKeyTab,CKeyHelp,CKeyEsc, CKeyCsrUp,CKeyCsrDown,CKeyCsrLeft,CKeyCsrRight, CKeyF1,CKeyF2,CKeyF3,CKeyF4,CKeyF5, CKeyF6,CKeyF7,CKeyF8,CKeyF9,CKeyF10, MKeyReturn,MKeyBackspace,MKeyDelete,MKeyTab,MKeyHelp,MKeyEsc, MKeyCsrUp,MKeyCsrDown,MKeyCsrLeft,MKeyCsrRight, MKeyF1,MKeyF2,MKeyF3,MKeyF4,MKeyF5, MKeyF6,MKeyF7,MKeyF8,MKeyF9,MKeyF10, NoKey,NormalKey); (*----------------------------------------------------------------------------* * AUFGABE : Wartet, bis eine der angegebenen Eingaben getätigt wurde * * PARAMETER : s <= Screen, von der die Eingabe erwartet wird * * act <= Eingaben, auf die gewartet werden soll * * BEMERKUNGEN : Ist die Eingabe bereits geschehe, kehrt das Programm sofort * * zurück. Die Eingabe wird nicht gelöscht. * *----------------------------------------------------------------------------*) PROCEDURE WaitUser(s : Screen;act : UserAct); (*----------------------------------------------------------------------------* * AUFGABE : Prüft, ob eine der angegebenen Eingaben getätigt wurde * * PARAMETER : s <= Screen, dessen Eingaben geprüft werden soll * * act <= Mögliche Aktionen * * BEMERKUNGEN : -- * *----------------------------------------------------------------------------*) PROCEDURE CheckUser(s : Screen;act : UserAct):BOOLEAN; (*----------------------------------------------------------------------------* * AUFGABE : Stellt fest, von welcher Art die letzte Eingabe war * * PARAMETER : s <= Screen, dessen Eingaben geprüft werden sollen * * => Eine der getätigten Eingaben * * BEMERKUNGEN : Liegen mehrere Eingaben an, wird nur eine zurückgeliefert * *----------------------------------------------------------------------------*) PROCEDURE LastAction(s : Screen):UserActions; (*----------------------------------------------------------------------------* * AUFGABE : Liest einen Tastendruck von der Tastatur ein * * PARAMETER : s <= Screen, auf dem die Taste gedrückt wird * * c => ASCII-Code der Taste * * BEMERKUNGEN : Wartet, bis eine Taste gedrückt, falls vorher noch keine * * gedrückt war. * *----------------------------------------------------------------------------*) PROCEDURE GetKey(s : Screen;VAR c : CHAR); (*----------------------------------------------------------------------------* * AUFGABE : Liest einen Tastendruck von der Tastatur ein * * PARAMETER : s <= Screen, auf dem die Taste gedrückt wird * * type => Art der Taste die gerückt wurde * * code => ASCII-Code der Taste, falls vorhanden * * BEMERKUNGEN : Wartet, bis eine Taste gedrückt wird, falls vorher noch * * keine gedrückt war * *----------------------------------------------------------------------------*) PROCEDURE GetExtKey(s : Screen;VAR type : KeyTypes; VAR code : CHAR); (*----------------------------------------------------------------------------* * AUFGABE : Liest die aktuelle Position der Maus ein * * PARAMETER : s <= Screen, bei der die Mausposition abgefragt werden * * soll * * x,y => aktuelle Mauskoordinaten * * BEMERKUNGEN : -- * *----------------------------------------------------------------------------*) PROCEDURE GetMousePos(s : Screen;VAR x,y : INTEGER); (*----------------------------------------------------------------------------* * AUFGABE : Stellt fest, ob der linke Mausknopf gerade gedrückt ist * * PARAMETER : s <= Screen, die überprüft werden soll * * => TRUE, falls gedrückt * * BEMERKUNGEN : -- * *----------------------------------------------------------------------------*) PROCEDURE MousePressed(s : Screen):BOOLEAN; (*----------------------------------------------------------------------------* * AUFGABE : Holt die Position des letzten Mausklicks * * PARAMETER : s <= Screen, auf der der Klick stattfand * * x,y => Position des Klicks * * BEMERKUNGEN : Hat noch kein Klick stattgefunden, wartet die Routine, bis * * geklickt wird. * *----------------------------------------------------------------------------*) PROCEDURE MouseClick(s : Screen;VAR x,y : INTEGER); (*----------------------------------------------------------------------------* * AUFGABE : Stellt fest, ob der letzte Klick ein Doppelklick war * * PARAMETER : s <= Screen, auf der der Klick stattfand * * => TRUE, falls es ein Doppelklick war * * BEMERKUNGEN : -- * *----------------------------------------------------------------------------*) PROCEDURE WasDouble(s : Screen):BOOLEAN; GROUP All = UserActions,UserAct,KeyTypes,WaitUser,CheckUser,LastAction,GetKey, GetExtKey,GetMousePos,MousePressed,MouseClick,WasDouble; END GfxInput.