Maus in Linux-Konsole programmieren

jrx

Mitglied
Hallo zusammen,

im FPC2.0 ist ein unit Mouse dabei, was auch unter Linux laufen soll. In der Dokumentation habe ich das kleine Pogramm gefunden:
Code:
//testmouse.pas
uses mouse;
Var
	X,Y : Word ;
begin
	InitMouse ;
	Writeln('Move mouse cursor to square 10 ,10 to end ') ;
	showMouse;
	Repeat
		X:=GetMouseX ;
		Y:=GetMouseY ;
		Writeln ('X,Y= ( ',X, '  , ' ,Y, ' ) ' ) ;
	Until (X=9) and (Y=9) ;
	DoneMouse ;
end .
Nach fehlerfreier Compiltation, zeigt das Programm leider immer nur X,Y= (0,0) an. Eine Fehlermeldung gab es nicht. Ausprobiet habe ich es in der Konsole unter X.

Andere Mausunterstützte Progamme wie MC oder auch das Beispiel von Freevision laufen. Die Mausunterstützung in der Konsole ist also gegeben.

Kann mir bitte jemand einen Tip geben, wie ich die Maus in Betrieb nehmen kann.

Vielen Dank.
Jan-Rene'
 
Hallo MArc,

Danke für deine Antwort.
Leider ist die Hilfe für Dos, ich weiß nicht, ob das unter Linux so functioniert.

Die Sache brauch ich, um ein paar alte Dosenprogramme in der Linuxkonsole
wiederzubeleben und auch ein paar meiner Programme, die ich auch auf der Windows Kommandozeile laufen lasse, aufzupeppen.

Bei den DOS-Programmen müßte ich eigentlich nur meine eigene Maus.pas unit umbauen. Das heißt, ich würde gerne die $33 Geschichten mit den zugehörigen Befehlen aus dem genannten FPC unit ersetzen. Bei den andern Geschichten bin ich noch im Tastaturzeitalter.

Ich könnte natürlich mit Lazarus oder so was anfangen, kann und möchte ich aber aus verschiedenen Gründen nicht und Free Vision ist mir auch zu komplex (Zuviele "@^^[abs@]^.^msms")

Vielleicht krieg ich noch einen Tip?

Grüße Jan-Rene'
 
Hallo MArc,

