Board index » delphi » Joystick-/Mouse -driver

Joystick-/Mouse -driver

Hallo,

wer von Euch hat schon mal einen Joystick- oder Mousetreiber
geschrieben?
Ich suche Infos ber die Erstellung von solchen Treibern.
Wer wei? wie die bergabeparameter zu setzen sind?
Ich ben?tige diese Infos fr meine Diplomarbeit.
Ich bekomme  Koordinatendaten (x,y,z; relativ; absolut) sowie die
Zust?nde der Tasten ber die serielle Schnittstelle geliefert und mu?
diese nun als Mouse- bzw. Joystickwerte weiterverarbeiten.

Im voraus schon Dank

Frank Eisenberg

EMail: Frank.Eisenb...@rz.ruhr-uni-bochum.de

 

Re:Joystick-/Mouse -driver


Quote
>Hallo,
>wer von Euch hat schon mal einen Joystick- oder Mousetreiber
>geschrieben?
>Ich suche Infos ber die Erstellung von solchen Treibern.
>Wer wei? wie die bergabeparameter zu setzen sind?
>Ich ben?tige diese Infos fr meine Diplomarbeit.
>Ich bekomme  Koordinatendaten (x,y,z; relativ; absolut) sowie die
>Zust?nde der Tasten ber die serielle Schnittstelle geliefert und mu?
>diese nun als Mouse- bzw. Joystickwerte weiterverarbeiten.
>Im voraus schon Dank
>Frank Eisenberg

Deutschland U"ber alles....

Type englis(c)h bitte!
    grthnx,
       Paeblow,
       leader of the -> Digital Decay Group <-
       p.h.j.kui...@student.utwente.nl

"School maakt meer kapot dan drank weer goed kan maken..."

Re:Joystick-/Mouse -driver


Quote
SAB-Student (s...@sabix.etdv.ruhr-uni-bochum.de) wrote:
> Hallo,

> wer von Euch hat schon mal einen Joystick- oder Mousetreiber
> geschrieben?
> Ich suche Infos ber die Erstellung von solchen Treibern.
> Wer wei? wie die bergabeparameter zu setzen sind?
> Ich ben?tige diese Infos fr meine Diplomarbeit.
> Ich bekomme  Koordinatendaten (x,y,z; relativ; absolut) sowie die
> Zust?nde der Tasten ber die serielle Schnittstelle geliefert und mu?
> diese nun als Mouse- bzw. Joystickwerte weiterverarbeiten.

Da das eine internationale Newsgroup ist, werde ich mal auf englisch
antworten.

(He asked for information about how to write a joystick or mouse driver.)

