Abfragen und arbeiten mit der Maus


Es gibt eine ganze Menge mehr oder weniger umständliche und aufwendige Programme die Maus in QuickBasic zu nutzen. Der, wie ich finde, einfachste und direkteste Weg um die Mausfunktionen unter QuickBasic zu nutzen ist, die Funktionen des Maustreibers direkt aufzurufen. Um dies zu bewerkstelligen muß die Möglichkeit geschaffen werden, die Interruptfunktionen von QuickBasic zu nutzen.

Im Tutorial Interrupte bekommst du anhand der Funktion "Mauszeiger einblenden" erklärt wie das geht.

Nun könntest du dich hinsetzen und alle Mausroutinen die Du brauchst zusammentippen. Damit man das Rad aber nicht jedes mal neu erfinden muß, findest Du hier eine Sammlung von SUB-Routinen der wichtigsten Mausfunktionen. Download

Da ich aber nicht weis wie weit deine Kreativität reicht, hier nun alle Mausfunktionen nach Einsatzgebiet sortiert:

Interaktion mit dem Mauszeiger
Mausabfrage
Mauscursorsteuerung
Event-Handler
Bildschirmsteuerung
Light-Pen
Ballpoint-Mouse
Windows
Interaktion mit dem Mauszeiger:

Interrupt Funktion Beschreibung Verfügbar ab Version
33h 00h Reset des Maustreibers 
Initialisiert den Maustreiber und leitet damit die Abfrage der Maus ein.

Eingabe
AX = 0000h
Ausgabe
AX = FFFFh: in diesem Fall ist ein Maustreiber installiert
BX = Anzahl der Mausknöpfe
AX = 0000h: Fehler, es ist kein Maustreiber installiert

Der Aufruf dieser Funktion beeinflußt eine ganze Reihe von Mausparametern, die mit Hilfe der verschiedenen Mausfunktionen eingestellt werden können. Es sind dies im einzelnen:
Der Maus-Cursor wird in die Bildschirmmitte bewegt und dann ausgeblendet. Im Grafikmodus erscheint er fortan als ein Pfeil, während er im Textmodus als ein inverser Zeichenblock dargestellt wird. Die Darstellung erfolgt unabhängig vom Bildschirmmodus jeweils in der Bildschirmseite 0. Als Bewegungsbereich wird der gesamte Bildschirm gewählt.

Die von einem Programm installierten Event-Handler werden abgeschaltet.
Die Emulation des Lichtgriffels wird deaktiviert.
Für die horizontale Mausgeschwindigkeit wird ein Verhältnis von 8 Mickeys zu 8 Punkten festgelegt. In der Vertikalen beträgt dieses Verhältnis 16 zu 8.
Die Schwelle für die Verdopplung der Mausgeschwindigkeit wird auf 64 Mickeys in der Sekunde eingestellt.
1.0
33h 15h Größe des Maus-Status-Puffers ermitteln
Diese Funktion liefert die Größe des Maus-Status-Puffers, in dem ein Programm den kompletten Status des Maustreibers sichern kann.

Eingabe
AX = 0015h
Ausgabe
BX = Größe des Maus-Status-Puffers in Byte

Der Maus-Status kann mit Hilfe der Funktion 16h gesichert werden.
1.0
33h 16h Maus-Status sichern
Durch den Aufruf dieser Funktion kopiert der Maus-Treiber alle verwalteten Statusinformationen in einen Puffer des Aufrufers.

Eingabe
AX = 0016h
ES:DX = Segment- und Offsetadresse des Puffers
Ausgabe
keine

Der Aufrufer hat dafür Sorge zu tragen, daß der Puffer groß genug ist, um alle Statusinformationen aufzunehmen. Er sollte deshalb vor dem Aufruf dieser Funktion die Größe des Maus-Status-Puffers mit Hilfe der Funktion 15h ermitteln.

Sinnvoll ist der Aufruf dieser Funktion z.B. vor der Ausführung eines Programms mit Hilfe der EXEC-Funktion, damit alle Maus-Parameter nach der Ausführung des Programms wieder auf ihren ursprünglichen Status gesetzt werden können und von den Veränderungen innerhalb des aufgerufenen Programms unbeeinflußt bleiben.
1.0
33h 17h Maus-Status restaurieren
Liest alle Maus-Parameter aus einem Puffer, in dem sie zuvor durch Aufruf der Funktion 16h gesichert wurden.

Eingabe
AX = 0017h
ES:DX = Segment- und Offsetadresse des Maus-Status-Puffers
Ausgabe
keine
1.0
33h 1Ch Interrupt-Rate der Maus-Hardware einstellen
Bestimmt die Häufigkeit, mit der die Maus-Hardware die aktuelle Mausposition und den Status der Mausknöpfe ermittelt und sie an den Maustreiber weiterleitet.

Eingabe
AX = 001C
BX = Interrupt-Rate

Bit Bedeutung:
0 Keine Interrupts
1 30 Interrupts in der Sekunde
2 50 Interrupts in der Sekunde
3 100 Interrupts in der Sekunde
4 200 Interrupts in der Sekunde
5-15 Keine Bedeutung (0)

Ausgabe
keine

Diese Funktion ist nur für die InPort-Maus verfügbar.
Sind im BX-Register mehr als nur ein Bit gesetzt, zählt das niederwertigste gesetzte Bit.
Mit steigender Anzahl von Interrupten nimmt das Auflösungsvermögen der Maus zu, dafür aber die Geschwindigkeit des Vordergrundprogramms ab, da es immer öfter durch den Maustreiber unterbrochen wird.
1.0
33h 1Fh Maustreiber deaktivieren
Deaktiviert den aktuellen Maustreiber und liefert die Adresse des vorhergehenden Interrupt-Handlers für den Interrupt 33h.

Eingabe
AX = 001Fh
Ausgabe
AX = FFFFh: Fehler
001Fh: alles o.k., in diesem Fall:
ES:BX = Segment- und Offsetadresse des vorhergehenden Maustreibers

Durch den Aufruf dieser Funktion gibt der Maustreiber alle Interrupt-Routinen wieder frei, die er bei seiner Aktivierung installiert hat. Ausgenommen davon ist lediglich der Handler für den Interrupt 33h, doch kann der Aufrufer auch diesen Interrupt-Vektor wieder mit seinem ursprünglichen Wert laden, da dessen Adresse im Registerpaar ES:BX zurückgeliefert wird.
1.0
33h 20h Maustreiber aktivieren
Aktiviert einen zuvor über die Funktion 1Fh deaktivierten Maustreiber wieder.

Eingabe
AX = 0020h
Ausgabe
keine
1.0
33h 21h Reset des Maustreibers
Diese Funktion führt einen Reset des Maustreibers durch, wobei der Maus-Cursor ausgeblendet und bereits installierte Event-Handler deaktiviert werden.

Eingabe
AX = 0021h
Ausgabe
AX = FFFFh: Fehler
0021h: alles o.k., in diesem Fall:
BX = Anzahl der Mausknöpfe

Diese Funktion führt im Gegensatz zur Funktion 0000h keinen Reset der Maus-Hardware herbei.
1.0
33h 24h Maustyp ermitteln
Ermittelt die Art des installierten Maus sowie die Versionsnummer des Maustreibers.

Eingabe
AX = 0024h
Ausgabe
BH = Vorkommateil der Versionsnummer
BL = Nachkommateil der Versionsnummer
CH = Maustyp

1 = Bus-Maus
2 = Serielle Maus
3 = InPort-Maus
4 = PS/2-Maus
5 = HP-Maus

CL = IRQ-Nummer
0 = PS/2
2, 3, 4, 5 oder 7 = IRQ-Nummer im PC

Lautet die Versionsnummer des Maustreibers beispielsweise 6.24, wird im BH-Register der Wert 6 und im BL-Register der Wert 24 zurückgeliefert.
1.0
33h 25h Allgemeine Informationen abfragen
Diese Funktion liefert allgemeine Informationen über den Maustreiber, so z.B. die Art des Treibers und den Status des Maus-Cursors.

Eingabe 


AX = 0025h
Ausgabe
AX = Allgemeine Informationen (siehe unten)
BX, CX, DX = Statusinformationen nur für OS/2

Die allgemeinen Informationen werden in den verschiedenen Bit-Feldern von AX zurückgeliefert. Dort spiegeln sich folgende Informationen wieder:

Bit 15: Art des Treibers
0b: der Treiber ist in einer COM-Datei enthalten
1b: der Treiber liegt als Gerätetreiber vor und wurde über die Datei CONFIG.SYS eingebunden

Bit 12 & 13: Informationen über Maus-Cursor
00b: es erscheint ein Software-Text-Cursor
01b: es erscheint ein Hardware-Text-Cursor
10b, 11b: es erscheint ein Grafik-Cursor

Bits 8 bis 11: binärer Wert, der die Interrupt-Rate der Maus-Hardware wiedergibt

Die zurückgelieferten Argumente in den Registern BX, CX und DX werden nur beim Einsatz eines Maustreibers unter OS/2 zurückgeliefert. Für die DOS-Programmierung spielen sie keine Rolle.

6.26
33h 2Fh Reset der Maus-Hardware
Durch diese Funktion wird ein Reset der Maus-Hardware durchgeführt, ohne jedoch die Software-Einstellungen, wie z.B. die Bitmaske des Maus-Cursors, den Schwellenwert für die Verdopplung der Mausgeschwindigkeit oder die eingestellten Beschleunigungskurven, zu beeinflussen.

Eingabe
AX = 002Fh
Ausgabe
AX = FFFFh: o.k.
0 = Fehler

Diese Funktion bildet das Gegenstück zur Funktion 21h, die nur einen Reset der Software-Parameter durchführt.
7.02
33h 31h Ausdehnung des virtuellen Bildschirms abfragen
Mit dieser Funktion erhält ein Programm die Möglichkeit, die Ausdehnung des virtuellen Mausbildschirms im aktuellen Videomodus abzufragen.

Eingabe
AX = 0031h
Ausgabe
AX = Minimale X-Ordinate
BX = Minimale Y-Ordinate
CX = Maximale X-Ordinate
DX = Maximale Y-Ordinate

Die Größe des virtuellen Mausbildschirms wird auch durch die Funktionen 07h und 08h beeinflußt, die den Bewegungsbereich des Maus-Cursors einschränken.
7.05
33h 32h Unterstützte Funktionen ermitteln
Diese Funktion bietet eine einfache Möglichkeit, die unterstützten Funktionen jenseits der Funktion 25h zu ermitteln.

Eingabe
AX = 0032h
Ausgabe
AX = Unterstützte Funktionen

Das Funktionsergebnis in AX muß als Bit-Feld betrachtet werden, wobei jedes Bit für eine Funktion steht. Ist es gesetzt, wird die jeweilige Funktion unterstützt.
Das Bit 15 steht dabei für die Funktion 25h, das Bit 14 für die Funktion 26h, Bit 13 für Funktion 27h usw. 

Bit 15 = Funktion 25h
Bit 14 = Funktion 26h
Bit 13 = Funktion 27h
Bit 12 = Funktion 28h
Bit 11 = Funktion 29h
Bit 10 = Funktion 2Ah
Bit 09 = Funktion 2Bh
Bit 08 = Funktion 2Ch
Bit 07 = Funktion 2Dh
Bit 06 = Funktion 2Eh
Bit 05 = Funktion 2Fh
Bit 04 = Funktion 30h
Bit 03 = Funktion 31h
Bit 01 = Funktion 32h
Bit 00 = Funktion 33h
7.05
33h 33h Einstellungen ermitteln
Alle Parameter innerhalb des Maustreibers, die per Software oder Hardware eingestellt werden können, lassen sich mit Hilfe dieser Funktion in einen Puffer holen. Leider ist der Aufbau dieses Puffers jedoch nicht genau dokumentiert, so daß der Einsatz dieser Funktion wenig Sinn macht.

Eingabe
AX = 0033h
CX = Pufferlänge
ES = Segmentadresse des Puffers
DX = Offsetadresse des Puffers
Ausgabe
AX = 0
CX = Anzahl der Byte im Puffer
ES = Segmentadresse des Puffers
DX = Offsetadresse des Puffers
7.05

nach oben

 

Mausabfrage:

Interrupt Funktion Beschreibung Verfügbar ab Version
33h 03h Mausposition und Status der Mausknöpfe ermitteln
Der Aufruf dieser Funktion liefert die aktuelle Mausposition und den Status der verschiedenen Mausknöpfe.

Eingabe
AX = 0003h
Ausgabe
BX = Status der Mausknöpfe
Bit 0 gesetzt = Linker Mausknopf niedergedrückt
Bit 1 gesetzt = Rechter Mausknopf niedergedrückt
Bit 2 gesetzt = Mittlerer Mausknopf niedergedrückt

CX = Horizontale Mausposition
DX = Vertikale Mausposition

Die in den Registern CX und DX zurückgelieferten Koordinaten beziehen sich nicht auf den physikalischen Bildschirm, sondern auf Pixelpositionen im virtuellen Mausbildschirm.
Verfügt die Maus über nur zwei Mausknöpfe, ist die Information über den mittleren Mausknopf nicht von Bedeutung.
1.0
33h 05h Anzahl der Betätigungen eines Mausknopfs ermitteln
Teilt dem Aufrufer mit, wie oft ein Mausknopf seit dem letzten Aufruf dieser Funktion niedergedrückt wurde und wo sich der Maus-Cursor bei der letzten Betätigung befand.

Eingabe
AX = 0005h
BX = Angesprochener Mausknopf:
0 = Linker Mausknopf
1 = Rechter Mausknopf
2 = Mittlerer Mausknopf
Ausgabe
AX = Status aller Mausknöpfe
Bit 0 gesetzt = Linker Mausknopf niedergedrückt
Bit 1 gesetzt = Rechter Mausknopf niedergedrückt
Bit 2 gesetzt = Mittlerer Mausknopf niedergedrückt

BX = Betätigungen des angesprochenen Mausknopfs seit dem letzten Aufruf dieser Funktion
CX = Horizontale Mausposition bei der letzten Betätigung
DX = Vertikale Mausposition bei der letzten Betätigung

Die in den Registern CX und DX übergebenen Koordinaten beziehen sich nicht auf den physikalischen Bildschirm, sondern auf Pixelpositionen im virtuellen Mausbildschirm.
Der Betätigungszähler für den angesprochenen Mausknopf wird durch den Aufruf dieser Funktion wieder auf 0 gesetzt.
1.0
33h 06h Wie oft wurde ein Mausknopf losgelassen?
Teilt dem Aufrufer mit, wie oft ein Mausknopf seit dem letzten Aufruf dieser Funktion losgelassen wurde und wo sich der Maus-Cursor beim letzten Loslassen befand.

Eingabe
AX = 0006h
BX = Angesprochener Mausknopf:
0 = Linker Mausknopf
1 = Rechter Mausknopf
2 = Mittlerer Mausknopf
Ausgabe
AX = Status aller Mausknöpfe
Bit 0 gesetzt = Linker Mausknopf niedergedrückt
Bit 1 gesetzt = Rechter Mausknopf niedergedrückt
Bit 2 gesetzt = Mittlerer Mausknopf niedergedrückt

BX = Anzahl, wie oft der Mausknopf losgelassen wurde
CX = Horizontale Mausposition beim letzten Loslassen
DX = Vertikale Mausposition beim letzten Loslassen

Die in den Registern CX und DX übergebenen Koordinaten beziehen sich nicht auf den physikalischen Bildschirm, sondern auf Pixelpositionen im virtuellen Mausbildschirm.
Der Betätigungszähler für den angesprochenen Mausknopf wird durch den Aufruf dieser Funktion wieder auf 0 gesetzt.
1.0
33h 0Bh Bewegungswerte ermitteln
Ermittelt die Entfernung zwischen der aktuellen Mausposition und der Mausposition beim letzten Aufruf dieser Funktion.

Eingabe
AX = 000Bh
Ausgabe
CX = Horizontale Entfernung
DX = Vertikale Entfernung

Die Werte müssen als vorzeichenbehaftete Zahlen interpretiert werden, wobei positive Werte eine Bewegung in Richtung auf den unteren bzw. rechten Bildschirmrand angeben und negative Werte eine Bewegung in Richtung auf den oberen bzw. linken Bildschirmrand.
Die Angaben erfolgen nicht in Punkten, sondern in Mickey (1 Mickey entspricht 1/200 Zoll bei einer 200 ppi-Maus und 1/400 Zoll bei einer 400 ppi-Maus).
1.0

nach oben

 

Mauscursorsteuerung:

Interrupt Funktion Beschreibung Verfügbar ab Version
33h 01h Maus-Cursor auf dem Bildschirm anzeigen
Nach dem Aufruf dieser Funktion wird der Maus-Cursor auf dem Bildschirm sichtbar und folgt fortan den Bewegungen der Maus über den Bildschirm.

Eingabe
AX = 0001h
Ausgabe
keine

Mit dem Aufruf dieser Funktion ist die Inkrementierung eines internen Zählers verbunden, der darüber entscheidet, ob der Maus-Cursor auf dem Bildschirm dargestellt wird. Enthält dieser Zähler den Wert 0, wird der Maus-Cursor auf dem Bildschirm dargestellt, während der Wert -1 seine Ausblendung zur Folge hat. Beim Aufruf der Funktion 00h (Reset) wird dieser Zähler zunächst auf -1 gesetzt, um dann durch den ersten Aufruf dieser Funktion den Wert 0 anzunehmen und wieder auf dem Bildschirm zu erscheinen.
Der Maustreiber verfolgt die Mausbewegung auch, wenn der Maus-Cursor nicht auf dem Bildschirm dargestellt wird, so daß der Maus-Cursor nach dem Aufruf dieser Funktion nicht unbedingt wieder an der Stelle erscheinen muß, an der er sich bei seiner Ausblendung befand.

1.0
33h 02h Maus-Cursor ausblenden
Diese Funktion entfernt den Maus-Cursor vom Bildschirm.

Eingabe
AX = 0002h
Ausgabe
keine

Mit dem Aufruf dieser Funktion ist die Dekrementierung eines internen Zählers verbunden, der darüber entscheidet, ob der Maus-Cursor auf dem Bildschirm dargestellt wird. Enthält dieser Zähler den Wert 0, wird der Maus-Cursor auf dem Bildschirm dargestellt während der Wert -1 seine Ausblendung zur Folge hat.
Der Maustreiber verfolgt die Mausbewegung auch nach dem Aufruf dieser Funktion, so daß der Maus-Cursor beim Aufruf der Funktion 01h (Maus-Cursor anzeigen) nicht unbedingt wieder an der Stelle erscheinen muß, an dem er sich bei seiner Ausblendung befand.
1.0
33h 04h Bewege den Maus-Cursor
Bewegt den Maus-Cursor an eine bestimmte Bildschirmposition, sofern er nicht mit Hilfe der Funktion 02h ausgeblendet wurde.

Eingabe
AX = 0004h
CX = Horizontale Mausposition
DX = Vertikale Mausposition
Ausgabe
keine

Die in den Registern CX und DX übergebenen Koordinaten beziehen sich nicht auf den physikalischen Bildschirm, sondern auf Pixelpositionen im virtuellen Mausbildschirm.
Befindet sich die angegebene Position außerhalb des über die Funktionen 07h und 08h festgelegten Bewegungsbereich, werden die Koordinaten so angepaßt, daß sich der Maus-Cursor innerhalb dieses Bereichs befindet.
Tatsächlich wird der Maus-Cursor auch an die neue Position versetzt, wenn er zum Zeitpunkt des Funktionsaufrufs ausgeblendet ist, doch wird diese Verschiebung erst mit der nächsten Einblendung sichtbar.
1.0
33h 07h Horizontalen Bewegungsbereich für den Maus-Cursor festlegen
Definiert den horizontalen Bewegungsbereich, innerhalb dessen der Maus-Cursor bewegt werden darf. Für den Anwender gibt es keine Möglichkeit, den Maus-Cursor aus diesem Bereich herauszuführen.

Eingabe
AX = 0007h
CX = Minimale horizontale Mausposition
DX = Maximale horizontale Mausposition
Ausgabe
keine

Die in den Registern CX und DX übergebenen Koordinaten beziehen sich nicht auf den physikalischen Bildschirm, sondern auf Pixelpositionen im virtuellen Mausbildschirm.
Befindet sich der Maus-Cursor nicht innerhalb des angegebenen Bereichs, wird er vom Maustreiber automatisch in diesen Bereich gebracht.
Ist der Wert im DX-Register kleiner als der in CX, werden die beiden Parameter vertauscht.
1.0
33h 08h Vertikalen Bewegungsbereich für den Maus-Cursor festlegen
Definiert den vertikalen Bewegungsbereich, innerhalb dessen der Maus-Cursor bewegt werden darf. Für den Anwender gibt es keine Möglichkeit, den Maus-Cursor aus diesem Bereich herauszubewegen.

Eingabe
AX = 0008h
CX = Minimale vertikale Mausposition
DX = Maximale vertikale Mausposition
Ausgabe
keine

Die in CX und DX übergebenen Koordinaten beziehen sich nicht auf den physikalischen Bildschirm, sondern auf Pixelpositionen im virtuellen Mausbildschirm.
Befindet sich der Maus-Cursor nicht innerhalb des angegebenen Bereichs, wird er vom Maustreiber automatisch in diesen Bereich gebracht.
Ist der Wert im DX-Register kleiner dem in CX, werden beide Parameter vertauscht.
1.0
33h 09h Definiert den Maus-Cursor im Grafikmodus
Im Grafikmodus entscheidet ein Bit-Feld über das Erscheinungsbild des Maus-Cursors, das die Verknüpfung zwischen den Punkten unter dem Maus-Cursor und dem Maus-Cursor selbst festlegt. Dieses Bit-Feld und damit das Erscheinungsbild des Maus-Cursors wird mit Hilfe dieser Funktion definiert.

Eingabe
AX = 0009h
BX = Entfernung des Bezugspunktes vom linken Rand des Bit-Feldes
CX = Entfernung des Bezugspunktes vom oberen Rand des Bit-Feldes
ES:DX = Segment- und Offsetadresse des Bit-Feldes im Speicher
Ausgabe
keine

Das Bit-Feld umfaßt 64 Byte, von denen die ersten 32 eine UND-Verknüpfung und die restlichen 32 eine ODER-Verknüpfung mit dem aktuellen Punktmuster definieren.
1.0
33h 0Ah Definiert den Maus-Cursor im Textmodus
Legt die Bitmaske fest, die das Erscheinungsbild des Maus-Cursors im Textmodus bestimmt.

Eingabe
AX = 000Ah
BX = Art des Maus-Cursors:
0 = Software-Cursor
1 = Hardware-Cursor
CX = UND-Maske für den Software-Cursor oder Startzeile des Hardware-Cursors
DX = XOR-Maske für den Software-Cursor oder Endzeile des Hardware-Cursors
Ausgabe
keine

Wird der Software-Cursor ausgewählt, dann wird der Code des Zeichens unter dem Maus-Cursor und das zugehörige Attribut-Byte zunächst mit der Maske im CX-Register durch ein binäres UND verknüpft, um anschließend mit dem Wert im DX-Register durch ein Exklusives ODER (XOR) verknüpft zu werden. Das Attribut-Byte wird dabei jeweils mit dem höherwertigen Byte (CH und DH), der Zeichen-Code mit dem niederwertigen Byte (CL und DL) verknüpft.
Der Hardware-Cursor ist der blinkende Bildschirm-Cursor. Die Wertebereiche für Start- und Endzeile liegen im Monochrom-Modus zwischen 0 und 13 und im Color-Modus zwischen 0 und 7.
1.0
33h 0Fh Verhältnis zwischen Mickeys und Punkten setzen
Diese Funktion definiert das Verhältnis zwischen Mickeys und Punkten, das aus der Sicht des Anwenders die Sensitivität der Maus und damit die Geschwindigkeit festlegt, mit der der Maus-Cursor über den Bildschirm bewegt wird.

Eingabe
AX = 000Fh
CX = Anzahl horizontaler Mickeys, die 8 Punkte repräsentieren
DX = Anzahl vertikaler Mickeys, die 8 Punkte repräsentieren
Ausgabe
keiner

Erlaubt ist die Angabe von Werten im Bereich zwischen 1 und 32767.
Die Default-Einstellung ist 8 Mickeys in horizontaler Richtung und 16 Mickeys in vertikaler Richtung, so daß sich der Maus-Cursor in horizontaler Richtung doppelt so schnell bewegt wie in vertikaler Richtung.
Durch den Aufruf der Funktion 00h (Reset des Maustreibers) werden wieder die Default-Werte eingestellt.
1.0
33h 10h Ausschluß-Bereich definieren
Diese Funktion erlaubt es einem Programm, einen beliebigen Bildschirmbereich als Ausschlußbereich (eine Art schwarzes Loch) zu definieren, so daß der Maus-Cursor vom Bildschirm verschwindet, sobald er in diesen Bereich eintritt.

Eingabe
AX = 0010h
CX = X-Ordinate der oberen linken Ecke des Ausschlußbereichs
DX = Y-Ordinate der oberen linken Ecke des Ausschlußbereichs
SI = X-Ordinate der unteren rechten Ecke des Ausschlußbereichs
DI = Y-Ordinate der unteren rechten Ecke des Ausschlußbereichs
Ausgabe
keine

Die in den Registern CX, DX, SI und DI übergebenen Koordinaten beziehen sich nicht auf den physikalischen Bildschirm, sondern auf Pixelpositionen im virtuellen Mausbildschirm.
Der Ausschlußbereich wird durch den Aufruf der Funktion 00h (Reset des Maustreibers) oder 01h (Maus-Cursor anzeigen) wieder gelöscht.
1.0
33h 13h Schwelle für Verdopplung der Mausgeschwindigkeit setzen
Überschreitet die Geschwindigkeit der Mausbewegung eine bestimmte Schwelle, verdoppelt der Maustreiber das Bewegungsverhältnis zwischen Punkten und Mickeys, so daß sich die Mausgeschwindigkeit verdoppelt. Die Schwelle, bei der diese Verdopplung eintritt, kann mit Hilfe dieser Funktion eingestellt werden.

Eingabe
AX = 0013h
DX = Schwelle in Mickeys pro Sekunde
Ausgabe
keine

1 Mickey entspricht der Länge von 1/200 bzw. 1/400 Zoll, je nach Maus.
Soll die Verdopplung der Mausgeschwindigkeit verhindert werden, genügt es die Schwelle entsprechend hoch anzusetzen, da bereits Geschwindigkeiten von über 5000 Mickeys in der Sekunde praktisch nicht mehr erreicht werden können.
1.0
33h 1Ah Maus-Sensitivität einstellen
Diese Funktion ist eine Kombination der Funktionen 0Fh und 13h, die einerseits die Einstellung des Verhältnisses zwischen Mausbewegung und Bewegung des Maus-Cursors und andererseits die Einstellung der Verdopplungsschwelle für die Mausgeschwindigkeit erlauben.

Eingabe
AX = 001Ah
BX = Anzahl horizontaler Mickeys, die 8 Punkte repräsentieren
CX = Anzahl vertikaler Mickeys, die 8 Punkte repräsentieren
DX = Schwelle für die Verdopplung der Mausgeschwindigkeit
Ausgabe
keine

Für die Parameter in den Registern CX und DX sind Werte im Bereich zwischen 1 und 32767 erlaubt.
Default-Einstellung ist 8 Mickeys in horizontaler Richtung und 16 Mickeys in vertikaler Richtung, so daß sich der Maus-Cursor in horizontaler Richtung doppelt so schnell bewegt wie in vertikaler Richtung.
Soll die Verdopplung der Mausgeschwindigkeit verhindert werden, genügt es, die Schwelle entsprechend hoch anzusetzen, da bereits Geschwindigkeiten von über 5000 Mickeys in der Sekunde praktisch nicht mehr erreicht werden können.
Durch den Aufruf der Funktion 00h (Reset des Maustreibers) werden wieder die Default-Werte eingestellt.
1.0
33h 1Bh Maus-Sensitivität ermitteln
Liefert die Parameter zurück, die über die Funktion 1Ah bzw. über die Funktionen 0Fh und 13h eingestellt wurden.

Eingabe
AX = 001Bh
Ausgabe
BX = Anzahl horizontaler Mickeys, die 8 Punkte repräsentieren
CX = Anzahl vertikaler Mickeys, die 8 Punkte repräsentieren
DX = Schwelle für die Verdopplung der Mausgeschwindigkeit
1.0
33h 27h Bit-Masken des Bildschirm-Cursors abfragen
Mit dieser Funktion können die aktuellen Bit-Masken für die Erzeugung des Software-Cursors bzw. die Start- und Endzeile des Hardware-Cursors in Erfahrung gebracht werden. Außerdem gibt diese Funktion Auskunft über die Bewegung der Maus seit ihrer letzten Abfrage.

Eingabe 
AX = 0027h
Ausgabe
AX = UND-Maske bei Software-Cursor oder Startzeile bei Hardware-Cursor
BX = XOR-Maske bei Software-Cursor oder Endzeile bei Hardware-Cursor
CX = Länge der horizontalen Bewegung in Mickeys
DX = Länge der vertikalen Bewegung in Mickeys

Ist zum Zeitpunkt des Funktionsaufrufs ein Hardware-Cursor aktiv, werden seine Start- und Endzeile (in Scan-Zeilen) zurückgeliefert. Ist hingegen der Software-Cursor eingeschaltet, werden die aktuellen Bit-Masken angegeben.
Obwohl diese Funktion seit der Version 7.01 des Maustreibers unterstützt wird, werden die Informationen über die Start- und Endzeile des Hardware-Cursors erst ab der Version 7.02 zurückgeliefert. Damit wurde ein Fehler in der Version 7.01 beseitigt, die nur in Bezug auf den Software-Cursor einwandfrei arbeitete.
Die zurückgelieferten Bewegungswerte in den Registern CX und DX werden nicht durch die verschiedenen Software-Einstellungen wie den Schwellenwert für die Verdopplung der Mausgeschwindigkeit oder die Beschleunigungstabelle beeinflußt. Sie stehen deshalb für die Werte, die der Maustreiber direkt von der Maus-Hardware empfängt.
7.01
33h 2Ah Informationen über Maus-Cursor abfragen
Diese Funktion liefert verschiedene Informationen zurück, die sich auf den Maus-Cursor und die Maus-Hardware beziehen.

Eingabe 
AX = 002Ah
Ausgabe 
AX = Interner Cursor-Zähler
BX = X-Ordinate des Hot-Spot
CX = Y-Ordinate des Hot-Spot
DX = Art der Maus:
0 = Keine Maus
1 = Bus-Maus
2 = Serielle Maus
3 = InPort-Maus
4 = PS/2-Maus
5 = HP-Maus

Der interne Cursor-Zähler gibt an, ob der Maus-Cursor gerade sichtbar ist oder nicht. Er wird indirekt durch den Aufruf der Funktionen 01h und 02h beeinflußt. Der Wert 0 signalisiert dabei, daß der Maus-Cursor gerade unsichtbar ist, jeder andere Wert zeigt an, daß der Maus-Cursor auf dem Bildschirm erscheint.
Beim Grafik-Cursor gibt der Hot-Spot den Punkt innerhalb der Bit-Maske des Cursors wieder, der bei einer Positionsabfrage zurückgeliefert wird. Seine Entfernung von der oberen linken Ecke der Bit-Maske wird als vorzeichenbehafteter Integer mit dem Wertebereich von -128 bis 127 in den Registern BX bzw. CX zurückgeliefert.
7.02
33h 2Bh Beschleunigungskurven einstellen
Alle vier Beschleunigungskurven, die der Maustreiber intern verwaltet, lassen sich mit Hilfe dieser Funktion laden und eine davon als die aktuelle auswählen.

Eingabe 
AX = 002Bh
BX = Nummer der zu aktivierenden Beschleunigungskurve
ES = Segmentadresse der Kenndaten
SI = Offsetadresse der Kenndaten
Ausgabe 
AX = FFFFh: Fehler
0021h: alles o.k., in diesem Fall:
BX = Anzahl der Mausknöpfe

Mit dieser Funktion kann auch wieder auf die im Treiber vorgegebenen Beschleunigungskurven umgeschaltet werden, indem als Nummer der aktuellen Beschleunigungskurve der Wert -1 übergeben wird. Die Übergabe eines Puffers mit den Kenndaten der Beschleunigungskurven ist dann nicht erforderlich.
Die vier Beschleunigungskurven werden durch eine Datenstruktur beschrieben, die vom Aufrufer im Speicher angelegt und mittels der Register ES:SI übergeben werden muß.
7.0
33h 2Ch Aktuelle Beschleunigungskurve auslesen
Mit dieser Funktion kann die aktuelle Beschleunigungskurve ausgelesen werden.

Eingabe 
AX = 002Ch
Ausgabe 
AX = Funktionsstatus
BX = Nummer der aktuellen Beschleunigungskurve (0 bis 3)
ES = Segmentadresse des Puffers
SI = Offsetadresse des Puffers

Nach dem Aufruf dieser Funktion sollte in jedem Fall zunächst der Funktionsstatus im Register AX abgefragt werden. Nur wenn dort der Wert 0 zurückgeliefert wurde, konnte die Beschleunigungskurve ausgelesen werden.
Der Inhalt des Registerpaars ES:SI verweist nach dem Funktionsaufruf auf den Puffer, in dem die Kenndaten der aktuellen Beschleunigungskurve festgehalten werden. Die Struktur dieser Daten entspricht dem Format, das auch bei der Einstellung einer Beschleunigungskurve mit Hilfe der Funktion 2Bh erwartet wird.
7.0
33h 2Dh Aktuelle Beschleunigungskurve einstellen/abfragen
Diese Funktion bietet die Möglichkeit, eine der vier Beschleunigungskurven zu aktivieren oder die aktuelle Beschleunigungskurve abzufragen.

Eingabe 
AX = 002Dh
BX = -1: aktuelle Beschleunigungskurve abfragen
= 1-4: diese Beschleunigungskurve aktivieren
Ausgabe 
AX = Funktionsstatus
BX = Nummer der aktiven Beschleunigungskurve (1-4)
ES = Segmentadresse des Puffers mit dem Namen der Beschleunigungskurve
SI = Offsetadresse des Puffers mit dem Namen der Beschleunigungskurve

Wird beim Funktionsaufruf der Wert -1 im Register BX übergeben, liefert diese Funktion Informationen über die aktuelle Beschleunigungskurve in den Registern BX, ES und SI zurück. Soll durch den Funktionsaufruf jedoch eine der vier Beschleunigungskurven aktiviert werden, muß vor dem Funktionsaufruf ein Wert zwischen 1 und 4 in das Register BX geladen werden. In diesem Fall wird als Funktionsergebnis nur der Funktionsstatus in BX zurückgeliefert.
Der Funktionsstatus enthält nach dem Funktionsaufruf den Wert 0, wenn die Funktion ordnungsgemäß ausgeführt werden konnte, sonst einen beliebigen anderen.
Bei der Abfrage der aktuellen Beschleunigungskurve verweisen die Register ES:SI nach dem Funktionsaufruf auf den String, der zusammen mit den anderen Kenndaten der Beschleunigungskurve beim Aufruf der Funktion 2Bh eingestellt wurde. Er umfaßt grundsätzlich 16 Byte und wird nicht durch ein spezielles Zeichen ($ oder NULL-Byte) abgeschlossen. Durch Auswertung dieses Strings läßt sich der symbolische Name der Beschleunigungskurve in Erfahrung bringen.
7.0

nach oben

 

Event-Handler:

Interrupt Funktion Beschreibung Verfügbar ab Version
33h 0Ch Event-Handler installieren
Diese Funktion erlaubt es einem Programm, einen Event-Handler zu installieren, der vom Maustreiber beim Eintritt eines bestimmten Ereignisses im Zusammenhang mit der Maus aufgerufen wird.

Eingabe
AX = 000Ch
CX = Ereignisse, die den Aufruf des Event-Handlers veranlassen sollen (Event-Maske)
Bit Bedeutung
0 Maus wurde bewegt
1 Linker Mausknopf niedergedrückt
2 Linker Mausknopf losgelassen
3 Rechter Mausknopf niedergedrückt
4 Rechter Mausknopf losgelassen
5 Mittlerer Mausknopf niedergedrückt
6 Mittlerer Mausknopf losgelassen
7-15 Keine Bedeutung
ES:DX = Segment- und Offsetadresse des Handlers
Ausgabe
keine

Der Event-Handler wird vom Maustreiber über einen FAR-CALL-Assembler-Befehl aufgerufen und muß daher auch über einen FAR-RETURN-Befehl beendet werden. Wie bei einem Interrupt-Handler darf dabei keines der verschiedenen Prozessor-Register mit verändertem Inhalt an den Aufrufer zurückgeliefert werden.
Der Maustreiber übergibt dem Event-Handler bei seinem Aufruf in den einzelnen Prozessor-Registern folgende Informationen:
AX = Ereignis-Maske. Die einzelnen Bits korrespondieren mit den verschiedenen Ereignissen, wie sie bei der Installation des Event-Handlers im CX-Register angegeben wurden. Darüber hinaus können auch andere Bits gesetzt sein, da der Wert den aktuellen Status des Maus-Treibers wiederspiegelt und sich nicht auf die selektierten Ereignisse beschränkt.
BX = Status der Mausknöpfe
Bit Bedeutung
0 Linker Mausknopf wurde niedergedrückt
1 Rechter Mausknopf wurde niedergedrückt
2 Mittlerer Mausknopf wurde niedergedrückt
CX = Horizontale Mausposition
DX = Vertikale Mausposition
SI = Länge der letzten horizontalen Mausbewegung
DI = Länge der letzten vertikalen Mausbewegung
DS = Datensegment des Maustreibers

Die in den Registern CX und DX übergebenen Koordinaten beziehen sich nicht auf den physikalischen Bildschirm, sondern auf Pixelpositionen im virtuellen Mausbildschirm.
Die in den Registern SI und DI angegebenen Entfernungsangaben beziehen sich nicht auf einzelne Punkte, sondern auf Mickeys (jeweils 1/200 bzw. 1/400 Zoll). Die übergebenen Werte müssen als vorzeichenbehaftete Zahlen interpretiert werden, wobei negative Angaben eine Bewegung in Richtung auf den oberen oder linken Rand des Bildschirms repräsentieren. Positive Werte deuten auf eine Bewegung in Richtung auf den unteren bzw. rechten Bildschirmrand hin.
1.0
33h 18h Alternativen Event-Handler installieren
Diese Funktion erlaubt es einem Programm, maximal drei verschiedene Event-Handler zu installieren, die vom Maustreiber beim Eintritt bestimmter Ereignisse im Zusammenhang mit der Maus und der Tastatur aufgerufen werden.