ich verstehs immer noch nicht. :(
Ich dachte das Record TMouseDriver wird befüllt, wenn ich InitMouse aufrufe. Die Daten zieht sich der Compiler dann halt in Abhängigkeit des Ziel-Betriebssystems irgendwo aus den ganzen Quellen.

Die genannte Referenz läßt bei mir an dieser Stelle mehr Fragen offen als Antworten.
Bitte helft mir noch mehr auf die Sprünge. (Vielleicht auch mit 'nem Codeschnipselchen)

Jan-Rene'
 
Hi,

also ich hab sowas diesbezüglich noch nicht gemacht.
Aber rein Theoretisch müsstest du erst ein record anlegen, der auf die Maus zeigt und in diesem gibts dann attribute, (getMouseX -Y oder wie die hießen)
Und diese muss man dann stehts Aktualisieren via Schleife.

Ich schau's mir gleich an. Jetzt hast mein Interesse geweckt :)
Das wird geknackt :)

Gruss,
MArc
 
So ich wieder.

Habe das bisher hinbekommen:
Code:
program TestMouse;

uses  mouse;

type TMouseDriver = record
  UseDefaultQueue: Boolean;
  InitDriver: procedure;
  DoneDriver: procedure;
  DetectMouse: function: Byte; 
  ShowMouse: procedure;
  HideMouse: procedure;
  GetMouseX: function: Word;
  GetMouseY: function: Word;
  GetMouseButtons: function: Word;
  end;
Var
  X,Y : Word;
  MyMouse: TMouseDriver;
begin
  InitMouse;
  Writeln('Move mouse cursor to square 10,10 to end');
  MyMouse.showMouse;
  Repeat
    X:=MyMouse.GetMouseX;
    Y:=MyMouse.GetMouseY;
    Writeln('X,Y= (',X,',',Y,')');
  Until (X=9) and (Y=9);
end.

Ich habe irgendwie die falsche mouse.tpu erwischt. Kannst du mir schnell deine mal geben ?
Es kommt ein "Befehl oder Dateiname nicht gefunden" ^^

Gruss,
MArc
 
Hallo MArc,

diem Sache hat mir auch keine Ruhe gelassen.
Dein Code erzeugt bei mir auch einen Fehler

Free Pascal Compiler version 2.0.2 [2005/12/07] for i386
Copyright (c) 1993-2005 by Florian Klaempfl
Target OS: Linux for i386
Compiling /home/rene/pascal/bastel/calc/bin/v4/testmouse.pas
testmouse.pas(23,20) Warning: Variable "MyMouse" does not seem to be initialized
testmouse.pas(26,6) Error: Incompatible types: got "<procedure variable type of function:Word;Register>" expected "Word"
testmouse.pas(27,6) Error: Incompatible types: got "<procedure variable type of function:Word;Register>" expected "Word"
testmouse.pas(31,5) Fatal: There were 2 errors compiling module, stopping
testmouse.pas(31,5) Fatal: Compilation aborted
Error: /usr/bin/ppc386 returned an error exitcode (normal if you did not specify a source file to be compiled)

Ich habe nun noch mal "rumgefrickelt".
Code:
with Mymouse do Writeln(GetMouseX, GetMouseY);
Dann läßt sich alles compilieren.
Das Programm (welches sich nicht mal richtig beenden läßt, ich weiß) hat nun folgende Wirkung, daß an der Standardeingabe in Abhängigkeit von der Mausposition eine Zeichenfolge, immerhin kommt schon mal was raus.

rene@linux:~/pascal/bastel/> ./testmouse
rene@linux:~/pascal/bastel/> T%#T% J'#J' K'#K'
bash: T%#T%: command not found
rene@linux:~/pascal/bastel/> J$#6! W' I##H#

Ich glaube, wir müssen die Typumwandlung noch hinkriegen.
Brauchst du die Unit noch?

Jan-Rene'
 
Hi rene,

ja die Unit wäre durchaus mal nicht schlecht. Ich probier das dann gleich mal mit dieser aus.
Das kompilieren an sich, hat bei mir keinen Fehler gebracht. Hm, vielleicht liegs an der Unit.
Eigentlich ist das with das gleiche, wie "." Anweisung. Auch komisch.

Ich schätze, es liegt an dem Typ, wie du schon erwähnt hast.
Das ist schonmal gut, dass er jedesmal etwas anderes ausgibt.
Ersetz doch mal das "InitMouse" mit "InitDriver". Mal schauen was da dann rauskommt.
Die Funktion wird ja bereitgestellt von TMouseDriver.

Schickst du mir grad mal die Unit ?

Beste Grüße,
MArc
 
Hi MArc

die Datei hab' ich von da: /usr/lib/fpc/2.0.2/units/i386-linux/rtl
Die Quellen hab ich nicht installiert. In der Zipdatei ist die mouse.ppu und die mouse.o drin. Ich habe hoffentlich alles erwischt. Vielleicht ist ja die komplette Installation bei dir die bessere Wahl. Ich weiß ja nicht ob du DSL hast (NEID).

Das mit dem InitDriver habe ich schon gestern probiert, hatte bei mir aber keinen Effekt.
Wenn ich InitMouse auskommentiere, passiert gar nichts, wenn ich das Programm starte.

Wir haben auch schon 62 Hits, vielleicht kann mir ja jemand von der verehrten Leserschaft auch ein bischen auf die Sprünge helfen.

MArc, ich hoffe das klappt mit dem Attachment.

Ich hab die "Pestilenz" und geh jetzt ins Bett! Heute hab ich keinen Schneid zum probieren. Sorry.


Jan-Rene'
 

Anhänge

  • 24575attachment.zip
    6,7 KB · Aufrufe: 18
Zuletzt bearbeitet:

Neue Beiträge

Zurück