I haven't done this myself, but if you get Ralph Brown's interrupt
list (see this group's Mini-FAQ about where to get it), you can see
which interrupt services the driver has to provide and which registers
have to contain which values. At least for a mouse driver (int $33, if
I remember correctly); I don't know if joystick drivers use an interrupt,
too, but if so, it's certainly in the interrupt list.

--
Frank Heckenbach, Erlangen, Germany
heck...@mi.uni-erlangen.de
Turbo Pascal:   http://www.mi.uni-erlangen.de/~heckenb/programs.htm
Internet links: http://www.mi.uni-erlangen.de/~heckenb/links.htm

Re:Joystick-/Mouse -driver


Dies ist eine mehrteilige Nachricht im MIME-Format.

--------------CEE57476390
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit

Quote
SAB-Student wrote:

> Hallo,

> wer von Euch hat schon mal einen Joystick- oder Mousetreiber
> geschrieben?
> Ich suche Infos ber die Erstellung von solchen Treibern.
> Wer wei? wie die bergabeparameter zu setzen sind?
> Ich ben?tige diese Infos fr meine Diplomarbeit.
> Ich bekomme  Koordinatendaten (x,y,z; relativ; absolut) sowie die
> Zust?nde der Tasten ber die serielle Schnittstelle geliefert und mu?
> diese nun als Mouse- bzw. Joystickwerte weiterverarbeiten.

> Im voraus schon Dank

> Frank Eisenberg

> EMail: Frank.Eisenb...@rz.ruhr-uni-bochum.de

Hallo Frank,

es geht ber die sogennanten Dos interrupts. ber die Register werden
Parameter bergeben, dann wird ein Interrupt ausgel?st. Intr(Nr,Reg)
Dann stehen die Rckgabeparameter in den Registern. Der Datentyp
registers ist in der unit Dos vordefiniert.
Hier die Wichtigsten IRs fr die Maus:
Alle IRs haben die Nummer 33h, ber den Wert in Reg.AX werden die
Functionen ausgew?hlt.
AX=0 Reset des Maustreibers Return AX=0 no mouse
AX=1 Cursor zeigen
AX=2 Cursor weg
AX=3 Position ermitteln CX= Maus x, DX= y, BX=Kn?pfe
AX=4 Setze Maus auf CX=x, DX=y
Alle Parameter beziehen sich auf den virtuellen Mausbildschirm, der mit
AX=7 CX= x min, DX= x max, und AX=8 CX=y min, Dx= y max gesetzt wird.
Damit m?test Du schon mal klarkommen. Wenn noch fragen, dann E Mail
Joystick:
Da gibts nur zwei:
IR 15h, AH=84h, DX:=0, Status der Kn?pfe abfragen
        AL.7 Joy 1, Knopf 1
        AL.6 Joy 1, Knopf 2
        AL.5 Joy 2, Knopf 1
        AL.4 Joy 2, Knopf 2

IR 15h, AH:=84h, DX:=1 Joystick stellung
        AX Joy 1 x
        BX Joy 1 y
        CX Joy 2 x
        Dx Joy 2 y

So, nun h?nge ich noch meine Unit mauser dran.

Tomy

Tomy_Neum...@t-online.de
http://home.t-online.de/home/Tomy_Neumann

--------------CEE57476390
Content-Type: text/plain; charset=iso-8859-1; name="MAUSER.PAS"
Content-Transfer-Encoding: 8bit
Content-Disposition: inline; filename="MAUSER.PAS"

unit mauser;
interface
uses dos;
FUNCTION RESET_MOUSE:BOOLEAN;
PROCEDURE LEFT_BUTTON(VAR X,Y:WORD;VAR D:BOOLEAN);
PROCEDURE SHOW_MOUSE;
PROCEDURE HIDE_MOUSE;
PROCEDURE RANGE_MOUSE(X1,Y1,X2,Y2:WORD);
PROCEDURE WO_MOUSE (VAR X,Y:WORD);

IMPLEMENTATION
VAR REG:REGISTERS;
    VAR DUMMY_B:BOOLEAN;

FUNCTION RESET_MOUSE;
BEGIN
     reg.ax:=0;
     INTR($33,REG);
     IF REG.AX=0 THEN DUMMY_B:=FALSE ELSE DUMMY_B:=TRUE;
     RESET_MOUSE:=DUMMY_B;
END;

PROCEDURE LEFT_BUTTON(VAR X,Y:WORD;VAR D:BOOLEAN);
    BEGIN
         D:=FALSE;
         WITH REG DO BEGIN
              AX:=$05;
              BX:=0;
              INTR($33,REG);
              IF BX>0 THEN D:=TRUE;
              X:=CX;
              Y:=DX;
         END;
    END;

PROCEDURE SHOW_MOUSE;
BEGIN
     REG.AX:=1;
     INTR($33,REG);
END;

PROCEDURE HIDE_MOUSE;
BEGIN
     REG.AX:=2;
     INTR($33,REG);
END;

PROCEDURE RANGE_MOUSE(X1,Y1,X2,Y2:WORD);
BEGIN
     WITH REG DO BEGIN
          AX:=8;
          CX:=Y1;
          DX:=Y2;
          INTR($33,REG);
          AX:=7;
          CX:=X1;
          DX:=X2;
          INTR($33,REG);
     END;
END;

PROCEDURE WO_MOUSE (VAR X,Y:WORD);
BEGIN
     WITH REG DO BEGIN
          AX:=3;
          INTR($33,REG);
          Y:=CX;
          X:=DX;
     END;
END;
PROCEDURE INSTALL_RIGHT_BUTTOM(ASEG,AOFS:WORD);
BEGIN
     with reg do begin
          ax:=$0C;
          CX:=2;     {Linke Taste gedrckt}
          ES:=ASEG;
          DX:=AOFS;
          INTR($33,REG);
     end;
end;

END. {UNIT END}

--------------CEE57476390--

Other Threads