aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/programs/Xserver/hw/sunLynx
diff options
context:
space:
mode:
Diffstat (limited to 'nx-X11/programs/Xserver/hw/sunLynx')
-rw-r--r--nx-X11/programs/Xserver/hw/sunLynx/Imakefile78
-rw-r--r--nx-X11/programs/Xserver/hw/sunLynx/btreg.h81
-rw-r--r--nx-X11/programs/Xserver/hw/sunLynx/btvar.h74
-rw-r--r--nx-X11/programs/Xserver/hw/sunLynx/cgsixreg.h206
-rw-r--r--nx-X11/programs/Xserver/hw/sunLynx/fbio.h186
-rw-r--r--nx-X11/programs/Xserver/hw/sunLynx/patch.Console428
-rw-r--r--nx-X11/programs/Xserver/hw/sunLynx/patch.Console-2.4.0493
-rw-r--r--nx-X11/programs/Xserver/hw/sunLynx/sun.h486
-rw-r--r--nx-X11/programs/Xserver/hw/sunLynx/sunLyCfb.c372
-rw-r--r--nx-X11/programs/Xserver/hw/sunLynx/sunLyFbs.c292
-rw-r--r--nx-X11/programs/Xserver/hw/sunLynx/sunLyInit.c648
-rw-r--r--nx-X11/programs/Xserver/hw/sunLynx/sunLyIo.c389
-rw-r--r--nx-X11/programs/Xserver/hw/sunLynx/sunLyKbd.c1080
-rw-r--r--nx-X11/programs/Xserver/hw/sunLynx/sunLyMouse.c649
-rw-r--r--nx-X11/programs/Xserver/hw/sunLynx/sunLyUtil.c509
-rw-r--r--nx-X11/programs/Xserver/hw/sunLynx/vuid_event.h88
16 files changed, 0 insertions, 6059 deletions
diff --git a/nx-X11/programs/Xserver/hw/sunLynx/Imakefile b/nx-X11/programs/Xserver/hw/sunLynx/Imakefile
deleted file mode 100644
index e7e8e916c..000000000
--- a/nx-X11/programs/Xserver/hw/sunLynx/Imakefile
+++ /dev/null
@@ -1,78 +0,0 @@
-XCOMM $Xorg: Imakefile,v 1.3 2000/08/17 19:48:36 cpqbld Exp $
-
-
-
-XCOMM $XFree86: xc/programs/Xserver/hw/sunLynx/Imakefile,v 3.1 1996/12/27 06:51:30 dawes Exp $
-
-#include <Server.tmpl>
-
-SRCS1 = sunLyInit.c \
- sunLyIo.c \
- sunLyUtil.c \
- sunLyMouse.c\
- sunLyCfb.c \
- sunLyFbs.c \
- sunLyKbd.c \
- sunCursor.c \
- sunMfb.c \
- sunGX.c \
- sunKeyMap.c
-
-XCOMM SRCS = $(SRCS1) kbd_mode.c constype.c
-SRCS = $(SRCS1)
-
-#if XsunLynxMonoServer
-OFILES = sunInitMono.o sunInExMono.o
-#endif
-
-OBJS = sunLyInit.o \
- sunLyIo.o \
- sunLyUtil.o \
- sunLyMouse.o\
- sunLyCfb.o \
- sunLyFbs.o \
- sunLyKbd.o \
- sunCursor.o \
- sunMfb.o \
- sunGX.o \
- sunKeyMap.o
-
- INCLUDES = -I. -I../.. -I../../mi -I../../mfb -I../../cfb -I../../cfb32 \
- -I../../include -I../../os -I$(XINCLUDESRC) -I$(FONTINCSRC)
- LINTLIBS = ../../dix/llib-ldix.ln ../../os/llib-los.ln \
- ../mfb/llib-lmfb.ln ../mi/llib-lmi.ln ../cfb/llib-lcfb.ln
-
-NormalLibraryObjectRule()
-
-XCOMM all:: $(OFILES) kbd_mode constype
-all:: $(OFILES)
-
-lintlib:
-
-NormalLibraryTarget(sun,$(OBJS))
-NormalLintTarget($(SRCS1))
-
-sunInExMono.o: $(ICONFIGFILES)
-ObjectFromSpecialSource(sunInExMono,../../mi/miinitext,$(EXT_DEFINES) -UXIEEXT -UPEXEXT -UXF86VIDMODE)
-ObjectFromSpecialSource(sunInitMono,sunLyInit,-DSUNMAXDEPTH=1)
-
-#if 0
-SingleProgramTarget(kbd_mode, kbd_mode.o,,)
-SingleProgramTarget(constype, constype.o,,)
-InstallProgram(kbd_mode,$(BINDIR))
-InstallProgram(constype,$(BINDIR))
-InstallManPage(kbd_mode,$(MANDIR))
-InstallManPage(constype,$(MANDIR))
-InstallManPage(Xsun,$(MANDIR))
-InstallManPageAliases(Xsun,$(MANDIR),XsunMono)
-#endif
-
-LinkSourceFile(sunGX.h,../sun)
-LinkSourceFile(circleset.h,../sun)
-ObjectFromSpecialSource(sunKeyMap,../sun/sunKeyMap,/**/)
-ObjectFromSpecialSource(sunMfb,../sun/sunMfb,/**/)
-ObjectFromSpecialSource(sunGX,../sun/sunGX,/**/)
-ObjectFromSpecialSource(sunCursor,../sun/sunCursor,/**/)
-
-DependTarget()
-
diff --git a/nx-X11/programs/Xserver/hw/sunLynx/btreg.h b/nx-X11/programs/Xserver/hw/sunLynx/btreg.h
deleted file mode 100644
index cca573cc6..000000000
--- a/nx-X11/programs/Xserver/hw/sunLynx/btreg.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/* $Xorg: btreg.h,v 1.3 2000/08/17 19:48:36 cpqbld Exp $ */
-/*
- * Copyright (c) 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This software was developed by the Computer Systems Engineering group
- * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
- * contributed to Berkeley.
- *
- * All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Lawrence Berkeley Laboratory.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)btreg.h 8.2 (Berkeley) 1/21/94
- */
-/* $NetBSD: btreg.h,v 1.2 1994/11/20 20:51:55 deraadt Exp $ */
-/* $XFree86: xc/programs/Xserver/hw/sunLynx/btreg.h,v 3.1 1996/12/27 06:51:31 dawes Exp $ */
-
-/*
- * Several Sun color frame buffers use some kind of Brooktree video
- * DAC (e.g., the Bt458, -- in any case, Brooktree make the only
- * decent color frame buffer chips).
- *
- * Color map control on these is a bit funky in a SPARCstation.
- * To update the color map one would normally do byte writes, but
- * the hardware takes longword writes. Since there are three
- * registers for each color map entry (R, then G, then B), we have
- * to set color 1 with a write to address 0 (setting 0's R/G/B and
- * color 1's R) followed by a second write to address 1 (setting
- * color 1's G/B and color 2's R/G). Software must therefore keep
- * a copy of the current map.
- *
- * The colormap address register increments automatically, so the
- * above write is done as:
- *
- * bt->bt_addr = 0;
- * bt->bt_cmap = R0G0B0R1;
- * bt->bt_cmap = G1B1R2G2;
- * ...
- *
- * Yow!
- *
- * Bonus complication: on the cg6, only the top 8 bits of each 32 bit
- * register matter, even though the cg3 takes all the bits from all
- * bytes written to it.
- */
-struct bt_regs {
- u_int bt_addr; /* map address register */
- u_int bt_cmap; /* colormap data register */
- u_int bt_ctrl; /* control register */
- u_int bt_omap; /* overlay (cursor) map register */
-};
diff --git a/nx-X11/programs/Xserver/hw/sunLynx/btvar.h b/nx-X11/programs/Xserver/hw/sunLynx/btvar.h
deleted file mode 100644
index 054df6f87..000000000
--- a/nx-X11/programs/Xserver/hw/sunLynx/btvar.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/* $Xorg: btvar.h,v 1.3 2000/08/17 19:48:36 cpqbld Exp $ */
-/*
- * Copyright (c) 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This software was developed by the Computer Systems Engineering group
- * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
- * contributed to Berkeley.
- *
- * All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Lawrence Berkeley Laboratory.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)btvar.h 8.2 (Berkeley) 1/21/94
- */
-/* $NetBSD: btvar.h,v 1.2 1994/11/20 20:51:56 deraadt Exp $ */
-/* $XFree86: xc/programs/Xserver/hw/sunLynx/btvar.h,v 3.1 1996/12/27 06:51:32 dawes Exp $ */
-
-/*
- * Brooktree color frame buffer state variables (see btreg.h).
- *
- * Unfortunately, remarkably little code can be shared between the
- * cg3 and cg6 drivers here, as the cg3 registers do longword-ops
- * `as expected', but the cg6 ones use only the upper byte.
- *
- * Still, the software color map manipulation is not completely trivial.
- */
-union bt_cmap {
- u_char cm_map[256][3]; /* 256 R/G/B entries */
- u_int cm_chip[256 * 3 / 4]; /* the way the chip gets loaded */
-};
-
-/*
- * Routines in bt_subr.c.
- */
-int bt_getcmap __P((struct fbcmap *, union bt_cmap *, int));
-int bt_putcmap __P((struct fbcmap *, union bt_cmap *, int));
-
-/*
- * Compute (x / 4) * 3 and (x / 4) * 4. These are used in turning
- * RGB indices (which are in multiples of three) into `chip RGB' values
- * (which are in multiples of four).
- */
-#define BT_D4M3(x) ((((x) >> 2) << 1) + ((x) >> 2)) /* (x / 4) * 3 */
-#define BT_D4M4(x) ((x) & ~3) /* (x / 4) * 4 */
diff --git a/nx-X11/programs/Xserver/hw/sunLynx/cgsixreg.h b/nx-X11/programs/Xserver/hw/sunLynx/cgsixreg.h
deleted file mode 100644
index 0c44c2a58..000000000
--- a/nx-X11/programs/Xserver/hw/sunLynx/cgsixreg.h
+++ /dev/null
@@ -1,206 +0,0 @@
-/* $Xorg: cgsixreg.h,v 1.3 2000/08/17 19:48:36 cpqbld Exp $ */
-/*
- * Copyright (c) 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This software was developed by the Computer Systems Engineering group
- * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
- * contributed to Berkeley.
- *
- * All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Lawrence Berkeley Laboratory.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)cgsixreg.h 8.4 (Berkeley) 1/21/94
- */
-/* $NetBSD: cgsixreg.h,v 1.3 1994/11/20 20:52:00 deraadt Exp $ */
-/* $XFree86: xc/programs/Xserver/hw/sunLynx/cgsixreg.h,v 3.1 1996/12/27 06:51:33 dawes Exp $ */
-
-/*
- * CG6 display registers. (Note, I got tired of writing `cgsix' about
- * halfway through and changed everything to cg6, but I probably missed
- * some. Unfortunately, the way config works, we need to spell out `six'
- * in some places anyway.)
- *
- * The cg6 is a complicated beastie. We have been unable to extract any
- * documentation and most of the following are guesses based on a limited
- * amount of reverse engineering.
- *
- * A cg6 is composed of numerous groups of control registers, all with TLAs:
- * FBC - frame buffer control?
- * FHC - fbc hardware configuration / control? register (32 bits)
- * DHC - ???
- * TEC - transform engine control?
- * THC - TEC Hardware Configuration
- * ROM - a 64Kbyte ROM with who knows what in it.
- * colormap - see below
- * frame buffer memory (video RAM)
- * possible other stuff
- *
- * Like the cg3, the cg6 uses a Brooktree Video DAC (see btreg.h).
- *
- * Various revisions of the cgsix have various hardware bugs. So far,
- * we have only seen rev 1 & 2.
- */
-
-/* bits in FHC register */
-#define FHC_FBID_MASK 0xff000000 /* bits 24..31 are frame buffer ID */
-#define FHC_FBID_SHIFT 24
-#define FHC_REV_MASK 0x00f00000 /* bits 20..23 are revision */
-#define FHC_REV_SHIFT 20
-#define FHC_FROP_DISABLE 0x00080000 /* disable fast/font? rasterops */
-#define FHC_ROW_DISABLE 0x00040000 /* ??? */
-#define FHC_SRC_DISABLE 0x00020000 /* ??? */
-#define FHC_DST_DISABLE 0x00010000 /* disable destination cache */
-#define FHC_RESET 0x00008000 /* ??? */
-#define FHC_XXX0 0x00004000 /* ??? */
-#define FHC_LEBO 0x00002000 /* set little endian byte order? */
-#define FHC_RES_MASK 0x00001800 /* bits 11&12 are resolution */
-#define FHC_RES_1024 0x00000000 /* res = 1024x768 */
-#define FHC_RES_1152 0x00000800 /* res = 1152x900 */
-#define FHC_RES_1280 0x00001000 /* res = 1280x1024 */
-#define FHC_RES_1600 0x00001800 /* res = 1600x1200 */
-#define FHC_CPU_MASK 0x00000600 /* bits 9&10 are cpu type */
-#define FHC_CPU_SPARC 0x00000000 /* cpu = sparc */
-#define FHC_CPU_68020 0x00000200 /* cpu = 68020 */
-#define FHC_CPU_386 0x00000400 /* cpu = 80386 */
-#define FHC_CPU_XXX 0x00000600 /* ??? */
-#define FHC_TEST 0x00000100 /* ??? test window ??? */
-#define FHC_TESTX_MASK 0x000000f0 /* bits 4..7 are test window X */
-#define FHC_TESTX_SHIFT 4
-#define FHC_TESTY_MASK 0x0000000f /* bits 0..3 are test window Y */
-#define FHC_TESTY_SHIFT 0
-
-/*
- * The layout of the THC.
- */
-struct cg6_thc {
- u_int thc_xxx0[512]; /* ??? */
- u_int thc_hsync1; /* horizontal sync timing */
- u_int thc_hsync2; /* more hsync timing */
- u_int thc_hsync3; /* yet more hsync timing */
- u_int thc_vsync1; /* vertical sync timing */
- u_int thc_vsync2; /* only two of these */
- u_int thc_refresh; /* refresh counter */
- u_int thc_misc; /* miscellaneous control & status */
- u_int thc_xxx1[56]; /* ??? */
- u_int thc_cursxy; /* cursor x,y position (16 bits each) */
- u_int thc_cursmask[32]; /* cursor mask bits */
- u_int thc_cursbits[32]; /* what to show where mask enabled */
-};
-
-/* bits in thc_misc */
-#define THC_MISC_XXX0 0xfff00000 /* unused */
-#define THC_MISC_REVMASK 0x000f0000 /* cg6 revision? */
-#define THC_MISC_REVSHIFT 16
-#define THC_MISC_XXX1 0x0000e000 /* unused */
-#define THC_MISC_RESET 0x00001000 /* ??? */
-#define THC_MISC_XXX2 0x00000800 /* unused */
-#define THC_MISC_VIDEN 0x00000400 /* video enable */
-#define THC_MISC_SYNC 0x00000200 /* not sure what ... */
-#define THC_MISC_VSYNC 0x00000100 /* ... these really are */
-#define THC_MISC_SYNCEN 0x00000080 /* sync enable */
-#define THC_MISC_CURSRES 0x00000040 /* cursor resolution */
-#define THC_MISC_INTEN 0x00000020 /* v.retrace intr enable */
-#define THC_MISC_INTR 0x00000010 /* intr pending / ack bit */
-#define THC_MISC_XXX 0x0000000f /* ??? */
-
-/* cursor x / y position value for `off' */
-#define THC_CURSOFF (65536-32) /* i.e., USHRT_MAX+1-32 */
-
-/*
- * Partial description of TEC (needed to get around FHC rev 1 bugs).
- */
-struct cg6_tec_xxx {
- u_int tec_mv; /* matrix stuff */
- u_int tec_clip; /* clipping stuff */
- u_int tec_vdc; /* ??? */
-};
-
-/*
- * This structure exists only to compute the layout of the CG6
- * hardware. Each of the individual substructures lives on a
- * separate `page' (where a `page' is at least 4K), and many are
- * very far apart. We avoid large offsets (which make for lousy
- * code) by using pointers to the individual interesting pieces,
- * and map them in independently (to avoid using up PTEs unnecessarily).
- */
-struct cg6_layout {
- /* ROM at 0 */
- union {
- long un_id; /* ID = ?? */
- char un_rom[65536]; /* 64K rom */
- char un_pad[0x200000];
- } cg6_rom_un;
-
- /* Brooktree DAC at 0x200000 */
- union {
- struct bt_regs un_btregs;
- char un_pad[0x040000];
- } cg6_bt_un;
-
- /* DHC, whatever that is, at 0x240000 */
- union {
- char un_pad[0x40000];
- } cg6_dhc_un;
-
- /* ALT, whatever that is, at 0x280000 */
- union {
- char un_pad[0x80000];
- } cg6_alt_un;
-
- /* FHC register at 0x300000 */
- union {
- int un_fhc;
- char un_pad[0x1000];
- } cg6_fhc_un;
-
- /* THC at 0x301000 */
- union {
- struct cg6_thc un_thc;
- char un_pad[0x400000 - 0x1000];
- } cg6_thc_un;
-
- /* FBC at 0x700000 */
- union {
- char un_pad[0x1000];
- } cg6_fbc_un;
-
- /* TEC at 0x701000 */
- union {
- char un_pad[0x100000 - 0x1000];
- struct cg6_tec_xxx un_tec;
- } cg6_tec_un;
-
- /* Video RAM at 0x800000 */
- char cg6_ram[1024 * 1024]; /* approx.? */
-};
diff --git a/nx-X11/programs/Xserver/hw/sunLynx/fbio.h b/nx-X11/programs/Xserver/hw/sunLynx/fbio.h
deleted file mode 100644
index 324036999..000000000
--- a/nx-X11/programs/Xserver/hw/sunLynx/fbio.h
+++ /dev/null
@@ -1,186 +0,0 @@
-/* $Xorg: fbio.h,v 1.3 2000/08/17 19:48:36 cpqbld Exp $ */
-/*
- * Copyright (c) 1992 Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software developed by the Computer Systems
- * Engineering group at Lawrence Berkeley Laboratory under DARPA
- * contract BG 91-66 and contributed to Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)fbio.h 7.2 (Berkeley) 4/1/92
- */
-
-/*
- * Frame buffer ioctls (from Sprite, trimmed to essentials for X11).
- */
-/* $NetBSD: fbio.h,v 1.3 1994/11/20 20:53:03 deraadt Exp $ */
-/* $XFree86: xc/programs/Xserver/hw/sunLynx/fbio.h,v 3.1 1996/12/27 06:51:34 dawes Exp $ */
-
-/*
- * Frame buffer type codes.
- */
-#define FBTYPE_SUN1BW 0 /* multibus mono */
-#define FBTYPE_SUN1COLOR 1 /* multibus color */
-#define FBTYPE_SUN2BW 2 /* memory mono */
-#define FBTYPE_SUN2COLOR 3 /* color w/rasterop chips */
-#define FBTYPE_SUN2GP 4 /* GP1/GP2 */
-#define FBTYPE_SUN5COLOR 5 /* RoadRunner accelerator */
-#define FBTYPE_SUN3COLOR 6 /* memory color */
-#define FBTYPE_MEMCOLOR 7 /* memory 24-bit */
-#define FBTYPE_SUN4COLOR 8 /* memory color w/overlay */
-
-#define FBTYPE_NOTSUN1 9 /* reserved for customer */
-#define FBTYPE_NOTSUN2 10 /* reserved for customer */
-#define FBTYPE_NOTSUN3 11 /* reserved for customer */
-
-#define FBTYPE_SUNFAST_COLOR 12 /* accelerated 8bit */
-#define FBTYPE_SUNROP_COLOR 13 /* MEMCOLOR with rop h/w */
-#define FBTYPE_SUNFB_VIDEO 14 /* Simple video mixing */
-#define FBTYPE_RESERVED5 15 /* reserved, do not use */
-#define FBTYPE_RESERVED4 16 /* reserved, do not use */
-#define FBTYPE_RESERVED3 17 /* reserved, do not use */
-#define FBTYPE_RESERVED2 18 /* reserved, do not use */
-#define FBTYPE_RESERVED1 19 /* reserved, do not use */
-
-#define FBTYPE_LASTPLUSONE 20 /* max number of fbs (change as add) */
-
-/*
- * Frame buffer descriptor as returned by FBIOGTYPE.
- */
-struct fbtype {
- int fb_type; /* as defined above */
- int fb_height; /* in pixels */
- int fb_width; /* in pixels */
- int fb_depth; /* bits per pixel */
- int fb_cmsize; /* size of color map (entries) */
- int fb_size; /* total size in bytes */
-};
-#define FBIOGTYPE _IOR('F', 0, struct fbtype)
-
-#ifdef notdef
-/*
- * General purpose structure for passing info in and out of frame buffers
- * (used for gp1) -- unsupported.
- */
-struct fbinfo {
- int fb_physaddr; /* physical frame buffer address */
- int fb_hwwidth; /* fb board width */
- int fb_hwheight; /* fb board height */
- int fb_addrdelta; /* phys addr diff between boards */
- u_char *fb_ropaddr; /* fb virtual addr */
- int fb_unit; /* minor devnum of fb */
-};
-#define FBIOGINFO _IOR('F', 2, struct fbinfo)
-#endif
-
-/*
- * Color map I/O.
- */
-struct fbcmap {
- int index; /* first element (0 origin) */
- int count; /* number of elements */
- u_char *red; /* red color map elements */
- u_char *green; /* green color map elements */
- u_char *blue; /* blue color map elements */
-};
-#define FBIOPUTCMAP _IOW('F', 3, struct fbcmap)
-#define FBIOGETCMAP _IOW('F', 4, struct fbcmap)
-
-/*
- * Set/get attributes.
- */
-#define FB_ATTR_NDEVSPECIFIC 8 /* no. of device specific values */
-#define FB_ATTR_NEMUTYPES 4 /* no. of emulation types */
-
-struct fbsattr {
- int flags; /* flags; see below */
- int emu_type; /* emulation type (-1 if unused) */
- int dev_specific[FB_ATTR_NDEVSPECIFIC]; /* catchall */
-};
-#define FB_ATTR_AUTOINIT 1 /* emulation auto init flag */
-#define FB_ATTR_DEVSPECIFIC 2 /* dev. specific stuff valid flag */
-
-struct fbgattr {
- int real_type; /* real device type */
- int owner; /* PID of owner, 0 if myself */
- struct fbtype fbtype; /* fbtype info for real device */
- struct fbsattr sattr; /* see above */
- int emu_types[FB_ATTR_NEMUTYPES]; /* possible emulations */
- /* (-1 if unused) */
-};
-/* FBIOSATTR _IOW('F', 5, struct fbsattr) -- unsupported */
-#define FBIOGATTR _IOR('F', 6, struct fbgattr)
-
-/*
- * Video control.
- */
-#define FBVIDEO_OFF 0
-#define FBVIDEO_ON 1
-
-#define FBIOSVIDEO _IOW('F', 7, int)
-#define FBIOGVIDEO _IOR('F', 8, int)
-
-/*
- * hardware cursor control
- */
-struct fbcurpos {
- short x;
- short y;
-};
-
-#define FB_CUR_SETCUR 0x01
-#define FB_CUR_SETPOS 0x02
-#define FB_CUR_SETHOT 0x04
-#define FB_CUR_SETCMAP 0x08
-#define FB_CUR_SETSHAPE 0x10
-#define FB_CUR_SETALL 0x1F
-
-struct fbcursor {
- short set; /* what to set */
- short enable; /* enable/disable cursor */
- struct fbcurpos pos; /* cursor's position */
- struct fbcurpos hot; /* cursor's hot spot */
- struct fbcmap cmap; /* color map info */
- struct fbcurpos size; /* cursor's bit map size */
- char *image; /* cursor's image bits */
- char *mask; /* cursor's mask bits */
-};
-
-/* set/get cursor attributes/shape */
-#define FBIOSCURSOR _IOW('F', 24, struct fbcursor)
-#define FBIOGCURSOR _IOWR('F', 25, struct fbcursor)
-
-/* set/get cursor position */
-#define FBIOSCURPOS _IOW('F', 26, struct fbcurpos)
-#define FBIOGCURPOS _IOW('F', 27, struct fbcurpos)
-
-/* get max cursor size */
-#define FBIOGCURMAX _IOR('F', 28, struct fbcurpos)
diff --git a/nx-X11/programs/Xserver/hw/sunLynx/patch.Console b/nx-X11/programs/Xserver/hw/sunLynx/patch.Console
deleted file mode 100644
index 58a2d80f3..000000000
--- a/nx-X11/programs/Xserver/hw/sunLynx/patch.Console
+++ /dev/null
@@ -1,428 +0,0 @@
-diff -crP /cdrom/usr/include/kbd.h /usr/include/kbd.h
-*** /cdrom/usr/include/kbd.h Wed Dec 31 16:00:00 1969
---- /usr/include/kbd.h Sun May 11 23:22:45 1997
-***************
-*** 0 ****
---- 1,90 ----
-+ /* $NetBSD: kbd.h,v 1.4 1995/07/06 05:36:29 pk Exp $ */
-+
-+ /*
-+ * Copyright (c) 1992, 1993
-+ * The Regents of the University of California. All rights reserved.
-+ *
-+ * This software was developed by the Computer Systems Engineering group
-+ * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
-+ * contributed to Berkeley.
-+ *
-+ * All advertising materials mentioning features or use of this software
-+ * must display the following acknowledgement:
-+ * This product includes software developed by the University of
-+ * California, Lawrence Berkeley Laboratory.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ * 1. Redistributions of source code must retain the above copyright
-+ * notice, this list of conditions and the following disclaimer.
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ * notice, this list of conditions and the following disclaimer in the
-+ * documentation and/or other materials provided with the distribution.
-+ * 3. All advertising materials mentioning features or use of this software
-+ * must display the following acknowledgement:
-+ * This product includes software developed by the University of
-+ * California, Berkeley and its contributors.
-+ * 4. Neither the name of the University nor the names of its contributors
-+ * may be used to endorse or promote products derived from this software
-+ * without specific prior written permission.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-+ * SUCH DAMAGE.
-+ *
-+ * @(#)kbd.h 8.1 (Berkeley) 6/11/93
-+ */
-+
-+ /*
-+ * Keyboard `registers'. (This should be called kbd_reg.h but we need to
-+ * be compatible.)
-+ */
-+
-+ /*
-+ * Control codes sent from type 2, 3, and 4 keyboards.
-+ *
-+ * Note that KBD_RESET is followed by a keyboard ID, while KBD_IDLE is not.
-+ * KBD_IDLE does not take the place of any `up' transitions (it merely occurs
-+ * after them).
-+ */
-+ #define KBD_RESET 0xff /* keyboard `reset' response */
-+ #define KBD_IDLE 0x7f /* keyboard `all keys are up' code */
-+ #define KBD_LAYOUT 0xfe /* keyboard `get layout' response */
-+
-+ /* Keyboard IDs */
-+ #define KB_SUN2 2 /* type 2 keyboard */
-+ #define KB_SUN3 3 /* type 3 keyboard */
-+ #define KB_SUN4 4 /* type 4 keyboard */
-+
-+ /* Key codes are in 0x00..0x7e; KBD_UP is set if the key goes up */
-+ #define KBD_KEYMASK 0x7f /* keyboard key mask */
-+ #define KBD_UP 0x80 /* keyboard `up' transition */
-+
-+ /* Keyboard codes needed to recognize the L1-A sequence */
-+ #define KBD_L1 1 /* keyboard code for `L1' key */
-+ #define KBD_A 77 /* keyboard code for `A' key */
-+
-+ /* Control codes sent to the various keyboards */
-+ #define KBD_CMD_RESET 1 /* reset keyboard */
-+ #define KBD_CMD_BELL 2 /* turn bell on */
-+ #define KBD_CMD_NOBELL 3 /* turn bell off */
-+ #define KBD_CMD_CLICK 10 /* turn keyclick on */
-+ #define KBD_CMD_NOCLICK 11 /* turn keyclick off */
-+ #define KBD_CMD_SETLED 14 /* set LED state (type 4 kbd) */
-+ #define KBD_CMD_GLAYOUT 15 /* get DIP switch (type 4 kbd) */
-+
-+ #define LED_NUM_LOCK 0x1
-+ #if !defined(Lynx) || !defined(LED_COMPOSE)
-+ #define LED_COMPOSE 0x2
-+ #endif
-+ #define LED_SCROLL_LOCK 0x4
-+ #define LED_CAPS_LOCK 0x8
-diff -crP /cdrom/usr/include/kbio.h /usr/include/kbio.h
-*** /cdrom/usr/include/kbio.h Wed Dec 31 16:00:00 1969
---- /usr/include/kbio.h Sun May 11 23:22:46 1997
-***************
-*** 0 ****
---- 1,115 ----
-+ /* $NetBSD: kbio.h,v 1.4 1995/05/10 16:07:27 pk Exp $ */
-+
-+ /*
-+ * Copyright (c) 1992, 1993
-+ * The Regents of the University of California. All rights reserved.
-+ *
-+ * This software was developed by the Computer Systems Engineering group
-+ * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
-+ * contributed to Berkeley.
-+ *
-+ * All advertising materials mentioning features or use of this software
-+ * must display the following acknowledgement:
-+ * This product includes software developed by the University of
-+ * California, Lawrence Berkeley Laboratory.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ * 1. Redistributions of source code must retain the above copyright
-+ * notice, this list of conditions and the following disclaimer.
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ * notice, this list of conditions and the following disclaimer in the
-+ * documentation and/or other materials provided with the distribution.
-+ * 3. All advertising materials mentioning features or use of this software
-+ * must display the following acknowledgement:
-+ * This product includes software developed by the University of
-+ * California, Berkeley and its contributors.
-+ * 4. Neither the name of the University nor the names of its contributors
-+ * may be used to endorse or promote products derived from this software
-+ * without specific prior written permission.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-+ * SUCH DAMAGE.
-+ *
-+ * @(#)kbio.h 8.1 (Berkeley) 6/11/93
-+ */
-+
-+ /*
-+ * The following is a minimal emulation of Sun's `kio' structures
-+ * and related operations necessary to make X11 happy (i.e., make it
-+ * compile, and make old X11 binaries run).
-+ */
-+
-+ /*
-+ * The kiockey structure apparently gets and/or sets keyboard mappings.
-+ * It seems to be kind of useless, but X11 uses it (according to the
-+ * comments) to figure out when a Sun 386i has a type-4 keyboard but
-+ * claims to have a type-3 keyboard. We need just enough to cause the
-+ * appropriate ioctl to return the appropriate magic value.
-+ *
-+ * KIOCGETKEY fills in kio_entry from kio_station. Not sure what tablemask
-+ * is for; X sets it before the call, so it is not an output, but we do not
-+ * care anyway. KIOCSDIRECT is supposed to tell the kernel whether to send
-+ * keys to the console or to X; we just send them to X whenever the keyboard
-+ * is open at all. (XXX may need to change this later)
-+ *
-+ * Keyboard commands and types are defined in kbd.h as they are actually
-+ * real hardware commands and type numbers.
-+ */
-+ struct okiockey { /* Out-dated key translation structure */
-+ int kio_tablemask; /* whatever */
-+ u_char kio_station; /* key number */
-+ u_char kio_entry; /* HOLE if not present */
-+ char kio_text[10]; /* the silly escape sequences (unsupported) */
-+ };
-+
-+ struct kiockey {
-+ int kio_tablemask; /* whatever */
-+ u_char kio_station; /* key number */
-+ u_short kio_entry; /* HOLE if not present */
-+ char kio_text[10]; /* the silly escape sequences (unsupported) */
-+ };
-+
-+ /*
-+ * Values for kio_tablemask. These determine which table to read/modify
-+ * in KIOC[SG]KEY ioctls. Currently, we only have "non-shift" and "shift"
-+ * tables.
-+ */
-+ #define KIOC_NOMASK 0x0
-+ #define KIOC_CAPSMASK 0x1
-+ #define KIOC_SHIFTMASK 0xe
-+ #define KIOC_CTRLMASK 0x30
-+ #define KIOC_ALTGMASK 0x200
-+ #define KIOC_NUMLMASK 0x800
-+
-+ #define HOLE 0x302 /* value for kio_entry to say `really type 3' */
-+
-+ #define KIOCTRANS _IOW('k', 0, int) /* set translation mode */
-+ /* (we only accept TR_UNTRANS_EVENT) */
-+ #define KIOCGETKEY _IOWR('k', 2, struct okiockey) /* fill in kio_entry */
-+ #define KIOCGTRANS _IOR('k', 5, int) /* get translation mode */
-+ #define KIOCCMD _IOW('k', 8, int) /* X uses this to ring bell */
-+ #define KIOCTYPE _IOR('k', 9, int) /* get keyboard type */
-+ #define KIOCSDIRECT _IOW('k', 10, int) /* keys to console? */
-+ #define KIOCSKEY _IOW('k', 12, struct kiockey) /* set xlat mode */
-+ #ifndef Lynx
-+ #define KIOCGKEY _IOWR('k', 13, struct kiockey) /* get xlat mode */
-+ #endif
-+ #define KIOCLAYOUT _IOR('k', 20, int) /* get keyboard layout */
-+ #define KIOCSLED _IOW('k', 14, char) /* set LED state */
-+ #define KIOCGLED _IOR('k', 15, char) /* get LED state */
-+
-+ #define TR_NONE 0 /* X compat, unsupported */
-+ #define TR_ASCII 1 /* X compat, unsupported */
-+ #define TR_EVENT 2 /* X compat, unsupported */
-+ #define TR_UNTRANS_EVENT 3
-diff -crP /cdrom/sys/drivers/console/Makefile /sys/drivers/console/Makefile
-*** /cdrom/sys/drivers/console/Makefile Sun Feb 9 04:43:06 1997
---- /sys/drivers/console/Makefile Sun May 11 23:24:04 1997
-***************
-*** 24,30 ****
-
- LIBRARY= drivers
-
-! SPECIAL_CFLAGS=-DMOUSESUPPORT
-
- include ../../OBJ_RULES
-
---- 24,30 ----
-
- LIBRARY= drivers
-
-! SPECIAL_CFLAGS=-DMOUSESUPPORT -DXSERVERSUPPORT
-
- include ../../OBJ_RULES
-
-diff -crP /cdrom/sys/drivers/console/atc.h /sys/drivers/console/atc.h
-*** /cdrom/sys/drivers/console/atc.h Sun Feb 9 04:43:06 1997
---- /sys/drivers/console/atc.h Sun May 11 23:22:46 1997
-***************
-*** 108,113 ****
---- 108,119 ----
- #ifdef MOUSESUPPORT
- struct ttystatics mousechannel;
- #endif /* MOUSESUPPORT */
-+ #ifdef XSERVERSUPPORT
-+ int kbd_pending;
-+ int kbd_id; /* keyboard type */
-+ int kbd_layout; /* layout on type 4 */
-+ int kbd_click; /* kbd click on? */
-+ #endif
- };
-
- struct kbd_registers_type {
-diff -crP /cdrom/sys/drivers/console/atcdrvr.c /sys/drivers/console/atcdrvr.c
-*** /cdrom/sys/drivers/console/atcdrvr.c Sun Feb 9 04:43:06 1997
---- /sys/drivers/console/atcdrvr.c Sun May 11 23:25:15 1997
-***************
-*** 38,43 ****
---- 38,47 ----
- #ifdef MOUSESUPPORT
- #include "am8530.h"
- #endif /* MOUSESUPPORT */
-+ #ifdef XSERVERSUPPORT
-+ #include <kbd.h>
-+ #include <kbio.h>
-+ #endif
-
- char *screen_address; /* is this supposed to be in the driver info? */
-
-***************
-*** 305,310 ****
---- 309,318 ----
- int m;
- int ps;
- extern int set_kb_lights();
-+ #ifdef XSERVERSUPPORT
-+ extern int kbd_docmd();
-+ int err;
-+ #endif
-
- if (!atc_flag){ pseterr(EIO); return(SYSERR);}
- #ifdef MOUSESUPPORT
-***************
-*** 354,365 ****
---- 362,398 ----
- #ifdef TIOLED
- case TIOLED:
- #endif
-+ #ifdef XSERVERSUPPORT
-+ case KIOCSLED:
-+ #endif
- h->curled = *arg;
- if (h->ledstate == -1) {
- if (timeout(set_kb_lights,h,1) != -1)
- h->ledstate = 0;
- }
- return 0;
-+ #ifdef XSERVERSUPPORT
-+ case KIOCTYPE:
-+ if (wbounds(arg) < sizeof(int)) {
-+ pseterr(EFAULT);
-+ return SYSERR;
-+ }
-+ *(int *)arg = h->kbd_id;
-+ return OK;
-+ case KIOCLAYOUT:
-+ if (wbounds(arg) < sizeof(int)) {
-+ pseterr(EFAULT);
-+ return SYSERR;
-+ }
-+ *(int *)arg = h->kbd_layout;
-+ return OK;
-+ case KIOCCMD:
-+ if (err = kbd_docmd(h, *(int *)arg)) {
-+ pseterr(err);
-+ return SYSERR;
-+ }
-+ return OK;
-+ #endif
- case VT_OPENQRY:
- if (h->multimode == SCM_ONE) {
- if (!(h->open & 1)) {
-***************
-*** 578,583 ****
---- 611,622 ----
- h->open = 0;
- h->break_code = 0;
- h->info = info;
-+ #ifdef XSERVERSUPPORT
-+ h->kbd_pending = 0;
-+ h->kbd_id = KB_SUN4; /* query KBD later.... */
-+ h->kbd_layout = 0; /* US_ASCII */
-+ h->kbd_click = 0; /* silent movie */
-+ #endif
- #ifdef MOUSESUPPORT
- tmgr_install(&h->mousechannel, &info->sg, 0, mouse_xmit_ena, h);
- #endif /* MOUSESUPPORT */
-diff -crP /cdrom/sys/drivers/console/atkey.c /sys/drivers/console/atkey.c
-*** /cdrom/sys/drivers/console/atkey.c Sun Feb 9 04:43:07 1997
---- /sys/drivers/console/atkey.c Sun May 11 23:22:46 1997
-***************
-*** 26,31 ****
---- 26,35 ----
- #ifdef MOUSESUPPORT
- #include "am8530.h"
- #endif /* MOUSESUPPORT */
-+ #ifdef XSERVERSUPPORT
-+ #include <kbd.h>
-+ #include <kbio.h>
-+ #endif
-
- #define NOTHING_USEFUL -1
- #define FILL NOTHING_USEFUL
-diff -crP /cdrom/sys/drivers/console/atutils.c /sys/drivers/console/atutils.c
-*** /cdrom/sys/drivers/console/atutils.c Sun Feb 9 04:43:07 1997
---- /sys/drivers/console/atutils.c Sun May 11 23:22:46 1997
-***************
-*** 361,367 ****
- }
-
-
-! static int byte_to_keyboard(byt)
- unsigned char byt;
- {
- int i;
---- 361,370 ----
- }
-
-
-! #ifndef XSERVERSUPPORT
-! static
-! #endif
-! int byte_to_keyboard(byt)
- unsigned char byt;
- {
- int i;
-***************
-*** 400,402 ****
---- 403,449 ----
- break;
- }
- }
-+
-+ #ifdef XSERVERSUPPORT
-+ #include <kbd.h>
-+ #include <kbio.h>
-+
-+ /*
-+ * Execute a keyboard command; return 0 on success.
-+ */
-+ kbd_docmd(h, cmd)
-+ register struct kdhglobals *h;
-+ int cmd;
-+ {
-+ switch (cmd) {
-+
-+ case KBD_CMD_BELL:
-+ case KBD_CMD_NOBELL:
-+ /* Supported by type 2, 3, and 4 keyboards */
-+ break;
-+
-+ case KBD_CMD_CLICK:
-+ /* Unsupported by type 2 keyboards */
-+ if (h->kbd_id != KB_SUN2) {
-+ h->kbd_click = 1;
-+ break;
-+ }
-+ return (EINVAL);
-+
-+ case KBD_CMD_NOCLICK:
-+ /* Unsupported by type 2 keyboards */
-+ if (h->kbd_id != KB_SUN2) {
-+ h->kbd_click = 0;
-+ break;
-+ }
-+ return (EINVAL);
-+
-+ default:
-+ return (EINVAL); /* ENOTTY? EOPNOTSUPP? */
-+ }
-+
-+ if (timeout(byte_to_keyboard, cmd, 1) < 0)
-+ return (ENOSPC); /* ERESTART? */
-+ return (0);
-+ }
-+ #endif
diff --git a/nx-X11/programs/Xserver/hw/sunLynx/patch.Console-2.4.0 b/nx-X11/programs/Xserver/hw/sunLynx/patch.Console-2.4.0
deleted file mode 100644
index 41e2d10c3..000000000
--- a/nx-X11/programs/Xserver/hw/sunLynx/patch.Console-2.4.0
+++ /dev/null
@@ -1,493 +0,0 @@
-diff -cPr --exclude-from=Excl.include /mnt/DEV_OS.microSPARC/usr/include/kbd.h /usr/include/kbd.h
-*** /mnt/DEV_OS.microSPARC/usr/include/kbd.h
---- /usr/include/kbd.h Wed Jul 24 09:37:49 1996
-***************
-*** 0 ****
---- 1,90 ----
-+ /* $NetBSD: kbd.h,v 1.4 1995/07/06 05:36:29 pk Exp $ */
-+
-+ /*
-+ * Copyright (c) 1992, 1993
-+ * The Regents of the University of California. All rights reserved.
-+ *
-+ * This software was developed by the Computer Systems Engineering group
-+ * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
-+ * contributed to Berkeley.
-+ *
-+ * All advertising materials mentioning features or use of this software
-+ * must display the following acknowledgement:
-+ * This product includes software developed by the University of
-+ * California, Lawrence Berkeley Laboratory.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ * 1. Redistributions of source code must retain the above copyright
-+ * notice, this list of conditions and the following disclaimer.
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ * notice, this list of conditions and the following disclaimer in the
-+ * documentation and/or other materials provided with the distribution.
-+ * 3. All advertising materials mentioning features or use of this software
-+ * must display the following acknowledgement:
-+ * This product includes software developed by the University of
-+ * California, Berkeley and its contributors.
-+ * 4. Neither the name of the University nor the names of its contributors
-+ * may be used to endorse or promote products derived from this software
-+ * without specific prior written permission.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-+ * SUCH DAMAGE.
-+ *
-+ * @(#)kbd.h 8.1 (Berkeley) 6/11/93
-+ */
-+
-+ /*
-+ * Keyboard `registers'. (This should be called kbd_reg.h but we need to
-+ * be compatible.)
-+ */
-+
-+ /*
-+ * Control codes sent from type 2, 3, and 4 keyboards.
-+ *
-+ * Note that KBD_RESET is followed by a keyboard ID, while KBD_IDLE is not.
-+ * KBD_IDLE does not take the place of any `up' transitions (it merely occurs
-+ * after them).
-+ */
-+ #define KBD_RESET 0xff /* keyboard `reset' response */
-+ #define KBD_IDLE 0x7f /* keyboard `all keys are up' code */
-+ #define KBD_LAYOUT 0xfe /* keyboard `get layout' response */
-+
-+ /* Keyboard IDs */
-+ #define KB_SUN2 2 /* type 2 keyboard */
-+ #define KB_SUN3 3 /* type 3 keyboard */
-+ #define KB_SUN4 4 /* type 4 keyboard */
-+
-+ /* Key codes are in 0x00..0x7e; KBD_UP is set if the key goes up */
-+ #define KBD_KEYMASK 0x7f /* keyboard key mask */
-+ #define KBD_UP 0x80 /* keyboard `up' transition */
-+
-+ /* Keyboard codes needed to recognize the L1-A sequence */
-+ #define KBD_L1 1 /* keyboard code for `L1' key */
-+ #define KBD_A 77 /* keyboard code for `A' key */
-+
-+ /* Control codes sent to the various keyboards */
-+ #define KBD_CMD_RESET 1 /* reset keyboard */
-+ #define KBD_CMD_BELL 2 /* turn bell on */
-+ #define KBD_CMD_NOBELL 3 /* turn bell off */
-+ #define KBD_CMD_CLICK 10 /* turn keyclick on */
-+ #define KBD_CMD_NOCLICK 11 /* turn keyclick off */
-+ #define KBD_CMD_SETLED 14 /* set LED state (type 4 kbd) */
-+ #define KBD_CMD_GLAYOUT 15 /* get DIP switch (type 4 kbd) */
-+
-+ #define LED_NUM_LOCK 0x1
-+ #if !defined(Lynx) || !defined(LED_COMPOSE)
-+ #define LED_COMPOSE 0x2
-+ #endif
-+ #define LED_SCROLL_LOCK 0x4
-+ #define LED_CAPS_LOCK 0x8
-diff -cPr --exclude-from=Excl.include /mnt/DEV_OS.microSPARC/usr/include/kbio.h /usr/include/kbio.h
-*** /mnt/DEV_OS.microSPARC/usr/include/kbio.h
---- /usr/include/kbio.h Wed Aug 14 16:29:26 1996
-***************
-*** 0 ****
---- 1,115 ----
-+ /* $NetBSD: kbio.h,v 1.4 1995/05/10 16:07:27 pk Exp $ */
-+
-+ /*
-+ * Copyright (c) 1992, 1993
-+ * The Regents of the University of California. All rights reserved.
-+ *
-+ * This software was developed by the Computer Systems Engineering group
-+ * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
-+ * contributed to Berkeley.
-+ *
-+ * All advertising materials mentioning features or use of this software
-+ * must display the following acknowledgement:
-+ * This product includes software developed by the University of
-+ * California, Lawrence Berkeley Laboratory.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ * 1. Redistributions of source code must retain the above copyright
-+ * notice, this list of conditions and the following disclaimer.
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ * notice, this list of conditions and the following disclaimer in the
-+ * documentation and/or other materials provided with the distribution.
-+ * 3. All advertising materials mentioning features or use of this software
-+ * must display the following acknowledgement:
-+ * This product includes software developed by the University of
-+ * California, Berkeley and its contributors.
-+ * 4. Neither the name of the University nor the names of its contributors
-+ * may be used to endorse or promote products derived from this software
-+ * without specific prior written permission.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-+ * SUCH DAMAGE.
-+ *
-+ * @(#)kbio.h 8.1 (Berkeley) 6/11/93
-+ */
-+
-+ /*
-+ * The following is a minimal emulation of Sun's `kio' structures
-+ * and related operations necessary to make X11 happy (i.e., make it
-+ * compile, and make old X11 binaries run).
-+ */
-+
-+ /*
-+ * The kiockey structure apparently gets and/or sets keyboard mappings.
-+ * It seems to be kind of useless, but X11 uses it (according to the
-+ * comments) to figure out when a Sun 386i has a type-4 keyboard but
-+ * claims to have a type-3 keyboard. We need just enough to cause the
-+ * appropriate ioctl to return the appropriate magic value.
-+ *
-+ * KIOCGETKEY fills in kio_entry from kio_station. Not sure what tablemask
-+ * is for; X sets it before the call, so it is not an output, but we do not
-+ * care anyway. KIOCSDIRECT is supposed to tell the kernel whether to send
-+ * keys to the console or to X; we just send them to X whenever the keyboard
-+ * is open at all. (XXX may need to change this later)
-+ *
-+ * Keyboard commands and types are defined in kbd.h as they are actually
-+ * real hardware commands and type numbers.
-+ */
-+ struct okiockey { /* Out-dated key translation structure */
-+ int kio_tablemask; /* whatever */
-+ u_char kio_station; /* key number */
-+ u_char kio_entry; /* HOLE if not present */
-+ char kio_text[10]; /* the silly escape sequences (unsupported) */
-+ };
-+
-+ struct kiockey {
-+ int kio_tablemask; /* whatever */
-+ u_char kio_station; /* key number */
-+ u_short kio_entry; /* HOLE if not present */
-+ char kio_text[10]; /* the silly escape sequences (unsupported) */
-+ };
-+
-+ /*
-+ * Values for kio_tablemask. These determine which table to read/modify
-+ * in KIOC[SG]KEY ioctls. Currently, we only have "non-shift" and "shift"
-+ * tables.
-+ */
-+ #define KIOC_NOMASK 0x0
-+ #define KIOC_CAPSMASK 0x1
-+ #define KIOC_SHIFTMASK 0xe
-+ #define KIOC_CTRLMASK 0x30
-+ #define KIOC_ALTGMASK 0x200
-+ #define KIOC_NUMLMASK 0x800
-+
-+ #define HOLE 0x302 /* value for kio_entry to say `really type 3' */
-+
-+ #define KIOCTRANS _IOW('k', 0, int) /* set translation mode */
-+ /* (we only accept TR_UNTRANS_EVENT) */
-+ #define KIOCGETKEY _IOWR('k', 2, struct okiockey) /* fill in kio_entry */
-+ #define KIOCGTRANS _IOR('k', 5, int) /* get translation mode */
-+ #define KIOCCMD _IOW('k', 8, int) /* X uses this to ring bell */
-+ #define KIOCTYPE _IOR('k', 9, int) /* get keyboard type */
-+ #define KIOCSDIRECT _IOW('k', 10, int) /* keys to console? */
-+ #define KIOCSKEY _IOW('k', 12, struct kiockey) /* set xlat mode */
-+ #ifndef Lynx
-+ #define KIOCGKEY _IOWR('k', 13, struct kiockey) /* get xlat mode */
-+ #endif
-+ #define KIOCLAYOUT _IOR('k', 20, int) /* get keyboard layout */
-+ #define KIOCSLED _IOW('k', 14, char) /* set LED state */
-+ #define KIOCGLED _IOR('k', 15, char) /* get LED state */
-+
-+ #define TR_NONE 0 /* X compat, unsupported */
-+ #define TR_ASCII 1 /* X compat, unsupported */
-+ #define TR_EVENT 2 /* X compat, unsupported */
-+ #define TR_UNTRANS_EVENT 3
-diff -cPr --exclude=*.[oa] /mnt/DEV_OS.microSPARC/sys/drivers/console/Makefile sys/drivers/console/Makefile
-*** /mnt/DEV_OS.microSPARC/sys/drivers/console/Makefile Fri Apr 26 23:27:51 1996
---- sys/drivers/console/Makefile Fri Aug 2 09:03:05 1996
-***************
-*** 31,37 ****
- # (keyboard) duart. The mouse is attached to this port. It must be
- # defined for the X server to work.
- #
-! SPECIAL_CFLAGS = -DMOUSESUPPORT -O
-
- FILES = atcdrvr.xxx gfont.xxx atkey.xxx atbeep.xxx atterm.xxx atutils.xxx
- HFILES =
---- 31,37 ----
- # (keyboard) duart. The mouse is attached to this port. It must be
- # defined for the X server to work.
- #
-! SPECIAL_CFLAGS = -DMOUSESUPPORT -DXSERVERSUPPORT -O
-
- FILES = atcdrvr.xxx gfont.xxx atkey.xxx atbeep.xxx atterm.xxx atutils.xxx
- HFILES =
-***************
-*** 117,122 ****
---- 117,130 ----
-
- # Just Do It.
- FORCE:
-+
-+ atkey.kdb.o : atkey.c
-+ $(KERN_CC) -c -o atkey.kdb.o $(SPECIAL_CFLAGS) $(KERN_CFLAGS) \
-+ $(SPECIAL_INCLUDES) $(KERN_INCLUDES) -DSKDB atkey.c
-+
-+ atkey.nokdb.o : atkey.c
-+ $(KERN_CC) -c -o atkey.kdb.o $(SPECIAL_CFLAGS) $(KERN_CFLAGS) \
-+ $(SPECIAL_INCLUDES) $(KERN_INCLUDES) atkey.c
-
- # Dependencies as of 5/20/1992
-
-diff -cPr --exclude=*.[oa] /mnt/DEV_OS.microSPARC/sys/drivers/console/atc.h sys/drivers/console/atc.h
-*** /mnt/DEV_OS.microSPARC/sys/drivers/console/atc.h Fri Apr 26 23:27:51 1996
---- sys/drivers/console/atc.h Wed Jul 24 11:49:21 1996
-***************
-*** 191,196 ****
---- 191,202 ----
- #ifdef MOUSESUPPORT
- struct ttystatics mousechannel;
- #endif /* MOUSESUPPORT */
-+ #ifdef XSERVERSUPPORT
-+ int kbd_pending;
-+ int kbd_id; /* keyboard type */
-+ int kbd_layout; /* layout on type 4 */
-+ int kbd_click; /* kbd click on? */
-+ #endif
- };
-
- struct kbd_registers_type {
-diff -cPr --exclude=*.[oa] /mnt/DEV_OS.microSPARC/sys/drivers/console/atcdrvr.c sys/drivers/console/atcdrvr.c
-*** /mnt/DEV_OS.microSPARC/sys/drivers/console/atcdrvr.c Fri Apr 26 23:27:51 1996
---- sys/drivers/console/atcdrvr.c Wed Aug 14 16:28:23 1996
-***************
-*** 270,275 ****
---- 270,279 ----
- #ifdef MOUSESUPPORT
- #include "am8530.h"
- #endif /* MOUSESUPPORT */
-+ #ifdef XSERVERSUPPORT
-+ #include <kbd.h>
-+ #include <kbio.h>
-+ #endif
-
- char *screen_address; /* is this supposed to be in the driver info? */
-
-***************
-*** 537,542 ****
---- 541,550 ----
- int m;
- int ps;
- extern int set_kb_lights();
-+ #ifdef XSERVERSUPPORT
-+ extern int kbd_docmd();
-+ int err;
-+ #endif
-
- if (!atc_flag){ pseterr(EIO); return(SYSERR);}
- #ifdef MOUSESUPPORT
-***************
-*** 586,597 ****
- #ifdef TIOLED
- case TIOLED:
- #endif
- h->curled = *arg;
- if (h->ledstate == -1) {
- if (timeout(set_kb_lights,h,1) != -1)
- h->ledstate = 0;
- }
-! break;
- case VT_OPENQRY:
- if (h->multimode == SCM_ONE) {
- if (!(h->open & 1)) {
---- 594,630 ----
- #ifdef TIOLED
- case TIOLED:
- #endif
-+ #ifdef XSERVERSUPPORT
-+ case KIOCSLED:
-+ #endif
- h->curled = *arg;
- if (h->ledstate == -1) {
- if (timeout(set_kb_lights,h,1) != -1)
- h->ledstate = 0;
- }
-! return OK;
-! #ifdef XSERVERSUPPORT
-! case KIOCTYPE:
-! if (wbounds(arg) < sizeof(int)) {
-! pseterr(EFAULT);
-! return SYSERR;
-! }
-! *(int *)arg = h->kbd_id;
-! return OK;
-! case KIOCLAYOUT:
-! if (wbounds(arg) < sizeof(int)) {
-! pseterr(EFAULT);
-! return SYSERR;
-! }
-! *(int *)arg = h->kbd_layout;
-! return OK;
-! case KIOCCMD:
-! if (err = kbd_docmd(h, *(int *)arg)) {
-! pseterr(err);
-! return SYSERR;
-! }
-! return OK;
-! #endif
- case VT_OPENQRY:
- if (h->multimode == SCM_ONE) {
- if (!(h->open & 1)) {
-***************
-*** 810,815 ****
---- 843,854 ----
- h->open = 0;
- h->break_code = 0;
- h->info = info;
-+ #ifdef XSERVERSUPPORT
-+ h->kbd_pending = 0;
-+ h->kbd_id = KB_SUN4; /* query KBD later.... */
-+ h->kbd_layout = 0; /* US_ASCII */
-+ h->kbd_click = 0; /* silent movie */
-+ #endif
- #ifdef MOUSESUPPORT
- tmgr_install(&h->mousechannel, &info->sg, 0, mouse_xmit_ena, h);
- #endif /* MOUSESUPPORT */
-diff -cPr --exclude=*.[oa] /mnt/DEV_OS.microSPARC/sys/drivers/console/atkey.c sys/drivers/console/atkey.c
-*** /mnt/DEV_OS.microSPARC/sys/drivers/console/atkey.c Fri Apr 26 23:27:51 1996
---- sys/drivers/console/atkey.c Mon Sep 23 09:19:36 1996
-***************
-*** 162,167 ****
---- 162,171 ----
- #ifdef MOUSESUPPORT
- #include "am8530.h"
- #endif /* MOUSESUPPORT */
-+ #ifdef XSERVERSUPPORT
-+ #include <kbd.h>
-+ #include <kbio.h>
-+ #endif
-
- #define NOTHING_USEFUL -1
- #define FILL NOTHING_USEFUL
-***************
-*** 474,480 ****
- #undef DEBUG
-
- j = *(volatile unsigned char *)KV_KBD_DATA;
-!
- /* Do the quick scan mode check first. If scanning, stuff and exit */
- screen_num = (h->g - &h->screen[0]);
- if (h->screen[screen_num].scan_mode) {
---- 478,503 ----
- #undef DEBUG
-
- j = *(volatile unsigned char *)KV_KBD_DATA;
-! #ifdef XSERVERSUPPORT
-! if (h->kbd_pending == KBD_RESET) {
-! h->kbd_pending = 0;
-! h->kbd_id = j;
-! if (j == KB_SUN4) {
-! extern int byte_to_keyboard();
-! timeout(byte_to_keyboard, KBD_CMD_GLAYOUT, 1);
-! }
-! goto EOIandExit;
-! }
-! if (h->kbd_pending == KBD_LAYOUT) {
-! h->kbd_pending = 0;
-! h->kbd_layout = j;
-! goto EOIandExit;
-! }
-! if (j == KBD_RESET || j == KBD_LAYOUT) {
-! h->kbd_pending = j;
-! goto EOIandExit;
-! }
-! #endif
- /* Do the quick scan mode check first. If scanning, stuff and exit */
- screen_num = (h->g - &h->screen[0]);
- if (h->screen[screen_num].scan_mode) {
-diff -cPr --exclude=*.[oa] /mnt/DEV_OS.microSPARC/sys/drivers/console/atutils.c sys/drivers/console/atutils.c
-*** /mnt/DEV_OS.microSPARC/sys/drivers/console/atutils.c Fri Apr 26 23:27:51 1996
---- sys/drivers/console/atutils.c Tue Aug 13 11:54:38 1996
-***************
-*** 456,462 ****
- }
-
-
-! static int byte_to_keyboard(byt)
- unsigned char byt;
- {
- int i;
---- 456,465 ----
- }
-
-
-! #ifndef XSERVERSUPPORT
-! static
-! #endif
-! int byte_to_keyboard(byt)
- unsigned char byt;
- {
- int i;
-***************
-*** 495,497 ****
---- 498,544 ----
- break;
- }
- }
-+
-+ #ifdef XSERVERSUPPORT
-+ #include <kbd.h>
-+ #include <kbio.h>
-+
-+ /*
-+ * Execute a keyboard command; return 0 on success.
-+ */
-+ kbd_docmd(h, cmd)
-+ register struct kdhglobals *h;
-+ int cmd;
-+ {
-+ switch (cmd) {
-+
-+ case KBD_CMD_BELL:
-+ case KBD_CMD_NOBELL:
-+ /* Supported by type 2, 3, and 4 keyboards */
-+ break;
-+
-+ case KBD_CMD_CLICK:
-+ /* Unsupported by type 2 keyboards */
-+ if (h->kbd_id != KB_SUN2) {
-+ h->kbd_click = 1;
-+ break;
-+ }
-+ return (EINVAL);
-+
-+ case KBD_CMD_NOCLICK:
-+ /* Unsupported by type 2 keyboards */
-+ if (h->kbd_id != KB_SUN2) {
-+ h->kbd_click = 0;
-+ break;
-+ }
-+ return (EINVAL);
-+
-+ default:
-+ return (EINVAL); /* ENOTTY? EOPNOTSUPP? */
-+ }
-+
-+ if (timeout(byte_to_keyboard, cmd, 1) < 0)
-+ return (ENOSPC); /* ERESTART? */
-+ return (0);
-+ }
-+ #endif
diff --git a/nx-X11/programs/Xserver/hw/sunLynx/sun.h b/nx-X11/programs/Xserver/hw/sunLynx/sun.h
deleted file mode 100644
index edca59c19..000000000
--- a/nx-X11/programs/Xserver/hw/sunLynx/sun.h
+++ /dev/null
@@ -1,486 +0,0 @@
-/* $Xorg: sun.h,v 1.3 2000/08/17 19:48:36 cpqbld Exp $ */
-
-/* This is sun.h modified for LynxOS */
-
-/*-
- * Copyright (c) 1987 by the Regents of the University of California
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies. The University of California
- * makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without
- * express or implied warranty.
- */
-/* $XFree86: xc/programs/Xserver/hw/sunLynx/sun.h,v 3.7 2001/07/25 15:05:02 dawes Exp $ */
-
-#ifndef _SUN_H_
-#define _SUN_H_
-
-/* X headers */
-#include <X11/Xos.h>
-#undef index /* don't mangle silly Sun structure member names */
-#include <X11/X.h>
-#include <X11/Xproto.h>
-
-/* general system headers */
-#ifndef NOSTDHDRS
-# include <stdlib.h>
-#else
-# include <malloc.h>
-extern char *getenv();
-#endif
-
-/* system headers common to both SunOS and Solaris */
-#include <sys/param.h>
-#include <sys/file.h>
-#ifndef Lynx
-# include <sys/filio.h>
-#else
-# include <sys/termio.h> /* include this before ioctl.h ... */
-#endif
-#include <sys/ioctl.h>
-#include <sys/resource.h>
-
-#ifdef SVR4
-# ifdef X_POSIX_C_SOURCE
-# define _POSIX_C_SOURCE X_POSIX_C_SOURCE
-# include <signal.h>
-# undef _POSIX_C_SOURCE
-# else
-# define _POSIX_SOURCE
-# include <signal.h>
-# undef _POSIX_SOURCE
-# endif
-#endif
-
-#include <fcntl.h>
-
-#ifndef __bsdi__
-# if !defined(__NetBSD__) && !defined(__OpenBSD__)
-# ifndef Lynx
-# ifndef i386
-# include <poll.h>
-# else
-# include <sys/poll.h>
-# endif
-# endif
-# endif
-#else
-# include <unistd.h>
-#endif
-
-#include <errno.h>
-#include <memory.h>
-
-/*
- * Sun specific headers Sun moved in Solaris, and are different for NetBSD.
- *
- * Even if only needed by one source file, I have put them here
- * to simplify finding them...
- */
-#ifdef SVR4
-# include <sys/fbio.h>
-# include <sys/kbd.h>
-# include <sys/kbio.h>
-# include <sys/msio.h>
-# include <sys/vuid_event.h>
-# include <sys/memreg.h>
-# include <stropts.h>
-# define usleep(usec) poll((struct pollfd *) 0, (size_t) 0, usec / 1000)
-#else
-# if !defined(__NetBSD__) && !defined(__OpenBSD__) && !defined(Lynx)
-# include <sun/fbio.h>
-# include <sundev/kbd.h>
-# include <sundev/kbio.h>
-# include <sundev/msio.h>
-# include <sundev/vuid_event.h>
-# include <pixrect/pixrect.h>
-# include <pixrect/memreg.h>
-extern int ioctl();
-extern int getrlimit();
-extern int setrlimit();
-extern int getpagesize();
-# else
-# if defined (__NetBSD__) || defined (__OpenBSD__)
-# include <machine/fbio.h>
-# include <machine/kbd.h>
-# include <machine/kbio.h>
-# include <machine/vuid_event.h>
-# endif
-# ifdef __bsdi__
-# include <sys/fbio.h>
-# include </sys/sparc/dev/kbd.h>
-# include </sys/sparc/dev/kbio.h>
-# include </sys/sparc/dev/vuid_event.h>
-# endif
-# ifdef Lynx
-# ifndef __P
-# define __P(x) x
-# endif
-# include <signal.h>
-# ifdef PATCHED_CONSOLE
-# include <kbio.h>
-# include <kbd.h>
-# else
-# define KB_SUN2 2 /* type 2 keyboard */
-# define KB_SUN3 3 /* type 3 keyboard */
-# define KB_SUN4 4 /* type 4 keyboard */
-# define KIOCSLED TIOCLED
-# define LED_NUM_LOCK NUM_LOCK
-# define LED_SCROLL_LOCK SCROL_LOCK
-# define LED_CAPS_LOCK CAPS_LOCK
-# define LED_COMPOSE COMPOSE_LED
-# endif
-# include <smem.h>
-# include "fbio.h"
-# include "vuid_event.h"
-# define FBIORESET _IO('F', 29)
-# endif
-# endif
-#endif
-extern int gettimeofday();
-
-/*
- * Server specific headers
- */
-#include "misc.h"
-#undef abs /* don't munge function prototypes in headers, sigh */
-#include "scrnintstr.h"
-#ifdef NEED_EVENTS
-# include "inputstr.h"
-#endif
-#include "input.h"
-#include "colormapst.h"
-#include "colormap.h"
-#include "cursorstr.h"
-#include "cursor.h"
-#include "dixstruct.h"
-#include "dix.h"
-#include "opaque.h"
-#include "resource.h"
-#include "servermd.h"
-#include "windowstr.h"
-
-/*
- * ddx specific headers
- */
-#ifndef PSZ
-#define PSZ 8
-#endif
-
-#include "mi/mibstore.h"
-#include "mi/mipointer.h"
-
-extern int monitorResolution;
-
-
-/* Frame buffer devices */
-#ifdef SVR4
-# define CGTWO0DEV "/dev/fbs/cgtwo0"
-# define CGTWO1DEV "/dev/fbs/cgtwo1"
-# define CGTWO2DEV "/dev/fbs/cgtwo2"
-# define CGTWO3DEV "/dev/fbs/cgtwo3"
-# define CGTHREE0DEV "/dev/fbs/cgthree0"
-# define CGTHREE1DEV "/dev/fbs/cgthree1"
-# define CGTHREE2DEV "/dev/fbs/cgthree2"
-# define CGTHREE3DEV "/dev/fbs/cgthree3"
-# define CGFOUR0DEV "/dev/fbs/cgfour0"
-# define CGSIX0DEV "/dev/fbs/cgsix0"
-# define CGSIX1DEV "/dev/fbs/cgsix1"
-# define CGSIX2DEV "/dev/fbs/cgsix2"
-# define CGSIX3DEV "/dev/fbs/cgsix3"
-# define BWTWO0DEV "/dev/fbs/bwtwo0"
-# define BWTWO1DEV "/dev/fbs/bwtwo1"
-# define BWTWO2DEV "/dev/fbs/bwtwo2"
-# define BWTWO3DEV "/dev/fbs/bwtwo3"
-# define CGEIGHT0DEV "/dev/fbs/cgeight0"
-#else
-# define CGTWO0DEV "/dev/cgtwo0"
-# define CGTWO1DEV "/dev/cgtwo1"
-# define CGTWO2DEV "/dev/cgtwo2"
-# define CGTWO3DEV "/dev/cgtwo3"
-# define CGTHREE0DEV "/dev/cgthree0"
-# define CGTHREE1DEV "/dev/cgthree1"
-# define CGTHREE2DEV "/dev/cgthree2"
-# define CGTHREE3DEV "/dev/cgthree3"
-# define CGFOUR0DEV "/dev/cgfour0"
-# define CGSIX0DEV "/dev/cgsix0"
-# define CGSIX1DEV "/dev/cgsix1"
-# define CGSIX2DEV "/dev/cgsix2"
-# define CGSIX3DEV "/dev/cgsix3"
-# define BWTWO0DEV "/dev/bwtwo0"
-# define BWTWO1DEV "/dev/bwtwo1"
-# define BWTWO2DEV "/dev/bwtwo2"
-# define BWTWO3DEV "/dev/bwtwo3"
-# define CGEIGHT0DEV "/dev/cgeight0"
-#endif
-
-/*
- * MAXEVENTS is the maximum number of events the mouse and keyboard functions
- * will read on a given call to their GetEvents vectors.
- */
-#ifndef Lynx
-#define MAXEVENTS 32
-#else
-/* currently our mouse stuff is pretty naive, so we need a lot of events */
-#define MAXEVENTS 256
-#endif
-
-/*
- * Data private to any sun keyboard.
- */
-typedef struct {
- int fd;
- int type; /* Type of keyboard */
- int layout; /* The layout of the keyboard */
- int click; /* kbd click save state */
- Leds leds; /* last known LED state */
-} sunKbdPrivRec, *sunKbdPrivPtr;
-
-extern sunKbdPrivRec sunKbdPriv;
-
-/*
- * Data private to any sun pointer device.
- */
-typedef struct {
- int fd;
- int bmask; /* last known button state */
-} sunPtrPrivRec, *sunPtrPrivPtr;
-
-extern sunPtrPrivRec sunPtrPriv;
-
-typedef struct {
- BYTE key;
- CARD8 modifiers;
-} SunModmapRec;
-
-typedef struct {
- int width, height;
- Bool has_cursor;
- CursorPtr pCursor; /* current cursor */
-} sunCursorRec, *sunCursorPtr;
-
-typedef struct {
- ColormapPtr installedMap;
- CloseScreenProcPtr CloseScreen;
- void (*UpdateColormap)();
- sunCursorRec hardwareCursor;
- Bool hasHardwareCursor;
-} sunScreenRec, *sunScreenPtr;
-
-#define GetScreenPrivate(s) ((sunScreenPtr) ((s)->devPrivates[sunScreenIndex].ptr))
-#define SetupScreen(s) sunScreenPtr pPrivate = GetScreenPrivate(s)
-
-typedef struct {
-#ifndef Lynx
- unsigned char* fb; /* Frame buffer itself */
-#else
- unsigned char* fbuf; /* Frame buffer itself */
- void* ramdac; /* Color LookUp table */
- void* fb; /* GX FB control registers:
- * sunGX.c relies on this name
- */
- void* tec; /* GX TEC registers */
- void* thc; /* GX THC registers */
- void* fhc; /* GX FHC registers */
-#endif
- int fd; /* frame buffer for ioctl()s, */
- struct fbtype info; /* Frame buffer characteristics */
- void (*EnterLeave)();/* screen switch */
- unsigned char* fbPriv; /* fbattr stuff, for the real type */
-} fbFd;
-
-typedef Bool (*sunFbInitProc)(
- int /* screen */,
- ScreenPtr /* pScreen */,
- int /* argc */,
- char** /* argv */
-);
-
-typedef struct {
- sunFbInitProc init; /* init procedure for this fb */
- char* name; /* /usr/include/fbio names */
-} sunFbDataRec;
-
-#ifdef XKB
-extern Bool noXkbExtension;
-#endif
-
-extern Bool sunAutoRepeatHandlersInstalled;
-extern long sunAutoRepeatInitiate;
-extern long sunAutoRepeatDelay;
-extern sunFbDataRec sunFbData[];
-extern fbFd sunFbs[];
-extern Bool sunSwapLkeys;
-extern Bool sunFlipPixels;
-extern Bool sunActiveZaphod;
-extern Bool sunFbInfo;
-extern Bool sunCG4Frob;
-extern Bool sunNoGX;
-extern int sunScreenIndex;
-extern int* sunProtected;
-
-extern Bool sunCursorInitialize(
- ScreenPtr /* pScreen */
-);
-
-extern void sunDisableCursor(
- ScreenPtr /* pScreen */
-);
-
-extern int sunChangeKbdTranslation(
- int /* fd */,
- Bool /* makeTranslated */
-);
-
-extern void sunNonBlockConsoleOff(
-#if defined(SVR4) || defined(CSRG_BASED) || defined(Lynx)
- void
-#else
- char* /* arg */
-#endif
-);
-
-extern void sunEnqueueEvents(
- void
-);
-
-extern void sunEnqueueKbdEvents(
- void
-);
-
-extern void sunEnqueueMseEvents(
- void
-);
-
-extern int sunGXInit(
- ScreenPtr /* pScreen */,
- fbFd* /* fb */
-);
-
-extern Bool sunSaveScreen(
- ScreenPtr /* pScreen */,
- int /* on */
-);
-
-extern Bool sunScreenInit(
- ScreenPtr /* pScreen */
-);
-
-extern pointer sunMemoryMap(
- size_t /* len */,
- off_t /* off */,
- int /* fd */
-#ifdef Lynx
- , char * /* name */
-#endif
-);
-
-extern Bool sunScreenAllocate(
- ScreenPtr /* pScreen */
-);
-
-extern Bool sunInitCommon(
- int /* scrn */,
- ScreenPtr /* pScrn */,
- off_t /* offset */,
- Bool (* /* init1 */)(),
- void (* /* init2 */)(),
- Bool (* /* cr_cm */)(),
- Bool (* /* save */)(),
- int /* fb_off */
-);
-
-extern Firm_event* sunKbdGetEvents(
- int /* fd */,
- Bool /* on */,
- int* /* pNumEvents */,
- Bool* /* pAgain */
-);
-
-extern Firm_event* sunMouseGetEvents(
- int /* fd */,
- Bool /* on */,
- int* /* pNumEvents */,
- Bool* /* pAgain */
-);
-
-extern void sunKbdEnqueueEvent(
- DeviceIntPtr /* device */,
- Firm_event* /* fe */
-);
-
-extern void sunMouseEnqueueEvent(
- DeviceIntPtr /* device */,
- Firm_event* /* fe */
-);
-
-extern int sunKbdProc(
- DeviceIntPtr /* pKeyboard */,
- int /* what */
-);
-
-extern int sunMouseProc(
- DeviceIntPtr /* pMouse */,
- int /* what */
-);
-
-extern void sunKbdWait(
- void
-);
-
-/*-
- * TVTOMILLI(tv)
- * Given a struct timeval, convert its time into milliseconds...
- */
-#define TVTOMILLI(tv) (((tv).tv_usec/1000)+((tv).tv_sec*1000))
-
-extern Bool sunCfbSetupScreen(
- ScreenPtr /* pScreen */,
- pointer /* pbits */, /* pointer to screen bitmap */
- int /* xsize */, /* in pixels */
- int /* ysize */,
- int /* dpix */, /* dots per inch */
- int /* dpiy */, /* dots per inch */
- int /* width */, /* pixel width of frame buffer */
- int /* bpp */ /* bits per pixel of root */
-);
-
-extern Bool sunCfbFinishScreenInit(
- ScreenPtr /* pScreen */,
- pointer /* pbits */, /* pointer to screen bitmap */
- int /* xsize */, /* in pixels */
- int /* ysize */,
- int /* dpix */, /* dots per inch */
- int /* dpiy */, /* dots per inch */
- int /* width */, /* pixel width of frame buffer */
- int /* bpp */ /* bits per pixel of root */
-);
-
-extern Bool sunCfbScreenInit(
- ScreenPtr /* pScreen */,
- pointer /* pbits */, /* pointer to screen bitmap */
- int /* xsize */, /* in pixels */
- int /* ysize */,
- int /* dpix */, /* dots per inch */
- int /* dpiy */, /* dots per inch */
- int /* width */, /* pixel width of frame buffer */
- int /* bpp */ /* bits per pixel of root */
-);
-
-extern void sunInstallColormap(
- ColormapPtr /* cmap */
-);
-
-extern void sunUninstallColormap(
- ColormapPtr /* cmap */
-);
-
-extern int sunListInstalledColormaps(
- ScreenPtr /* pScreen */,
- Colormap* /* pCmapList */
-);
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/sunLynx/sunLyCfb.c b/nx-X11/programs/Xserver/hw/sunLynx/sunLyCfb.c
deleted file mode 100644
index 48f63c759..000000000
--- a/nx-X11/programs/Xserver/hw/sunLynx/sunLyCfb.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/* $Xorg: sunLyCfb.c,v 1.4 2001/02/09 02:04:44 xorgcvs Exp $ */
-/*
- * This is sunCfb.c modified for LynxOS
- * Copyright 1996 by Thomas Mueller
- *
- * 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 Thomas Mueller not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Thomas Mueller makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * THOMAS MUELLER DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THOMAS MUELLER 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.
- *
- */
-/* $XFree86: xc/programs/Xserver/hw/sunLynx/sunLyCfb.c,v 3.4 2001/01/17 22:36:53 dawes Exp $ */
-
-/*
-Copyright 1990, 1998 The Open Group
-
-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.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
- */
-
-/************************************************************
-Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright no-
-tice appear in all copies and that both that copyright no-
-tice and this permission notice appear in supporting docu-
-mentation, and that the names of Sun or The Open Group
-not be used in advertising or publicity pertaining to
-distribution of the software without specific prior
-written permission. Sun and The Open Group make no
-representations about the suitability of this software for
-any purpose. It is provided "as is" without any express or
-implied warranty.
-
-SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
-NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE LI-
-ABLE 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.
-
-********************************************************/
-
-/*
- * Copyright 1987 by the Regents of the University of California
- * Copyright 1987 by Adam de Boor, UC Berkeley
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies. The University of California
- * makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without
- * express or implied warranty.
- */
-
-/****************************************************************/
-/* Modified from sunCG4C.c for X11R3 by Tom Jarmolowski */
-/****************************************************************/
-
-/*
- * Copyright 1991, 1992, 1993 Kaleb S. Keithley
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies. Kaleb S. Keithley makes no
- * representations about the suitability of this software for
- * any purpose. It is provided "as is" without express or
- * implied warranty.
- */
-
-#include "sun.h"
-#include "cfb/cfb.h"
-#include "mi/miline.h"
-
-#define GXZEROLINEBIAS (OCTANT1 | OCTANT3 | OCTANT4 | OCTANT6)
-
-static void CGUpdateColormap(pScreen, dex, count, rmap, gmap, bmap)
- ScreenPtr pScreen;
- int dex, count;
- u_char *rmap, *gmap, *bmap;
-{
- struct fbcmap sunCmap;
-
- sunCmap.index = dex;
- sunCmap.count = count;
- sunCmap.red = &rmap[dex];
- sunCmap.green = &gmap[dex];
- sunCmap.blue = &bmap[dex];
-
- if (sunIoctl(&sunFbs[pScreen->myNum], FBIOPUTCMAP, &sunCmap) < 0) {
- Error("CGUpdateColormap");
- FatalError( "CGUpdateColormap: FBIOPUTCMAP failed\n" );
- }
-}
-
-void sunInstallColormap(cmap)
- ColormapPtr cmap;
-{
- SetupScreen(cmap->pScreen);
- register int i;
- register Entry *pent;
- register VisualPtr pVisual = cmap->pVisual;
- u_char rmap[256], gmap[256], bmap[256];
- unsigned long rMask, gMask, bMask;
- int oRed, oGreen, oBlue;
-
- if (cmap == pPrivate->installedMap)
- return;
- if (pPrivate->installedMap)
- WalkTree(pPrivate->installedMap->pScreen, TellLostMap,
- (pointer) &(pPrivate->installedMap->mid));
- if ((pVisual->class | DynamicClass) == DirectColor) {
- if (pVisual->ColormapEntries < 256) {
- rMask = pVisual->redMask;
- gMask = pVisual->greenMask;
- bMask = pVisual->blueMask;
- oRed = pVisual->offsetRed;
- oGreen = pVisual->offsetGreen;
- oBlue = pVisual->offsetBlue;
- } else {
- rMask = gMask = bMask = 255;
- oRed = oGreen = oBlue = 0;
- }
- for (i = 0; i < 256; i++) {
- rmap[i] = cmap->red[(i & rMask) >> oRed].co.local.red >> 8;
- gmap[i] = cmap->green[(i & gMask) >> oGreen].co.local.green >> 8;
- bmap[i] = cmap->blue[(i & bMask) >> oBlue].co.local.blue >> 8;
- }
- } else {
- for (i = 0, pent = cmap->red;
- i < pVisual->ColormapEntries;
- i++, pent++) {
- if (pent->fShared) {
- rmap[i] = pent->co.shco.red->color >> 8;
- gmap[i] = pent->co.shco.green->color >> 8;
- bmap[i] = pent->co.shco.blue->color >> 8;
- }
- else {
- rmap[i] = pent->co.local.red >> 8;
- gmap[i] = pent->co.local.green >> 8;
- bmap[i] = pent->co.local.blue >> 8;
- }
- }
- }
- pPrivate->installedMap = cmap;
- (*pPrivate->UpdateColormap) (cmap->pScreen, 0, 256, rmap, gmap, bmap);
- WalkTree(cmap->pScreen, TellGainedMap, (pointer) &(cmap->mid));
-}
-
-void sunUninstallColormap(cmap)
- ColormapPtr cmap;
-{
- SetupScreen(cmap->pScreen);
- if (cmap == pPrivate->installedMap) {
- Colormap defMapID = cmap->pScreen->defColormap;
-
- if (cmap->mid != defMapID) {
- ColormapPtr defMap = (ColormapPtr) LookupIDByType(defMapID,
- RT_COLORMAP);
-
- if (defMap)
- (*cmap->pScreen->InstallColormap)(defMap);
- else
- ErrorF("sunFbs: Can't find default colormap\n");
- }
- }
-}
-
-int sunListInstalledColormaps(pScreen, pCmapList)
- ScreenPtr pScreen;
- Colormap *pCmapList;
-{
- SetupScreen(pScreen);
- *pCmapList = pPrivate->installedMap->mid;
- return (1);
-}
-
-static void CGStoreColors(pmap, ndef, pdefs)
- ColormapPtr pmap;
- int ndef;
- xColorItem *pdefs;
-{
- SetupScreen(pmap->pScreen);
- u_char rmap[256], gmap[256], bmap[256];
- xColorItem expanddefs[256];
- register int i;
-
- if (pPrivate->installedMap != NULL && pPrivate->installedMap != pmap)
- return;
- if ((pmap->pVisual->class | DynamicClass) == DirectColor) {
- ndef = cfbExpandDirectColors(pmap, ndef, pdefs, expanddefs);
- pdefs = expanddefs;
- }
- while (ndef--) {
- i = pdefs->pixel;
- rmap[i] = pdefs->red >> 8;
- gmap[i] = pdefs->green >> 8;
- bmap[i] = pdefs->blue >> 8;
- (*pPrivate->UpdateColormap) (pmap->pScreen, i, 1, rmap, gmap, bmap);
- pdefs++;
- }
-}
-
-static void CGScreenInit (pScreen)
- ScreenPtr pScreen;
-{
-#ifndef STATIC_COLOR /* { */
- SetupScreen (pScreen);
- pScreen->InstallColormap = sunInstallColormap;
- pScreen->UninstallColormap = sunUninstallColormap;
- pScreen->ListInstalledColormaps = sunListInstalledColormaps;
- pScreen->StoreColors = CGStoreColors;
- pPrivate->UpdateColormap = CGUpdateColormap;
- if (sunFlipPixels) {
- Pixel pixel = pScreen->whitePixel;
- pScreen->whitePixel = pScreen->blackPixel;
- pScreen->blackPixel = pixel;
- }
-#endif /* } */
-}
-
-static void checkMono (argc, argv)
- int argc;
- char** argv;
-{
- int i;
-
- for (i = 1; i < argc; i++)
- if (strcmp (argv[i], "-mono") == 0)
- ErrorF ("-mono not appropriate for CG3/CG6\n");
-}
-
-Bool sunCG3Init (screen, pScreen, argc, argv)
- int screen; /* what screen am I going to be */
- ScreenPtr pScreen; /* The Screen to initialize */
- int argc; /* The number of the Server's arguments. */
- char **argv; /* The arguments themselves. Don't change! */
-{
- unsigned long addr;
-
- checkMono (argc, argv);
- sunFbs[screen].EnterLeave = (void (*)())NoopDDA;
- if (ioctl(sunFbs[screen].fd, TIO_QUERYLOC, &addr) < 0) {
- perror("TIO_QUERYLOC");
- FatalError("%s:%d can't query FB addr sunFbs[%d].fd=%d\n",
- __FILE__, __LINE__, screen, sunFbs[screen]);
- }
- return sunInitCommon (screen, pScreen, (off_t) addr,
- sunCfbScreenInit, CGScreenInit,
- cfbCreateDefColormap, sunSaveScreen, 0);
-}
-
-Bool sunCG6Init (screen, pScreen, argc, argv)
- int screen; /* The index of pScreen in the ScreenInfo */
- ScreenPtr pScreen; /* The Screen to initialize */
- int argc; /* The number of the Server's arguments. */
- char** argv; /* The arguments themselves. Don't change! */
-{
- unsigned long dacoffset;
- unsigned long addr;
- pointer fbc;
- pointer fhc;
- pointer fb;
-
- checkMono (argc, argv);
- if (!sunScreenAllocate (pScreen))
- return FALSE;
- if (!sunFbs[screen].fbuf) {
- if (ioctl(sunFbs[screen].fd, TIO_QUERYLOC, &addr) < 0) {
- perror("TIO_QUERYLOC");
- FatalError("%s:%d can't query FB addr sunFbs[%d].fd=%d\n",
- __FILE__, __LINE__, screen, sunFbs[screen]);
- }
- if ((fb = sunMemoryMap(0x00100000, (off_t) addr + 0x00800000UL,
- sunFbs[screen].fd, "FB")) == NULL)
- return FALSE;
-
- if ((fbc = sunMemoryMap(0x2000, (off_t) addr + 0x00700000UL,
- sunFbs[screen].fd, "FBC_TEC")) == NULL)
- return FALSE;
-
- if ((fhc = sunMemoryMap(0x2000, (off_t) addr + 0x00300000UL,
- sunFbs[screen].fd, "FHC_THC")) == NULL)
- return FALSE;
-
- sunFbs[screen].fhc = fhc;
- sunFbs[screen].thc = (char *)fhc + 0x1000;
- sunFbs[screen].fb = fbc;
- sunFbs[screen].tec = (char *)fbc + 0x1000;
- sunFbs[screen].fbuf = fb;
-
- if (ioctl(sunFbs[screen].fd, TIO_QUERYRAMDAC, &dacoffset) < 0)
- FatalError("can't query DAC addr\n");
- if ((sunFbs[screen].ramdac =
- sunMemoryMap((size_t) sunFbs[screen].info.fb_cmsize * 3,
- (unsigned long)addr + dacoffset,
- sunFbs[screen].fd, "DAC")) == NULL)
- return FALSE;
- }
-
- sunFbs[screen].EnterLeave = (void (*)())NoopDDA;
- if (!sunCfbSetupScreen (pScreen,
- sunFbs[screen].fbuf,
- sunFbs[screen].info.fb_width,
- sunFbs[screen].info.fb_height,
- monitorResolution, monitorResolution,
- sunFbs[screen].info.fb_width,
- sunFbs[screen].info.fb_depth))
- return FALSE;
- if (sunNoGX == FALSE) {
- /* cleanup CG& hardware state */
- if (sunIoctl(&sunFbs[screen], FBIORESET, 0) < 0)
- perror("FBIORESET");
- if (!sunGXInit (pScreen, &sunFbs[screen]))
- return FALSE;
- }
- if (!sunCfbFinishScreenInit(pScreen,
- sunFbs[screen].fbuf,
- sunFbs[screen].info.fb_width,
- sunFbs[screen].info.fb_height,
- monitorResolution, monitorResolution,
- sunFbs[screen].info.fb_width,
- sunFbs[screen].info.fb_depth))
- return FALSE;
- miInitializeBackingStore(pScreen);
- if (sunNoGX == FALSE) {
- miSetZeroLineBias(pScreen, GXZEROLINEBIAS);
- }
- CGScreenInit (pScreen);
- if (!sunScreenInit (pScreen))
- return FALSE;
- sunSaveScreen (pScreen, SCREEN_SAVER_OFF);
- return cfbCreateDefColormap(pScreen);
-}
diff --git a/nx-X11/programs/Xserver/hw/sunLynx/sunLyFbs.c b/nx-X11/programs/Xserver/hw/sunLynx/sunLyFbs.c
deleted file mode 100644
index 25448d91d..000000000
--- a/nx-X11/programs/Xserver/hw/sunLynx/sunLyFbs.c
+++ /dev/null
@@ -1,292 +0,0 @@
-/* $Xorg: sunLyFbs.c,v 1.4 2001/02/09 02:04:44 xorgcvs Exp $ */
-/*
- * This is sunFbs.c modified for LynxOS
- * Copyright 1996 by Thomas Mueller
- *
- * 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 Thomas Mueller not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Thomas Mueller makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * THOMAS MUELLER DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THOMAS MUELLER 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.
- *
- */
-/* $XFree86: xc/programs/Xserver/hw/sunLynx/sunLyFbs.c,v 3.6 2001/12/14 19:59:44 dawes Exp $ */
-
-/*
-Copyright 1990, 1993, 1998 The Open Group
-
-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.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
- */
-
-/************************************************************
-Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright no-
-tice appear in all copies and that both that copyright no-
-tice and this permission notice appear in supporting docu-
-mentation, and that the names of Sun or The Open Group
-not be used in advertising or publicity pertaining to
-distribution of the software without specific prior
-written permission. Sun and The Open Group make no
-representations about the suitability of this software for
-any purpose. It is provided "as is" without any express or
-implied warranty.
-
-SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
-NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE LI-
-ABLE 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.
-
-********************************************************/
-
-/*
- * Copyright 1987 by the Regents of the University of California
- * Copyright 1987 by Adam de Boor, UC Berkeley
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies. The University of California
- * makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without
- * express or implied warranty.
- */
-
-/****************************************************************/
-/* Modified from sunCG4C.c for X11R3 by Tom Jarmolowski */
-/****************************************************************/
-
-#include "sun.h"
-#include <smem.h>
-
-int sunScreenIndex;
-
-static unsigned long generation = 0;
-
-pointer sunMemoryMap (
- size_t len,
- off_t off,
- int fd,
- char *name
- )
-{
- int pagemask, mapsize;
- caddr_t addr;
- pointer mapaddr;
-
- pagemask = getpagesize() - 1;
- mapsize = ((int) len + pagemask) & ~pagemask;
- addr = 0;
-
- mapaddr = smem_create(name, (char *)off, mapsize, SM_READ|SM_WRITE);
- if (mapaddr == (pointer) -1) {
- Error ("mapping frame buffer memory");
- (void) close (fd);
- mapaddr = (pointer) NULL;
- }
- return mapaddr;
-}
-
-Bool sunScreenAllocate (
- ScreenPtr pScreen)
-{
- sunScreenPtr pPrivate;
- extern int AllocateScreenPrivateIndex();
-
- if (generation != serverGeneration)
- {
- sunScreenIndex = AllocateScreenPrivateIndex();
- if (sunScreenIndex < 0)
- return FALSE;
- generation = serverGeneration;
- }
- pPrivate = (sunScreenPtr) xalloc (sizeof (sunScreenRec));
- if (!pPrivate)
- return FALSE;
-
- pScreen->devPrivates[sunScreenIndex].ptr = (pointer) pPrivate;
- return TRUE;
-}
-
-Bool sunSaveScreen (
- ScreenPtr pScreen,
- int on)
-{
- int state;
-
- if (on != SCREEN_SAVER_FORCER)
- {
- if (on == SCREEN_SAVER_ON)
- state = 0;
- else
- state = 1;
- (void) sunIoctl(&sunFbs[pScreen->myNum], FBIOSVIDEO, &state);
- }
- return( TRUE );
-}
-
-static Bool closeScreen (i, pScreen)
- int i;
- ScreenPtr pScreen;
-{
- SetupScreen(pScreen);
- Bool ret;
- struct fbcmap sunCmap;
- unsigned char color;
-
- (void) OsSignal (SIGIO, SIG_IGN);
- sunDisableCursor (pScreen);
- pScreen->CloseScreen = pPrivate->CloseScreen;
- ret = (*pScreen->CloseScreen) (i, pScreen);
- (void) (*pScreen->SaveScreen) (pScreen, SCREEN_SAVER_OFF);
- /* probably this doesn't belong here: restore black&white cmap */
- sunCmap.count = 1;
- sunCmap.index = 0;
- sunCmap.red = sunCmap.green = sunCmap.blue = &color;
- color = 0xff;
- (void) sunIoctl(&sunFbs[pScreen->myNum], FBIOPUTCMAP, &sunCmap);
- sunCmap.index = 0xff;
- color = 0;
- (void) sunIoctl(&sunFbs[pScreen->myNum], FBIOPUTCMAP, &sunCmap);
- xfree ((pointer) pPrivate);
- return ret;
-}
-
-Bool sunScreenInit (
- ScreenPtr pScreen)
-{
- SetupScreen(pScreen);
- extern void sunBlockHandler();
- extern void sunWakeupHandler();
- static ScreenPtr autoRepeatScreen;
- extern miPointerScreenFuncRec sunPointerScreenFuncs;
-
- pPrivate->installedMap = 0;
- pPrivate->CloseScreen = pScreen->CloseScreen;
- pScreen->CloseScreen = closeScreen;
- pScreen->SaveScreen = sunSaveScreen;
-#ifdef XKB
- if (noXkbExtension) {
-#endif
- /*
- * Block/Unblock handlers
- */
- if (sunAutoRepeatHandlersInstalled == FALSE) {
- autoRepeatScreen = pScreen;
- sunAutoRepeatHandlersInstalled = TRUE;
- }
-
- if (pScreen == autoRepeatScreen) {
- pScreen->BlockHandler = sunBlockHandler;
- pScreen->WakeupHandler = sunWakeupHandler;
- }
-#ifdef XKB
- } else {
- /* this works around a weird behaviour on LynxOS 2.4.0:
- * usually we have no problems using true SIGIO driven mouse input
- * as it is used on the other UN*X Suns. On LynxOS we have a
- * strange behaviour upon the very first server startup after a
- * reboot. We won't get SIGIOs from the mouse device. The mouse
- * will only move if we get SIGIOs from the keyboard.
- * The solution (for now) is to use a WakeupHandler and
- * poll the mouse file descriptor.
- */
- pScreen->WakeupHandler = sunWakeupHandler;
- }
-#endif
- if (!sunCursorInitialize (pScreen))
- miDCInitialize (pScreen, &sunPointerScreenFuncs);
- return TRUE;
-}
-
-Bool sunInitCommon (
- int scrn,
- ScreenPtr pScrn,
- off_t offset,
- Bool (*init1)(),
- void (*init2)(),
- Bool (*cr_cm)(),
- Bool (*save)(),
- int fb_off)
-{
- unsigned char* fb = sunFbs[scrn].fbuf;
- unsigned char* dac = sunFbs[scrn].ramdac;
-
- if (!sunScreenAllocate (pScrn))
- return FALSE;
- if (!fb) {
- if ((fb = sunMemoryMap ((size_t) sunFbs[scrn].info.fb_size,
- (unsigned long)offset + 0x00800000UL,
- sunFbs[scrn].fd, "FB")) == NULL)
- return FALSE;
- sunFbs[scrn].fbuf = fb;
- if (!dac)
- {
- unsigned long dacoffset;
-
- if (ioctl(sunFbs[scrn].fd, TIO_QUERYRAMDAC, &dacoffset) < 0)
- FatalError("can't query DAC addr\n");
- if ((dac = sunMemoryMap((size_t) sunFbs[scrn].info.fb_cmsize * 3,
- (unsigned long)offset + dacoffset,
- sunFbs[scrn].fd, "DAC")) == NULL)
- return FALSE;
-
- sunFbs[scrn].ramdac = dac;
- }
- }
- /* mfbScreenInit() or cfbScreenInit() */
- if (!(*init1)(pScrn, fb + fb_off,
- sunFbs[scrn].info.fb_width,
- sunFbs[scrn].info.fb_height,
- monitorResolution, monitorResolution,
- sunFbs[scrn].info.fb_width,
- sunFbs[scrn].info.fb_depth))
- return FALSE;
- miInitializeBackingStore(pScrn);
- /* sunCGScreenInit() if cfb... */
- if (init2)
- (*init2)(pScrn);
- if (!sunScreenInit(pScrn))
- return FALSE;
- (void) (*save) (pScrn, SCREEN_SAVER_OFF);
- return (*cr_cm)(pScrn);
-}
-
diff --git a/nx-X11/programs/Xserver/hw/sunLynx/sunLyInit.c b/nx-X11/programs/Xserver/hw/sunLynx/sunLyInit.c
deleted file mode 100644
index 941b363eb..000000000
--- a/nx-X11/programs/Xserver/hw/sunLynx/sunLyInit.c
+++ /dev/null
@@ -1,648 +0,0 @@
-/* $Xorg: sunLyInit.c,v 1.3 2000/08/17 19:48:36 cpqbld Exp $ */
-/*
- * This is sunInit.c modified for LynxOS
- * Copyright 1996 by Thomas Mueller
- *
- * 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 Thomas Mueller not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Thomas Mueller makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * THOMAS MUELLER DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THOMAS MUELLER 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.
- *
- */
-/* $XFree86: xc/programs/Xserver/hw/sunLynx/sunLyInit.c,v 3.8 2001/01/17 22:36:53 dawes Exp $ */
-
-/*
- * Copyright 1987 by the Regents of the University of California
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies. The University of California
- * makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without
- * express or implied warranty.
- *
- *
- */
-
-/************************************************************
-Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright no-
-tice appear in all copies and that both that copyright no-
-tice and this permission notice appear in supporting docu-
-mentation, and that the names of Sun or The Open Group
-not be used in advertising or publicity pertaining to
-distribution of the software without specific prior
-written permission. Sun and The Open Group make no
-representations about the suitability of this software for
-any purpose. It is provided "as is" without any express or
-implied warranty.
-
-SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
-NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE LI-
-ABLE 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.
-
-*******************************************************/
-
-#include "sun.h"
-#include "gcstruct.h"
-#include "mi.h"
-#include "mibstore.h"
-#include "cfb.h"
-
-Bool onConsole = FALSE; /* wether stdin is /dev/con */
-
-/* maximum pixmap depth */
-#ifndef SUNMAXDEPTH
-#define SUNMAXDEPTH 8
-#endif
-
-extern Bool sunBW2Init(
- int /* screen */,
- ScreenPtr /* pScreen */,
- int /* argc */,
- char** /* argv */
-);
-#define BW2I sunBW2Init
-#if SUNMAXDEPTH == 1 /* { */
-#define CG3I NULL
-#define CG6I NULL
-#else /* }{ */
-extern Bool sunCG3Init(
- int /* screen */,
- ScreenPtr /* pScreen */,
- int /* argc */,
- char** /* argv */
-);
-#define CG3I sunCG3Init
-#ifdef FBTYPE_SUNFAST_COLOR /* { */
-extern Bool sunCG6Init(
- int /* screen */,
- ScreenPtr /* pScreen */,
- int /* argc */,
- char** /* argv */
-);
-#define CG6I sunCG6Init
-#else /* }{ */
-#define CG6I NULL
-#endif /* } */
-#endif /* } */
-
-extern KeySymsRec sunKeySyms[];
-extern SunModmapRec *sunModMaps[];
-extern int sunMaxLayout;
-extern KeySym* sunType4KeyMaps[];
-extern SunModmapRec* sunType4ModMaps[];
-
-static Bool sunDevsInited = FALSE;
-
-Bool sunAutoRepeatHandlersInstalled; /* FALSE each time InitOutput called */
-Bool sunSwapLkeys = FALSE;
-Bool sunFlipPixels = FALSE;
-Bool sunFbInfo = FALSE;
-Bool sunCG4Frob = FALSE;
-Bool sunNoGX = FALSE;
-
-sunKbdPrivRec sunKbdPriv = {
- -1, /* fd */
- -1, /* type */
- -1, /* layout */
- 0, /* click */
- (Leds)0, /* leds */
-};
-
-sunPtrPrivRec sunPtrPriv = {
- -1, /* fd */
- 0 /* Current button state */
-};
-
-/*
- * The name member in the following table corresponds to the
- * FBTYPE_* macros defined in /usr/include/sun/fbio.h file
- */
-sunFbDataRec sunFbData[FBTYPE_LASTPLUSONE] = {
- { NULL, "SUN1BW (bw1)" },
- { NULL, "SUN1COLOR (cg1)" },
- { BW2I, "SUN2BW (bw2)" },
- { NULL, "SUN2COLOR (cg2)" },
- { NULL, "SUN2GP (gp1/gp2)" },
- { NULL, "SUN5COLOR (cg5/386i accel)" },
- { CG3I, "SUN3COLOR (cg3)" },
- { NULL, "MEMCOLOR (cg8)" },
- { NULL, "SUN4COLOR (cg4)" },
- { NULL, "NOTSUN1" },
- { NULL, "NOTSUN2" },
- { NULL, "NOTSUN3" },
- { CG6I, "SUNFAST_COLOR (cg6/gx)" }, /* last we need */
-};
-
-/*
- * a list of devices to try if there is no environment or command
- * line list of devices
- */
-#if SUNMAXDEPTH == 1 /* { */
-static char *fallbackList[] = {
- "/dev/bwtwo",
-};
-#else /* }{ */
-static char *fallbackList[] = {
- "/dev/bwtwo", "/dev/cgthree", "/dev/cgsix",
-};
-#endif /* } */
-
-#define FALLBACK_LIST_LEN sizeof fallbackList / sizeof fallbackList[0]
-
-fbFd sunFbs[MAXSCREENS];
-
-static PixmapFormatRec formats[] = {
- { 1, 1, BITMAP_SCANLINE_PAD } /* 1-bit deep */
-#if SUNMAXDEPTH > 1
- ,{ 8, 8, BITMAP_SCANLINE_PAD} /* 8-bit deep */
-#endif
-};
-#define NUMFORMATS (sizeof formats)/(sizeof formats[0])
-
-/*
- * OpenFrameBuffer --
- * Open a frame buffer according to several rules.
- * Find the device to use by looking in the sunFbData table,
- * an XDEVICE envariable, a -dev switch or using /dev/fb if trying
- * to open screen 0 and all else has failed.
- *
- * Results:
- * The fd of the framebuffer.
- */
-static int OpenFrameBuffer(device, screen)
- char *device; /* e.g. "/dev/cgtwo0" */
- int screen; /* what screen am I going to be */
-{
- int ret;
- unsigned long dacoffset;
- struct fbgattr *fbattr = NULL;
- static int devFbUsed;
- static struct fbgattr bw2 = {
- 0, 0,
- { FBTYPE_SUN2BW, 900, 1152, 1, 0, 0x00100000 },
- { 0, -1},
- -1
- };
- static struct fbgattr cg3 = {
- 0, 0,
- { FBTYPE_SUN3COLOR, 900, 1152, 8, 256, 0x00100000 },
- { 0, -1},
- -1
- };
- static struct fbgattr cg6 = {
- 0, 0,
- { FBTYPE_SUNFAST_COLOR, 900, 1152, 8, 256, 0x00100000 },
- { 0, -1},
- -1
- };
-
-
- sunFbs[screen].fd = sunKbdPriv.fd; /* /dev/con or /dev/kbd */
- devFbUsed = TRUE;
- /* apply some magic to work out what we're running on.
- * why couldn't they just spend some time on a little
- * FBIOGATTR ioctl()
- */
-
- ret = FALSE;
- if (ioctl(sunFbs[screen].fd, TIO_QUERYRAMDAC, &dacoffset) < 0)
- FatalError("can't query DAC addr\n");
- if (dacoffset == 0x400000) {
- if (strcmp(device, "/dev/cgthree") == 0)
- fbattr = &cg3;
- }
- else if (dacoffset == 0x200000) {
- if (strcmp(device, "/dev/cgsix") == 0)
- fbattr = &cg6;
- }
-#ifdef PATCHED_CONSOLE
- else if (dacoffset == 0) {
- if (strcmp(device, "/dev/bw2") == 0)
- fbattr = &bw2;
- }
-#endif
- else
- ErrorF("bogus DAC addr 0x%x, maybe it's the silly BWTWO bug\n", dacoffset);
-
- if (fbattr) {
- ret = TRUE;
- sunFbs[screen].info = fbattr->fbtype;
- }
- sunFbs[screen].fbPriv = (pointer) fbattr;
- if (fbattr && fbattr->fbtype.fb_type < FBTYPE_LASTPLUSONE &&
- !sunFbData[fbattr->fbtype.fb_type].init) {
- int _i;
-
- ret = FALSE;
- for (_i = 0; _i < FB_ATTR_NEMUTYPES; _i++) {
- if (sunFbData[fbattr->emu_types[_i]].init) {
- sunFbs[screen].info.fb_type = fbattr->emu_types[_i];
- ret = TRUE;
- if (sunFbInfo)
- ErrorF ("%s is emulating a %s\n", device,
- sunFbData[fbattr->fbtype.fb_type].name);
- break;
- }
- }
- }
- if (sunFbInfo)
- ErrorF ("%s is really a %s\n", device,
- sunFbData[fbattr ? fbattr->fbtype.fb_type : sunFbs[screen].info.fb_type].name);
- if (!ret)
- sunFbs[screen].fd = -1;
- return ret;
-}
-
-/*-
- *-----------------------------------------------------------------------
- * SigIOHandler --
- * Signal handler for SIGIO - input is available.
- *
- * Results:
- * sunSigIO is set - ProcessInputEvents() will be called soon.
- *
- * Side Effects:
- * None
- *
- *-----------------------------------------------------------------------
- */
-/*ARGSUSED*/
-/*static*/ void SigIOHandler(sig)
- int sig;
-{
- int olderrno = errno;
- sunEnqueueEvents();
- errno = olderrno;
-}
-
-/*-
- *-----------------------------------------------------------------------
- * sunNonBlockConsoleOff --
- * Turn non-blocking mode on the console off, so you don't get logged
- * out when the server exits.
- *
- * Results:
- * None.
- *
- * Side Effects:
- * None.
- *
- *-----------------------------------------------------------------------
- */
-void sunNonBlockConsoleOff(
- void
-)
-{
- int i;
-
-#if 0
- if (sunKbdPriv.fd >= 0)
- {
- i = fcntl(sunKbdPriv.fd, F_GETFL, 0);
- if (i >= 0 && (i & FNDELAY)) {
- (void) fcntl(sunKbdPriv.fd, F_SETFL, i & ~FNDELAY);
- }
- }
-#endif
- for (i = 0; i < MAXSCREENS; i++) {
- if (sunFbs[i].fbuf) {
- smem_create(NULL, (char*)sunFbs[i].fbuf, 0, SM_DETACH);
- smem_remove("FB");
- sunFbs[i].fbuf = NULL;
- }
- if (sunFbs[i].ramdac) {
- smem_create(NULL, (char*)sunFbs[i].ramdac, 0, SM_DETACH);
- smem_remove("DAC");
- sunFbs[i].ramdac = NULL;
- }
- if (sunFbs[i].fhc) {
- smem_create(NULL, (char*)sunFbs[i].fhc, 0, SM_DETACH);
- smem_remove("FHC_THC");
- sunFbs[i].fhc = NULL;
- sunFbs[i].thc = NULL;
- }
- if (sunFbs[i].fb) {
- smem_create(NULL, (char*)sunFbs[i].fb, 0, SM_DETACH);
- smem_remove("FBC_TEC");
- sunFbs[i].fb = NULL;
- sunFbs[i].tec = NULL;
- }
- }
-}
-
-static char** GetDeviceList (argc, argv)
- int argc;
- char **argv;
-{
- int i;
- char *envList = NULL;
- char *cmdList = NULL;
- char **deviceList = (char **)NULL;
-
- for (i = 1; i < argc; i++)
- if (strcmp (argv[i], "-dev") == 0 && i+1 < argc) {
- cmdList = argv[i + 1];
- break;
- }
- if (!cmdList)
- envList = getenv ("XDEVICE");
-
- if (cmdList || envList) {
- char *_tmpa;
- char *_tmpb;
- int _i1;
- deviceList = (char **) xalloc ((MAXSCREENS + 1) * sizeof (char *));
- _tmpa = (cmdList) ? cmdList : envList;
- for (_i1 = 0; _i1 < MAXSCREENS; _i1++) {
- _tmpb = strtok (_tmpa, ":");
- if (_tmpb)
- deviceList[_i1] = _tmpb;
- else
- deviceList[_i1] = NULL;
- _tmpa = NULL;
- }
- deviceList[MAXSCREENS] = NULL;
- }
- if (!deviceList) {
- /* no environment and no cmdline, so default */
- deviceList =
- (char **) xalloc ((FALLBACK_LIST_LEN + 1) * sizeof (char *));
- for (i = 0; i < FALLBACK_LIST_LEN; i++)
- deviceList[i] = fallbackList[i];
- deviceList[FALLBACK_LIST_LEN] = NULL;
- }
- return deviceList;
-}
-
-static void getKbdType()
-{
-#if defined(PATCHED_CONSOLE)
- int ii;
-
- for (ii = 0; ii < 3; ii++) {
-#if 0
- sunKbdWait();
-#endif
- if (ioctl (sunKbdPriv.fd, KIOCTYPE, &sunKbdPriv.type) < 0 && errno == EINVAL) {
- ErrorF("failed to get keyboard type, maybe wrong console driver:");
- ErrorF(" assuming Type 4 keyboard\n");
- sunKbdPriv.type = KB_SUN4;
- return;
- }
- switch (sunKbdPriv.type) {
- case KB_SUN2:
- case KB_SUN3:
- case KB_SUN4:
- return;
- default:
- sunChangeKbdTranslation(sunKbdPriv.fd, FALSE);
- continue;
- }
- }
- FatalError ("Unsupported keyboard type %d\n", sunKbdPriv.type);
-#else
- sunKbdPriv.type = KB_SUN4;
-#endif
-}
-
-void OsVendorInit(
- void
-)
-{
- static int inited;
- if (!inited) {
- /* weird hack to prevent logout on X server shutdown */
- if (onConsole)
- sunKbdPriv.fd = open ("/dev/con", O_RDWR, 0);
- else
- sunKbdPriv.fd = open ("/dev/kbd", O_RDWR, 0);
- sunPtrPriv.fd = open ("/dev/mouse", O_RDWR, 0);
-
- getKbdType ();
- if (sunKbdPriv.type == KB_SUN4) {
-#if defined(PATCHED_CONSOLE)
- if ( ioctl (sunKbdPriv.fd, KIOCLAYOUT, &sunKbdPriv.layout) < 0 && errno == EINVAL) {
- ErrorF("failed to get keyboard layout, maybe wrong console driver:");
- ErrorF(" assuming layout 0\n");
- sunKbdPriv.layout = 0;
- }
- if (sunKbdPriv.layout < 0 ||
- sunKbdPriv.layout > sunMaxLayout ||
- sunType4KeyMaps[sunKbdPriv.layout] == NULL)
- FatalError ("Unsupported keyboard type 4 layout %d\n",
- sunKbdPriv.layout);
-#else
- sunKbdPriv.layout = 0; /* default: Type 4 */
-#endif
- sunKeySyms[KB_SUN4].map = sunType4KeyMaps[sunKbdPriv.layout];
- sunModMaps[KB_SUN4] = sunType4ModMaps[sunKbdPriv.layout];
- }
- inited = 1;
- }
-}
-
-/*-
- *-----------------------------------------------------------------------
- * InitOutput --
- * Initialize screenInfo for all actually accessible framebuffers.
- * The
- *
- * Results:
- * screenInfo init proc field set
- *
- * Side Effects:
- * None
- *
- *-----------------------------------------------------------------------
- */
-
-void InitOutput(pScreenInfo, argc, argv)
- ScreenInfo *pScreenInfo;
- int argc;
- char **argv;
-{
- int i, scr;
- char **devList;
- static int setup_on_exit = 0;
- extern Bool RunFromSmartParent;
-
- if (!monitorResolution)
- monitorResolution = 90;
-
- pScreenInfo->imageByteOrder = IMAGE_BYTE_ORDER;
- pScreenInfo->bitmapScanlineUnit = BITMAP_SCANLINE_UNIT;
- pScreenInfo->bitmapScanlinePad = BITMAP_SCANLINE_PAD;
- pScreenInfo->bitmapBitOrder = BITMAP_BIT_ORDER;
-
- pScreenInfo->numPixmapFormats = NUMFORMATS;
- for (i=0; i< NUMFORMATS; i++)
- pScreenInfo->formats[i] = formats[i];
-#ifdef XKB
- if (noXkbExtension)
-#endif
- sunAutoRepeatHandlersInstalled = FALSE;
- if (!sunDevsInited) {
- /* first time ever */
- for (scr = 0; scr < MAXSCREENS; scr++)
- sunFbs[scr].fd = -1;
- devList = GetDeviceList (argc, argv);
- for (i = 0, scr = 0; devList[i] != NULL && scr < MAXSCREENS; i++)
- if (OpenFrameBuffer (devList[i], scr))
- scr++;
- sunDevsInited = TRUE;
- xfree (devList);
- }
- for (scr = 0; scr < MAXSCREENS; scr++)
- if (sunFbs[scr].fd != -1)
- (void) AddScreen (sunFbData[sunFbs[scr].info.fb_type].init,
- argc, argv);
- (void) OsSignal(SIGWINCH, SIG_IGN);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * InitInput --
- * Initialize all supported input devices...what else is there
- * besides pointer and keyboard?
- *
- * Results:
- * None.
- *
- * Side Effects:
- * Two DeviceRec's are allocated and registered as the system pointer
- * and keyboard devices.
- *
- *-----------------------------------------------------------------------
- */
-void InitInput(argc, argv)
- int argc;
- char **argv;
-{
- DevicePtr p, k;
- extern Bool mieqInit();
-
- k = AddInputDevice(sunKbdProc, TRUE);
- p = AddInputDevice(sunMouseProc, TRUE);
- if (!p || !k)
- FatalError("failed to create input devices in InitInput");
-
- RegisterPointerDevice(p);
- RegisterKeyboardDevice(k);
- miRegisterPointerDevice(screenInfo.screens[0], p);
- (void) mieqInit (k, p);
-
-#define SET_FLOW(fd) fcntl(fd, F_SETFL, FASYNC)
- (void) OsSignal(SIGIO, SigIOHandler);
-#define WANT_SIGNALS(fd) fcntl(fd, F_SETOWN, getpid())
- if (sunKbdPriv.fd >= 0) {
- if (SET_FLOW(sunKbdPriv.fd) == -1 || WANT_SIGNALS(sunKbdPriv.fd) == -1) {
- (void) close (sunKbdPriv.fd);
- sunKbdPriv.fd = -1;
- FatalError("Async kbd I/O failed in InitInput");
- }
- }
- /* SIGIO doesn't work reliable for the mouse device,
- * esp. for the first server after a reboot. We enable it
- * anyway, gives smoother movements
- */
- if (sunPtrPriv.fd >= 0) {
- if (SET_FLOW(sunPtrPriv.fd) == -1 || WANT_SIGNALS(sunPtrPriv.fd) == -1) {
- (void) close (sunPtrPriv.fd);
- sunPtrPriv.fd = -1;
- FatalError("ASYNC mouse I/O failed in InitInput");
- }
- }
-}
-
-
-#if SUNMAXDEPTH == 8
-
-Bool
-sunCfbSetupScreen(pScreen, pbits, xsize, ysize, dpix, dpiy, width, bpp)
- register ScreenPtr pScreen;
- pointer pbits; /* pointer to screen bitmap */
- int xsize, ysize; /* in pixels */
- int dpix, dpiy; /* dots per inch */
- int width; /* pixel width of frame buffer */
- int bpp; /* bits per pixel of root */
-{
- return cfbSetupScreen(pScreen, pbits, xsize, ysize, dpix, dpiy,
- width);
-}
-
-Bool
-sunCfbFinishScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width, bpp)
- register ScreenPtr pScreen;
- pointer pbits; /* pointer to screen bitmap */
- int xsize, ysize; /* in pixels */
- int dpix, dpiy; /* dots per inch */
- int width; /* pixel width of frame buffer */
- int bpp; /* bits per pixel of root */
-{
- return cfbFinishScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy,
- width);
-}
-
-Bool
-sunCfbScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width, bpp)
- register ScreenPtr pScreen;
- pointer pbits; /* pointer to screen bitmap */
- int xsize, ysize; /* in pixels */
- int dpix, dpiy; /* dots per inch */
- int width; /* pixel width of frame buffer */
- int bpp; /* bits per pixel of root */
-{
- return cfbScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width);
-}
-#endif /* SUNMAXDEPTH */
-
-#ifdef DPMSExtension
-/**************************************************************
- * DPMSSet(), DPMSGet(), DPMSSupported()
- *
- * stubs
- *
- ***************************************************************/
-
-void DPMSSet (level)
- int level;
-{
-}
-
-int DPMSGet (level)
- int* level;
-{
- return -1;
-}
-
-Bool DPMSSupported ()
-{
- return FALSE;
-}
-#endif
diff --git a/nx-X11/programs/Xserver/hw/sunLynx/sunLyIo.c b/nx-X11/programs/Xserver/hw/sunLynx/sunLyIo.c
deleted file mode 100644
index 7b1d68519..000000000
--- a/nx-X11/programs/Xserver/hw/sunLynx/sunLyIo.c
+++ /dev/null
@@ -1,389 +0,0 @@
-/* $Xorg: sunLyIo.c,v 1.3 2000/08/17 19:48:37 cpqbld Exp $ */
-/*-
- * This is sunIo.c modified for LynxOS
- * Copyright 1996 by Thomas Mueller
- *
- * 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 Thomas Mueller not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Thomas Mueller makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * THOMAS MUELLER DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THOMAS MUELLER 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.
- *
- */
-/* $XFree86: xc/programs/Xserver/hw/sunLynx/sunLyIo.c,v 3.5 2001/05/25 18:40:59 dawes Exp $ */
-
- /*
- *
- * Copyright 1987 by the Regents of the University of California
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies. The University of California
- * makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without
- * express or implied warranty.
- *
- *
- */
-
-/************************************************************
-Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright no-
-tice appear in all copies and that both that copyright no-
-tice and this permission notice appear in supporting docu-
-mentation, and that the names of Sun or The Open Group
-not be used in advertising or publicity pertaining to
-distribution of the software without specific prior
-written permission. Sun and The Open Group make no
-representations about the suitability of this software for
-any purpose. It is provided "as is" without any express or
-implied warranty.
-
-SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
-NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE LI-
-ABLE 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 "sun.h"
-#include <stat.h>
-
-/*-
- *-----------------------------------------------------------------------
- * ProcessInputEvents --
- * Retrieve all waiting input events and pass them to DIX in their
- * correct chronological order. Only reads from the system pointer
- * and keyboard.
- *
- * Results:
- * None.
- *
- * Side Effects:
- * Events are passed to the DIX layer.
- *
- *-----------------------------------------------------------------------
- */
-void
-ProcessInputEvents ()
-{
- mieqProcessInputEvents ();
- miPointerUpdate ();
-}
-
-/*
- *-----------------------------------------------------------------------
- * sunEnqueueEvents
- * When a SIGIO is received, read device hard events and
- * enqueue them using the mi event queue
- */
-
-void sunEnqueueEvents (
- void
-)
-{
- Firm_event *ptrEvents, /* Current pointer event */
- *kbdEvents; /* Current keyboard event */
- int numPtrEvents, /* Number of remaining pointer events */
- numKbdEvents; /* Number of remaining keyboard events */
- int nPE, /* Original number of pointer events */
- nKE; /* Original number of keyboard events */
- Bool PtrAgain, /* need to (re)read */
- KbdAgain; /* need to (re)read */
- DeviceIntPtr pPointer;
- DeviceIntPtr pKeyboard;
- sunKbdPrivPtr kbdPriv;
- sunPtrPrivPtr ptrPriv;
-
- pPointer = (DeviceIntPtr)LookupPointerDevice();
- pKeyboard = (DeviceIntPtr)LookupKeyboardDevice();
- ptrPriv = (sunPtrPrivPtr) pPointer->public.devicePrivate;
- kbdPriv = (sunKbdPrivPtr) pKeyboard->public.devicePrivate;
- if (!pPointer->public.on || !pKeyboard->public.on)
- return;
-
- numPtrEvents = 0;
- PtrAgain = TRUE;
- numKbdEvents = 0;
- KbdAgain = TRUE;
-
- /*
- * So long as one event from either device remains unprocess, we loop:
- * Take the oldest remaining event and pass it to the proper module
- * for processing. The DDXEvent will be sent to ProcessInput by the
- * function called.
- */
- while (1) {
- /*
- * Get events from both the pointer and the keyboard, storing the number
- * of events gotten in nPE and nKE and keeping the start of both arrays
- * in pE and kE
- */
- if ((numPtrEvents == 0) && PtrAgain) {
- ptrEvents = sunMouseGetEvents (ptrPriv->fd, pPointer->public.on,
- &nPE, &PtrAgain);
- numPtrEvents = nPE;
- }
- if ((numKbdEvents == 0) && KbdAgain) {
- kbdEvents = sunKbdGetEvents (kbdPriv->fd, pKeyboard->public.on,
- &nKE, &KbdAgain);
- numKbdEvents = nKE;
- }
- if ((numPtrEvents == 0) && (numKbdEvents == 0))
- break;
- if (numPtrEvents && numKbdEvents) {
- if (timercmp (&kbdEvents->time, &ptrEvents->time, <)) {
- sunKbdEnqueueEvent (pKeyboard, kbdEvents);
- numKbdEvents--;
- kbdEvents++;
- } else {
- sunMouseEnqueueEvent (pPointer, ptrEvents);
- numPtrEvents--;
- ptrEvents++;
- }
- } else if (numKbdEvents) {
- sunKbdEnqueueEvent (pKeyboard, kbdEvents);
- numKbdEvents--;
- kbdEvents++;
- } else {
- sunMouseEnqueueEvent (pPointer, ptrEvents);
- numPtrEvents--;
- ptrEvents++;
- }
- }
-}
-
-void sunEnqueueKbdEvents (
- void
-)
-{
- Firm_event *kbdEvents; /* Current keyboard event */
- int numKbdEvents; /* Number of remaining keyboard events */
- int nKE; /* Original number of keyboard events */
- Bool KbdAgain; /* need to (re)read */
- DeviceIntPtr pKeyboard;
- sunKbdPrivPtr kbdPriv;
-
- pKeyboard = (DeviceIntPtr)LookupKeyboardDevice();
- kbdPriv = (sunKbdPrivPtr) pKeyboard->public.devicePrivate;
- if (!pKeyboard->public.on)
- return;
-
- numKbdEvents = 0;
- KbdAgain = TRUE;
-
- /*
- * So long as one event from the device remains unprocess, we loop:
- * Take the oldest remaining event and pass it to the proper module
- * for processing. The DDXEvent will be sent to ProcessInput by the
- * function called.
- */
- while (1) {
- /*
- * Get events from both the keyboard, storing the number
- * of events gotten in nKE and keeping the start of the array
- * in kE
- */
- if ((numKbdEvents == 0) && KbdAgain) {
- kbdEvents = sunKbdGetEvents (kbdPriv->fd, pKeyboard->public.on,
- &nKE, &KbdAgain);
- numKbdEvents = nKE;
- }
- if (numKbdEvents == 0)
- break;
- sunKbdEnqueueEvent (pKeyboard, kbdEvents);
- numKbdEvents--;
- kbdEvents++;
- }
-}
-
-void sunEnqueueMseEvents (
- void
-)
-{
- Firm_event *ptrEvents; /* Current pointer event */
- int numPtrEvents; /* Number of remaining pointer events */
- int nPE; /* Original number of pointer events */
- Bool PtrAgain; /* need to (re)read */
- DeviceIntPtr pPointer;
- sunPtrPrivPtr ptrPriv;
-
- pPointer = (DeviceIntPtr)LookupPointerDevice();
- ptrPriv = (sunPtrPrivPtr) pPointer->public.devicePrivate;
- if (!pPointer->public.on)
- return;
-
- numPtrEvents = 0;
- PtrAgain = TRUE;
-
- /*
- * So long as one events from the device remain unprocess, we loop:
- * Take the oldest remaining event and pass it to the proper module
- * for processing. The DDXEvent will be sent to ProcessInput by the
- * function called.
- */
- while (1) {
- /*
- * Get events from the pointer, storing the number
- * of events gotten in nPE and keeping the start of the arrays
- * in pE
- */
- if ((numPtrEvents == 0) && PtrAgain) {
- ptrEvents = sunMouseGetEvents (ptrPriv->fd, pPointer->public.on,
- &nPE, &PtrAgain);
- numPtrEvents = nPE;
- }
- if (numPtrEvents == 0)
- break;
-
- sunMouseEnqueueEvent (pPointer, ptrEvents);
- numPtrEvents--;
- ptrEvents++;
- }
-}
-
-/*
- * DDX - specific abort routine. Called by AbortServer().
- */
-void AbortDDX()
-{
- int i;
- ScreenPtr pScreen;
- DevicePtr devPtr;
-
- (void) OsSignal (SIGIO, SIG_IGN);
- if (sunKbdPriv.fd != -1) {
- if (devPtr = LookupKeyboardDevice())
- (void) sunChangeKbdTranslation (((sunKbdPrivPtr)(devPtr->devicePrivate))->fd, FALSE);
- }
- sunNonBlockConsoleOff ();
- for (i = 0; i < screenInfo.numScreens; i++)
- {
- pScreen = screenInfo.screens[i];
- (*pScreen->SaveScreen) (pScreen, SCREEN_SAVER_OFF);
- sunDisableCursor (pScreen);
- }
-}
-
-/* Called by GiveUp(). */
-void
-ddxGiveUp()
-{
- AbortDDX ();
-}
-
-/* ddxInitGlobals - called by |InitGlobals| from os/util.c */
-void ddxInitGlobals(void)
-{
-}
-
-int
-ddxProcessArgument (argc, argv, i)
- int argc;
- char *argv[];
- int i;
-{
- extern void UseMsg();
- extern Bool onConsole;
- struct stat s0, scon;
-
- if (fstat(0, &s0) != -1 && stat("/dev/con", &scon) != -1)
- onConsole = !memcmp(&s0, &scon, sizeof(s0));
-
-#ifndef XKB
- if (strcmp (argv[i], "-ar1") == 0) { /* -ar1 int */
- if (++i >= argc) UseMsg ();
- sunAutoRepeatInitiate = 1000 * (long)atoi(argv[i]);
- if (sunAutoRepeatInitiate > 1000000)
- sunAutoRepeatInitiate = 999000;
- return 2;
- }
- if (strcmp (argv[i], "-ar2") == 0) { /* -ar2 int */
- if (++i >= argc) UseMsg ();
- sunAutoRepeatDelay = 1000 * (long)atoi(argv[i]);
- if (sunAutoRepeatDelay > 1000000)
- sunAutoRepeatDelay = 999000;
- return 2;
- }
-#endif
- if (strcmp (argv[i], "-swapLkeys") == 0) { /* -swapLkeys */
- sunSwapLkeys = TRUE;
- return 1;
- }
- if (strcmp (argv[i], "-debug") == 0) { /* -debug */
- return 1;
- }
- if (strcmp (argv[i], "-dev") == 0) { /* -dev /dev/mumble */
- if (++i >= argc) UseMsg ();
- return 2;
- }
- if (strcmp (argv[i], "-mono") == 0) { /* -mono */
- return 1;
- }
- if (strcmp (argv[i], "-zaphod") == 0) { /* -zaphod */
- sunActiveZaphod = FALSE;
- return 1;
- }
- if (strcmp (argv[i], "-flipPixels") == 0) { /* -flipPixels */
- sunFlipPixels = TRUE;
- return 1;
- }
- if (strcmp (argv[i], "-fbinfo") == 0) { /* -fbinfo */
- sunFbInfo = TRUE;
- return 1;
- }
- if (strcmp (argv[i], "-kbd") == 0) { /* -kbd */
- if (++i >= argc) UseMsg();
- return 2;
- }
- if (strcmp (argv[i], "-protect") == 0) { /* -protect */
- if (++i >= argc) UseMsg();
- return 2;
- }
- if (strcmp (argv[i], "-noGX") == 0) {
- sunNoGX = TRUE;
- return 1;
- }
- return 0;
-}
-
-void
-ddxUseMsg()
-{
-#ifndef XKB
- ErrorF("-ar1 int set autorepeat initiate time\n");
- ErrorF("-ar2 int set autorepeat interval time\n");
-#endif
- ErrorF("-swapLkeys swap keysyms on L1..L10\n");
- ErrorF("-debug disable non-blocking console mode\n");
- ErrorF("-dev fn[:fn][:fn] name of device[s] to open\n");
- ErrorF("-mono force monochrome-only screen\n");
- ErrorF("-zaphod disable active Zaphod mode\n");
- ErrorF("-fbinfo tell more about the found frame buffer(s)\n");
-#ifdef UNDOCUMENTED
- ErrorF("-noGX treat the GX as a dumb frame buffer\n");
-#endif
-}
diff --git a/nx-X11/programs/Xserver/hw/sunLynx/sunLyKbd.c b/nx-X11/programs/Xserver/hw/sunLynx/sunLyKbd.c
deleted file mode 100644
index 46fe7eb6c..000000000
--- a/nx-X11/programs/Xserver/hw/sunLynx/sunLyKbd.c
+++ /dev/null
@@ -1,1080 +0,0 @@
-/* $Xorg: sunLyKbd.c,v 1.3 2000/08/17 19:48:37 cpqbld Exp $ */
-/*
- * This is sunKbd.c modified for LynxOS
- * Copyright 1996 by Thomas Mueller
- *
- * 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 Thomas Mueller not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Thomas Mueller makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * THOMAS MUELLER DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THOMAS MUELLER 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.
- *
- */
-/* $XFree86: xc/programs/Xserver/hw/sunLynx/sunLyKbd.c,v 3.6 2001/08/01 00:44:49 tsi Exp $ */
-
-/*-
- * Copyright 1987 by the Regents of the University of California
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies. The University of California
- * makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without
- * express or implied warranty.
- */
-
-/************************************************************
-Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright no-
-tice appear in all copies and that both that copyright no-
-tice and this permission notice appear in supporting docu-
-mentation, and that the names of Sun or The Open Group
-not be used in advertising or publicity pertaining to
-distribution of the software without specific prior
-written permission. Sun and The Open Group make no
-representations about the suitability of this software for
-any purpose. It is provided "as is" without any express or
-implied warranty.
-
-SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
-NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE LI-
-ABLE 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 "sun.h"
-#include "keysym.h"
-#include "Sunkeysym.h"
-#include "osdep.h"
-
-#include <X11/Xpoll.h>
-
-#ifdef XKB
-#include <X11/extensions/XKB.h>
-#include <X11/extensions/XKBstr.h>
-#include <X11/extensions/XKBsrv.h>
-#endif
-
-#define SUN_LED_MASK 0x0f
-#define MIN_KEYCODE 7 /* necessary to avoid the mouse buttons */
-#define MAX_KEYCODE 255 /* limited by the protocol */
-#ifndef KB_SUN4
-#define KB_SUN4 4
-#endif
-
-#define AUTOREPEAT_INITIATE 400
-#define AUTOREPEAT_DELAY 50
-
-#define tvminus(tv, tv1, tv2) /* tv = tv1 - tv2 */ \
- if ((tv1).tv_usec < (tv2).tv_usec) { \
- (tv1).tv_usec += 1000000; \
- (tv1).tv_sec -= 1; \
- } \
- (tv).tv_usec = (tv1).tv_usec - (tv2).tv_usec; \
- (tv).tv_sec = (tv1).tv_sec - (tv2).tv_sec;
-
-#define tvplus(tv, tv1, tv2) /* tv = tv1 + tv2 */ \
- (tv).tv_sec = (tv1).tv_sec + (tv2).tv_sec; \
- (tv).tv_usec = (tv1).tv_usec + (tv2).tv_usec; \
- if ((tv).tv_usec > 1000000) { \
- (tv).tv_usec -= 1000000; \
- (tv).tv_sec += 1; \
- }
-
-extern KeySymsRec sunKeySyms[];
-extern SunModmapRec* sunModMaps[];
-
-long sunAutoRepeatInitiate = 1000 * AUTOREPEAT_INITIATE;
-long sunAutoRepeatDelay = 1000 * AUTOREPEAT_DELAY;
-
-static int autoRepeatKeyDown = 0;
-static int autoRepeatReady;
-static int autoRepeatFirst;
-static struct timeval autoRepeatLastKeyDownTv;
-static struct timeval autoRepeatDeltaTv;
-
-void sunKbdWait()
-{
- static struct timeval lastChngKbdTransTv;
- struct timeval tv;
- struct timeval lastChngKbdDeltaTv;
- unsigned int lastChngKbdDelta;
-
- X_GETTIMEOFDAY(&tv);
- if (!lastChngKbdTransTv.tv_sec)
- lastChngKbdTransTv = tv;
- tvminus(lastChngKbdDeltaTv, tv, lastChngKbdTransTv);
- lastChngKbdDelta = TVTOMILLI(lastChngKbdDeltaTv);
- if (lastChngKbdDelta < 750) {
- unsigned wait;
- /*
- * We need to guarantee at least 750 milliseconds between
- * calls to KIOCTRANS. YUCK!
- */
- wait = (750L - lastChngKbdDelta) * 1000L;
- usleep (wait);
- X_GETTIMEOFDAY(&tv);
- }
- lastChngKbdTransTv = tv;
-}
-
-static void SwapLKeys(keysyms)
- KeySymsRec* keysyms;
-{
- unsigned int i;
- KeySym k;
-
- for (i = 2; i < keysyms->maxKeyCode * keysyms->mapWidth; i++)
- if (keysyms->map[i] == XK_L1 ||
- keysyms->map[i] == XK_L2 ||
- keysyms->map[i] == XK_L3 ||
- keysyms->map[i] == XK_L4 ||
- keysyms->map[i] == XK_L5 ||
- keysyms->map[i] == XK_L6 ||
- keysyms->map[i] == XK_L7 ||
- keysyms->map[i] == XK_L8 ||
- keysyms->map[i] == XK_L9 ||
- keysyms->map[i] == XK_L10) {
- /* yes, I could have done a clever two line swap! */
- k = keysyms->map[i - 2];
- keysyms->map[i - 2] = keysyms->map[i];
- keysyms->map[i] = k;
- }
-}
-
-static void SetLights (ctrl, fd)
- KeybdCtrl* ctrl;
- int fd;
-{
-#ifdef KIOCSLED
- static unsigned char led_tab[16] = {
- 0,
- LED_NUM_LOCK,
- LED_SCROLL_LOCK,
- LED_SCROLL_LOCK | LED_NUM_LOCK,
- LED_COMPOSE,
- LED_COMPOSE | LED_NUM_LOCK,
- LED_COMPOSE | LED_SCROLL_LOCK,
- LED_COMPOSE | LED_SCROLL_LOCK | LED_NUM_LOCK,
- LED_CAPS_LOCK,
- LED_CAPS_LOCK | LED_NUM_LOCK,
- LED_CAPS_LOCK | LED_SCROLL_LOCK,
- LED_CAPS_LOCK | LED_SCROLL_LOCK | LED_NUM_LOCK,
- LED_CAPS_LOCK | LED_COMPOSE,
- LED_CAPS_LOCK | LED_COMPOSE | LED_NUM_LOCK,
- LED_CAPS_LOCK | LED_COMPOSE | LED_SCROLL_LOCK,
- LED_CAPS_LOCK | LED_COMPOSE | LED_SCROLL_LOCK | LED_NUM_LOCK
- };
- if (ioctl (fd, KIOCSLED, (caddr_t)&led_tab[ctrl->leds & 0x0f]) == -1)
-#if defined(PATCHED_CONSOLE)
- Error("Failed to set keyboard lights");
-#else
- ; /* silly driver bug always returns error */
-#endif
-#endif
-}
-
-
-static void ModLight (device, on, led)
- DeviceIntPtr device;
- Bool on;
- int led;
-{
- KeybdCtrl* ctrl = &device->kbdfeed->ctrl;
- sunKbdPrivPtr pPriv = (sunKbdPrivPtr) device->public.devicePrivate;
-
- if(on) {
- ctrl->leds |= led;
- pPriv->leds |= led;
- } else {
- ctrl->leds &= ~led;
- pPriv->leds &= ~led;
- }
- SetLights (ctrl, pPriv->fd);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * sunBell --
- * Ring the terminal/keyboard bell
- *
- * Results:
- * Ring the keyboard bell for an amount of time proportional to
- * "loudness."
- *
- * Side Effects:
- * None, really...
- *
- *-----------------------------------------------------------------------
- */
-
-static void bell (
- int fd,
- int duration)
-{
-#if defined(PATCHED_CONSOLE)
- int kbdCmd; /* Command to give keyboard */
-
- kbdCmd = KBD_CMD_BELL;
- if (ioctl (fd, KIOCCMD, &kbdCmd) == -1) {
- Error("Failed to activate bell");
- return;
- }
- if (duration) usleep (duration);
- kbdCmd = KBD_CMD_NOBELL;
- if (ioctl (fd, KIOCCMD, &kbdCmd) == -1)
- Error ("Failed to deactivate bell");
-#endif
-}
-
-static void sunBell (
- int percent,
- DeviceIntPtr device,
- pointer ctrl,
- int unused)
-{
- KeybdCtrl* kctrl = (KeybdCtrl*) ctrl;
- sunKbdPrivPtr pPriv = (sunKbdPrivPtr) device->public.devicePrivate;
-
- if (percent == 0 || kctrl->bell == 0)
- return;
-
- bell (pPriv->fd, kctrl->bell_duration * 1000);
-}
-
-static void sunEnqueueEvent (xE)
- xEvent* xE;
-{
- sigset_t holdmask;
-
- (void) sigaddset (&holdmask, SIGIO);
- (void) sigprocmask (SIG_BLOCK, &holdmask, (sigset_t*)NULL);
- mieqEnqueue (xE);
- (void) sigprocmask (SIG_UNBLOCK, &holdmask, (sigset_t*)NULL);
-}
-
-
-#define XLED_NUM_LOCK 0x1
-#define XLED_COMPOSE 0x4
-#define XLED_SCROLL_LOCK 0x2
-#define XLED_CAPS_LOCK 0x8
-
-static KeyCode LookupKeyCode (keysym, keysymsrec)
- KeySym keysym;
- KeySymsPtr keysymsrec;
-{
- KeyCode i;
- int ii, index = 0;
-
- for (i = keysymsrec->minKeyCode; i < keysymsrec->maxKeyCode; i++)
- for (ii = 0; ii < keysymsrec->mapWidth; ii++)
- if (keysymsrec->map[index++] == keysym)
- return i;
-}
-
-static void pseudoKey(device, down, keycode)
- DeviceIntPtr device;
- Bool down;
- KeyCode keycode;
-{
- int bit;
- CARD8 modifiers;
- CARD16 mask;
- BYTE* kptr;
-
- kptr = &device->key->down[keycode >> 3];
- bit = 1 << (keycode & 7);
- modifiers = device->key->modifierMap[keycode];
- if (down) {
- /* fool dix into thinking this key is now "down" */
- int i;
- *kptr |= bit;
- device->key->prev_state = device->key->state;
- for (i = 0, mask = 1; modifiers; i++, mask <<= 1)
- if (mask & modifiers) {
- device->key->modifierKeyCount[i]++;
- device->key->state += mask;
- modifiers &= ~mask;
- }
- } else {
- /* fool dix into thinking this key is now "up" */
- if (*kptr & bit) {
- int i;
- *kptr &= ~bit;
- device->key->prev_state = device->key->state;
- for (i = 0, mask = 1; modifiers; i++, mask <<= 1)
- if (mask & modifiers) {
- if (--device->key->modifierKeyCount[i] <= 0) {
- device->key->state &= ~mask;
- device->key->modifierKeyCount[i] = 0;
- }
- modifiers &= ~mask;
- }
- }
- }
-}
-
-static void DoLEDs(device, ctrl, pPriv)
- DeviceIntPtr device; /* Keyboard to alter */
- KeybdCtrl* ctrl;
- sunKbdPrivPtr pPriv;
-{
-#ifdef XKB
- if (noXkbExtension) {
-#endif
- if ((ctrl->leds & XLED_CAPS_LOCK) && !(pPriv->leds & XLED_CAPS_LOCK))
- pseudoKey(device, TRUE,
- LookupKeyCode(XK_Caps_Lock, &device->key->curKeySyms));
-
- if (!(ctrl->leds & XLED_CAPS_LOCK) && (pPriv->leds & XLED_CAPS_LOCK))
- pseudoKey(device, FALSE,
- LookupKeyCode(XK_Caps_Lock, &device->key->curKeySyms));
-
- if ((ctrl->leds & XLED_NUM_LOCK) && !(pPriv->leds & XLED_NUM_LOCK))
- pseudoKey(device, TRUE,
- LookupKeyCode(XK_Num_Lock, &device->key->curKeySyms));
-
- if (!(ctrl->leds & XLED_NUM_LOCK) && (pPriv->leds & XLED_NUM_LOCK))
- pseudoKey(device, FALSE,
- LookupKeyCode(XK_Num_Lock, &device->key->curKeySyms));
-
- if ((ctrl->leds & XLED_SCROLL_LOCK) && !(pPriv->leds & XLED_SCROLL_LOCK))
- pseudoKey(device, TRUE,
- LookupKeyCode(XK_Scroll_Lock, &device->key->curKeySyms));
-
- if (!(ctrl->leds & XLED_SCROLL_LOCK) && (pPriv->leds & XLED_SCROLL_LOCK))
- pseudoKey(device, FALSE,
- LookupKeyCode(XK_Scroll_Lock, &device->key->curKeySyms));
-
- if ((ctrl->leds & XLED_COMPOSE) && !(pPriv->leds & XLED_COMPOSE))
- pseudoKey(device, TRUE,
- LookupKeyCode(SunXK_Compose, &device->key->curKeySyms));
-
- if (!(ctrl->leds & XLED_COMPOSE) && (pPriv->leds & XLED_COMPOSE))
- pseudoKey(device, FALSE,
- LookupKeyCode(SunXK_Compose, &device->key->curKeySyms));
-#ifdef XKB
- }
-#endif
- pPriv->leds = ctrl->leds & 0x0f;
- SetLights (ctrl, pPriv->fd);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * sunKbdCtrl --
- * Alter some of the keyboard control parameters
- *
- * Results:
- * None.
- *
- * Side Effects:
- * Some...
- *
- *-----------------------------------------------------------------------
- */
-
-static void sunKbdCtrl (
- DeviceIntPtr device,
- KeybdCtrl* ctrl)
-{
- sunKbdPrivPtr pPriv = (sunKbdPrivPtr) device->public.devicePrivate;
-
- if (pPriv->fd < 0) return;
-
- if (ctrl->click != pPriv->click) {
- int kbdClickCmd;
-
- pPriv->click = ctrl->click;
-#if defined(PATCHED_CONSOLE)
- kbdClickCmd = pPriv->click ? KBD_CMD_CLICK : KBD_CMD_NOCLICK;
- if (ioctl (pPriv->fd, KIOCCMD, &kbdClickCmd) == -1)
- Error("Failed to set keyclick");
-#endif
- }
- if (pPriv->type == KB_SUN4 && pPriv->leds != ctrl->leds & 0x0f)
- DoLEDs(device, ctrl, pPriv);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * sunInitKbdNames --
- * Handle the XKB initialization
- *
- * Results:
- * None.
- *
- * Comments:
- * This function needs considerable work, in conjunctions with
- * the need to add geometry descriptions of Sun Keyboards.
- * It would also be nice to have #defines for all the keyboard
- * layouts so that we don't have to have these hard-coded
- * numbers.
- *
- *-----------------------------------------------------------------------
- */
-#ifdef XKB
-static void sunInitKbdNames (
- XkbComponentNamesRec* names,
- sunKbdPrivPtr pKbd)
-{
-#ifndef XKBBUFSIZE
-#define XKBBUFSIZE 64
-#endif
- static char keycodesbuf[XKBBUFSIZE];
- static char geometrybuf[XKBBUFSIZE];
- static char symbolsbuf[XKBBUFSIZE];
-
- names->keymap = NULL;
- names->compat = "compat/complete";
- names->types = "types/complete";
- names->keycodes = keycodesbuf;
- names->geometry = geometrybuf;
- names->symbols = symbolsbuf;
- (void) strcpy (keycodesbuf, "keycodes/");
- (void) strcpy (geometrybuf, "geometry/");
- (void) strcpy (symbolsbuf, "symbols/");
-
- /* keycodes & geometry */
- switch (pKbd->type) {
- case KB_SUN2:
- (void) strcat (names->keycodes, "sun(type2)");
- (void) strcat (names->geometry, "sun(type2)");
- (void) strcat (names->symbols, "us(sun2)");
- break;
- case KB_SUN3:
- (void) strcat (names->keycodes, "sun(type3)");
- (void) strcat (names->geometry, "sun(type3)");
- (void) strcat (names->symbols, "us(sun3)");
- break;
- case KB_SUN4:
- if (pKbd->layout == 19) {
- (void) strcat (names->keycodes, "sun(US101A)");
- (void) strcat (names->geometry, "pc101-NG"); /* XXX */
- (void) strcat (names->symbols, "us(pc101)");
- } else if (pKbd->layout < 33) {
- (void) strcat (names->keycodes, "sun(type4)");
- (void) strcat (names->geometry, "sun(type4)");
- if (sunSwapLkeys)
- (void) strcat (names->symbols, "sun/us(sun4ol)");
- else
- (void) strcat (names->symbols, "sun/us(sun4)");
- } else {
- (void) strcat (names->keycodes, "sun(type5)");
- if (pKbd->layout == 34 || pKbd->layout == 81)
- (void) strcat (names->geometry, "sun(type5unix)");
- else
- (void) strcat (names->geometry, "sun(type5)");
- if (sunSwapLkeys)
- (void) strcat (names->symbols, "sun/us(sun5ol)");
- else
- (void) strcat (names->symbols, "sun/us(sun5)");
- }
- break;
- default:
- names->keycodes = names->geometry = NULL;
- break;
- }
-
- /* extra symbols */
- if (pKbd->type == KB_SUN4) {
- switch (pKbd->layout) {
- case 0: case 1: case 33: case 34: case 80: case 81:
- break;
- case 3:
- (void) strcat (names->symbols, "+ca"); break;
- case 4: case 36: case 83:
- (void) strcat (names->symbols, "+dk"); break;
- case 5: case 37: case 84:
- (void) strcat (names->symbols, "+de"); break;
- case 6: case 38: case 85:
- (void) strcat (names->symbols, "+it"); break;
- case 8: case 40: case 87:
- (void) strcat (names->symbols, "+no"); break;
- case 9: case 41: case 88:
- (void) strcat (names->symbols, "+pt"); break;
- case 10: case 42: case 89:
- (void) strcat (names->symbols, "+es"); break;
- case 11: case 43: case 90:
- (void) strcat (names->symbols, "+se"); break;
- case 12: case 44: case 91:
- (void) strcat (names->symbols, "+fr_CH"); break;
- case 13: case 45: case 92:
- (void) strcat (names->symbols, "+de_CH"); break;
- case 14: case 46: case 93:
- (void) strcat (names->symbols, "+gb"); break; /* s/b en_UK */
- case 52:
- (void) strcat (names->symbols, "+pl"); break;
- case 53:
- (void) strcat (names->symbols, "+cs"); break;
- case 54:
- (void) strcat (names->symbols, "+ru"); break;
-#if 0
- /* don't have symbols defined for these yet, let them default */
- case 2:
- (void) strcat (names->symbols, "+fr_BE"); break;
- case 7: case 39: case 86:
- (void) strcat (names->symbols, "+nl"); break;
- case 50: case 97:
- (void) strcat (names->symbols, "+fr_CA"); break;
- case 16: case 47: case 94:
- (void) strcat (names->symbols, "+ko"); break;
- case 17: case 48: case 95:
- (void) strcat (names->symbols, "+tw"); break;
- case 32: case 49: case 96:
- (void) strcat (names->symbols, "+jp"); break;
- case 51:
- (void) strcat (names->symbols, "+hu"); break;
-#endif
- /*
- * by setting the symbols to NULL XKB will use the symbols in
- * the "default" keymap.
- */
- default:
- names->symbols = NULL; return; break;
- }
- }
-}
-#endif /* XKB */
-
-/*-
- *-----------------------------------------------------------------------
- * sunKbdProc --
- * Handle the initialization, etc. of a keyboard.
- *
- * Results:
- * None.
- *
- *-----------------------------------------------------------------------
- */
-
-int sunKbdProc (
- DeviceIntPtr device,
- int what)
-{
- static int once;
- static struct termio kbdtty;
- struct termio tty;
- int i;
- DevicePtr pKeyboard = (DevicePtr) device;
- sunKbdPrivPtr pPriv;
- KeybdCtrl* ctrl = &device->kbdfeed->ctrl;
- extern int XkbDfltRepeatDelay, XkbDfltRepeatInterval;
-
- static CARD8 *workingModMap = NULL;
- static KeySymsRec *workingKeySyms;
-
- switch (what) {
- case DEVICE_INIT:
- if (pKeyboard != LookupKeyboardDevice()) {
- ErrorF ("Cannot open non-system keyboard\n");
- return (!Success);
- }
-
- if (!workingKeySyms) {
- workingKeySyms = &sunKeySyms[sunKbdPriv.type];
-
- if (sunKbdPriv.type == KB_SUN4 && sunSwapLkeys)
- SwapLKeys(workingKeySyms);
-
- if (workingKeySyms->minKeyCode < MIN_KEYCODE) {
- workingKeySyms->minKeyCode += MIN_KEYCODE;
- workingKeySyms->maxKeyCode += MIN_KEYCODE;
- }
- if (workingKeySyms->maxKeyCode > MAX_KEYCODE)
- workingKeySyms->maxKeyCode = MAX_KEYCODE;
- }
-
- if (!workingModMap) {
- workingModMap=(CARD8 *)xalloc(MAP_LENGTH);
- (void) memset(workingModMap, 0, MAP_LENGTH);
- for(i=0; sunModMaps[sunKbdPriv.type][i].key != 0; i++)
- workingModMap[sunModMaps[sunKbdPriv.type][i].key + MIN_KEYCODE] =
- sunModMaps[sunKbdPriv.type][i].modifiers;
- }
-
- (void) memset ((void *) defaultKeyboardControl.autoRepeats,
- ~0, sizeof defaultKeyboardControl.autoRepeats);
-
-#ifdef XKB
- if (noXkbExtension) {
- sunAutoRepeatInitiate = XkbDfltRepeatDelay * 1000;
- sunAutoRepeatDelay = XkbDfltRepeatInterval * 1000;
-#endif
- autoRepeatKeyDown = 0;
-#ifdef XKB
- }
-#endif
- pKeyboard->devicePrivate = (pointer)&sunKbdPriv;
- pKeyboard->on = FALSE;
-
-#ifdef XKB
- if (noXkbExtension) {
-#endif
- InitKeyboardDeviceStruct(pKeyboard,
- workingKeySyms, workingModMap,
- sunBell, sunKbdCtrl);
-#ifdef XKB
- } else {
- XkbComponentNamesRec names;
- sunInitKbdNames (&names, &sunKbdPriv);
- XkbInitKeyboardDeviceStruct((DeviceIntPtr) pKeyboard, &names,
- workingKeySyms, workingModMap,
- sunBell, sunKbdCtrl);
- }
-#endif
- break;
-
- case DEVICE_ON:
- pPriv = (sunKbdPrivPtr)pKeyboard->devicePrivate;
- /*
- * Set the keyboard into "direct" mode and turn on
- * event translation.
- */
- if (sunChangeKbdTranslation(pPriv->fd, TRUE) == -1)
- FatalError("Can't set keyboard translation\n");
- /*
- * for LynxOS, save current termio setting and
- * set the keyboard into raw mode
- */
- if (!once)
- {
- ioctl(pPriv->fd, TCGETA, &kbdtty);
- once = 1;
- }
- tty = kbdtty;
- tty.c_iflag = (IGNPAR | IGNBRK) & (~PARMRK) & (~ISTRIP);
- tty.c_oflag = 0;
- tty.c_cflag = CREAD | CS8;
- tty.c_lflag = 0;
- tty.c_cc[VTIME] = 0;
- tty.c_cc[VMIN] = 0;
- if (ioctl(pPriv->fd, TCSETAW, &tty) < 0)
- perror("ioctl TCSETAW");
- AddEnabledDevice(pPriv->fd);
- pKeyboard->on = TRUE;
- break;
-
- case DEVICE_CLOSE:
- case DEVICE_OFF:
- pPriv = (sunKbdPrivPtr)pKeyboard->devicePrivate;
- if (pPriv->type == KB_SUN4) {
- /* dumb bug in Sun's keyboard! Turn off LEDS before resetting */
- pPriv->leds = 0;
- ctrl->leds = 0;
- SetLights(ctrl, pPriv->fd);
- }
- /*
- * Restore original keyboard directness and translation.
- */
- if (sunChangeKbdTranslation(pPriv->fd,FALSE) == -1)
- FatalError("Can't reset keyboard translation\n");
- /* restore saved termio setting */
- if (ioctl(pPriv->fd, TCSETAW, &kbdtty) < 0)
- perror("ioctl TCSETAW");
- pKeyboard->on = FALSE;
- RemoveEnabledDevice(pPriv->fd);
- break;
- default:
- FatalError("Unknown keyboard operation\n");
- }
- return Success;
-}
-
-/*-
- *-----------------------------------------------------------------------
- * sunKbdGetEvents --
- * Return the events waiting in the wings for the given keyboard.
- *
- * Results:
- * A pointer to an array of Firm_events or (Firm_event *)0 if no events
- * The number of events contained in the array.
- * A boolean as to whether more events might be available.
- *
- * Side Effects:
- * None.
- *-----------------------------------------------------------------------
- */
-
-Firm_event* sunKbdGetEvents (
- int fd,
- Bool on,
- int* pNumEvents,
- Bool* pAgain)
-{
- int nBytes; /* number of bytes of events available. */
- static Firm_event evBuf[MAXEVENTS]; /* Buffer for Firm_events */
-
- char buf[64];
-
- if ((nBytes = read(fd, buf, sizeof(buf))) == -1) {
- if (errno == EWOULDBLOCK || errno == EAGAIN || errno == EINTR)
- {
- *pNumEvents = 0;
- if (errno == EINTR)
- *pAgain = TRUE;
- else
- *pAgain = FALSE;
- } else {
- Error ("Reading keyboard");
- FatalError ("Could not read the keyboard");
- }
- } else {
- int i;
- struct timeval now;
-
- if (on) {
- X_GETTIMEOFDAY(&now);
- *pNumEvents = nBytes;
- *pAgain = (nBytes == sizeof(buf)); /* very unlikely... */
- for (i = 0; i < nBytes; i++)
- {
- evBuf[i].id = buf[i] & 0x7f;
- evBuf[i].value = (buf[i] & 0x80) ? VKEY_UP : VKEY_DOWN;
- evBuf[i].time = now;
- }
- } else {
- *pNumEvents = 0;
- *pAgain = FALSE;
- }
- }
- return evBuf;
-}
-
-/*-
- *-----------------------------------------------------------------------
- * sunKbdEnqueueEvent --
- *
- *-----------------------------------------------------------------------
- */
-static xEvent autoRepeatEvent;
-static int composeCount;
-
-static Bool DoSpecialKeys(device, xE, fe)
- DeviceIntPtr device;
- xEvent* xE;
- Firm_event* fe;
-{
- int shift_index, map_index, bit;
- KeySym ksym;
- BYTE* kptr;
- sunKbdPrivPtr pPriv = (sunKbdPrivPtr)device->public.devicePrivate;
- BYTE keycode = xE->u.u.detail;
- CARD8 keyModifiers = device->key->modifierMap[keycode];
-
- /* look up the present idea of the keysym */
- shift_index = 0;
- if (device->key->state & ShiftMask)
- shift_index ^= 1;
- if (device->key->state & LockMask)
- shift_index ^= 1;
- map_index = (fe->id - 1) * device->key->curKeySyms.mapWidth;
- ksym = device->key->curKeySyms.map[shift_index + map_index];
- if (ksym == NoSymbol)
- ksym = device->key->curKeySyms.map[map_index];
-
- /*
- * Toggle functionality is hardcoded. This is achieved by always
- * discarding KeyReleases on these keys, and converting every other
- * KeyPress into a KeyRelease.
- */
- if (xE->u.u.type == KeyRelease
- && (ksym == XK_Num_Lock
- || ksym == XK_Scroll_Lock
- || ksym == SunXK_Compose
- || (keyModifiers & LockMask)))
- return TRUE;
-
- kptr = &device->key->down[keycode >> 3];
- bit = 1 << (keycode & 7);
- if ((*kptr & bit) &&
- (ksym == XK_Num_Lock || ksym == XK_Scroll_Lock ||
- ksym == SunXK_Compose || (keyModifiers & LockMask)))
- xE->u.u.type = KeyRelease;
-
- if (pPriv->type == KB_SUN4) {
- if (ksym == XK_Num_Lock) {
- ModLight (device, xE->u.u.type == KeyPress, XLED_NUM_LOCK);
- } else if (ksym == XK_Scroll_Lock) {
- ModLight (device, xE->u.u.type == KeyPress, XLED_SCROLL_LOCK);
- } else if (ksym == SunXK_Compose) {
- ModLight (device, xE->u.u.type == KeyPress, XLED_COMPOSE);
- if (xE->u.u.type == KeyPress) composeCount = 2;
- else composeCount = 0;
- } else if (keyModifiers & LockMask) {
- ModLight (device, xE->u.u.type == KeyPress, XLED_CAPS_LOCK);
- }
- if (xE->u.u.type == KeyRelease) {
- if (composeCount > 0 && --composeCount == 0) {
- pseudoKey(device, FALSE,
- LookupKeyCode(SunXK_Compose, &device->key->curKeySyms));
- ModLight (device, FALSE, XLED_COMPOSE);
- }
- }
- }
-
- if ((xE->u.u.type == KeyPress) && (keyModifiers == 0)) {
- /* initialize new AutoRepeater event & mark AutoRepeater on */
- autoRepeatEvent = *xE;
- autoRepeatFirst = TRUE;
- autoRepeatKeyDown++;
- autoRepeatLastKeyDownTv = fe->time;
- }
- return FALSE;
-}
-
-void sunKbdEnqueueEvent (
- DeviceIntPtr device,
- Firm_event *fe)
-{
- xEvent xE;
- BYTE keycode;
- CARD8 keyModifiers;
-
- keycode = (fe->id & 0x7f) + MIN_KEYCODE;
-
- keyModifiers = device->key->modifierMap[keycode];
-#ifdef XKB
- if (noXkbExtension) {
-#endif
- if (autoRepeatKeyDown && (keyModifiers == 0) &&
- ((fe->value == VKEY_DOWN) || (keycode == autoRepeatEvent.u.u.detail))) {
- /*
- * Kill AutoRepeater on any real non-modifier key down, or auto key up
- */
- autoRepeatKeyDown = 0;
- }
-#ifdef XKB
- }
-#endif
- xE.u.keyButtonPointer.time = TVTOMILLI(fe->time);
- xE.u.u.type = ((fe->value == VKEY_UP) ? KeyRelease : KeyPress);
- xE.u.u.detail = keycode;
-#ifdef XKB
- if (noXkbExtension) {
-#endif
- if (DoSpecialKeys(device, &xE, fe))
- return;
-#ifdef XKB
- }
-#endif /* ! XKB */
- mieqEnqueue (&xE);
-}
-
-void sunEnqueueAutoRepeat ()
-{
- int delta;
- int i, mask;
- DeviceIntPtr device = (DeviceIntPtr)LookupKeyboardDevice();
- KeybdCtrl* ctrl = &device->kbdfeed->ctrl;
- sunKbdPrivPtr pPriv = (sunKbdPrivPtr) device->public.devicePrivate;
-
- if (ctrl->autoRepeat != AutoRepeatModeOn) {
- autoRepeatKeyDown = 0;
- return;
- }
- i=(autoRepeatEvent.u.u.detail >> 3);
- mask=(1 << (autoRepeatEvent.u.u.detail & 7));
- if (!(ctrl->autoRepeats[i] & mask)) {
- autoRepeatKeyDown = 0;
- return;
- }
-
- /*
- * Generate auto repeat event. XXX one for now.
- * Update time & pointer location of saved KeyPress event.
- */
-
- delta = TVTOMILLI(autoRepeatDeltaTv);
- autoRepeatFirst = FALSE;
-
- /*
- * Fake a key up event and a key down event
- * for the last key pressed.
- */
- autoRepeatEvent.u.keyButtonPointer.time += delta;
- autoRepeatEvent.u.u.type = KeyRelease;
-
- /*
- * hold off any more inputs while we get these safely queued up
- * further SIGIO are
- */
- sunEnqueueEvent (&autoRepeatEvent);
- autoRepeatEvent.u.u.type = KeyPress;
- sunEnqueueEvent (&autoRepeatEvent);
- if (ctrl->click) bell (pPriv->fd, 0);
-
- /* Update time of last key down */
- tvplus(autoRepeatLastKeyDownTv, autoRepeatLastKeyDownTv,
- autoRepeatDeltaTv);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * sunChangeKbdTranslation
- * Makes operating system calls to set keyboard translation
- * and direction on or off.
- *
- * Results:
- * -1 if failure, else 0.
- *
- * Side Effects:
- * Changes kernel management of keyboard.
- *
- *-----------------------------------------------------------------------
- */
-int sunChangeKbdTranslation(
- int fd,
- Bool makeTranslated)
-{
- int tmp;
- sigset_t hold_mask, old_mask;
- int toread;
- char junk[8192];
-
- (void) sigfillset(&hold_mask);
- (void) sigprocmask(SIG_BLOCK, &hold_mask, &old_mask);
- if (makeTranslated) {
- if (ioctl (fd, TIO_ENSCANMODE, &tmp) == -1) {
- Error ("Setting keyboard translation TIO_ENSCANMODE");
- ErrorF ("sunChangeKbdTranslation: kbdFd=%d\n", fd);
- return -1;
- }
- } else {
- if (ioctl (fd, TIO_DISSCANMODE, &tmp) == -1) {
- Error ("Setting keyboard translation TIO_DISSCANMODE");
- ErrorF ("sunChangeKbdTranslation: kbdFd=%d\n", fd);
- }
- }
- if (ioctl (fd, FIONREAD, &toread) != -1 && toread > 0) {
- while (toread) {
- tmp = toread;
- if (toread > sizeof (junk))
- tmp = sizeof (junk);
- (void) read (fd, junk, tmp);
- toread -= tmp;
- }
- }
- (void) sigprocmask(SIG_SETMASK, &old_mask, (sigset_t *)NULL);
- return 0;
-}
-
-/*ARGSUSED*/
-Bool LegalModifier(key, pDev)
- unsigned int key;
- DevicePtr pDev;
-{
- return TRUE;
-}
-
-/*ARGSUSED*/
-void sunBlockHandler(nscreen, pbdata, pptv, pReadmask)
- int nscreen;
- pointer pbdata;
- struct timeval **pptv;
- pointer pReadmask;
-{
- KeybdCtrl* ctrl = &((DeviceIntPtr)LookupKeyboardDevice())->kbdfeed->ctrl;
- static struct timeval artv = { 0, 0 }; /* autorepeat timeval */
-
- if (!autoRepeatKeyDown)
- return;
-
- if (ctrl->autoRepeat != AutoRepeatModeOn)
- return;
-
- if (autoRepeatFirst == TRUE)
- artv.tv_usec = sunAutoRepeatInitiate;
- else
- artv.tv_usec = sunAutoRepeatDelay;
- *pptv = &artv;
-
-}
-
-/*ARGSUSED*/
-void sunWakeupHandler(nscreen, pbdata, err, pReadmask)
- int nscreen;
- pointer pbdata;
- unsigned long err;
- pointer pReadmask;
-{
- KeybdCtrl* ctrl = &((DeviceIntPtr)LookupKeyboardDevice())->kbdfeed->ctrl;
- struct timeval tv;
-
- /* this works around a weird behaviour on LynxOS 2.4.0:
- * usually we have no problems using true SIGIO driven mouse input
- * as it is used on the other UN*X Suns. On LynxOS we have a
- * strange behaviour upon the very first server startup after a
- * reboot. We won't get SIGIOs from the mouse device. The mouse
- * will only move if we get SIGIOs from the keyboard.
- * The solution (for now) is to use an additional WakeupHandler and
- * poll the mouse file descriptor.
- */
- struct fd_set devicesWithInput;
- struct fd_set device;
- extern struct fd_set EnabledDevices;
-
- XFD_ANDSET(&devicesWithInput, ((struct fd_set *) pReadmask), &EnabledDevices);
-
- FD_ZERO(&device);
- FD_SET(sunPtrPriv.fd, &device);
- XFD_ANDSET(&device, &device, &devicesWithInput);
- if (XFD_ANYSET(&device)) {
- sigset_t newsigmask;
-
- (void) sigemptyset (&newsigmask);
- (void) sigaddset (&newsigmask, SIGIO);
- (void) sigprocmask (SIG_BLOCK, &newsigmask, (sigset_t *)NULL);
- sunEnqueueMseEvents();
- (void) sigprocmask (SIG_UNBLOCK, &newsigmask, (sigset_t *)NULL);
- }
-
-#ifdef XKB
- if (!noXkbExtension)
- return;
-#endif
-
- if (ctrl->autoRepeat != AutoRepeatModeOn)
- return;
-
- if (autoRepeatKeyDown) {
- X_GETTIMEOFDAY(&tv);
- tvminus(autoRepeatDeltaTv, tv, autoRepeatLastKeyDownTv);
- if (autoRepeatDeltaTv.tv_sec > 0 ||
- (!autoRepeatFirst && autoRepeatDeltaTv.tv_usec >
- sunAutoRepeatDelay) ||
- (autoRepeatDeltaTv.tv_usec >
- sunAutoRepeatInitiate))
- autoRepeatReady++;
- }
-
- if (autoRepeatReady)
- {
- sunEnqueueAutoRepeat ();
- autoRepeatReady = 0;
- }
-}
diff --git a/nx-X11/programs/Xserver/hw/sunLynx/sunLyMouse.c b/nx-X11/programs/Xserver/hw/sunLynx/sunLyMouse.c
deleted file mode 100644
index 00df3db7c..000000000
--- a/nx-X11/programs/Xserver/hw/sunLynx/sunLyMouse.c
+++ /dev/null
@@ -1,649 +0,0 @@
-/* $Xorg: sunLyMouse.c,v 1.3 2000/08/17 19:48:37 cpqbld Exp $ */
-/*
- * This is sunMouse.c modified for LynxOS
- * Copyright 1996 by Thomas Mueller
- *
- * 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 Thomas Mueller not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Thomas Mueller makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * THOMAS MUELLER DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THOMAS MUELLER 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.
- *
- */
-/* $XFree86: xc/programs/Xserver/hw/sunLynx/sunLyMouse.c,v 3.3 2001/01/17 22:36:53 dawes Exp $ */
-
-/*-
- * Copyright 1987 by the Regents of the University of California
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies. The University of California
- * makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without
- * express or implied warranty.
- */
-
-/************************************************************
-Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright no-
-tice appear in all copies and that both that copyright no-
-tice and this permission notice appear in supporting docu-
-mentation, and that the names of Sun or The Open Group
-not be used in advertising or publicity pertaining to
-distribution of the software without specific prior
-written permission. Sun and The Open Group make no
-representations about the suitability of this software for
-any purpose. It is provided "as is" without any express or
-implied warranty.
-
-SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
-NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE LI-
-ABLE 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.
-
-********************************************************/
-/*
- * Copyright 1991, 1992, 1993 Kaleb S. Keithley
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies. Kaleb S. Keithley makes no
- * representations about the suitability of this software for
- * any purpose. It is provided "as is" without express or
- * implied warranty.
- */
-
-#define NEED_EVENTS
-#include "sun.h"
-
-Bool sunActiveZaphod = TRUE;
-
-static Bool sunCursorOffScreen();
-static void sunCrossScreen();
-static void sunWarpCursor();
-
-miPointerScreenFuncRec sunPointerScreenFuncs = {
- sunCursorOffScreen,
- sunCrossScreen,
- sunWarpCursor,
-};
-
-/*-
- *-----------------------------------------------------------------------
- * sunMouseCtrl --
- * Alter the control parameters for the mouse. Since acceleration
- * etc. is done from the PtrCtrl record in the mouse's device record,
- * there's nothing to do here.
- *
- * Results:
- * None.
- *
- * Side Effects:
- * None.
- *
- *-----------------------------------------------------------------------
- */
-/*ARGSUSED*/
-static
-void sunMouseCtrl (
- DeviceIntPtr device,
- PtrCtrl* ctrl)
-{
-}
-
-/*-
- *-----------------------------------------------------------------------
- * sunMouseProc --
- * Handle the initialization, etc. of a mouse
- *
- * Results:
- * none.
- *
- * Side Effects:
- *
- * Note:
- * When using sunwindows, all input comes off a single fd, stored in the
- * global windowFd. Therefore, only one device should be enabled and
- * disabled, even though the application still sees both mouse and
- * keyboard. We have arbitrarily chosen to enable and disable windowFd
- * in the keyboard routine sunKbdProc rather than in sunMouseProc.
- *
- *-----------------------------------------------------------------------
- */
-int sunMouseProc (
- DeviceIntPtr device,
- int what)
-{
- struct termio tty;
- DevicePtr pMouse = (DevicePtr) device;
- int format;
- static int oformat;
- BYTE map[4];
- char *dev;
-
- switch (what) {
- case DEVICE_INIT:
- if (pMouse != LookupPointerDevice()) {
- ErrorF ("Cannot open non-system mouse");
- return !Success;
- }
- if (sunPtrPriv.fd == -1)
- return !Success;
- pMouse->devicePrivate = (pointer) &sunPtrPriv;
- pMouse->on = FALSE;
- map[1] = 1;
- map[2] = 2;
- map[3] = 3;
- InitPointerDeviceStruct(
- pMouse, map, 3, miPointerGetMotionEvents,
- sunMouseCtrl, miPointerGetMotionBufferSize());
- break;
-
- case DEVICE_ON:
- /* set mouse to raw mode */
- if (ioctl(sunPtrPriv.fd, TCGETA, &tty) != -1) {
- tty.c_iflag = (IGNPAR | IGNBRK) & (~PARMRK) & (~ISTRIP);
- tty.c_oflag = 0;
- tty.c_cflag = CREAD | CS8;
- tty.c_lflag = 0;
- tty.c_line = 0;
- tty.c_cc[VTIME] = 0;
- tty.c_cc[VMIN] = 0;
- if (ioctl(sunPtrPriv.fd, TCSETAW, &tty) < 0)
- perror("ioctl TCSETAW");
- } else
- perror("ioctl TCGETA");
- sunPtrPriv.bmask = 0;
- AddEnabledDevice (sunPtrPriv.fd);
- pMouse->on = TRUE;
- break;
-
- case DEVICE_CLOSE:
- pMouse->on = FALSE;
- break;
-
- case DEVICE_OFF:
- pMouse->on = FALSE;
- RemoveEnabledDevice (sunPtrPriv.fd);
- break;
- }
- return Success;
-}
-
-/* mouse protocol code from XFree86 */
-
-#define P_MS 0 /* Microsoft */
-#define P_MSC 1 /* Mouse Systems Corp */
-#define P_MM 2 /* MMseries */
-#define P_LOGI 3 /* Logitech */
-#define P_BM 4 /* BusMouse ??? */
-#define P_LOGIMAN 5 /* MouseMan / TrackMan
- [CHRIS-211092] */
-#define P_PS2 6 /* PS/2 mouse */
-#define P_MMHIT 7 /* MM_HitTab */
-
-static int
-xf86MouseProtocol(rBuf, nBytes, evBuf)
- unsigned char *rBuf;
- int nBytes;
- Firm_event evBuf[];
-{
- int i, buttons, dx, dy;
- static int pBufP = 0;
- static unsigned char pBuf[8];
- static int lastButtons;
- int change;
- int numEvents = 0;
-
- const int mseType = P_MSC;
- const int chordMiddle = 0;
-
- static unsigned char proto[8][5] = {
- /* hd_mask hd_id dp_mask dp_id nobytes */
- { 0x40, 0x40, 0x40, 0x00, 3 }, /* MicroSoft */
- { 0xf8, 0x80, 0x00, 0x00, 5 }, /* MouseSystems */
- { 0xe0, 0x80, 0x80, 0x00, 3 }, /* MMSeries */
- { 0xe0, 0x80, 0x80, 0x00, 3 }, /* Logitech */
- { 0xf8, 0x80, 0x00, 0x00, 5 }, /* BusMouse */
- { 0x40, 0x40, 0x40, 0x00, 3 }, /* MouseMan
- [CHRIS-211092] */
- { 0xc0, 0x00, 0x00, 0x00, 3 }, /* PS/2 mouse */
- { 0xe0, 0x80, 0x80, 0x00, 3 }, /* MM_HitTablet */
- };
-
- for ( i=0; i < nBytes; i++) {
- /*
- * Hack for resyncing: We check here for a package that is:
- * a) illegal (detected by wrong data-package header)
- * b) invalid (0x80 == -128 and that might be wrong for MouseSystems)
- * c) bad header-package
- *
- * NOTE: b) is a voilation of the MouseSystems-Protocol, since values of
- * -128 are allowed, but since they are very seldom we can easily
- * use them as package-header with no button pressed.
- * NOTE/2: On a PS/2 mouse any byte is valid as a data byte. Furthermore,
- * 0x80 is not valid as a header byte. For a PS/2 mouse we skip
- * checking data bytes.
- * For resyncing a PS/2 mouse we require the two most significant
- * bits in the header byte to be 0. These are the overflow bits,
- * and in case of an overflow we actually lose sync. Overflows
- * are very rare, however, and we quickly gain sync again after
- * an overflow condition. This is the best we can do. (Actually,
- * we could use bit 0x08 in the header byte for resyncing, since
- * that bit is supposed to be always on, but nobody told
- * Microsoft...)
- */
- if (pBufP != 0 && mseType != P_PS2 &&
- ((rBuf[i] & proto[mseType][2]) != proto[mseType][3]
- || rBuf[i] == 0x80))
- {
- pBufP = 0; /* skip package */
- }
-
- if (pBufP == 0 &&
- (rBuf[i] & proto[mseType][0]) != proto[mseType][1])
- {
- /*
- * Hack for Logitech MouseMan Mouse - Middle button
- *
- * Unfortunately this mouse has variable length packets: the standard
- * Microsoft 3 byte packet plus an optional 4th byte whenever the
- * middle button status changes.
- *
- * We have already processed the standard packet with the movement
- * and button info. Now post an event message with the old status
- * of the left and right buttons and the updated middle button.
- */
-
- /*
- * Even worse, different MouseMen and TrackMen differ in the 4th
- * byte: some will send 0x00/0x20, others 0x01/0x21, or even
- * 0x02/0x22, so I have to strip off the lower bits. [CHRIS-211092]
- */
- if ((mseType == P_MS || mseType == P_LOGIMAN)
- && (char)(rBuf[i] & ~0x23) == 0)
- {
- buttons = ((int)(rBuf[i] & 0x20) >> 4)
- | (lastButtons & 0x05);
-
- change = buttons ^ lastButtons;
- /* a little naive, but sufficient for now */
- if (change & 4)
- {
- evBuf[numEvents].id = MS_LEFT;
- evBuf[numEvents].value = (buttons & 4) ? VKEY_DOWN : VKEY_UP;
- ++numEvents;
- }
- if (change & 2)
- {
- evBuf[numEvents].id = MS_MIDDLE;
- evBuf[numEvents].value = (buttons & 2) ? VKEY_DOWN : VKEY_UP;
- ++numEvents;
- }
- if (change & 1)
- {
- evBuf[numEvents].id = MS_RIGHT;
- evBuf[numEvents].value = (buttons & 1) ? VKEY_DOWN : VKEY_UP;
- ++numEvents;
- }
- lastButtons = buttons;
- }
-
- continue; /* skip package */
- }
-
-
- pBuf[pBufP++] = rBuf[i];
- if (pBufP != proto[mseType][4]) continue;
-
-
- /*
- * assembly full package
- */
- switch(mseType) {
-
- case P_LOGIMAN: /* MouseMan / TrackMan [CHRIS-211092] */
- case P_MS: /* Microsoft */
- if (chordMiddle)
- buttons = (((int) pBuf[0] & 0x30) == 0x30) ? 2 :
- ((int)(pBuf[0] & 0x20) >> 3)
- | ((int)(pBuf[0] & 0x10) >> 4);
- else {
- buttons = (lastButtons & 2)
- | ((int)(pBuf[0] & 0x20) >> 3)
- | ((int)(pBuf[0] & 0x10) >> 4);
- }
- dx = (char)((pBuf[0] & 0x03) << 6) | (pBuf[1] & 0x3F);
- dy = (char)((pBuf[0] & 0x0C) << 4) | (pBuf[2] & 0x3F);
- break;
-
- case P_MSC: /* Mouse Systems Corp */
- buttons = (~pBuf[0]) & 0x07;
- dx = (char)(pBuf[1]) + (char)(pBuf[3]);
- dy = - ((char)(pBuf[2]) + (char)(pBuf[4]));
- break;
-
-
- case P_MMHIT: /* MM_HitTablet */
- buttons = pBuf[0] & 0x07;
- if (buttons != 0)
- buttons = 1 << (buttons - 1);
- dx = (pBuf[0] & 0x10) ? pBuf[1] : - pBuf[1];
- dy = (pBuf[0] & 0x08) ? - pBuf[2] : pBuf[2];
- break;
-
- case P_MM: /* MM Series */
- case P_LOGI: /* Logitech Mice */
- buttons = pBuf[0] & 0x07;
- dx = (pBuf[0] & 0x10) ? pBuf[1] : - pBuf[1];
- dy = (pBuf[0] & 0x08) ? - pBuf[2] : pBuf[2];
- break;
-
- case P_BM: /* BusMouse */
- buttons = (~pBuf[0]) & 0x07;
- dx = pBuf[1];
- dy = - pBuf[2];
- break;
-
- case P_PS2: /* PS/2 mouse */
- buttons = (pBuf[0] & 0x04) >> 1 | /* Middle */
- (pBuf[0] & 0x02) >> 1 | /* Right */
- (pBuf[0] & 0x01) << 2; /* Left */
- dx = (pBuf[0] & 0x10) ? pBuf[1]-256 : pBuf[1];
- dy = (pBuf[0] & 0x20) ? -(pBuf[2]-256) : -pBuf[2];
- break;
- }
-
- /* a little naive, but sufficient for now */
- change = buttons ^ lastButtons;
- if (change & 4)
- {
- evBuf[numEvents].id = MS_LEFT;
- evBuf[numEvents].value = (buttons & 4) ? VKEY_DOWN : VKEY_UP;
- ++numEvents;
- }
- if (change & 2)
- {
- evBuf[numEvents].id = MS_MIDDLE;
- evBuf[numEvents].value = (buttons & 2) ? VKEY_DOWN : VKEY_UP;
- ++numEvents;
- }
- if (change & 1)
- {
- evBuf[numEvents].id = MS_RIGHT;
- evBuf[numEvents].value = (buttons & 1) ? VKEY_DOWN : VKEY_UP;
- ++numEvents;
- }
- lastButtons = buttons;
-
- if (dx)
- {
- evBuf[numEvents].id = LOC_X_DELTA;
- evBuf[numEvents].value = dx;
- ++numEvents;
- }
- if (dy)
- {
- evBuf[numEvents].id = LOC_Y_DELTA;
- evBuf[numEvents].value = -dy;
- ++numEvents;
- }
- pBufP = 0;
- }
- return numEvents;
-}
-
-/*-
- *-----------------------------------------------------------------------
- * sunMouseGetEvents --
- * Return the events waiting in the wings for the given mouse.
- *
- * Results:
- * A pointer to an array of Firm_events or (Firm_event *)0 if no events
- * The number of events contained in the array.
- * A boolean as to whether more events might be available.
- *
- * Side Effects:
- * None.
- *-----------------------------------------------------------------------
- */
-
-Firm_event* sunMouseGetEvents (
- int fd,
- Bool on,
- int* pNumEvents,
- Bool* pAgain)
-{
- static Firm_event evBuf[MAXEVENTS]; /* Buffer for Firm_events */
- int nBytes; /* number of bytes available. */
- char buf[8];
-
- if ((nBytes = read(fd, buf, sizeof(buf))) == -1) {
- if (errno == EWOULDBLOCK || errno == EAGAIN || errno == EINTR) {
- *pNumEvents = 0;
- if (errno == EINTR)
- *pAgain = TRUE;
- else
- *pAgain = FALSE;
- } else {
- Error ("sunMouseGetEvents read");
- FatalError ("Could not read from mouse");
- }
- } else {
- if (on) {
- *pAgain = (nBytes == sizeof(buf)); /* very unlikely... */
- if (*pNumEvents = xf86MouseProtocol(buf, nBytes, evBuf))
- {
- struct timeval now;
- int i;
-
- X_GETTIMEOFDAY(&now);
- for (i=0;i<*pNumEvents;i++)
- evBuf[i].time = now;
- }
- } else {
- *pNumEvents = 0;
- *pAgain = FALSE;
- }
- }
- return evBuf;
-}
-
-
-/*-
- *-----------------------------------------------------------------------
- * MouseAccelerate --
- * Given a delta and a mouse, return the acceleration of the delta.
- *
- * Results:
- * The corrected delta
- *
- * Side Effects:
- * None.
- *
- *-----------------------------------------------------------------------
- */
-static short
-MouseAccelerate (device, delta)
- DeviceIntPtr device;
- int delta;
-{
- int sgn = sign(delta);
- PtrCtrl *pCtrl;
- short ret;
-
- delta = abs(delta);
- pCtrl = &device->ptrfeed->ctrl;
- if (delta > pCtrl->threshold) {
- ret =
- (short) sgn *
- (pCtrl->threshold + ((delta - pCtrl->threshold) * pCtrl->num) /
- pCtrl->den);
- } else {
- ret = (short) sgn * delta;
- }
- return ret;
-}
-
-/*-
- *-----------------------------------------------------------------------
- * sunMouseEnqueueEvent --
- * Given a Firm_event for a mouse, pass it off the the dix layer
- * properly converted...
- *
- * Results:
- * None.
- *
- * Side Effects:
- * The cursor may be redrawn...? devPrivate/x/y will be altered.
- *
- *-----------------------------------------------------------------------
- */
-
-void sunMouseEnqueueEvent (
- DeviceIntPtr device,
- Firm_event *fe)
-{
- xEvent xE;
- sunPtrPrivPtr pPriv; /* Private data for pointer */
- int bmask; /* Temporary button mask */
- unsigned long time;
- int x, y;
-
- pPriv = (sunPtrPrivPtr)device->public.devicePrivate;
-
- time = xE.u.keyButtonPointer.time = TVTOMILLI(fe->time);
-
- switch (fe->id) {
- case MS_LEFT:
- case MS_MIDDLE:
- case MS_RIGHT:
- /*
- * A button changed state. Sometimes we will get two events
- * for a single state change. Should we get a button event which
- * reflects the current state of affairs, that event is discarded.
- *
- * Mouse buttons start at 1.
- */
- xE.u.u.detail = (fe->id - MS_LEFT) + 1;
- bmask = 1 << xE.u.u.detail;
- if (fe->value == VKEY_UP) {
- if (pPriv->bmask & bmask) {
- xE.u.u.type = ButtonRelease;
- pPriv->bmask &= ~bmask;
- } else {
- return;
- }
- } else {
- if ((pPriv->bmask & bmask) == 0) {
- xE.u.u.type = ButtonPress;
- pPriv->bmask |= bmask;
- } else {
- return;
- }
- }
- mieqEnqueue (&xE);
- break;
- case LOC_X_DELTA:
- miPointerDeltaCursor (MouseAccelerate(device,fe->value),0,time);
- break;
- case LOC_Y_DELTA:
- /*
- * For some reason, motion up generates a positive y delta
- * and motion down a negative delta, so we must subtract
- * here instead of add...
- */
- miPointerDeltaCursor (0,-MouseAccelerate(device,fe->value),time);
- break;
- case LOC_X_ABSOLUTE:
- miPointerPosition (&x, &y);
- miPointerAbsoluteCursor (fe->value, y, time);
- break;
- case LOC_Y_ABSOLUTE:
- miPointerPosition (&x, &y);
- miPointerAbsoluteCursor (x, fe->value, time);
- break;
- default:
- FatalError ("sunMouseEnqueueEvent: unrecognized id\n");
- break;
- }
-}
-
-/*ARGSUSED*/
-static Bool
-sunCursorOffScreen (pScreen, x, y)
- ScreenPtr *pScreen;
- int *x, *y;
-{
- int index, ret = FALSE;
- extern Bool PointerConfinedToScreen();
-
- if (PointerConfinedToScreen()) return TRUE;
- /*
- * Active Zaphod implementation:
- * increment or decrement the current screen
- * if the x is to the right or the left of
- * the current screen.
- */
- if (sunActiveZaphod &&
- screenInfo.numScreens > 1 && (*x >= (*pScreen)->width || *x < 0)) {
- index = (*pScreen)->myNum;
- if (*x < 0) {
- index = (index ? index : screenInfo.numScreens) - 1;
- *pScreen = screenInfo.screens[index];
- *x += (*pScreen)->width;
- } else {
- *x -= (*pScreen)->width;
- index = (index + 1) % screenInfo.numScreens;
- *pScreen = screenInfo.screens[index];
- }
- ret = TRUE;
- }
- return ret;
-}
-
-static void
-sunCrossScreen (pScreen, entering)
- ScreenPtr pScreen;
- Bool entering;
-{
- if (sunFbs[pScreen->myNum].EnterLeave)
- (*sunFbs[pScreen->myNum].EnterLeave) (pScreen, entering ? 0 : 1);
-}
-
-static void
-sunWarpCursor (pScreen, x, y)
- ScreenPtr pScreen;
- int x, y;
-{
- sigset_t newsigmask;
-
- (void) sigemptyset (&newsigmask);
- (void) sigaddset (&newsigmask, SIGIO);
- (void) sigprocmask (SIG_BLOCK, &newsigmask, (sigset_t *)NULL);
- miPointerWarpCursor (pScreen, x, y);
- (void) sigprocmask (SIG_UNBLOCK, &newsigmask, (sigset_t *)NULL);
-}
diff --git a/nx-X11/programs/Xserver/hw/sunLynx/sunLyUtil.c b/nx-X11/programs/Xserver/hw/sunLynx/sunLyUtil.c
deleted file mode 100644
index e260acfee..000000000
--- a/nx-X11/programs/Xserver/hw/sunLynx/sunLyUtil.c
+++ /dev/null
@@ -1,509 +0,0 @@
-/* $Xorg: sunLyUtil.c,v 1.3 2000/08/17 19:48:37 cpqbld Exp $ */
-/*
- * CG3 and CG6 utility functions for LynxOS, derived from NetBSD
- * Copyright 1996 by Thomas Mueller
- *
- * 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 Thomas Mueller not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Thomas Mueller makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * THOMAS MUELLER DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THOMAS MUELLER 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.
- *
- */
-/* $XFree86: xc/programs/Xserver/hw/sunLynx/sunLyUtil.c,v 3.1 1996/12/27 06:51:42 dawes Exp $ */
-
-/* $NetBSD: bt_subr.c,v 1.4 1994/11/20 20:51:54 deraadt Exp $ */
-
-/*
- * Copyright (c) 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This software was developed by the Computer Systems Engineering group
- * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
- * contributed to Berkeley.
- *
- * All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Lawrence Berkeley Laboratory.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)bt_subr.c 8.2 (Berkeley) 1/21/94
- */
-
-/* adaption for LynxOS microSPARC 2.4.0 and X11R6[.1]
- * Copyright 1996 by Thomas Mueller <tm@systrix.de>
- *
- * 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 Thomas Mueller not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Thomas Mueller makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * THOMAS MUELLER DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THOMAS MUELLER 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.
- *
- */
-
-#include "sun.h"
-#include "btreg.h"
-#include "btvar.h"
-#include "cgsixreg.h"
-#define useracc(a,b,c) (1)
-
-/*
- * Common code for dealing with Brooktree video DACs.
- * (Contains some software-only code as well, since the colormap
- * ioctls are shared between the cgthree and cgsix drivers.)
- */
-
-/*
- * Implement an FBIOGETCMAP-like ioctl.
- */
-int
-bt_getcmap(struct fbcmap *p, union bt_cmap *cm, int cmsize)
-{
- u_int i;
- u_int start;
- u_int count;
- u_char *cp;
-
- start = p->index;
- count = p->count;
- if (start >= cmsize || start + count > cmsize)
- return (EINVAL);
- if (!useracc(p->red, count, B_WRITE) ||
- !useracc(p->green, count, B_WRITE) ||
- !useracc(p->blue, count, B_WRITE))
- return (EFAULT);
- for (cp = &cm->cm_map[start][0], i = 0; i < count; cp += 3, i++) {
- p->red[i] = cp[0];
- p->green[i] = cp[1];
- p->blue[i] = cp[2];
- }
- return (0);
-}
-
-/*
- * Implement the software portion of an FBIOPUTCMAP-like ioctl.
- */
-int
-bt_putcmap(struct fbcmap *p, union bt_cmap *cm, int cmsize)
-{
- u_int i;
- int start;
- int count;
- u_char *cp;
-
- start = p->index;
- count = p->count;
- if (start >= cmsize || start + count > cmsize)
- return (EINVAL);
- if (!useracc(p->red, count, B_READ) ||
- !useracc(p->green, count, B_READ) ||
- !useracc(p->blue, count, B_READ))
- return (EFAULT);
- for (cp = &cm->cm_map[start][0], i = 0; i < count; cp += 3, i++) {
- cp[0] = p->red[i];
- cp[1] = p->green[i];
- cp[2] = p->blue[i];
- }
- return (0);
-}
-
-union cursor_cmap { /* colormap, like bt_cmap, but tiny */
- u_char cm_map[2][3]; /* 2 R/G/B entries */
- u_int cm_chip[2]; /* 2 chip equivalents */
-};
-
-struct cg6_cursor { /* cg6 hardware cursor status */
- short cc_enable; /* cursor is enabled */
- struct fbcurpos cc_pos; /* position */
- struct fbcurpos cc_hot; /* hot-spot */
- struct fbcurpos cc_size; /* size of mask & image fields */
- u_int cc_bits[2][32]; /* space for mask & image bits */
- union cursor_cmap cc_color; /* cursor colormap */
-};
-
-static union bt_cmap sc_cmap; /* local copy of LUT */
-static int blanked = 1; /* to jump-start it ... */
-static struct cg6_cursor sc_cursor; /* cursor info */
-
-/*
- * Clean up hardware state (e.g., after bootup or after X crashes).
- */
-static void
-cg6_reset(fbFd * fb)
-{
- volatile struct cg6_tec_xxx *tec;
- int fhc;
- short fhcrev;
- volatile struct bt_regs *bt;
-
- /* hide the cursor, just in case */
- ((volatile struct cg6_thc *) (fb->thc))->thc_cursxy =
- (THC_CURSOFF << 16) | THC_CURSOFF;
-
- /* turn off frobs in transform engine (makes X11 work) */
- tec = fb->tec;
- tec->tec_mv = 0;
- tec->tec_clip = 0;
- tec->tec_vdc = 0;
-
- /* take care of hardware bugs in old revisions */
- fhcrev = (*(int *) fb->fhc >> FHC_REV_SHIFT) &
- (FHC_REV_MASK >> FHC_REV_SHIFT);
- if (fhcrev < 5) {
- /*
- * Keep current resolution; set cpu to 68020, set test
- * window (size 1Kx1K), and for rev 1, disable dest cache.
- */
- fhc = (*(int *) fb->fhc & FHC_RES_MASK) | FHC_CPU_68020 |
- FHC_TEST |
- (11 << FHC_TESTX_SHIFT) | (11 << FHC_TESTY_SHIFT);
- if (fhcrev < 2)
- fhc |= FHC_DST_DISABLE;
- *(int *) fb->fhc = fhc;
- }
- /* Enable cursor in Brooktree DAC. */
- bt = fb->ramdac;
- bt->bt_addr = 0x06 << 24;
- bt->bt_ctrl |= 0x03 << 24;
-}
-
-static void
-cg6_loadcursor(fbFd * fb)
-{
- volatile struct cg6_thc *thc;
- u_int edgemask;
- u_int m;
- int i;
-
- /*
- * Keep the top size.x bits. Here we *throw out* the top
- * size.x bits from an all-one-bits word, introducing zeros in
- * the top size.x bits, then invert all the bits to get what
- * we really wanted as our mask. But this fails if size.x is
- * 32---a sparc uses only the low 5 bits of the shift count---
- * so we have to special case that.
- */
- edgemask = ~0;
- if (sc_cursor.cc_size.x < 32)
- edgemask = ~(edgemask >> sc_cursor.cc_size.x);
- thc = (volatile struct cg6_thc *) fb->thc;
- for (i = 0; i < 32; i++) {
- m = sc_cursor.cc_bits[0][i] & edgemask;
- thc->thc_cursmask[i] = m;
- thc->thc_cursbits[i] = m & sc_cursor.cc_bits[1][i];
- }
-}
-
-static void
-cg6_setcursor(fbFd * fb)
-{
- /* we need to subtract the hot-spot value here */
-#define COORD(f) (sc_cursor.cc_pos.f - sc_cursor.cc_hot.f)
- ((volatile struct cg6_thc *) (fb->thc))->thc_cursxy = sc_cursor.cc_enable ?
- ((COORD(x) << 16) | (COORD(y) & 0xffff)) :
- (THC_CURSOFF << 16) | THC_CURSOFF;
-#undef COORD
-}
-
-/*
- * Load the cursor (overlay `foreground' and `background') colors.
- */
-static void
-cg6_loadomap(fbFd * fb)
-{
- volatile struct bt_regs *bt;
- u_int i;
-
- bt = (volatile struct bt_regs *) fb->ramdac;
- bt->bt_addr = 0x01 << 24; /* set background color */
- i = sc_cursor.cc_color.cm_chip[0];
- bt->bt_omap = i; /* R */
- bt->bt_omap = i << 8; /* G */
- bt->bt_omap = i << 16; /* B */
-
- bt->bt_addr = 0x03 << 24; /* set foreground color */
- bt->bt_omap = i << 24; /* R */
- i = sc_cursor.cc_color.cm_chip[1];
- bt->bt_omap = i; /* G */
- bt->bt_omap = i << 8; /* B */
-}
-
-/*
- * Load a subset of the current (new) colormap into the color DAC.
- */
-static void
-cg6_loadcmap(fbFd * fb, union bt_cmap *cm, int start, int ncolors)
-{
- volatile struct bt_regs *bt;
- u_int *ip;
- u_int i;
- int count;
-
- ip = &cm->cm_chip[BT_D4M3(start)]; /* start/4 * 3 */
- count = BT_D4M3(start + ncolors - 1) - BT_D4M3(start) + 3;
- bt = (struct bt_regs *) fb->ramdac;
- bt->bt_addr = BT_D4M4(start) << 24;
- while (--count >= 0) {
- i = *ip++;
- /* hardware that makes one want to pound boards with hammers */
- bt->bt_cmap = i;
- bt->bt_cmap = i << 8;
- bt->bt_cmap = i << 16;
- bt->bt_cmap = i << 24;
- }
-}
-
-/*
- * Undo the effect of an FBIOSVIDEO that turns the video off on a CG6
- */
-static void
-cg6_unblank(fbFd * dev)
-{
- volatile struct cg6_thc *thc = (volatile struct cg6_thc *) dev->thc;
- unsigned long x;
- unsigned long y;
-
- if (blanked) {
- thc->thc_misc = (thc->thc_misc & ~THC_MISC_VIDEN) | THC_MISC_VIDEN;
- }
- blanked = 0;
-}
-
-/*
- * Load a subset of the current (new) colormap into the Brooktree DAC.
- */
-static void
-cg3_loadcmap(fbFd * fb, union bt_cmap *cm, int start, int ncolors)
-{
- volatile struct bt_regs *bt;
- u_int *ip;
- int count;
-
- ip = &cm->cm_chip[BT_D4M3(start)]; /* start/4 * 3 */
- count = BT_D4M3(start + ncolors - 1) - BT_D4M3(start) + 3;
- bt = (struct bt_regs *) fb->ramdac;
- bt->bt_addr = BT_D4M4(start);
- while (--count >= 0)
- bt->bt_cmap = *ip++;
-}
-
-/*
- * Undo the effect of an FBIOSVIDEO that turns the video off on a CG3
- */
-static void
-cg3_unblank(fbFd * dev)
-{
- volatile struct bt_regs *bt;
-
- if (blanked) {
- bt = (struct bt_regs *) dev->ramdac;
- /* restore color 0 (and R of color 1) */
- bt->bt_addr = 0;
- bt->bt_cmap = sc_cmap.cm_chip[0];
-
- /* restore read mask */
- bt->bt_addr = 0x06; /* command reg */
- bt->bt_ctrl = 0x73; /* overlay plane */
- bt->bt_addr = 0x04; /* read mask */
- bt->bt_ctrl = 0xff; /* color planes */
- }
- blanked = 0;
-}
-
-int
-sunIoctl(fbFd * fb, int cmd, void *arg)
-{
- int error;
- int v;
- int i;
- u_int count;
- union cursor_cmap tcm;
-
- switch (cmd) {
- default:
- errno = EINVAL;
- return -1;
- case FBIOPUTCMAP:
-#define q ((struct fbcmap *)arg)
- if (error = bt_putcmap(q, &sc_cmap, 256))
- return error;
- if (fb->thc) { /* CG6 */
- cg6_loadcmap(fb, &sc_cmap, q->index, q->count);
- } else { /* CG3 */
- cg3_loadcmap(fb, &sc_cmap, q->index, q->count);
- }
- break;
- case FBIOSVIDEO:
- if (fb->thc) { /* CG6 */
- if (*(int *) arg)
- cg6_unblank(fb);
- else {
- if (!blanked) {
- volatile struct cg6_thc *thc =
- (volatile struct cg6_thc *) fb->thc;
-
- thc->thc_misc = (thc->thc_misc & ~THC_MISC_VIDEN);
- }
- blanked = 1;
- }
- } else { /* CG3 */
- if (*(int *) arg)
- cg3_unblank(fb);
- else {
- if (!blanked) {
- volatile struct bt_regs *bt;
-
- bt = (struct bt_regs *) fb->ramdac;
- bt->bt_addr = 0x06; /* command reg */
- bt->bt_ctrl = 0x70; /* overlay plane */
- bt->bt_addr = 0x04; /* read mask */
- bt->bt_ctrl = 0x00; /* color planes */
-
- /*
- * Set color 0 to black -- note that this overwrites R of
- * color 1.
- */
- bt->bt_addr = 0;
- bt->bt_cmap = 0;
-
- }
- blanked = 1;
- }
- }
- break;
-/* these are for both FBIOSCURSOR and FBIOGCURSOR */
-#define p ((struct fbcursor *)arg)
-#define cc (&sc_cursor)
-
- case FBIOSCURSOR:
- if (!fb->thc) { /* reject non CG6 */
- errno = EINVAL;
- return -1;
- }
- /*
- * For setcmap and setshape, verify parameters, so that
- * we do not get halfway through an update and then crap
- * out with the software state screwed up.
- */
- v = p->set;
- if (v & FB_CUR_SETCMAP) {
- /*
- * This use of a temporary copy of the cursor
- * colormap is not terribly efficient, but these
- * copies are small (8 bytes)...
- */
- tcm = cc->cc_color;
- error = bt_putcmap(&p->cmap, (union bt_cmap *) &tcm, 2);
- if (error)
- return (error);
- }
- if (v & FB_CUR_SETSHAPE) {
- if ((u_int) p->size.x > 32 || (u_int) p->size.y > 32)
- return (EINVAL);
- count = p->size.y * 32 / NBBY;
- if (!useracc(p->image, count, B_READ) ||
- !useracc(p->mask, count, B_READ))
- return (EFAULT);
- }
- /* parameters are OK; do it */
- if (v & (FB_CUR_SETCUR | FB_CUR_SETPOS | FB_CUR_SETHOT)) {
- if (v & FB_CUR_SETCUR)
- cc->cc_enable = p->enable;
- if (v & FB_CUR_SETPOS)
- cc->cc_pos = p->pos;
- if (v & FB_CUR_SETHOT)
- cc->cc_hot = p->hot;
- cg6_setcursor(fb);
- }
- if (v & FB_CUR_SETCMAP) {
- cc->cc_color = tcm;
- cg6_loadomap(fb); /* XXX defer to vertical retrace */
- }
- if (v & FB_CUR_SETSHAPE) {
- cc->cc_size = p->size;
- count = p->size.y * 32 / NBBY;
- bzero((caddr_t) cc->cc_bits, sizeof cc->cc_bits);
- bcopy(p->mask, (caddr_t) cc->cc_bits[0], count);
- bcopy(p->image, (caddr_t) cc->cc_bits[1], count);
- cg6_loadcursor(fb);
- }
- break;
- case FBIOSCURPOS:
- if (!fb->thc) { /* reject non CG6 */
- errno = EINVAL;
- return -1;
- }
- sc_cursor.cc_pos = *(struct fbcurpos *) arg;
- cg6_setcursor(fb);
- break;
-
- case FBIOGCURMAX:
- if (!fb->thc) { /* reject non CG6 */
- errno = EINVAL;
- return -1;
- }
- /* max cursor size is 32x32 */
- ((struct fbcurpos *) arg)->x = 32;
- ((struct fbcurpos *) arg)->y = 32;
- break;
- case FBIORESET:
- if (!fb->thc) { /* reject non CG6 */
- errno = EINVAL;
- return -1;
- }
- cg6_reset(fb);
- }
- return 0;
-}
diff --git a/nx-X11/programs/Xserver/hw/sunLynx/vuid_event.h b/nx-X11/programs/Xserver/hw/sunLynx/vuid_event.h
deleted file mode 100644
index 37b3fd5b3..000000000
--- a/nx-X11/programs/Xserver/hw/sunLynx/vuid_event.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/* $Xorg: vuid_event.h,v 1.3 2000/08/17 19:48:38 cpqbld Exp $ */
-/*
- * Copyright (c) 1992, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This software was developed by the Computer Systems Engineering group
- * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
- * contributed to Berkeley.
- *
- * All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Lawrence Berkeley Laboratory.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)vuid_event.h 8.1 (Berkeley) 6/11/93
- */
-/* $NetBSD: vuid_event.h,v 1.2 1994/11/20 20:53:39 deraadt Exp $ */
-/* $XFree86: xc/programs/Xserver/hw/sunLynx/vuid_event.h,v 3.1 1996/12/27 06:51:43 dawes Exp $ */
-
-/*
- * The following is a minimal emulation of Sun's `Firm_event' structures
- * and related operations necessary to make X11 happy (i.e., make it
- * compile, and make old X11 binaries run).
- */
-typedef struct firm_event {
- u_short id; /* key or MS_* or LOC_[XY]_DELTA */
- u_short pad; /* unused, at least by X11 */
- int value; /* VKEY_{UP,DOWN} or locator delta */
- struct timeval time;
-} Firm_event;
-
-/*
- * Special `id' fields. These weird numbers simply match the old binaries.
- * Others are in 0..0x7f and are keyboard key numbers (keyboard dependent!).
- */
-#define MS_LEFT 0x7f20 /* left mouse button */
-#define MS_MIDDLE 0x7f21 /* middle mouse button */
-#define MS_RIGHT 0x7f22 /* right mouse button */
-#define LOC_X_DELTA 0x7f80 /* mouse delta-X */
-#define LOC_Y_DELTA 0x7f81 /* mouse delta-Y */
-#define LOC_X_ABSOLUTE 0x7f82 /* X compat, unsupported */
-#define LOC_Y_ABSOLUTE 0x7f83 /* X compat, unsupported */
-
-/*
- * Special `value' fields. These apply to keys and mouse buttons. The
- * value of a mouse delta is the delta. Note that positive deltas are
- * left and up (not left and down as you might expect).
- */
-#define VKEY_UP 0 /* key or button went up */
-#define VKEY_DOWN 1 /* key or button went down */
-
-/*
- * The following ioctls are clearly intended to take things in and out
- * of `firm event' mode. Since we always run in this mode (as far as
- * /dev/kbd and /dev/mouse are concerned, anyway), we always claim to
- * be in this mode and reject anything else.
- */
-#define VUIDSFORMAT _IOW('v', 1, int)
-#define VUIDGFORMAT _IOR('v', 2, int)
-#define VUID_FIRM_EVENT 1 /* the only format we support */