			==========================		Updated:
			XGGI - X server for LibGGI		990516
			==========================

Introduction
============


XGGI is a partly accelerated and fully multihead capable X server which
uses LibGGI to do hardware independent graphics and input. It supports 8,
15, 16, 24 and 32 bit modes on any LibGGI target that has a pixellinear
DirectBuffer, and should run in any resolution the target supports.

XGGI has been successfully tested on the X, fbdev, svga, dga and tile targets.

Note that even though XGGI is built from the XFree sources it is not an
XFree86 server. No code from hw/xfree86 is used, and therefore an eventual
/etc/XF86Config file is completely ignored. This is likely to change in
the future, as the XFree86 DGA, Misc and VidMode extensions and XAA are
desireable features in XGGI.


Commandline
===========

In addition to the normal X server commandline arguments (listed by XGGI -h)
the following are supported by XGGI.

-targets <targetlist>  the target(s) we should open the screen(s) on
-modes <ggimodelist>   the mode(s) we should use
-rows <numrows>        number of screen rows in multihead configurations
-buttons <nr-buttons>  specify number of pointer buttons
-dontzap               disable the <Crtl><Alt><BS> server abort sequence
-noxfreeemu            don't set GGI_NEWVT and GII_CTRLALT_VTSWITCH
                         automaticly

<targetlist> may be either the name of a single LibGGI display target, or a
list on the format "(target1):(target2):(target3)..." containing between one
and nine LibGGI targets (if you want support for more than 9 screens you can
just change MAXSCREENS in xc/programs/Xserver/include/misc.h and recompile
XGGI). XGGI will start one screen on each target specified.

<ggimodelist> is either a single LibGGI mode or a list of modes on the same
format as <targetlist>. In a multihead configuration each <ggimodelist>
entry corresponds to a target in <targetlist>. See the ggiParseMode(3)
man-page for a description of the LibGGI mode format.

If any of these parameters are left out or if an entry is empty (just "()")
the LibGGI defaults and environment variables will be used like for any
normal LibGGI application.

<numrows> is used to specify the screen layout in a multihead configuration.
For example a three screen configuration can be layed out in the following
ways:

<numrows> == 1	<numrows> == 2	<numrows> == 3
-------------	---------	-----
| 1 | 2 | 3 |	| 1 | 2 |	| 1 |
-------------	---------	-----
		| 3 |   	| 2 |
		-----		-----
				| 3 |
				-----

<nr-buttons> specifies the maximum number of buttons your pointer device
have. The default is 5, which will work just fine if your device has five
or less buttons. If it has more buttons you need to specify <nr-buttons>
manually.

Normally the XGGI server can be killed by pressing Ctrl-Alt-Backspace, but
if you start the server with the -dontzap option this is disabled.

Normally the XGGI server automaticly sets the GGI_NEWVT and
GII_CTRLALT_VTSWITCH environment variables (see doc/env.txt in the LibGGI
and LibGII documentation respectively) to resemble the behaviour of an
XFree server as close as possible. If you pass -noxfreeemu to the server
it will not do this.


Keyboard handling
=================

Due to the fact that the X server core wants to be fed keycodes, while LibGGI
delivers key "labels" and "symbols", some special treatment is required for
the keyboard. Bascicly XGGI translates LibGGI "labels" into pseudo keycodes,
which is then mapped into X keysyms as in any other X server. The huge benefit
of this compared to the old schemes is that XGGI keymapping works identical
on all LibGGI targets.

This also means that keycodes will differ between XGGI and any "native"
X server you are/have been running, which in turn means that any xmodmap
files you have probably are useless with XGGI. This is however not that bad,
because XGGI comes with pre-made keymaps which are ready to be fed to xmodmap.

These keymaps can be found in the keymaps/ directory.
To load a keymap file you simply type: xmodmap path_to_keymap_file
The required xmodmap commands should be put in your X server init scripts so
they always get run when XGGI starts.

IMPORTANT:
You need to have at least one X client (like an xterm or the window manager)
running when you execute the xmodmap command(s), or else xmodmap will be
ignored silently. (To be precise - it is not actually ignored, but the
X server will normally reset itself after the last client terminates, and
if xmodmap is the only client...)

Currently there are three keymaps in this archive: xggimap.base which will
more or less restore the default keymap in the server, xggimap.se_se and
xggimap.de_de, which contains the necessary overrides to produce a Swedish
and German keymapping respectively. More keymaps will be added as I recieve
them from contributors.

IMPORTANT FOR LINUX-CONSOLE BASED TARGETS:
To make AltGr work properly in XGGI you should execute
xmodmap -e "keycode 119 = Mode_switch"
_after_ you have lodaded the keymaps.


Font path
=========

As XGGI does not read /etc/XF86Config you have to specify the fontpath by
passing the -fp option to XGGI. The -fp option takes a comma separated 
fontpath as an argument. Note that if you have your fonts in the standard
location /usr/X11R6/lib/X11/fonts/ you don't need to specify a fontpath.


Hardware acceleration
=====================

Currently only the window/area moving/blitting code and rectangle fills
take advantage of HW acceleration in LibGGI targets. More acceleration is
planned to be added.


Where to get XGGI
=================

The latest version can always be found at
http://www.stacken.kth.se/~mackan/ggi/xggi/
or in /afs/stacken.kth.se/home/mackan/public_html/ggi/xggi

New releases will also be uploaded to the GGI FTP server (see below).


Other GGI resources
===================

Web site: http://www.ggi-project.org/
FTP site: ftp://ftp.ggi-project.org/pub/ggi


//Marcus Sundberg 	[marcus@ggi-project.org]
