Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
7
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
Marco Trevisan
xserver
Commits
358d887c
Commit
358d887c
authored
Nov 01, 2002
by
Keith Packard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add support for ARM linux TS lib (disabled by default) in kdrive
parent
f0a8d06f
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
193 additions
and
1 deletion
+193
-1
hw/kdrive/linux/Imakefile
hw/kdrive/linux/Imakefile
+6
-1
hw/kdrive/linux/tslib.c
hw/kdrive/linux/tslib.c
+187
-0
No files found.
hw/kdrive/linux/Imakefile
View file @
358d887c
XCOMM $XConsortium: Imakefile /main/10 1996/12/02 10:20:33 lehors $
XCOMM $XFree86: xc/programs/Xserver/hw/kdrive/linux/Imakefile,v 1.
7
2001/
09/29 04:16:3
9 keithp Exp $
XCOMM $XFree86: xc/programs/Xserver/hw/kdrive/linux/Imakefile,v 1.
8
2001/
10/12 06:33:0
9 keithp Exp $
KDRIVE=..
#include "../Kdrive.tmpl"
#if TouchScreen
#if HasTsLib
TSSRCS = tslib.c
TSOBJS = tslib.o
#else
TSSRCS = ts.c
TSOBJS = ts.o
#endif
#endif
SRCS = keyboard.c linux.c mouse.c ps2.c bus.c ms.c agp.c $(TSSRCS)
...
...
hw/kdrive/linux/tslib.c
0 → 100644
View file @
358d887c
/*
* $XFree86$
* TSLIB based touchscreen driver for TinyX
* Derived from ts.c by Keith Packard
* Derived from ps2.c by Jim Gettys
*
* Copyright © 1999 Keith Packard
* Copyright © 2000 Compaq Computer Corporation
* Copyright © 2002 MontaVista Software Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
* the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation, and that the name of Keith Packard or Compaq not be used in
* advertising or publicity pertaining to distribution of the software without
* specific, written prior permission. Keith Packard and Compaq makes no
* representations about the suitability of this software for any purpose. It
* is provided "as is" without express or implied warranty.
*
* KEITH PACKARD AND COMPAQ DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
* SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS,
* IN NO EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
* the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation, and that the name of Michael Taht or MontaVista not be used in
* advertising or publicity pertaining to distribution of the software without
* specific, written prior permission. Michael Taht and Montavista make no
* representations about the suitability of this software for any purpose. It
* is provided "as is" without express or implied warranty.
*
* MICHAEL TAHT AND MONTAVISTA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
* SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS,
* IN NO EVENT SHALL EITHER BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
#define NEED_EVENTS
#include "X.h"
#include "Xproto.h"
#include "inputstr.h"
#include "scrnintstr.h"
#include "kdrive.h"
#include "Xpoll.h"
#include <sys/ioctl.h>
#include <tslib.h>
static
long
lastx
=
0
,
lasty
=
0
;
int
TsScreen
;
extern
int
TsFbdev
;
static
struct
tsdev
*
tsDev
=
NULL
;
void
TsRead
(
int
tsPort
,
void
*
closure
)
{
KdMouseInfo
*
mi
=
closure
;
int
fd
=
(
int
)
mi
->
driver
;
struct
ts_sample
event
;
int
n
;
long
pressure
;
long
x
,
y
;
unsigned
long
flags
;
unsigned
long
buttons
;
n
=
ts_read
(
tsDev
,
&
event
,
1
);
if
(
n
==
1
)
{
if
(
event
.
pressure
)
{
/*
* HACK ATTACK. (static global variables used !)
* Here we test for the touch screen driver actually being on the
* touch screen, if it is we send absolute coordinates. If not,
* then we send delta's so that we can track the entire vga screen.
*/
if
(
TsScreen
==
TsFbdev
)
{
flags
=
KD_BUTTON_1
;
x
=
event
.
x
;
y
=
event
.
y
;
}
else
{
flags
=
/* KD_BUTTON_1 |*/
KD_MOUSE_DELTA
;
if
((
lastx
==
0
)
||
(
lasty
==
0
))
{
x
=
0
;
y
=
0
;
}
else
{
x
=
event
.
x
-
lastx
;
y
=
event
.
y
-
lasty
;
}
lastx
=
event
.
x
;
lasty
=
event
.
y
;
}
}
else
{
flags
=
KD_MOUSE_DELTA
;
x
=
0
;
y
=
0
;
lastx
=
0
;
lasty
=
0
;
}
KdEnqueueMouseEvent
(
mi
,
flags
,
x
,
y
);
}
}
static
char
*
TsNames
[]
=
{
"/dev/ts"
,
"/dev/touchscreen/0"
,
};
#define NUM_TS_NAMES (sizeof (TsNames) / sizeof (TsNames[0]))
int
TsInputType
;
int
TslibInit
(
void
)
{
int
i
;
KdMouseInfo
*
mi
,
*
next
;
int
fd
=
0
;
int
n
=
0
;
if
(
!
TsInputType
)
TsInputType
=
KdAllocInputType
();
for
(
mi
=
kdMouseInfo
;
mi
;
mi
=
next
)
{
next
=
mi
->
next
;
if
(
mi
->
inputType
)
continue
;
if
(
!
mi
->
name
)
{
for
(
i
=
0
;
i
<
NUM_TS_NAMES
;
i
++
)
{
if
(
!
(
tsDev
=
ts_open
(
TsNames
[
i
],
0
)))
continue
;
ts_config
(
tsDev
);
fd
=
ts_fd
(
tsDev
);
if
(
fd
>=
0
)
{
mi
->
name
=
KdSaveString
(
TsNames
[
i
]);
break
;
}
}
}
if
(
fd
>
0
&&
tsDev
!=
0
)
{
mi
->
driver
=
(
void
*
)
fd
;
mi
->
inputType
=
TsInputType
;
if
(
KdRegisterFd
(
TsInputType
,
fd
,
TsRead
,
(
void
*
)
mi
))
n
++
;
}
else
if
(
fd
>
0
)
close
(
fd
);
}
}
void
TslibFini
(
void
)
{
KdMouseInfo
*
mi
;
KdUnregisterFds
(
TsInputType
,
TRUE
);
for
(
mi
=
kdMouseInfo
;
mi
;
mi
=
mi
->
next
)
{
if
(
mi
->
inputType
==
TsInputType
)
{
if
(
mi
->
driver
)
ts_close
(
tsDev
);
mi
->
driver
=
0
;
mi
->
inputType
=
0
;
}
}
}
KdMouseFuncs
TsFuncs
=
{
TslibInit
,
TslibFini
};
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment