IMPLEMENTATION MODULE DeactivateGadget; (* Created: 22.7.88 by Stefan Salewski Stolper Weg 3 2160 Stade West-Germany Tel: 04141/61130 Note: compiled with AMIGA Modula-2 System by AMSoft from 5.5.88 This Module may be freely copied. But please leave my name in. Thanks....Stefan *) FROM SYSTEM IMPORT ADR,LONGSET; FROM Arts IMPORT Assert,TermProcedure; FROM Exec IMPORT DoIO,IOStdReqPtr,OpenDevice,MsgPortPtr, IOFlagSet,CloseDevice; FROM InputEvent IMPORT InputEvent,Class,rButton,Qualifiers,QualifierSet; FROM Input IMPORT inputName,writeEvent; FROM ExecSupport IMPORT CreatePort,DeletePort,CreateStdIO,DeleteStdIO; VAR myInputEvent:InputEvent; myPortPtr:MsgPortPtr; myIOStdReqPtr:IOStdReqPtr; PROCEDURE Cleanup; BEGIN IF myIOStdReqPtr#NIL THEN DeleteStdIO(myIOStdReqPtr) END; IF myPortPtr#NIL THEN DeletePort(myPortPtr) END END Cleanup; PROCEDURE PressRButton():BOOLEAN; BEGIN OpenDevice(ADR(inputName),0,myIOStdReqPtr,LONGSET{}); IF myIOStdReqPtr^.error=0 THEN myInputEvent.code:=rButton; DoIO(myIOStdReqPtr); myInputEvent.code:=rButton+128; (* +128 ==> Taste loslassen *) DoIO(myIOStdReqPtr); CloseDevice(myIOStdReqPtr); RETURN TRUE ELSE RETURN FALSE END; END PressRButton; BEGIN TermProcedure(Cleanup); WITH myInputEvent DO nextEvent:=NIL; (* verkettung von mehreren InputEvents ist mir nicht gelungen. Es wurde immer nur der erste Event akzeptiert *) class:=rawmouse; subClass:=null; code:=rButton; qualifier:=QualifierSet{rightButton}; x:=0; y:=0; timeStamp.secs:=0; timeStamp.micro:=0; END; myPortPtr:=CreatePort(ADR('MyPort'),0); Assert(myPortPtr#NIL,ADR('DeactivateGadget:Cannot Create Port')); myIOStdReqPtr:=CreateStdIO(myPortPtr); Assert(myIOStdReqPtr#NIL,ADR('DeactivateGadget:Cannot Create SdtIO')); WITH myIOStdReqPtr^ DO command:=writeEvent; flags:=IOFlagSet{}; length:=SIZE(InputEvent); (*length:=0 geht scheinbar auch *) data:=ADR(myInputEvent); END; END DeactivateGadget.