Eingabe
AX = 0018h
CX = Ereignisse, die den Aufruf des Event-Handlers veranlassen sollen
Bit Bedeutung
0 Maus wurde bewegt
1 Linker Mausknopf niedergedrückt
2 Linker Mausknopf losgelassen
3 Rechter Mausknopf niedergedrückt
4 Rechter Mausknopf losgelassen
5 [Shift]-Taste während des Niederdrückens oder Loslassens eines Mausknopfs betätigt
6 [Ctrl]-Taste während des Niederdrückens oder Loslassens eines Mausknopfs betätigt
7 [Alt]-Taste während des Niederdrückens oder Loslassens eines Mausknopfs betätigt
8-15 Keine Bedeutung
ES:DX = Segment- und Offsetadresse des Handlers
Ausgabe
AX = 0018h: der Event-Handler wurde installiert
FFFFh: der Event-Handler konnte nicht installiert werden

In der Event-Maske im CX-Register muß wenigstens eines der Bits 5 bis 7 gesetzt sein, damit das Ereignis mit der Betätigung mindestens einer Steuertaste verknüpft wird. Soll auf die Steuertasten keine Rücksicht genommen werden, sind die Funktionen 0Ch oder 14h zu bevorzugen.
Ein Fehlerfall kann dann eintreten, wenn bereits drei alternative Event-Handler installiert wurden oder aber bereits ein Event-Handler mit der gleichen Event-Maske registriert ist.
Der Event-Handler wird vom Maustreiber über einen FAR-CALL-Assembler-Befehl aufgerufen und muß daher auch über einen FAR-RETurn-Befehl beendet werden. Wie bei einem Interrupt-Handler darf dabei keines der verschiedenen Prozessor-Register mit verändertem Inhalt an den Aufrufer zurückgeliefert werden.
Der Maustreiber übergibt dem Event-Handler bei seinem Aufruf in den einzelnen Prozessor-Registern folgende Informationen:
AX = Ereignis-Maske. Die einzelnen Bits korrespondieren mit den verschiedenen Ereignissen, wie sie bei der Installation des Event-Handlers im CX-Register angegeben wurden. Darüber hinaus können auch andere Bits gesetzt sein, da der Wert den aktuellen Status des Maus-Treibers wiederspiegelt und sich nicht auf die selektierten Ereignisse beschränkt.
BX = Status der Mausknöpfe
Bit Bedeutung
0 Linker Mausknopf wurde niedergedrückt
1 Rechter Mausknopf wurde niedergedrückt
2 Mittlerer Mausknopf wurde niedergedrückt
CX = Horizontale Mausposition
DX = Vertikale Mausposition
SI = Länge der letzten horizontalen Mausbewegung
DI = Länge der letzten vertikalen Mausbewegung
DS = Datensegment des Maustreibers

Die in CX und DX übergebenen Koordinaten beziehen sich nicht auf den physikalischen Bildschirm, sondern auf Pixelpositionen im virtuellen Mausbildschirm.
Die in den Registern SI und DI angegeben Entfernungsangaben beziehen sich nicht auf einzelne Punkte, sondern auf Mickeys (jeweils 1/200 bzw. 1/400 Zoll, je nach Maus). Die übergebenen Werte müssen als vorzeichenbehaftete Zahlen interpretiert werden, wobei negative Angaben eine Bewegung in Richtung auf den oberen oder linken Rand des Bildschirm repräsentieren. Positive Werte deuten auf ein Bewegung in Richtung auf den unteren bzw. rechten Bildschirmrand hin.
1.0
33h 19h Adresse eines alternativen Event-Handlers ermitteln
Liefert dem Aufrufer die Adresse eines alternativen Event-Handlers.

Eingabe
AX = 0019h
CX = Event-Maske des angesprochenen Event-Handlers
Ausgabe
AX = 0000h: o.k., in diesem Fall:
CX = Event-Maske
BX:DX = Segment- und Offsetadresse des Handlers

Weitere Informationen zur Bedeutung der einzelnen Bits in der Event-Maske finden Sie bei der Beschreibung der Funktion 18h.
Der Funktionsaufruf scheitert, wenn noch kein alternativer Event-Handler mit der angegebenen Event-Maske installiert wurde.
1.0

nach oben

 

Bildschirmsteuerung:

Interrupt Funktion Beschreibung Verfügbar ab Version
33h 1Dh Bildschirmseite für Maus-Cursor setzen
Legt die Bildschirmseite fest, in der der Maustreiber den Maus-Cursor abbildet.

Eingabe
AX = 001Dh
BX = Nummer der Bildschirmseite
Ausgabe
keine

Defaultwert ist die Bildschirmseite 0.
Sinn macht der Aufruf dieser Funktion nur, wenn Ihr Programm mit mehreren Bildschirmseiten arbeitet, wie sie auf CGA-, EGA- und VGA-Karten zur Verfügung stehen.
1.0
33h 1Eh Bildschirmseite des Maus-Cursors ermitteln
Ermittelt die Bildschirmseite, in der der Maus-Cursor durch den Maustreiber abgebildet wird.

Eingabe
AX = 001Eh
Ausgabe
BX = Nummer der Bildschirmseite
1.0
33h 28h Videomodus setzen
Diese Funktion bietet dem Aufrufer die Möglichkeit zur Einstellung eines Video-Modus, sofern er von der aktiven Video-Hardware unterstützt wird.

Eingabe
AX = 0028h
CX = Codenummer des Videomodus
DX = Größe des Bildschirm-Font
Ausgabe 
CX = Funktionsstatus

Eine Liste der verfügbaren Videomodi und ihrer Codenummern kann über die Funktion 29h abgefragt werden.
Im Register CX wird der Wert 0 zurückgeliefert, falls der angegebene Videomodus von der aktiven Video-Hardware unterstützt wird und deshalb eingestellt werden konnte. Ansonsten wird die Codenummer aus dem Register AX zurückgeliefert.
Der Aufrufparameter in DX wird nur bei einigen wenigen Video-Modi erwartet, die mit einstellbaren Schriftgrößen arbeiten. Im höherwertigen Byte von DX muß dann die Größe der Schrift entlang der Y-Achse und im niederwertigen Byte die Ausdehnung entlang der X-Achse codiert werden.
7.0
33h 29h Liste der verfügbaren Video-Modi abfragen
Einem Anwendungsprogramm bietet diese Funktion die Möglichkeit, die Liste der Video-Modi zu erfragen, die von der aktiven Video-Hardware unterstützt werden.

