Mauszeigerbeschleunigung unter DOS deaktivieren

Konfiguration, Anwendungen, Treiber und TSRs unter DOS
Antworten
Benutzeravatar
ChrisR3tro
Administrator
Beiträge: 1979
Registriert: Mo 7. Mär 2005, 23:33
Wohnort: NRW
Kontaktdaten:

Mauszeigerbeschleunigung unter DOS deaktivieren

Beitrag von ChrisR3tro »

Hallo Leute,

Ego-Shooter spiele ich mit deaktivierter Mauszeiger-Beschleunigung (engl.: "Mouse pointer acceleration"). Insbesondere bei Quake und Duke Nukem 3D finde ich dieses Feature nicht "zielführend" (bitte wörtlich verstehen!) :-)

Eigentlich interessant, dass mir das bisher nie aufgefallen ist, aber alle DOS-Maustreiber, die ich so kenne, haben standardmäßig Beschleunigung aktiviert:
  • CuteMouse v1.9.1 und 2.1b4
  • Microsoft Mouse v8.20
  • Logitech Mouse Release 8.32
Der Logitech-Treiber ist der einzige bei dem ich es geschafft habe, die Beschleunigung über Kommandozeilenparameter zu deaktivieren. Für diesen Zweck bietet er den Parameter AOFF, allerdings benötigt dr Logitech-Treiber auch ziemlich viel konventionellen Speicher, bei mir 26kb (vgl. MS-Treiber: 17kb, CuteMouse v1.9.1: 3kb).

Durch etwas mehr Googeln stieß ich auf Software-Interrupts, welche es ermöglichen ein Beschleunigungsprofil auszuwählen, bzw. die Beschleunigung komplett abzuschalten. Die Methode wird beschrieben in einem Thread auf doomworld.com bei der man über die Software-Interrupts des Microsoft-Maustreibers (welche Windows 98 anscheinend ebenfalls zur Verfügung stellt) ein Profil ohne Beschleunigung aktiviert. Wer Lust hat, kann folgenden Code in eine COM-Datei kopieren und diese ausführen.

Code: Alles auswählen

B8 2D 00 BB 04 00 CD 33 B8 1A 00 BB 60 00 B9 60 00 BA 7F 00 CD 33 B8 00 4C CD 21
(Copy & paste mittels Hex-Editor ist einfach möglich.)

Zum Besseren Verständnis, habe ich etwas recherchiert und euch das Programm kommentiert. :-)

Code: Alles auswählen

;Int33h aufrufen für Funktion "select acceleration profile"
B8      ;Kommando: SET AX
2D 00   ;Daten (l. endian, 2x8bit):  Int33h, subrout. 2Dh (sel. accel. prof.)
BB      ;Kommando: SET BX
04 00   ;Daten: = 4 (accel. level 4)
CD      ;Kommando: Call int
33      ;Daten: Int33h

;Int33h aufrufen für Funktion "set mouse sensitivity"
B8      ;Kommando: SET AX
1A 00   ;Daten: Int33h, subroutine 1Ah (set mouse sensitivity)
BB      ;Kommando: SET BX?
60 00   ;Daten: horizontal(?) speed = 96
B9      ;Kommando: SET CX (vertical speed)?
60 00   ;Daten: = 96
BA      ;Kommando: SET DX (double speed threshold)?
7F 00   ;Daten: DX = 127
CD      ;Kommando: Call int
33      ;Daten: Int33h

;Programm beenden
B8      ;Kommando: SET AX
00 4C   ;Daten: Int21h, subroutine 4Ch (exit program)
CD      ;Kommando: Call int
21      ;Daten: Int21h (DOS functions)
Das Programm funktioniert unter Windows 98 und natürlich auch unter DOS (hier sofern Microsoft's Maustreiber ab v7.0 geladen wurde). Erst ab dieser Version wird die nötige Interruptmethode unterstützt.

Das Deaktivieren der Mauszeigerbeschleunigung unter Windows 98 selbst, etwa über die Registry, hat übrigens auf Anwendungen/Spiele im DOS-Fenster null Einfluss. Genial oder?

Was CuteMouse angeht, so reicht es nicht über die Kommandozeilen-Parameter /r11 bzw. /r00 die Empfindlichkeit runterzuregeln, die Beschleunigung bleibt aktiviert. Durch meine rudimentären Assembler-Kenntnisse konnte ich verifizieren (siehe ctmouse.asm), dass weder v1.9.1 noch v2.1b4 den nötigen Software-Interrupt (Int 33/AX=002Dh) unterstützt.

Kennt jemand eine andere Möglichkeit, CuteMouse dazu zu bewegen, die Beschleunigung zu deaktivieren?

Quellen:
Benutzeravatar
ChrisR3tro
Administrator
Beiträge: 1979
Registriert: Mo 7. Mär 2005, 23:33
Wohnort: NRW
Kontaktdaten:

Re: Mauszeigerbeschleunigung unter DOS deaktivieren

Beitrag von ChrisR3tro »

Nachtrag: CuteMouse v1.9.1 hat mit Parameter /r11 doch keine integrierte Mausbeschleunigung. Anscheinend hatte ich die Parameter nur mit v2.1b4 getestet. Also haben wir jetzt doch eine einfache Lösung für das Problem, CuteMouse 1.9.1 benutzen! :-)
Antworten