mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-11 13:09:43 +02:00
+ gpm unit
This commit is contained in:
parent
8c52e10620
commit
6d3f27253d
@ -77,7 +77,7 @@ UNITOBJECTS=$(SYSTEMUNIT) objpas strings \
|
||||
dos crt objects printer graph \
|
||||
sysutils typinfo math \
|
||||
cpu mmx getopts heaptrc \
|
||||
errors sockets ipc
|
||||
errors sockets gpm ipc
|
||||
|
||||
# Unit Objects Which are placed in libfpc.so
|
||||
SHAREDLIBUNITOBJECTS=$(SYSTEMUNIT) objpas strings \
|
||||
@ -85,7 +85,7 @@ SHAREDLIBUNITOBJECTS=$(SYSTEMUNIT) objpas strings \
|
||||
dos crt objects printer \
|
||||
sysutils typinfo math \
|
||||
cpu mmx getopts heaptrc \
|
||||
errors sockets ipc
|
||||
errors sockets gpm ipc
|
||||
|
||||
|
||||
#####################################################################
|
||||
@ -293,7 +293,10 @@ ipc$(PPUEXT) : ipc.pp linux$(PPUEXT) $(SYSTEMPPU)
|
||||
|
||||
#
|
||||
# $Log$
|
||||
# Revision 1.28 1999-06-03 09:36:32 peter
|
||||
# Revision 1.29 1999-07-01 19:39:42 peter
|
||||
# + gpm unit
|
||||
#
|
||||
# Revision 1.28 1999/06/03 09:36:32 peter
|
||||
# * first things for sharedlib to work again
|
||||
#
|
||||
# Revision 1.27 1999/05/28 11:28:30 peter
|
||||
|
215
rtl/linux/gpm.pp
Normal file
215
rtl/linux/gpm.pp
Normal file
@ -0,0 +1,215 @@
|
||||
{
|
||||
$Id$
|
||||
This file is part of the Free Pascal run time library.
|
||||
Copyright (c) 1999 by Peter Vreman
|
||||
|
||||
GPM (>v1.17) mouse Interface for linux
|
||||
|
||||
See the file COPYING.FPC, included in this distribution,
|
||||
for details about the copyright.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY;without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
**********************************************************************}
|
||||
unit gpm;
|
||||
interface
|
||||
uses
|
||||
linux;
|
||||
|
||||
{$linklib gpm}
|
||||
{$linklib c}
|
||||
|
||||
const
|
||||
_PATH_VARRUN = '/var/run/';
|
||||
_PATH_DEV = '/dev/';
|
||||
GPM_NODE_DIR = _PATH_VARRUN;
|
||||
GPM_NODE_DIR_MODE = 0775;
|
||||
GPM_NODE_PID = '/var/run/gpm.pid';
|
||||
GPM_NODE_DEV = '/dev/gpmctl';
|
||||
GPM_NODE_CTL = GPM_NODE_DEV;
|
||||
GPM_NODE_FIFO = '/dev/gpmdata';
|
||||
|
||||
GPM_B_LEFT = 4;
|
||||
GPM_B_MIDDLE = 2;
|
||||
GPM_B_RIGHT = 1;
|
||||
|
||||
type
|
||||
TGpmEtype = longint;
|
||||
TGpmMargin = longint;
|
||||
|
||||
const
|
||||
GPM_MOVE = 1;
|
||||
GPM_DRAG = 2;
|
||||
GPM_DOWN = 4;
|
||||
GPM_UP = 8;
|
||||
GPM_SINGLE = 16;
|
||||
GPM_DOUBLE = 32;
|
||||
GPM_TRIPLE = 64;
|
||||
GPM_MFLAG = 128;
|
||||
GPM_HARD = 256;
|
||||
GPM_ENTER = 512;
|
||||
GPM_LEAVE = 1024;
|
||||
|
||||
GPM_TOP = 1;
|
||||
GPM_BOT = 2;
|
||||
GPM_LFT = 4;
|
||||
GPM_RGT = 8;
|
||||
|
||||
type
|
||||
{$PACKRECORDS 4}
|
||||
PGpmEvent = ^TGpmEvent;
|
||||
TGpmEvent = record
|
||||
buttons : byte;
|
||||
modifiers : byte;
|
||||
vc : word;
|
||||
dx : integer;
|
||||
dy : integer;
|
||||
x : integer;
|
||||
y : integer;
|
||||
wdx : integer;
|
||||
wdy : integer;
|
||||
EventType : TGpmEType;
|
||||
clicks : longint;
|
||||
margin : TGpmMargin;
|
||||
end;
|
||||
|
||||
TGpmHandler=function(var event:TGpmEvent;clientdata:pointer):longint;cdecl;
|
||||
|
||||
const
|
||||
GPM_MAGIC = $47706D4C;
|
||||
|
||||
type
|
||||
PGpmConnect = ^TGpmConnect;
|
||||
TGpmConnect = record
|
||||
eventMask : word;
|
||||
defaultMask : word;
|
||||
minMod : word;
|
||||
maxMod : word;
|
||||
pid : longint;
|
||||
vc : longint;
|
||||
end;
|
||||
|
||||
PGpmRoi = ^TGpmRoi;
|
||||
TGpmRoi = record
|
||||
xMin : integer;
|
||||
xMax : integer;
|
||||
yMin : integer;
|
||||
yMax : integer;
|
||||
minMod : word;
|
||||
maxMod : word;
|
||||
eventMask : word;
|
||||
owned : word;
|
||||
handler : TGpmHandler;
|
||||
clientdata : pointer;
|
||||
prev : PGpmRoi;
|
||||
next : PGpmRoi;
|
||||
end;
|
||||
|
||||
var
|
||||
gpm_flag : longint;cvar;external;
|
||||
gpm_ctlfd : longint;cvar;external;
|
||||
gpm_fd : longint;cvar;external;
|
||||
gpm_hflag : longint;cvar;external;
|
||||
gpm_morekeys : Longbool;cvar;external;
|
||||
gpm_zerobased : Longbool;cvar;external;
|
||||
gpm_visiblepointer : Longbool;cvar;external;
|
||||
gpm_mx : longint;cvar;external;
|
||||
gpm_my : longint;cvar;external;
|
||||
gpm_timeout : TTimeVal;cvar;external;
|
||||
_gpm_buf : array[0..0] of char;cvar;external;
|
||||
_gpm_arg : ^word;cvar;external;
|
||||
gpm_handler : TGpmHandler;cvar;external;
|
||||
gpm_data : pointer;cvar;external;
|
||||
gpm_roi_handler : TGpmHandler;cvar;external;
|
||||
gpm_roi_data : pointer;cvar;external;
|
||||
gpm_roi : PGpmRoi;cvar;external;
|
||||
gpm_current_roi : PGpmRoi;cvar;external;
|
||||
gpm_consolefd : longint;cvar;external;
|
||||
Gpm_HandleRoi : TGpmHandler;cvar;external;
|
||||
|
||||
function Gpm_StrictSingle(EventType : longint) : boolean;
|
||||
function Gpm_AnySingle(EventType : longint) : boolean;
|
||||
function Gpm_StrictDouble(EventType : longint) : boolean;
|
||||
function Gpm_AnyDouble(EventType : longint) : boolean;
|
||||
function Gpm_StrictTriple(EventType : longint) : boolean;
|
||||
function Gpm_AnyTriple(EventType : longint) : boolean;
|
||||
|
||||
function Gpm_Open(var _para1:TGpmConnect; _para2:longint):longint;cdecl;external;
|
||||
function Gpm_Close:longint;cdecl;external;
|
||||
function Gpm_GetEvent(var _para1:TGpmEvent):longint;cdecl;external;
|
||||
{function Gpm_Getc(_para1:pFILE):longint;cdecl;external;
|
||||
function Gpm_Getchar : longint;}
|
||||
function Gpm_Repeat(millisec:longint):longint;cdecl;external;
|
||||
function Gpm_FitValuesM(var x,y:longint; margin:longint):longint;cdecl;external;
|
||||
function Gpm_FitValues(var x,y:longint):longint;cdecl;external;
|
||||
|
||||
{
|
||||
function GPM_DRAWPOINTER(ePtr : longint) : longint;
|
||||
}
|
||||
|
||||
function Gpm_PushRoi(x1:longint; y1:longint; X2:longint; Y2:longint; mask:longint; fun:TGpmHandler; xtradata:pointer):PGpmRoi;cdecl;external;
|
||||
function Gpm_PopRoi(which:PGpmRoi):PGpmRoi;cdecl;external;
|
||||
function Gpm_RaiseRoi(which:PGpmRoi; before:PGpmRoi):PGpmRoi;cdecl;external;
|
||||
function Gpm_LowerRoi(which:PGpmRoi; after:PGpmRoi):PGpmRoi;cdecl;external;
|
||||
|
||||
{function Gpm_Wgetch:longint;cdecl;external;
|
||||
function Gpm_Getch:longint;}
|
||||
|
||||
function Gpm_GetLibVersion(var where:longint):pchar;cdecl;external;
|
||||
function Gpm_GetServerVersion(var where:longint):pchar;cdecl;external;
|
||||
function Gpm_GetSnapshot(var ePtr:TGpmEvent):longint;cdecl;external;
|
||||
|
||||
|
||||
implementation
|
||||
|
||||
function Gpm_StrictSingle(EventType : longint) : boolean;
|
||||
begin
|
||||
Gpm_StrictSingle:=(EventType and GPM_SINGLE<>0) and not(EventType and GPM_MFLAG<>0);
|
||||
end;
|
||||
|
||||
function Gpm_AnySingle(EventType : longint) : boolean;
|
||||
begin
|
||||
Gpm_AnySingle:=(EventType and GPM_SINGLE<>0);
|
||||
end;
|
||||
|
||||
function Gpm_StrictDouble(EventType : longint) : boolean;
|
||||
begin
|
||||
Gpm_StrictDouble:=(EventType and GPM_DOUBLE<>0) and not(EventType and GPM_MFLAG<>0);
|
||||
end;
|
||||
|
||||
function Gpm_AnyDouble(EventType : longint) : boolean;
|
||||
begin
|
||||
Gpm_AnyDouble:=(EventType and GPM_DOUBLE<>0);
|
||||
end;
|
||||
|
||||
function Gpm_StrictTriple(EventType : longint) : boolean;
|
||||
begin
|
||||
Gpm_StrictTriple:=(EventType and GPM_TRIPLE<>0) and not(EventType and GPM_MFLAG<>0);
|
||||
end;
|
||||
|
||||
function Gpm_AnyTriple(EventType : longint) : boolean;
|
||||
begin
|
||||
Gpm_AnyTriple:=(EventType and GPM_TRIPLE<>0);
|
||||
end;
|
||||
|
||||
procedure Gpm_CheckVersion;
|
||||
var
|
||||
l : longint;
|
||||
begin
|
||||
Gpm_GetLibVersion(l);
|
||||
if l<11700 then
|
||||
begin
|
||||
writeln('You need at least gpm 1.17');
|
||||
halt(1);
|
||||
end;
|
||||
end;
|
||||
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.1 1999-07-01 19:39:43 peter
|
||||
+ gpm unit
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user