Okay, so I assume that you're looking for a textmode Windows console mouse unit under FPC.

The best solution is to use a native fpc unit, I don't know why it doesn't work for you, but you may find the answer at FPC community site. Unit's reference with examples is here.

If it still doesn't work, try this code:
[pascal]unit MouseUnit;

interface

Procedure ShowCursor; Assembler;
Procedure HideCursor; Assembler;

Procedure GetStatus(Var X, Y, ButtonStatus :Integer);
{ usage:
var x, y, button : integer;

GetStatus(x, y, button);

This procedure will return mouse position in x,y and
with button is pressed (0 - left, 1 - middle, 2 - right)
}

Procedure DefineHRange(Min, Max :Integer); Assembler;
Procedure DefineVRange(Min, Max :Integer); Assembler;
Procedure MouseRange(X1, Y1, X2, Y2 :Integer);
Function MouseIn(X1, Y1, X2, Y2 :Integer) :Boolean; // checks if mouse is in given area
Procedure SetSensivity(Hor, Ver :Integer); Assembler;
Procedure GetSensivity(Var Hor, Ver :Integer);
Procedure SetPosition(X, Y :Integer); Assembler;

implementation

Procedure ShowCursor; Assembler;
Asm
mov ax, 0001h
int 33h
End;

Procedure HideCursor; Assembler;
Asm
mov ax, 0002h
int 33h
End;

Procedure GetStatus(Var X, Y, ButtonStatus :Integer);
Var Temp1, Temp2, Temp3 :Word;
Begin
Asm
mov ax, 0003h
int 33h
mov Temp1, bx
mov Temp2, cx
mov Temp3, dx
End;
ButtonStatus := Temp1;
X := Temp2;
Y := Temp3;
End;

Procedure DefineHRange(Min, Max :Integer); Assembler;
Asm
mov ax, 0007h
mov cx, Min
mov dx, Max
int 33h
End;

Procedure DefineVRange(Min, Max :Integer); Assembler;
Asm
mov ax, 0008h
mov cx, Min
mov dx, Max
int 33h;
End;

Procedure MouseRange(X1, Y1, X2, Y2 :Integer);
Begin
DefineHRange(X1,X2);
DefineVRange(Y1,Y2);
End;

Function MouseIn(X1, Y1, X2, Y2 :Integer) :Boolean;
Var
MouseStatus, PosX, PosY :Integer;
Begin
GetStatus(PosX,PosY,MouseStatus);
If (PosX >= X1) And (PosX <X2>= Y1) And (PosY <= Y2) Then MouseIn := True Else MouseIn := False;
End;

Procedure SetSensivity(Hor, Ver :Integer); Assembler;
Asm
mov ax, 001Ah
mov bx, Hor
mov cx, Ver
mov dx, 0
int 33h
End;

Procedure GetSensivity(Var Hor, Ver :Integer);
Var Temp1, Temp2 :Word;
Begin
Asm
mov ax, 001Bh
int 33h
mov Temp1, bx
mov Temp2, cx
End;
Hor := Temp1;
Ver := Temp2;
End;

Procedure SetPosition(X, Y :Integer); Assembler;
Asm
mov ax, 0004h
mov cx, x
mov dx, y
int 33h
End;

end.
[/pascal]

To make it workable you'll have to switch from AT&T to Intel style assembler via options/compiler/assembler (if it's pure FPC). Haven't used it for ages, but maybe it'll help you.