Maus in Linux-Konsole programmieren

Hallo rene,

ich glaube ich habe es geschaft.
Habe viel gelesen und viel gefummelt. Nun ist es 6 vor 12Uhr und ich geh Schlafen.
Bei mir funktioniert es, ganz ohne mouse unit.

Hier mal der Code
Code:
program TestMouse_3;

uses DOS;

var
 Reg: Registers;

function GetMouseY:word;
begin
  Reg.AX:=3;
  Intr($33,Reg);
  GetMouseY := Reg.DX;
end;

function GetMouseX:word;
begin
  Reg.AX:=3;
  Intr($33,Reg);
  GetMouseX := Reg.CX;
end;
 
BEGIN
  repeat
    write(GetMouseX);
    write(' / ');
    writeln(GetMouseY);
  until (GetMouseX = 8) and (GetMouseY = 8);
  
end.

Die Funktionen greifen jeweils direkt auf die Maus zu und lesen die Werte aus.
Probier es doch bitte aus, und berichte :)

Gruss,
MArc

P.S.: Ich habe auch erst vor kurzen DSL bekommen :P
 
Zuletzt bearbeitet:
Hallo MArc

Ich habs ausprobiert:
...da bin ich wieder da, wo ich angefangen, Anzeige nur 0,0 unter Linux Suse 9.2

Unter Window geht keine unserer Varianten, nicht mal die etwas hoffnungsvollere.
schau'ma'ma

Jan-René
 
Hi Jan-René,

welchen Komilier benutzt du denn?
Also bei funktioniert diese Code den ich oben gepostet habe einwandfrei.
Die Koordinaten werden richtig angezeigt.

Gruss,
MArc
 
Hallo.
Ich habe da eine frage zu eurer Vorgehensweise:
Ihr wollt einen Maustreiber für Linux programmieren, ist das richtig?
Weshalb steht im vorletzten Beitrag "uses DOS" ?
Werdet ihr eine .exe aus der Pascal-Datei erstellen?
Warum nutzt ihr überhaupt Pascal für solche Dinge?

Danke.
 
Hallo chrysler,

ja, wir wollen es hinbekommen die Koordinaten der Maus herauszubekommen mithilfe von Pascal. Es wird "DOS" benötigt, damit bei mir der runtime Fehler nichtmehr erscheint :-)
Ja, es wird eine *.exe Datei erstellt durch das kompilieren.
Wieso jan-rené, pascal benutzten möchte, steht im ersten Post.

Nachtrag: Bei Linux wird eine andere Datei erstellt, also keine *.exe.

Gruss,
MArc
 
Hallo Chrysler,

das Ziel hab ich schon mal formuliert. Ich will Konsolenprogramme mit Mausunterstützung schreiben bzw. alte Dos-Programme reaktivieren, die unter Linux in der Konsole und auch in der WindowsXP-Kommandozeilen laufen.

Man könnte ja dafür auch Lazarus/GTK oder so was nehmen. Das ist mir aber zu komplex und auf den Windowsrechnern, wo ich Programme manchmal nutzen will, gibts keine GTK.DLL's, weil die Firmen-IT paranoid ist und die Chefs glauben, daß das Excel-Word-SAP-Geschlumpse ausreichend ist.

Wenn ich dafür unit DOS einbinden muß, damit es geht, warum nicht. Namen sind Schall und Rauch.

Ich glaube aber daß ich ohne auskomme, wenn ich den Ordinalwert, wie auch immer, aus dem MyMouse.GetMouseX rauskriege. Wieso gibt GetmouseX Datensalat wieder, obwohl das als Functionsergebnis Word sein sollte.
Vielleicht kannst du mir einen Tipp geben. Irgendwie komme ich nicht weiter,
mit Try&Error bin ich am Ende.

Wenn das mir den Registerzugriffen unter Linux geht, könnte ich mich auch damit anfreunden. Mich wundert aber, daß das geht, weil in RTL.pfd drinsteht: "Remark: Under non-dos operating systems, this call does nothing. On DOS systems, this calls interrupt $21."

Jan-Rene'
 
Hallo zusammen,

bin nicht weiter gekommen, mach Schluß.
Es lebe die Kommandozeile.

Wenn ichs doch noch rauskriege, gibts hier Message

Grüße Jan-Rene'
 
Zurück