(*---------------------------------------------------------------------------
   :Program.    ControlIntuition
   :Author.     Fridtjof Björn Siebert
   :Address.    Nobileweg 67, D-7-Stgt-40
   :Phone.      (0)711/822509
   :Shortcut.   [fbs]
   :Version.    1.0
   :Date.       31-May-88
   :Copyright.  PD
   :Language.   MODULA-II
   :Translator. M2Amiga
   :Contents.   Prozeduren, die es ermöglichen, Intuition aus und an zu
   :Contents.   schalten. Damit hat man volle Kontrolle Über den Amiga.
   :Remark.     I didn't believe this could be so easy !
---------------------------------------------------------------------------*)

DEFINITION MODULE ControlIntuition;

FROM Timer IMPORT TimeVal;

(*-------------------------  Variablen:  ----------------------------------*)

VAR
  DisableIntuiCount: CARDINAL;
  (* Zähler für verschachtelte Aufrufe von DisableIntuition *)

  MouseX, MouseY: LONGINT;
  (* Mouse Position. Wird währen Intuition ausgeschaltet ist, verändert.   *)
  (* Es wird kein Rand getestet. Es kann also theoretisch zu einem Über-   *)
  (* kommen, dazu muß die Maus jedoch über 500km in eine Richtung bewegt   *)
  (* werden, ist also relativ unwahrscheinlich.                            *)

  RightButton, LeftButton, MiddleButton: TimeVal;
  (* Die Zeit, zu der der letzte Mouse-Event des jeweiligen Buttons kam.   *)
  (* MiddleButton konnte ich mangels Hardware nicht testen.                *)

  RightButtonRel, LeftButtonRel, MiddleButtonRel: TimeVal;
  (* Wie oben, nur Buttons losgelassen                                     *)

  LastRawKey: CARDINAL;
  LastRawKeyTime: TimeVal;
  (* Der letzte RawKey und wann er gedrückt wurde                          *)

  LastTime: TimeVal;
  (* Zeit des letzten Events                                               *)

(*--------------------  Beispiel:  ------------------------------------------
Der rechte Mousknopf kann folgendermaßen abgefragt werden:

  VAR LastButton: TimeVal;
  BEGIN
    LastButton := RightButton;
    ...
    IF LastButton#RightButton THEN (* pressed *)
      LastButton := RightButton;
      ...
    ELSE (* not pressed *)
      ...
    END;
  END;
---------------------------------------------------------------------------*)

(*-------------------------------------------------------------------------*)
(*                                                                         *)
(*                         DisableIntuition:                               *)
(*                                                                         *)
(*-------------------------------------------------------------------------*)

PROCEDURE DisableIntuition();
(* Dies kann genausoleicht wie Forbid() aufgerufen werden                  *)

(*-------------------------------------------------------------------------*)
(*                                                                         *)
(*                         EnableIntuition:                                *)
(*                                                                         *)
(*-------------------------------------------------------------------------*)

PROCEDURE EnableIntuition();

END ControlIntuition.