Eingabe 
AX = 0029h
CX = Ersten oder nächsten Videomodus abfragen
Ausgabe 
BX = Segmentadresse eines Strings
CX = Codenummer des Videomodus
DX = Offsetadresse eines Strings

Soll die komplette Liste der verfügbaren Videomodi abgefragt werden, ist ein mehrfacher Aufruf dieser Funktion erforderlich. Beim ersten Aufruf muß für den Parameter in CX dabei der Wert 0, bei allen nachfolgenden Aufrufen ein Wert ungleich 0 übergeben werden.
Mit jedem Aufruf wird dann ein anderer Videomodus beschrieben, bis der Wert 0 im Register CX nach dem Funktionsaufruf anzeigt, daß alle verfügbaren Videomodi abgefragt wurden.
Neben der Codenummer des Videomodus liefert diese Funktion nicht in jedem Fall die Art des Videomodus' (Text oder Grafik), seine Auflösung und die Anzahl der darstellbaren Farben zurück. Diese Informationen können jedoch in der Regel einem ASCII-String entnommen werden, dessen Adresse im Registerpaar BX:DX zurückgeliefert wird.
Sofern ein solcher String verfügbar ist und die beiden genannten Register nicht den Wert 0 enthalten, wird er durch ein Dollar-Zeichen mit einem anschließenden NULL-Byte (Dummy = CHR$(0)) abgeschlossen.
7.0

nach oben

 

Light-Pen:

Interrupt Funktion Beschreibung Verfügbar ab Version
33h 0Dh Emulation des Lichtgriffels anschalten
Lichtgriffel emulieren; Schaltet die Emulation des Lichtgriffels an und simuliert dadurch einen nicht vorhandenen Lichtgriffel.

Eingabe 
AX = 000Dh
Ausgabe 
keine

Sinnvoll ist die Emulation eines Lichtgriffels nur in Verbindung mit Programmen, die den Lichtgriffel unterstützen oder Mechanismen zur Abfrage des Lichtgriffels bereitstellen. Ein Beispiel dafür ist das IBM-BASIC mit seinem PEN-Befehl.
Innerhalb des Emulations-Modus wird die Mausposition mit der Position des Lichtgriffels assoziiert und die gleichzeitige Betätigung des linken und rechten Mausknopfes in eine Betätigung des Schalters am Lichtgriffel umgesetzt.
1.0
33h 0Eh Emulation des Lichtgriffels abschalten
Schaltet die zuvor über die Funktion 0Dh aktivierte Emulation des Lichtgriffels durch die Maus wieder ab.

Eingabe 
AX = 000Eh
Ausgabe 
keine

Siehe Funktion 0Dh.
1.0

nach oben

 

Ballpoint-Mouse:

Interrupt Funktion Beschreibung Verfügbar ab Version
33h 30h Einstellungen der Ballpoint-Mouse setzen/abfragen
Speziell auf die Bedürfnisse der Ballpoint-Mouse ist diese Funktion zugeschnitten, die die Einstellung bzw. Abfrage der spezifischen Parameter dieser Maus erlaubt. Dabei geht es vor allem um die Orientierung der Ballpoint-Mouse und die Frage, welche ihrer vier Buttons als die zwei aktiven Buttons betrachtet werden sollen.

Eingabe 
AX = 0030h
BX = Drehwinkel
CX = Kommandocode
Ausgabe 
AX = Funktionsstatus
BX = Drehwinkel
CX = Aktive Buttons

Nach dem Funktionsaufruf sollte unbedingt der Funktionsstatus in AX überprüft werden, denn hier wird durch den Wert -1 angezeigt, daß keine Ballpoint-Mouse installiert ist. Jeder andere Wert verweist auf die Existenz einer Ballpoint-Mouse und spiegelt den Status der verschiedenen Maus-Buttons wider. Die einzelnen Buttons werden dabei durch folgende Bits innerhalb des AX-Registers repräsentiert:
Bit 2 = Button 4
Bit 3 = Button 2
Bit 4 = Button 3
Bit 5 = Button 1

Die übrigen Bits enthalten den Wert 0.
Sollen der aktuelle Drehwinkel und die aktiven Buttons mit Hilfe dieser Funktion abgefragt werden, muß vor dem Funktionsaufruf das Register CX mit dem Wert 0 geladen werden. Ein Drehwinkel in BX ist dann nicht erforderlich.
Als Funktionsergebnis erhält man in BX dann den Drehwinkel mit einem Wert zwischen 0 und 360 (Grad). Darüber hinaus können die beiden aktiven Buttons dem Hi-Byte von CX entnommen werden, während die inaktiven Buttons im Lo-Byte dieses Registers codiert sind. Innerhalb der beiden Byte stehen dabei folgende Bits für die einzelnen Buttons:
Bit 2 = Button 4 
Bit 3 = Button 2 
Bit 4 = Button 3
Bit 5 = Button 1

Die übrigen Bits enthalten den Wert 0.
Soll dem Maustreiber mit Hilfe dieser Funktion der aktuelle Drehwinkel der Ballpoint-Mouse mitgeteilt und die beiden aktiven Buttons ausgewählt werden, so sind die aktiven und inaktiven Buttons in CX zu codieren. Die Codierung erfolgt dabei genau wie bei der Rückgabe der aktiven bzw. inaktiven Buttons nach einer Abfrage (siehe oben). Als Drehwinkel in BX wird darüber hinaus ein Wert zwischen 0 und 360 Grad erwartet.
7.04

nach oben

 

Windows:

Interrupt Funktion Beschreibung Verfügbar ab Version
33h 34h Lage der Datei MOUSE.INI ermitteln
Diese Funktion ist für die Mausprogrammierung unter Windows konzipiert und liefert ihrem Aufrufer die genaue Pfadbezeichnung der Initialisierungsdatei MOUSE.INI als ASCII-String in einem Puffer.

Eingabe 
AX = 0034h
Ausgabe 
AX = 0
ES = Segmentadresse des Puffers
DX = Offsetadresse des Puffers

Der übergebene String wird durch ein NULL-Byte abgeschlossen.
Die Pfadbezeichnug der MOUSE.INI-Datei wird der Umgebungsvariablen MOUSE entnommen. Ist diese Variable nicht definiert, wird MOUSE.INI im Verzeichnis des Maustreibers vermutet und ein entsprechender String geliefert.
8.0
nach oben