AMIGA-Magazin · Ausgabe 1/08 · Programmierung: Wheel-Maus und "AmigaOS 4"

Aktuelles Heft 1/08

Mit Speck fängt man...

"AmigaOS 4" unterstützt Mäuse umfangreicher - dazu gehören auch moderne Eingabegeräte mit Rad. Wie diese Mausrad-Unterstützung auch in eigenen Programmen umgesetzt werden kann, soll Thema dieses Artikels sein.

von Michael Christoph

Grundsätzlich ist der Wheel-Maus-Support bereits im Betriebssystem verankert. Es gibt im Input-Prefs-Einsteller eine Scrollrad-Übersetzung. Damit kann der Anwender selber festlegen, wie oft die Bewegung des Mausrades ausgewertet wird. So wird z.B. bei der Übersetzung 1 ein Text zeilenweise gescrollt, bei der höchsten Übersetzung 8 hingegen sind es acht Zeilen am Stück, die mit einem Mausrad-Step bewegt werden.

Die Übersetzung 0 schaltet hingegen die Mausrad-Unterstützung komplett ab. Wird allerdings eine Qualifier-Taste (z.B. Umschalt oder Alt) gedrückt gehalten und das Mausrad bewegt, wird die Übersetzung grundsätzlich auf 1 reduziert. So kann der Anwender bei einer hohen Übersetzung jederzeit auf eine feine Bewegung wechseln.

Unterstützung im Betriebssystem
Listing 1:
Ein zweites Mausrad mit der Strg-Taste simulieren und abfragen.

if(msg->Class == IDCMP_EXTENDEDMOUSE) {
  if(imsg->Code == IMSGCODE_INTUIWHEELDATA) {

   /* Mausrad-Unterstützung */
   struct IntuiWheelData *data = 
   (struct IntuiWheelData *) imsg->IAddress;
   if(data->Version == INTUIWHEELDATA_VERSION)
   {
    if(imsg->Qualifier & IEQUALIFIER_CONTROL)
     {

     /* gedrückte CTRL/STRG-Taste */
     /* tauscht die Mausräder */
      const WORD merk = data->WheelX;
      data->WheelX = data->WheelY;
      data->WheelY = merk;
      }
      
      /* ... Daten verarbeiten ... */

       }
    }
  }
Auch "Multiview" unterstützt bereits das Mausrad und rollt den Inhalt nach oben und unten bzw. nach links und rechts, wenn man über ein zweites Mausrad verfügt. Voraussetzung ist natürlich, dass der angezeigte Inhalt größer ist, als der sichtbare Ausschnitt, der gerade angezeigt wird. Auch das Texteditor-Gadget verfügt bereits über volle Mausrad-Kontrolle. Beim Listview-Gadget sieht es zumindest im Moment noch nicht so gut aus und man muss als Programmierer selber dafür sorgen, dass sich der Listeninhalt verschiebt, wenn das Mausrad bewegt wird.

In eigenen Programmen muss zusätzlich das IDCMP-Flag IDCMP_EXTENDEDMOUSE beim Erstellen eines Intuition-Fensters gesetzt werden. Nur dann wird das Programm auch über entsprechende Nachrichten versorgt. Dabei wird im Codefeld der Nachricht der Define IMSGCODE_INTUIWHEELDATA gesetzt. Das Adress-Feld verweist zu einer IntuiWheelData-Struktur, die in WheelX und WheelY die Schrittweiten des ersten und zweiten Mausrades enthält. Kommt jedoch die window.class zum Einsatz, um ein Fenster mit Reaction-Gadgets zu erstellen, wird es etwas aufwändiger. Hier gibt es keine direkte Möglichkeit, die Nachricht zu erhalten. Stattdessen muss ein so genannter Hook verwendet werden, der die IDCMP-Nachrichten noch vor der window.class bekommt.

Die beiden Tags WINDOW_IDCMPHook und WINDOW_IDCMPHookBits sind beim Aufruf von NewObject() anzugeben. Die meisten Mäuse verfügen nur über ein Mausrad. Im neuen Betriebssystem ist vorgesehen mithilfe einer Taste (z.B. Strg) die beiden Mausräder zu tauschen. Wenn die Strg-Taste gedrückt wird, könnte damit ein zweites Mausrad simuliert werden. Listing 1 zeigt die vollständige Behandlung der Intuition-Nachricht und die Abfrage der Strg-Taste.

Wie man sieht, sind nur wenige Codezeilen notwendig, um auch in eigenen Programmen das Mausrad nicht ungenutzt zu lassen. Sinnvolle Einsatzgebiete gibt es sicher in jedem Programm. Egal, ob es sich um einen längeren Text handelt oder um einen Ausschnitt einer HTML-Seite, die gescrollt werden soll.

Das komplette Beispiel mit dem Source-Code finden Sie auf der nächsten Heft-CD.

lb

Beispielprogramm:
Im kleinen Fenster wird die Stepweite des Mausrades für die X-und Y-Koordinate angezeigt.

 

 


Hauptseite © 2008 All Rights Reserved. Alle Rechte vorbehalten Franzis' Verlag GmbH
Veröffentlichung und Vervielfältigung nur mit schriftlicher Genehmigung des Verlags

Kommentare, Fragen, Korrekturen und Kritik bitte an Webmaster AMIGA schicken.
Zuletzt aktualisiert am 28.01.2008.