Merge branch 'master' into XACE-SELINUX

Conflicts:

	Xext/EVI.c
	Xext/bigreq.c
	Xext/cup.c
	Xext/dpms.c
	Xext/fontcache.c
	Xext/mitmisc.c
	Xext/xcmisc.c
	Xext/xf86bigfont.c
	Xext/xtest.c
	configure.ac
	dbe/dbe.c
	hw/darwin/darwin.h
	hw/darwin/darwinEvents.c
	hw/darwin/iokit/xfIOKit.h
	hw/darwin/iokit/xfIOKitCursor.c
	hw/darwin/quartz/fullscreen/fullscreen.c
	hw/darwin/quartz/fullscreen/quartzCursor.c
	hw/darwin/quartz/quartz.c
	hw/darwin/quartz/quartzCommon.h
	hw/darwin/quartz/quartzCursor.c
	hw/darwin/quartz/xpr/dri.c
	hw/darwin/quartz/xpr/dristruct.h
	hw/darwin/quartz/xpr/xprCursor.c
	hw/darwin/quartz/xpr/xprFrame.c
	hw/xfree86/modes/xf86RandR12.c
	include/cursor.h
	miext/rootless/rootlessCommon.h
	miext/rootless/rootlessScreen.c
	miext/rootless/rootlessWindow.c
	render/picturestr.h

Trying to pick up the pieces from the darwin churn here...
This commit is contained in:
Eamon Walsh
2007-12-13 18:38:25 -05:00
committed by Eamon Walsh
278 changed files with 2530 additions and 23052 deletions

View File

@@ -1,10 +1,6 @@
if DMX
if XDARWIN
# Darwin does not need the dmx subdir
else
DMX_SUBDIRS = dmx
endif
endif
if XORG
XORG_SUBDIRS = xfree86
@@ -34,22 +30,22 @@ if XPRINT
XPRINT_SUBDIRS = xprint
endif
if XDARWIN
XDARWIN_SUBDIRS = darwin
if XQUARTZ
XQUARTZ_SUBDIRS = xquartz
endif
SUBDIRS = \
$(XORG_SUBDIRS) \
$(XGL_SUBDIRS) \
$(XWIN_SUBDIRS) \
$(XDARWIN_SUBDIRS) \
$(XVFB_SUBDIRS) \
$(XNEST_SUBDIRS) \
$(DMX_SUBDIRS) \
$(KDRIVE_SUBDIRS) \
$(DMX_SUBDIRS) \
$(KDRIVE_SUBDIRS) \
$(XQUARTZ_SUBDIRS) \
$(XPRINT_SUBDIRS)
DIST_SUBDIRS = dmx xfree86 vfb xnest xwin darwin kdrive xgl xprint
DIST_SUBDIRS = dmx xfree86 vfb xnest xwin xquartz kdrive xgl xprint
relink:
for i in $(SUBDIRS) ; do $(MAKE) -C $$i relink ; done

View File

@@ -1,290 +0,0 @@
noinst_LIBRARIES = libdarwinShared.a
libdarwin_XINPUT_SRCS = darwinXinput.c
AM_CFLAGS = @XORG_CFLAGS@ @DIX_CFLAGS@
AM_CPPFLAGS = @XORG_CFLAGS@ @DIX_CFLAGS@
INCLUDES = @XORG_INCS@ -I../../miext/rootless
DEFS = @DEFS@ -DUSE_NEW_CLUT
if XQUARTZ
XQUARTZ_SUBDIRS = quartz
XQUARTZ_PROGS = Xquartz
XQUARTZ_HOOK = xquartz-install-hook
endif
if XDARWINAPP
XDARWINAPP_SUBDIRS = bundle
XDARWINAPP_HOOK = xdarwinapp-install-hook
endif
SUBDIRS = \
iokit \
$(XQUARTZ_SUBDIRS) \
$(XDARWINAPP_SUBDIRS) \
utils \
.
libdarwinShared_a_SOURCES = darwin.c \
darwinEvents.c \
darwinKeyboard.c \
$(darwin_XINPUT_SRCS)
# bin_PROGRAMS = XDarwin Xquartz
bin_PROGRAMS = $(XQUARTZ_PROGS)
#XDarwin_SOURCES = \
# $(top_srcdir)/fb/fbcmap_mi.c \
# $(top_srcdir)/mi/miinitext.c \
# $(top_srcdir)/Xi/stubs.c
Xquartz_SOURCES = \
$(top_srcdir)/fb/fbcmap_mi.c \
$(top_srcdir)/mi/miinitext.c \
$(top_srcdir)/Xi/stubs.c \
apple/X11Application.m \
apple/X11Controller.m \
quartz/Preferences.m \
quartz/applewm.c \
quartz/keysym2ucs.c \
quartz/pseudoramiX.c \
quartz/quartz.c \
quartz/quartzAudio.c \
quartz/quartzCocoa.m \
quartz/quartzKeyboard.c \
quartz/quartzPasteboard.c \
quartz/quartzStartup.c \
quartz/xpr/appledri.c \
quartz/xpr/dri.c \
quartz/xpr/xprAppleWM.c \
quartz/xpr/xprCursor.c \
quartz/xpr/xprFrame.c \
quartz/xpr/xprScreen.c \
quartz/xpr/x-hash.c \
quartz/xpr/x-hook.c \
quartz/xpr/x-list.c
DARWIN_LIBS = \
$(top_builddir)/dix/dixfonts.lo \
$(top_builddir)/config/libconfig.a \
$(top_builddir)/miext/shadow/libshadow.la \
$(top_builddir)/miext/cw/libcw.la \
@DARWIN_LIBS@ \
$(top_builddir)/miext/rootless/librootless.la \
$(top_builddir)/miext/rootless/safeAlpha/libsafeAlpha.la \
$(top_builddir)/miext/rootless/accel/librlAccel.la \
./libdarwinShared.a \
$(XSERVER_LIBS)
#XDARWIN_LIBS = \
# $(DARWIN_LIBS) \
# ./iokit/libiokit.a
XQUARTZ_LIBS = \
$(DARWIN_LIBS)
#XDarwin_DEPENDENCIES = $(XDARWIN_LIBS)
#XDarwin_LDADD = $(XDARWIN_LIBS) $(XSERVER_SYS_LIBS)
Xquartz_DEPENDENCIES = $(XQUARTZ_LIBS)
Xquartz_LDADD = $(XQUARTZ_LIBS) $(XSERVER_SYS_LIBS) -lXplugin
#XDarwin_LDFLAGS = \
# -XCClinker -Objc \
# -Wl,-u,_miDCInitialize \
# -Wl,-framework,IOKit
Xquartz_LDFLAGS = \
-XCClinker -Objc \
-Wl,-u,_miDCInitialize \
-Wl,-framework,Carbon \
-Wl,-framework,OpenGL \
-Wl,-dylib_file,/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib:/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib \
-Wl,-framework,Cocoa \
-Wl,-framework,CoreAudio \
-Wl,-framework,IOKit
#XDarwin_CFLAGS = -DINXDARWIN
Xquartz_CFLAGS = -DINXQUARTZ -DHAS_CG_MACH_PORT -DHAS_KL_API -DHAVE_XORG_CONFIG_H
if XQUARTZ
DEFS += -DDARWIN_WITH_QUARTZ -DXFree86Server
bin_SCRIPTS = x11app
x11app:
cd apple && xcodebuild CFLAGS="$(XSERVERCFLAGS_CFLAGS)" LDFLAGS="$(XSERVERCFLAGS_LIBS)"
endif
if XDARWINAPP
macosdir = $(darwinappdir)/Contents/MacOS
macos_PROGRAMS = XDarwinApp
darwinappdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app
XDarwinApp_SOURCES = \
$(top_srcdir)/fb/fbcmap_mi.c \
$(top_srcdir)/mi/miinitext.c \
$(top_srcdir)/Xi/stubs.c
XDARWINAPP_LIBS = \
$(DARWIN_LIBS) \
./quartz/XApplication.o \
./libdarwinShared.a \
./quartz/libXQuartz.a \
$(XSERVER_LIBS)
XDarwinApp_DEPENDENCIES = $(XDARWINAPP_LIBS)
XDarwinApp_LDADD = $(XDARWINAPP_LIBS) $(XSERVER_SYS_LIBS)
XDarwinApp_LDFLAGS = \
-XCClinker -Objc \
-Wl,-u,_miDCInitialize \
-Wl,-framework,Carbon \
-Wl,-framework,ApplicationServices \
-Wl,-framework,Cocoa \
-Wl,-framework,CoreAudio \
-Wl,-framework,IOKit
XDarwinApp_CFLAGS = -DINXDARWINAPP
crplugindir = $(darwinappdir)/Contents/Resources/cr.bundle/Contents/MacOS
crplugin_LTLIBRARIES = cr.la
cr_la_SOURCES = \
quartz/cr/crAppleWM.m \
quartz/cr/crFrame.m \
quartz/cr/crScreen.m \
quartz/fullscreen/quartzCursor.c \
quartz/cr/XView.m
cr_la_LIBADD = \
$(top_builddir)/miext/rootless/librootless.la \
$(top_builddir)/miext/rootless/safeAlpha/libsafeAlpha.la \
$(top_builddir)/miext/rootless/accel/librlAccel.la
cr_la_LDFLAGS = -shrext '' -Wl,-framework,ApplicationServices \
-lpixman-1 \
-Wl,-framework,Cocoa \
-Wl,-framework,Carbon \
-XCClinker -ObjC \
-XCClinker -bundle_loader -XCClinker XDarwinApp \
-module -avoid-version -no-undefined
cr_la_DEPENDENCIES = XDarwinApp
fullscreenplugindir = $(darwinappdir)/Contents/Resources/fullscreen.bundle/Contents/MacOS
fullscreenplugin_LTLIBRARIES = fullscreen.la
fullscreen_la_SOURCES = \
quartz/fullscreen/fullscreen.c \
quartz/fullscreen/quartzCursor.c
fullscreen_la_LIBADD = \
$(top_builddir)/miext/shadow/libshadow.la
fullscreen_la_LDFLAGS = -shrext '' -Wl,-framework,ApplicationServices \
-XCClinker -bundle_loader -XCClinker XDarwinApp \
-module -avoid-version -no-undefined
fullscreen_la_DEPENDENCIES = XDarwinApp
if GLX
glxMesaplugindir = $(darwinappdir)/Contents/Resources/glxMesa.bundle/Contents/MacOS
glxMesaplugin_LTLIBRARIES = glxMesa.la
glxMesa_la_SOURCES =
glxMesa_la_LIBADD = \
$(top_builddir)/GL/glx/libglx.la \
$(top_builddir)/GL/mesa/libGLcore.la
glxMesa_la_LDFLAGS = -shrext '' \
-Wl,-framework,AGL \
-Wl,-framework,OpenGL \
-XCClinker -ObjC \
-XCClinker -bundle_loader -XCClinker XDarwinApp \
-module -avoid-version -no-undefined
glxMesa_la_DEPENDENCIES = XDarwinApp
endif
if HAVE_XPLUGIN
xprplugindir = $(darwinappdir)/Contents/Resources/xpr.bundle/Contents/MacOS
xprplugin_LTLIBRARIES = xpr.la
xpr_la_SOURCES = \
quartz/xpr/appledri.c \
quartz/xpr/dri.c \
quartz/xpr/xprAppleWM.c \
quartz/xpr/xprCursor.c \
quartz/xpr/xprFrame.c \
quartz/xpr/xprScreen.c \
quartz/xpr/x-hash.c \
quartz/xpr/x-hook.c \
quartz/xpr/x-list.c
xpr_la_LIBADD = \
$(top_builddir)/miext/rootless/librootless.la \
$(top_builddir)/miext/rootless/safeAlpha/libsafeAlpha.la \
$(top_builddir)/miext/rootless/accel/librlAccel.la
xpr_la_LDFLAGS = -shrext '' -Wl,-framework,ApplicationServices \
-lpixman-1 \
-lXplugin \
-XCClinker -bundle_loader -XCClinker XDarwinApp \
-module -avoid-version -no-undefined
xpr_la_DEPENDENCIES = XDarwinApp
endif
if HAVE_AGL_FRAMEWORK
glxCGLplugindir = $(darwinappdir)/Contents/Resources/glxCGL.bundle/Contents/MacOS
glxCGLplugin_LTLIBRARIES = glxCGL.la
glxCGL_la_SOURCES =
glxCGL_la_LIBADD = \
$(top_builddir)/GL/glx/glxext.o \
$(top_builddir)/GL/glx/libglx.a \
$(top_builddir)/GL/apple/libAGLcore.a
glxCGL_la_LDFLAGS = -shrext '' -Wl,-framework,ApplicationServices \
-Wl,-framework,AGL \
-Wl,-framework,OpenGL \
-XCClinker -ObjC \
-XCClinker -bundle_loader -XCClinker XDarwinApp \
-module -avoid-version -no-undefined
glxCGL_la_DEPENDENCIES = XDarwinApp
glxAGLplugindir = $(darwinappdir)/Contents/Resources/glxAGL.bundle/Contents/MacOS
glxAGLplugin_LTLIBRARIES = glxAGL.la
glxAGL_la_SOURCES =
glxAGL_la_LIBADD = \
$(top_builddir)/GL/glx/glxext.o \
$(top_builddir)/GL/glx/libglx.a \
$(top_builddir)/GL/apple/libAGLcore.a
glxAGL_la_LDFLAGS = -shrext '' \
-Wl,-framework,AGL \
-Wl,-framework,OpenGL \
-XCClinker -ObjC \
-XCClinker -bundle_loader -XCClinker XDarwinApp \
-module -avoid-version -no-undefined
glxAGL_la_DEPENDENCIES = XDarwinApp
endif
endif
#man1_MANS = XDarwin.man
#uninstall-hook:
# rm -rf $(DESTDIR)$(macosdir)/XDarwin
install-data-hook: $(XQUARTZ_HOOK) $(XDARWINAPP_HOOK)
xquartz-install-hook::
cd apple && xcodebuild install CFLAGS="$(XSERVERCFLAGS_CFLAGS)" LDFLAGS="$(XSERVERCFLAGS_LIBS)"
xdarwinapp-install hook:
mv $(DESTDIR)$(macosdir)/XDarwinApp $(DESTDIR)$(macosdir)/XDarwin
EXTRA_DIST = \
darwin.c \
darwinClut8.h \
darwinEvents.c \
darwin.h \
darwinKeyboard.c \
darwinKeyboard.h \
darwinXinput.c \
XDarwin.man

View File

@@ -1,35 +0,0 @@
This directory contains a port of the XDarwin code to the modular X.org
codebase to be compiled on Darwin/OS X; this would not have been possible
without the help of Torrey Lyons and Peter O'Gorman, to whom I am
grateful for their patches, time and moral support.
The server builds 4 targets:
* XDarwin: this server runs on Darwin systems without Quartz
(i.e. non-OS X); it has not been well-tested.
* XDarwinApp: this builds XDarwin.app, which is a full X server using
Quartz. It has loadable module support for AGL and CGL, and well as
fullscreen and rootless support.
* Xquartz: this server runs on Quartz-based systems, and is meant to
work with X11.app
* x11app: this builds a version of Apple's X11.app using patches by
Torrey Lyons; most, but not all, functionality of Apple's original
X11.app is present in this release.
Known issues:
* AGL and CGL support for 3D indirect acceleration does not work;
indirect.c has been rewritten, but not yet integrated into this source tree.
* Fullscreen mode does not work; I don't know why.
* Some features in X11.app are not yet implemented; these are marked
with #ifdef DARWIN_DDX_MISSING in the code.
* The build system code could probably be cleaned up slightly.
Any patches or code contributions would be most welcome and may be
sent to me at bbyer@apple.com.

View File

@@ -1,203 +0,0 @@
.TH XDARWIN 1 __vendorversion__
.SH NAME
XDarwin \- X window system server for Darwin operating system
.SH SYNOPSIS
.B XDarwin
[ options ] ...
.SH DESCRIPTION
#ifdef DARWIN_WITH_QUARTZ
.I XDarwin
is the X window server for Mac OS X and the Darwin operating system
provided by the X.Org Foundation.
.I XDarwin
can run in three different modes. On Mac OS X,
.I XDarwin
runs in parallel with Aqua in full screen or rootless modes. These modes
are called Quartz modes, named after the Quartz 2D compositing engine used
by Aqua. XDarwin can also be run from the Darwin text console in IOKit mode.
.PP
When running from the console,
.I XDarwin
acts as the window server and uses IOKit services to access the display
framebuffer, mouse and keyboard and to provide a layer of hardware
abstraction. In console mode,
.I XDarwin
will normally be started by the \fIxdm(1)\fP display manager or by a script
that runs the program \fIxinit(1)\fP.
.PP
When running with the Mac OS X Aqua GUI,
.I XDarwin
will normally be started by launching from the Finder, but it may also be
started from the command line with the \fB\-quartz\fP, \fB\-fullscreen\fP, or
\fB\-rootless\fP options. Note that the defaults for various command line
options are set by the
.I XDarwin
application preferences in the Quartz modes.
.PP
In full screen Quartz mode, when the X Window System is active, it takes over
the entire screen. CoreGraphics is used to capture and draw to the screen. The
.I XDarwin
application allows easy switching between the Mac OS X and X window
desktops. More information is available in the Help menu of the
.I XDarwin
application.
.PP
In rootless mode, the X window system and Aqua share your display. The root
window of the X11 display is the size of the screen and contains all the
other windows. The X11 root window is not displayed in rootless mode as Aqua
handles the desktop background.
#else
.I XDarwin
is the X window server for Mac OS X and the Darwin operating system
provided by the X.Org Foundation. This version of
.I XDarwin
can only be started from the Darwin text console. The Mac OS X Aqua GUI, if
present, must be shut down.
.I XDarwin
uses IOKit services to access the display
framebuffer, mouse and keyboard and to provide a layer of hardware
abstraction.
.I XDarwin
will normally be started by the \fIxdm(1)\fP display manager or by a script
that runs the program \fIxinit(1)\fP.
#endif
.SH OPTIONS
.PP
In addition to the normal server options described in the \fIXserver(1)\fP
manual page, \fIXDarwin\fP accepts the following command line switches:
.TP 8
.B \-fakebuttons
Emulates a 3 button mouse using modifier keys. By default, the Command modifier
is used to emulate button 2 and Option is used for button 3. Thus, clicking the
first mouse button while holding down Command will act like clicking
button 2. Holding down Option will simulate button 3.
.TP 8
.B \-nofakebuttons
Do not emulate a 3 button mouse. This is the default.
.TP 8
.B "\-fakemouse2 \fImodifiers\fP"
Change the modifier keys used to emulate the second mouse button. By default,
Command is used to emulate the second button. Any combination of the following
modifier names may be used: Shift, Option, Control, Command, Fn. For example,
.B \-fakemouse2 """Option,Shift""
will set holding Option, Shift and clicking on button one as equivalent to
clicking the second mouse button.
.TP 8
.B "\-fakemouse3 \fImodifiers\fP"
Change the modifier keys used to emulate the third mouse button. By default,
Option is used to emulate the third button. Any combination of the following
modifier names may be used: Shift, Option, Control, Command, Fn. For example,
.B \-fakemouse3 """Control,Shift""
will set holding Control, Shift and clicking on button one as equivalent to
clicking the third mouse button.
.TP 8
.B "\-keymap \fIfile\fP"
On startup \fIXDarwin\fP translates a Darwin keymapping into an X keymap.
The default is to read this keymapping from USA.keymapping. With this option
the keymapping will be read from \fIfile\fP instead. If the file's path is
not specified, it will be searched for in Library/Keyboards/ underneath the
following directories (in order): ~, /, /Network, /System.
.TP 8
.B \-nokeymap
On startup \fIXDarwin\fP translates a Darwin keymapping into an X keymap.
With this option XDarwin queries the kernel for the current keymapping
instead of reading it from a file. This will often fail on newer kernels.
#ifdef DARWIN_WITH_QUARTZ
.TP 8
.B "\-size \fIwidth\fP \fIheight\fP"
Sets the screen resolution for the X server to use.
Ignored in rootless mode.
.TP 8
.B "\-depth \fIdepth\fP"
Specifies the color bit depth to use. Currently only 8, 15, and 24 color bits
per pixel are supported.
Ignored in rootless mode.
.TP 8
.B "\-refresh \fIrate\fP"
Gives the refresh rate to use in Hz. For LCD displays this should be 0.
Ignored in rootless mode.
.TP 8
.B \-fullscreen
Run full screen in parallel with Mac OS X Aqua GUI.
.TP 8
.B \-rootless
Run rootless inside Mac OS X Aqua GUI.
.TP 8
.B \-quartz
Run in parallel with the Mac OS X Aqua GUI using the default mode.
#else
.TP 8
.B "\-size \fIwidth\fP \fIheight\fP"
Sets the screen resolution for the X server to use.
.TP 8
.B "\-depth \fIdepth\fP"
Specifies the color bit depth to use. Currently only 8, 15, and 24 color bits
per pixel are supported.
.TP 8
.B "\-refresh \fIrate\fP"
Gives the refresh rate to use in Hz. For LCD displays this should be 0.
#endif
.TP 8
.B \-showconfig
Print out the server version and patchlevel.
.TP 8
.B \-version
Same as \fB\-showconfig\fP.
.SH "SEE ALSO"
.PP
X(__miscmansuffix__), Xorg(1), Xserver(1), xdm(1), xinit(1)
.SH BUGS
.I XDarwin
and this man page still have many limitations. Some of the more obvious
ones are:
.br
- The display mode cannot be changed once the X server has started.
.br
- A screen saver is not supported.
.PP
.SH AUTHORS
XFree86 was originally ported to Mac OS X Server by John Carmack. Dave
Zarzycki used this as the basis of his port of XFree86 4.0 to Darwin 1.0.
Torrey T. Lyons improved and integrated this code into the XFree86
Project's mainline for the 4.0.2 release.
.PP
The following members of the XonX Team contributed to the following
releases (in alphabetical order):
.TP 4
XFree86 4.1.0:
.br
Rob Braun - Darwin x86 support
.br
Torrey T. Lyons - Project Lead
.br
Andreas Monitzer - Cocoa version of XDarwin front end
.br
Gregory Robert Parker - Original Quartz implementation
.br
Christoph Pfisterer - Dynamic shared X libraries
.br
Toshimitsu Tanaka - Japanese localization
.TP 4
XFree86 4.2.0:
.br
Rob Braun - Darwin x86 support
.br
Pablo Di Noto - Spanish localization
.br
Paul Edens - Dutch localization
.br
Kyunghwan Kim - Korean localization
.br
Mario Klebsch - Non-US keyboard support
.br
Torrey T. Lyons - Project Lead
.br
Andreas Monitzer - German localization
.br
Patrik Montgomery - Swedish localization
.br
Greg Parker - Rootless support
.br
Toshimitsu Tanaka - Japanese localization
.br
Olivier Verdier - French localization

View File

@@ -1,65 +0,0 @@
8
dir
29110
svn+ssh://src.apple.com/svn/BSD/X11server/trunk/darwin/apple/English.lproj/main.nib
svn+ssh://src.apple.com/svn/BSD
2007-02-03T03:06:20.842932Z
28761
bbyer
svn:special svn:externals svn:needs-lock
e92bca22-270c-0410-9cea-e3f1106b6a1c
info.nib
file
2007-02-27T01:00:07.000000Z
456347804c516786b1d1339ce2ef50a2
2007-02-03T03:06:20.842932Z
28761
bbyer
keyedobjects.nib
file
2007-02-27T01:00:07.000000Z
eb3010372b09768c846df0d996cfdd8d
2007-02-03T03:06:20.842932Z
28761
bbyer
has-props
classes.nib
file
2007-02-27T01:00:07.000000Z
0ae2660c3afabbd5aa02fc34712c96e6
2007-02-03T03:06:20.842932Z
28761
bbyer

View File

@@ -1,5 +0,0 @@
K 13
svn:mime-type
V 24
application/octet-stream
END

View File

@@ -1,318 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IBClasses</key>
<array>
<dict>
<key>CLASS</key>
<string>IBLibraryObjectTemplate</string>
<key>LANGUAGE</key>
<string>ObjC</string>
<key>OUTLETS</key>
<dict>
<key>draggedView</key>
<string>NSView</string>
<key>representedObject</key>
<string>NSObject</string>
</dict>
<key>SUPERCLASS</key>
<string>NSView</string>
</dict>
<dict>
<key>CLASS</key>
<string>IBInspector</string>
<key>LANGUAGE</key>
<string>ObjC</string>
<key>OUTLETS</key>
<dict>
<key>inspectorView</key>
<string>NSView</string>
</dict>
<key>SUPERCLASS</key>
<string>NSObject</string>
</dict>
<dict>
<key>CLASS</key>
<string>NSDateFormatter</string>
<key>LANGUAGE</key>
<string>ObjC</string>
<key>SUPERCLASS</key>
<string>NSFormatter</string>
</dict>
<dict>
<key>ACTIONS</key>
<dict>
<key>apps_table_cancel</key>
<string>id</string>
<key>apps_table_delete</key>
<string>id</string>
<key>apps_table_done</key>
<string>id</string>
<key>apps_table_duplicate</key>
<string>id</string>
<key>apps_table_new</key>
<string>id</string>
<key>apps_table_show</key>
<string>id</string>
<key>bring_to_front</key>
<string>id</string>
<key>close_window</key>
<string>id</string>
<key>enable_fullscreen_changed</key>
<string>id</string>
<key>minimize_window</key>
<string>id</string>
<key>next_window</key>
<string>id</string>
<key>prefs_changed</key>
<string>id</string>
<key>prefs_show</key>
<string>id</string>
<key>previous_window</key>
<string>id</string>
<key>toggle_fullscreen</key>
<string>id</string>
<key>x11_help</key>
<string>id</string>
<key>zoom_window</key>
<string>id</string>
</dict>
<key>CLASS</key>
<string>X11Controller</string>
<key>LANGUAGE</key>
<string>ObjC</string>
<key>OUTLETS</key>
<dict>
<key>apps_separator</key>
<string>id</string>
<key>apps_table</key>
<string>id</string>
<key>depth</key>
<string>id</string>
<key>dock_apps_menu</key>
<string>id</string>
<key>dock_menu</key>
<string>id</string>
<key>dock_window_separator</key>
<string>id</string>
<key>enable_auth</key>
<string>id</string>
<key>enable_fullscreen</key>
<string>id</string>
<key>enable_keyequivs</key>
<string>id</string>
<key>enable_tcp</key>
<string>id</string>
<key>fake_buttons</key>
<string>id</string>
<key>prefs_panel</key>
<string>id</string>
<key>sync_keymap</key>
<string>id</string>
<key>toggle_fullscreen_item</key>
<string>id</string>
<key>use_sysbeep</key>
<string>id</string>
<key>window_separator</key>
<string>id</string>
<key>x11_about_item</key>
<string>id</string>
</dict>
<key>SUPERCLASS</key>
<string>NSObject</string>
</dict>
<dict>
<key>CLASS</key>
<string>NSNumberFormatter</string>
<key>LANGUAGE</key>
<string>ObjC</string>
<key>SUPERCLASS</key>
<string>NSFormatter</string>
</dict>
<dict>
<key>CLASS</key>
<string>NSFormatter</string>
<key>LANGUAGE</key>
<string>ObjC</string>
<key>SUPERCLASS</key>
<string>NSObject</string>
</dict>
<dict>
<key>ACTIONS</key>
<dict>
<key>alignCenter:</key>
<string>id</string>
<key>alignJustified:</key>
<string>id</string>
<key>alignLeft:</key>
<string>id</string>
<key>alignRight:</key>
<string>id</string>
<key>arrangeInFront:</key>
<string>id</string>
<key>centerSelectionInVisibleArea:</key>
<string>id</string>
<key>changeFont:</key>
<string>id</string>
<key>checkSpelling:</key>
<string>id</string>
<key>clear:</key>
<string>id</string>
<key>clearRecentDocuments:</key>
<string>id</string>
<key>complete:</key>
<string>id</string>
<key>copy:</key>
<string>id</string>
<key>copyFont:</key>
<string>id</string>
<key>copyRuler:</key>
<string>id</string>
<key>cut:</key>
<string>id</string>
<key>delete:</key>
<string>id</string>
<key>deminiaturize:</key>
<string>id</string>
<key>fax:</key>
<string>id</string>
<key>hide:</key>
<string>id</string>
<key>hideOtherApplications:</key>
<string>id</string>
<key>loosenKerning:</key>
<string>id</string>
<key>lowerBaseline:</key>
<string>id</string>
<key>makeKeyAndOrderFront:</key>
<string>id</string>
<key>miniaturize:</key>
<string>id</string>
<key>newDocument:</key>
<string>id</string>
<key>openDocument:</key>
<string>id</string>
<key>orderBack:</key>
<string>id</string>
<key>orderFront:</key>
<string>id</string>
<key>orderFrontColorPanel:</key>
<string>id</string>
<key>orderFrontHelpPanel:</key>
<string>id</string>
<key>orderOut:</key>
<string>id</string>
<key>outline:</key>
<string>id</string>
<key>paste:</key>
<string>id</string>
<key>pasteAsPlainText:</key>
<string>id</string>
<key>pasteAsRichText:</key>
<string>id</string>
<key>pasteFont:</key>
<string>id</string>
<key>pasteRuler:</key>
<string>id</string>
<key>pause:</key>
<string>id</string>
<key>performClose:</key>
<string>id</string>
<key>performFindPanelAction:</key>
<string>id</string>
<key>performMiniaturize:</key>
<string>id</string>
<key>performZoom:</key>
<string>id</string>
<key>play:</key>
<string>id</string>
<key>print:</key>
<string>id</string>
<key>printDocument:</key>
<string>id</string>
<key>raiseBaseline:</key>
<string>id</string>
<key>record:</key>
<string>id</string>
<key>redo:</key>
<string>id</string>
<key>resume:</key>
<string>id</string>
<key>revertDocumentToSaved:</key>
<string>id</string>
<key>run:</key>
<string>id</string>
<key>runPageLayout:</key>
<string>id</string>
<key>runToolbarCustomizationPalette:</key>
<string>id</string>
<key>saveAllDocuments:</key>
<string>id</string>
<key>saveDocument:</key>
<string>id</string>
<key>saveDocumentAs:</key>
<string>id</string>
<key>saveDocumentTo:</key>
<string>id</string>
<key>selectAll:</key>
<string>id</string>
<key>selectText:</key>
<string>id</string>
<key>showGuessPanel:</key>
<string>id</string>
<key>showHelp:</key>
<string>id</string>
<key>start:</key>
<string>id</string>
<key>startSpeaking:</key>
<string>id</string>
<key>stop:</key>
<string>id</string>
<key>stopSpeaking:</key>
<string>id</string>
<key>subscript:</key>
<string>id</string>
<key>superscript:</key>
<string>id</string>
<key>terminate:</key>
<string>id</string>
<key>tightenKerning:</key>
<string>id</string>
<key>toggleContinuousSpellChecking:</key>
<string>id</string>
<key>toggleRuler:</key>
<string>id</string>
<key>toggleToolbarShown:</key>
<string>id</string>
<key>turnOffKerning:</key>
<string>id</string>
<key>turnOffLigatures:</key>
<string>id</string>
<key>underline:</key>
<string>id</string>
<key>undo:</key>
<string>id</string>
<key>unhideAllApplications:</key>
<string>id</string>
<key>unscript:</key>
<string>id</string>
<key>useAllLigatures:</key>
<string>id</string>
<key>useStandardKerning:</key>
<string>id</string>
<key>useStandardLigatures:</key>
<string>id</string>
</dict>
<key>CLASS</key>
<string>FirstResponder</string>
<key>LANGUAGE</key>
<string>ObjC</string>
<key>SUPERCLASS</key>
<string>NSObject</string>
</dict>
</array>
<key>IBVersion</key>
<integer>1</integer>
</dict>
</plist>

View File

@@ -1,18 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IBFramework Version</key>
<string>588</string>
<key>IBOpenObjects</key>
<array>
<integer>244</integer>
<integer>29</integer>
<integer>423</integer>
</array>
<key>IBSystem Version</key>
<string>9A356</string>
<key>targetFramework</key>
<string>IBCocoaFramework</string>
</dict>
</plist>

View File

@@ -1,168 +0,0 @@
{\rtf1\mac\ansicpg10000\cocoartf102
{\fonttbl\f0\fswiss\fcharset77 Helvetica;\f1\fswiss\fcharset77 Helvetica-Bold;\f2\fswiss\fcharset77 Helvetica-Oblique;
}
{\colortbl;\red255\green255\blue255;}
\vieww9000\viewh9000\viewkind0
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
\f0\fs24 \cf0 This product includes software developed by The XFree86 Project, Inc (http://www.xfree86.org/) and its contributors. The following people contributed to Darwin/Mac OS X support.\
\
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\f1\b \cf0 Contributors to Xorg Foundation Release:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Kaleb KEITHLEY\
\f2\i Working left and right Ctrl, Alt (Option), Meta (Command) and Shift keys.
\f0\i0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f1\b \cf0 \
\f1\b \cf0 Contributors to XFree86 4.4:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 John Harper\
\f2\i Rootless acceleration and Apple-WM extension
\f0\i0 \
Torrey T. Lyons\
\f2\i Project Lead
\f0\i0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f1\b \cf0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\cf0 Additional XonX Contributors to XFree86 4.3:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Fabr\'92cio Luis de Castro\
\f2\i Portuguese localization
\f0\i0 \
Michael Oland\
\f2\i New XDarwin icon
\f0\i0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f1\b \cf0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\cf0 XonX Contributors to XFree86 4.2:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Rob Braun\
\f2\i Darwin x86 support
\f0\i0 \
Pablo Di Noto\
\f2\i Spanish localization
\f0\i0 \
Paul Edens\
\f2\i Dutch localization
\f0\i0 \
Kyunghwan Kim\
\f2\i Korean localization
\f0\i0 \
Mario Klebsch\
\f2\i Non-US keyboard support
\f0\i0 \
Torrey T. Lyons\
\f2\i Project Lead
\f0\i0 \
Andreas Monitzer\
\f2\i German localization
\f0\i0 \
Patrik Montgomery\
\f2\i Swedish localization
\f0\i0 \
Greg Parker\
\f2\i Rootless support
\f0\i0 \
Toshimitsu Tanaka\
\f2\i Japanese localization
\f0\i0 \
Olivier Verdier\
\f2\i French localization
\f0\i0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f1\b \cf0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\cf0 Special Thanks:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Devin Poolman and Zero G Software, Inc.\
\f2\i Installer
\f0\i0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f1\b \cf0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\cf0 XonX Team Members\
Contributing to XFree86 4.1:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Rob Braun\
\f2\i Darwin x86 support
\f0\i0 \
Torrey T. Lyons\
\f2\i Project Lead
\f0\i0 \
Andreas Monitzer\
\f2\i Cocoa version of XDarwin front end
\f0\i0 \
Greg Parker\
\f2\i Original Quartz implementation
\f0\i0 \
Christoph Pfisterer\
\f2\i Dynamic shared libraries
\f0\i0 \
Toshimitsu Tanaka\
\f2\i Japanese localization
\f0\i0 \
\
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\f1\b \cf0 Special Thanks:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Tiago Ribeiro\
\f2\i XDarwin icon
\f0\i0 \
\
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\f1\b \cf0 History:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 John Carmack\
\f2\i Original XFree86 port to Mac OS X Server
\f0\i0 \
Dave Zarzycki\
\f2\i XFree86 4.0 port to Darwin 1.0
\f0\i0 \
Torrey T. Lyons\
\f2\i Integration into XFree86 Project for 4.0.2}

View File

@@ -1,72 +0,0 @@
{
IBClasses = (
{
ACTIONS = {showHelp = id; };
CLASS = FirstResponder;
LANGUAGE = ObjC;
SUPERCLASS = NSObject;
},
{
ACTIONS = {close = id; pickFile = id; saveChanges = id; setKey = id; };
CLASS = Preferences;
LANGUAGE = ObjC;
OUTLETS = {
addToPathButton = id;
addToPathField = id;
button2ModifiersMatrix = id;
button3ModifiersMatrix = id;
depthButton = id;
displayField = id;
dockSwitchButton = id;
fakeButton = id;
keymapFileField = id;
modeMatrix = id;
modeWindowButton = id;
mouseAccelChangeButton = id;
startupHelpButton = id;
switchKeyButton = id;
systemBeepButton = id;
useDefaultShellMatrix = id;
useOtherShellField = id;
useXineramaButton = id;
window = id;
};
SUPERCLASS = NSObject;
},
{
CLASS = XApplication;
LANGUAGE = ObjC;
OUTLETS = {preferences = id; xserver = id; };
SUPERCLASS = NSApplication;
},
{
ACTIONS = {
bringAllToFront = id;
closeHelpAndShow = id;
itemSelected = id;
nextWindow = id;
previousWindow = id;
showAction = id;
showSwitchPanel = id;
startFullScreen = id;
startRootless = id;
};
CLASS = XServer;
LANGUAGE = ObjC;
OUTLETS = {
dockMenu = NSMenu;
helpWindow = NSWindow;
modeWindow = NSWindow;
startFullScreenButton = NSButton;
startRootlessButton = NSButton;
startupHelpButton = NSButton;
startupModeButton = NSButton;
switchWindow = NSPanel;
windowMenu = NSMenu;
windowSeparator = NSMenuItem;
};
SUPERCLASS = NSObject;
}
);
IBVersion = 1;
}

View File

@@ -1,35 +0,0 @@
BINDIR = ${bindir}
include $(top_srcdir)/cpprules.in
XINITDIR = $(libdir)/X11/xinit
XDEFS = \
-DX_VERSION="$(PLIST_VERSION_STRING)" \
-DX_PRE_RELEASE="$(PRE)" \
-DX_REL_DATE="$(XORG_DATE)" \
-DX_VENDOR_NAME="$(VENDOR_STRING)" \
-DX_VENDOR_LINK="$(PLIST_VENDOR_WEB)"
resourcesdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app/Contents/Resources
Dutchlprojdir = $(resourcesdir)/Dutch.lproj
Dutchlproj_DATA = \
XDarwinHelp.html \
InfoPlist.strings \
Credits.rtf Localizable.strings
Dutchlprojnibdir = $(Dutchlprojdir)/MainMenu.nib
Dutchlprojnib_DATA = MainMenu.nib/classes.nib MainMenu.nib/objects.nib
InfoPlist.strings: $(srcdir)/../English.lproj/InfoPlist.strings.cpp
$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) | $(SED) -e's/__quote__/"/g' > $@
XDarwinHelp.html: XDarwinHelp.html.cpp
$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) > $@
CLEANFILES = XDarwinHelp.html InfoPlist.strings
EXTRA_DIST = \
Credits.rtf Localizable.strings \
MainMenu.nib/classes.nib \
MainMenu.nib/objects.nib \
XDarwinHelp.html.cpp

View File

@@ -1,101 +0,0 @@
<html>
<head>
<title>XDarwin Help</title>
</head>
<body>
<center>
<h1>XDarwin X Server for Mac OS X</h1>
X_VENDOR_NAME X_VERSION<br>
Release Date: X_REL_DATE
</center>
<h2>Inhoud</h2>
<ol>
<li><A HREF="#notice">Belangrijke Informatie</A></li>
<li><A HREF="#usage">Gebruik</A></li>
<li><A HREF="#path">Instellen van het Path</A></li>
<li><A HREF="#prefs">Voorkeursinstellingen</A></li>
<li><A HREF="#license">Licentie</A></li>
</ol>
<center>
<h2><a NAME="notice">Belangrijke Informatie</a></h2>
</center>
<blockquote>
#if X_PRE_RELEASE
Dit is een pre-release van XDarwin, waarvoor geen ondersteuning beschikbaar is. Rapporteren van bugs en aanleveren van patches kan op de <A HREF="http://sourceforge.net/projects/xonx/">XonX project pagina</A> bij SourceForge. Kijk alvorens een bug te rapporteren in een pre-release eerst of een nieuwe versie beschikbaar is bij <A HREF="http://sourceforge.net/projects/xonx/">XonX</A> of de X_VENDOR_LINK.
#else
Als de server ouder is dan 6-12 maanden, of als uw hardware nieuwer is dan de bovenstaande datum, kijk dan of een nieuwe versie beschikbaar is voor u een probleem aanmeldt. Rapporteren van bugs en aanleveren van patches kan op de <A HREF="http://sourceforge.net/projects/xonx/">XonX project pagina</A> bij SourceForge.
#endif
</blockquote>
<blockquote>
Deze software is beschikbaar gesteld onder de voorwaarden van de <A HREF="#license">MIT X11 / X Consortium Licentie</A> en is beschikbaar 'AS IS',zonder enige garantie. Lees s.v.p. de <A HREF="#license">Licentie</A> voor gebruik.</blockquote>
<h2><a NAME="usage">Gebruik</a></h2>
<p>XDarwin is een open-source X server van het <a HREF="http://www.x.org/">X Window Systeem</a>. This version of XDarwin was produced by the X_VENDOR_LINK. XDarwin werkt op Mac OS X in schermvullende of rootless modus.</p>
<p>Het X window systeem in schermvullende modus neemt het hele beeldscherm in beslag. U schakelt terug naar de Mac OS X desktop door de toesten Command-Option-A in te drukken. Deze toetsencombinatie kunt u veranderen in de Voorkeuren. Op de Mac OS X desktop klikt u op de XDarwin icoon in de Dock om weer naar het X window systeem te schakelen. (In de Voorkeuren kunt er voor kiezen om een apart XDarwin schakelpaneel te gebruiken op de Mac OS X desktop.)</p>
<p>In rootless modus verschijnen het X window systeem en Aqua (de Mac OS X desktop) tegelijk op het scherm. Het achtergrondscherm van X11, waarbinnen alle X11 vensters vallen, is net zo groot als het gehele scherm, maar het achtergrondscherm zelf is onzichtbaar.</p>
<h3>Meerknopsmuis emulatie</h3>
<p>Voor veel X11 programma's hebt u een 3-knops muis nodig. Met een 1-knops muis kunt u een 3-knops muis nabootsen door een toets in te drukken terwijl u klikt met de muis. Het instellen hiervan kan bij Voorkeuren, "Meerknopsmuis emulatie" in "Algemeen". Emulatie is standaard ingeschakeld: ingedrukt houden van de "command" toets terwijl u klikt emuleert knop 2, ingedrukt houden van "option" emuleert knop 3. Deze toetsen kunt u dus wijzigen in de Voorkeuren. Let op: als u xmodmap gebruikt om de indeling van het toetsenbord te wijzigen, moet u toch de oorspronkelijke toetsen op het toetsenbord gebruiken voor deze functie.</p>
<h2><a NAME="path">Instellen van het Path</a></h2>
<p>Het path is de lijst van directories waarin gezocht wordt naar commando's. De X11 commando's staan in de directory <code>/usr/X11R6/bin</code>, die dus aan uw path moet worden toegevoegd. XDarwin doet dit automatisch voor u en kan extra directories toevoegen waarin u commando's hebt ge&iuml;nstalleerd.</p>
<p>Ervaren gebruikers zullen het path al correct hebben ingesteld in de configuratiebestanden voor hun shell. In dat geval kunt u XDarwin via de Voorkeuren vertellen het path niet te wijzigen. XDarwin start de eerste X11 clients binnen de standaard login shell van de gebruiker (bij de Voorkeuren kunt u een afwijkende shell opgeven). Het instellen van het path is afhankelijk van de shell. Zie hiervoor de man pages voor de shell.</p>
<p>Het kan handig zijn de manualpages voor X11 toe te voegen aan de lijst waarin gezocht wordt als u documentatie opvraagt. De manualpages voor X11 staan in <code>/usr/X11R6/man</code> en de <code>MANPATH</code> environment variable bevat de lijst van directories waarin naar documentatie wordt gezocht.</p>
<h2><a NAME="prefs">Voorkeursinstellingen</a></h2>
<p>Een aantal instellingen kan worden gewijzigd door "Voorkeuren..." te kiezen in het "XDarwin" menu. Wijzigingen van de instellingen genoemd onder "Start" gaan pas in als u XDarwin opnieuw hebt gestart. Een wijziging van de overige instellingen is direct effectief. Hier onder vindt u de verschillende mogelijkheden beschreven:</p>
<h3>Algemeen</h3>
<ul>
<li><b>Gebruik systeempiep voor X11:</b> Als u dit inschakelt wordt het Mac OS X waarschuwingssignaal ook gebruikt door X11, anders gebruikt X11 een simpele pieptoon (dit is de standaardinstelling).</li>
<li><b>Wijzigen muis-versnelling door X11 mogelijk:</b> In een standaard X window systeem kan de window manager de muis-versnelling aanpassen. Dit kan verwarrend zijn omdat de snelheid onder X11 dan verschillend kan zijn van de snelheid die u in Mac OS X bij Systeemvoorkeuren hebt ingesteld. Om verwarring te voorkomen is de standaardinstelling dat X11 de versnelling niet kan wijzigen.</li>
<li><b>Meerknopsmuis emulatie:</b> Dit is hierboven beschreven bij <a HREF="#usage">Gebruik</a>. Als emulatie is ingeschakeld moet u de gekozen toetsen ingedrukt houden terwijl u met de muis klikt om de tweede en derde muisknop na te bootsen.</li>
</ul>
<h3>Start</h3>
<ul>
<li><b>Standaard modus:</b> Hier kiest u de standaard scherm-modus: schermvullend of rootless (hierboven beschreven bij <a HREF="#usage">Gebruik</a>). U kunt ook kiezen tijdens het starten van XDarwin, zie de optie hieronder.</li>
<li><b>Kies scherm-modus tijdens start:</b> Dit is standaard ingeschakeld zodat u tijdens het starten van XDarwin kunt kiezen tussen schermvullend en rootless scherm-modus. Als u dit uitschakelt start XDarwin in de standaard modus zonder u iets te vragen.</li>
<li><b>X11 scherm nummer:</b> Met X11 kunnen meerdere schermen worden aangestuurd door verschillende X servers op dezelfde computer. Als u meerdere X servers tegelijk wilt gebruiken stelt u hier het scherm nummer in dat door XDarwin wordt gebruikt.</li>
<li><b>Xinerama multi-monitor ondersteuning mogelijk:</b> XDarwin ondersteunt het gebruik van meerdere monitoren met Xinerama, waarbij elke monitor wordt gezien als deel van &eacute;&eacute;n groot rechthoekig scherm. U kunt Xinerama hier uitschakelen, maar XDarwin werkt op dit moment zonder Xinerama niet goed met meerdere monitoren. Als u maar 1 monitor gebruikt is deze instelling automatisch uitgeschakeld.</li>
<li><b>Toetsenbordindeling-bestand:</b> Een toetsenbordindeling-bestand wordt bij het starten geladen en omgezet naar een X11 toetsenbordindeling. Voor verschillende talen vindt u toetsenbordindelingen in de directory <code>/System/Library/Keyboards</code>.</li>
<li><b>Bij starten eerste X11 clients:</b> Als XDarwin start, wordt <code>xinit</code> uitgevoerd om de X window manager en andere X clients te starten (zie "<code>man xinit</code>"). Voordat XDarwin <code>xinit</code> uitvoert voegt het de opgegeven directories toe aan het path. Standaard wordt alleen <code>/usr/X11R6/bin</code> toegevoegd. U kunt meerdere directories opgeven, gescheiden door een dubbelepunt. X clients worden gestart met de standaard login shell van de gebruiker met gebruik van de configuratiebestanden voor die shell. U kunt een afwijkende shell opgeven.</li>
</ul>
<h3>Schermvullend</h3>
<ul>
<li><b>Toetscombinatie knop:</b> Klik op deze knop om de toetscombinatie te wijzigen waarmee u tussen de Mac OS X desktop en X11 schakelt. Als toetscombinatie kunt u elke combinatie gebruiken van de shift, control, command en option toetsen samen met &eacute;&eacute;n normale toets.</li>
<li><b>Klikken op icoon in Dock schakelt naar X11:</b> Hiermee is een klik op de XDarwin icoon in de Dock voldoende om naar X11 te schakelen. In sommige versies van Mac OS X verdwijnt soms de cursor als u deze mogelijkheid gebruikt en daarna terugkeert naar de Mac OS X desktop.</li>
<li><b>Toon help bij schermvullend starten:</b> Hiermee wordt een inleidend scherm getoond als XDarwin schermvullend start.</li>
<li><b>Kleurdiepte:</b> In de schermvullende modus kan X11 een andere kleurdiepte gebruiken dan Aqua (en de Mac OS X desktop). Als u "Huidig" kiest, neemt XDarwin bij het starten de kleurdiepte over van Aqua. U kunt ook kiezen voor 8, 15 of 24 bits.</li>
</ul>
<h2><a NAME="license">Licentie</a></h2>
The main license for XDarwin is one based on the traditional MIT X11 / X Consortium License, which does not impose any conditions on modification or redistribution of source code or binaries other than requiring that copyright/license notices are left intact. For more information and additional copyright/licensing notices covering some sections of the code, please refer to the source code.
<H3><A NAME="3"></A>X Consortium License</H3>
<p>Copyright (C) 1996 X Consortium</p>
<p>Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without
limitation the rights to use, copy, modify, merge, publish, distribute,
sublicense, and/or sell copies of the Software, and to permit persons to
whom the Software is furnished to do so, subject to the following conditions:</p>
<p>The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.</p>
<p>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 X CONSORTIUM 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.</p>
<p>Except as contained in this notice, the name of the X Consortium 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 X Consortium.</p>
<p>X Window System is a trademark of X Consortium, Inc.</p>
</body>
</html>

View File

@@ -1,168 +0,0 @@
{\rtf1\mac\ansicpg10000\cocoartf102
{\fonttbl\f0\fswiss\fcharset77 Helvetica;\f1\fswiss\fcharset77 Helvetica-Bold;\f2\fswiss\fcharset77 Helvetica-Oblique;
}
{\colortbl;\red255\green255\blue255;}
\vieww5160\viewh6300\viewkind0
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
\f0\fs24 \cf0 This product includes software developed by The XFree86 Project, Inc (http://www.xfree86.org/) and its contributors. The following people contributed to Darwin/Mac OS X support.\
\
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\f1\b \cf0 Contributors to Xorg Foundation Release:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Kaleb KEITHLEY\
\f2\i Working left and right Ctrl, Alt (Option), Meta (Command) and Shift keys.
\f0\i0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f1\b \cf0 \
\f1\b \cf0 Contributors to XFree86 4.4:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 John Harper\
\f2\i Rootless acceleration and Apple-WM extension
\f0\i0 \
Torrey T. Lyons\
\f2\i Project Lead
\f0\i0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f1\b \cf0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\cf0 Additional XonX Contributors to XFree86 4.3:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Fabr\'92cio Luis de Castro\
\f2\i Portuguese localization
\f0\i0 \
Michael Oland\
\f2\i New XDarwin icon
\f0\i0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f1\b \cf0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\cf0 XonX Contributors to XFree86 4.2:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Rob Braun\
\f2\i Darwin x86 support
\f0\i0 \
Pablo Di Noto\
\f2\i Spanish localization
\f0\i0 \
Paul Edens\
\f2\i Dutch localization
\f0\i0 \
Kyunghwan Kim\
\f2\i Korean localization
\f0\i0 \
Mario Klebsch\
\f2\i Non-US keyboard support
\f0\i0 \
Torrey T. Lyons\
\f2\i Project Lead
\f0\i0 \
Andreas Monitzer\
\f2\i German localization
\f0\i0 \
Patrik Montgomery\
\f2\i Swedish localization
\f0\i0 \
Greg Parker\
\f2\i Rootless support
\f0\i0 \
Toshimitsu Tanaka\
\f2\i Japanese localization
\f0\i0 \
Olivier Verdier\
\f2\i French localization
\f0\i0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f1\b \cf0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\cf0 Special Thanks:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Devin Poolman and Zero G Software, Inc.\
\f2\i Installer
\f0\i0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f1\b \cf0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\cf0 XonX Team Members\
Contributing to XFree86 4.1:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Rob Braun\
\f2\i Darwin x86 support
\f0\i0 \
Torrey T. Lyons\
\f2\i Project Lead
\f0\i0 \
Andreas Monitzer\
\f2\i Cocoa version of XDarwin front end
\f0\i0 \
Greg Parker\
\f2\i Original Quartz implementation
\f0\i0 \
Christoph Pfisterer\
\f2\i Dynamic shared libraries
\f0\i0 \
Toshimitsu Tanaka\
\f2\i Japanese localization
\f0\i0 \
\
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\f1\b \cf0 Special Thanks:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Tiago Ribeiro\
\f2\i XDarwin icon
\f0\i0 \
\
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\f1\b \cf0 History:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 John Carmack\
\f2\i Original XFree86 port to Mac OS X Server
\f0\i0 \
Dave Zarzycki\
\f2\i XFree86 4.0 port to Darwin 1.0
\f0\i0 \
Torrey T. Lyons\
\f2\i Integration into XFree86 Project for 4.0.2}

View File

@@ -1,4 +0,0 @@
/* English versions of the Info.plist keys; used by most localizations. */
/* Most of these are set in the target application settings. */
NSHumanReadableCopyright = __quote__ X_VENDOR_NAME X_VERSION __quote__;

View File

@@ -1,22 +0,0 @@
/* English localized versions of strings used by the Mac OS X front end. */
/* Title of alert panel */
"Quit X server?" = "Quit X server?";
/* Text of alert panel */
"Quitting the X server will terminate any running X Window System programs." = "Quitting the X server will terminate any running X Window System programs.";
/* Quit */
"Quit" = "Quit";
/* Cancel */
"Cancel" = "Cancel";
/* Default keymapping file */
"USA.keymapping" = "USA.keymapping";
/* Default switch string */
"Cmd-Opt-a" = "Cmd-Opt-a";
/* Button title when changing switch key */
"Press key" = "Press key";

View File

@@ -1,72 +0,0 @@
{
IBClasses = (
{
ACTIONS = {showHelp = id; };
CLASS = FirstResponder;
LANGUAGE = ObjC;
SUPERCLASS = NSObject;
},
{
ACTIONS = {close = id; pickFile = id; saveChanges = id; setKey = id; };
CLASS = Preferences;
LANGUAGE = ObjC;
OUTLETS = {
addToPathButton = id;
addToPathField = id;
button2ModifiersMatrix = id;
button3ModifiersMatrix = id;
depthButton = id;
displayField = id;
dockSwitchButton = id;
fakeButton = id;
keymapFileField = id;
modeMatrix = id;
modeWindowButton = id;
mouseAccelChangeButton = id;
startupHelpButton = id;
switchKeyButton = id;
systemBeepButton = id;
useDefaultShellMatrix = id;
useOtherShellField = id;
useXineramaButton = id;
window = id;
};
SUPERCLASS = NSObject;
},
{
CLASS = XApplication;
LANGUAGE = ObjC;
OUTLETS = {preferences = id; xserver = id; };
SUPERCLASS = NSApplication;
},
{
ACTIONS = {
bringAllToFront = id;
closeHelpAndShow = id;
itemSelected = id;
nextWindow = id;
previousWindow = id;
showAction = id;
showSwitchPanel = id;
startFullScreen = id;
startRootless = id;
};
CLASS = XServer;
LANGUAGE = ObjC;
OUTLETS = {
dockMenu = NSMenu;
helpWindow = NSWindow;
modeWindow = NSWindow;
startFullScreenButton = NSButton;
startRootlessButton = NSButton;
startupHelpButton = NSButton;
startupModeButton = NSButton;
switchWindow = NSPanel;
windowMenu = NSMenu;
windowSeparator = NSMenuItem;
};
SUPERCLASS = NSObject;
}
);
IBVersion = 1;
}

View File

@@ -1,35 +0,0 @@
BINDIR = ${bindir}
include $(top_srcdir)/cpprules.in
XINITDIR = $(libdir)/X11/xinit
XDEFS = \
-DX_VERSION="$(PLIST_VERSION_STRING)" \
-DX_PRE_RELEASE="$(PRE)" \
-DX_REL_DATE="$(XORG_DATE)" \
-DX_VENDOR_NAME="$(VENDOR_STRING)" \
-DX_VENDOR_LINK="$(PLIST_VENDOR_WEB)"
resourcesdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app/Contents/Resources
Englishlprojdir = $(resourcesdir)/English.lproj
Englishlproj_DATA = \
XDarwinHelp.html \
InfoPlist.strings \
Credits.rtf Localizable.strings
Englishlprojnibdir = $(Englishlprojdir)/MainMenu.nib
Englishlprojnib_DATA = MainMenu.nib/classes.nib MainMenu.nib/objects.nib
InfoPlist.strings: InfoPlist.strings.cpp
$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) | $(SED) -e's/__quote__/"/g' > $@
XDarwinHelp.html: XDarwinHelp.html.cpp
$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) > $@
CLEANFILES = XDarwinHelp.html InfoPlist.strings
EXTRA_DIST = \
Credits.rtf Localizable.strings \
MainMenu.nib/classes.nib \
MainMenu.nib/objects.nib \
XDarwinHelp.html.cpp \
InfoPlist.strings.cpp

View File

@@ -1,94 +0,0 @@
<html>
<head>
<title>XDarwin Help</title>
</head>
<body>
<center>
<h1>XDarwin X Server for Mac OS X</h1>
X_VENDOR_NAME X_VERSION<br>
Release Date: X_REL_DATE
</center>
<h2>Contents</h2>
<ol>
<li><A HREF="#notice">Important Notice</A></li>
<li><A HREF="#usage">Usage</A></li>
<li><A HREF="#path">Setting Your Path</A></li>
<li><A HREF="#prefs">User Preferences</A></li>
<li><A HREF="#license">License</A></li>
</ol>
<center>
<h2><a NAME="notice">Important Notice</a></h2>
</center>
<blockquote>
#if X_PRE_RELEASE
This is a pre-release version of XDarwin, and is not supported in any way. Bugs may be reported and patches may be submitted to the <A HREF="http://sourceforge.net/projects/xonx/">XonX project page</A> at SourceForge. Before reporting bugs in pre-release versions, please check the latest version from <A HREF="http://sourceforge.net/projects/xonx/">XonX</A> or the X_VENDOR_LINK.
#else
If the server is older than 6-12 months, or if your hardware is newer than the above date, look for a newer version before reporting problems. Bugs may be reported and patches may be submitted to the <A HREF="http://sourceforge.net/projects/xonx/">XonX project page</A> at SourceForge.
#endif
</blockquote>
<blockquote>
This software is distributed under the terms of the <A HREF="#license">MIT X11 / X Consortium License</A> and is provided AS IS, with no warranty. Please read the <A HREF="#license">License</A> before using.</blockquote>
<h2><a NAME="usage">Usage</a></h2>
<p>XDarwin is a freely redistributable open-source X server for the <a HREF="http://www.x.org/">X Window System</a>. This version of XDarwin was produced by the X_VENDOR_LINK. XDarwin runs on Mac OS X in full screen or rootless modes.</p>
<p>In full screen mode, when the X window system is active, it takes over the entire screen. You can switch back to the Mac OS X desktop by holding down Command-Option-A. This key combination can be changed in the user preferences. From the Mac OS X desktop, click on the XDarwin icon in the Dock to switch back to the X window system. (You can change this behavior in the user preferences so that you must click the XDarwin icon in the floating switch window instead.)</p>
<p>In rootless mode, the X window system and Aqua share your display. The root window of the X11 display is the size of the screen and contains all the other windows. The X11 root window is not displayed in rootless mode as Aqua handles the desktop background.</p>
<h3>Multi-Button Mouse Emulation</h3>
<p>Many X11 applications rely on the use of a 3-button mouse. You can emulate a 3-button mouse with a single button by holding down various modifier keys while you click the mouse button. This is controlled by settings in the "Multi-Button Mouse Emulation" section of the "General" preferences. By default, emulation is on and holding down the command key and clicking the mouse button will simulate clicking the second mouse button. Holding down the option key and clicking will simulate the third button. You can change to any combination of modifiers to emulate buttons two and three in the preferences. Note, even if the modifiers keys are mapped to some other key with xmodmap, you still must use the actual keys specified in the preferences for multi-button mouse emulation.</p>
<h2><a NAME="path">Setting Your Path</a></h2>
<p>Your path is the list of directories to be searched for executable commands. The X11 commands are located in <code>/usr/X11R6/bin</code>, which needs to be added to your path. XDarwin does this for you by default and can also add additional directories where you have installed command line applications.</p>
<p>More experienced users will have already set their path correctly using the initialization files for their shell. In this case, you can inform XDarwin not to modify your path in the preferences. XDarwin launches the initial X11 clients in the user's default login shell. (An alternate shell can also be specified in the preferences.) The way to set the path depends on the shell you are using. This is described in the man page documentation for the shell.</p>
<p>In addition you may also want to add the X11 man pages to the list of pages to be searched when you are looking for documentation. The X11 man pages are located in <code>/usr/X11R6/man</code> and the <code>MANPATH</code> environment variable contains the list of directories to search.</p>
<h2><a NAME="prefs">User Preferences</a></h2>
<p>A number of options may be set from the user preferences, accessible from the "Preferences..." menu item in the "XDarwin" menu. The options listed as start up options will not take effect until you have restarted XDarwin. All other options take effect immediately. The various options are described below:</p>
<h3>General</h3>
<ul>
<li><b>Use System beep for X11:</b> When enabled the standard Mac OS X alert sound is used as the X11 bell. When disabled (default) a simple tone is used.</li>
<li><b>Allow X11 to change mouse acceleration:</b> In a standard X window system implementation, the window manager can change the mouse acceleration. This can lead to confusion as the mouse acceleration may be set to different values by the Mac OS X System Preferences and the X window manager. By default, X11 is not allowed to change the mouse acceleration to avoid this problem.</li>
<li><b>Multi-Button Mouse Emulation:</b> This is described above under <a HREF="#usage">Usage</a>. When emulation is enabled the selected modifiers must be held down when the mouse button is pushed to emulate the second or third mouse buttons.</li>
</ul>
<h3>Start Up</h3>
<ul>
<li><b>Default Mode:</b> If the user does not indicate whether to run in full screen or rootless mode, the mode specified here will be used.</li>
<li><b>Show mode pick panel on startup:</b> By default, a panel is displayed when XDarwin is started to allow the user to choose between full screen or rootless mode. If this option is turned off, the default mode will be started automatically.</li>
<li><b>X11 Display number:</b> X11 allows there to be multiple displays managed by separate X servers on a single computer. The user may specify an integer display number for XDarwin to use if more than one X server is going to be run simultaneously.</li>
<li><b>Allow Xinerama multiple monitor support:</b> XDarwin supports multiple monitors with Xinerama, which treats all monitors as being part of one large rectangular screen. You can disable Xinerama with this option, but currently XDarwin does not handle multiple monitors correctly without it. If you only have a single monitor, Xinerama is automatically disabled.</li>
<li><b>Keymapping File:</b> A keymapping file is read at startup and translated to an X11 keymap. Keymapping files, available for a wide variety of languages, are found in <code>/System/Library/Keyboards</code>.</li>
<li><b>Starting First X11 Clients:</b> When XDarwin is started from the Finder, it will run <code>xinit</code> to launch the X window manager and other X clients. (See "<code>man xinit</code>" for more information.) Before XDarwin runs <code>xinit</code> it will add the specified directories to the user's path. By default only <code>/usr/X11R6/bin</code> is added. Additional directories may added, separated by a colon. The X clients are started in the user's default login shell so that the user's shell initialization files are read. If desired, an alternate shell may be specified.</li>
</ul>
<h3>Full Screen</h3>
<ul>
<li><b>Key combination button:</b> Click this button and then press any number of modifiers followed by a standard key to change the key combination to switch between Aqua and X11.</li>
<li><b>Click on icon in Dock switches to X11:</b> Enable this to activate switching to X11 by clicking on the XDarwin icon in the Dock. On some versions of Mac OS X, switching by clicking in the Dock can cause the cursor to disappear on returning to Aqua.</li>
<li><b>Show help on startup:</b> This will show an introductory splash screen when XDarwin is started in full screen mode.</li>
<li><b>Color bit depth:</b> In full screen mode, the X11 display can use a different color bit depth than is used by Aqua. If "Current" is specified, the depth used by Aqua when XDarwin starts will be used. Otherwise 8, 15, or 24 bits may be specified.</li>
</ul>
<h2><a NAME="license">License</a></h2>
The main license for XDarwin is based on the traditional MIT X11 / X Consortium License, which does not impose any conditions on modification or redistribution of source code or binaries other than requiring that copyright/license notices are left intact. For more information and additional copyright/licensing notices covering some sections of the code, please refer to the source code.
<H3><A NAME="3"></A>X Consortium License</H3>
<p>Copyright (C) 1996 X Consortium</p>
<p>Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without
limitation the rights to use, copy, modify, merge, publish, distribute,
sublicense, and/or sell copies of the Software, and to permit persons to
whom the Software is furnished to do so, subject to the following conditions:</p>
<p>The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.</p>
<p>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 X CONSORTIUM 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.</p>
<p>Except as contained in this notice, the name of the X Consortium 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 X Consortium.</p>
<p>X Window System is a trademark of X Consortium, Inc.</p>
</body>
</html>

View File

@@ -1,166 +0,0 @@
{\rtf1\mac\ansicpg10000\cocoartf102
{\fonttbl\f0\fswiss\fcharset77 Helvetica;\f1\fswiss\fcharset77 Helvetica-Bold;\f2\fswiss\fcharset77 Helvetica-Oblique;
}
{\colortbl;\red255\green255\blue255;}
\vieww5160\viewh4480\viewkind0
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
\f0\fs24 \cf0 This product includes software developed by The XFree86 Project, Inc (http://www.xfree86.org/) and its contributors. The following people contributed to Darwin/Mac OS X support.\
\
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\f1\b \cf0 Contributors to Xorg Foundation Release:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Kaleb KEITHLEY\
\f2\i Working left and right Ctrl, Alt (Option), Meta (Command) and Shift keys.
\f0\i0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f1\b \cf0 \
\f1\b \cf0 Contributors to XFree86 4.4:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 John Harper\
\f2\i Rootless acceleration and Apple-WM extension
\f0\i0 \
Torrey T. Lyons\
\f2\i Project Lead
\f0\i0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f1\b \cf0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\cf0 Additional XonX Contributors to XFree86 4.3:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Fabr\'92cio Luis de Castro\
\f2\i Portuguese localization
\f0\i0 \
Michael Oland\
\f2\i New XDarwin icon
\f0\i0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\f1\b \cf0 \
Participants \'88 XonX pour XFree86 4.2 :
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Rob Braun\
\f2\i Version pour Darwin x86
\f0\i0 \
Pablo Di Noto\
\f2\i Traduction en espagnol
\f0\i0 \
Paul Edens\
\f2\i Traduction en allemand
\f0\i0 \
Kyunghwan Kim\
\f2\i Traduction en cor\'8een
\f0\i0 \
Mario Klebsch\
\f2\i Claviers non-US
\f0\i0 \
Torrey T. Lyons\
\f2\i Direction du projet
\f0\i0 \
Andreas Monitzer\
\f2\i Traduction en allemand
\f0\i0 \
Patrik Montgomery\
\f2\i Traduction en su\'8edois
\f0\i0 \
Greg Parker\
\f2\i Version \'c7 rootless \'c8
\f0\i0 \
Toshimitsu Tanaka\
\f2\i Traduction en japonais
\f0\i0 \
Olivier Verdier\
\f2\i Traduction en fran\'8dais
\f0\i0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f1\b \cf0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\cf0 Remerciements :
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Devin Poolman et Zero G Software, Inc.\
\f2\i Installeur
\f0\i0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f1\b \cf0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\cf0 Participants \'88 XonX pour XFree86 4.2 :
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Rob Braun\
\f2\i Version pour Darwin x86
\f0\i0 \
Torrey T. Lyons\
\f2\i Direction du projet
\f0\i0 \
Andreas Monitzer\
\f2\i Version Cocoa de l'interface de XDarwin
\f0\i0 \
Greg Parker\
\f2\i Impl\'8ementation initiale sur Quartz
\f0\i0 \
Christoph Pfisterer\
\f2\i Librairies partag\'8ees dynamiquement
\f0\i0 \
Toshimitsu Tanaka\
\f2\i Traduction en japonais
\f0\i0 \
\
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\f1\b \cf0 Remerciements :
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Tiago Ribeiro\
Ic\'99ne
\f2\i XDarwin
\f0\i0 \
\
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\f1\b \cf0 Historique :
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 John Carmack\
\f2\i Premi\'8fre adaptation de XFree86 sur Mac OS X Server
\f0\i0 \
Dave Zarzycki\
\f2\i Adaptation de Free86 4.0 pour Darwin 1.0
\f0\i0 \
Torrey T. Lyons\
\f2\i Int\'8egration dans le projet XFree86 pour la version 4.0.2}

View File

@@ -1,72 +0,0 @@
{
IBClasses = (
{
ACTIONS = {showHelp = id; };
CLASS = FirstResponder;
LANGUAGE = ObjC;
SUPERCLASS = NSObject;
},
{
ACTIONS = {close = id; pickFile = id; saveChanges = id; setKey = id; };
CLASS = Preferences;
LANGUAGE = ObjC;
OUTLETS = {
addToPathButton = id;
addToPathField = id;
button2ModifiersMatrix = id;
button3ModifiersMatrix = id;
depthButton = id;
displayField = id;
dockSwitchButton = id;
fakeButton = id;
keymapFileField = id;
modeMatrix = id;
modeWindowButton = id;
mouseAccelChangeButton = id;
startupHelpButton = id;
switchKeyButton = id;
systemBeepButton = id;
useDefaultShellMatrix = id;
useOtherShellField = id;
useXineramaButton = id;
window = id;
};
SUPERCLASS = NSObject;
},
{
CLASS = XApplication;
LANGUAGE = ObjC;
OUTLETS = {preferences = id; xserver = id; };
SUPERCLASS = NSApplication;
},
{
ACTIONS = {
bringAllToFront = id;
closeHelpAndShow = id;
itemSelected = id;
nextWindow = id;
previousWindow = id;
showAction = id;
showSwitchPanel = id;
startFullScreen = id;
startRootless = id;
};
CLASS = XServer;
LANGUAGE = ObjC;
OUTLETS = {
dockMenu = NSMenu;
helpWindow = NSWindow;
modeWindow = NSWindow;
startFullScreenButton = NSButton;
startRootlessButton = NSButton;
startupHelpButton = NSButton;
startupModeButton = NSButton;
switchWindow = NSPanel;
windowMenu = NSMenu;
windowSeparator = NSMenuItem;
};
SUPERCLASS = NSObject;
}
);
IBVersion = 1;
}

View File

@@ -1,38 +0,0 @@
BINDIR = ${bindir}
include $(top_srcdir)/cpprules.in
XINITDIR = $(libdir)/X11/xinit
XDEFS = \
-DX_VERSION="$(PLIST_VERSION_STRING)" \
-DX_PRE_RELEASE="$(PRE)" \
-DX_REL_DATE="$(XORG_DATE)" \
-DX_VENDOR_NAME="$(VENDOR_STRING)" \
-DX_VENDOR_LINK="$(PLIST_VENDOR_WEB)"
resourcesdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app/Contents/Resources
Frenchlprojdir = $(resourcesdir)/French.lproj
Frenchlproj_DATA = \
XDarwinHelp.html \
InfoPlist.strings \
Credits.rtf Localizable.strings
Frenchlprojnibdir = $(Frenchlprojdir)/MainMenu.nib
Frenchlprojnib_DATA = MainMenu.nib/classes.nib MainMenu.nib/objects.nib
InfoPlist.strings: $(srcdir)/../English.lproj/InfoPlist.strings.cpp
$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) | $(SED) -e's/__quote__/"/g' > $@
XDarwinHelp.html: XDarwinHelp.html.cpp
$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) > $@
CLEANFILES = XDarwinHelp.html InfoPlist.strings
EXTRA_DIST = \
Credits.rtf Localizable.strings \
Localizable.strings \
MainMenu.nib/classes.nib \
MainMenu.nib/objects.nib \
XDarwinHelp.html.cpp

View File

@@ -1,99 +0,0 @@
<html>
<head><META HTTP-EQUIV="content-type" CONTENT="text/html; charset=iso-8859-1">
<title>XDarwin Help</title>
</head>
<body>
<center>
<h1>XDarwin X Server pour Mac OS X</h1>
X_VENDOR_NAME X_VERSION<br>
Date : X_REL_DATE
</center>
<h2>Sommaire</h2>
<ol>
<li><A HREF="#notice">Avertissement</A></li>
<li><A HREF="#usage">Utilisation</A></li>
<li><A HREF="#path">Chemins d'acc<EFBFBD>s</A></li>
<li><A HREF="#prefs">Pr<EFBFBD>f<EFBFBD>rences</A></li>
<li><A HREF="#license">Licence</A></li>
</ol>
<center>
<h2><a NAME="notice">Avertissement</a></h2>
</center>
<blockquote>
#if PRE_RELEASE
Ceci est une pr<EFBFBD>-version de XDarwin et ne fait par cons<EFBFBD>quent l'objet d'aucun support client. Les bogues peuvent <EFBFBD>tre signal<EFBFBD>s et des patches peuvent <EFBFBD>tre soumis sur la
<A HREF="http://sourceforge.net/projects/xonx/">page du projet XonX</A> chez SourceForge. Veuillez prendre connaissance de la derni<EFBFBD>re version sur <A HREF="http://sourceforge.net/projects/xonx/">XonX</A> ou le X_VENDOR_LINK avant de signaler un bogue d'une pr<EFBFBD>-version.
#else
Si le serveur date de plus de 6-12 mois ou si votre mat<EFBFBD>riel est plus r<EFBFBD>cent que la date indiqu<EFBFBD>e ci-dessus, veuillez vous procurer une version plus r<EFBFBD>cente avant de signaler toute anomalie. Les bogues peuvent <EFBFBD>tre signal<EFBFBD>s et des patches peuvent <EFBFBD>tre soumis sur la <A HREF="http://sourceforge.net/projects/xonx/">page du projet XonX</A> chez SourceForge.
#endif
</blockquote>
<blockquote>
Ce logiciel est distribu<EFBFBD> sous la
<A HREF="#license">Licence du Consortium X/X11 du MIT</A> et est fourni TEL QUEL, sans garanties. Veuillez prendre connaissance de la <A HREF="#license">Licence</A> avant toute utilisation.</blockquote>
<h2><a NAME="usage">Utilisation</a></h2>
<p>XDarwin est une X server libre et distribuable sans contrainte du <a HREF
="http://www.x.org/">X Window System</a>. This version of XDarwin was produced by the X_VENDOR_LINK. XDarwin fonctionne sous Mac OS X en mode <EFBFBD> rootless <EFBFBD> ou plein <EFBFBD>cran.</p>
<p>Lorsque le syst<EFBFBD>me X window est actif en mode plein <EFBFBD>cran, il prend en charge la totalit<EFBFBD> de l'<EFBFBD>cran. Il est possible de revenir sur le bureau de Mac OS X en appuyant sur Commande-Option-A. Cette combinaison de touches peut <EFBFBD>tre modifi<EFBFBD>e dans les pr<EFBFBD>f<EFBFBD>rences. Pour revenir dans X window, cliquer sur l'ic<EFBFBD>ne de XDarwin dans le Dock de Mac OS X. (Un r<EFBFBD>glage des pr<EFBFBD>f<EFBFBD>rences permet d'effectuer cette op<EFBFBD>ration en cliquant dans une fen<EFBFBD>tre flottante au lieu de l'ic<EFBFBD>ne du Dock)</p>
<p>En mode <EFBFBD> rootless <EFBFBD>, X window system et Aqua utilisent le m<EFBFBD>me affichage. La fen<EFBFBD>tre-m<EFBFBD>re de l'affichage X11 est de la taille de l'<EFBFBD>cran et contient toutes les autre fen<EFBFBD>tres. En mode <EFBFBD> rootless <EFBFBD> cette fen<EFBFBD>tre-m<EFBFBD>re n'est pas affich<EFBFBD>e car Aqua g<EFBFBD>re le fond d'<EFBFBD>cran.</p>
<h3><EFBFBD>mulation de souris <EFBFBD> plusieurs boutons</h3>
<p>Le fonctionnement de la plupart des applications X11 repose sur l'utilisation d'une souris <EFBFBD> 3 boutons. Il est possible d'<EFBFBD>muler une souris <EFBFBD> 3 boutons avec un seul bouton en appuyant sur des touches de modification. Ceci est r<EFBFBD>gl<EFBFBD> dans la section "<EFBFBD>mulation de souris <20> plusieurs boutons" de l'onglet "G<EFBFBD>n<EFBFBD>ral" des pr<EFBFBD>f<EFBFBD>rences. L'<EFBFBD>mulation est activ<EFBFBD>e par d<EFBFBD>faut. Dans ce cas, cliquer en appuyant simultan<EFBFBD>ment sur la touche "commande" simulera le bouton du milieu. Cliquer en appuyant simultan<EFBFBD>ment sur la touche "option" simulera le bouton de droite. Les pr<EFBFBD>f<EFBFBD>rences permettent de r<EFBFBD>gler n'importe quelle combinaison de touches de modification pour <EFBFBD>muler les boutons du milieu et de droite. Notez que m<EFBFBD>me si les touches de modifications sont mises en correspondance avec d'autres touches par xmodmap, ce sont les touches originelles sp<EFBFBD>cifi<EFBFBD>es dans les pr<EFBFBD>f<EFBFBD>rences qui assureront l'<EFBFBD>mulation d'une souris <EFBFBD> plusieurs boutons.
<h2><a NAME="path">R<EFBFBD>glage du chemin d'acc<EFBFBD>s</a></h2>
<p>Le chemin d'acc<EFBFBD>s est une liste de r<EFBFBD>pertoires utilis<EFBFBD>s pour la recherche d'ex<EFBFBD>cutables. Les commandes X11 sont situ<EFBFBD>es dans <code>/usr/X11R6/bin</code>, qui doit <EFBFBD>tre ajout<EFBFBD> <EFBFBD> votre chemin d'acc<EFBFBD>s. XDarwin fait cela par d<EFBFBD>faut, et peut <EFBFBD>galement ajouter d'autres r<EFBFBD>pertoires dans lesquels vous auriez install<EFBFBD> d'autre commandes unix.</p>
<p>Les utilisateurs plus exp<EFBFBD>riment<EFBFBD>s auront d<EFBFBD>j<EFBFBD> r<EFBFBD>gl<EFBFBD> leur chemin d'acc<EFBFBD>s correctement par le biais des fichiers d'initialisation de leur shell. Dans ce cas, il est possible de demander <EFBFBD> XDarwin de ne pas modifier le chemin d'acc<EFBFBD>s initial. XDarwin lance les premiers clients X11 dans le shell d'ouverture de session par d<EFBFBD>faut. (Un shell de remplacement peut <EFBFBD>tre sp<EFBFBD>cifi<EFBFBD> dans les pr<EFBFBD>f<EFBFBD>rences.) La fa<EFBFBD>on de r<EFBFBD>gler le chemin d'acc<EFBFBD>s d<EFBFBD>pend du shell utilis<EFBFBD>. Ceci est document<EFBFBD> dans les pages "man" du shell.</p>
<p>De plus, il est possible d'ajouter les pages "man" de X11 <EFBFBD> la liste des pages recherch<EFBFBD>es pour la documentation "man". Les pages "man" X11 se trouvent dans <code>/usr/X11R6/man</code> et la variable d'environnement <code>MANPATH</code> contient la liste des r<EFBFBD>pertoires dans lesquels chercher.</p>
<h2><a NAME="prefs">Pr<EFBFBD>f<EFBFBD>rences</a></h2>
<p>Un certain nombre d'options peuvent <EFBFBD>tre r<EFBFBD>gl<EFBFBD>es dans les pr<EFBFBD>f<EFBFBD>rences. On acc<EFBFBD>de aux pr<EFBFBD>f<EFBFBD>rences en choisissant "Pr<EFBFBD>f<EFBFBD>rences..." dans le menu "XDarwin". Les options d<EFBFBD>crites comme options de d<EFBFBD>marrage ne prendront pas effet avant le red<EFBFBD>marrage de XDarwin. Les autres options prennent imm<EFBFBD>diatement effet. Les diff<EFBFBD>rentes options sont d<EFBFBD>taill<EFBFBD>es ci-apr<EFBFBD>s :</p>
<h3>G<EFBFBD>n<EFBFBD>ral</h3>
<ul>
<li><b>Utiliser le bip d'alerte Syst<EFBFBD>me dans X11 :</b> Cocher cette option pour que le son d'alerte standard de Mac OS X soit utilis<EFBFBD> <EFBFBD> la place du son d'alerte de X11. L'option n'est pas coch<EFBFBD>e ar d<EFBFBD>faut. Dans ce cas, un simple signal sonore est utilis<EFBFBD>.</li>
<li><b>Autoriser X11 <EFBFBD> changer la vitesse de la souris :</b> Dans une impl<EFBFBD>mentation classique du syt<EFBFBD>me X window, le gestionnaire de fen<EFBFBD>tres peut modifier la vitesse de la souris. Cela peut s'av<EFBFBD>rer d<EFBFBD>routant puisque le r<EFBFBD>glage de la vitesse de la souris peut <EFBFBD>tre diff<EFBFBD>rent dans les pr<EFBFBD>f<EFBFBD>rences de Mac OS X et dans le gestionnaire X window. Par d<EFBFBD>faut, X11 n'est pas autoris<EFBFBD> <EFBFBD> changer la vitesse de la souris.</li>
<li><b><EFBFBD>mulation de souris <EFBFBD> plusieurs boutons :</b> Ceci est d<EFBFBD>crit ci-dessus <EFBFBD> la rubrique <a HREF="#usage">Usage</a>. Lorsque l'<EFBFBD>mulation est activ<EFBFBD>e, il suffit d'appuyer simultan<EFBFBD>ment sur les touches modificatrices s<EFBFBD>lectionn<EFBFBD>es et sur le bouton de la souris afin d'<EFBFBD>muler les boutons du milieu et de droite.</li>
</ul>
<h3>D<EFBFBD>marrage</h3>
<ul>
<li><b>Mode par d<EFBFBD>faut :</b> Le mode sp<EFBFBD>cifi<EFBFBD> <EFBFBD> cet endroit sera utilis<EFBFBD> si l'utilisateur ne l'indique pas au d<EFBFBD>marrage.</li>
<li><b>Choix du mode d'affichage au d<EFBFBD>marrage</b> Par d<EFBFBD>faut, une fen<EFBFBD>tre de dialogue est affich<EFBFBD>e au d<EFBFBD>marrage de XDarwin pour permettre <EFBFBD> l'utilisateur de choisir entre le mode plein <EFBFBD>cran et le mode <EFBFBD> rootless <EFBFBD>. Si cette option est d<EFBFBD>sactiv<EFBFBD>e, le mode par d<EFBFBD>faut sera automatiquement utilis<EFBFBD>.</li>
<li><b>Num<EFBFBD>ro d'affichage (Display)</b> X11 offre la possibilit<EFBFBD> de plusieurs serveurs X sur un ordinateur. L'utilisateur doit sp<EFBFBD>cifier ici le num<EFBFBD>ro d'affichage utilis<EFBFBD> par XDarwin dans le cas o<EFBFBD> plusieurs serveurs X seraient en service simultan<EFBFBD>ment.</li>
<li><b>Autoriser la prise en charge Xinerama de plusieurs moniteurs :</b> XDarwin peut <EFBFBD>tre utilis<EFBFBD> avec plusieurs moniteur avec Xinerama, qui consid<EFBFBD>re les diff<EFBFBD>rents moniteurs comme des parties d'un <EFBFBD>cran rectugulaire plus grand. Cette option permet de d<EFBFBD>sactiver Xinerama mais XDarwin ne prend alors pour l'instant pas correctement en charge l'affichage sur plusieurs <EFBFBD>crans. Si il n'y a qu'un seul moniteur, Xinerama est automatiquement d<EFBFBD>sactiv<EFBFBD>.</li>
<li><b>Fichier clavier :</b> Un fichier de correspondance de clavier est lu au d<EFBFBD>marrage puis transform<EFBFBD> en un fihcier de correspondance clavier pour X11. Les fichiers de correspondance clavier, disponibles pour de nombreuses langues, se trouvent dans <code>/System/Library/Keyboards</code>.</li>
<li><b>D<EFBFBD>marrage des premiers clients X11 :</b> Lorsque XDarwin est d<EFBFBD>marr<EFBFBD> <EFBFBD> partir du Finder, il lance <code>xinit</code> qui lance <EFBFBD> son tour le gestionnaire X window ainsi que d'autres clients X. (Voir "<code>man xinit</code>" pour plus d'informations.) Avant de lancer <code>xinit</code>, XDarwin ajoute les r<EFBFBD>pertoires ainsi sp<EFBFBD>cifi<EFBFBD>s au chemin d'acc<EFBFBD>s de l'utilisateur. Par d<EFBFBD>faut, seul <code>/usr/X11R6/bin</code> est ajout<EFBFBD>. Il est possible d'ajouter d'autres r<EFBFBD>pertoires en les s<EFBFBD>parants <EFBFBD> l'aide de deux points (<code>:</code>). Les clients X sont d<EFBFBD>marr<EFBFBD>s <EFBFBD> partir du shell par d<EFBFBD>faut de l'utilisateur. Ainsi, le fichier d'initialisation de shell de l'utilisateur est lu. Un autre shell peut <EFBFBD>ventuellement <EFBFBD>tre sp<EFBFBD>cifi<EFBFBD>.</li>
</ul>
<h3>Plein <EFBFBD>cran</h3>
<ul>
<li><b>Combinaison de touches :</b> Appuyer sur ce bouton, puis appuyer sur une ou plusieurs touches modificatrices suivies d'une touche ordinaire. Cette combinaison de touche servira <EFBFBD> commuter entre Aqua et X11.</li>
<li><b>Basculer dans X11 en cliquant sur l'ic<EFBFBD>ne du Dock :</b> Cette option permet de passer dans X11 en cliquant dans l'ic<EFBFBD>ne de XDarwin dans le Dock. Sur certaines versions de Mac OS X, la commutation en utilisant le Dock peut faire dispara<EFBFBD>tre le curseur lors du retour dans Aqua.</li>
<li><b>Afficher l'aide du mode plein <EFBFBD>cran au d<EFBFBD>marrage :</b> Permet l'affichage d'une fen<EFBFBD>tre d'introduction lorsque XDarwin est d<EFBFBD>marr<EFBFBD> en mode plein <EFBFBD>cran.</li>
<li><b>Profondeur de couleur :</b> En mode plein <EFBFBD>cran, l'affichage X11 peut utiliser une autre profondeur de couleur que celle employ<EFBFBD>e par Aqua. Si "Actuelle" est choisi, XDarwin utilisera la m<EFBFBD>me profondeur de couleur qu'Aqua. Les autres choix sont 8 (256 couleurs), 15 (milliers de couleurs) et 24 bits (millions de couleurs). </li>
</ul>
<h2><a NAME="license">Licence</a></h2>
The main license for XDarwin is one based on the traditional MIT X11 / X Consortium License, which does not impose any conditions on modification or redistribution of source code or binaries other than requiring that copyright/license notices are left intact. For more information and additional copyright/licensing notices covering some sections of the code, please refer to the source code.
<H3><A NAME="3"></A>X Consortium License</H3>
<p>Copyright (C) 1996 X Consortium</p>
<p>Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without
limitation the rights to use, copy, modify, merge, publish, distribute,
sublicense, and/or sell copies of the Software, and to permit persons to
whom the Software is furnished to do so, subject to the following conditions:</p>
<p>The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.</p>
<p>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 X CONSORTIUM 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.</p>
<p>Except as contained in this notice, the name of the X Consortium 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 X Consortium.</p>
<p>X Window System is a trademark of X Consortium, Inc.</p>
</body>
</html>

View File

@@ -1,168 +0,0 @@
{\rtf1\mac\ansicpg10000\cocoartf102
{\fonttbl\f0\fswiss\fcharset77 Helvetica;\f1\fswiss\fcharset77 Helvetica-Bold;\f2\fswiss\fcharset77 Helvetica-Oblique;
}
{\colortbl;\red255\green255\blue255;}
\vieww5160\viewh6300\viewkind0
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
\f0\fs24 \cf0 This product includes software developed by The XFree86 Project, Inc (http://www.xfree86.org/) and its contributors. The following people contributed to Darwin/Mac OS X support.\
\
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\f1\b \cf0 Contributors to Xorg Foundation Release:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Kaleb KEITHLEY\
\f2\i Working left and right Ctrl, Alt (Option), Meta (Command) and Shift keys.
\f0\i0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f1\b \cf0 \
\f1\b \cf0 Contributors to XFree86 4.4:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 John Harper\
\f2\i Rootless acceleration and Apple-WM extension
\f0\i0 \
Torrey T. Lyons\
\f2\i Project Lead
\f0\i0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f1\b \cf0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\cf0 Additional XonX Contributors to XFree86 4.3:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Fabr\'92cio Luis de Castro\
\f2\i Portuguese localization
\f0\i0 \
Michael Oland\
\f2\i New XDarwin icon
\f0\i0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f1\b \cf0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\cf0 XonX Contributors to XFree86 4.2:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Rob Braun\
\f2\i Darwin x86 support
\f0\i0 \
Pablo Di Noto\
\f2\i Spanish localization
\f0\i0 \
Paul Edens\
\f2\i Dutch localization
\f0\i0 \
Kyunghwan Kim\
\f2\i Korean localization
\f0\i0 \
Mario Klebsch\
\f2\i Non-US keyboard support
\f0\i0 \
Torrey T. Lyons\
\f2\i Project Lead
\f0\i0 \
Andreas Monitzer\
\f2\i German localization
\f0\i0 \
Patrik Montgomery\
\f2\i Swedish localization
\f0\i0 \
Greg Parker\
\f2\i Rootless support
\f0\i0 \
Toshimitsu Tanaka\
\f2\i Japanese localization
\f0\i0 \
Olivier Verdier\
\f2\i French localization
\f0\i0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f1\b \cf0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\cf0 Special Thanks:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Devin Poolman and Zero G Software, Inc.\
\f2\i Installer
\f0\i0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f1\b \cf0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\cf0 XonX Team Members\
Contributing to XFree86 4.1:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Rob Braun\
\f2\i Darwin x86 support
\f0\i0 \
Torrey T. Lyons\
\f2\i Project Lead
\f0\i0 \
Andreas Monitzer\
\f2\i Cocoa version of XDarwin front end
\f0\i0 \
Greg Parker\
\f2\i Original Quartz implementation
\f0\i0 \
Christoph Pfisterer\
\f2\i Dynamic shared libraries
\f0\i0 \
Toshimitsu Tanaka\
\f2\i Japanese localization
\f0\i0 \
\
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\f1\b \cf0 Special Thanks:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Tiago Ribeiro\
\f2\i XDarwin icon
\f0\i0 \
\
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\f1\b \cf0 History:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 John Carmack\
\f2\i Original XFree86 port to Mac OS X Server
\f0\i0 \
Dave Zarzycki\
\f2\i XFree86 4.0 port to Darwin 1.0
\f0\i0 \
Torrey T. Lyons\
\f2\i Integration into XFree86 Project for 4.0.2}

View File

@@ -1,72 +0,0 @@
{
IBClasses = (
{
ACTIONS = {showHelp = id; };
CLASS = FirstResponder;
LANGUAGE = ObjC;
SUPERCLASS = NSObject;
},
{
ACTIONS = {close = id; pickFile = id; saveChanges = id; setKey = id; };
CLASS = Preferences;
LANGUAGE = ObjC;
OUTLETS = {
addToPathButton = id;
addToPathField = id;
button2ModifiersMatrix = id;
button3ModifiersMatrix = id;
depthButton = id;
displayField = id;
dockSwitchButton = id;
fakeButton = id;
keymapFileField = id;
modeMatrix = id;
modeWindowButton = id;
mouseAccelChangeButton = id;
startupHelpButton = id;
switchKeyButton = id;
systemBeepButton = id;
useDefaultShellMatrix = id;
useOtherShellField = id;
useXineramaButton = id;
window = id;
};
SUPERCLASS = NSObject;
},
{
CLASS = XApplication;
LANGUAGE = ObjC;
OUTLETS = {preferences = id; xserver = id; };
SUPERCLASS = NSApplication;
},
{
ACTIONS = {
bringAllToFront = id;
closeHelpAndShow = id;
itemSelected = id;
nextWindow = id;
previousWindow = id;
showAction = id;
showSwitchPanel = id;
startFullScreen = id;
startRootless = id;
};
CLASS = XServer;
LANGUAGE = ObjC;
OUTLETS = {
dockMenu = NSMenu;
helpWindow = NSWindow;
modeWindow = NSWindow;
startFullScreenButton = NSButton;
startRootlessButton = NSButton;
startupHelpButton = NSButton;
startupModeButton = NSButton;
switchWindow = NSPanel;
windowMenu = NSMenu;
windowSeparator = NSMenuItem;
};
SUPERCLASS = NSObject;
}
);
IBVersion = 1;
}

View File

@@ -1,36 +0,0 @@
BINDIR = ${bindir}
include $(top_srcdir)/cpprules.in
XINITDIR = $(libdir)/X11/xinit
XDEFS = \
-DX_VERSION="$(PLIST_VERSION_STRING)" \
-DX_PRE_RELEASE="$(PRE)" \
-DX_REL_DATE="$(XORG_DATE)" \
-DX_VENDOR_NAME="$(VENDOR_STRING)" \
-DX_VENDOR_LINK="$(PLIST_VENDOR_WEB)"
resourcesdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app/Contents/Resources
Germanlprojdir = $(resourcesdir)/German.lproj
Germanlproj_DATA = \
XDarwinHelp.html \
InfoPlist.strings \
Credits.rtf Localizable.strings
Germanlprojnibdir = $(Germanlprojdir)/MainMenu.nib
Germanlprojnib_DATA = MainMenu.nib/classes.nib MainMenu.nib/objects.nib
InfoPlist.strings: $(srcdir)/../English.lproj/InfoPlist.strings.cpp
$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) | $(SED) -e's/__quote__/"/g' > $@
XDarwinHelp.html: XDarwinHelp.html.cpp
$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) > $@
CLEANFILES = XDarwinHelp.html InfoPlist.strings
EXTRA_DIST = \
Credits.rtf Localizable.strings \
Localizable.strings \
MainMenu.nib/classes.nib \
MainMenu.nib/objects.nib \
XDarwinHelp.html.cpp

View File

@@ -1,94 +0,0 @@
<html>
<head>
<title>XDarwin Help</title>
</head>
<body>
<center>
<h1>XDarwin X Server for Mac OS X</h1>
X_VENDOR_NAME X_VERSION<br>
Release Date: X_REL_DATE
</center>
<h2>Contents</h2>
<ol>
<li><A HREF="#notice">Important Notice</A></li>
<li><A HREF="#usage">Usage</A></li>
<li><A HREF="#path">Setting Your Path</A></li>
<li><A HREF="#prefs">User Preferences</A></li>
<li><A HREF="#license">License</A></li>
</ol>
<center>
<h2><a NAME="notice">Important Notice</a></h2>
</center>
<blockquote>
#if X_PRE_RELEASE
This is a pre-release version of XDarwin, and is not supported in any way. Bugs may be reported and patches may be submitted to the <A HREF="http://sourceforge.net/projects/xonx/">XonX project page</A> at SourceForge. Before reporting bugs in pre-release versions, please check the latest version from <A HREF="http://sourceforge.net/projects/xonx/">XonX</A> or the X_VENDOR_LINK.
#else
If the server is older than 6-12 months, or if your hardware is newer than the above date, look for a newer version before reporting problems. Bugs may be reported and patches may be submitted to the <A HREF="http://sourceforge.net/projects/xonx/">XonX project page</A> at SourceForge.
#endif
</blockquote>
<blockquote>
This software is distributed under the terms of the <A HREF="#license">MIT X11 / X Consortium License</A> and is provided AS IS, with no warranty. Please read the <A HREF="#license">License</A> before using.</blockquote>
<h2><a NAME="usage">Usage</a></h2>
<p>XDarwin is a freely redistributable open-source X server for the <a HREF="http://www.x.org/">X Window System</a>. This version of XDarwin was produced by the X_VENDOR_LINK. XDarwin runs on Mac OS X in full screen or rootless modes.</p>
<p>In full screen mode, when the X window system is active, it takes over the entire screen. You can switch back to the Mac OS X desktop by holding down Command-Option-A. This key combination can be changed in the user preferences. From the Mac OS X desktop, click on the XDarwin icon in the Dock to switch back to the X window system. (You can change this behavior in the user preferences so that you must click the XDarwin icon in the floating switch window instead.)</p>
<p>In rootless mode, the X window system and Aqua share your display. The root window of the X11 display is the size of the screen and contains all the other windows. The X11 root window is not displayed in rootless mode as Aqua handles the desktop background.</p>
<h3>Multi-Button Mouse Emulation</h3>
<p>Many X11 applications rely on the use of a 3-button mouse. You can emulate a 3-button mouse with a single button by holding down various modifier keys while you click the mouse button. This is controlled by settings in the "Multi-Button Mouse Emulation" section of the "General" preferences. By default, emulation is on and holding down the command key and clicking the mouse button will simulate clicking the second mouse button. Holding down the option key and clicking will simulate the third button. You can change to any combination of modifiers to emulate buttons two and three in the preferences. Note, even if the modifiers keys are mapped to some other key with xmodmap, you still must use the actual keys specified in the preferences for multi-button mouse emulation.</p>
<h2><a NAME="path">Setting Your Path</a></h2>
<p>Your path is the list of directories to be searched for executable commands. The X11 commands are located in <code>/usr/X11R6/bin</code>, which needs to be added to your path. XDarwin does this for you by default and can also add additional directories where you have installed command line applications.</p>
<p>More experienced users will have already set their path correctly using the initialization files for their shell. In this case, you can inform XDarwin not to modify your path in the preferences. XDarwin launches the initial X11 clients in the user's default login shell. (An alternate shell can also be specified in the preferences.) The way to set the path depends on the shell you are using. This is described in the man page documentation for the shell.</p>
<p>In addition you may also want to add the X11 man pages to the list of pages to be searched when you are looking for documentation. The X11 man pages are located in <code>/usr/X11R6/man</code> and the <code>MANPATH</code> environment variable contains the list of directories to search.</p>
<h2><a NAME="prefs">User Preferences</a></h2>
<p>A number of options may be set from the user preferences, accessible from the "Preferences..." menu item in the "XDarwin" menu. The options listed as start up options will not take effect until you have restarted XDarwin. All other options take effect immediately. The various options are described below:</p>
<h3>General</h3>
<ul>
<li><b>Use System beep for X11:</b> When enabled the standard Mac OS X alert sound is used as the X11 bell. When disabled (default) a simple tone is used.</li>
<li><b>Allow X11 to change mouse acceleration:</b> In a standard X window system implementation, the window manager can change the mouse acceleration. This can lead to confusion as the mouse acceleration may be set to different values by the Mac OS X System Preferences and the X window manager. By default, X11 is not allowed to change the mouse acceleration to avoid this problem.</li>
<li><b>Multi-Button Mouse Emulation:</b> This is described above under <a HREF="#usage">Usage</a>. When emulation is enabled the selected modifiers must be held down when the mouse button is pushed to emulate the second or third mouse buttons.</li>
</ul>
<h3>Start Up</h3>
<ul>
<li><b>Default Mode:</b> If the user does not indicate whether to run in full screen or rootless mode, the mode specified here will be used.</li>
<li><b>Show mode pick panel on startup:</b> By default, a panel is displayed when XDarwin is started to allow the user to choose between full screen or rootless mode. If this option is turned off, the default mode will be started automatically.</li>
<li><b>X11 Display number:</b> X11 allows there to be multiple displays managed by separate X servers on a single computer. The user may specify an integer display number for XDarwin to use if more than one X server is going to be run simultaneously.</li>
<li><b>Allow Xinerama multiple monitor support:</b> XDarwin supports multiple monitors with Xinerama, which treats all monitors as being part of one large rectangular screen. You can disable Xinerama with this option, but currently XDarwin does not handle multiple monitors correctly without it. If you only have a single monitor, Xinerama is automatically disabled.</li>
<li><b>Keymapping File:</b> A keymapping file is read at startup and translated to an X11 keymap. Keymapping files, available for a wide variety of languages, are found in <code>/System/Library/Keyboards</code>.</li>
<li><b>Starting First X11 Clients:</b> When XDarwin is started from the Finder, it will run <code>xinit</code> to launch the X window manager and other X clients. (See "<code>man xinit</code>" for more information.) Before XDarwin runs <code>xinit</code> it will add the specified directories to the user's path. By default only <code>/usr/X11R6/bin</code> is added. Additional directories may added, separated by a colon. The X clients are started in the user's default login shell so that the user's shell initialization files are read. If desired, an alternate shell may be specified.</li>
</ul>
<h3>Full Screen</h3>
<ul>
<li><b>Key combination button:</b> Click this button and then press any number of modifiers followed by a standard key to change the key combination to switch between Aqua and X11.</li>
<li><b>Click on icon in Dock switches to X11:</b> Enable this to activate switching to X11 by clicking on the XDarwin icon in the Dock. On some versions of Mac OS X, switching by clicking in the Dock can cause the cursor to disappear on returning to Aqua.</li>
<li><b>Show help on startup:</b> This will show an introductory splash screen when XDarwin is started in full screen mode.</li>
<li><b>Color bit depth:</b> In full screen mode, the X11 display can use a different color bit depth than is used by Aqua. If "Current" is specified, the depth used by Aqua when XDarwin starts will be used. Otherwise 8, 15, or 24 bits may be specified.</li>
</ul>
<h2><a NAME="license">License</a></h2>
The main license for XDarwin is based on the traditional MIT X11 / X Consortium License, which does not impose any conditions on modification or redistribution of source code or binaries other than requiring that copyright/license notices are left intact. For more information and additional copyright/licensing notices covering some sections of the code, please refer to the source code.
<H3><A NAME="3"></A>X Consortium License</H3>
<p>Copyright (C) 1996 X Consortium</p>
<p>Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without
limitation the rights to use, copy, modify, merge, publish, distribute,
sublicense, and/or sell copies of the Software, and to permit persons to
whom the Software is furnished to do so, subject to the following conditions:</p>
<p>The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.</p>
<p>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 X CONSORTIUM 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.</p>
<p>Except as contained in this notice, the name of the X Consortium 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 X Consortium.</p>
<p>X Window System is a trademark of X Consortium, Inc.</p>
</body>
</html>

View File

@@ -1,66 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>x11app</string>
</array>
<key>CFBundleTypeName</key>
<string>X11 Application</string>
<key>CFBundleTypeOSTypes</key>
<array>
<string>****</string>
</array>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>tool</string>
<string>*</string>
</array>
<key>CFBundleTypeName</key>
<string>UNIX Application</string>
<key>CFBundleTypeOSTypes</key>
<array>
<string>****</string>
</array>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
</dict>
</array>
<key>CFBundleExecutable</key>
<string>XDarwin</string>
<key>CFBundleGetInfoString</key>
<string>XDarwin 1.4.0, X.Org Foundation</string>
<key>CFBundleIconFile</key>
<string>XDarwin.icns</string>
<key>CFBundleIdentifier</key>
<string>org.x.XDarwin</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>XDarwin</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>XDarwin 1.4.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string></string>
<key>NSHelpFile</key>
<string>XDarwinHelp.html</string>
<key>NSMainNibFile</key>
<string>MainMenu</string>
<key>NSPrincipalClass</key>
<string>XApplication</string>
</dict>
</plist>

View File

@@ -1,193 +0,0 @@
{\rtf1\mac\ansicpg10001\cocoartf102
{\fonttbl\f0\fnil\fcharset78 HiraKakuPro-W3;\f1\fswiss\fcharset77 Helvetica;\f2\fswiss\fcharset77 Helvetica-Bold;
\f3\fswiss\fcharset77 Helvetica-Oblique;}
{\colortbl;\red255\green255\blue255;}
\vieww13980\viewh11160\viewkind0
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
\f0\fs24 \cf0 \'82\'b1\'82\'cc\'90\'bb\'95\'69\'82\'cd
\f1 XFree86
\f0 \'83\'76\'83\'8d\'83\'57\'83\'46\'83\'4e\'83\'67
\f1 (http://www.xfree86.org/)
\f0 \'82\'a8\'82\'e6\'82\'d1\'82\'bb\'82\'cc\'8d\'76\'8c\'a3\'8e\'d2\'82\'c9\'82\'e6\'82\'c1\'82\'c4\'8a\'4a\'94\'ad\'82\'b3\'82\'ea\'82\'bd\'83\'5c\'83\'74\'83\'67\'83\'45\'83\'46\'83\'41\'82\'f0\'8a\'dc\'82\'f1\'82\'c5\'82\'a2\'82\'dc\'82\'b7\'81\'42\'8e\'9f\'82\'cc\'90\'6c\'81\'58\'82\'cd Darwin
\f1 /Mac OS X
\f0 \'82\'cc\'83\'54\'83\'7c\'81\'5b\'83\'67\'82\'c9\'8d\'76\'8c\'a3\'82\'b5\'82\'dc\'82\'b5\'82\'bd\'81\'42
\f1 \
\
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\f2\b \cf0 Contributors to Xorg Foundation Release:
\f1\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Kaleb KEITHLEY\
\f0 \'8d\'b6\'89\'45\'82\'cc Ctrl,Alt(Option),Meta(Command) \'82\'a8\'82\'e6\'82\'d1 Shift \'83\'4c\'81\'5b\'82\'cc\'93\'ae\'8d\'ec
\f1 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f2\b \cf0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\cf0 Contributors to XFree86 4.4:
\f1\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 John Harper
\f3\i \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f0\i0 \cf0 \'83\'8b\'81\'5b\'83\'67\'83\'8c\'83\'58 \'83\'41\'83\'4e\'83\'5a\'83\'89\'83\'8c\'81\'5b\'83\'56\'83\'87\'83\'93 \'82\'a8\'82\'e6\'82\'d1 Apple-WM \'8a\'67\'92\'a3
\f1 \
Torrey T. Lyons\
\f0 \'83\'76\'83\'8d\'83\'57\'83\'46\'83\'4e\'83\'67 \'83\'8a\'81\'5b\'83\'5f\'81\'5b\
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f2\b \cf0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\cf0 Additional XonX Contributors to XFree86 4.3:
\f1\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Fabr\'92cio Luis de Castro\
\f0 \'83\'7c\'83\'8b\'83\'67\'83\'4b\'83\'8b\'8c\'ea\'83\'8d\'81\'5b\'83\'4a\'83\'89\'83\'43\'83\'59
\f1 \
Michael Oland\
\f0 \'90\'56\'82\'b5\'82\'a2
\f1 XDarwin
\f0 \'83\'41\'83\'43\'83\'52\'83\'93
\f1 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f2\b \cf0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\cf0 XonX Contributors to XFree86 4.2:
\f1\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Rob Braun\
Darwin x86
\f3\i
\f0\i0 \'83\'54\'83\'7c\'81\'5b\'83\'67
\f1 \
Pablo Di Noto\
\f3\i
\f0\i0 \'83\'58\'83\'79\'83\'43\'83\'93\'8c\'ea\'83\'8d\'81\'5b\'83\'4a\'83\'89\'83\'43\'83\'59
\f1 \
Paul Edens\
\f3\i
\f0\i0 \'83\'49\'83\'89\'83\'93\'83\'5f\'8c\'ea\'83\'8d\'81\'5b\'83\'4a\'83\'89\'83\'43\'83\'59
\f1 \
Kyunghwan Kim\
\f3\i
\f0\i0 \'8a\'d8\'8d\'91\'8c\'ea\'83\'8d\'81\'5b\'83\'4a\'83\'89\'83\'43\'83\'59
\f1 \
Mario Klebsch\
\f0 \'94\'f1US\'83\'4c\'81\'5b\'83\'7b\'81\'5b\'83\'68 \'83\'54\'83\'7c\'81\'5b\'83\'67
\f1 \
Torrey T. Lyons\
\f0 \'83\'76\'83\'8d\'83\'57\'83\'46\'83\'4e\'83\'67 \'83\'8a\'81\'5b\'83\'5f\'81\'5b
\f1 \
Andreas Monitzer\
\f0 \'83\'68\'83\'43\'83\'63\'8c\'ea\'83\'8d\'81\'5b\'83\'4a\'83\'89\'83\'43\'83\'59
\f1 \
Patrik Montgomery\
\f3\i
\f0\i0 \'83\'58\'83\'45\'83\'46\'81\'5b\'83\'66\'83\'93\'8c\'ea\'83\'8d\'81\'5b\'83\'4a\'83\'89\'83\'43\'83\'59
\f1 \
Greg Parker\
\f0 \'83\'8b\'81\'5b\'83\'67\'83\'8c\'83\'58 \'83\'54\'83\'7c\'81\'5b\'83\'67
\f1 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f0 \cf0 \'93\'63\'92\'86 \'8f\'72\'8c\'f5
\f1 \
\f0 \'93\'fa\'96\'7b\'8c\'ea\'83\'8d\'81\'5b\'83\'4a\'83\'89\'83\'43\'83\'59
\f1 \
Olivier Verdier\
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f3\i \cf0
\f0\i0 \'83\'74\'83\'89\'83\'93\'83\'58\'8c\'ea\'83\'8d\'81\'5b\'83\'4a\'83\'89\'83\'43\'83\'59
\f1 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f2\b \cf0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\cf0 Special Thanks:
\f1\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Devin Poolman and Zero G Software, Inc.\
\f3\i
\f0\i0 \'83\'43\'83\'93\'83\'58\'83\'67\'81\'5b\'83\'89
\f1 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f2\b \cf0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\cf0 XonX Team Members\
Contributing to XFree86 4.1:
\f1\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Rob Braun\
Darwin x86
\f0 \'83\'54\'83\'7c\'81\'5b\'83\'67
\f1 \
Torrey T. Lyons\
\f0 \'83\'76\'83\'8d\'83\'57\'83\'46\'83\'4e\'83\'67 \'83\'8a\'81\'5b\'83\'5f\'81\'5b
\f1 \
Andreas Monitzer\
Cocoa
\f0 \'94\'c5 XDarwin \'83\'74\'83\'8d\'83\'93\'83\'67\'83\'47\'83\'93\'83\'68
\f1 \
Greg Parker\
\f0 \'8d\'c5\'8f\'89\'82\'cc Quartz \'83\'43\'83\'93\'83\'76\'83\'8a\'83\'81\'83\'93\'83\'67
\f1 \
Christoph Pfisterer\
\f0 \'8b\'a4\'97\'4c\'83\'89\'83\'43\'83\'75\'83\'89\'83\'8a
\f1 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f0 \cf0 \'93\'63\'92\'86 \'8f\'72\'8c\'f5
\f1 \
\f0 \'93\'fa\'96\'7b\'8c\'ea\'83\'8d\'81\'5b\'83\'4a\'83\'89\'83\'43\'83\'59
\f1 \
\
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\f2\b \cf0 Special Thanks:
\f1\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Tiago Ribeiro\
XDarwin
\f0 \'83\'41\'83\'43\'83\'52\'83\'93
\f1 \
\
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\f2\b \cf0 History:
\f1\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 John Carmack\
\f0 XFree86 \'82\'cc Mac OS X Server \'82\'d6\'82\'cc\'8d\'c5\'8f\'89\'82\'cc\'88\'da\'90\'41
\f1 \
Dave Zarzycki\
XFree86 4.0
\f0 \'82\'f0 Darwin 1.0 \'82\'c9\'88\'da\'90\'41
\f1 \
Torrey T. Lyons\
XFree86 4.0.2
\f0 \'83\'76\'83\'8d\'83\'57\'83\'46\'83\'4e\'83\'67\'82\'d6\'82\'cc\'93\'9d\'8d\'87}

View File

@@ -1,72 +0,0 @@
{
IBClasses = (
{
ACTIONS = {showHelp = id; };
CLASS = FirstResponder;
LANGUAGE = ObjC;
SUPERCLASS = NSObject;
},
{
ACTIONS = {close = id; pickFile = id; saveChanges = id; setKey = id; };
CLASS = Preferences;
LANGUAGE = ObjC;
OUTLETS = {
addToPathButton = id;
addToPathField = id;
button2ModifiersMatrix = id;
button3ModifiersMatrix = id;
depthButton = id;
displayField = id;
dockSwitchButton = id;
fakeButton = id;
keymapFileField = id;
modeMatrix = id;
modeWindowButton = id;
mouseAccelChangeButton = id;
startupHelpButton = id;
switchKeyButton = id;
systemBeepButton = id;
useDefaultShellMatrix = id;
useOtherShellField = id;
useXineramaButton = id;
window = id;
};
SUPERCLASS = NSObject;
},
{
CLASS = XApplication;
LANGUAGE = ObjC;
OUTLETS = {preferences = id; xserver = id; };
SUPERCLASS = NSApplication;
},
{
ACTIONS = {
bringAllToFront = id;
closeHelpAndShow = id;
itemSelected = id;
nextWindow = id;
previousWindow = id;
showAction = id;
showSwitchPanel = id;
startFullScreen = id;
startRootless = id;
};
CLASS = XServer;
LANGUAGE = ObjC;
OUTLETS = {
dockMenu = NSMenu;
helpWindow = NSWindow;
modeWindow = NSWindow;
startFullScreenButton = NSButton;
startRootlessButton = NSButton;
startupHelpButton = NSButton;
startupModeButton = NSButton;
switchWindow = NSPanel;
windowMenu = NSMenu;
windowSeparator = NSMenuItem;
};
SUPERCLASS = NSObject;
}
);
IBVersion = 1;
}

View File

@@ -1,37 +0,0 @@
BINDIR = ${bindir}
include $(top_srcdir)/cpprules.in
XINITDIR = $(libdir)/X11/xinit
XDEFS = \
-DX_VERSION="$(PLIST_VERSION_STRING)" \
-DX_PRE_RELEASE="$(PRE)" \
-DX_REL_DATE="$(XORG_DATE)" \
-DX_VENDOR_NAME="$(VENDOR_STRING)" \
-DX_VENDOR_LINK="$(PLIST_VENDOR_WEB)"
resourcesdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app/Contents/Resources
Japaneselprojdir = $(resourcesdir)/Japanese.lproj
Japaneselproj_DATA = \
XDarwinHelp.html \
InfoPlist.strings \
Credits.rtf Localizable.strings
Japaneselprojnibdir = $(Japaneselprojdir)/MainMenu.nib
Japaneselprojnib_DATA = MainMenu.nib/classes.nib MainMenu.nib/objects.nib
InfoPlist.strings: $(srcdir)/../English.lproj/InfoPlist.strings.cpp
$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) | $(SED) -e's/__quote__/"/g' > $@
XDarwinHelp.html: XDarwinHelp.html.cpp
$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) > $@
CLEANFILES = XDarwinHelp.html InfoPlist.strings
EXTRA_DIST = \
Credits.rtf Localizable.strings \
Localizable.strings \
MainMenu.nib/classes.nib \
MainMenu.nib/objects.nib \
XDarwinHelp.html.cpp

View File

@@ -1,141 +0,0 @@
<!-- $XFree86: xc/programs/Xserver/hw/darwin/bundle/Japanese.lproj/XDarwinHelp.html.cpp,v 1.4 2001/11/27 07:27:46 torrey Exp $ -->
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=EUC-JP">
<title>
XDarwin Help</title></head>
<body>
<center>
<h1>XDarwin X Server for Mac OS X</h1>
X_VENDOR_NAME X_VERSION<br>
Release Date: X_REL_DATE
</center>
<h2><EFBFBD>ܼ<EFBFBD></h2>
<ol>
<li><A HREF="#notice"><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><EFBFBD><EFBFBD></A></li>
<li><A HREF="#usage"><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ</A></li>
<li><A HREF="#path"><EFBFBD>ѥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></A></li>
<li><A HREF="#prefs"><EFBFBD>Ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></A></li>
<li><A HREF="#license"><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></A></li>
</ol>
<center>
<h2><a NAME="notice"><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><EFBFBD><EFBFBD></a></h2>
</center>
<blockquote>
#if X_PRE_RELEASE
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϡ<EFBFBD>XDarwin <EFBFBD>Υץ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD>ݡ<EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>Х<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѥå<EFBFBD><EFBFBD><EFBFBD> SourceForge <EFBFBD><EFBFBD> <A HREF="http://sourceforge.net/projects/xonx/">XonX <EFBFBD>ץ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥڡ<EFBFBD><EFBFBD><EFBFBD></A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ф<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>ץ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΥХ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𤹤<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD><A HREF="http://sourceforge.net/projects/xonx/">XonX</A> <EFBFBD>ץ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥڡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD> X_VENDOR_LINK<EFBFBD>Ǻǿ<EFBFBD><EFBFBD>ǤΥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>å<EFBFBD><EFBFBD>򤷤Ʋ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#else
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD> 6 -12 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Τ<EFBFBD><EFBFBD>Τ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD>Ϥ<EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD>Υϡ<EFBFBD><EFBFBD>ɥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Τʤ<EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𤹤<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD>ƤߤƤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>Х<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѥå<EFBFBD><EFBFBD><EFBFBD> SourceForge <EFBFBD><EFBFBD> <A HREF="http://sourceforge.net/projects/xonx/">XonX <EFBFBD>ץ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥڡ<EFBFBD><EFBFBD><EFBFBD></A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ф<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#endif
</blockquote>
<blockquote>
<EFBFBD>ܥ<EFBFBD><EFBFBD>եȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϡ<EFBFBD><A HREF="#license">MIT X11/X Consortium License</A> <EFBFBD>ξ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><EFBFBD>Ť<EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD>ݾڤǡ<EFBFBD><EFBFBD>֤<EFBFBD><EFBFBD>Τޤޡפη<EFBFBD><EFBFBD>Ƕ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѥˤʤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD><A HREF="#license"><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󥹾<EFBFBD><EFBFBD><EFBFBD></A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɤ߲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
</blockquote>
<h2><a NAME="usage"><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ</a></h2>
<p>XDarwin <EFBFBD>ϡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>۲<EFBFBD>ǽ<EFBFBD>ʥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ץ󥽡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <a HREF="http://www.x.org/">X Window System</a> <EFBFBD>Τ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> X <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD>μ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΥС<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> XDarwin <EFBFBD><EFBFBD> X_VENDOR_LINK <EFBFBD>ˤ<EFBFBD><EFBFBD>äƺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>XDarwin <EFBFBD>ϡ<EFBFBD>Mac OS X <EFBFBD><EFBFBD><EFBFBD>ǥե<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɤޤ<EFBFBD><EFBFBD>ϥ<EFBFBD>ȥ<EFBFBD><EFBFBD>ɤ<EFBFBD>ư<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD></p>
<p><EFBFBD>ե<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɤǤϡ<EFBFBD>X Window System <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƥ<EFBFBD><EFBFBD>֤ʻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̤<EFBFBD><EFBFBD><EFBFBD>ͭ<EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD>ϡ<EFBFBD>Command-Option-A <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򲡤<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥˤ<EFBFBD><EFBFBD>ä<EFBFBD> Mac OS X <EFBFBD>ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥåפ<EFBFBD><EFBFBD>ڤ<EFBFBD><EFBFBD>ؤ<EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ߹<EFBFBD><EFBFBD><EFBFBD>ϡ<EFBFBD><EFBFBD>Ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD>ǽ<EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD>
Mac OS X <EFBFBD>ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥåפ<EFBFBD><EFBFBD><EFBFBD> X Window System <EFBFBD><EFBFBD><EFBFBD>ڤ<EFBFBD><EFBFBD>ؤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϡ<EFBFBD><EFBFBD>ɥå<EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>줿 XDarwin <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򥯥<EFBFBD><EFBFBD>å<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʋ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>ʴĶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǡ<EFBFBD><EFBFBD>ե<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƥ<EFBFBD><EFBFBD>󥰡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɥ<EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>줿 XDarwin <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򥯥<EFBFBD><EFBFBD>å<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></p>
<p><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD>ɤǤϡ<EFBFBD>X Window System <EFBFBD><EFBFBD> Aqua <EFBFBD>ϲ<EFBFBD><EFBFBD>̤<EFBFBD><EFBFBD><EFBFBD>ͭ<EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
X11 <EFBFBD><EFBFBD>ɽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɥ<EFBFBD><EFBFBD>ϲ<EFBFBD><EFBFBD>̤Υ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD>¾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƤΥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
Aqua <EFBFBD><EFBFBD><EFBFBD>ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥåפ<EFBFBD><EFBFBD>طʤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Τǡ<EFBFBD>X11 <EFBFBD>Υ<EFBFBD>ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɥ<EFBFBD><EFBFBD>ϥ<EFBFBD>ȥ<EFBFBD><EFBFBD>ɤǤ<EFBFBD>ɽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></p>
<h3>ʣ<EFBFBD><EFBFBD><EFBFBD>ܥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υ<EFBFBD><EFBFBD>ߥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></h3>
<p>¿<EFBFBD><EFBFBD><EFBFBD><EFBFBD> X11 <EFBFBD><EFBFBD><EFBFBD>ץ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϡ<EFBFBD>3 <EFBFBD>ܥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɬ<EFBFBD>פȤ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD>ϥޥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>å<EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD><EFBFBD><EFBFBD>ˤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĥ<EFBFBD><EFBFBD>ν<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򲡤<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥˤ<EFBFBD><EFBFBD>äơ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĤΥܥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 3 <EFBFBD>ܥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>򥨥ߥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󤹤<EFBFBD>Ȥ<EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϡ<EFBFBD><EFBFBD>Ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ρְ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>פΡ<EFBFBD>ʣ<EFBFBD><EFBFBD><EFBFBD>ܥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υ<EFBFBD><EFBFBD>ߥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ץ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>ǥե<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȤǤϡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͭ<EFBFBD><EFBFBD><EFBFBD>ǡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޥ<EFBFBD><EFBFBD>ɥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>򲡤<EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>򥯥<EFBFBD><EFBFBD>å<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD> 2 <EFBFBD>ޥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>å<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ץ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>󥭡<EFBFBD><EFBFBD>򲡤<EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>å<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD> 3 <EFBFBD>ޥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>å<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD>ϡ<EFBFBD><EFBFBD>Ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǥܥ<EFBFBD><EFBFBD><EFBFBD> 2 <EFBFBD><EFBFBD> 3 <EFBFBD>򥨥ߥ<EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>뤿<EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><EFBFBD>Ѥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȹ<EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> xmodmap <EFBFBD><EFBFBD>¾<EFBFBD>Υ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƤƤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥʣ<EFBFBD><EFBFBD><EFBFBD>ܥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υ<EFBFBD><EFBFBD>ߥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υ<EFBFBD><EFBFBD>ޥ<EFBFBD><EFBFBD>ɥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ץ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>󥭡<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Фʤ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></p>
<h2><a NAME="path"><EFBFBD>ѥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></a></h2>
<p><EFBFBD>ѥ<EFBFBD><EFBFBD>ϡ<EFBFBD> <EFBFBD>¹Բ<EFBFBD>ǽ<EFBFBD>ʥ<EFBFBD><EFBFBD>ޥ<EFBFBD><EFBFBD>ɤ򸡺<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǥ<EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD>Υ<EFBFBD>ȤǤ<EFBFBD><EFBFBD><EFBFBD>
X11 <EFBFBD>Х<EFBFBD><EFBFBD>ʥ<EFBFBD><EFBFBD>ϡ<EFBFBD><code>/usr/X11R6/bin</code> <EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD>Ϥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѥ<EFBFBD><EFBFBD>˲ä<EFBFBD><EFBFBD><EFBFBD>ɬ<EFBFBD>פ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
XDarwin <EFBFBD>ϡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǥե<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȤǹԤ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޥ<EFBFBD><EFBFBD>ɥ<EFBFBD>󡦥<EFBFBD><EFBFBD>ץ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򥤥󥹥ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɲäΥǥ<EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ä<EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD></p>
<p><EFBFBD>и<EFBFBD>˭<EFBFBD><EFBFBD><EFBFBD>ʥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥ˼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Τ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ե<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѥ<EFBFBD><EFBFBD>ƥѥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ξ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD>ϴĶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> XDarwin <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD>Υѥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
XDarwin <EFBFBD>ϡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υǥե<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȤΥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󥷥<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǻǽ<EFBFBD><EFBFBD><EFBFBD> X11 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ򳫻Ϥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>ʴĶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>ѥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>ϡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѥ<EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˰<EFBFBD>¸<EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υޥ˥<EFBFBD><EFBFBD><EFBFBD>ڡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ˵<EFBFBD><EFBFBD>ܤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
<p><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD>ϥɥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X11 <EFBFBD>Υޥ˥<EFBFBD><EFBFBD><EFBFBD>ڡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>򸡺<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υ<EFBFBD>Ȥ<EFBFBD><EFBFBD>ɲä<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼפ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
X11 <EFBFBD>Υޥ˥<EFBFBD><EFBFBD><EFBFBD>ڡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <code>/usr/X11R6/man</code> <EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <code>MANPATH</code> <EFBFBD>Ķ<EFBFBD><EFBFBD>ѿ<EFBFBD><EFBFBD>ϸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǥ<EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD>Υ<EFBFBD>Ȥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD></p>
<h2><a NAME="prefs"><EFBFBD>Ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></a></h2>
<p><EFBFBD><EFBFBD>XDarwin<EFBFBD>ץ<EFBFBD><EFBFBD>˥<EFBFBD>ΡִĶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>...<EFBFBD>ץ<EFBFBD><EFBFBD>˥<EFBFBD><EFBFBD><EFBFBD>ܤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѥͥ<EFBFBD><EFBFBD>ǡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĥ<EFBFBD><EFBFBD>Υ<EFBFBD><EFBFBD>ץ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>ֵ<EFBFBD>ư<EFBFBD><EFBFBD><EFBFBD>ץ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>פ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥϡ<EFBFBD>XDarwin <EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>ư<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD>ͭ<EFBFBD><EFBFBD><EFBFBD>Ȥʤ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
¾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƤΥ<EFBFBD><EFBFBD>ץ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥϡ<EFBFBD>ľ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͭ<EFBFBD><EFBFBD><EFBFBD>Ȥʤ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>ʲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υ<EFBFBD><EFBFBD>ץ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤĤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD>:</p>
<h3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></h3>
<ul>
<li><b>X11 <EFBFBD>ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƥ<EFBFBD><EFBFBD>Υӡ<EFBFBD><EFBFBD>ײ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѥ<EFBFBD><EFBFBD><EFBFBD>:</b> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ξ<EFBFBD><EFBFBD>Mac OS X <EFBFBD>Υӡ<EFBFBD><EFBFBD>ײ<EFBFBD><EFBFBD><EFBFBD> X11 <EFBFBD>Υ٥<EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>ƻ<EFBFBD><EFBFBD>Ѥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>դξ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʥǥե<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡˡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ץ<EFBFBD> <EFBFBD>ȡ<EFBFBD><EFBFBD>󤬻Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD></li>
<li><b>X11 <EFBFBD>Υޥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͭ<EFBFBD><EFBFBD><EFBFBD>ˤ<EFBFBD><EFBFBD><EFBFBD>:</b> ɸ<EFBFBD><EFBFBD>Ū<EFBFBD><EFBFBD> X Window System <EFBFBD>μ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥϡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɥ<EFBFBD><EFBFBD>ޥ͡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϥޥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>β<EFBFBD>®<EFBFBD>٤<EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>ޥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>β<EFBFBD>®<EFBFBD>٤<EFBFBD> Mac OS X <EFBFBD>Υ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƥ<EFBFBD><EFBFBD>Ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> X <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɥ<EFBFBD><EFBFBD>ޥ͡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۤʤ<EFBFBD><EFBFBD>ͤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>򾷤<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򤱤뤿<EFBFBD><EFBFBD>ǥե<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȤǤ<EFBFBD> X11 <EFBFBD>Υޥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͭ<EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></li>
<li><b>ʣ<EFBFBD><EFBFBD><EFBFBD>ܥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υ<EFBFBD><EFBFBD>ߥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:</b> <a HREF="#usage"><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ</a><EFBFBD>򻲾Ȥ<EFBFBD><EFBFBD>Ʋ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ξ<EFBFBD><EFBFBD><EFBFBD>ޥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2 <EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 3 <EFBFBD>Υޥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>򥨥ߥ<EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>򤷤<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD></li>
</ul>
<h3><EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD><EFBFBD>ץ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></h3>
<ul>
<li><b><EFBFBD><EFBFBD><EFBFBD>̥<EFBFBD><EFBFBD>:</b> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ե<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɤޤ<EFBFBD><EFBFBD>ϥ<EFBFBD>ȥ<EFBFBD><EFBFBD>ɤΤɤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǻ<EFBFBD><EFBFBD><EFBFBD>줿<EFBFBD><EFBFBD>ɤ<EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD></li>
<li><b><EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD><EFBFBD>˥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѥͥ<EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:</b> <EFBFBD>ǥե<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȤǤϡ<EFBFBD>XDarwin <EFBFBD>ε<EFBFBD>ư<EFBFBD><EFBFBD><EFBFBD>˥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ե<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɤޤ<EFBFBD><EFBFBD>ϥ<EFBFBD>ȥ<EFBFBD><EFBFBD>ɤΤɤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򤹤<EFBFBD><EFBFBD>ѥͥ<EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υ<EFBFBD><EFBFBD>ץ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>󤬥<EFBFBD><EFBFBD>դξ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̥<EFBFBD>ɤǻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɤǵ<EFBFBD>ư<EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD></li>
<li><b>X11 <EFBFBD>ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ץ<EFBFBD>ֹ<EFBFBD>:</b> X11<EFBFBD>ϡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĤΥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̡<EFBFBD><EFBFBD><EFBFBD> X <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD><EFBFBD><EFBFBD>Υǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ץ<EFBFBD><EFBFBD>¸<EFBFBD>ߤ<EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> X <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD><EFBFBD><EFBFBD>˼¹Ԥ<EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>XDarwin <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ץ<EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD></li>
<li><b>Xinerama <EFBFBD>ޥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˥<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD><EFBFBD>Ȥ<EFBFBD>ͭ<EFBFBD><EFBFBD><EFBFBD>ˤ<EFBFBD><EFBFBD><EFBFBD>:</b> XDarwin <EFBFBD>ϡ<EFBFBD>Xinerama <EFBFBD>ޥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˥<EFBFBD><EFBFBD>򥵥ݡ<EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƤΥ<EFBFBD><EFBFBD>˥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĥ<EFBFBD><EFBFBD><EFBFBD>ʲ<EFBFBD><EFBFBD>̤ΰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥߤʤ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD>Ϥ<EFBFBD><EFBFBD>Υ<EFBFBD><EFBFBD>ץ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Xinerama <EFBFBD><EFBFBD>̵<EFBFBD><EFBFBD><EFBFBD>ˤ<EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> XDarwin <EFBFBD>Ϥ<EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD><EFBFBD><EFBFBD>Υ<EFBFBD><EFBFBD>˥<EFBFBD><EFBFBD>򰷤<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD>󡣤<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĤΥ<EFBFBD><EFBFBD>˥<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD>С<EFBFBD>Xinerama <EFBFBD>ϼ<EFBFBD>ưŪ<EFBFBD><EFBFBD>̵<EFBFBD><EFBFBD><EFBFBD>Ȥʤ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD></li>
<li><b><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޥåԥ󥰥ե<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:</b> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޥåԥ󥰥ե<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>ư<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɤ߹<EFBFBD><EFBFBD>ޤX11 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޥåפ<EFBFBD><EFBFBD>Ѵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>¾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޥåԥ󥰥ե<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <code>/System/Library/Keyboards</code> <EFBFBD>ˤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޥåԥ󥰤<EFBFBD> Japanese <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򤹤<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD>ȯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ξ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> USA <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򤷤<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ~/.Xmodmap <EFBFBD><EFBFBD>Ŭ<EFBFBD>Ѥ<EFBFBD><EFBFBD>Ʋ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></li>
<li><b><EFBFBD>ǽ<EFBFBD><EFBFBD><EFBFBD> X11 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥε<EFBFBD>ư:</b> XDarwin <EFBFBD><EFBFBD> Finder<EFBFBD><EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɥ<EFBFBD><EFBFBD>ޥ͡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> X <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥε<EFBFBD>ư<EFBFBD><EFBFBD> <code>xinit</code> <EFBFBD><EFBFBD><EFBFBD>¹Ԥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾܺ٤<EFBFBD> "<code>man xinit</code>" <EFBFBD>򻲾Ȥ<EFBFBD><EFBFBD>Ʋ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>XDarwin <EFBFBD><EFBFBD> <code>xinit</code> <EFBFBD><EFBFBD><EFBFBD>¹Ԥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>줿<EFBFBD>ǥ<EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υѥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɲä<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǥե<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȤǤ<EFBFBD> <code>/usr/X11R6/bin</code> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɲä<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>¾<EFBFBD>Υǥ<EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɲä<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD><EFBFBD>ڤäƻ<EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ե<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɤ߹<EFBFBD><EFBFBD>ि<EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>X <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥϥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υǥե<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󥷥<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD>ư<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>ɬ<EFBFBD>פǤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD></li>
</ul>
<h3><EFBFBD>ե<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></h3>
<ul>
<li><b><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܥ<EFBFBD><EFBFBD><EFBFBD>:</b> X11 <EFBFBD><EFBFBD> Aqua <EFBFBD><EFBFBD><EFBFBD>ڤ<EFBFBD><EFBFBD>ؤ<EFBFBD><EFBFBD>뤿<EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><EFBFBD>Ѥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ߹<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>ܥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>򥯥<EFBFBD><EFBFBD>å<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ơ<EFBFBD>Ǥ<EFBFBD>դο<EFBFBD><EFBFBD>ν<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>³<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̾<EFBFBD><EFBFBD>Υ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>򲡤<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD></li>
<li><b><EFBFBD>ɥå<EFBFBD><EFBFBD>Υ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>å<EFBFBD><EFBFBD><EFBFBD> X11 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:</b> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ξ<EFBFBD><EFBFBD><EFBFBD>ɥå<EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>줿 XDarwin <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>å<EFBFBD><EFBFBD><EFBFBD> X11 <EFBFBD>ؤ<EFBFBD><EFBFBD>ڤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǽ<EFBFBD>Ȥʤ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>Mac OS X <EFBFBD>Τ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĥ<EFBFBD><EFBFBD>ΥС<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥϡ<EFBFBD><EFBFBD>ɥå<EFBFBD><EFBFBD>Υ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>å<EFBFBD><EFBFBD><EFBFBD> Aqua <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ä<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD></li>
<li><b><EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD><EFBFBD>˥إ<EFBFBD><EFBFBD>פ<EFBFBD>ɽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:</b> XDarwin <EFBFBD><EFBFBD><EFBFBD>ե<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɤǵ<EFBFBD>ư<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ץ<EFBFBD><EFBFBD>å<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD></li>
<li><b><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:</b> <EFBFBD>ե<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɤǤϡ<EFBFBD>X11 <EFBFBD>ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ץ<EFBFBD><EFBFBD> Aqua <EFBFBD>Ȱۤʤ<EFBFBD><EFBFBD><EFBFBD>٤<EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD>פ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>줿<EFBFBD><EFBFBD><EFBFBD>XDarwin <EFBFBD><EFBFBD> Aqua <EFBFBD>ˤ<EFBFBD><EFBFBD>äƻ<EFBFBD><EFBFBD>Ѥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>٤<EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʳ<EFBFBD><EFBFBD><EFBFBD> 8<EFBFBD><EFBFBD>15 <EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>24 <EFBFBD>ӥåȤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD></li>
</ul>
<h2>
<a NAME="license"><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></a>
</h2>
XDarwin <EFBFBD>μ<EFBFBD><EFBFBD>פʥ<EFBFBD><EFBFBD><EFBFBD>󥹤<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ū<EFBFBD><EFBFBD> MIT X11/X Consortium License <EFBFBD>˴<EFBFBD><EFBFBD>Ť<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD>Ϻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɤޤ<EFBFBD><EFBFBD>ϥХ<EFBFBD><EFBFBD>ʥ<EFBFBD><EFBFBD>ˡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Τޤ޻Ĥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>׵<EFBFBD><EFBFBD><EFBFBD>ʳ<EFBFBD><EFBFBD>ξ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>¿<EFBFBD><EFBFBD><EFBFBD>ξ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɤΰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>򥫥С<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɲä<EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD><EFBFBD><EFBFBD>Τ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɤ򻲾Ȥ<EFBFBD><EFBFBD>Ʋ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<H3>
<A NAME="3"></A>
X Consortium License</H3>
<p>Copyright (C) 1996 X Consortium</p>
<p>Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without
limitation the rights to use, copy, modify, merge, publish, distribute,
sublicense, and/or sell copies of the Software, and to permit persons to
whom the Software is furnished to do so, subject to the following conditions:</p>
<p>The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.</p>
<p>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 X CONSORTIUM 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.</p>
<p>Except as contained in this notice, the name of the X Consortium 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 X Consortium.</p>
<p>X Window System is a trademark of X Consortium, Inc.</p>
</body>
</html>

View File

@@ -1,38 +0,0 @@
BINDIR = ${bindir}
include $(top_srcdir)/cpprules.in
XINITDIR = $(libdir)/X11/xinit
XDEFS = \
-DX_VERSION="$(PLIST_VERSION_STRING)" \
-DX_PRE_RELEASE="$(PRE)" \
-DX_REL_DATE="$(XORG_DATE)" \
-DX_VENDOR_NAME="$(VENDOR_STRING)" \
-DX_VENDOR_LINK="$(PLIST_VENDOR_WEB)"
SUBDIRS = English.lproj Dutch.lproj French.lproj German.lproj Japanese.lproj \
ko.lproj Portuguese.lproj Spanish.lproj Swedish.lproj
bin_SCRIPTS = startXClients
startXClients: $(srcdir)/startXClients.cpp
$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) -DXINITDIR=$(XINITDIR) -DXBINDIR=$(BINDIR) $< | $(CPP_SED_MAGIC) > $@
-chmod 755 startXClients
contentsdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app/Contents
resourcesdir = $(contentsdir)/Resources
contents_DATA = Info.plist
resources_DATA = XDarwin.icns startXClients
install-data-hook:
chmod 755 $(DESTDIR)$(resourcesdir)/startXClients
echo "APPL????" > $(DESTDIR)$(contentsdir)/PkgInfo
touch $(DESTDIR)@APPLE_APPLICATIONS_DIR@/XDarwin.app
uninstall-hook:
rm -rf $(DESTDIR)$(contentsdir)/PkgInfo
CLEANFILES = startXClients
EXTRA_DIST = \
XDarwin.icns \
Info.plist

View File

@@ -1,171 +0,0 @@
{\rtf1\mac\ansicpg10000\cocoartf102
{\fonttbl\f0\fswiss\fcharset77 Helvetica;\f1\fswiss\fcharset77 Helvetica-Bold;\f2\fswiss\fcharset77 Helvetica-Oblique;
}
{\colortbl;\red255\green255\blue255;}
\vieww5140\viewh4980\viewkind0
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
\f0\fs24 \cf0 This product includes software developed by The XFree86 Project, Inc (http://www.xfree86.org/) and its contributors. The following people contributed to Darwin/Mac OS X support.\
\
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\f1\b \cf0 Contributors to Xorg Foundation Release:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Kaleb KEITHLEY\
\f2\i Working left and right Ctrl, Alt (Option), Meta (Command) and Shift keys.
\f0\i0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f1\b \cf0 \
\f1\b \cf0 Contributors to XFree86 4.4:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 John Harper\
\f2\i Rootless acceleration and Apple-WM extension
\f0\i0 \
Torrey T. Lyons\
\f2\i Project Lead
\f0\i0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f1\b \cf0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\cf0 Contribuidores do XonX ao XFree86 4.3:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Fabr\'92cio Luis de Castro
\f1\b \
\f2\i\b0 Localiza\'8d\'8bo para o Portugu\'90s\
\f0\i0 Michael Oland\
\f2\i New XDarwin icon
\f1\i0\b \
\
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\cf0 Contribuidores do XonX ao XFree86 4.2:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Rob Braun\
\f2\i Suporte para o Darwin x86\
\f0\i0 Pablo Di Noto\
\f2\i Localiza\'8d\'8bo para o Espanhol
\f0\i0 \
Paul Edens\
\f2\i Localiza\'8d\'8bo para o Holand\'90s
\f0\i0 \
Kyunghwan Kim\
\f2\i Localiza\'8d\'8bo para o Coreano
\f0\i0 \
Mario Klebsch\
\f2\i Suporte para teclados Non-US
\f0\i0 \
Torrey T. Lyons\
\f2\i L\'92der de Projeto
\f0\i0 \
Andreas Monitzer\
\f2\i Localiza\'8d\'8bo para o Alem\'8bo
\f0\i0 \
Patrik Montgomery\
\f2\i Localiza\'8d\'8bo para o Sueco
\f0\i0 \
Greg Parker\
\f2\i Suporte ao modo Compartilhado (Rootless)
\f0\i0 \
Toshimitsu Tanaka\
\f2\i Localiza\'8d\'8bo para o Japon\'90s
\f0\i0 \
Olivier Verdier\
\f2\i Localiza\'8d\'8bo para o Fran\'8d\'90s
\f0\i0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f1\b \cf0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\cf0 Agradecimentos Especiais:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Devin Poolman and Zero G Software, Inc.\
\f2\i Instalador
\f0\i0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f1\b \cf0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\cf0 Membros do Time XonX\
Contribuindo com o XFree86 4.1:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Rob Braun\
\f2\i Suporte ao Darwin x86\
\f0\i0 Torrey T. Lyons\
\f2\i L\'92der de Projeto
\f0\i0 \
Andreas Monitzer\
\f2\i Vers\'8bo Cocoa da interface XDarwin
\f0\i0 \
Greg Parker\
\f2\i Implementa\'8d\'8bo Original
\f0\i0
\f2\i ao Quartz \
\f0\i0 Christoph Pfisterer\
\f2\i Bibliotecas Din\'89micas Compartilhadas
\f0\i0 \
Toshimitsu Tanaka\
\f2\i Localiza\'8d\'8bo para o Japon\'90s
\f0\i0 \
\
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\f1\b \cf0 Agradecimento Especial:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Tiago Ribeiro\
\f2\i \'eacone do XDarwin
\f0\i0 \
\
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\f1\b \cf0 Hist\'97rico:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 John Carmack\
\f2\i Suporte Original do XFree86 no Mac OS X Server
\f0\i0 \
Dave Zarzycki\
\f2\i Suporte ao
\f0\i0
\f2\i XFree86 4.0 no Darwin 1.0
\f0\i0 \
Torrey T. Lyons\
\f2\i Integra\'8d\'8bo dentro do Projeto XFree86 na vers\'8bo 4.0.2}

View File

@@ -1,72 +0,0 @@
{
IBClasses = (
{
ACTIONS = {showHelp = id; };
CLASS = FirstResponder;
LANGUAGE = ObjC;
SUPERCLASS = NSObject;
},
{
ACTIONS = {close = id; pickFile = id; saveChanges = id; setKey = id; };
CLASS = Preferences;
LANGUAGE = ObjC;
OUTLETS = {
addToPathButton = id;
addToPathField = id;
button2ModifiersMatrix = id;
button3ModifiersMatrix = id;
depthButton = id;
displayField = id;
dockSwitchButton = id;
fakeButton = id;
keymapFileField = id;
modeMatrix = id;
modeWindowButton = id;
mouseAccelChangeButton = id;
startupHelpButton = id;
switchKeyButton = id;
systemBeepButton = id;
useDefaultShellMatrix = id;
useOtherShellField = id;
useXineramaButton = id;
window = id;
};
SUPERCLASS = NSObject;
},
{
CLASS = XApplication;
LANGUAGE = ObjC;
OUTLETS = {preferences = id; xserver = id; };
SUPERCLASS = NSApplication;
},
{
ACTIONS = {
bringAllToFront = id;
closeHelpAndShow = id;
itemSelected = id;
nextWindow = id;
previousWindow = id;
showAction = id;
showSwitchPanel = id;
startFullScreen = id;
startRootless = id;
};
CLASS = XServer;
LANGUAGE = ObjC;
OUTLETS = {
dockMenu = NSMenu;
helpWindow = NSWindow;
modeWindow = NSWindow;
startFullScreenButton = NSButton;
startRootlessButton = NSButton;
startupHelpButton = NSButton;
startupModeButton = NSButton;
switchWindow = NSPanel;
windowMenu = NSMenu;
windowSeparator = NSMenuItem;
};
SUPERCLASS = NSObject;
}
);
IBVersion = 1;
}

View File

@@ -1,36 +0,0 @@
BINDIR = ${bindir}
include $(top_srcdir)/cpprules.in
XINITDIR = $(libdir)/X11/xinit
XDEFS = \
-DX_VERSION="$(PLIST_VERSION_STRING)" \
-DX_PRE_RELEASE="$(PRE)" \
-DX_REL_DATE="$(XORG_DATE)" \
-DX_VENDOR_NAME="$(VENDOR_STRING)" \
-DX_VENDOR_LINK="$(PLIST_VENDOR_WEB)"
resourcesdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app/Contents/Resources
Portugueselprojdir = $(resourcesdir)/Portuguese.lproj
Portugueselproj_DATA = \
XDarwinHelp.html \
InfoPlist.strings \
Credits.rtf Localizable.strings
Portugueselprojnibdir = $(Portugueselprojdir)/MainMenu.nib
Portugueselprojnib_DATA = MainMenu.nib/classes.nib MainMenu.nib/objects.nib
InfoPlist.strings: $(srcdir)/../English.lproj/InfoPlist.strings.cpp
$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) | $(SED) -e's/__quote__/"/g' > $@
XDarwinHelp.html: XDarwinHelp.html.cpp
$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) > $@
CLEANFILES = XDarwinHelp.html InfoPlist.strings
EXTRA_DIST = \
Credits.rtf Localizable.strings \
Localizable.strings \
MainMenu.nib/classes.nib \
MainMenu.nib/objects.nib \
XDarwinHelp.html.cpp

View File

@@ -1,209 +0,0 @@
<head>
<title>XDarwin Help</title>
</head>
<center>
<h1>XDarwin X Server para Mac OS X</h1>
X_VENDOR_NAME X_VERSION<br>
Release Date: X_REL_DATE
</center>
<h2>&Iacute;ndice</h2>
<ol>
<li><A HREF="#notice">Notas importantes</A></li>
<li><A HREF="#usage">Uso</A></li>
<li><A HREF="#path">Ajustando seu Path</A></li>
<li><A HREF="#prefs">Prefer&ecirc;ncias do usu&aacute;rio</A></li>
<li><A HREF="#license">Licen&ccedil;a</A></li>
</ol>
<center>
<h2><a NAME="notice">Notas importantes</a></h2>
</center>
<blockquote>
#if PRE_RELEASE
Essa &eacute; uma vers&atilde;o pr&eacute;-lancamento
do XDarwin, e ela n&atilde;o &eacute; suportada de nenhuma forma. Bugs podem
ser reportados e corre&ccedil;&otilde;es podem ser enviadas para <A HREF="http://sourceforge.net/projects/xonx/">P&aacute;gina
do projeto XonX</A> no SourceForge. Antes de informar bugs em vers&otilde;es
pr&eacute;-lancamento, por favor verifique a <EFBFBD>ltima vers&atilde;o em <A HREF="http://sourceforge.net/projects/xonx/">XonX</A>
or X_VENDOR_LINK.
#else
Se o servidor &eacute; mais velho que 6-12 semanas, ou seu hardware &eacute;
mais novo que a data acima, procure por uma nova vers&atilde;o antes de informar
problemas. Bugs podem ser reportados e corre&ccedil;&otilde;es podem ser enviadas
para a <A HREF="http://sourceforge.net/projects/xonx/">P&aacute;gina do projeto
XonX</A> na SourceForge.
#endif
</blockquote>
<blockquote> Este software &eacute; distribu&iacute;do sob os termos da <a href="#license">licen&ccedil;a
MIT X11 / X Consortium</a> e &eacute; provido, sem nenhuma garantia. Por favor
leia a <a href="#license">Licen&ccedil;a</a> antes de come&ccedil;ar a usar
o programa.</blockquote>
<h2><a NAME="usage">Uso</a></h2>
<p>O XDarwin &eacute; uma X server &quot;open-source&quot; livremente
redistribu&iacute;da do <a HREF
="http://www.x.org/">Sistema X Window</a>. This version of XDarwin was produced by the X_VENDOR_LINK.
XDarwin roda sobre Mac OS X no modo Tela Cheia ou no modo Compartilhado.</p>
<p>No modo Tela Cheia, quando o sistema X window est&aacute; ativo, ele ocupa
a tela toda. Voc&ecirc; pode voltar ao desktop do Mac OS X clicando Command-Option-A.
Essa combina&ccedil;&atilde;o de teclas pode ser mudada nas prefer&ecirc;ncias.
Pelo desktop Mac OS X, clique no &iacute;cone XDarwin no Dock para voltar ao
sistema X window. (Voc&ecirc; pode mudar esse comportamento nas prefer&ecirc;ncias
da&iacute; voc&ecirc; dever&aacute; clicar no &iacute;cone XDarwin na janela
flutuante que aparecer&aacute;.)</p>
<p>No modo Compartilhado, o sistema X window e Aqua dividem a mesma tela. A janela
raiz da tela X11 est&aacute; do tamanho da tela (monitor) e cont&eacute;m todas
as outras janelas. A janela raiz do X11 no modo compartilhado n&atilde;o &eacute;
mostrada pois o Aqua controla o fundo de tela.</p>
<h3>Emula&ccedil;&atilde;o de Mouse Multi-Bot&otilde;es</h3>
<p>Muitas aplica&ccedil;&otilde;es X11 insistem em usar um mouse de 3 bot&otilde;es.
Voc&ecirc; pode emular um mouse de 3 bot&otilde;es com um simples bot&atilde;o,
mantendo pressionando teclas modificadoras enquanto voc&ecirc; clica no bot&atilde;o
do mouse. Isto &eacute; controlado pela configura&ccedil;&atilde;o da &quot;Emula&ccedil;&atilde;o
de Mouse Multi-Bot&otilde;es&quot; da prefer&ecirc;ncia &quot;Geral&quot;. Por
padr&atilde;o, a emula&ccedil;&atilde;o est&aacute; habilitada e mantendo pressionada
a tecla Command e clicando no bot&atilde;o do mouse ele simular&aacute; o clique
no segundo bot&atilde;o do mouse. Mantendo pressionada a tecla Option e clicando
no bot&atilde;o do mouse ele simular&aacute; o terceiro bot&atilde;o. Voc&ecirc;
pode mudar a combina&ccedil;&atilde;o de teclas modificadoras para emular os
bot&otilde;es dois e tr&ecirc;s nas prefer&ecirc;ncias. Nota, se a tecla modificadora
foi mapeada para alguma outra tecla no xmodmap, voc&ecirc; ainda ter&aacute;
que usar a tecla atual especificada nas prefer&ecirc;ncias para a emula&ccedil;&atilde;o
do mouse multi-bot&otilde;es.</p>
<h2><a NAME="path">Ajustando seu Path</a></h2>
<p>Seu path &eacute; a lista de diret&oacute;rios a serem procurados por arquivos
execut&aacute;veis. O comando X11 est&aacute; localizado em <code>/usr/X11R6/bin</code>,
que precisa ser adicionado ao seu path. XDarwin faz isso para voc&ecirc; por
padr&atilde;o e pode-se tamb&eacute;m adicionar diret&oacute;rios onde voc&ecirc;
instalou aplica&ccedil;&otilde;es de linha de comando.</p>
<p>Usu&aacute;rios experientes j&aacute; ter&atilde;o configurado corretamente
seu path usando arquivos de inicializa&ccedil;&atilde;o de seu shell. Neste
caso, voc&ecirc; pode informar o XDarwin para n&atilde;o modificar seu path
nas prefer&ecirc;ncias. O XDarwin inicia o cliente inicial X11 no shell padr&atilde;o
do usu&aacute;rio corrente. (Um shell alternativo pode ser tamb&eacute;m expecificado
nas prefer&ecirc;ncias.) O modo para ajustar o path depende do shell que voc&ecirc;
est&aacute; usando. Isto &eacute; descrito na man page do seu shell.</p>
<p>Voc&ecirc; pode tamb&eacute;m querer adicionar as man pages do X11 para
a lista de p&aacute;ginas a serem procuradas quando voc&ecirc; est&aacute; procurando
por documenta&ccedil;&atilde;o. As man pages do X11 est&atilde;o localizadas
em <code>/usr/X11R6/man</code> e a vari&aacute;vel de ambiente <code>MANPATH</code>
cont&eacute;m a lista de diret&oacute;rios a buscar.</p>
<h2><a NAME="prefs">Prefer&ecirc;ncias do Usu&aacute;rio</a></h2>
<p>V&aacute;rias op&ccedil;&otilde;es podem ser ajustadas nas prefer&ecirc;ncias
do usu&aacute;rio, acess&iacute;vel pelo item &quot;Prefer&ecirc;ncias...&quot;
no menu &quot;XDarwin&quot;. As op&ccedil;&otilde;es listadas como op&ccedil;&otilde;es
de inicializa&ccedil;&atilde;o, n&atilde;o ter&atilde;o efeito at&eacute; voc&ecirc;
reiniciar o XDarwin. Todas as outras op&ccedil;&otilde;es ter&atilde;o efeito
imediatamente. V&aacute;rias das op&ccedil;&otilde;es est&atilde;o descritas
abaixo:</p>
<h3>Geral</h3>
<ul>
<li><b>Usar o Beep do Sistema para o X11: </b>Quando habilitado som de alerta
padr&atilde;o do Mac OS X ser&aacute; usado como alerta no X11. Quando desabilitado
(padr&atilde;o) um tom simples ser&aacute; usado.</li>
<li><b>Permitir o X11 mudar a acelera&ccedil;&atilde;o do mouse: </b>Por implementa&ccedil;&atilde;o
padr&atilde;o no sistema X window, o gerenciador de janelas pode mudar a acelera&ccedil;&atilde;o
do mouse. Isso pode gerar uma confus&atilde;o pois a acelera&ccedil;&atilde;o
do mouse pode ser ajustada diferentemente nas prefer&ecirc;ncias do Mac OS
X e nas prefer&ecirc;ncias do X window. Por padr&atilde;o, o X11 n&atilde;o
est&aacute; habilitado a mudar a acelera&ccedil;&atilde;o do mouse para evitar
este problema.</li>
<li><b>Emula&ccedil;&atilde;o de Mouse de Multi-Bot&otilde;es: </b>Esta op&ccedil;&atilde;o
est&aacute; escrita acima em <a href="#usage">Uso</a>. Quando a emula&ccedil;&atilde;o
est&aacute; habilitada as teclas modificadoras selecionadas tem que estar
pressionadas quando o bot&atilde;o do mouse for pressionado, para emular o
segundo e terceiro bot&otilde;es.</li>
</ul>
<h3>Inicial</h3>
<ul>
<li><b>Modo Padr&atilde;o: </b>Se o usu&aacute;rio n&atilde;o indicar qual modo
de exibi&ccedil;&atilde;o quer usar (Tela Cheia ou Compartilhado) o modo especificado
aqui ser&aacute; usado .</li>
<li><b>Mostrar o painel de escolha na inicializa&ccedil;&atilde;o: </b> Por
padr&atilde;o, uma painel &eacute; mostrado quando o XDarwin &eacute;
iniciado para permitir que o usu&aacute;rio escolha ente o modo tela cheia
ou modo compartilhado. Se esta op&ccedil;&atilde;o estiver desligada, o modo
padr&atilde;o ser&aacute; inicializado automaticamente.</li>
<li><b>N&uacute;mero do Monitor X11: </b>O X11 permite ser administrado em multiplos
monitores por servidores X separados num mesmo computador. O usu&aacute;rio
pode indicar o n&uacute;mero do monitor para o XDarwin usar se mais de um
servidor X se estiver rodando simultaneamente.</li>
<li><b>Habilitar suporte a m&uacute;ltiplos monitores pelo Xinerama: </b>o XDarwin
suporta m&uacute;ltiplos monitores com o Xinerama, que trata todos os monitores
como parte de uma grande e retangular tela. Voc&ecirc; pode desabilitar o
Xinerama com est&aacute; op&ccedil;&atilde;o, mas normalmente o XDarwin n&atilde;o
controla m&uacute;ltiplos monitores corretamente sem est&aacute; op&ccedil;&atilde;o.
Se voc&ecirc; s&oacute; tiver um monotor, Xinerama &eacute; automaticamente
desabilitado. </li>
<li><b>Arquivo de Mapa de Teclado: </b> O mapa de teclado &eacute; lido na inicializa&ccedil;&atilde;o
e traduzido para um mapa de teclado X11. Arquivos de mapa de teclado, est&atilde;o
dispon&iacute;veis numa grande variedade de l&iacute;nguas e s&atilde;o encontradas
em <code>/System/Library/Keyboards</code>.</li>
<li><b>Iniciando Clientes X11 primeiro: </b>Quando o XDrawin &eacute; inicializado
pelo Finder, ele ir&aacute; rodar o <code>xinit</code> para abrir o controlador
X window e outros clientes X. (Veja o manual "<code>man xinit</code>" para
mais informa&ccedil;&otilde;es.) Antes do XDarwin rodar o <code>xinit</code>
ele ir&aacute; adicionar espec&iacute;ficos diret&oacute;rios a seu path.
Por padr&atilde;o somente o <code>/usr/X11R6/bin</code> &eacute; adicionado.
separado por um ponto-e-v&iacute;rgula. Os clientes X s&atilde;o inicializados
no shell padr&atilde;o do usu&aacute;rio e os arquivos de inicializa&ccedil;&atilde;o
do shell ser&atilde;o lidos. Se desejado, um shell alternativo pode ser especificado.</li>
</ul>
<h3>Tela Cheia</h3>
<ul>
<li><b>Bot&atilde;o de Combina&ccedil;&atilde;o de Teclas: </b> Clique no bot&atilde;o
e pressione qualquer quantidade de teclas modificadoras seguidas por uma tecla
padr&atilde;o para modificar a combina&ccedil;&atilde;o quando se quer mudar
entre o Aqua e X11.</li>
<li><b>Clique no &Iacute;cone no Dock para mudar para o X11: </b>Habilitando
esta op&ccedil;&atilde;o voc&ecirc; ir&aacute; ativar a mudan&ccedil;a para
o X11 clicando no &iacute;cone do XDarwin no Dock. Em algumas vers&otilde;es
do Mac OS X, mudando pelo clique no Dock pode causar o desaparecimento do
cursor quando retornar ao Aqua.</li>
<li><b>Mostrar a Ajuda na inicializa&ccedil;&atilde;o: </b>Isto ir&aacute; mostrar
uma tela introdut&oacute;ria quando o XDarwin for inicializado no modo Tela
Cheia. </li>
<li><b>Profundidade de Cores em bits: </b> No modo Tela Cheia, a tela do X11
pode usar uma profundiadde de cor diferente da usada no Aqua. Se a op&ccedil;&atilde;o
&quot;Atual&quot; est&aacute; especificada, a profundidade usada pelo Aqua
quando o XDarwin iniciar ser&aacute; a mesma. Al&eacute;m das op&ccedil;&otilde;es
8, 15 ou 24 bits que podem ser especificadas.</li>
</ul>
<h2><a NAME="license">Licen&ccedil;a</a></h2>
<p>A licen&ccedil;a
principal n&oacute;s por XDarwin baseada na licen&ccedil;a tradicional MIT X11
/ X Consortium, que n&atilde;o imp&otilde;e nenhuma condi&ccedil;&atilde;o sobre
modifica&ccedil;&otilde;es ou redistribui&ccedil;&atilde;o do c&oacute;digo-fonte
ou dos bin&aacute;rios desde que o copyright/licen&ccedil;a sejam mantidos intactos.
Para mais informa&ccedil;&otilde;es e not&iacute;cias adicionais de copyright/licensing
em algumas se&ccedil;&atilde;o do c&oacute;digo, por favor refer to the source code.</p>
<H3><A NAME="3"></A>Licen&ccedil;a do X Consortium</H3>
<p>Copyright (C) 1996 X Consortium</p>
<p>Permiss&otilde;es s&atilde;o em virtude garantidas, livre de mudan&ccedil;as,
para qualquer pessoa que possua uma c&oacute;pia deste software e aos arquivos
de documenta&ccedil;&atilde;o associada (o &quot;Software&quot;), para lidar
com o software sem restri&ccedil;&otilde;es, incluindo limita&ccedil;&otilde;es
dos direitos de uso, c&oacute;pia, modifica&ccedil;&atilde;o, inclus&atilde;o,
publica&ccedil;&atilde;o, distribui&ccedil;&atilde;o, sub licen&ccedil;a, e/ou
venda de c&oacute;pias deste Software, e permitir pessoas to whom o Software
&eacute; fornecido para ser desta forma, verifique as seguintes condi&ccedil;&otilde;es:</p>
<p>O nota de copyright abaixo e a permiss&atilde;o dever&atilde;o ser inclu&iacute;das
em todas as c&oacute;pias ou substanciais por&ccedil;&otilde;es do Software.</p>
<p>O SOFTWARE 'E PROVIDO &quot;COMO TAL&quot;, SEM GARANTIAS DE NENHUM TIPO, EXPLICITA
OU IMPLICITA, INCLUINDO MAS N&Atilde;O LIMITADO NOS AVISOS DE COM&Eacute;RCIO,
TAMANHO OU PARA PROPOSTAS PARTICULARES E N&Atilde;O INFRA&Ccedil;&Atilde;O.
EM NENHUM ACONTECIMENTO O X CONSORTIUM SER&Aacute; RESPONSAV&Eacute;L POR NENHUMA
RECLAMA&Ccedil;&Atilde;O, DANOS OU OUTRAS RESPONSABILIDADES, SE NUMA A&Ccedil;&Atilde;O
DE CONTRATO, OU OUTRA COISA, SURGINDO DE, FORA DE OU EM CONEX&Atilde;O COM O
SOFTWARE OU O USO OU OUTRO MODO DE LIDAR COM O SOFTWARE.</p>
<p>Exceto o contido nesta nota, o nome do X Consortium n&atilde;o pode ser usado
em propagandas ou outra forma de promo&ccedil;&atilde;o de vendas, uso ou outro
modo de lidar com este Software sem ter recebido uma autoriza&ccedil;&atilde;o
escrita pelo X Consortium.</p>
<p>O Sistema X Window &eacute; marca registrada do X Consortium, Inc.</p>
</body>
</html>

View File

@@ -1,168 +0,0 @@
{\rtf1\mac\ansicpg10000\cocoartf102
{\fonttbl\f0\fswiss\fcharset77 Helvetica;\f1\fswiss\fcharset77 Helvetica-Bold;\f2\fswiss\fcharset77 Helvetica-Oblique;
}
{\colortbl;\red255\green255\blue255;}
\vieww5160\viewh6300\viewkind0
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
\f0\fs24 \cf0 This product includes software developed by The XFree86 Project, Inc (http://www.xfree86.org/) and its contributors. The following people contributed to Darwin/Mac OS X support.\
\
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\f1\b \cf0 Contributors to Xorg Foundation Release:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Kaleb KEITHLEY\
\f2\i Working left and right Ctrl, Alt (Option), Meta (Command) and Shift keys.
\f0\i0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f1\b \cf0 \
\f1\b \cf0 Contributors to XFree86 4.4:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 John Harper\
\f2\i Rootless acceleration and Apple-WM extension
\f0\i0 \
Torrey T. Lyons\
\f2\i Project Lead
\f0\i0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f1\b \cf0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\cf0 Additional XonX Contributors to XFree86 4.3:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Fabr\'92cio Luis de Castro\
\f2\i Portuguese localization
\f0\i0 \
Michael Oland\
\f2\i New XDarwin icon
\f0\i0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f1\b \cf0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\cf0 XonX Contributors to XFree86 4.2:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Rob Braun\
\f2\i Darwin x86 support
\f0\i0 \
Pablo Di Noto\
\f2\i Spanish localization
\f0\i0 \
Paul Edens\
\f2\i Dutch localization
\f0\i0 \
Kyunghwan Kim\
\f2\i Korean localization
\f0\i0 \
Mario Klebsch\
\f2\i Non-US keyboard support
\f0\i0 \
Torrey T. Lyons\
\f2\i Project Lead
\f0\i0 \
Andreas Monitzer\
\f2\i German localization
\f0\i0 \
Patrik Montgomery\
\f2\i Swedish localization
\f0\i0 \
Greg Parker\
\f2\i Rootless support
\f0\i0 \
Toshimitsu Tanaka\
\f2\i Japanese localization
\f0\i0 \
Olivier Verdier\
\f2\i French localization
\f0\i0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f1\b \cf0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\cf0 Special Thanks:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Devin Poolman and Zero G Software, Inc.\
\f2\i Installer
\f0\i0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f1\b \cf0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\cf0 XonX Team Members\
Contributing to XFree86 4.1:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Rob Braun\
\f2\i Darwin x86 support
\f0\i0 \
Torrey T. Lyons\
\f2\i Project Lead
\f0\i0 \
Andreas Monitzer\
\f2\i Cocoa version of XDarwin front end
\f0\i0 \
Greg Parker\
\f2\i Original Quartz implementation
\f0\i0 \
Christoph Pfisterer\
\f2\i Dynamic shared libraries
\f0\i0 \
Toshimitsu Tanaka\
\f2\i Japanese localization
\f0\i0 \
\
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\f1\b \cf0 Special Thanks:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Tiago Ribeiro\
\f2\i XDarwin icon
\f0\i0 \
\
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\f1\b \cf0 History:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 John Carmack\
\f2\i Original XFree86 port to Mac OS X Server
\f0\i0 \
Dave Zarzycki\
\f2\i XFree86 4.0 port to Darwin 1.0
\f0\i0 \
Torrey T. Lyons\
\f2\i Integration into XFree86 Project for 4.0.2}

View File

@@ -1,72 +0,0 @@
{
IBClasses = (
{
ACTIONS = {showHelp = id; };
CLASS = FirstResponder;
LANGUAGE = ObjC;
SUPERCLASS = NSObject;
},
{
ACTIONS = {close = id; pickFile = id; saveChanges = id; setKey = id; };
CLASS = Preferences;
LANGUAGE = ObjC;
OUTLETS = {
addToPathButton = id;
addToPathField = id;
button2ModifiersMatrix = id;
button3ModifiersMatrix = id;
depthButton = id;
displayField = id;
dockSwitchButton = id;
fakeButton = id;
keymapFileField = id;
modeMatrix = id;
modeWindowButton = id;
mouseAccelChangeButton = id;
startupHelpButton = id;
switchKeyButton = id;
systemBeepButton = id;
useDefaultShellMatrix = id;
useOtherShellField = id;
useXineramaButton = id;
window = id;
};
SUPERCLASS = NSObject;
},
{
CLASS = XApplication;
LANGUAGE = ObjC;
OUTLETS = {preferences = id; xserver = id; };
SUPERCLASS = NSApplication;
},
{
ACTIONS = {
bringAllToFront = id;
closeHelpAndShow = id;
itemSelected = id;
nextWindow = id;
previousWindow = id;
showAction = id;
showSwitchPanel = id;
startFullScreen = id;
startRootless = id;
};
CLASS = XServer;
LANGUAGE = ObjC;
OUTLETS = {
dockMenu = NSMenu;
helpWindow = NSWindow;
modeWindow = NSWindow;
startFullScreenButton = NSButton;
startRootlessButton = NSButton;
startupHelpButton = NSButton;
startupModeButton = NSButton;
switchWindow = NSPanel;
windowMenu = NSMenu;
windowSeparator = NSMenuItem;
};
SUPERCLASS = NSObject;
}
);
IBVersion = 1;
}

View File

@@ -1,36 +0,0 @@
BINDIR = ${bindir}
include $(top_srcdir)/cpprules.in
XINITDIR = $(libdir)/X11/xinit
XDEFS = \
-DX_VERSION="$(PLIST_VERSION_STRING)" \
-DX_PRE_RELEASE="$(PRE)" \
-DX_REL_DATE="$(XORG_DATE)" \
-DX_VENDOR_NAME="$(VENDOR_STRING)" \
-DX_VENDOR_LINK="$(PLIST_VENDOR_WEB)"
resourcesdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app/Contents/Resources
Spanishlprojdir = $(resourcesdir)/Spanish.lproj
Spanishlproj_DATA = \
XDarwinHelp.html \
InfoPlist.strings \
Credits.rtf Localizable.strings
Spanishlprojnibdir = $(Spanishlprojdir)/MainMenu.nib
Spanishlprojnib_DATA = MainMenu.nib/classes.nib MainMenu.nib/objects.nib
InfoPlist.strings: $(srcdir)/../English.lproj/InfoPlist.strings.cpp
$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) | $(SED) -e's/__quote__/"/g' > $@
XDarwinHelp.html: XDarwinHelp.html.cpp
$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) > $@
CLEANFILES = XDarwinHelp.html InfoPlist.strings
EXTRA_DIST = \
Credits.rtf Localizable.strings \
Localizable.strings \
MainMenu.nib/classes.nib \
MainMenu.nib/objects.nib \
XDarwinHelp.html.cpp

View File

@@ -1,109 +0,0 @@
<html>
<head>
<title>XDarwin Ayuda</title>
</head>
<body>
<center>
<h1>XDarwin X Server for Mac OS X</h1>
X_VENDOR_NAME X_VERSION<br>
Fecha de release: X_REL_DATE
</center>
<h2>Contenido</h2>
<ol>
<li><A HREF="#notice">Aviso Importante</A></li>
<li><A HREF="#usage">Modo de uso</A></li>
<li><A HREF="#path">Configurando su Path</A></li>
<li><A HREF="#prefs">Preferencias del Usuario</A></li>
<li><A HREF="#license">Licencia</A></li>
</ol>
<center>
<h2><a NAME="notice">Aviso Importante</a></h2>
</center>
<blockquote>
#if PRE_RELEASE
Esta es una versi&oacuten pre-release de XDarwin, y no tiene ning&uacuten soporte. Patches y reportes de error pueden ser enviados a la <A HREF="http://sourceforge.net/projects/xonx/">p&aacutegina del proyecto XonX</A> en SourceForge. Antes de reportar errores en versiones pre-release, por favor verifique la ultima versi&oacuten en <A HREF="http://sourceforge.net/projects/xonx/">XonX</A> o bien el X_VENDOR_LINK.
#else
Si el server el m&aacutes antiguo que 6 a 12 meses, o si su hardware es posterior a la fecha indicada m&aacutes arriba, por favor verifique la &uacuteltima versi&oacuten antes de reportar problemas. Patches y reportes de error pueden ser enviados a la <A HREF="http://sourceforge.net/projects/xonx/">p&aacutegina del proyecto XonX</A> en SourceForge.
#endif
</blockquote>
<blockquote>
Este software es distribuido bajo los t&eacuterminos de la <A HREF="#license">Licencia MIT X11 / X Consortium</A> y es provisto sin garant&iacutea alguna y en el estado en que se encuentra. Por favor lea la <A HREF="#license">Licencia</A> antes de utilizarlo.</blockquote>
<h2><a NAME="usage">Modo de uso</a></h2>
<p>XDarwin es una X server open-source de distribuci&oacuten libre del <a HREF
="http://www.x.org/">X Window System</a>. This version of XDarwin was produced by the X_VENDOR_LINK. XDarwin funciona en Mac OS X en modo pantalla completa o en modo rootless (integrado al escritorio).</p>
<p>En modo pantalla completa, el X window system toma control total de la pantalla mientras esta activo. Presionando Command-Option-A puede regresar al Escritorio de Mac OS X. Esta combinaci&oacuten de teclas puede cambiarse en las Preferencias de Usuario. Desde el Escritorio de Mac OS X, haga click en &iacutecono de XDarwin en el Dock para volver al X window system. (Puede cambiar esta comportamiento en las Preferencias de Usuario y configurar que XDarwin vuelva al X window system haciendo click en la ventana flotante con el logo X.)</p>
<p>En modo rootless, el X window system comparte la pantalla con Aqua. La ventana root de X11 es del tama&ntildeo de la pantalla y contiene a todas las dem&aacutes ventanas. La ventana root de X11 no se muestra en este modo, ya que Aqua maneja el fondo de pantalla.</p>
<h3>Emulaci&oacuten de mouse multi-bot&oacuten</h3>
<p>Muchas aplicaciones X11 requieren del uso de un mouse de 3 botones. Es posible emular un mouse de 3 botones con un mouse de solo un bot&oacuten presionando teclas modificadoras mientras hace click. Esto es controlado en de la seccion "Emulaci&oacuten mouse" dentro de la secci&oacuten "General" de las Preferencias del Usuario. Por defecto, la emulaci&oacuten est&aacute activa y utiliza la tecla Command para simular el 2do bot&oacuten y la tecla Option para simlar el 3er bot&oacuten. La conbinaci&oacuten para simular el 2do y 3er bot&oacuten pueden ser modificada por cualquier combinaci&oacuten de teclas modificadoras dentro de las Preferencias del Usuario. Tenga en cuenta que aunque las teclas modificadoras hayan sido mapeadas a otras teclas con xmodmap, las teclas configuradas en las Preferencias del Usuario seguir&aacuten siendo las utilizadas por la emulaci&oacuten de mouse multi-bot&oacuten.</p>
<h2><a NAME="path">Configurando su Path</a></h2>
<p>El path es la lista de directorios donde se buscar&aacuten los comandos ejecutables. Los comandos de X11 se encuentran en <code>/usr/X11R6/bin</code>, y &eacuteste necesita estar dentro de su path. XDarwin hace &eacutesto autom&aacuteticamente por defecto, y puede adem&aacutes agregar directorios adicionales donde tenga otros comandos de l&iacutenea.</p>
<p>Usuarios experimentados pueden tener su path correctamente configurado mediante los archivos de inicio de su interprete de comandos. En este caso, puede informarle a XDarwin en las Preferencias de Usuario para que no modifique su path. XDarwin arrancar&aacute los clientes X11 iniciales usando el int&eacuterprete de comandos del usuario, seg&uacuten su configuraci&oacuten de login. Un int&eacuterprete de comandos alternativo puede ser especificado en las Preferencias del Usuario. La manera de configurar el path de su int&eacuterprete de comandos depende de cual est&aacute usando, y es generalmente descripta en las p&aacuteginas man del mismo.</p>
<p>Adem&aacutes, Ud. puede agregar las p&aacuteginas man de X11 a la lista de p&aacuteginas que son consultadas. Estas est&aacuten ubicadas en <code>/usr/X11R6/man</code> y <code>MANPATH</code> es la variable de entorno que contiene los directorios que son consultados.</p>
<h2><a NAME="prefs">Preferencias del Usuario</a></h2>
<p>Ciertas opciones pueden definirse dentro de "Preferencias...", en el men&uacute de XDarwin. Las opciones dentro de de "Inicio" no surtir&aacuten efecto hasta que la aplicaci&oacuten se reinicie. Las restantes opciones surten efecto inmediatamente. Las diferentes opciones se describen a continuaci&oacuten:</p>
<h3>General</h3>
<ul>
<li><b>Usar beep del sistema en X11:</b> Cuando esta opci&oacuten est&aacute activa, el sonido de alerta est&aacutendar de Mac OS X se usar&aacute como alerta de X11. Cuando est&aacute desactivada, un simple tono es utilizado (esta es la opci&oacuten por defecto).</li>
<li><b>Permitir que X11 cambie la aceleraci&oacuten del mouse:</b> En una implementaci&oacuten est&aacutendard de X11, el window manager puede cambiar la aceleraci&oacuten del mouse. Esto puede llevar a una gran confusi&oacuten si la aceleraci&oacuten es diferente en XDarwin y en Mac OS X. Por defecto, no se le permite a X11 alterar la aceleraci&oacuten para evitar este inconveniente.</li>
<li><b>Emulaci&oacuten de mouse multi-bot&oacuten:</b> Esta opci&oacuten es descripta m&aacutes arriba bajo <a HREF="#usage">Modo de Uso</a>. Cuando esta emulaci&oacuten est&aacute activa los modificadores seleccionados deben ser presionados cuando se hace click para emular el bot&oacuten 2 o el bot&oacuten 3.</li>
</ul>
<h3>Inicio</h3>
<ul>
<li><b>Modo inicial:</b> Si el usuario no indica si desea utilizar la Pantalla Completa o el modo Rootless, el modo especificado aqu&iacute ser&aacute el usado.</li>
<li><b>Mostrar panel de selecci&oacuten al inicio:</b> Por defecto, un di&aacutelogo permite al usuario elegir entre Pantalla Completa o Rootless al inicio. Si esta opci&oacuten esta desactivada, XDarwin arrancar&aacute utilizando el modo por defecto sin consultar al usuario.</li>
<li><b>N&uacutemero de display X11:</b> X11 permite que existan m&uacuteltiples pantallas manejadas por servidores X11 separados funcionando en una misma computadora. El usuario puede especificar aqui un n&uacutemero entero para indicar el n&uacutemero de pantalla (display) que XDarwin utilizar&aacute si m&aacutes de un servidor X funciona en forma simult&aacutenea.</li>
<li><b>Habilitar soporte Xinerama para m&uacuteltipes monitores:</b> XDarwin suporta m&uacuteltiple monitores con Xinerama, que maneja todos los monitores como si fueran parte de una gran pantalla rectangular. Puede deshabilitar Xinerama con esta opci&oacuten, pero XDarwin no maneja m&uacuteltiples monitores en forma correcta sin esta opci&oacuten habilitada. Si tiene solo un monitor, Xinerama es autom&aacuteticamente deshabilitado.</li>
<li><b>Archivo de mapa de teclado:</b> Un archivo de mapa de teclas es le&iacutedo al inicio y es traducido a un keymap X11 (un archivo est&aacutendard de X11 para especificar la funci&oacuten de cada tecla). Estos archivos, disponibles para una amplia variedad de lenguajes, pueden encontrarse en <code>/System/Library/Keyboards</code>.</li>
<li><b>Al iniciar clientes X11:</b> Cuando XDarwin arranca desde el Finder, &eacuteste ejecutar&aacute <code>xinit</code> para a su vez arrancar el window manager y otros clientes. (Vea en "<code>man xinit</code>" para mayor informaci&oacuten). Antes de ejecutar <code>xinit</code> XDarwin agregar&aacute los directorios especificados al path del usuario. Por defecto, solo <code>/usr/X11R6/bin</code> es agregado. Otros directorios adicionales puede agregarse separados por dos puntos (:). Los clientes X son ejecutados con el int&eacuterprete de comandos del usuario, por lo que los archivos de inicio de &eacuteste son le&iacutedos. Si se desea, un int&eacuterprete de comandos diferente puede ser especificado.</li>
</ul>
<h3>Pantalla Completa</h3>
<ul>
<li><b>Bot&oacuten para definir combinaci&oacuten de teclas:</b> Haga click en este bot&oacuten y luego presione cualquier combinaci&oacuten de modificadores seguidos de una tecla convencional para definir que combinaci&oacuten usar&aacute para intercambiar entre X11 y Aqua.</li>
<li><b>Click en el &iacutecono del Dock cambia a X11:</b> Habilite esta opci&oacuten para volver a X11 al hacer click en &iacutecono de XDarwin en el Dock. En algunas versiones de Mac OS X, al volver haciendo click en el Dock puede causar al desaparci&oacuten del cursor al volver a Aqua.</li>
<li><b>Mostrar ayuda al inicio:</b> Esta opci&oacuten habilitada har&aacute que una pantalla inicial de introducci&oacuten aparezca cuando XDarwin es arrancado en modo Pantalla Completa.</li>
<li><b>Profundidad de color (bits):</b> En modo Pantalla Completa, el display X11 puede utilizar una profundidad de color diferente de la utilizada por Aqua. Si se especifica "Actual", la misma profundidad de color que Aqua utiliza ser&aacute adoptada por X11. Al contrario, puede especificar 8, 15, o 24 bits.</li>
</ul>
<h2><a NAME="license">Licencia</a></h2>
La licencia principal de XDarwin es basada en la Licencia MIT X11 tradicional, que no impone condiciones a la modificaci&oacuten o redistribuci&oacuten del c&oacutedigo fuente o de archivos binarios m&aacutes all&aacute de requerir que los mensajes de Licencia y Copyright se mantengan intactos. Para mayor informaci&oacuten y para mensajes adicionales de Licencia y Copyright que cubren algunas secciones del c&oacutedigo fuente, por favor consulte the source code.
<H3><A NAME="3"></A>Licencia del X Consortium</H3>
<p>Copyright (C) 1996 X Consortium</p>
<p>Se otorga aqui permiso, libre de costo, a toda persona que obtenga una copia de este Software y los archivos de documentaci&oacuten asociados (el "Software"),
para utilizar el Software sin restricciones, incluyendo sin l&iacutemites los derechos de usar, copiar, modificar, integrar con otros productos, publicar, distribuir, sub-licenciar y/o comercializar copias del Software, y de permitir a las personas que lo reciben para hacer lo propio, sujeto a las siguientes condiciones:</p>
<p>El mensaje de Copyright indicado m&aacutes arriba y este permiso ser&aacute inclu&iacutedo en todas las copias o porciones sustanciales del Software.</p>
<p>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 X CONSORTIUM 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.</p>
<p>Excepto lo indicado en este mensaje, el nombre del X Consortium no ser&aacute utilizado en propaganda o como medio de promoci&oacuten para la venta, utilizaci&oacuten u otros manejos de este Software sin previa autorizaci&oacuten escrita del X Consortium.</p>
<p>X Window System es una marca registrada de X Consortium, Inc.</p>
<H3><A NAME="3"></A>X Consortium License (English)</H3>
<p>Copyright (C) 1996 X Consortium</p>
<p>Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without
limitation the rights to use, copy, modify, merge, publish, distribute,
sublicense, and/or sell copies of the Software, and to permit persons to
whom the Software is furnished to do so, subject to the following conditions:</p>
<p>The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.</p>
<p>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 X CONSORTIUM 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.</p>
<p>Except as contained in this notice, the name of the X Consortium 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 X Consortium.</p>
<p>X Window System is a trademark of X Consortium, Inc.</p>
</body>
</html>

View File

@@ -1,168 +0,0 @@
{\rtf1\mac\ansicpg10000\cocoartf102
{\fonttbl\f0\fswiss\fcharset77 Helvetica;\f1\fswiss\fcharset77 Helvetica-Bold;\f2\fswiss\fcharset77 Helvetica-Oblique;
}
{\colortbl;\red255\green255\blue255;}
\vieww5160\viewh6300\viewkind0
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
\f0\fs24 \cf0 This product includes software developed by The XFree86 Project, Inc (http://www.xfree86.org/) and its contributors. The following people contributed to Darwin/Mac OS X support.\
\
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\f1\b \cf0 Contributors to Xorg Foundation Release:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Kaleb KEITHLEY\
\f2\i Working left and right Ctrl, Alt (Option), Meta (Command) and Shift keys.
\f0\i0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f1\b \cf0 \
\f1\b \cf0 Contributors to XFree86 4.4:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 John Harper\
\f2\i Rootless acceleration and Apple-WM extension
\f0\i0 \
Torrey T. Lyons\
\f2\i Project Lead
\f0\i0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f1\b \cf0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\cf0 Additional XonX Contributors to XFree86 4.3:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Fabr\'92cio Luis de Castro\
\f2\i Portuguese localization
\f0\i0 \
Michael Oland\
\f2\i New XDarwin icon
\f0\i0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f1\b \cf0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\cf0 XonX Contributors to XFree86 4.2:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Rob Braun\
\f2\i Darwin x86 support
\f0\i0 \
Pablo Di Noto\
\f2\i Spanish localization
\f0\i0 \
Paul Edens\
\f2\i Dutch localization
\f0\i0 \
Kyunghwan Kim\
\f2\i Korean localization
\f0\i0 \
Mario Klebsch\
\f2\i Non-US keyboard support
\f0\i0 \
Torrey T. Lyons\
\f2\i Project Lead
\f0\i0 \
Andreas Monitzer\
\f2\i German localization
\f0\i0 \
Patrik Montgomery\
\f2\i Swedish localization
\f0\i0 \
Greg Parker\
\f2\i Rootless support
\f0\i0 \
Toshimitsu Tanaka\
\f2\i Japanese localization
\f0\i0 \
Olivier Verdier\
\f2\i French localization
\f0\i0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f1\b \cf0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\cf0 Special Thanks:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Devin Poolman and Zero G Software, Inc.\
\f2\i Installer
\f0\i0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f1\b \cf0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\cf0 XonX Team Members\
Contributing to XFree86 4.1:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Rob Braun\
\f2\i Darwin x86 support
\f0\i0 \
Torrey T. Lyons\
\f2\i Project Lead
\f0\i0 \
Andreas Monitzer\
\f2\i Cocoa version of XDarwin front end
\f0\i0 \
Greg Parker\
\f2\i Original Quartz implementation
\f0\i0 \
Christoph Pfisterer\
\f2\i Dynamic shared libraries
\f0\i0 \
Toshimitsu Tanaka\
\f2\i Japanese localization
\f0\i0 \
\
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\f1\b \cf0 Special Thanks:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Tiago Ribeiro\
\f2\i XDarwin icon
\f0\i0 \
\
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\f1\b \cf0 History:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 John Carmack\
\f2\i Original XFree86 port to Mac OS X Server
\f0\i0 \
Dave Zarzycki\
\f2\i XFree86 4.0 port to Darwin 1.0
\f0\i0 \
Torrey T. Lyons\
\f2\i Integration into XFree86 Project for 4.0.2}

View File

@@ -1,72 +0,0 @@
{
IBClasses = (
{
ACTIONS = {showHelp = id; };
CLASS = FirstResponder;
LANGUAGE = ObjC;
SUPERCLASS = NSObject;
},
{
ACTIONS = {close = id; pickFile = id; saveChanges = id; setKey = id; };
CLASS = Preferences;
LANGUAGE = ObjC;
OUTLETS = {
addToPathButton = id;
addToPathField = id;
button2ModifiersMatrix = id;
button3ModifiersMatrix = id;
depthButton = id;
displayField = id;
dockSwitchButton = id;
fakeButton = id;
keymapFileField = id;
modeMatrix = id;
modeWindowButton = id;
mouseAccelChangeButton = id;
startupHelpButton = id;
switchKeyButton = id;
systemBeepButton = id;
useDefaultShellMatrix = id;
useOtherShellField = id;
useXineramaButton = id;
window = id;
};
SUPERCLASS = NSObject;
},
{
CLASS = XApplication;
LANGUAGE = ObjC;
OUTLETS = {preferences = id; xserver = id; };
SUPERCLASS = NSApplication;
},
{
ACTIONS = {
bringAllToFront = id;
closeHelpAndShow = id;
itemSelected = id;
nextWindow = id;
previousWindow = id;
showAction = id;
showSwitchPanel = id;
startFullScreen = id;
startRootless = id;
};
CLASS = XServer;
LANGUAGE = ObjC;
OUTLETS = {
dockMenu = NSMenu;
helpWindow = NSWindow;
modeWindow = NSWindow;
startFullScreenButton = NSButton;
startRootlessButton = NSButton;
startupHelpButton = NSButton;
startupModeButton = NSButton;
switchWindow = NSPanel;
windowMenu = NSMenu;
windowSeparator = NSMenuItem;
};
SUPERCLASS = NSObject;
}
);
IBVersion = 1;
}

View File

@@ -1,36 +0,0 @@
BINDIR = ${bindir}
include $(top_srcdir)/cpprules.in
XINITDIR = $(libdir)/X11/xinit
XDEFS = \
-DX_VERSION="$(PLIST_VERSION_STRING)" \
-DX_PRE_RELEASE="$(PRE)" \
-DX_REL_DATE="$(XORG_DATE)" \
-DX_VENDOR_NAME="$(VENDOR_STRING)" \
-DX_VENDOR_LINK="$(PLIST_VENDOR_WEB)"
resourcesdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app/Contents/Resources
Swedishlprojdir = $(resourcesdir)/Swedish.lproj
Swedishlproj_DATA = \
XDarwinHelp.html \
InfoPlist.strings \
Credits.rtf Localizable.strings
Swedishlprojnibdir = $(Swedishlprojdir)/MainMenu.nib
Swedishlprojnib_DATA = MainMenu.nib/classes.nib MainMenu.nib/objects.nib
InfoPlist.strings: $(srcdir)/../English.lproj/InfoPlist.strings.cpp
$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) | $(SED) -e's/__quote__/"/g' > $@
XDarwinHelp.html: XDarwinHelp.html.cpp
$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) > $@
CLEANFILES = XDarwinHelp.html InfoPlist.strings
EXTRA_DIST = \
Credits.rtf Localizable.strings \
Localizable.strings \
MainMenu.nib/classes.nib \
MainMenu.nib/objects.nib \
XDarwinHelp.html.cpp

View File

@@ -1,101 +0,0 @@
<html>
<head>
<title>XDarwin Help</title>
</head>
<body>
<center>
<h1>XDarwin X Server for Mac OS X</h1>
X_VENDOR_NAME X_VERSION<br>
F&auml;rdigst&auml;llt: X_REL_DATE
</center>
<h2>Inneh&aring;ll</h2>
<ol>
<li><A HREF="#notice">Viktigt!</A></li>
<li><A HREF="#usage">Anv&auml;ndande</A></li>
<li><A HREF="#path">Att st&auml;lla in sin s&ouml;kv&auml;g</A></li>
<li><A HREF="#prefs">Inst&auml;llningar</A></li>
<li><A HREF="#license">Licens</A></li>
</ol>
<center>
<h2><a NAME="notice">Viktigt!</a></h2>
</center>
<blockquote>
#if PRE_RELEASE
Detta &auml;r en testversion av XDarwin, och du kan inte garranteras n&aring;gon som helst support f&ouml;r den. Buggar och fel kan rapporteras och f&ouml;rslag till fixar kan skickas till <A HREF="http://sourceforge.net/projects/xonx/">XonX-projektets sida</A> p&aring; SourceForge. Innan du rapporterar buggar i testversioner, var god pr&ouml;va den senaste versionen fr&aring;n <A HREF="http://sourceforge.net/projects/xonx/">XonX</A> eller i X_VENDOR_LINK.
#else
Om servern &auml;r &auml;ldre &auml;n 6-12 m&aring;nader, eller om din h&aring;rdvara &auml;r nyare &auml;n datumet ovan, leta efter en nyare version innan du rapporterar fel. Buggar och fel kan rapporteras och f&ouml;rslag till fixar kan skickas till <A HREF="http://sourceforge.net/projects/xonx/">XonX-projektets sida</A> p&aring; SourceForge.
#endif
</blockquote>
<blockquote>
Denna programvara distrubueras i enlighet med <A HREF="#license">MIT X11 / X Consortium License</A> och tilhandh&aring;lls som den &auml;r, helt utan garantier. Var god l&auml;s igenom <A HREF="#license">licensdokumentet (engelska)</A> innan du anv&auml;nder programmet.</blockquote>
<h2><a NAME="usage">Anv&auml;ndande</a></h2>
<p>XDarwin &auml;r en fritt spridd X server av <a HREF
="http://www.x.org/">X Window-systemet</a>. This version of XDarwin was produced by the X_VENDOR_LINK. XDarwin kan k&ouml;ras p&aring; Mac OS X i fullsk&auml;rmsl&auml;ge eller rotl&ouml;st l&auml;ge.</p>
<p>I fullsk&auml;rmsl&auml;ge kommer X window-systemet att ta &ouml;ver hela sk&auml;rmen n&auml;r det &auml;r aktivt. Du kan byta tillbaka till Mac OS Xs skrivbord genom att trycka Kommando-Alt-A. Denna tangentkombination kan &auml;ndra i inst&auml;llningarna. N&auml;r du &auml;r p&aring; Mac OS Xs skrivbord kan du klicka p&aring; XDarwin-ikonen i dockan f&ouml;r att byta tillbaka till X Window-systemet. (Du kan f&ouml;r&auml;ndra detta beteende i inst&auml;llningarna s&aring; att du ist&auml;llet m&aring;ste klicka i det fltande bytesf&ouml;nstret ist&auml;llet.)</p>
<p>I rotl&ouml;stl&auml;ge delar X11 och Aqua p&aring; din sk&auml;rm. Rotf&ouml;nstret p&aring; X11-sk&auml;rmen &auml;r av samma storlek som hela sk&auml;rmen och inneh&aring;ller alla andra f&ouml;nster - det fungerar som bakgrund. I rotl&ouml;stl&auml;ge visas inte detta rotf&ouml;nster, eftersom Aqua hanterar skrvbordbakgrunden.</p>
<h3>Emulering av flerknapparsmus</h3>
<p>M&aring;nga X11-program utnyttjar en treknapparsmus. Du kan emulera en treknapparsmus med en knapp genom att h&aring;lla ner olika knappar p&aring; tangentbordet medan du klickar med musens enda knapp. Denna funktion styrs av inst&auml;llningarna i "Emulera flerknapparsmus" under fliken "Diverse" i inst&auml;llningarna. Grundinst&auml;llningen &auml;r att emulationen &auml;r aktiv och att ett kommando-klick (H&aring;ll ner kommando och klicka) simulerar den andra musknappen. Den tredje musknappen f&aring;s genom att h&aring;lla ner alt och klicka. Du kan &auml;ndra detta till n&aring;gon annan kombination av de fem tangenterna kommando, alt, kontrol, skift och fn (Powerbook/iBook). Notera att om dessa knappar har flyttats med hj&auml;lp av kommandot xmodmap kommer denna f&ouml;r&auml;ndring inte att p&aring;verka vilka knappar som anv&auml;nds vid flerknappsemulationen.</p>
<h2><a NAME="path">Att st&auml;lla in sin s&ouml;kv&auml;g</a></h2>
<p>Din s&ouml;kv&auml;g &auml;r en lista av kataloger som s&ouml;ks igenom n&auml;r terminalen letar efter kommandon att exekvera. Kommandon som h&ouml;r till X11 ligger i <code>/usr/X11R6/bin</code>, en katalog som inte ligger i din s&ouml;kv&auml;g fr&aring;n b&ouml;rjan. XDarwin l&auml;gger till denna katalog &aring;t dig, och du kan ocks&aring; l&auml;gga till ytterligare kataloger i vilka du lagt program som skall k&ouml;ras fr&aring;n kommandoraden.</p>
<p>Mer erfarna anv&auml;ndare har antagligen redan st&auml;llt in sin s&ouml;kv&auml;g i skalets inst&auml;llningsfiler. Om detta g&auml;ller dig kan st&auml;lla in XDarwin s&aring; att din s&ouml;kv&auml;g inte modifieras. XDarwin startar de f&ouml;rsta X11-klienterna i anv&auml;ndarens inloggningsskal (Vill du anv&auml;nda ett alternativt skall, kan du specificera detta i inst&auml;llningarna). Hur du st&auml;ller in din s&ouml;kv&auml;g beror p&aring; vilket skal du anv&auml;nder. Exakt hur beskrivs i skalets man-sidor.</p>
<p>Ut&ouml;ver detta kan du ocks&aring; vilja l&auml;gga till X11s man-sidor (dokumentation) till listan &auml;ver sidor som som skall s&ouml;kas n&auml;r du vill l&auml;sa efter dokumentationen. X11s man-sidor ligger i <code>/usr/X11R6/man</code> och listan &auml;ver kataloger att s&ouml;ka best&auml;mms av variabeln<code>MANPATH</code>.</p>
<h2><a NAME="prefs">Inst&auml;llningar</a></h2>
<p>I inst&auml;llningarna finns ett antal alternativ d&auml;r du kan p&aring;verka hur XDarwin beter sig i vissa fall. Inst&auml;llningarna kommer du till genom att v&auml;lja "Inst&auml;llningar..." i menyn "XDarwin". De alternativ som finns under fliken "Starta" tr&auml;der inte i kraft f&ouml;rr&auml;n du startat om programmet. Alla andra alternativ tr&auml;der i kraft omedelbart. De olika alternativen beskrivs nedan:</p>
<h3>Diverse</h3>
<ul>
<li><b>Anv&auml;nd Mac OS varningsljud i X11:</b> N&auml;r detta alternativ &auml;r valt anv&auml;nds Mac OS vanliga varningsljud &auml;r X11s varningsljud (bell). N&auml;r detta alternativ inte &auml;r valt (f&ouml;rvalt) anv&auml;nds en vanlig ton.</li>
<li><b>Till&aring;t X11 att &auml;ndra musens acceleration:</b> I ett vanligt X11-system kan f&ouml;nsterhanteraren &auml;ndra musens acceleration. Detta kan vara f&ouml;rvirrande eftersom musens acceleration kan vara olika i Mac OS Xs System Preferences och i f&ouml;nsterhanteraren i X11. F&ouml;rvalet &auml;r att X11 inte kan &auml;ndra musens acceleration f&ouml;r att p&aring; detta s&auml;tt undvika detta problem.</li>
<li><b>Emulera flerknapparsmus:</b> Detta beskrivs ovan under <a HREF="#usage">Anv&auml;ndande</a>. N&auml;r emulationen &auml;r aktiv m&aring;ste du h&aring;lla ner de valda knapparna f&ouml;r att emulera en andra eller tredje musknapp.</li>
</ul>
<h3>Starta</h3>
<ul>
<li><b>F&ouml;rvalt l&auml;ge:</b> Om anv&auml;ndaren inte p&aring; annat s&auml;tt v&auml;ljer vilket l&auml;ge som skall anv&auml;ndas kommer alternativet h&auml;r att anv&auml;ndas.</li>
<li><b>Visa val av sk&auml;rml&auml;ge vid start:</b> F&ouml;rvalet &auml;r att visa ett f&ouml;nster n&auml;r XDarwin startar som l&aring;ter anv&auml;ndaren v&auml;lja mellan fullsk&auml;rmsl&auml;ge och rotl&ouml;st l&auml;ge. Om detta alternativ inte &auml;r aktivt kommer XDarwin automatiskt att startas i det l&auml;ge som valts ovan.</li>
<li><b>Sk&auml;rmnummer i X11:</b> X11 till&aring;ter att det finns flera sk&auml;rmar styrda av varsin X-server p&aring; en och samma dator. Anv&auml;ndaren kan ange vilket nummer XDarwin skall anv&auml;nda om mer &auml;n en X-server skall anv&auml;ndas samtidigt.</li>
<li><b>Aktivera Xinerama (st&ouml;d f&ouml;r flera sk&auml;rmar):</b> XDarwin st&ouml;djer flera sk&auml;rmar genom Xinerama, vilket hanterar alla skr&auml;mar som delar av en enda stor rektangul&auml;r sk&auml;rm. Du kan anv&auml;nda detta alternativ f&ouml;r att st&auml;nga av Xinerama, men f&ouml;r n&auml;rvarande kan inte XDarwin hantera flera sk&auml;rmar utan det. Om du bara har en sk&auml;rm kommer Xinerama automatiskt att deaktiveras.</li>
<li><b>Fil med tangentbordsupps&auml;ttning:</b> En fil som anger tangentbordsupps&auml;ttning l&auml;ses vid start och &ouml;vers&auml;tts till en tangentborsupps&auml;ttningsfil f&ouml;r X11. Filer med tangentbordsupps&auml;ttningar f&ouml;r ett stort antal spr&aring;k finns i <code>/System/Library/Keyboards</code>.</li>
<li><b>Startar f&ouml;rsta X11-klienterna:</b> N&auml;r X11 startas fr&aring;n Finder kommer det att exekvera filen <code>xinit</code> f&ouml;r att starta f&ouml;nsterhanteraren i X11 och andra program. (Se "<code>man xinit</code>" f&ouml;r mer information.) Innan XDarwin k&ouml;r xinit kommer det att l&auml;gga till katalogern h&auml;r till anv&auml;ndarens s&ouml;kv&auml;g. F&ouml;rvalet &auml;r att endast l&auml;gga till katalogen <code>/usr/X11R6/bin</code>. Ytterligare kataloger kan l&auml;ggas till - separera dem med kolon. X11-klienterna startas i anv&auml;ndarens inloggningsskal s&aring; att anv&auml;ndarens inst&auml;llningsfiler i skalet l&auml;ses. Om s&aring; &ouml;nskas kan de startas i ett annat skal.</li>
</ul>
<h3>Fullsk&auml;rm</h3>
<ul>
<li><b>Tangentkombinationsknappen:</b> Tryck p&aring; denna knapp och en tangentkombination f&ouml;r att &auml;ndra den tangentkombination som anv&auml;nds f&ouml;r att byta mellan X11 och Aqua.</li>
<li><b>Klick p&aring; ikonen i dockan byter till X11:</b> Aktivera detta alternativ f&ouml;r att byta till X11 genom att klicka p&aring; ikonen i dockan. I vissa versioner av Mac OS X kommer ett bte p&aring; detta s&auml;tt att g&ouml;mma pekaren n&auml;r du &aring;terv&auml;nder till Aqua.</li>
<li><b>Visa fullsk&auml;rmshj&auml;lp vid start:</b> Detta kommer att visa en informationsruta n&auml;r XDarwin startas i fullsk&auml;rmsl&auml;ge.</li>
<li><b>F&auml;rgdjup:</b> I fullsk&auml;rmsl&auml;ge kan X11 anv&auml;nda ett annat f&auml;rgdjup &auml;n Aquas. Om du v&auml;jer "Nuvarande" kommer X11 att anv&auml;nda det f&auml;rgdjup som Aqua har just d&aring;. Annars kan du v&auml;lja 8, 15, eller 24 bitare f&auml;rg.</li>
</ul>
<h2><a NAME="license">Licens (svenska)</a></h2>
<p>Den huvudsakliga licens vi anv&auml;nder oss av &auml;r baserad p&aring; den traditionella MIT X11 / XConsortium-licensen, vilken inte p&aring; n&aring;got s&auml;tt begr&auml;nsar f&ouml;r&auml;ndringar eller vidarespridning av vare sig k&auml;llkod eller kompilerad programvara annat &auml;n genom att kr&auml;va att delarna som r&ouml;r copyright och licensiering l&auml;mnas intakta. F&ouml;r mer information och ytterligare copyright/licensieringsinfromation r&ouml;rande vissa speciella delar av koden, se the source code.</p>
<h3>Licence (english)</h3>
<p>The main license for XDarwin is based on the traditional MIT X11 / X Consortium License, which does not impose any conditions on modification or redistribution of source code or binaries other than requiring that copyright/license notices are left intact. For more information and additional copyright/licensing notices covering some sections of the code, please refer to the source code.</p>
<H3><A NAME="3"></A>X Consortium License</H3>
<p>Copyright (C) 1996 X Consortium</p>
<p>Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without
limitation the rights to use, copy, modify, merge, publish, distribute,
sublicense, and/or sell copies of the Software, and to permit persons to
whom the Software is furnished to do so, subject to the following conditions:</p>
<p>The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.</p>
<p>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 X CONSORTIUM 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.</p>
<p>Except as contained in this notice, the name of the X Consortium 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 X Consortium.</p>
<p>X Window System is a trademark of X Consortium, Inc.</p>
</body>
</html>

Binary file not shown.

View File

@@ -1,168 +0,0 @@
{\rtf1\mac\ansicpg10000\cocoartf102
{\fonttbl\f0\fswiss\fcharset77 Helvetica;\f1\fswiss\fcharset77 Helvetica-Bold;\f2\fswiss\fcharset77 Helvetica-Oblique;
}
{\colortbl;\red255\green255\blue255;}
\vieww5160\viewh6300\viewkind0
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
\f0\fs24 \cf0 This product includes software developed by The XFree86 Project, Inc (http://www.xfree86.org/) and its contributors. The following people contributed to Darwin/Mac OS X support.\
\
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\f1\b \cf0 Contributors to Xorg Foundation Release:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Kaleb KEITHLEY\
\f2\i Working left and right Ctrl, Alt (Option), Meta (Command) and Shift keys.
\f0\i0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f1\b \cf0 \
\f1\b \cf0 Contributors to XFree86 4.4:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 John Harper\
\f2\i Rootless acceleration and Apple-WM extension
\f0\i0 \
Torrey T. Lyons\
\f2\i Project Lead
\f0\i0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f1\b \cf0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\cf0 Additional XonX Contributors to XFree86 4.3:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Fabr\'92cio Luis de Castro\
\f2\i Portuguese localization
\f0\i0 \
Michael Oland\
\f2\i New XDarwin icon
\f0\i0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f1\b \cf0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\cf0 XonX Contributors to XFree86 4.2:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Rob Braun\
\f2\i Darwin x86 support
\f0\i0 \
Pablo Di Noto\
\f2\i Spanish localization
\f0\i0 \
Paul Edens\
\f2\i Dutch localization
\f0\i0 \
Kyunghwan Kim\
\f2\i Korean localization
\f0\i0 \
Mario Klebsch\
\f2\i Non-US keyboard support
\f0\i0 \
Torrey T. Lyons\
\f2\i Project Lead
\f0\i0 \
Andreas Monitzer\
\f2\i German localization
\f0\i0 \
Patrik Montgomery\
\f2\i Swedish localization
\f0\i0 \
Greg Parker\
\f2\i Rootless support
\f0\i0 \
Toshimitsu Tanaka\
\f2\i Japanese localization
\f0\i0 \
Olivier Verdier\
\f2\i French localization
\f0\i0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f1\b \cf0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\cf0 Special Thanks:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Devin Poolman and Zero G Software, Inc.\
\f2\i Installer
\f0\i0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\f1\b \cf0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\cf0 XonX Team Members\
Contributing to XFree86 4.1:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Rob Braun\
\f2\i Darwin x86 support
\f0\i0 \
Torrey T. Lyons\
\f2\i Project Lead
\f0\i0 \
Andreas Monitzer\
\f2\i Cocoa version of XDarwin front end
\f0\i0 \
Greg Parker\
\f2\i Original Quartz implementation
\f0\i0 \
Christoph Pfisterer\
\f2\i Dynamic shared libraries
\f0\i0 \
Toshimitsu Tanaka\
\f2\i Japanese localization
\f0\i0 \
\
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\f1\b \cf0 Special Thanks:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 Tiago Ribeiro\
\f2\i XDarwin icon
\f0\i0 \
\
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\f1\b \cf0 History:
\f0\b0 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 John Carmack\
\f2\i Original XFree86 port to Mac OS X Server
\f0\i0 \
Dave Zarzycki\
\f2\i XFree86 4.0 port to Darwin 1.0
\f0\i0 \
Torrey T. Lyons\
\f2\i Integration into XFree86 Project for 4.0.2}

View File

@@ -1,72 +0,0 @@
{
IBClasses = (
{
ACTIONS = {showHelp = id; };
CLASS = FirstResponder;
LANGUAGE = ObjC;
SUPERCLASS = NSObject;
},
{
ACTIONS = {close = id; pickFile = id; saveChanges = id; setKey = id; };
CLASS = Preferences;
LANGUAGE = ObjC;
OUTLETS = {
addToPathButton = id;
addToPathField = id;
button2ModifiersMatrix = id;
button3ModifiersMatrix = id;
depthButton = id;
displayField = id;
dockSwitchButton = id;
fakeButton = id;
keymapFileField = id;
modeMatrix = id;
modeWindowButton = id;
mouseAccelChangeButton = id;
startupHelpButton = id;
switchKeyButton = id;
systemBeepButton = id;
useDefaultShellMatrix = id;
useOtherShellField = id;
useXineramaButton = id;
window = id;
};
SUPERCLASS = NSObject;
},
{
CLASS = XApplication;
LANGUAGE = ObjC;
OUTLETS = {preferences = id; xserver = id; };
SUPERCLASS = NSApplication;
},
{
ACTIONS = {
bringAllToFront = id;
closeHelpAndShow = id;
itemSelected = id;
nextWindow = id;
previousWindow = id;
showAction = id;
showSwitchPanel = id;
startFullScreen = id;
startRootless = id;
};
CLASS = XServer;
LANGUAGE = ObjC;
OUTLETS = {
dockMenu = NSMenu;
helpWindow = NSWindow;
modeWindow = NSWindow;
startFullScreenButton = NSButton;
startRootlessButton = NSButton;
startupHelpButton = NSButton;
startupModeButton = NSButton;
switchWindow = NSPanel;
windowMenu = NSMenu;
windowSeparator = NSMenuItem;
};
SUPERCLASS = NSObject;
}
);
IBVersion = 1;
}

Binary file not shown.

View File

@@ -1,37 +0,0 @@
BINDIR = ${bindir}
include $(top_srcdir)/cpprules.in
XINITDIR = $(libdir)/X11/xinit
XDEFS = \
-DX_VERSION="$(PLIST_VERSION_STRING)" \
-DX_PRE_RELEASE="$(PRE)" \
-DX_REL_DATE="$(XORG_DATE)" \
-DX_VENDOR_NAME="$(VENDOR_STRING)" \
-DX_VENDOR_LINK="$(PLIST_VENDOR_WEB)"
resourcesdir = @APPLE_APPLICATIONS_DIR@/XDarwin.app/Contents/Resources
kolprojdir = $(resourcesdir)/ko.lproj
kolproj_DATA = \
XDarwinHelp.html \
InfoPlist.strings \
Credits.rtf Localizable.strings
kolprojnibdir = $(kolprojdir)/MainMenu.nib
kolprojnib_DATA = MainMenu.nib/classes.nib MainMenu.nib/objects.nib
InfoPlist.strings: $(srcdir)/../English.lproj/InfoPlist.strings.cpp
$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) | $(SED) -e's/__quote__/"/g' > $@
XDarwinHelp.html: XDarwinHelp.html.cpp
$(RAWCPP) $(RAWCPPFLAGS) $(XDEFS) $(CPP_FILES_FLAGS) $< | $(CPP_SED_MAGIC) > $@
CLEANFILES = XDarwinHelp.html InfoPlist.strings
EXTRA_DIST = \
Credits.rtf Localizable.strings \
Localizable.strings \
MainMenu.nib/classes.nib \
MainMenu.nib/objects.nib \
XDarwinHelp.html.cpp

View File

@@ -1,94 +0,0 @@
<html>
<head>
<title>XDarwin Help</title>
</head>
<body>
<center>
<h1>XDarwin X Server for Mac OS X</h1>
X_VENDOR_NAME X_VERSION<br>
Release Date: X_REL_DATE
</center>
<h2>Contents</h2>
<ol>
<li><A HREF="#notice">Important Notice</A></li>
<li><A HREF="#usage">Usage</A></li>
<li><A HREF="#path">Setting Your Path</A></li>
<li><A HREF="#prefs">User Preferences</A></li>
<li><A HREF="#license">License</A></li>
</ol>
<center>
<h2><a NAME="notice">Important Notice</a></h2>
</center>
<blockquote>
#if X_PRE_RELEASE
This is a pre-release version of XDarwin, and is not supported in any way. Bugs may be reported and patches may be submitted to the <A HREF="http://sourceforge.net/projects/xonx/">XonX project page</A> at SourceForge. Before reporting bugs in pre-release versions, please check the latest version from <A HREF="http://sourceforge.net/projects/xonx/">XonX</A> or the X_VENDOR_LINK.
#else
If the server is older than 6-12 months, or if your hardware is newer than the above date, look for a newer version before reporting problems. Bugs may be reported and patches may be submitted to the <A HREF="http://sourceforge.net/projects/xonx/">XonX project page</A> at SourceForge.
#endif
</blockquote>
<blockquote>
This software is distributed under the terms of the <A HREF="#license">MIT X11 / X Consortium License</A> and is provided AS IS, with no warranty. Please read the <A HREF="#license">License</A> before using.</blockquote>
<h2><a NAME="usage">Usage</a></h2>
<p>XDarwin is a freely redistributable open-source X server for the <a HREF="http://www.x.org/">X Window System</a>. This version of XDarwin was produced by the X_VENDOR_LINK. XDarwin runs on Mac OS X in full screen or rootless modes.</p>
<p>In full screen mode, when the X window system is active, it takes over the entire screen. You can switch back to the Mac OS X desktop by holding down Command-Option-A. This key combination can be changed in the user preferences. From the Mac OS X desktop, click on the XDarwin icon in the Dock to switch back to the X window system. (You can change this behavior in the user preferences so that you must click the XDarwin icon in the floating switch window instead.)</p>
<p>In rootless mode, the X window system and Aqua share your display. The root window of the X11 display is the size of the screen and contains all the other windows. The X11 root window is not displayed in rootless mode as Aqua handles the desktop background.</p>
<h3>Multi-Button Mouse Emulation</h3>
<p>Many X11 applications rely on the use of a 3-button mouse. You can emulate a 3-button mouse with a single button by holding down various modifier keys while you click the mouse button. This is controlled by settings in the "Multi-Button Mouse Emulation" section of the "General" preferences. By default, emulation is on and holding down the command key and clicking the mouse button will simulate clicking the second mouse button. Holding down the option key and clicking will simulate the third button. You can change to any combination of modifiers to emulate buttons two and three in the preferences. Note, even if the modifiers keys are mapped to some other key with xmodmap, you still must use the actual keys specified in the preferences for multi-button mouse emulation.</p>
<h2><a NAME="path">Setting Your Path</a></h2>
<p>Your path is the list of directories to be searched for executable commands. The X11 commands are located in <code>/usr/X11R6/bin</code>, which needs to be added to your path. XDarwin does this for you by default and can also add additional directories where you have installed command line applications.</p>
<p>More experienced users will have already set their path correctly using the initialization files for their shell. In this case, you can inform XDarwin not to modify your path in the preferences. XDarwin launches the initial X11 clients in the user's default login shell. (An alternate shell can also be specified in the preferences.) The way to set the path depends on the shell you are using. This is described in the man page documentation for the shell.</p>
<p>In addition you may also want to add the X11 man pages to the list of pages to be searched when you are looking for documentation. The X11 man pages are located in <code>/usr/X11R6/man</code> and the <code>MANPATH</code> environment variable contains the list of directories to search.</p>
<h2><a NAME="prefs">User Preferences</a></h2>
<p>A number of options may be set from the user preferences, accessible from the "Preferences..." menu item in the "XDarwin" menu. The options listed as start up options will not take effect until you have restarted XDarwin. All other options take effect immediately. The various options are described below:</p>
<h3>General</h3>
<ul>
<li><b>Use System beep for X11:</b> When enabled the standard Mac OS X alert sound is used as the X11 bell. When disabled (default) a simple tone is used.</li>
<li><b>Allow X11 to change mouse acceleration:</b> In a standard X window system implementation, the window manager can change the mouse acceleration. This can lead to confusion as the mouse acceleration may be set to different values by the Mac OS X System Preferences and the X window manager. By default, X11 is not allowed to change the mouse acceleration to avoid this problem.</li>
<li><b>Multi-Button Mouse Emulation:</b> This is described above under <a HREF="#usage">Usage</a>. When emulation is enabled the selected modifiers must be held down when the mouse button is pushed to emulate the second or third mouse buttons.</li>
</ul>
<h3>Start Up</h3>
<ul>
<li><b>Default Mode:</b> If the user does not indicate whether to run in full screen or rootless mode, the mode specified here will be used.</li>
<li><b>Show mode pick panel on startup:</b> By default, a panel is displayed when XDarwin is started to allow the user to choose between full screen or rootless mode. If this option is turned off, the default mode will be started automatically.</li>
<li><b>X11 Display number:</b> X11 allows there to be multiple displays managed by separate X servers on a single computer. The user may specify an integer display number for XDarwin to use if more than one X server is going to be run simultaneously.</li>
<li><b>Allow Xinerama multiple monitor support:</b> XDarwin supports multiple monitors with Xinerama, which treats all monitors as being part of one large rectangular screen. You can disable Xinerama with this option, but currently XDarwin does not handle multiple monitors correctly without it. If you only have a single monitor, Xinerama is automatically disabled.</li>
<li><b>Keymapping File:</b> A keymapping file is read at startup and translated to an X11 keymap. Keymapping files, available for a wide variety of languages, are found in <code>/System/Library/Keyboards</code>.</li>
<li><b>Starting First X11 Clients:</b> When XDarwin is started from the Finder, it will run <code>xinit</code> to launch the X window manager and other X clients. (See "<code>man xinit</code>" for more information.) Before XDarwin runs <code>xinit</code> it will add the specified directories to the user's path. By default only <code>/usr/X11R6/bin</code> is added. Additional directories may added, separated by a colon. The X clients are started in the user's default login shell so that the user's shell initialization files are read. If desired, an alternate shell may be specified.</li>
</ul>
<h3>Full Screen</h3>
<ul>
<li><b>Key combination button:</b> Click this button and then press any number of modifiers followed by a standard key to change the key combination to switch between Aqua and X11.</li>
<li><b>Click on icon in Dock switches to X11:</b> Enable this to activate switching to X11 by clicking on the XDarwin icon in the Dock. On some versions of Mac OS X, switching by clicking in the Dock can cause the cursor to disappear on returning to Aqua.</li>
<li><b>Show help on startup:</b> This will show an introductory splash screen when XDarwin is started in full screen mode.</li>
<li><b>Color bit depth:</b> In full screen mode, the X11 display can use a different color bit depth than is used by Aqua. If "Current" is specified, the depth used by Aqua when XDarwin starts will be used. Otherwise 8, 15, or 24 bits may be specified.</li>
</ul>
<h2><a NAME="license">License</a></h2>
The main license for XDarwin is based on the traditional MIT X11 / X Consortium License, which does not impose any conditions on modification or redistribution of source code or binaries other than requiring that copyright/license notices are left intact. For more information and additional copyright/licensing notices covering some sections of the code, please refer to the source code.
<H3><A NAME="3"></A>X Consortium License</H3>
<p>Copyright (C) 1996 X Consortium</p>
<p>Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without
limitation the rights to use, copy, modify, merge, publish, distribute,
sublicense, and/or sell copies of the Software, and to permit persons to
whom the Software is furnished to do so, subject to the following conditions:</p>
<p>The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.</p>
<p>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 X CONSORTIUM 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.</p>
<p>Except as contained in this notice, the name of the X Consortium 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 X Consortium.</p>
<p>X Window System is a trademark of X Consortium, Inc.</p>
</body>
</html>

View File

@@ -1,22 +0,0 @@
XCOMM!/bin/sh
XCOMM This script is used by XDarwin to start X clients when XDarwin is
XCOMM launched from the Finder.
userclientrc=$HOME/.xinitrc
sysclientrc=XINITDIR/xinitrc
clientargs=""
if [ -f $userclientrc ]; then
clientargs=$userclientrc
else if [ -f $sysclientrc ]; then
clientargs=$sysclientrc
fi
fi
if [ "x$2" != "x" ]; then
PATH="$PATH:$2"
export PATH
fi
exec xinit $clientargs -- XBINDIR/XDarwinStartup "$1" -idle

View File

@@ -1,17 +0,0 @@
noinst_LIBRARIES = libiokit.a
AM_CFLAGS = @XORG_CFLAGS@ @DIX_CFLAGS@
INCLUDES = -I. -I.. -I$(srcdir) -I$(srcdir)/.. @XORG_INCS@
AM_DEFS =
if XQUARTZ
AM_DEFS += -DDARWIN_WITH_QUARTZ -DXFree86Server
XQUARTZ_SUBDIRS = bundle quartz
endif
DEFS = @DEFS@ $(AM_DEFS)
libiokit_a_SOURCES = xfIOKit.c \
xfIOKitCursor.c \
xfIOKitStartup.c
EXTRA_DIST = \
xfIOKit.h

View File

@@ -1,773 +0,0 @@
/**************************************************************
*
* IOKit support for the Darwin X Server
*
* HISTORY:
* Original port to Mac OS X Server by John Carmack
* Port to Darwin 1.0 by Dave Zarzycki
* Significantly rewritten for XFree86 4.0.1 by Torrey Lyons
*
**************************************************************/
/*
* Copyright (c) 2001-2004 Torrey T. Lyons. All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
* holders shall not be used in advertising or otherwise to promote the sale,
* use or other dealings in this Software without prior written authorization.
*/
#include <dix-config.h>
#include <X11/X.h>
#include <X11/Xproto.h>
#include "os.h"
#include "servermd.h"
#include "inputstr.h"
#include "scrnintstr.h"
#include "mi.h"
#include "mibstore.h"
#include "mipointer.h"
#include "micmap.h"
#include "shadow.h"
#include <sys/types.h>
#include <sys/time.h>
#include <unistd.h>
#include <fcntl.h>
#include <pthread.h>
#include <assert.h>
#include <mach/mach_interface.h>
#define NO_CFPLUGIN
#include <IOKit/IOKitLib.h>
#include <IOKit/hidsystem/IOHIDShared.h>
#include <IOKit/hidsystem/event_status_driver.h>
#include <IOKit/graphics/IOGraphicsLib.h>
// Define this to work around bugs in the display drivers for
// older PowerBook G3's. If the X server starts without this
// #define, you don't need it.
#undef OLD_POWERBOOK_G3
#include "darwin.h"
#include "xfIOKit.h"
// Globals
int xfIOKitScreenIndex = 0;
io_connect_t xfIOKitInputConnect = 0;
static pthread_t inputThread;
static EvGlobals * evg;
static mach_port_t masterPort;
static mach_port_t notificationPort;
static IONotificationPortRef NotificationPortRef;
static mach_port_t pmNotificationPort;
static io_iterator_t fbIter;
/*
* XFIOKitStoreColors
* This is a callback from X to change the hardware colormap
* when using PsuedoColor.
*/
static void XFIOKitStoreColors(
ColormapPtr pmap,
int numEntries,
xColorItem *pdefs)
{
kern_return_t kr;
int i;
IOColorEntry *newColors;
ScreenPtr pScreen = pmap->pScreen;
XFIOKitScreenPtr iokitScreen = XFIOKIT_SCREEN_PRIV(pScreen);
assert( newColors = (IOColorEntry *)
xalloc( numEntries*sizeof(IOColorEntry) ));
// Convert xColorItem values to IOColorEntry
// assume the colormap is PsuedoColor
// as we do not support DirectColor
for (i = 0; i < numEntries; i++) {
newColors[i].index = pdefs[i].pixel;
newColors[i].red = pdefs[i].red;
newColors[i].green = pdefs[i].green;
newColors[i].blue = pdefs[i].blue;
}
kr = IOFBSetCLUT( iokitScreen->fbService, 0, numEntries,
kSetCLUTByValue, newColors );
kern_assert( kr );
xfree( newColors );
}
/*
* DarwinModeBell
* FIXME
*/
void DarwinModeBell(
int loud,
DeviceIntPtr pDevice,
pointer ctrl,
int fbclass)
{
}
/*
* DarwinModeGiveUp
* Closes the connections to IOKit services
*/
void DarwinModeGiveUp( void )
{
int i;
// we must close the HID System first
// because it is a client of the framebuffer
NXCloseEventStatus( darwinParamConnect );
IOServiceClose( xfIOKitInputConnect );
for (i = 0; i < screenInfo.numScreens; i++) {
XFIOKitScreenPtr iokitScreen =
XFIOKIT_SCREEN_PRIV(screenInfo.screens[i]);
IOServiceClose( iokitScreen->fbService );
}
}
/*
* ClearEvent
* Clear an event from the HID System event queue
*/
static void ClearEvent(NXEvent * ep)
{
static NXEvent nullEvent = {NX_NULLEVENT, {0, 0 }, 0, -1, 0 };
*ep = nullEvent;
ep->data.compound.subType = ep->data.compound.misc.L[0] =
ep->data.compound.misc.L[1] = 0;
}
/*
* XFIOKitHIDThread
* Read the HID System event queue, translate it to an X event,
* and queue it for processing.
*/
static void *XFIOKitHIDThread(void *unused)
{
for (;;) {
NXEQElement *oldHead;
mach_msg_return_t kr;
mach_msg_empty_rcv_t msg;
kr = mach_msg((mach_msg_header_t*) &msg, MACH_RCV_MSG, 0,
sizeof(msg), notificationPort, 0, MACH_PORT_NULL);
kern_assert(kr);
while (evg->LLEHead != evg->LLETail) {
NXEvent ev;
xEvent xe;
// Extract the next event from the kernel queue
oldHead = (NXEQElement*)&evg->lleq[evg->LLEHead];
ev_lock(&oldHead->sema);
ev = oldHead->event;
ClearEvent(&oldHead->event);
evg->LLEHead = oldHead->next;
ev_unlock(&oldHead->sema);
memset(&xe, 0, sizeof(xe));
// These fields should be filled in for every event
xe.u.keyButtonPointer.rootX = ev.location.x;
xe.u.keyButtonPointer.rootY = ev.location.y;
xe.u.keyButtonPointer.time = GetTimeInMillis();
switch( ev.type ) {
case NX_MOUSEMOVED:
xe.u.u.type = MotionNotify;
break;
case NX_LMOUSEDOWN:
xe.u.u.type = ButtonPress;
xe.u.u.detail = 1;
break;
case NX_LMOUSEUP:
xe.u.u.type = ButtonRelease;
xe.u.u.detail = 1;
break;
// A newer kernel generates multi-button events with
// NX_SYSDEFINED. Button 2 isn't handled correctly by
// older kernels anyway. Just let NX_SYSDEFINED events
// handle these.
#if 0
case NX_RMOUSEDOWN:
xe.u.u.type = ButtonPress;
xe.u.u.detail = 2;
break;
case NX_RMOUSEUP:
xe.u.u.type = ButtonRelease;
xe.u.u.detail = 2;
break;
#endif
case NX_KEYDOWN:
xe.u.u.type = KeyPress;
xe.u.u.detail = ev.data.key.keyCode;
break;
case NX_KEYUP:
xe.u.u.type = KeyRelease;
xe.u.u.detail = ev.data.key.keyCode;
break;
case NX_FLAGSCHANGED:
xe.u.u.type = kXDarwinUpdateModifiers;
xe.u.clientMessage.u.l.longs0 = ev.flags;
break;
case NX_SYSDEFINED:
if (ev.data.compound.subType == 7) {
xe.u.u.type = kXDarwinUpdateButtons;
xe.u.clientMessage.u.l.longs0 =
ev.data.compound.misc.L[0];
xe.u.clientMessage.u.l.longs1 =
ev.data.compound.misc.L[1];
} else {
continue;
}
break;
case NX_SCROLLWHEELMOVED:
xe.u.u.type = kXDarwinScrollWheel;
xe.u.clientMessage.u.s.shorts0 =
ev.data.scrollWheel.deltaAxis1;
break;
default:
continue;
}
DarwinEQEnqueue(&xe);
}
}
return NULL;
}
/*
* XFIOKitPMThread
* Handle power state notifications
*/
static void *XFIOKitPMThread(void *arg)
{
ScreenPtr pScreen = (ScreenPtr)arg;
XFIOKitScreenPtr iokitScreen = XFIOKIT_SCREEN_PRIV(pScreen);
for (;;) {
mach_msg_return_t kr;
mach_msg_empty_rcv_t msg;
kr = mach_msg((mach_msg_header_t*) &msg, MACH_RCV_MSG, 0,
sizeof(msg), pmNotificationPort, 0, MACH_PORT_NULL);
kern_assert(kr);
// display is powering down
if (msg.header.msgh_id == 0) {
IOFBAcknowledgePM( iokitScreen->fbService );
xf86SetRootClip(pScreen, FALSE);
}
// display just woke up
else if (msg.header.msgh_id == 1) {
xf86SetRootClip(pScreen, TRUE);
}
}
return NULL;
}
/*
* SetupFBandHID
* Setup an IOFramebuffer service and connect the HID system to it.
*/
static Bool SetupFBandHID(
int index,
DarwinFramebufferPtr dfb,
XFIOKitScreenPtr iokitScreen)
{
kern_return_t kr;
io_service_t service;
io_connect_t fbService;
vm_address_t vram;
vm_size_t shmemSize;
int i;
UInt32 numModes;
IODisplayModeInformation modeInfo;
IODisplayModeID displayMode, *allModes;
IOIndex displayDepth;
IOFramebufferInformation fbInfo;
IOPixelInformation pixelInfo;
StdFBShmem_t *cshmem;
// find and open the IOFrameBuffer service
service = IOIteratorNext(fbIter);
if (service == 0)
return FALSE;
kr = IOServiceOpen( service, mach_task_self(),
kIOFBServerConnectType, &iokitScreen->fbService );
IOObjectRelease( service );
if (kr != KERN_SUCCESS) {
ErrorF("Failed to connect as window server to screen %i.\n", index);
return FALSE;
}
fbService = iokitScreen->fbService;
// create the slice of shared memory containing cursor state data
kr = IOFBCreateSharedCursor( fbService,
kIOFBCurrentShmemVersion,
32, 32 );
if (kr != KERN_SUCCESS)
return FALSE;
// Register for power management events for the framebuffer's device
kr = IOCreateReceivePort(kOSNotificationMessageID, &pmNotificationPort);
kern_assert(kr);
kr = IOConnectSetNotificationPort( fbService, 0,
pmNotificationPort, 0 );
if (kr != KERN_SUCCESS) {
ErrorF("Power management registration failed.\n");
}
// SET THE SCREEN PARAMETERS
// get the current screen resolution, refresh rate and depth
kr = IOFBGetCurrentDisplayModeAndDepth( fbService,
&displayMode,
&displayDepth );
if (kr != KERN_SUCCESS)
return FALSE;
// use the current screen resolution if the user
// only wants to change the refresh rate
if (darwinDesiredRefresh != -1 && darwinDesiredWidth == 0) {
kr = IOFBGetDisplayModeInformation( fbService,
displayMode,
&modeInfo );
if (kr != KERN_SUCCESS)
return FALSE;
darwinDesiredWidth = modeInfo.nominalWidth;
darwinDesiredHeight = modeInfo.nominalHeight;
}
// use the current resolution and refresh rate
// if the user doesn't have a preference
if (darwinDesiredWidth == 0) {
// change the pixel depth if desired
if (darwinDesiredDepth != -1) {
kr = IOFBGetDisplayModeInformation( fbService,
displayMode,
&modeInfo );
if (kr != KERN_SUCCESS)
return FALSE;
if (modeInfo.maxDepthIndex < darwinDesiredDepth) {
ErrorF("Discarding screen %i:\n", index);
ErrorF("Current screen resolution does not support desired pixel depth.\n");
return FALSE;
}
displayDepth = darwinDesiredDepth;
kr = IOFBSetDisplayModeAndDepth( fbService, displayMode,
displayDepth );
if (kr != KERN_SUCCESS)
return FALSE;
}
// look for display mode with correct resolution and refresh rate
} else {
// get an array of all supported display modes
kr = IOFBGetDisplayModeCount( fbService, &numModes );
if (kr != KERN_SUCCESS)
return FALSE;
assert(allModes = (IODisplayModeID *)
xalloc( numModes * sizeof(IODisplayModeID) ));
kr = IOFBGetDisplayModes( fbService, numModes, allModes );
if (kr != KERN_SUCCESS)
return FALSE;
for (i = 0; i < numModes; i++) {
kr = IOFBGetDisplayModeInformation( fbService, allModes[i],
&modeInfo );
if (kr != KERN_SUCCESS)
return FALSE;
if (modeInfo.flags & kDisplayModeValidFlag &&
modeInfo.nominalWidth == darwinDesiredWidth &&
modeInfo.nominalHeight == darwinDesiredHeight) {
if (darwinDesiredDepth == -1)
darwinDesiredDepth = modeInfo.maxDepthIndex;
if (modeInfo.maxDepthIndex < darwinDesiredDepth) {
ErrorF("Discarding screen %i:\n", index);
ErrorF("Desired screen resolution does not support desired pixel depth.\n");
return FALSE;
}
if ((darwinDesiredRefresh == -1 ||
(darwinDesiredRefresh << 16) == modeInfo.refreshRate)) {
displayMode = allModes[i];
displayDepth = darwinDesiredDepth;
kr = IOFBSetDisplayModeAndDepth(fbService,
displayMode,
displayDepth);
if (kr != KERN_SUCCESS)
return FALSE;
break;
}
}
}
xfree( allModes );
if (i >= numModes) {
ErrorF("Discarding screen %i:\n", index);
ErrorF("Desired screen resolution or refresh rate is not supported.\n");
return FALSE;
}
}
kr = IOFBGetPixelInformation( fbService, displayMode, displayDepth,
kIOFBSystemAperture, &pixelInfo );
if (kr != KERN_SUCCESS)
return FALSE;
#ifdef __i386__
/* x86 in 8bit mode currently needs fixed color map... */
if (pixelInfo.bitsPerComponent == 8 &&
pixelInfo.componentCount == 1)
{
pixelInfo.pixelType = kIOFixedCLUTPixels;
}
#endif
#ifdef OLD_POWERBOOK_G3
if (pixelInfo.pixelType == kIOCLUTPixels)
pixelInfo.pixelType = kIOFixedCLUTPixels;
#endif
kr = IOFBGetFramebufferInformationForAperture( fbService,
kIOFBSystemAperture,
&fbInfo );
if (kr != KERN_SUCCESS)
return FALSE;
// FIXME: 1x1 IOFramebuffers are sometimes used to indicate video
// outputs without a monitor connected to them. Since IOKit Xinerama
// does not really work, this often causes problems on PowerBooks.
// For now we explicitly check and ignore these screens.
if (fbInfo.activeWidth <= 1 || fbInfo.activeHeight <= 1) {
ErrorF("Discarding screen %i:\n", index);
ErrorF("Invalid width or height.\n");
return FALSE;
}
kr = IOConnectMapMemory( fbService, kIOFBCursorMemory,
mach_task_self(), (vm_address_t *) &cshmem,
&shmemSize, kIOMapAnywhere );
if (kr != KERN_SUCCESS)
return FALSE;
iokitScreen->cursorShmem = cshmem;
kr = IOConnectMapMemory( fbService, kIOFBSystemAperture,
mach_task_self(), &vram, &shmemSize,
kIOMapAnywhere );
if (kr != KERN_SUCCESS)
return FALSE;
iokitScreen->framebuffer = (void*)vram;
dfb->x = cshmem->screenBounds.minx;
dfb->y = cshmem->screenBounds.miny;
dfb->width = fbInfo.activeWidth;
dfb->height = fbInfo.activeHeight;
dfb->pitch = fbInfo.bytesPerRow;
dfb->bitsPerPixel = fbInfo.bitsPerPixel;
dfb->colorBitsPerPixel = pixelInfo.componentCount *
pixelInfo.bitsPerComponent;
dfb->bitsPerComponent = pixelInfo.bitsPerComponent;
// allocate shadow framebuffer
iokitScreen->shadowPtr = xalloc(dfb->pitch * dfb->height);
dfb->framebuffer = iokitScreen->shadowPtr;
// Note: Darwin kIORGBDirectPixels = X TrueColor, not DirectColor
if (pixelInfo.pixelType == kIORGBDirectPixels) {
dfb->colorType = TrueColor;
} else if (pixelInfo.pixelType == kIOCLUTPixels) {
dfb->colorType = PseudoColor;
} else if (pixelInfo.pixelType == kIOFixedCLUTPixels) {
dfb->colorType = StaticColor;
}
// Inform the HID system that the framebuffer is also connected to it.
kr = IOConnectAddClient( xfIOKitInputConnect, fbService );
kern_assert( kr );
// We have to have added at least one screen
// before we can enable the cursor.
kr = IOHIDSetCursorEnable(xfIOKitInputConnect, TRUE);
kern_assert( kr );
return TRUE;
}
/*
* DarwinModeAddScreen
* IOKit specific initialization for each screen.
*/
Bool DarwinModeAddScreen(
int index,
ScreenPtr pScreen)
{
DarwinFramebufferPtr dfb = SCREEN_PRIV(pScreen);
XFIOKitScreenPtr iokitScreen;
// allocate space for private per screen storage
iokitScreen = xalloc(sizeof(XFIOKitScreenRec));
XFIOKIT_SCREEN_PRIV(pScreen) = iokitScreen;
// setup hardware framebuffer
iokitScreen->fbService = 0;
if (! SetupFBandHID(index, dfb, iokitScreen)) {
if (iokitScreen->fbService) {
IOServiceClose(iokitScreen->fbService);
}
return FALSE;
}
return TRUE;
}
/*
* XFIOKitShadowUpdate
* Update the damaged regions of the shadow framebuffer on the screen.
*/
static void XFIOKitShadowUpdate(ScreenPtr pScreen,
shadowBufPtr pBuf)
{
DarwinFramebufferPtr dfb = SCREEN_PRIV(pScreen);
XFIOKitScreenPtr iokitScreen = XFIOKIT_SCREEN_PRIV(pScreen);
RegionPtr damage = &pBuf->damage;
int numBox = REGION_NUM_RECTS(damage);
BoxPtr pBox = REGION_RECTS(damage);
int pitch = dfb->pitch;
int bpp = dfb->bitsPerPixel/8;
// Loop through all the damaged boxes
while (numBox--) {
int width, height, offset;
unsigned char *src, *dst;
width = (pBox->x2 - pBox->x1) * bpp;
height = pBox->y2 - pBox->y1;
offset = (pBox->y1 * pitch) + (pBox->x1 * bpp);
src = iokitScreen->shadowPtr + offset;
dst = iokitScreen->framebuffer + offset;
while (height--) {
memcpy(dst, src, width);
dst += pitch;
src += pitch;
}
// Get the next box
pBox++;
}
}
/*
* DarwinModeSetupScreen
* Finalize IOKit specific initialization of each screen.
*/
Bool DarwinModeSetupScreen(
int index,
ScreenPtr pScreen)
{
DarwinFramebufferPtr dfb = SCREEN_PRIV(pScreen);
pthread_t pmThread;
// initalize cursor support
if (! XFIOKitInitCursor(pScreen)) {
return FALSE;
}
// initialize shadow framebuffer support
if (! shadowInit(pScreen, XFIOKitShadowUpdate, NULL)) {
ErrorF("Failed to initalize shadow framebuffer for screen %i.\n",
index);
return FALSE;
}
// initialize colormap handling as needed
if (dfb->colorType == PseudoColor) {
pScreen->StoreColors = XFIOKitStoreColors;
}
// initialize power manager handling
pthread_create( &pmThread, NULL, XFIOKitPMThread,
(void *) pScreen );
return TRUE;
}
/*
* DarwinModeInitOutput
* One-time initialization of IOKit output support.
*/
void DarwinModeInitOutput(
int argc,
char **argv)
{
static unsigned long generation = 0;
kern_return_t kr;
io_iterator_t iter;
io_service_t service;
vm_address_t shmem;
vm_size_t shmemSize;
ErrorF("Display mode: IOKit\n");
// Allocate private storage for each screen's IOKit specific info
if (generation != serverGeneration) {
xfIOKitScreenIndex = AllocateScreenPrivateIndex();
generation = serverGeneration;
}
kr = IOMasterPort(bootstrap_port, &masterPort);
kern_assert( kr );
// Find and open the HID System Service
// Do this now to be sure the Mac OS X window server is not running.
kr = IOServiceGetMatchingServices( masterPort,
IOServiceMatching( kIOHIDSystemClass ),
&iter );
kern_assert( kr );
assert( service = IOIteratorNext( iter ) );
kr = IOServiceOpen( service, mach_task_self(), kIOHIDServerConnectType,
&xfIOKitInputConnect );
if (kr != KERN_SUCCESS) {
ErrorF("Failed to connect to the HID System as the window server!\n");
#ifdef DARWIN_WITH_QUARTZ
FatalError("Quit the Mac OS X window server or use the -quartz option.\n");
#else
FatalError("Make sure you have quit the Mac OS X window server.\n");
#endif
}
IOObjectRelease( service );
IOObjectRelease( iter );
// Setup the event queue in memory shared by the kernel and X server
kr = IOHIDCreateSharedMemory( xfIOKitInputConnect,
kIOHIDCurrentShmemVersion );
kern_assert( kr );
kr = IOConnectMapMemory( xfIOKitInputConnect, kIOHIDGlobalMemory,
mach_task_self(), &shmem, &shmemSize,
kIOMapAnywhere );
kern_assert( kr );
evg = (EvGlobals *)(shmem + ((EvOffsets *)shmem)->evGlobalsOffset);
assert(sizeof(EvGlobals) == evg->structSize);
NotificationPortRef = IONotificationPortCreate( masterPort );
notificationPort = IONotificationPortGetMachPort(NotificationPortRef);
kr = IOConnectSetNotificationPort( xfIOKitInputConnect,
kIOHIDEventNotification,
notificationPort, 0 );
kern_assert( kr );
evg->movedMask |= NX_MOUSEMOVEDMASK;
// find number of framebuffers
kr = IOServiceGetMatchingServices( masterPort,
IOServiceMatching( IOFRAMEBUFFER_CONFORMSTO ),
&fbIter );
kern_assert( kr );
darwinScreensFound = 0;
while ((service = IOIteratorNext(fbIter))) {
IOObjectRelease( service );
darwinScreensFound++;
}
IOIteratorReset(fbIter);
}
/*
* DarwinModeInitInput
* One-time initialization of IOKit input support.
*/
void DarwinModeInitInput(
int argc,
char **argv)
{
kern_return_t kr;
int fd[2];
kr = IOHIDSetEventsEnable(xfIOKitInputConnect, TRUE);
kern_assert( kr );
// Start event passing thread
assert( pipe(fd) == 0 );
darwinEventReadFD = fd[0];
darwinEventWriteFD = fd[1];
fcntl(darwinEventReadFD, F_SETFL, O_NONBLOCK);
pthread_create(&inputThread, NULL,
XFIOKitHIDThread, NULL);
}
/*
* DarwinModeProcessEvent
* Process IOKit specific events.
*/
void DarwinModeProcessEvent(
xEvent *xe)
{
// No mode specific events
ErrorF("Unknown X event caught: %d\n", xe->u.u.type);
}

View File

@@ -1,56 +0,0 @@
/*
xfIOKit.h
IOKit specific functions and definitions
*/
/*
* Copyright (c) 2001-2002 Torrey T. Lyons. All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
* holders shall not be used in advertising or otherwise to promote the sale,
* use or other dealings in this Software without prior written authorization.
*/
#ifndef _XFIOKIT_H
#define _XFIOKIT_H
#include <pthread.h>
#include <IOKit/graphics/IOFramebufferShared.h>
#include <X11/Xproto.h>
#include "screenint.h"
#include "darwin.h"
typedef struct {
io_connect_t fbService;
StdFBShmem_t *cursorShmem;
unsigned char *framebuffer;
unsigned char *shadowPtr;
} XFIOKitScreenRec, *XFIOKitScreenPtr;
#define XFIOKIT_SCREEN_PRIV(pScreen) ((XFIOKitScreenPtr) \
dixLookupPrivate(&pScreen->devPrivates, xfIOKitScreenKey))
extern DevPrivateKey xfIOKitScreenKey; // index into pScreen.devPrivates
extern io_connect_t xfIOKitInputConnect;
Bool XFIOKitInitCursor(ScreenPtr pScreen);
#endif /* _XFIOKIT_H */

View File

@@ -1,728 +0,0 @@
/**************************************************************
*
* Cursor support for Darwin X Server
*
* Three different cursor modes are possible:
* X (0) - tracking via Darwin kernel,
* display via X machine independent
* Kernel (1) - tracking and display via Darwin kernel
* (not currently supported)
* Hardware (2) - tracking and display via hardware
*
* The X software cursor uses the Darwin software cursor
* routines in IOFramebuffer.cpp to track the cursor, but
* displays the cursor image using the X machine
* independent display cursor routines in midispcur.c.
*
* The kernel cursor uses IOFramebuffer.cpp routines to
* track and display the cursor. This gives better
* performance as the display calls don't have to cross
* the kernel boundary. Unfortunately, this mode has
* synchronization issues with the user land X server
* and isn't currently used.
*
* Hardware cursor support lets the hardware handle these
* details.
*
* Kernel and hardware cursor mode only work for cursors
* up to a certain size, currently 16x16 pixels. If a
* bigger cursor is set, we fallback to X cursor mode.
*
* HISTORY:
* 1.0 by Torrey T. Lyons, October 30, 2000
*
**************************************************************/
/*
* Copyright (c) 2001-2002 Torrey T. Lyons. All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
* holders shall not be used in advertising or otherwise to promote the sale,
* use or other dealings in this Software without prior written authorization.
*/
#include <dix-config.h>
#include "scrnintstr.h"
#include "cursorstr.h"
#include "mipointrst.h"
#include "micmap.h"
#define NO_CFPLUGIN
#include <IOKit/graphics/IOGraphicsLib.h>
#include <IOKit/hidsystem/IOHIDLib.h>
#include "darwin.h"
#include "xfIOKit.h"
#include <assert.h>
#define DUMP_DARWIN_CURSOR FALSE
#define CURSOR_PRIV(pScreen) ((XFIOKitCursorScreenPtr) \
dixLookupPrivate(&pScreen->devPrivates, darwinCursorScreenKey))
// The cursors format are documented in IOFramebufferShared.h.
#define RGBto34WithGamma(red, green, blue) \
( 0x000F \
| (((red) & 0xF) << 12) \
| (((green) & 0xF) << 8) \
| (((blue) & 0xF) << 4) )
#define RGBto38WithGamma(red, green, blue) \
( 0xFF << 24 \
| (((red) & 0xFF) << 16) \
| (((green) & 0xFF) << 8) \
| (((blue) & 0xFF)) )
#define HighBitOf32 0x80000000
typedef struct {
Bool canHWCursor;
short cursorMode;
RecolorCursorProcPtr RecolorCursor;
InstallColormapProcPtr InstallColormap;
QueryBestSizeProcPtr QueryBestSize;
miPointerSpriteFuncPtr spriteFuncs;
ColormapPtr pInstalledMap;
} XFIOKitCursorScreenRec, *XFIOKitCursorScreenPtr;
static DevPrivateKey darwinCursorScreenKey = &darwinCursorScreenKey;
/*
===========================================================================
Pointer sprite functions
===========================================================================
*/
/*
Realizing the Darwin hardware cursor (ie. converting from the
X representation to the IOKit representation) is complicated
by the fact that we have three different potential cursor
formats to go to, one for each bit depth (8, 15, or 24).
The IOKit formats are documented in IOFramebufferShared.h.
X cursors are represented as two pieces, a source and a mask.
The mask is a bitmap indicating which parts of the cursor are
transparent and which parts are drawn. The source is a bitmap
indicating which parts of the non-transparent portion of the the
cursor should be painted in the foreground color and which should
be painted in the background color. The bitmaps are given in
32-bit format with least significant byte and bit first.
(This is opposite PowerPC Darwin.)
*/
typedef struct {
unsigned char image[CURSORWIDTH*CURSORHEIGHT];
unsigned char mask[CURSORWIDTH*CURSORHEIGHT];
} cursorPrivRec, *cursorPrivPtr;
/*
* XFIOKitRealizeCursor8
* Convert the X cursor representation to an 8-bit depth
* format for Darwin. This function assumes the maximum cursor
* width is a multiple of 8.
*/
static Bool
XFIOKitRealizeCursor8(
ScreenPtr pScreen,
CursorPtr pCursor)
{
cursorPrivPtr newCursor;
unsigned char *newSourceP, *newMaskP;
CARD32 *oldSourceP, *oldMaskP;
xColorItem fgColor, bgColor;
int index, x, y, rowPad;
int cursorWidth, cursorHeight;
ColormapPtr pmap;
// check cursor size just to be sure
cursorWidth = pCursor->bits->width;
cursorHeight = pCursor->bits->height;
if (cursorHeight > CURSORHEIGHT || cursorWidth > CURSORWIDTH)
return FALSE;
// get cursor colors in colormap
index = pScreen->myNum;
pmap = miInstalledMaps[index];
if (!pmap) return FALSE;
fgColor.red = pCursor->foreRed;
fgColor.green = pCursor->foreGreen;
fgColor.blue = pCursor->foreBlue;
FakeAllocColor(pmap, &fgColor);
bgColor.red = pCursor->backRed;
bgColor.green = pCursor->backGreen;
bgColor.blue = pCursor->backBlue;
FakeAllocColor(pmap, &bgColor);
FakeFreeColor(pmap, fgColor.pixel);
FakeFreeColor(pmap, bgColor.pixel);
// allocate memory for new cursor image
newCursor = xalloc( sizeof(cursorPrivRec) );
if (!newCursor)
return FALSE;
memset( newCursor->image, pScreen->blackPixel, CURSORWIDTH*CURSORHEIGHT );
memset( newCursor->mask, 0, CURSORWIDTH*CURSORHEIGHT );
// convert to 8-bit Darwin cursor format
oldSourceP = (CARD32 *) pCursor->bits->source;
oldMaskP = (CARD32 *) pCursor->bits->mask;
newSourceP = newCursor->image;
newMaskP = newCursor->mask;
rowPad = CURSORWIDTH - cursorWidth;
for (y = 0; y < cursorHeight; y++) {
for (x = 0; x < cursorWidth; x++) {
if (*oldSourceP & (HighBitOf32 >> x))
*newSourceP = fgColor.pixel;
else
*newSourceP = bgColor.pixel;
if (*oldMaskP & (HighBitOf32 >> x))
*newMaskP = 255;
else
*newSourceP = pScreen->blackPixel;
newSourceP++; newMaskP++;
}
oldSourceP++; oldMaskP++;
newSourceP += rowPad; newMaskP += rowPad;
}
// save the result
dixSetPrivate(&pCursor->devPrivates, pScreen, newCursor);
return TRUE;
}
/*
* XFIOKitRealizeCursor15
* Convert the X cursor representation to an 15-bit depth
* format for Darwin.
*/
static Bool
XFIOKitRealizeCursor15(
ScreenPtr pScreen,
CursorPtr pCursor)
{
unsigned short *newCursor;
unsigned short fgPixel, bgPixel;
unsigned short *newSourceP;
CARD32 *oldSourceP, *oldMaskP;
int x, y, rowPad;
int cursorWidth, cursorHeight;
// check cursor size just to be sure
cursorWidth = pCursor->bits->width;
cursorHeight = pCursor->bits->height;
if (cursorHeight > CURSORHEIGHT || cursorWidth > CURSORWIDTH)
return FALSE;
// allocate memory for new cursor image
newCursor = xalloc( CURSORWIDTH*CURSORHEIGHT*sizeof(short) );
if (!newCursor)
return FALSE;
memset( newCursor, 0, CURSORWIDTH*CURSORHEIGHT*sizeof(short) );
// calculate pixel values
fgPixel = RGBto34WithGamma( pCursor->foreRed, pCursor->foreGreen,
pCursor->foreBlue );
bgPixel = RGBto34WithGamma( pCursor->backRed, pCursor->backGreen,
pCursor->backBlue );
// convert to 15-bit Darwin cursor format
oldSourceP = (CARD32 *) pCursor->bits->source;
oldMaskP = (CARD32 *) pCursor->bits->mask;
newSourceP = newCursor;
rowPad = CURSORWIDTH - cursorWidth;
for (y = 0; y < cursorHeight; y++) {
for (x = 0; x < cursorWidth; x++) {
if (*oldMaskP & (HighBitOf32 >> x)) {
if (*oldSourceP & (HighBitOf32 >> x))
*newSourceP = fgPixel;
else
*newSourceP = bgPixel;
} else {
*newSourceP = 0;
}
newSourceP++;
}
oldSourceP++; oldMaskP++;
newSourceP += rowPad;
}
#if DUMP_DARWIN_CURSOR
// Write out the cursor
ErrorF("Cursor: 0x%x\n", pCursor);
ErrorF("Width = %i, Height = %i, RowPad = %i\n", cursorWidth,
cursorHeight, rowPad);
for (y = 0; y < cursorHeight; y++) {
newSourceP = newCursor + y*CURSORWIDTH;
for (x = 0; x < cursorWidth; x++) {
if (*newSourceP == fgPixel)
ErrorF("x");
else if (*newSourceP == bgPixel)
ErrorF("o");
else
ErrorF(" ");
newSourceP++;
}
ErrorF("\n");
}
#endif
// save the result
dixSetPrivate(&pCursor->devPrivates, pScreen, newCursor);
return TRUE;
}
/*
* XFIOKitRealizeCursor24
* Convert the X cursor representation to an 24-bit depth
* format for Darwin. This function assumes the maximum cursor
* width is a multiple of 8.
*/
static Bool
XFIOKitRealizeCursor24(
ScreenPtr pScreen,
CursorPtr pCursor)
{
unsigned int *newCursor;
unsigned int fgPixel, bgPixel;
unsigned int *newSourceP;
CARD32 *oldSourceP, *oldMaskP;
int x, y, rowPad;
int cursorWidth, cursorHeight;
// check cursor size just to be sure
cursorWidth = pCursor->bits->width;
cursorHeight = pCursor->bits->height;
if (cursorHeight > CURSORHEIGHT || cursorWidth > CURSORWIDTH)
return FALSE;
// allocate memory for new cursor image
newCursor = xalloc( CURSORWIDTH*CURSORHEIGHT*sizeof(int) );
if (!newCursor)
return FALSE;
memset( newCursor, 0, CURSORWIDTH*CURSORHEIGHT*sizeof(int) );
// calculate pixel values
fgPixel = RGBto38WithGamma( pCursor->foreRed, pCursor->foreGreen,
pCursor->foreBlue );
bgPixel = RGBto38WithGamma( pCursor->backRed, pCursor->backGreen,
pCursor->backBlue );
// convert to 24-bit Darwin cursor format
oldSourceP = (CARD32 *) pCursor->bits->source;
oldMaskP = (CARD32 *) pCursor->bits->mask;
newSourceP = newCursor;
rowPad = CURSORWIDTH - cursorWidth;
for (y = 0; y < cursorHeight; y++) {
for (x = 0; x < cursorWidth; x++) {
if (*oldMaskP & (HighBitOf32 >> x)) {
if (*oldSourceP & (HighBitOf32 >> x))
*newSourceP = fgPixel;
else
*newSourceP = bgPixel;
} else {
*newSourceP = 0;
}
newSourceP++;
}
oldSourceP++; oldMaskP++;
newSourceP += rowPad;
}
#if DUMP_DARWIN_CURSOR
// Write out the cursor
ErrorF("Cursor: 0x%x\n", pCursor);
ErrorF("Width = %i, Height = %i, RowPad = %i\n", cursorWidth,
cursorHeight, rowPad);
for (y = 0; y < cursorHeight; y++) {
newSourceP = newCursor + y*CURSORWIDTH;
for (x = 0; x < cursorWidth; x++) {
if (*newSourceP == fgPixel)
ErrorF("x");
else if (*newSourceP == bgPixel)
ErrorF("o");
else
ErrorF(" ");
newSourceP++;
}
ErrorF("\n");
}
#endif
// save the result
dixSetPrivate(&pCursor->devPrivates, pScreen, newCursor);
return TRUE;
}
/*
* XFIOKitRealizeCursor
*
*/
static Bool
XFIOKitRealizeCursor(
ScreenPtr pScreen,
CursorPtr pCursor)
{
Bool result;
XFIOKitCursorScreenPtr ScreenPriv = CURSOR_PRIV(pScreen);
DarwinFramebufferPtr dfb = SCREEN_PRIV(pScreen);
if ((pCursor->bits->height > CURSORHEIGHT) ||
(pCursor->bits->width > CURSORWIDTH) ||
// FIXME: this condition is not needed after kernel cursor works
!ScreenPriv->canHWCursor) {
result = (*ScreenPriv->spriteFuncs->RealizeCursor)(pScreen, pCursor);
} else if (dfb->bitsPerPixel == 8) {
result = XFIOKitRealizeCursor8(pScreen, pCursor);
} else if (dfb->bitsPerPixel == 16) {
result = XFIOKitRealizeCursor15(pScreen, pCursor);
} else {
result = XFIOKitRealizeCursor24(pScreen, pCursor);
}
return result;
}
/*
* XFIOKitUnrealizeCursor
*
*/
static Bool
XFIOKitUnrealizeCursor(
ScreenPtr pScreen,
CursorPtr pCursor)
{
Bool result;
XFIOKitCursorScreenPtr ScreenPriv = CURSOR_PRIV(pScreen);
if ((pCursor->bits->height > CURSORHEIGHT) ||
(pCursor->bits->width > CURSORWIDTH) ||
// FIXME: this condition is not needed after kernel cursor works
!ScreenPriv->canHWCursor) {
result = (*ScreenPriv->spriteFuncs->UnrealizeCursor)(pScreen, pCursor);
} else {
xfree(dixLookupPrivate(&pCursor->devPrivates, pScreen));
result = TRUE;
}
return result;
}
/*
* XFIOKitSetCursor
* Set the cursor sprite and position
* Use hardware cursor if possible
*/
static void
XFIOKitSetCursor(
ScreenPtr pScreen,
CursorPtr pCursor,
int x,
int y)
{
kern_return_t kr;
DarwinFramebufferPtr dfb = SCREEN_PRIV(pScreen);
XFIOKitScreenPtr iokitScreen = XFIOKIT_SCREEN_PRIV(pScreen);
StdFBShmem_t *cshmem = iokitScreen->cursorShmem;
XFIOKitCursorScreenPtr ScreenPriv = CURSOR_PRIV(pScreen);
// are we supposed to remove the cursor?
if (!pCursor) {
if (ScreenPriv->cursorMode == 0)
(*ScreenPriv->spriteFuncs->SetCursor)(pScreen, 0, x, y);
else {
if (!cshmem->cursorShow) {
cshmem->cursorShow++;
if (cshmem->hardwareCursorActive) {
kr = IOFBSetCursorVisible(iokitScreen->fbService, FALSE);
kern_assert( kr );
}
}
}
return;
}
// can we use the kernel or hardware cursor?
if ((pCursor->bits->height <= CURSORHEIGHT) &&
(pCursor->bits->width <= CURSORWIDTH) &&
// FIXME: condition not needed when kernel cursor works
ScreenPriv->canHWCursor) {
if (ScreenPriv->cursorMode == 0) // remove the X cursor
(*ScreenPriv->spriteFuncs->SetCursor)(pScreen, 0, x, y);
ScreenPriv->cursorMode = 1; // kernel cursor
// change the cursor image in shared memory
if (dfb->bitsPerPixel == 8) {
cursorPrivPtr newCursor = dixLookupPrivate(&pCursor->devPrivates,
pScreen);
memcpy(cshmem->cursor.bw8.image[0], newCursor->image,
CURSORWIDTH*CURSORHEIGHT);
memcpy(cshmem->cursor.bw8.mask[0], newCursor->mask,
CURSORWIDTH*CURSORHEIGHT);
} else if (dfb->bitsPerPixel == 16) {
unsigned short *newCursor = dixLookupPrivate(&pCursor->devPrivates,
pScreen);
memcpy(cshmem->cursor.rgb.image[0], newCursor,
2*CURSORWIDTH*CURSORHEIGHT);
} else {
unsigned int *newCursor = dixLookupPrivate(&pCursor->devPrivates,
pScreen);
memcpy(cshmem->cursor.rgb24.image[0], newCursor,
4*CURSORWIDTH*CURSORHEIGHT);
}
// FIXME: We always use a full size cursor, even if the image
// is smaller because I couldn't get the padding to come out
// right otherwise.
cshmem->cursorSize[0].width = CURSORWIDTH;
cshmem->cursorSize[0].height = CURSORHEIGHT;
cshmem->hotSpot[0].x = pCursor->bits->xhot;
cshmem->hotSpot[0].y = pCursor->bits->yhot;
// try to use a hardware cursor
if (ScreenPriv->canHWCursor) {
kr = IOFBSetNewCursor(iokitScreen->fbService, 0, 0, 0);
// FIXME: this is a fatal error without the kernel cursor
kern_assert( kr );
#if 0
if (kr != KERN_SUCCESS) {
ErrorF("Could not set new cursor with kernel return 0x%x.\n", kr);
ScreenPriv->canHWCursor = FALSE;
}
#endif
}
// make the new cursor visible
if (cshmem->cursorShow)
cshmem->cursorShow--;
if (!cshmem->cursorShow && ScreenPriv->canHWCursor) {
kr = IOFBSetCursorVisible(iokitScreen->fbService, TRUE);
// FIXME: this is a fatal error without the kernel cursor
kern_assert( kr );
#if 0
if (kr != KERN_SUCCESS) {
ErrorF("Couldn't set hardware cursor visible with kernel return 0x%x.\n", kr);
ScreenPriv->canHWCursor = FALSE;
} else
#endif
ScreenPriv->cursorMode = 2; // hardware cursor
}
return;
}
// otherwise we use a software cursor
if (ScreenPriv->cursorMode) {
/* remove the kernel or hardware cursor */
XFIOKitSetCursor(pScreen, 0, x, y);
}
ScreenPriv->cursorMode = 0;
(*ScreenPriv->spriteFuncs->SetCursor)(pScreen, pCursor, x, y);
}
/*
* XFIOKitMoveCursor
* Move the cursor. This is a noop for a kernel or hardware cursor.
*/
static void
XFIOKitMoveCursor(
ScreenPtr pScreen,
int x,
int y)
{
XFIOKitCursorScreenPtr ScreenPriv = CURSOR_PRIV(pScreen);
// only the X cursor needs to be explicitly moved
if (!ScreenPriv->cursorMode)
(*ScreenPriv->spriteFuncs->MoveCursor)(pScreen, x, y);
}
static miPointerSpriteFuncRec darwinSpriteFuncsRec = {
XFIOKitRealizeCursor,
XFIOKitUnrealizeCursor,
XFIOKitSetCursor,
XFIOKitMoveCursor
};
/*
===========================================================================
Pointer screen functions
===========================================================================
*/
/*
* XFIOKitCursorOffScreen
*/
static Bool XFIOKitCursorOffScreen(ScreenPtr *pScreen, int *x, int *y)
{ return FALSE;
}
/*
* XFIOKitCrossScreen
*/
static void XFIOKitCrossScreen(ScreenPtr pScreen, Bool entering)
{ return;
}
/*
* XFIOKitWarpCursor
* Change the cursor position without generating an event or motion history
*/
static void
XFIOKitWarpCursor(
ScreenPtr pScreen,
int x,
int y)
{
kern_return_t kr;
kr = IOHIDSetMouseLocation( xfIOKitInputConnect, x, y );
if (kr != KERN_SUCCESS) {
ErrorF("Could not set cursor position with kernel return 0x%x.\n", kr);
}
miPointerWarpCursor(pScreen, x, y);
}
static miPointerScreenFuncRec darwinScreenFuncsRec = {
XFIOKitCursorOffScreen,
XFIOKitCrossScreen,
XFIOKitWarpCursor,
DarwinEQPointerPost,
DarwinEQSwitchScreen
};
/*
===========================================================================
Other screen functions
===========================================================================
*/
/*
* XFIOKitCursorQueryBestSize
* Handle queries for best cursor size
*/
static void
XFIOKitCursorQueryBestSize(
int class,
unsigned short *width,
unsigned short *height,
ScreenPtr pScreen)
{
XFIOKitCursorScreenPtr ScreenPriv = CURSOR_PRIV(pScreen);
if (class == CursorShape) {
*width = CURSORWIDTH;
*height = CURSORHEIGHT;
} else
(*ScreenPriv->QueryBestSize)(class, width, height, pScreen);
}
/*
* XFIOKitInitCursor
* Initialize cursor support
*/
Bool
XFIOKitInitCursor(
ScreenPtr pScreen)
{
XFIOKitScreenPtr iokitScreen = XFIOKIT_SCREEN_PRIV(pScreen);
XFIOKitCursorScreenPtr ScreenPriv;
miPointerScreenPtr PointPriv;
kern_return_t kr;
// start with no cursor displayed
if (!iokitScreen->cursorShmem->cursorShow++) {
if (iokitScreen->cursorShmem->hardwareCursorActive) {
kr = IOFBSetCursorVisible(iokitScreen->fbService, FALSE);
kern_assert( kr );
}
}
// initialize software cursor handling (always needed as backup)
if (!miDCInitialize(pScreen, &darwinScreenFuncsRec)) {
return FALSE;
}
ScreenPriv = xcalloc( 1, sizeof(XFIOKitCursorScreenRec) );
if (!ScreenPriv) return FALSE;
dixSetPrivate(&pScreen->devPrivates, darwinCursorScreenKey, ScreenPriv);
// check if a hardware cursor is supported
if (!iokitScreen->cursorShmem->hardwareCursorCapable) {
ScreenPriv->canHWCursor = FALSE;
ErrorF("Hardware cursor not supported.\n");
} else {
// we need to make sure that the hardware cursor really works
ScreenPriv->canHWCursor = TRUE;
kr = IOFBSetNewCursor(iokitScreen->fbService, 0, 0, 0);
if (kr != KERN_SUCCESS) {
ErrorF("Could not set hardware cursor with kernel return 0x%x.\n", kr);
ScreenPriv->canHWCursor = FALSE;
}
kr = IOFBSetCursorVisible(iokitScreen->fbService, TRUE);
if (kr != KERN_SUCCESS) {
ErrorF("Couldn't set hardware cursor visible with kernel return 0x%x.\n", kr);
ScreenPriv->canHWCursor = FALSE;
}
IOFBSetCursorVisible(iokitScreen->fbService, FALSE);
}
ScreenPriv->cursorMode = 0;
ScreenPriv->pInstalledMap = NULL;
// override some screen procedures
ScreenPriv->QueryBestSize = pScreen->QueryBestSize;
pScreen->QueryBestSize = XFIOKitCursorQueryBestSize;
// ScreenPriv->ConstrainCursor = pScreen->ConstrainCursor;
// pScreen->ConstrainCursor = XFIOKitConstrainCursor;
// initialize hardware cursor handling
PointPriv = (miPointerScreenPtr)
dixLookupPrivate(&pScreen->devPrivates, miPointerScreenKey);
ScreenPriv->spriteFuncs = PointPriv->spriteFuncs;
PointPriv->spriteFuncs = &darwinSpriteFuncsRec;
/* Other routines that might be overridden */
/*
CursorLimitsProcPtr CursorLimits;
RecolorCursorProcPtr RecolorCursor;
*/
return TRUE;
}

View File

@@ -1,131 +0,0 @@
/**************************************************************
*
* Startup code for the IOKit Darwin X Server
*
**************************************************************/
/*
* Copyright (c) 2001-2004 Torrey T. Lyons. All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
* holders shall not be used in advertising or otherwise to promote the sale,
* use or other dealings in this Software without prior written authorization.
*/
#include <dix-config.h>
#include "darwin.h"
#include "darwinKeyboard.h"
#include "micmap.h"
void GlxExtensionInit(void);
void GlxWrapInitVisuals(miInitVisualsProcPtr *procPtr);
/*
* DarwinHandleGUI
* This function is called first from main().
* It does nothing for the IOKit X server.
*/
void DarwinHandleGUI(
int argc,
char *argv[],
char *envp[] )
{
}
/*
* DarwinGlxExtensionInit
* Initialize the GLX extension.
* Mesa is linked into the IOKit mode X server so we just call directly.
*/
void DarwinGlxExtensionInit(void)
{
#ifdef GLXEXT
GlxExtensionInit();
#endif
}
/*
* DarwinGlxWrapInitVisuals
*/
void DarwinGlxWrapInitVisuals(
miInitVisualsProcPtr *procPtr)
{
#ifdef GLXEXT
GlxWrapInitVisuals(procPtr);
#endif
}
/*
* DarwinModeProcessArgument
* Process IOKit specific command line arguments.
*/
int DarwinModeProcessArgument(
int argc,
char *argv[],
int i)
{
#ifdef DARWIN_WITH_QUARTZ
// XDarwinStartup uses these arguments to indicate which X server
// should be started. Ignore them here.
if (!strcmp( argv[i], "-fullscreen" ) ||
!strcmp( argv[i], "-rootless" ) ||
!strcmp( argv[i], "-quartz" ))
{
return 1;
}
#else
if (!strcmp( argv[i], "-fullscreen" ) ||
!strcmp( argv[i], "-rootless" ) ||
!strcmp( argv[i], "-quartz" ))
{
FatalError("Command line option %s is not available without Quartz "
"support.\n", argv[i]);
}
#endif
return 0;
}
/*
* DarwinModeSystemKeymapSeed
* Changes to NXKeyMapping are not tracked.
*/
unsigned int
DarwinModeSystemKeymapSeed(void)
{
return 0;
}
/*
* DarwinModeReadSystemKeymap
* IOKit has no alternative to NXKeyMapping API.
*/
Bool DarwinModeReadSystemKeymap(
darwinKeyboardInfo *info)
{
return FALSE;
}

View File

@@ -1,54 +0,0 @@
noinst_LIBRARIES = libXQuartz.a
AM_CFLAGS = @XORG_CFLAGS@ @DIX_CFLAGS@
AM_OBJCFLAGS = @XORG_CFLAGS@ @DIX_CFLAGS@
INCLUDES = -I$(srcdir) -I$(srcdir)/.. @XORG_INCS@
AM_DEFS = -DHAS_CG_MACH_PORT -DHAS_KL_API
if HAVE_XPLUGIN
AM_DEFS += -DBUILD_XPR
endif
DEFS = @DEFS@ $(AM_DEFS) -DXBINDIR=\"${bindir}\"
libXQuartz_a_SOURCES = \
Preferences.m \
XApplication.m \
XServer.m \
applewm.c \
keysym2ucs.c \
quartz.c \
quartzAudio.c \
quartzCocoa.m \
quartzPasteboard.c \
quartzKeyboard.c \
quartzStartup.c \
pseudoramiX.c
bin_PROGRAMS = XDarwinStartup
XDarwinStartup_SOURCES = XDarwinStartup.c
XDarwinStartup_LDFLAGS = -Wl,-framework,CoreFoundation \
-Wl,-framework,ApplicationServices
XDarwinStartupCFLAGS = -DXBINDIR="${bindir}"
XDARWINROOT = @APPLE_APPLICATIONS_DIR@
BINDIR = $(bindir)
install-exec-local:
-(cd $(DESTDIR)$(BINDIR); rm X; $(LN_S) XDarwinStartup X)
man1_MANS = XDarwinStartup.man
EXTRA_DIST = \
applewmExt.h \
keysym2ucs.h \
Preferences.h \
pseudoramiX.h \
quartzAudio.h \
quartzCommon.h \
quartzCursor.c \
quartzCursor.h \
quartz.h \
quartzPasteboard.h \
XApplication.h \
XDarwin.pbproj/project.pbxproj \
XServer.h \
XDarwinStartup.man

View File

@@ -1,137 +0,0 @@
/*
* Copyright (c) 2002-2003 Torrey T. Lyons. All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
* holders shall not be used in advertising or otherwise to promote the
* sale, use or other dealings in this Software without prior written
* authorization.
*/
#import <Cocoa/Cocoa.h>
@interface Preferences : NSObject
{
IBOutlet NSPanel *window;
IBOutlet id displayField;
IBOutlet id dockSwitchButton;
IBOutlet id fakeButton;
IBOutlet id button2ModifiersMatrix;
IBOutlet id button3ModifiersMatrix;
IBOutlet id switchKeyButton;
IBOutlet id keymapFileField;
IBOutlet id modeMatrix;
IBOutlet id modeWindowButton;
IBOutlet id startupHelpButton;
IBOutlet id systemBeepButton;
IBOutlet id mouseAccelChangeButton;
IBOutlet id useXineramaButton;
IBOutlet id addToPathButton;
IBOutlet id addToPathField;
IBOutlet id useDefaultShellMatrix;
IBOutlet id useOtherShellField;
IBOutlet id depthButton;
BOOL isGettingKeyCode;
int keyCode;
int modifiers;
NSMutableString *switchString;
}
- (IBAction)close:(id)sender;
- (IBAction)pickFile:(id)sender;
- (IBAction)saveChanges:(id)sender;
- (IBAction)setKey:(id)sender;
- (BOOL)sendEvent:(NSEvent *)anEvent;
- (void)awakeFromNib;
- (void)windowWillClose:(NSNotification *)aNotification;
+ (void)setUseKeymapFile:(BOOL)newUseKeymapFile;
+ (void)setKeymapFile:(NSString *)newFile;
+ (void)setSwitchString:(NSString *)newString;
+ (void)setKeyCode:(int)newKeyCode;
+ (void)setModifiers:(int)newModifiers;
+ (void)setDisplay:(int)newDisplay;
+ (void)setDockSwitch:(BOOL)newDockSwitch;
+ (void)setFakeButtons:(BOOL)newFakeButtons;
+ (void)setButton2Mask:(int)newFakeMask;
+ (void)setButton3Mask:(int)newFakeMask;
+ (void)setMouseAccelChange:(BOOL)newMouseAccelChange;
+ (void)setUseQDCursor:(int)newUseQDCursor;
+ (void)setRootless:(BOOL)newRootless;
+ (void)setUseAGL:(BOOL)newUseAGL;
+ (void)setModeWindow:(BOOL)newModeWindow;
+ (void)setStartupHelp:(BOOL)newStartupHelp;
+ (void)setSystemBeep:(BOOL)newSystemBeep;
+ (void)setEnableKeyEquivalents:(BOOL)newKeyEquivs;
+ (void)setXinerama:(BOOL)newXinerama;
+ (void)setAddToPath:(BOOL)newAddToPath;
+ (void)setAddToPathString:(NSString *)newAddToPathString;
+ (void)setUseDefaultShell:(BOOL)newUseDefaultShell;
+ (void)setShellString:(NSString *)newShellString;
+ (void)setDepth:(int)newDepth;
+ (void)setDisplayModeBundles:(NSArray *)newBundles;
+ (void)saveToDisk;
+ (BOOL)useKeymapFile;
+ (NSString *)keymapFile;
+ (NSString *)switchString;
+ (unsigned int)keyCode;
+ (unsigned int)modifiers;
+ (int)display;
+ (BOOL)dockSwitch;
+ (BOOL)fakeButtons;
+ (int)button2Mask;
+ (int)button3Mask;
+ (BOOL)mouseAccelChange;
+ (int)useQDCursor;
+ (BOOL)rootless;
+ (BOOL)useAGL;
+ (BOOL)modeWindow;
+ (BOOL)startupHelp;
+ (BOOL)systemBeep;
+ (BOOL)enableKeyEquivalents;
+ (BOOL)xinerama;
+ (BOOL)addToPath;
+ (NSString *)addToPathString;
+ (BOOL)useDefaultShell;
+ (NSString *)shellString;
+ (int)depth;
+ (NSArray *)displayModeBundles;
@end
// Possible settings for useQDCursor
enum {
qdCursor_Never, // never use QuickDraw cursor
qdCursor_Not8Bit, // don't try to use QuickDraw with 8-bit depth
qdCursor_Always // always try to use QuickDraw cursor
};
// Possible settings for depth
enum {
depth_Current,
depth_8Bit,
depth_15Bit,
depth_24Bit
};

View File

@@ -1,598 +0,0 @@
//
// Preferences.m
//
// This class keeps track of the user preferences.
//
/*
* Copyright (c) 2002-2004 Torrey T. Lyons. All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
* holders shall not be used in advertising or otherwise to promote the
* sale, use or other dealings in this Software without prior written
* authorization.
*/
#include <dix-config.h>
#import "quartzCommon.h"
#define BOOL xBOOL
#include "darwin.h"
#undef BOOL
#import "Preferences.h"
#include <IOKit/hidsystem/IOLLEvent.h> // for modifier masks
// Macros to build the path name
#ifndef XBINDIR
#define XBINDIR /usr/X11/bin
#endif
#define STR(s) #s
#define XSTRPATH(s) STR(s)
// Keys for user defaults dictionary
static NSString *X11EnableKeyEquivalentsKey = @"EnableKeyEquivalents";
@implementation Preferences
+ (void)initialize
{
// Provide user defaults if needed
NSDictionary *appDefaults = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithInt:0], @"Display",
@"YES", @"FakeButtons",
[NSNumber numberWithInt:NX_COMMANDMASK], @"Button2Mask",
[NSNumber numberWithInt:NX_ALTERNATEMASK], @"Button3Mask",
NSLocalizedString(@"USA.keymapping",@""), @"KeymappingFile",
@"YES", @"UseKeymappingFile",
NSLocalizedString(@"Cmd-Opt-a",@""), @"SwitchString",
@"YES", @"UseRootlessMode",
@"YES", @"UseAGLforGLX",
@"YES", @"ShowModePickWindow",
@"YES", @"ShowStartupHelp",
[NSNumber numberWithInt:0], @"SwitchKeyCode",
[NSNumber numberWithInt:(NSCommandKeyMask | NSAlternateKeyMask)],
@"SwitchModifiers", @"NO", @"UseSystemBeep",
@"YES", X11EnableKeyEquivalentsKey,
@"YES", @"DockSwitch",
@"NO", @"AllowMouseAccelChange",
[NSNumber numberWithInt:qdCursor_Not8Bit], @"UseQDCursor",
@"YES", @"Xinerama",
@"YES", @"AddToPath",
[NSString stringWithCString:XSTRPATH(XBINDIR)], @"AddToPathString",
@"YES", @"UseDefaultShell",
@"/bin/tcsh", @"Shell",
[NSNumber numberWithInt:depth_Current], @"Depth",
#ifdef BUILD_XPR
[NSArray arrayWithObjects:@"xpr.bundle", @"cr.bundle", nil],
#else
[NSArray arrayWithObjects:@"cr.bundle", nil],
#endif
@"DisplayModeBundles", nil];
[super initialize];
[[NSUserDefaults standardUserDefaults] registerDefaults:appDefaults];
}
// Initialize internal state info of switch key button
- (void)initSwitchKey
{
keyCode = [Preferences keyCode];
modifiers = [Preferences modifiers];
[switchString setString:[Preferences switchString]];
}
- (id)init
{
self = [super init];
isGettingKeyCode=NO;
switchString=[[NSMutableString alloc] init];
[self initSwitchKey];
return self;
}
// Set a modifiers checkbox matrix to match a modifier mask
- (void)resetMatrix:(NSMatrix *)aMatrix withMask:(int)aMask
{
[aMatrix setState:(aMask & NX_SHIFTMASK) atRow:0 column:0];
[aMatrix setState:(aMask & NX_CONTROLMASK) atRow:1 column:0];
[aMatrix setState:(aMask & NX_COMMANDMASK) atRow:2 column:0];
[aMatrix setState:(aMask & NX_ALTERNATEMASK) atRow:3 column:0];
[aMatrix setState:(aMask & NX_SECONDARYFNMASK) atRow:4 column:0];
}
// Generate a modifiers mask from a modifiers checkbox matrix
- (int)getMaskFromMatrix:(NSMatrix *)aMatrix
{
int theMask = 0;
if ([[aMatrix cellAtRow:0 column:0] state])
theMask |= NX_SHIFTMASK;
if ([[aMatrix cellAtRow:1 column:0] state])
theMask |= NX_CONTROLMASK;
if ([[aMatrix cellAtRow:2 column:0] state])
theMask |= NX_COMMANDMASK;
if ([[aMatrix cellAtRow:3 column:0] state])
theMask |= NX_ALTERNATEMASK;
if ([[aMatrix cellAtRow:4 column:0] state])
theMask |= NX_SECONDARYFNMASK;
return theMask;
}
// Set the window controls to the state in user defaults
- (void)resetWindow
{
if ([Preferences keymapFile] == nil)
[keymapFileField setStringValue:@" "];
else
[keymapFileField setStringValue:[Preferences keymapFile]];
if ([Preferences switchString] == nil)
[switchKeyButton setTitle:@"--"];
else
[switchKeyButton setTitle:[Preferences switchString]];
[displayField setIntValue:[Preferences display]];
[dockSwitchButton setIntValue:[Preferences dockSwitch]];
[fakeButton setIntValue:[Preferences fakeButtons]];
[self resetMatrix:button2ModifiersMatrix
withMask:[Preferences button2Mask]];
[self resetMatrix:button3ModifiersMatrix
withMask:[Preferences button3Mask]];
[modeMatrix setState:[Preferences rootless] atRow:0 column:1];
[startupHelpButton setIntValue:[Preferences startupHelp]];
[modeWindowButton setIntValue:[Preferences modeWindow]];
[systemBeepButton setIntValue:[Preferences systemBeep]];
[mouseAccelChangeButton setIntValue:[Preferences mouseAccelChange]];
[useXineramaButton setIntValue:[Preferences xinerama]];
[addToPathButton setIntValue:[Preferences addToPath]];
[addToPathField setStringValue:[Preferences addToPathString]];
[useDefaultShellMatrix setState:![Preferences useDefaultShell]
atRow:1 column:0];
[useOtherShellField setStringValue:[Preferences shellString]];
[depthButton selectItemAtIndex:[Preferences depth]];
}
- (void)awakeFromNib
{
[self resetWindow];
}
// Preference window delegate
- (void)windowWillClose:(NSNotification *)aNotification
{
[self resetWindow];
[self initSwitchKey];
}
// User cancelled the changes
- (IBAction)close:(id)sender
{
[window orderOut:nil];
[self resetWindow]; // reset window controls
[self initSwitchKey]; // reset switch key state
}
// Pick keymapping file
- (IBAction)pickFile:(id)sender
{
int result;
NSArray *fileTypes = [NSArray arrayWithObject:@"keymapping"];
NSOpenPanel *oPanel = [NSOpenPanel openPanel];
[oPanel setAllowsMultipleSelection:NO];
result = [oPanel runModalForDirectory:@"/System/Library/Keyboards"
file:nil types:fileTypes];
if (result == NSOKButton) {
[keymapFileField setStringValue:[oPanel filename]];
}
}
// User saved changes
- (IBAction)saveChanges:(id)sender
{
[Preferences setKeyCode:keyCode];
[Preferences setModifiers:modifiers];
[Preferences setSwitchString:switchString];
[Preferences setKeymapFile:[keymapFileField stringValue]];
[Preferences setUseKeymapFile:YES];
[Preferences setDisplay:[displayField intValue]];
[Preferences setDockSwitch:[dockSwitchButton intValue]];
[Preferences setFakeButtons:[fakeButton intValue]];
[Preferences setButton2Mask:
[self getMaskFromMatrix:button2ModifiersMatrix]];
[Preferences setButton3Mask:
[self getMaskFromMatrix:button3ModifiersMatrix]];
[Preferences setRootless:[[modeMatrix cellAtRow:0 column:1] state]];
[Preferences setModeWindow:[modeWindowButton intValue]];
[Preferences setStartupHelp:[startupHelpButton intValue]];
[Preferences setSystemBeep:[systemBeepButton intValue]];
[Preferences setMouseAccelChange:[mouseAccelChangeButton intValue]];
[Preferences setXinerama:[useXineramaButton intValue]];
[Preferences setAddToPath:[addToPathButton intValue]];
[Preferences setAddToPathString:[addToPathField stringValue]];
[Preferences setUseDefaultShell:
[[useDefaultShellMatrix cellAtRow:0 column:0] state]];
[Preferences setShellString:[useOtherShellField stringValue]];
[Preferences setDepth:[depthButton indexOfSelectedItem]];
[Preferences saveToDisk];
[window orderOut:nil];
}
- (IBAction)setKey:(id)sender
{
[switchKeyButton setTitle:NSLocalizedString(@"Press key",@"")];
isGettingKeyCode=YES;
[switchString setString:@""];
}
- (BOOL)sendEvent:(NSEvent *)anEvent
{
if(isGettingKeyCode) {
if([anEvent type]==NSKeyDown) // wait for keyup
return YES;
if([anEvent type]!=NSKeyUp)
return NO;
if([anEvent modifierFlags] & NSCommandKeyMask)
[switchString appendString:@"Cmd-"];
if([anEvent modifierFlags] & NSControlKeyMask)
[switchString appendString:@"Ctrl-"];
if([anEvent modifierFlags] & NSAlternateKeyMask)
[switchString appendString:@"Opt-"];
if([anEvent modifierFlags] & NSNumericPadKeyMask) // doesn't work
[switchString appendString:@"Num-"];
if([anEvent modifierFlags] & NSHelpKeyMask)
[switchString appendString:@"Help-"];
if([anEvent modifierFlags] & NSFunctionKeyMask) // powerbooks only
[switchString appendString:@"Fn-"];
[switchString appendString:[anEvent charactersIgnoringModifiers]];
[switchKeyButton setTitle:switchString];
keyCode = [anEvent keyCode];
modifiers = [anEvent modifierFlags];
isGettingKeyCode=NO;
return YES;
}
return NO;
}
+ (void)setKeymapFile:(NSString *)newFile
{
[[NSUserDefaults standardUserDefaults] setObject:newFile
forKey:@"KeymappingFile"];
}
+ (void)setUseKeymapFile:(BOOL)newUseKeymapFile
{
[[NSUserDefaults standardUserDefaults] setBool:newUseKeymapFile
forKey:@"UseKeymappingFile"];
}
+ (void)setSwitchString:(NSString *)newString
{
[[NSUserDefaults standardUserDefaults] setObject:newString
forKey:@"SwitchString"];
}
+ (void)setKeyCode:(int)newKeyCode
{
[[NSUserDefaults standardUserDefaults] setInteger:newKeyCode
forKey:@"SwitchKeyCode"];
}
+ (void)setModifiers:(int)newModifiers
{
[[NSUserDefaults standardUserDefaults] setInteger:newModifiers
forKey:@"SwitchModifiers"];
}
+ (void)setDisplay:(int)newDisplay
{
[[NSUserDefaults standardUserDefaults] setInteger:newDisplay
forKey:@"Display"];
}
+ (void)setDockSwitch:(BOOL)newDockSwitch
{
[[NSUserDefaults standardUserDefaults] setBool:newDockSwitch
forKey:@"DockSwitch"];
}
+ (void)setFakeButtons:(BOOL)newFakeButtons
{
[[NSUserDefaults standardUserDefaults] setBool:newFakeButtons
forKey:@"FakeButtons"];
// Update the setting used by the X server thread
darwinFakeButtons = newFakeButtons;
}
+ (void)setButton2Mask:(int)newFakeMask
{
[[NSUserDefaults standardUserDefaults] setInteger:newFakeMask
forKey:@"Button2Mask"];
// Update the setting used by the X server thread
darwinFakeMouse2Mask = newFakeMask;
}
+ (void)setButton3Mask:(int)newFakeMask
{
[[NSUserDefaults standardUserDefaults] setInteger:newFakeMask
forKey:@"Button3Mask"];
// Update the setting used by the X server thread
darwinFakeMouse3Mask = newFakeMask;
}
+ (void)setMouseAccelChange:(BOOL)newMouseAccelChange
{
[[NSUserDefaults standardUserDefaults] setBool:newMouseAccelChange
forKey:@"AllowMouseAccelChange"];
// Update the setting used by the X server thread
// darwinMouseAccelChange = newMouseAccelChange;
}
+ (void)setUseQDCursor:(int)newUseQDCursor
{
[[NSUserDefaults standardUserDefaults] setInteger:newUseQDCursor
forKey:@"UseQDCursor"];
}
+ (void)setModeWindow:(BOOL)newModeWindow
{
[[NSUserDefaults standardUserDefaults] setBool:newModeWindow
forKey:@"ShowModePickWindow"];
}
+ (void)setRootless:(BOOL)newRootless
{
[[NSUserDefaults standardUserDefaults] setBool:newRootless
forKey:@"UseRootlessMode"];
}
+ (void)setUseAGL:(BOOL)newUseAGL
{
[[NSUserDefaults standardUserDefaults] setBool:newUseAGL
forKey:@"UseAGLforGLX"];
}
+ (void)setStartupHelp:(BOOL)newStartupHelp
{
[[NSUserDefaults standardUserDefaults] setBool:newStartupHelp
forKey:@"ShowStartupHelp"];
}
+ (void)setSystemBeep:(BOOL)newSystemBeep
{
[[NSUserDefaults standardUserDefaults] setBool:newSystemBeep
forKey:@"UseSystemBeep"];
// Update the setting used by the X server thread
quartzUseSysBeep = newSystemBeep;
}
+ (void)setEnableKeyEquivalents:(BOOL)newKeyEquivs
{
[[NSUserDefaults standardUserDefaults] setBool:newKeyEquivs
forKey:X11EnableKeyEquivalentsKey];
// Update the setting used by the X server thread
quartzEnableKeyEquivalents = newKeyEquivs;
}
+ (void)setXinerama:(BOOL)newXinerama
{
[[NSUserDefaults standardUserDefaults] setBool:newXinerama
forKey:@"Xinerama"];
}
+ (void)setAddToPath:(BOOL)newAddToPath
{
[[NSUserDefaults standardUserDefaults] setBool:newAddToPath
forKey:@"AddToPath"];
}
+ (void)setAddToPathString:(NSString *)newAddToPathString
{
[[NSUserDefaults standardUserDefaults] setObject:newAddToPathString
forKey:@"AddToPathString"];
}
+ (void)setUseDefaultShell:(BOOL)newUseDefaultShell
{
[[NSUserDefaults standardUserDefaults] setBool:newUseDefaultShell
forKey:@"UseDefaultShell"];
}
+ (void)setShellString:(NSString *)newShellString
{
[[NSUserDefaults standardUserDefaults] setObject:newShellString
forKey:@"Shell"];
}
+ (void)setDepth:(int)newDepth
{
[[NSUserDefaults standardUserDefaults] setInteger:newDepth
forKey:@"Depth"];
}
+ (void)setDisplayModeBundles:(NSArray *)newBundles
{
[[NSUserDefaults standardUserDefaults] setObject:newBundles
forKey:@"DisplayModeBundles"];
}
+ (void)saveToDisk
{
[[NSUserDefaults standardUserDefaults] synchronize];
}
+ (BOOL)useKeymapFile
{
return [[NSUserDefaults standardUserDefaults]
boolForKey:@"UseKeymappingFile"];
}
+ (NSString *)keymapFile
{
return [[NSUserDefaults standardUserDefaults]
stringForKey:@"KeymappingFile"];
}
+ (NSString *)switchString
{
return [[NSUserDefaults standardUserDefaults]
stringForKey:@"SwitchString"];
}
+ (unsigned int)keyCode
{
return [[NSUserDefaults standardUserDefaults]
integerForKey:@"SwitchKeyCode"];
}
+ (unsigned int)modifiers
{
return [[NSUserDefaults standardUserDefaults]
integerForKey:@"SwitchModifiers"];
}
+ (int)display
{
return [[NSUserDefaults standardUserDefaults]
integerForKey:@"Display"];
}
+ (BOOL)dockSwitch
{
return [[NSUserDefaults standardUserDefaults] boolForKey:@"DockSwitch"];
}
+ (BOOL)fakeButtons
{
return [[NSUserDefaults standardUserDefaults] boolForKey:@"FakeButtons"];
}
+ (int)button2Mask
{
return [[NSUserDefaults standardUserDefaults]
integerForKey:@"Button2Mask"];
}
+ (int)button3Mask
{
return [[NSUserDefaults standardUserDefaults]
integerForKey:@"Button3Mask"];
}
+ (BOOL)mouseAccelChange
{
return [[NSUserDefaults standardUserDefaults]
boolForKey:@"AllowMouseAccelChange"];
}
+ (int)useQDCursor
{
return [[NSUserDefaults standardUserDefaults]
integerForKey:@"UseQDCursor"];
}
+ (BOOL)rootless
{
return [[NSUserDefaults standardUserDefaults]
boolForKey:@"UseRootlessMode"];
}
+ (BOOL)useAGL
{
return [[NSUserDefaults standardUserDefaults]
boolForKey:@"UseAGLforGLX"];
}
+ (BOOL)modeWindow
{
return [[NSUserDefaults standardUserDefaults]
boolForKey:@"ShowModePickWindow"];
}
+ (BOOL)startupHelp
{
return [[NSUserDefaults standardUserDefaults]
boolForKey:@"ShowStartupHelp"];
}
+ (BOOL)systemBeep
{
return [[NSUserDefaults standardUserDefaults] boolForKey:@"UseSystemBeep"];
}
+ (BOOL)enableKeyEquivalents
{
return [[NSUserDefaults standardUserDefaults] boolForKey:X11EnableKeyEquivalentsKey];
}
+ (BOOL)xinerama
{
return [[NSUserDefaults standardUserDefaults] boolForKey:@"Xinerama"];
}
+ (BOOL)addToPath
{
return [[NSUserDefaults standardUserDefaults] boolForKey:@"AddToPath"];
}
+ (NSString *)addToPathString
{
return [[NSUserDefaults standardUserDefaults]
stringForKey:@"AddToPathString"];
}
+ (BOOL)useDefaultShell
{
return [[NSUserDefaults standardUserDefaults]
boolForKey:@"UseDefaultShell"];
}
+ (NSString *)shellString
{
return [[NSUserDefaults standardUserDefaults]
stringForKey:@"Shell"];
}
+ (int)depth
{
return [[NSUserDefaults standardUserDefaults]
integerForKey:@"Depth"];
}
+ (NSArray *)displayModeBundles
{
return [[NSUserDefaults standardUserDefaults]
objectForKey:@"DisplayModeBundles"];
}
@end

View File

@@ -1,46 +0,0 @@
//
// XApplication.h
//
// Created by Andreas Monitzer on January 6, 2001.
//
/*
* Copyright (c) 2001 Andreas Monitzer. All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
* holders shall not be used in advertising or otherwise to promote the
* sale, use or other dealings in this Software without prior written
* authorization.
*/
#import <Cocoa/Cocoa.h>
#import "XServer.h"
#import "Preferences.h"
@interface XApplication : NSApplication {
IBOutlet XServer *xserver;
IBOutlet Preferences *preferences;
}
- (void)sendEvent:(NSEvent *)anEvent;
@end

View File

@@ -1,46 +0,0 @@
//
// XApplication.m
//
// Created by Andreas Monitzer on January 6, 2001.
/*
* Copyright (c) 2001 Andreas Monitzer. All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
* holders shall not be used in advertising or otherwise to promote the
* sale, use or other dealings in this Software without prior written
* authorization.
*/
#import "XApplication.h"
@implementation XApplication
- (void)sendEvent:(NSEvent *)anEvent {
if (![xserver translateEvent:anEvent]) {
if (![preferences sendEvent:anEvent])
[super sendEvent:anEvent];
}
}
@end

File diff suppressed because it is too large Load Diff

View File

@@ -1,163 +0,0 @@
/**************************************************************
*
* Startup program for Darwin X servers
*
* This program selects the appropriate X server to launch:
* XDarwin IOKit X server (default)
* XDarwinQuartz A soft link to the Quartz X server
* executable (-quartz etc. option)
*
* If told to idle, the program will simply pause and not
* launch any X server. This is to support startx being
* run by XDarwin.app.
*
**************************************************************/
/*
* Copyright (c) 2001-2002 Torrey T. Lyons. All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* 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
* TORREY T. LYONS 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 Torrey T. Lyons shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in this Software without prior written authorization from
* Torrey T. Lyons.
*/
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/syslimits.h>
#include <ApplicationServices/ApplicationServices.h>
// Macros to build the path name
#ifndef XBINDIR
#define XBINDIR /usr/X11/bin
#endif
#define STR(s) #s
#define XSTRPATH(s) STR(s) "/"
#define XPATH(file) XSTRPATH(XBINDIR) STR(file)
int main(
int argc,
char *argv[] )
{
int i, j, quartzMode = -1;
char **newargv;
// Check if we are going to run in Quartz mode or idle
// to support startx from the Quartz server. The last
// parameter in the list is the one used.
for (i = argc-1; i; i--) {
if (!strcmp(argv[i], "-idle")) {
pause();
return 0;
} else if (!strcmp(argv[i], "-quartz") ||
!strcmp(argv[i], "-rootless") ||
!strcmp(argv[i], "-fullscreen"))
{
quartzMode = 1;
break;
} else if (!strcmp(argv[i], "-iokit")) {
quartzMode = 0;
break;
}
}
if (quartzMode == -1) {
#ifdef HAS_CG_MACH_PORT
// Check if the CoreGraphics window server is running.
// Mike Paquette says this is the fastest way to determine if it is running.
CFMachPortRef cgMachPortRef = CGWindowServerCFMachPort();
if (cgMachPortRef == NULL)
quartzMode = 0;
else
quartzMode = 1;
#else
// On older systems we assume IOKit mode.
quartzMode = 0;
#endif
}
if (quartzMode) {
// Launch the X server for the quartz modes
char quartzPath[PATH_MAX+1];
int pathLength;
OSStatus theStatus;
CFURLRef appURL;
CFStringRef appPath;
Boolean success;
// Build the new argument list
newargv = (char **) malloc((argc+2) * sizeof(char *));
for (j = argc; j; j--)
newargv[j] = argv[j];
newargv[argc] = "-nostartx";
newargv[argc+1] = NULL;
// Use the XDarwinQuartz soft link if it is valid
pathLength = readlink(XPATH(XDarwinQuartz), quartzPath, PATH_MAX);
if (pathLength != -1) {
quartzPath[pathLength] = '\0';
newargv[0] = quartzPath;
execv(newargv[0], newargv);
}
// Otherwise query LaunchServices for the location of the XDarwin application
theStatus = LSFindApplicationForInfo(kLSUnknownCreator,
CFSTR("org.x.x11"),
NULL, NULL, &appURL);
if (theStatus) {
fprintf(stderr, "Could not find the XDarwin application. (Error = 0x%lx)\n", theStatus);
fprintf(stderr, "Launch XDarwin once from the Finder.\n");
return theStatus;
}
appPath = CFURLCopyFileSystemPath (appURL, kCFURLPOSIXPathStyle);
success = CFStringGetCString(appPath, quartzPath, PATH_MAX, CFStringGetSystemEncoding());
if (! success) {
fprintf(stderr, "Could not find path to XDarwin application.\n");
return success;
}
// Launch the XDarwin application
strncat(quartzPath, "/Contents/MacOS/XDarwin", PATH_MAX);
newargv[0] = quartzPath;
execv(newargv[0], newargv);
fprintf(stderr, "Could not start XDarwin application at %s.\n", newargv[0]);
return errno;
} else {
// Build the new argument list
newargv = (char **) malloc((argc+1) * sizeof(char *));
for (j = argc; j; j--)
newargv[j] = argv[j];
newargv[0] = "XDarwin";
newargv[argc] = NULL;
// Launch the IOKit X server
execvp(newargv[0], newargv);
fprintf(stderr, "Could not start XDarwin IOKit X server.\n");
return errno;
}
}

View File

@@ -1,74 +0,0 @@
.TH XDarwinStartup 1
.SH NAME
XDarwinStartup - Startup program for the XDarwin X window server
.SH SYNOPSIS
.B XDarwinStartup
[\fI-iokit\fP]
[\fI-fullscreen\fP]
[\fI-rootless\fP]
[\fI-quartz\fP]
[\fI-idle\fP]
[\fIoptions\fP]
.SH DESCRIPTION
The \fIXDarwin(1)\fP X window server can be run in a variety of different
modes and is actually two different executables. The IOKit X server,
XDarwin, is used when running from the console. It is most commonly
located in __XBinDir__. The Quartz X server, for running in parallel with
Aqua, is a full-fledged Mac OS X application that can be started from
the Finder. Its application bundle is XDarwin.app, which is typically
located in /Applications.
.I XDarwinStartup
allows easy switching between these X servers and auto-detection of the
appropriate one to use when launching from the command line.
When run without any arguments,
.I XDarwinStartup
will start the Quartz X server if the Core Graphics window server
is currently running. Otherwise it will start the IOKit X server.
.PP
To locate the Quartz X server,
.I XDarwinStartup
will try to read the soft link at __XBinDir__/XDarwinQuartz.
This is typically a soft link to the executable of the XDarwin.app
application. If this fails,
.I XDarwinStartup
will call Launch Services to locate XDarwin.app.
.PP
To start the IOKit X server,
.I XDarwinStartup
will run the XDarwin executable, which should be present in the
user's path.
.SH OPTIONS
.I XDarwinStartup
accepts and passes on all options to the X server it
launches. In addition the following options have specific effects:
.TP 8
.B \-iokit
Launch the IOKit X server.
.TP 8
.B \-fullscreen
Launch the Quartz X server to run in full screen mode.
.TP 8
.B \-rootless
Launch the Quartz X server to run in rootless mode.
.TP 8
.B \-quartz
Launch the Quartz X server.
.TP 8
.B \-idle
Pause and do nothing. This option is used by XDarwin.app when it is
started from the Finder.
.SH FILES
.TP 30
__XBinDir__/XDarwin
IOKit mode X server
.TP 30
/Applications/XDarwin.app
Quartz mode X server
.TP 30
__XBinDir__/XDarwinQuartz
Soft link to Quartz mode X server executable
.SH SEE ALSO
XDarwin(1)
.SH BUGS
The path to XDarwinQuartz should not be hard coded.

View File

@@ -1,136 +0,0 @@
//
// XServer.h
//
/*
* Copyright (c) 2001 Andreas Monitzer. All Rights Reserved.
* Copyright (c) 2002-2003 Torrey T. Lyons. All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
* holders shall not be used in advertising or otherwise to promote the
* sale, use or other dealings in this Software without prior written
* authorization.
*/
#define BOOL xBOOL
#include <X11/Xproto.h>
#undef BOOL
#import <Cocoa/Cocoa.h>
@interface XServer : NSObject {
// Server state
int serverState;
NSRecursiveLock *serverLock;
NSMutableArray *pendingClients;
BOOL serverVisible;
BOOL rootlessMenuBarVisible;
BOOL queueShowServer;
BOOL quitWithoutQuery;
BOOL pendingAppQuitReply;
UInt32 mouseState;
unsigned short swallowedKey;
BOOL sendServerEvents;
BOOL x11Active;
// Aqua interface
IBOutlet NSWindow *modeWindow;
IBOutlet NSButton *startupModeButton;
IBOutlet NSButton *startFullScreenButton;
IBOutlet NSButton *startRootlessButton;
IBOutlet NSWindow *helpWindow;
IBOutlet NSButton *startupHelpButton;
IBOutlet NSPanel *switchWindow;
// Menu elements setable by Apple-WM extension
IBOutlet NSMenu *windowMenu;
IBOutlet NSMenuItem *windowSeparator;
IBOutlet NSMenu *dockMenu;
int checkedWindowItem;
}
- (id)init;
- (BOOL)translateEvent:(NSEvent *)anEvent;
- (BOOL)getMousePosition:(xEvent *)xe fromEvent:(NSEvent *)anEvent;
- (NSString *)makeSafePath:(NSString *)path;
- (BOOL)loadDisplayBundle;
- (void)startX;
- (void)finishStartX;
- (BOOL)startXClients;
- (void)runClient:(NSString *)filename;
- (void)run;
- (void)toggle;
- (void)showServer:(BOOL)show;
- (void)forceShowServer:(BOOL)show;
- (void)setRootClip:(BOOL)enable;
- (void)readPasteboard;
- (void)writePasteboard;
- (void)quitServer;
- (void)sendXEvent:(xEvent *)xe;
- (void)sendShowHide:(BOOL)show;
- (void)clientProcessDone:(int)clientStatus;
- (void)activateX11:(BOOL)state;
- (void)windowBecameKey:(NSNotification *)notification;
- (void)setX11WindowList:(NSArray *)list;
- (void)setX11WindowCheck:(NSNumber *)nn;
// Aqua interface actions
- (IBAction)startFullScreen:(id)sender;
- (IBAction)startRootless:(id)sender;
- (IBAction)closeHelpAndShow:(id)sender;
- (IBAction)showSwitchPanel:(id)sender;
- (IBAction)showAction:(id)sender;
- (IBAction)itemSelected:(id)sender;
- (IBAction)nextWindow:(id)sender;
- (IBAction)previousWindow:(id)sender;
- (IBAction)performClose:(id)sender;
- (IBAction)performMiniaturize:(id)sender;
- (IBAction)performZoom:(id)sender;
- (IBAction)bringAllToFront:(id)sender;
- (IBAction)copy:(id)sender;
// NSApplication delegate
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender;
- (void)applicationWillTerminate:(NSNotification *)aNotification;
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification;
- (void)applicationDidHide:(NSNotification *)aNotification;
- (void)applicationDidUnhide:(NSNotification *)aNotification;
- (BOOL)applicationShouldHandleReopen:(NSApplication *)theApplication hasVisibleWindows:(BOOL)flag;
- (void)applicationWillResignActive:(NSNotification *)aNotification;
- (void)applicationWillBecomeActive:(NSNotification *)aNotification;
- (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename;
// NSPort delegate
- (void)handlePortMessage:(NSPortMessage *)portMessage;
@end
// X server states
enum {
server_NotStarted,
server_Starting,
server_Running,
server_Quitting,
server_Done
};

File diff suppressed because it is too large Load Diff

View File

@@ -1,74 +0,0 @@
/*
* NSView subclass for Mac OS X rootless X server
*
* Each rootless window contains an instance of this class.
* This class handles events while drawing is handled by Carbon
* code in the rootless Aqua implementation.
*
* Copyright (c) 2001 Greg Parker. All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
* holders shall not be used in advertising or otherwise to promote the sale,
* use or other dealings in this Software without prior written authorization.
*/
#include <dix-config.h>
#import "XView.h"
@implementation XView
- (BOOL)isFlipped
{
return NO;
}
- (BOOL)isOpaque
{
return YES;
}
- (BOOL)acceptsFirstResponder
{
return YES;
}
- (BOOL)acceptsFirstMouse:(NSEvent *)theEvent
{
return YES;
}
- (BOOL)shouldDelayWindowOrderingForEvent:(NSEvent *)theEvent
{
return YES;
}
- (void)mouseDown:(NSEvent *)anEvent
{
// Only X is allowed to restack windows.
[NSApp preventWindowOrdering];
if (! [NSApp isActive]) {
[NSApp activateIgnoringOtherApps:YES];
}
[[self nextResponder] mouseDown:anEvent];
}
@end

View File

@@ -1,61 +0,0 @@
/*
* Internal definitions of the Cocoa rootless implementation
*/
/*
* Copyright (c) 2003 Torrey T. Lyons. All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
* holders shall not be used in advertising or otherwise to promote the sale,
* use or other dealings in this Software without prior written authorization.
*/
#ifndef _CR_H
#define _CR_H
#ifdef __OBJC__
#import <Cocoa/Cocoa.h>
#import "XView.h"
#else
typedef struct OpaqueNSWindow NSWindow;
typedef struct OpaqueXView XView;
#endif
#undef BOOL
#define BOOL xBOOL
#include "screenint.h"
#include "window.h"
#undef BOOL
// Predefined style for the window which is about to be framed
extern WindowPtr nextWindowToFrame;
extern unsigned int nextWindowStyle;
typedef struct {
NSWindow *window;
XView *view;
GrafPtr port;
CGContextRef context;
} CRWindowRec, *CRWindowPtr;
Bool CRInit(ScreenPtr pScreen);
void CRAppleWMInit(void);
#endif /* _CR_H */

View File

@@ -1,157 +0,0 @@
/*
* Cocoa rootless implementation functions for AppleWM extension
*
* Copyright (c) 2003 Torrey T. Lyons. All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
* holders shall not be used in advertising or otherwise to promote the sale,
* use or other dealings in this Software without prior written authorization.
*/
#include <dix-config.h>
#include "quartz/quartzCommon.h"
#include "quartz/cr/cr.h"
#undef BOOL
#define BOOL xBOOL
#include "rootless.h"
#include "X11/X.h"
#define _APPLEWM_SERVER_
#include "X11/extensions/applewm.h"
#include "quartz/applewmExt.h"
#undef BOOL
#define StdDocumentStyleMask (NSTitledWindowMask | \
NSClosableWindowMask | \
NSMiniaturizableWindowMask | \
NSResizableWindowMask)
static int
CRDisableUpdate(void)
{
return Success;
}
static int
CREnableUpdate(void)
{
return Success;
}
static int CRSetWindowLevel(
WindowPtr pWin,
int level)
{
CRWindowPtr crWinPtr;
crWinPtr = (CRWindowPtr) RootlessFrameForWindow(pWin, TRUE);
if (crWinPtr == 0)
return BadWindow;
RootlessStopDrawing(pWin, FALSE);
[crWinPtr->window setLevel:level];
return Success;
}
static int CRFrameGetRect(
int type,
int class,
const BoxRec *outer,
const BoxRec *inner,
BoxRec *ret)
{
return Success;
}
static int CRFrameHitTest(
int class,
int x,
int y,
const BoxRec *outer,
const BoxRec *inner,
int *ret)
{
return 0;
}
static int CRFrameDraw(
WindowPtr pWin,
int class,
unsigned int attr,
const BoxRec *outer,
const BoxRec *inner,
unsigned int title_len,
const unsigned char *title_bytes)
{
CRWindowPtr crWinPtr;
NSWindow *window;
Bool hasResizeIndicator;
/* We assume the window has not yet been framed so
RootlessFrameForWindow() will cause it to be. Record the window
style so that the appropriate one will be used when it is framed.
If the window is already framed, we can't change the window
style and the following will have no effect. */
nextWindowToFrame = pWin;
if (class == AppleWMFrameClassDocument)
nextWindowStyle = StdDocumentStyleMask;
else
nextWindowStyle = NSBorderlessWindowMask;
crWinPtr = (CRWindowPtr) RootlessFrameForWindow(pWin, TRUE);
if (crWinPtr == 0)
return BadWindow;
window = crWinPtr->window;
[window setTitle:[NSString stringWithCString:title_bytes
length:title_len]];
hasResizeIndicator = (attr & AppleWMFrameGrowBox) ? YES : NO;
[window setShowsResizeIndicator:hasResizeIndicator];
return Success;
}
static AppleWMProcsRec crAppleWMProcs = {
CRDisableUpdate,
CREnableUpdate,
CRSetWindowLevel,
CRFrameGetRect,
CRFrameHitTest,
CRFrameDraw
};
void CRAppleWMInit(void)
{
AppleWMExtensionInit(&crAppleWMProcs);
}

View File

@@ -1,438 +0,0 @@
/*
* Cocoa rootless implementation frame functions
*
* Copyright (c) 2001 Greg Parker. All Rights Reserved.
* Copyright (c) 2002-2003 Torrey T. Lyons. All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
* holders shall not be used in advertising or otherwise to promote the sale,
* use or other dealings in this Software without prior written authorization.
*/
#include <dix-config.h>
#include "quartz/quartzCommon.h"
#include "quartz/cr/cr.h"
#undef BOOL
#define BOOL xBOOL
#include "rootless.h"
#include "quartz/applewmExt.h"
#include "windowstr.h"
#undef BOOL
WindowPtr nextWindowToFrame = NULL;
unsigned int nextWindowStyle = 0;
static void CRReshapeFrame(RootlessFrameID wid, RegionPtr pShape);
/*
* CRCreateFrame
* Create a new physical window.
* Rootless windows must not autodisplay! Autodisplay can cause a deadlock.
* Event thread - autodisplay: locks view hierarchy, then window
* X Server thread - window resize: locks window, then view hierarchy
* Deadlock occurs if each thread gets one lock and waits for the other.
*/
static Bool
CRCreateFrame(RootlessWindowPtr pFrame, ScreenPtr pScreen,
int newX, int newY, RegionPtr pShape)
{
CRWindowPtr crWinPtr;
NSRect bounds;
NSWindow *theWindow;
XView *theView;
unsigned int theStyleMask = NSBorderlessWindowMask;
crWinPtr = (CRWindowPtr) xalloc(sizeof(CRWindowRec));
bounds = NSMakeRect(newX,
NSHeight([[NSScreen mainScreen] frame]) -
newY - pFrame->height,
pFrame->width, pFrame->height);
// Check if AppleWM has specified a style for this window
if (pFrame->win == nextWindowToFrame) {
theStyleMask = nextWindowStyle;
}
nextWindowToFrame = NULL;
// Create an NSWindow for the new X11 window
theWindow = [[NSWindow alloc] initWithContentRect:bounds
styleMask:theStyleMask
backing:NSBackingStoreBuffered
#ifdef DEFER_NSWINDOW
defer:YES];
#else
defer:NO];
#endif
if (!theWindow) return FALSE;
[theWindow setBackgroundColor:[NSColor clearColor]]; // erase transparent
[theWindow setAlphaValue:1.0]; // draw opaque
[theWindow setOpaque:YES]; // changed when window is shaped
[theWindow useOptimizedDrawing:YES]; // Has no overlapping sub-views
[theWindow setAutodisplay:NO]; // See comment above
[theWindow disableFlushWindow]; // We do all the flushing manually
[theWindow setHasShadow:YES]; // All windows have shadows
[theWindow setReleasedWhenClosed:YES]; // Default, but we want to be sure
theView = [[XView alloc] initWithFrame:bounds];
[theWindow setContentView:theView];
[theWindow setInitialFirstResponder:theView];
#ifdef DEFER_NSWINDOW
// We need the NSWindow to actually be created now.
// If we had to defer creating it, we have to order it
// onto the screen to force it to be created.
if (pFrame->win->prevSib) {
CRWindowPtr crWinPtr = (CRWindowPtr) RootlessFrameForWindow(
pFrame->win->prevSib, FALSE);
int upperNum = [crWinPtr->window windowNumber];
[theWindow orderWindow:NSWindowBelow relativeTo:upperNum];
} else {
[theWindow orderFront:nil];
}
#endif
[theWindow setAcceptsMouseMovedEvents:YES];
crWinPtr->window = theWindow;
crWinPtr->view = theView;
[theView lockFocus];
// Fill the window with white to make sure alpha channel is set
NSEraseRect(bounds);
crWinPtr->port = [theView qdPort];
crWinPtr->context = [[NSGraphicsContext currentContext] graphicsPort];
// CreateCGContextForPort(crWinPtr->port, &crWinPtr->context);
[theView unlockFocus];
// Store the implementation private frame ID
pFrame->wid = (RootlessFrameID) crWinPtr;
// Reshape the frame if it was created shaped.
if (pShape != NULL)
CRReshapeFrame(pFrame->wid, pShape);
return TRUE;
}
/*
* CRDestroyFrame
* Destroy a frame.
*/
static void
CRDestroyFrame(RootlessFrameID wid)
{
CRWindowPtr crWinPtr = (CRWindowPtr) wid;
[crWinPtr->window orderOut:nil];
[crWinPtr->window close];
[crWinPtr->view release];
free(crWinPtr);
}
/*
* CRMoveFrame
* Move a frame on screen.
*/
static void
CRMoveFrame(RootlessFrameID wid, ScreenPtr pScreen, int newX, int newY)
{
CRWindowPtr crWinPtr = (CRWindowPtr) wid;
NSPoint topLeft;
topLeft = NSMakePoint(newX,
NSHeight([[NSScreen mainScreen] frame]) - newY);
[crWinPtr->window setFrameTopLeftPoint:topLeft];
}
/*
* CRResizeFrame
* Move and resize a frame.
*/
static void
CRResizeFrame(RootlessFrameID wid, ScreenPtr pScreen,
int newX, int newY, unsigned int newW, unsigned int newH,
unsigned int gravity)
{
CRWindowPtr crWinPtr = (CRWindowPtr) wid;
NSRect bounds = NSMakeRect(newX, NSHeight([[NSScreen mainScreen] frame]) -
newY - newH, newW, newH);
[crWinPtr->window setFrame:bounds display:NO];
}
/*
* CRRestackFrame
* Change the frame order. Put the frame behind nextWid or on top if
* it is NULL. Unmapped frames are mapped by restacking them.
*/
static void
CRRestackFrame(RootlessFrameID wid, RootlessFrameID nextWid)
{
CRWindowPtr crWinPtr = (CRWindowPtr) wid;
CRWindowPtr crNextWinPtr = (CRWindowPtr) nextWid;
if (crNextWinPtr) {
int upperNum = [crNextWinPtr->window windowNumber];
[crWinPtr->window orderWindow:NSWindowBelow relativeTo:upperNum];
} else {
[crWinPtr->window makeKeyAndOrderFront:nil];
}
}
/*
* CRReshapeFrame
* Set the shape of a frame.
*/
static void
CRReshapeFrame(RootlessFrameID wid, RegionPtr pShape)
{
CRWindowPtr crWinPtr = (CRWindowPtr) wid;
NSRect bounds = [crWinPtr->view frame];
int winHeight = NSHeight(bounds);
BoxRec localBox = {0, 0, NSWidth(bounds), winHeight};
[crWinPtr->view lockFocus];
if (pShape != NULL) {
// Calculate the region outside the new shape.
miInverse(pShape, pShape, &localBox);
}
// If window is currently shaped we need to undo the previous shape.
if (![crWinPtr->window isOpaque]) {
[[NSColor whiteColor] set];
NSRectFillUsingOperation(bounds, NSCompositeDestinationAtop);
}
if (pShape != NULL) {
int count = REGION_NUM_RECTS(pShape);
BoxRec *extRects = REGION_RECTS(pShape);
BoxRec *rects, *end;
// Make transparent if window is now shaped.
[crWinPtr->window setOpaque:NO];
// Clear the areas outside the window shape
[[NSColor clearColor] set];
for (rects = extRects, end = extRects+count; rects < end; rects++) {
int rectHeight = rects->y2 - rects->y1;
NSRectFill( NSMakeRect(rects->x1,
winHeight - rects->y1 - rectHeight,
rects->x2 - rects->x1, rectHeight) );
}
[[NSGraphicsContext currentContext] flushGraphics];
// force update of window shadow
[crWinPtr->window setHasShadow:NO];
[crWinPtr->window setHasShadow:YES];
} else {
[crWinPtr->window setOpaque:YES];
[[NSGraphicsContext currentContext] flushGraphics];
}
[crWinPtr->view unlockFocus];
}
/*
* CRUnmapFrame
* Unmap a frame.
*/
static void
CRUnmapFrame(RootlessFrameID wid)
{
CRWindowPtr crWinPtr = (CRWindowPtr) wid;
[crWinPtr->window orderOut:nil];
}
/*
* CRStartDrawing
* When a window's buffer is not being drawn to, the CoreGraphics
* window server may compress or move it. Call this routine
* to lock down the buffer during direct drawing. It returns
* a pointer to the backing buffer.
*/
static void
CRStartDrawing(RootlessFrameID wid, char **pixelData, int *bytesPerRow)
{
CRWindowPtr crWinPtr = (CRWindowPtr) wid;
PixMapHandle pix;
[crWinPtr->view lockFocus];
crWinPtr->port = [crWinPtr->view qdPort];
LockPortBits(crWinPtr->port);
[crWinPtr->view unlockFocus];
pix = GetPortPixMap(crWinPtr->port);
*pixelData = GetPixBaseAddr(pix);
*bytesPerRow = GetPixRowBytes(pix) & 0x3fff; // fixme is mask needed?
}
/*
* CRStopDrawing
* When direct access to a window's buffer is no longer needed, this
* routine should be called to allow CoreGraphics to compress or
* move it.
*/
static void
CRStopDrawing(RootlessFrameID wid, Bool flush)
{
CRWindowPtr crWinPtr = (CRWindowPtr) wid;
UnlockPortBits(crWinPtr->port);
if (flush) {
QDFlushPortBuffer(crWinPtr->port, NULL);
}
}
/*
* CRUpdateRegion
* Flush a region from a window's backing buffer to the screen.
*/
static void
CRUpdateRegion(RootlessFrameID wid, RegionPtr pDamage)
{
CRWindowPtr crWinPtr = (CRWindowPtr) wid;
#ifdef ROOTLESS_TRACK_DAMAGE
int count = REGION_NUM_RECTS(pDamage);
BoxRec *rects = REGION_RECTS(pDamage);
BoxRec *end;
static RgnHandle rgn = NULL;
static RgnHandle box = NULL;
if (!rgn) rgn = NewRgn();
if (!box) box = NewRgn();
for (end = rects+count; rects < end; rects++) {
Rect qdRect;
qdRect.left = rects->x1;
qdRect.top = rects->y1;
qdRect.right = rects->x2;
qdRect.bottom = rects->y2;
RectRgn(box, &qdRect);
UnionRgn(rgn, box, rgn);
}
QDFlushPortBuffer(crWinPtr->port, rgn);
SetEmptyRgn(rgn);
SetEmptyRgn(box);
#else /* !ROOTLESS_TRACK_DAMAGE */
QDFlushPortBuffer(crWinPtr->port, NULL);
#endif
}
/*
* CRDamageRects
* Mark damaged rectangles as requiring redisplay to screen.
*/
static void
CRDamageRects(RootlessFrameID wid, int count, const BoxRec *rects,
int shift_x, int shift_y)
{
CRWindowPtr crWinPtr = (CRWindowPtr) wid;
const BoxRec *end;
for (end = rects + count; rects < end; rects++) {
Rect qdRect;
qdRect.left = rects->x1 + shift_x;
qdRect.top = rects->y1 + shift_y;
qdRect.right = rects->x2 + shift_x;
qdRect.bottom = rects->y2 + shift_y;
QDAddRectToDirtyRegion(crWinPtr->port, &qdRect);
}
}
/*
* Called to check if the frame should be reordered when it is restacked.
*/
Bool CRDoReorderWindow(RootlessWindowPtr pFrame)
{
WindowPtr pWin = pFrame->win;
return AppleWMDoReorderWindow(pWin);
}
static RootlessFrameProcsRec CRRootlessProcs = {
CRCreateFrame,
CRDestroyFrame,
CRMoveFrame,
CRResizeFrame,
CRRestackFrame,
CRReshapeFrame,
CRUnmapFrame,
CRStartDrawing,
CRStopDrawing,
CRUpdateRegion,
CRDamageRects,
NULL,
CRDoReorderWindow,
NULL,
NULL,
NULL,
NULL
};
/*
* Initialize CR implementation
*/
Bool
CRInit(ScreenPtr pScreen)
{
RootlessInit(pScreen, &CRRootlessProcs);
rootless_CopyBytes_threshold = 0;
rootless_FillBytes_threshold = 0;
rootless_CompositePixels_threshold = 0;
rootless_CopyWindow_threshold = 0;
return TRUE;
}

View File

@@ -1,380 +0,0 @@
/*
* Cocoa rootless implementation initialization
*
* Copyright (c) 2001 Greg Parker. All Rights Reserved.
* Copyright (c) 2002-2004 Torrey T. Lyons. All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
* holders shall not be used in advertising or otherwise to promote the sale,
* use or other dealings in this Software without prior written authorization.
*/
#include <dix-config.h>
#include "quartz/quartzCommon.h"
#include "quartz/cr/cr.h"
#undef BOOL
#define BOOL xBOOL
#include "darwin.h"
#include "quartz/quartz.h"
#include "quartz/quartzCursor.h"
#include "rootless.h"
#include "safeAlpha/safeAlpha.h"
#include "quartz/pseudoramiX.h"
#include "quartz/applewmExt.h"
#include "regionstr.h"
#include "scrnintstr.h"
#include "picturestr.h"
#include "globals.h"
#ifdef DAMAGE
# include "damage.h"
#endif
#undef BOOL
// Name of GLX bundle using AGL framework
static const char *crOpenGLBundle = "glxAGL.bundle";
static Class classXView = nil;
/*
* CRDisplayInit
* Find all screens.
*
* Multihead note: When rootless mode uses PseudoramiX, the
* X server only sees one screen; only PseudoramiX itself knows
* about all of the screens.
*/
static void
CRDisplayInit(void)
{
ErrorF("Display mode: Rootless Quartz -- Cocoa implementation\n");
if (noPseudoramiXExtension) {
darwinScreensFound = [[NSScreen screens] count];
} else {
darwinScreensFound = 1; // only PseudoramiX knows about the rest
}
CRAppleWMInit();
}
/*
* CRAddPseudoramiXScreens
* Add a single virtual screen encompassing all the physical screens
* with PseudoramiX.
*/
static void
CRAddPseudoramiXScreens(int *x, int *y, int *width, int *height)
{
int i;
NSRect unionRect = NSMakeRect(0, 0, 0, 0);
NSArray *screens = [NSScreen screens];
// Get the union of all screens (minus the menu bar on main screen)
for (i = 0; i < [screens count]; i++) {
NSScreen *screen = [screens objectAtIndex:i];
NSRect frame = [screen frame];
frame.origin.y = [[NSScreen mainScreen] frame].size.height -
frame.size.height - frame.origin.y;
if (NSEqualRects([screen frame], [[NSScreen mainScreen] frame])) {
frame.origin.y += aquaMenuBarHeight;
frame.size.height -= aquaMenuBarHeight;
}
unionRect = NSUnionRect(unionRect, frame);
}
// Use unionRect as the screen size for the X server.
*x = unionRect.origin.x;
*y = unionRect.origin.y;
*width = unionRect.size.width;
*height = unionRect.size.height;
// Tell PseudoramiX about the real screens.
// InitOutput() will move the big screen to (0,0),
// so compensate for that here.
for (i = 0; i < [screens count]; i++) {
NSScreen *screen = [screens objectAtIndex:i];
NSRect frame = [screen frame];
int j;
// Skip this screen if it's a mirrored copy of an earlier screen.
for (j = 0; j < i; j++) {
if (NSEqualRects(frame, [[screens objectAtIndex:j] frame])) {
ErrorF("PseudoramiX screen %d is a mirror of screen %d.\n",
i, j);
break;
}
}
if (j < i) continue; // this screen is a mirrored copy
frame.origin.y = [[NSScreen mainScreen] frame].size.height -
frame.size.height - frame.origin.y;
if (NSEqualRects([screen frame], [[NSScreen mainScreen] frame])) {
frame.origin.y += aquaMenuBarHeight;
frame.size.height -= aquaMenuBarHeight;
}
ErrorF("PseudoramiX screen %d added: %dx%d @ (%d,%d).\n", i,
(int)frame.size.width, (int)frame.size.height,
(int)frame.origin.x, (int)frame.origin.y);
frame.origin.x -= unionRect.origin.x;
frame.origin.y -= unionRect.origin.y;
ErrorF("PseudoramiX screen %d placed at X11 coordinate (%d,%d).\n",
i, (int)frame.origin.x, (int)frame.origin.y);
PseudoramiXAddScreen(frame.origin.x, frame.origin.y,
frame.size.width, frame.size.height);
}
}
/*
* CRScreenParams
* Set the basic screen parameters.
*/
static void
CRScreenParams(int index, DarwinFramebufferPtr dfb)
{
dfb->bitsPerComponent = CGDisplayBitsPerSample(kCGDirectMainDisplay);
dfb->bitsPerPixel = CGDisplayBitsPerPixel(kCGDirectMainDisplay);
dfb->colorBitsPerPixel = 3 * dfb->bitsPerComponent;
if (noPseudoramiXExtension) {
NSScreen *screen = [[NSScreen screens] objectAtIndex:index];
NSRect frame = [screen frame];
// set x, y so (0,0) is top left of main screen
dfb->x = NSMinX(frame);
dfb->y = NSHeight([[NSScreen mainScreen] frame]) -
NSHeight(frame) - NSMinY(frame);
dfb->width = NSWidth(frame);
dfb->height = NSHeight(frame);
// Shift the usable part of main screen down to avoid the menu bar.
if (NSEqualRects(frame, [[NSScreen mainScreen] frame])) {
dfb->y += aquaMenuBarHeight;
dfb->height -= aquaMenuBarHeight;
}
} else {
CRAddPseudoramiXScreens(&dfb->x, &dfb->y, &dfb->width, &dfb->height);
}
}
/*
* CRAddScreen
* Init the framebuffer and record pixmap parameters for the screen.
*/
static Bool
CRAddScreen(int index, ScreenPtr pScreen)
{
DarwinFramebufferPtr dfb = SCREEN_PRIV(pScreen);
QuartzScreenPtr displayInfo = QUARTZ_PRIV(pScreen);
CGRect cgRect;
CGDisplayCount numDisplays;
CGDisplayCount allocatedDisplays = 0;
CGDirectDisplayID *displays = NULL;
CGDisplayErr cgErr;
CRScreenParams(index, dfb);
dfb->colorType = TrueColor;
/* Passing zero width (pitch) makes miCreateScreenResources set the
screen pixmap to the framebuffer pointer, i.e. NULL. The generic
rootless code takes care of making this work. */
dfb->pitch = 0;
dfb->framebuffer = NULL;
// Get all CoreGraphics displays covered by this X11 display.
cgRect = CGRectMake(dfb->x, dfb->y, dfb->width, dfb->height);
do {
cgErr = CGGetDisplaysWithRect(cgRect, 0, NULL, &numDisplays);
if (cgErr) break;
allocatedDisplays = numDisplays;
displays = xrealloc(displays,
numDisplays * sizeof(CGDirectDisplayID));
cgErr = CGGetDisplaysWithRect(cgRect, allocatedDisplays, displays,
&numDisplays);
if (cgErr != CGDisplayNoErr) break;
} while (numDisplays > allocatedDisplays);
if (cgErr != CGDisplayNoErr || numDisplays == 0) {
ErrorF("Could not find CGDirectDisplayID(s) for X11 screen %d: %dx%d @ %d,%d.\n",
index, dfb->width, dfb->height, dfb->x, dfb->y);
return FALSE;
}
// This X11 screen covers all CoreGraphics displays we just found.
// If there's more than one CG display, then video mirroring is on
// or PseudoramiX is on.
displayInfo->displayCount = allocatedDisplays;
displayInfo->displayIDs = displays;
return TRUE;
}
/*
* CRSetupScreen
* Setup the screen for rootless access.
*/
static Bool
CRSetupScreen(int index, ScreenPtr pScreen)
{
// Add alpha protecting replacements for fb screen functions
pScreen->PaintWindowBackground = SafeAlphaPaintWindow;
pScreen->PaintWindowBorder = SafeAlphaPaintWindow;
#ifdef RENDER
{
PictureScreenPtr ps = GetPictureScreen(pScreen);
ps->Composite = SafeAlphaComposite;
}
#endif /* RENDER */
// Initialize accelerated rootless drawing
// Note that this must be done before DamageSetup().
RootlessAccelInit(pScreen);
#ifdef DAMAGE
// The Damage extension needs to wrap underneath the
// generic rootless layer, so do it now.
if (!DamageSetup(pScreen))
return FALSE;
#endif
// Initialize generic rootless code
return CRInit(pScreen);
}
/*
* CRScreenChanged
* Configuration of displays has changed.
*/
static void
CRScreenChanged(void)
{
QuartzMessageServerThread(kXDarwinDisplayChanged, 0);
}
/*
* CRUpdateScreen
* Update screen after configuation change.
*/
static void
CRUpdateScreen(ScreenPtr pScreen)
{
rootlessGlobalOffsetX = darwinMainScreenX;
rootlessGlobalOffsetY = darwinMainScreenY;
AppleWMSetScreenOrigin(WindowTable[pScreen->myNum]);
RootlessRepositionWindows(pScreen);
RootlessUpdateScreenPixmap(pScreen);
}
/*
* CRInitInput
* Finalize CR specific setup.
*/
static void
CRInitInput(int argc, char **argv)
{
int i;
rootlessGlobalOffsetX = darwinMainScreenX;
rootlessGlobalOffsetY = darwinMainScreenY;
for (i = 0; i < screenInfo.numScreens; i++)
AppleWMSetScreenOrigin(WindowTable[i]);
}
/*
* CRIsX11Window
* Returns TRUE if cr is displaying this window.
*/
static Bool
CRIsX11Window(void *nsWindow, int windowNumber)
{
NSWindow *theWindow = nsWindow;
if (!theWindow)
return FALSE;
if ([[theWindow contentView] isKindOfClass:classXView])
return TRUE;
else
return FALSE;
}
/*
* Quartz display mode function list.
*/
static QuartzModeProcsRec crModeProcs = {
CRDisplayInit,
CRAddScreen,
CRSetupScreen,
CRInitInput,
QuartzInitCursor,
QuartzReallySetCursor,
QuartzSuspendXCursor,
QuartzResumeXCursor,
NULL, // No capture or release in rootless mode
NULL,
CRScreenChanged,
CRAddPseudoramiXScreens,
CRUpdateScreen,
CRIsX11Window,
NULL, // Cocoa NSWindows hide themselves
RootlessFrameForWindow,
TopLevelParent,
NULL, // No support for DRI surfaces
NULL
};
/*
* QuartzModeBundleInit
* Initialize the display mode bundle after loading.
*/
Bool
QuartzModeBundleInit(void)
{
quartzProcs = &crModeProcs;
quartzOpenGLBundle = crOpenGLBundle;
classXView = [XView class];
return TRUE;
}

View File

@@ -1,551 +0,0 @@
/*
* Screen routines for full screen Quartz mode
*
* Copyright (c) 2002-2003 Torrey T. Lyons. All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* 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
* TORREY T. LYONS 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(s) of the above copyright
* holders shall not be used in advertising or otherwise to promote the sale,
* use or other dealings in this Software without prior written authorization.
*/
#include <dix-config.h>
#include "quartz/quartzCommon.h"
#include "darwin.h"
#include "quartz/quartz.h"
#include "quartz/quartzCursor.h"
#include "colormapst.h"
#include "scrnintstr.h"
#include "micmap.h"
#include "shadow.h"
// Full screen specific per screen storage structure
typedef struct {
CGDirectDisplayID displayID;
CFDictionaryRef xDisplayMode;
CFDictionaryRef aquaDisplayMode;
CGDirectPaletteRef xPalette;
CGDirectPaletteRef aquaPalette;
unsigned char *framebuffer;
unsigned char *shadowPtr;
} FSScreenRec, *FSScreenPtr;
#define FULLSCREEN_PRIV(pScreen) \
((FSScreenPtr)dixLookupPrivate(&(pScreen)->devPrivates, fsScreenKey))
static DevPrivateKey fsScreenKey = &fsScreenKey;
static CGDirectDisplayID *quartzDisplayList = NULL;
static int quartzNumScreens = 0;
static FSScreenPtr quartzScreens[MAXSCREENS];
static DevPrivateKey darwinCmapPrivateKey = &darwinCmapPrivateKey;
#define CMAP_PRIV(pCmap) ((CGDirectPaletteRef) \
dixLookupPrivate(&(pCmap)->devPrivates, darwinCmapPrivateKey))
/*
=============================================================================
Colormap handling
=============================================================================
*/
/*
* FSInitCmapPrivates
* Colormap privates may be allocated after the default colormap has
* already been created for some screens. This initialization procedure
* is called for each default colormap that is found.
*/
static Bool
FSInitCmapPrivates(
ColormapPtr pCmap)
{
return TRUE;
}
/*
* FSCreateColormap
* This is a callback from X after a new colormap is created.
* We allocate a new CoreGraphics pallete for each colormap.
*/
static Bool
FSCreateColormap(
ColormapPtr pCmap)
{
CGDirectPaletteRef pallete;
pallete = CGPaletteCreateDefaultColorPalette();
if (!pallete) return FALSE;
CMAP_PRIV(pCmap) = pallete;
return TRUE;
}
/*
* FSDestroyColormap
* This is called by DIX FreeColormap after it has uninstalled a colormap
* and notified all interested parties. We deallocated the corresponding
* CoreGraphics pallete.
*/
static void
FSDestroyColormap(
ColormapPtr pCmap)
{
CGPaletteRelease( CMAP_PRIV(pCmap) );
}
/*
* FSInstallColormap
* Set the current CoreGraphics pallete to the pallete corresponding
* to the provided colormap.
*/
static void
FSInstallColormap(
ColormapPtr pCmap)
{
CGDirectPaletteRef palette = CMAP_PRIV(pCmap);
ScreenPtr pScreen = pCmap->pScreen;
FSScreenPtr fsDisplayInfo = FULLSCREEN_PRIV(pScreen);
// Inform all interested parties that the map is being changed.
miInstallColormap(pCmap);
if (quartzServerVisible)
CGDisplaySetPalette(fsDisplayInfo->displayID, palette);
fsDisplayInfo->xPalette = palette;
}
/*
* FSStoreColors
* This is a callback from X to change the hardware colormap
* when using PsuedoColor in full screen mode.
*/
static void
FSStoreColors(
ColormapPtr pCmap,
int numEntries,
xColorItem *pdefs)
{
CGDirectPaletteRef palette = CMAP_PRIV(pCmap);
ScreenPtr pScreen = pCmap->pScreen;
FSScreenPtr fsDisplayInfo = FULLSCREEN_PRIV(pScreen);
CGDeviceColor color;
int i;
if (! palette)
return;
for (i = 0; i < numEntries; i++) {
color.red = pdefs[i].red / 65535.0;
color.green = pdefs[i].green / 65535.0;
color.blue = pdefs[i].blue / 65535.0;
CGPaletteSetColorAtIndex(palette, color, pdefs[i].pixel);
}
// Update hardware colormap
if (quartzServerVisible)
CGDisplaySetPalette(fsDisplayInfo->displayID, palette);
}
/*
=============================================================================
Switching between Aqua and X
=============================================================================
*/
/*
* FSCapture
* Capture the screen so we can draw. Called directly from the main thread
* to synchronize with hiding the menubar.
*/
static void FSCapture(void)
{
int i;
if (quartzRootless) return;
for (i = 0; i < quartzNumScreens; i++) {
FSScreenPtr fsDisplayInfo = quartzScreens[i];
CGDirectDisplayID cgID = fsDisplayInfo->displayID;
if (!CGDisplayIsCaptured(cgID)) {
CGDisplayCapture(cgID);
fsDisplayInfo->aquaDisplayMode = CGDisplayCurrentMode(cgID);
if (fsDisplayInfo->xDisplayMode != fsDisplayInfo->aquaDisplayMode)
CGDisplaySwitchToMode(cgID, fsDisplayInfo->xDisplayMode);
if (fsDisplayInfo->xPalette)
CGDisplaySetPalette(cgID, fsDisplayInfo->xPalette);
}
}
}
/*
* FSRelease
* Release the screen so others can draw.
*/
static void FSRelease(void)
{
int i;
if (quartzRootless) return;
for (i = 0; i < quartzNumScreens; i++) {
FSScreenPtr fsDisplayInfo = quartzScreens[i];
CGDirectDisplayID cgID = fsDisplayInfo->displayID;
if (CGDisplayIsCaptured(cgID)) {
if (fsDisplayInfo->xDisplayMode != fsDisplayInfo->aquaDisplayMode)
CGDisplaySwitchToMode(cgID, fsDisplayInfo->aquaDisplayMode);
if (fsDisplayInfo->aquaPalette)
CGDisplaySetPalette(cgID, fsDisplayInfo->aquaPalette);
CGDisplayRelease(cgID);
}
}
}
/*
* FSSuspendScreen
* Suspend X11 cursor and drawing to the screen.
*/
static void FSSuspendScreen(
ScreenPtr pScreen)
{
QuartzSuspendXCursor(pScreen);
xf86SetRootClip(pScreen, FALSE);
}
/*
* FSResumeScreen
* Resume X11 cursor and drawing to the screen.
*/
static void FSResumeScreen(
ScreenPtr pScreen,
int x, // cursor location
int y )
{
QuartzResumeXCursor(pScreen, x, y);
xf86SetRootClip(pScreen, TRUE);
}
/*
=============================================================================
Screen initialization
=============================================================================
*/
/*
* FSDisplayInit
* Full screen specific initialization called from InitOutput.
*/
static void FSDisplayInit(void)
{
CGDisplayCount quartzDisplayCount = 0;
ErrorF("Display mode: Full screen Quartz -- Direct Display\n");
// Find all the CoreGraphics displays
CGGetActiveDisplayList(0, NULL, &quartzDisplayCount);
quartzDisplayList = xalloc(quartzDisplayCount * sizeof(CGDirectDisplayID));
CGGetActiveDisplayList(quartzDisplayCount, quartzDisplayList,
&quartzDisplayCount);
darwinScreensFound = quartzDisplayCount;
atexit(FSRelease);
}
/*
* FSFindDisplayMode
* Find the appropriate display mode to use in full screen mode.
* If display mode is not the same as the current Aqua mode, switch
* to the new mode.
*/
static Bool FSFindDisplayMode(
FSScreenPtr fsDisplayInfo)
{
CGDirectDisplayID cgID = fsDisplayInfo->displayID;
size_t height, width, bpp;
boolean_t exactMatch;
fsDisplayInfo->aquaDisplayMode = CGDisplayCurrentMode(cgID);
// If no user options, use current display mode
if (darwinDesiredWidth == 0 && darwinDesiredDepth == -1 &&
darwinDesiredRefresh == -1)
{
fsDisplayInfo->xDisplayMode = fsDisplayInfo->aquaDisplayMode;
return TRUE;
}
// If the user has no choice for size, use current
if (darwinDesiredWidth == 0) {
width = CGDisplayPixelsWide(cgID);
height = CGDisplayPixelsHigh(cgID);
} else {
width = darwinDesiredWidth;
height = darwinDesiredHeight;
}
switch (darwinDesiredDepth) {
case 0:
bpp = 8;
break;
case 1:
bpp = 16;
break;
case 2:
bpp = 32;
break;
default:
bpp = CGDisplayBitsPerPixel(cgID);
}
if (darwinDesiredRefresh == -1) {
fsDisplayInfo->xDisplayMode =
CGDisplayBestModeForParameters(cgID, bpp, width, height,
&exactMatch);
} else {
fsDisplayInfo->xDisplayMode =
CGDisplayBestModeForParametersAndRefreshRate(cgID, bpp,
width, height, darwinDesiredRefresh, &exactMatch);
}
if (!exactMatch) {
fsDisplayInfo->xDisplayMode = fsDisplayInfo->aquaDisplayMode;
return FALSE;
}
// Switch to the new display mode
CGDisplaySwitchToMode(cgID, fsDisplayInfo->xDisplayMode);
return TRUE;
}
/*
* FSAddScreen
* Do initialization of each screen for Quartz in full screen mode.
*/
static Bool FSAddScreen(
int index,
ScreenPtr pScreen)
{
DarwinFramebufferPtr dfb = SCREEN_PRIV(pScreen);
QuartzScreenPtr displayInfo = QUARTZ_PRIV(pScreen);
CGDirectDisplayID cgID = quartzDisplayList[index];
CGRect bounds;
FSScreenPtr fsDisplayInfo;
// Allocate space for private per screen fullscreen specific storage.
fsDisplayInfo = xalloc(sizeof(FSScreenRec));
FULLSCREEN_PRIV(pScreen) = fsDisplayInfo;
displayInfo->displayCount = 1;
displayInfo->displayIDs = xrealloc(displayInfo->displayIDs,
1 * sizeof(CGDirectDisplayID));
displayInfo->displayIDs[0] = cgID;
fsDisplayInfo->displayID = cgID;
fsDisplayInfo->xDisplayMode = 0;
fsDisplayInfo->aquaDisplayMode = 0;
fsDisplayInfo->xPalette = 0;
fsDisplayInfo->aquaPalette = 0;
// Capture full screen because X doesn't like read-only framebuffer.
// We need to do this before we (potentially) switch the display mode.
CGDisplayCapture(cgID);
if (! FSFindDisplayMode(fsDisplayInfo)) {
ErrorF("Could not support specified display mode on screen %i.\n",
index);
xfree(fsDisplayInfo);
return FALSE;
}
// Don't need to flip y-coordinate as CoreGraphics treats (0, 0)
// as the top left of main screen.
bounds = CGDisplayBounds(cgID);
dfb->x = bounds.origin.x;
dfb->y = bounds.origin.y;
dfb->width = bounds.size.width;
dfb->height = bounds.size.height;
dfb->pitch = CGDisplayBytesPerRow(cgID);
dfb->bitsPerPixel = CGDisplayBitsPerPixel(cgID);
if (dfb->bitsPerPixel == 8) {
if (CGDisplayCanSetPalette(cgID)) {
dfb->colorType = PseudoColor;
} else {
dfb->colorType = StaticColor;
}
dfb->bitsPerComponent = 8;
dfb->colorBitsPerPixel = 8;
} else {
dfb->colorType = TrueColor;
dfb->bitsPerComponent = CGDisplayBitsPerSample(cgID);
dfb->colorBitsPerPixel = CGDisplaySamplesPerPixel(cgID) *
dfb->bitsPerComponent;
}
fsDisplayInfo->framebuffer = CGDisplayBaseAddress(cgID);
// allocate shadow framebuffer
fsDisplayInfo->shadowPtr = xalloc(dfb->pitch * dfb->height);
dfb->framebuffer = fsDisplayInfo->shadowPtr;
return TRUE;
}
/*
* FSShadowUpdate
* Update the damaged regions of the shadow framebuffer on the display.
*/
static void FSShadowUpdate(
ScreenPtr pScreen,
shadowBufPtr pBuf)
{
DarwinFramebufferPtr dfb = SCREEN_PRIV(pScreen);
FSScreenPtr fsDisplayInfo = FULLSCREEN_PRIV(pScreen);
RegionPtr damage = &pBuf->damage;
int numBox = REGION_NUM_RECTS(damage);
BoxPtr pBox = REGION_RECTS(damage);
int pitch = dfb->pitch;
int bpp = dfb->bitsPerPixel/8;
// Don't update if the X server is not visible
if (!quartzServerVisible)
return;
// Loop through all the damaged boxes
while (numBox--) {
int width, height, offset;
unsigned char *src, *dst;
width = (pBox->x2 - pBox->x1) * bpp;
height = pBox->y2 - pBox->y1;
offset = (pBox->y1 * pitch) + (pBox->x1 * bpp);
src = fsDisplayInfo->shadowPtr + offset;
dst = fsDisplayInfo->framebuffer + offset;
while (height--) {
memcpy(dst, src, width);
dst += pitch;
src += pitch;
}
// Get the next box
pBox++;
}
}
/*
* FSSetupScreen
* Finalize full screen specific setup of each screen.
*/
static Bool FSSetupScreen(
int index,
ScreenPtr pScreen)
{
DarwinFramebufferPtr dfb = SCREEN_PRIV(pScreen);
FSScreenPtr fsDisplayInfo = FULLSCREEN_PRIV(pScreen);
CGDirectDisplayID cgID = fsDisplayInfo->displayID;
// Initialize shadow framebuffer support
if (! shadowInit(pScreen, FSShadowUpdate, NULL)) {
ErrorF("Failed to initalize shadow framebuffer for screen %i.\n",
index);
return FALSE;
}
if (dfb->colorType == PseudoColor) {
// Initialize colormap handling
size_t aquaBpp;
// If Aqua is using 8 bits we need to keep track of its pallete.
CFNumberGetValue(CFDictionaryGetValue(fsDisplayInfo->aquaDisplayMode,
kCGDisplayBitsPerPixel), kCFNumberLongType, &aquaBpp);
if (aquaBpp <= 8)
fsDisplayInfo->aquaPalette = CGPaletteCreateWithDisplay(cgID);
pScreen->CreateColormap = FSCreateColormap;
pScreen->DestroyColormap = FSDestroyColormap;
pScreen->InstallColormap = FSInstallColormap;
pScreen->StoreColors = FSStoreColors;
}
quartzScreens[quartzNumScreens++] = fsDisplayInfo;
return TRUE;
}
/*
* Quartz display mode function list.
*/
static QuartzModeProcsRec fsModeProcs = {
FSDisplayInit,
FSAddScreen,
FSSetupScreen,
NULL, // Not needed
QuartzInitCursor,
QuartzReallySetCursor,
FSSuspendScreen,
FSResumeScreen,
FSCapture,
FSRelease,
NULL, // No dynamic screen change support
NULL,
NULL,
NULL, // No rootless code in fullscreen
NULL,
NULL,
NULL,
NULL, // No support for DRI surfaces
NULL
};
/*
* QuartzModeBundleInit
* Initialize the display mode bundle after loading.
*/
Bool
QuartzModeBundleInit(void)
{
quartzProcs = &fsModeProcs;
quartzOpenGLBundle = NULL; // Only Mesa support for now
return TRUE;
}

View File

@@ -1,646 +0,0 @@
/**************************************************************
*
* Support for using the Quartz Window Manager cursor
*
**************************************************************/
/*
* Copyright (c) 2001-2003 Torrey T. Lyons and Greg Parker.
* All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
* holders shall not be used in advertising or otherwise to promote the sale,
* use or other dealings in this Software without prior written authorization.
*/
#include <dix-config.h>
#include "quartz/quartzCommon.h"
#include "quartz/quartzCursor.h"
#include "darwin.h"
#include <pthread.h>
#include "mi.h"
#include "scrnintstr.h"
#include "cursorstr.h"
#include "mipointrst.h"
#include "globals.h"
// Size of the QuickDraw cursor
#define CURSORWIDTH 16
#define CURSORHEIGHT 16
typedef struct {
int qdCursorMode;
int qdCursorVisible;
int useQDCursor;
QueryBestSizeProcPtr QueryBestSize;
miPointerSpriteFuncPtr spriteFuncs;
} QuartzCursorScreenRec, *QuartzCursorScreenPtr;
static DevPrivateKey darwinCursorScreenKey = &darwinCursorScreenKey;
static CursorPtr quartzLatentCursor = NULL;
static QD_Cursor gQDArrow; // QuickDraw arrow cursor
// Cursor for the main thread to set (NULL = arrow cursor).
static CCrsrHandle currentCursor = NULL;
static pthread_mutex_t cursorMutex;
static pthread_cond_t cursorCondition;
#define CURSOR_PRIV(pScreen) ((QuartzCursorScreenPtr) \
dixLookupPrivate(&(pScreen)->devPrivates, darwinCursorScreenKey))
#define HIDE_QD_CURSOR(pScreen, visible) \
if (visible) { \
int ix; \
for (ix = 0; ix < QUARTZ_PRIV(pScreen)->displayCount; ix++) { \
CGDisplayHideCursor(QUARTZ_PRIV(pScreen)->displayIDs[ix]); \
} \
visible = FALSE; \
} ((void)0)
#define SHOW_QD_CURSOR(pScreen, visible) \
{ \
int ix; \
for (ix = 0; ix < QUARTZ_PRIV(pScreen)->displayCount; ix++) { \
CGDisplayShowCursor(QUARTZ_PRIV(pScreen)->displayIDs[ix]); \
} \
visible = TRUE; \
} ((void)0)
#define CHANGE_QD_CURSOR(cursorH) \
if (!quartzServerQuitting) { \
/* Acquire lock and tell the main thread to change cursor */ \
pthread_mutex_lock(&cursorMutex); \
currentCursor = (CCrsrHandle) (cursorH); \
QuartzMessageMainThread(kQuartzCursorUpdate, NULL, 0); \
\
/* Wait for the main thread to change the cursor */ \
pthread_cond_wait(&cursorCondition, &cursorMutex); \
pthread_mutex_unlock(&cursorMutex); \
} ((void)0)
/*
* MakeQDCursor helpers: CTAB_ENTER, interleave
*/
// Add a color entry to a ctab
#define CTAB_ENTER(ctab, index, r, g, b) \
ctab->ctTable[index].value = index; \
ctab->ctTable[index].rgb.red = r; \
ctab->ctTable[index].rgb.green = g; \
ctab->ctTable[index].rgb.blue = b
// Make an unsigned short by interleaving the bits of bytes c1 and c2.
// High bit of c1 is first; low bit of c2 is last.
// Interleave is a built-in INTERCAL operator.
static unsigned short
interleave(
unsigned char c1,
unsigned char c2 )
{
return
((c1 & 0x80) << 8) | ((c2 & 0x80) << 7) |
((c1 & 0x40) << 7) | ((c2 & 0x40) << 6) |
((c1 & 0x20) << 6) | ((c2 & 0x20) << 5) |
((c1 & 0x10) << 5) | ((c2 & 0x10) << 4) |
((c1 & 0x08) << 4) | ((c2 & 0x08) << 3) |
((c1 & 0x04) << 3) | ((c2 & 0x04) << 2) |
((c1 & 0x02) << 2) | ((c2 & 0x02) << 1) |
((c1 & 0x01) << 1) | ((c2 & 0x01) << 0) ;
}
/*
* MakeQDCursor
* Make a QuickDraw color cursor from the given X11 cursor.
* Warning: This code is nasty. Color cursors were meant to be read
* from resources; constructing the structures programmatically is messy.
*/
/*
QuickDraw cursor representation:
Our color cursor is a 2 bit per pixel pixmap.
Each pixel's bits are (source<<1 | mask) from the original X cursor pixel.
The cursor's color table maps the colors like this:
(2-bit value | X result | colortable | Mac result)
00 | transparent | white | transparent (white outside mask)
01 | back color | back color | back color
10 | undefined | black | invert background (just for fun)
11 | fore color | fore color | fore color
*/
static CCrsrHandle
MakeQDCursor(
CursorPtr pCursor )
{
CCrsrHandle result;
CCrsrPtr curs;
int i, w, h;
unsigned short rowMask;
PixMap *pix;
ColorTable *ctab;
unsigned short *image;
result = (CCrsrHandle) NewHandleClear(sizeof(CCrsr));
if (!result) return NULL;
HLock((Handle)result);
curs = *result;
// Initialize CCrsr
curs->crsrType = 0x8001; // 0x8000 = b&w, 0x8001 = color
curs->crsrMap = (PixMapHandle) NewHandleClear(sizeof(PixMap));
if (!curs->crsrMap) goto pixAllocFailed;
HLock((Handle)curs->crsrMap);
pix = *curs->crsrMap;
curs->crsrData = NULL; // raw cursor image data (set below)
curs->crsrXData = NULL; // QD's processed data
curs->crsrXValid = 0; // zero means QD must re-process cursor data
curs->crsrXHandle = NULL; // reserved
memset(curs->crsr1Data, 0, CURSORWIDTH*CURSORHEIGHT/8); // b&w data
memset(curs->crsrMask, 0, CURSORWIDTH*CURSORHEIGHT/8); // b&w & color mask
curs->crsrHotSpot.h = min(CURSORWIDTH, pCursor->bits->xhot); // hot spot
curs->crsrHotSpot.v = min(CURSORHEIGHT, pCursor->bits->yhot); // hot spot
curs->crsrXTable = 0; // reserved
curs->crsrID = GetCTSeed(); // unique ID from Color Manager
// Set the b&w data and mask
w = min(pCursor->bits->width, CURSORWIDTH);
h = min(pCursor->bits->height, CURSORHEIGHT);
rowMask = ~((1 << (CURSORWIDTH - w)) - 1);
for (i = 0; i < h; i++) {
curs->crsr1Data[i] = rowMask &
((pCursor->bits->source[i*4]<<8) | pCursor->bits->source[i*4+1]);
curs->crsrMask[i] = rowMask &
((pCursor->bits->mask[i*4]<<8) | pCursor->bits->mask[i*4+1]);
}
// Set the color data and mask
// crsrMap: defines bit depth and size and colortable only
pix->rowBytes = (CURSORWIDTH * 2 / 8) | 0x8000; // last bit on means PixMap
SetRect(&pix->bounds, 0, 0, CURSORWIDTH, CURSORHEIGHT); // see TN 1020
pix->pixelSize = 2;
pix->cmpCount = 1;
pix->cmpSize = 2;
// pix->pmTable set below
// crsrData is the pixel data. crsrMap's baseAddr is not used.
curs->crsrData = NewHandleClear(CURSORWIDTH*CURSORHEIGHT * 2 / 8);
if (!curs->crsrData) goto imageAllocFailed;
HLock((Handle)curs->crsrData);
image = (unsigned short *) *curs->crsrData;
// Pixel data is just 1-bit data and mask interleaved (see above)
for (i = 0; i < h; i++) {
unsigned char s, m;
s = pCursor->bits->source[i*4] & (rowMask >> 8);
m = pCursor->bits->mask[i*4] & (rowMask >> 8);
image[2*i] = interleave(s, m);
s = pCursor->bits->source[i*4+1] & (rowMask & 0x00ff);
m = pCursor->bits->mask[i*4+1] & (rowMask & 0x00ff);
image[2*i+1] = interleave(s, m);
}
// Build the color table (entries described above)
// NewPixMap allocates a color table handle.
pix->pmTable = (CTabHandle) NewHandleClear(sizeof(ColorTable) + 3
* sizeof(ColorSpec));
if (!pix->pmTable) goto ctabAllocFailed;
HLock((Handle)pix->pmTable);
ctab = *pix->pmTable;
ctab->ctSeed = GetCTSeed();
ctab->ctFlags = 0;
ctab->ctSize = 3; // color count - 1
CTAB_ENTER(ctab, 0, 0xffff, 0xffff, 0xffff);
CTAB_ENTER(ctab, 1, pCursor->backRed, pCursor->backGreen,
pCursor->backBlue);
CTAB_ENTER(ctab, 2, 0x0000, 0x0000, 0x0000);
CTAB_ENTER(ctab, 3, pCursor->foreRed, pCursor->foreGreen,
pCursor->foreBlue);
HUnlock((Handle)pix->pmTable); // ctab
HUnlock((Handle)curs->crsrData); // image data
HUnlock((Handle)curs->crsrMap); // pix
HUnlock((Handle)result); // cursor
return result;
// "What we have here is a failure to allocate"
ctabAllocFailed:
HUnlock((Handle)curs->crsrData);
DisposeHandle((Handle)curs->crsrData);
imageAllocFailed:
HUnlock((Handle)curs->crsrMap);
DisposeHandle((Handle)curs->crsrMap);
pixAllocFailed:
HUnlock((Handle)result);
DisposeHandle((Handle)result);
return NULL;
}
/*
* FreeQDCursor
* Destroy a QuickDraw color cursor created with MakeQDCursor().
* The cursor must not currently be on screen.
*/
static void FreeQDCursor(CCrsrHandle cursHandle)
{
CCrsrPtr curs;
PixMap *pix;
HLock((Handle)cursHandle);
curs = *cursHandle;
HLock((Handle)curs->crsrMap);
pix = *curs->crsrMap;
DisposeHandle((Handle)pix->pmTable);
HUnlock((Handle)curs->crsrMap);
DisposeHandle((Handle)curs->crsrMap);
DisposeHandle((Handle)curs->crsrData);
HUnlock((Handle)cursHandle);
DisposeHandle((Handle)cursHandle);
}
/*
===========================================================================
Pointer sprite functions
===========================================================================
*/
/*
* QuartzRealizeCursor
* Convert the X cursor representation to QuickDraw format if possible.
*/
Bool
QuartzRealizeCursor(
ScreenPtr pScreen,
CursorPtr pCursor )
{
CCrsrHandle qdCursor;
QuartzCursorScreenPtr ScreenPriv = CURSOR_PRIV(pScreen);
if(!pCursor || !pCursor->bits)
return FALSE;
// if the cursor is too big we use a software cursor
if ((pCursor->bits->height > CURSORHEIGHT) ||
(pCursor->bits->width > CURSORWIDTH) || !ScreenPriv->useQDCursor)
{
if (quartzRootless) {
// rootless can't use a software cursor
return TRUE;
} else {
return (*ScreenPriv->spriteFuncs->RealizeCursor)
(pScreen, pCursor);
}
}
// make new cursor image
qdCursor = MakeQDCursor(pCursor);
if (!qdCursor) return FALSE;
// save the result
dixSetPrivate(&pCursor->devPrivates, pScreen, qdCursor);
return TRUE;
}
/*
* QuartzUnrealizeCursor
* Free the storage space associated with a realized cursor.
*/
Bool
QuartzUnrealizeCursor(
ScreenPtr pScreen,
CursorPtr pCursor )
{
QuartzCursorScreenPtr ScreenPriv = CURSOR_PRIV(pScreen);
if ((pCursor->bits->height > CURSORHEIGHT) ||
(pCursor->bits->width > CURSORWIDTH) || !ScreenPriv->useQDCursor)
{
if (quartzRootless) {
return TRUE;
} else {
return (*ScreenPriv->spriteFuncs->UnrealizeCursor)
(pScreen, pCursor);
}
} else {
CCrsrHandle oldCursor = dixLookupPrivate(&pCursor->devPrivates,
pScreen);
if (currentCursor != oldCursor) {
// This should only fail when quitting, in which case we just leak.
FreeQDCursor(oldCursor);
}
dixSetPrivate(&pCursor->devPrivates, pScreen, NULL);
return TRUE;
}
}
/*
* QuartzSetCursor
* Set the cursor sprite and position.
* Use QuickDraw cursor if possible.
*/
static void
QuartzSetCursor(
ScreenPtr pScreen,
CursorPtr pCursor,
int x,
int y)
{
QuartzCursorScreenPtr ScreenPriv = CURSOR_PRIV(pScreen);
quartzLatentCursor = pCursor;
// Don't touch Mac OS cursor if X is hidden!
if (!quartzServerVisible)
return;
if (!pCursor) {
// Remove the cursor completely.
HIDE_QD_CURSOR(pScreen, ScreenPriv->qdCursorVisible);
if (! ScreenPriv->qdCursorMode)
(*ScreenPriv->spriteFuncs->SetCursor)(pScreen, 0, x, y);
}
else if ((pCursor->bits->height <= CURSORHEIGHT) &&
(pCursor->bits->width <= CURSORWIDTH) && ScreenPriv->useQDCursor)
{
// Cursor is small enough to use QuickDraw directly.
if (! ScreenPriv->qdCursorMode) // remove the X cursor
(*ScreenPriv->spriteFuncs->SetCursor)(pScreen, 0, x, y);
ScreenPriv->qdCursorMode = TRUE;
CHANGE_QD_CURSOR(dixLookupPrivate(&pCursor->devPrivates, pScreen));
SHOW_QD_CURSOR(pScreen, ScreenPriv->qdCursorVisible);
}
else if (quartzRootless) {
// Rootless can't use a software cursor, so we just use Mac OS arrow.
CHANGE_QD_CURSOR(NULL);
SHOW_QD_CURSOR(pScreen, ScreenPriv->qdCursorVisible);
}
else {
// Cursor is too big for QuickDraw. Use X software cursor.
HIDE_QD_CURSOR(pScreen, ScreenPriv->qdCursorVisible);
ScreenPriv->qdCursorMode = FALSE;
(*ScreenPriv->spriteFuncs->SetCursor)(pScreen, pCursor, x, y);
}
}
/*
* QuartzReallySetCursor
* Set the QuickDraw cursor. Called from the main thread since changing the
* cursor with QuickDraw is not thread safe on dual processor machines.
*/
void
QuartzReallySetCursor()
{
pthread_mutex_lock(&cursorMutex);
if (currentCursor) {
SetCCursor(currentCursor);
} else {
SetCursor(&gQDArrow);
}
pthread_cond_signal(&cursorCondition);
pthread_mutex_unlock(&cursorMutex);
}
/*
* QuartzMoveCursor
* Move the cursor. This is a noop for QuickDraw.
*/
static void
QuartzMoveCursor(
ScreenPtr pScreen,
int x,
int y)
{
QuartzCursorScreenPtr ScreenPriv = CURSOR_PRIV(pScreen);
// only the X cursor needs to be explicitly moved
if (!ScreenPriv->qdCursorMode)
(*ScreenPriv->spriteFuncs->MoveCursor)(pScreen, x, y);
}
static miPointerSpriteFuncRec quartzSpriteFuncsRec = {
QuartzRealizeCursor,
QuartzUnrealizeCursor,
QuartzSetCursor,
QuartzMoveCursor
};
/*
===========================================================================
Pointer screen functions
===========================================================================
*/
/*
* QuartzCursorOffScreen
*/
static Bool QuartzCursorOffScreen(ScreenPtr *pScreen, int *x, int *y)
{
return FALSE;
}
/*
* QuartzCrossScreen
*/
static void QuartzCrossScreen(ScreenPtr pScreen, Bool entering)
{
return;
}
/*
* QuartzWarpCursor
* Change the cursor position without generating an event or motion history.
* The input coordinates (x,y) are in pScreen-local X11 coordinates.
*
*/
static void
QuartzWarpCursor(
ScreenPtr pScreen,
int x,
int y)
{
static int neverMoved = TRUE;
if (neverMoved) {
// Don't move the cursor the first time. This is the jump-to-center
// initialization, and it's annoying because we may still be in MacOS.
neverMoved = FALSE;
return;
}
if (quartzServerVisible) {
CGDisplayErr cgErr;
CGPoint cgPoint;
// Only need to do this for one display. Any display will do.
CGDirectDisplayID cgID = QUARTZ_PRIV(pScreen)->displayIDs[0];
CGRect cgRect = CGDisplayBounds(cgID);
// Convert (x,y) to CoreGraphics screen-local CG coordinates.
// This is necessary because the X11 screen and CG screen may not
// coincide. (e.g. X11 screen may be moved to dodge the menu bar)
// Make point in X11 global coordinates
cgPoint = CGPointMake(x + dixScreenOrigins[pScreen->myNum].x,
y + dixScreenOrigins[pScreen->myNum].y);
// Shift to CoreGraphics global screen coordinates
cgPoint.x += darwinMainScreenX;
cgPoint.y += darwinMainScreenY;
// Shift to CoreGraphics screen-local coordinates
cgPoint.x -= cgRect.origin.x;
cgPoint.y -= cgRect.origin.y;
cgErr = CGDisplayMoveCursorToPoint(cgID, cgPoint);
if (cgErr != CGDisplayNoErr) {
ErrorF("Could not set cursor position with error code 0x%x.\n",
cgErr);
}
}
miPointerWarpCursor(pScreen, x, y);
miPointerUpdate();
}
static miPointerScreenFuncRec quartzScreenFuncsRec = {
QuartzCursorOffScreen,
QuartzCrossScreen,
QuartzWarpCursor,
DarwinEQPointerPost,
DarwinEQSwitchScreen
};
/*
===========================================================================
Other screen functions
===========================================================================
*/
/*
* QuartzCursorQueryBestSize
* Handle queries for best cursor size
*/
static void
QuartzCursorQueryBestSize(
int class,
unsigned short *width,
unsigned short *height,
ScreenPtr pScreen)
{
QuartzCursorScreenPtr ScreenPriv = CURSOR_PRIV(pScreen);
if (class == CursorShape) {
*width = CURSORWIDTH;
*height = CURSORHEIGHT;
} else {
(*ScreenPriv->QueryBestSize)(class, width, height, pScreen);
}
}
/*
* QuartzInitCursor
* Initialize cursor support
*/
Bool
QuartzInitCursor(
ScreenPtr pScreen )
{
QuartzCursorScreenPtr ScreenPriv;
miPointerScreenPtr PointPriv;
DarwinFramebufferPtr dfb = SCREEN_PRIV(pScreen);
// initialize software cursor handling (always needed as backup)
if (!miDCInitialize(pScreen, &quartzScreenFuncsRec)) {
return FALSE;
}
ScreenPriv = xcalloc( 1, sizeof(QuartzCursorScreenRec) );
if (!ScreenPriv) return FALSE;
CURSOR_PRIV(pScreen) = ScreenPriv;
// override some screen procedures
ScreenPriv->QueryBestSize = pScreen->QueryBestSize;
pScreen->QueryBestSize = QuartzCursorQueryBestSize;
// initialize QuickDraw cursor handling
GetQDGlobalsArrow(&gQDArrow);
PointPriv = (miPointerScreenPtr)
dixLookupPrivate(&pScreen->devPrivates, miPointerScreenKey);
ScreenPriv->spriteFuncs = PointPriv->spriteFuncs;
PointPriv->spriteFuncs = &quartzSpriteFuncsRec;
if (!quartzRootless)
ScreenPriv->useQDCursor = QuartzFSUseQDCursor(dfb->colorBitsPerPixel);
else
ScreenPriv->useQDCursor = TRUE;
ScreenPriv->qdCursorMode = TRUE;
ScreenPriv->qdCursorVisible = TRUE;
// initialize cursor mutex lock
pthread_mutex_init(&cursorMutex, NULL);
// initialize condition for waiting
pthread_cond_init(&cursorCondition, NULL);
return TRUE;
}
// X server is hiding. Restore the Aqua cursor.
void QuartzSuspendXCursor(
ScreenPtr pScreen )
{
QuartzCursorScreenPtr ScreenPriv = CURSOR_PRIV(pScreen);
CHANGE_QD_CURSOR(NULL);
SHOW_QD_CURSOR(pScreen, ScreenPriv->qdCursorVisible);
}
// X server is showing. Restore the X cursor.
void QuartzResumeXCursor(
ScreenPtr pScreen,
int x,
int y )
{
QuartzSetCursor(pScreen, quartzLatentCursor, x, y);
}

View File

@@ -1,353 +0,0 @@
/**************************************************************
*
* Startup code for the Quartz Darwin X Server
*
**************************************************************/
/*
* Copyright (c) 2001-2004 Torrey T. Lyons. All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
* holders shall not be used in advertising or otherwise to promote the sale,
* use or other dealings in this Software without prior written authorization.
*/
#include <fcntl.h>
#include <unistd.h>
#include <CoreFoundation/CoreFoundation.h>
#include "quartzCommon.h"
#include "darwin.h"
#include "quartz.h"
#include "opaque.h"
#include "micmap.h"
#include <assert.h>
char **envpGlobal; // argcGlobal and argvGlobal
// are from dix/globals.c
#ifdef INXQUARTZ
void X11ControllerMain(int argc, char *argv[], void (*server_thread) (void *), void *server_arg);
# ifdef GLXEXT
void GlxExtensionInit(void);
void GlxWrapInitVisuals(miInitVisualsProcPtr *);
# endif
static void server_thread (void *arg) {
extern int main (int argc, char **argv, char **envp);
exit (main (argcGlobal, argvGlobal, envpGlobal));
}
#else
int NSApplicationMain(int argc, char *argv[]);
typedef Bool (*QuartzModeBundleInitPtr)(void);
# ifdef GLXEXT
// GLX bundle function pointers
typedef void (*GlxExtensionInitPtr)(void);
static GlxExtensionInitPtr GlxExtensionInit = NULL;
typedef void (*GlxWrapInitVisualsPtr)(miInitVisualsProcPtr *);
static GlxWrapInitVisualsPtr GlxWrapInitVisuals = NULL;
void * __DarwinglXMesaProvider = NULL;
typedef void (*GlxPushProviderPtr)(void *);
GlxPushProviderPtr GlxPushProvider = NULL;
# endif
#endif
/*
* DarwinHandleGUI
* This function is called first from main(). The first time
* it is called we start the Mac OS X front end. The front end
* will call main() again from another thread to run the X
* server. On the second call this function loads the user
* preferences set by the Mac OS X front end.
*/
void DarwinHandleGUI(
int argc,
char *argv[],
char *envp[] )
{
static Bool been_here = FALSE;
int main_exit, i;
int fd[2];
if (been_here) {
#ifdef INXDARWINAPP
QuartzReadPreferences();
#endif
return;
}
been_here = TRUE;
// Make a pipe to pass events
assert( pipe(fd) == 0 );
darwinEventReadFD = fd[0];
darwinEventWriteFD = fd[1];
fcntl(darwinEventReadFD, F_SETFL, O_NONBLOCK);
// Store command line arguments to pass back to main()
argcGlobal = argc;
argvGlobal = argv;
envpGlobal = envp;
quartzStartClients = 1;
for (i = 1; i < argc; i++) {
// Display version info without starting Mac OS X UI if requested
if (!strcmp( argv[i], "-showconfig" ) || !strcmp( argv[i], "-version" )) {
DarwinPrintBanner();
exit(0);
}
// Determine if we need to start X clients
// and what display mode to use
if (!strcmp(argv[i], "-nostartx")) {
quartzStartClients = 0;
} else if (!strcmp( argv[i], "-fullscreen")) {
quartzRootless = 0;
} else if (!strcmp( argv[i], "-rootless")) {
quartzRootless = 1;
}
}
#ifdef INXQUARTZ
/* Initially I ran the X server on the main thread, and received
events on the second thread. But now we may be using Carbon,
that needs to run on the main thread. (Otherwise, when it's
prebound, it will initialize itself on the wrong thread)
grr.. but doing that means that if the X thread gets scheduled
before the main thread when we're _not_ prebound, things fail,
so initialize by hand. */
extern void _InitHLTB(void);
_InitHLTB();
X11ControllerMain(argc, argv, server_thread, NULL);
#else
main_exit = NSApplicationMain(argc, argv);
#endif
exit(main_exit);
}
#ifndef INXQUARTZ
/*
* QuartzLoadDisplayBundle
* Try to load the appropriate bundle containing the back end display code.
*/
Bool QuartzLoadDisplayBundle(
const char *dpyBundleName)
{
CFBundleRef mainBundle;
CFStringRef bundleName;
CFURLRef bundleURL;
CFBundleRef dpyBundle;
QuartzModeBundleInitPtr bundleInit;
// Get the main bundle for the application
mainBundle = CFBundleGetMainBundle();
// Make CFString from bundle name
bundleName = CFStringCreateWithCStringNoCopy(kCFAllocatorDefault,
dpyBundleName,
kCFStringEncodingASCII,
kCFAllocatorNull);
// Look for the appropriate bundle in the main bundle
bundleURL = CFBundleCopyResourceURL(mainBundle, bundleName,
NULL, NULL);
if (!bundleURL) {
ErrorF("Could not find display mode bundle %s.\n", dpyBundleName);
return FALSE;
}
// Make a bundle instance using the URLRef
dpyBundle = CFBundleCreate(kCFAllocatorDefault, bundleURL);
if (!CFBundleLoadExecutable(dpyBundle)) {
ErrorF("Could not load display mode bundle %s.\n", dpyBundleName);
return FALSE;
}
// Lookup the bundle initialization function
bundleInit = (void *)
CFBundleGetFunctionPointerForName(dpyBundle,
CFSTR("QuartzModeBundleInit"));
if (!bundleInit) {
ErrorF("Could not initialize display mode bundle %s.\n",
dpyBundleName);
return FALSE;
}
if (!bundleInit())
return FALSE;
// Release the CF objects
CFRelease(bundleName);
CFRelease(bundleURL);
return TRUE;
}
#ifdef GLXEXT
/*
* LoadGlxBundle
* The Quartz mode X server needs to dynamically load the appropriate
* bundle before initializing GLX.
*/
static void LoadGlxBundle(void)
{
CFBundleRef mainBundle;
CFStringRef bundleName;
CFURLRef bundleURL;
CFBundleRef glxBundle;
// Get the main bundle for the application
mainBundle = CFBundleGetMainBundle();
// Choose the bundle to load
ErrorF("Loading GLX bundle ");
if (/*quartzUseAGL*/0) {
bundleName = CFStringCreateWithCStringNoCopy(kCFAllocatorDefault,
quartzOpenGLBundle,
kCFStringEncodingASCII,
kCFAllocatorNull);
ErrorF("%s (using Apple's OpenGL)\n", quartzOpenGLBundle);
} else {
bundleName = CFSTR("glxMesa.bundle");
CFRetain(bundleName); // so we can release later
ErrorF("glxMesa.bundle (using Mesa)\n");
}
// Look for the appropriate GLX bundle in the main bundle by name
bundleURL = CFBundleCopyResourceURL(mainBundle, bundleName,
NULL, NULL);
if (!bundleURL) {
FatalError("Could not find GLX bundle.");
}
// Make a bundle instance using the URLRef
glxBundle = CFBundleCreate(kCFAllocatorDefault, bundleURL);
if (!CFBundleLoadExecutable(glxBundle)) {
FatalError("Could not load GLX bundle.");
}
// Find the GLX init functions
__DarwinglXMesaProvider = (void *) CFBundleGetDataPointerForName(
glxBundle, CFSTR("__glXMesaProvider"));
GlxPushProvider = (void *) CFBundleGetFunctionPointerForName(
glxBundle, CFSTR("GlxPushProvider"));
GlxExtensionInit = (void *) CFBundleGetFunctionPointerForName(
glxBundle, CFSTR("GlxExtensionInit"));
GlxWrapInitVisuals = (void *) CFBundleGetFunctionPointerForName(
glxBundle, CFSTR("GlxWrapInitVisuals"));
if (!GlxExtensionInit || !GlxWrapInitVisuals) {
FatalError("Could not initialize GLX bundle.");
}
// Release the CF objects
CFRelease(bundleName);
CFRelease(bundleURL);
}
# endif
#else
Bool QuartzLoadDisplayBundle(const char *dpyBundleName)
{
return TRUE;
}
#endif
#ifdef GLXEXT
void DarwinGlxPushProvider(void *impl)
{
#ifndef INXQUARTZ
if (!GlxExtensionInit)
LoadGlxBundle();
#endif
GlxPushProvider(impl);
}
/*
* DarwinGlxExtensionInit
* Initialize the GLX extension.
*/
void DarwinGlxExtensionInit(void)
{
#ifndef INXQUARTZ
if (!GlxExtensionInit)
LoadGlxBundle();
#endif
GlxExtensionInit();
}
/*
* DarwinGlxWrapInitVisuals
*/
void DarwinGlxWrapInitVisuals(
miInitVisualsProcPtr *procPtr)
{
#ifndef INXQUARTZ
if (!GlxWrapInitVisuals)
LoadGlxBundle();
#endif
GlxWrapInitVisuals(procPtr);
}
#endif
int DarwinModeProcessArgument( int argc, char *argv[], int i )
{
// fullscreen: CoreGraphics full-screen mode
// rootless: Cocoa rootless mode
// quartz: Default, either fullscreen or rootless
if ( !strcmp( argv[i], "-fullscreen" ) ) {
ErrorF( "Running full screen in parallel with Mac OS X Quartz window server.\n" );
return 1;
}
if ( !strcmp( argv[i], "-rootless" ) ) {
ErrorF( "Running rootless inside Mac OS X window server.\n" );
return 1;
}
if ( !strcmp( argv[i], "-quartz" ) ) {
ErrorF( "Running in parallel with Mac OS X Quartz window server.\n" );
return 1;
}
// The Mac OS X front end uses this argument, which we just ignore here.
if ( !strcmp( argv[i], "-nostartx" ) ) {
return 1;
}
// This command line arg is passed when launched from the Aqua GUI.
if ( !strncmp( argv[i], "-psn_", 5 ) ) {
return 1;
}
return 0;
}

View File

@@ -1,589 +0,0 @@
/* Xplugin.h -- windowing API for rootless X11 server
Copyright (c) 2002 Apple Computer, Inc. All rights reserved.
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation files
(the "Software"), to deal in the Software without restriction,
including without limitation the rights to use, copy, modify, merge,
publish, distribute, sublicense, and/or sell copies of the Software,
and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
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 ABOVE LISTED COPYRIGHT
HOLDER(S) 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(s) of the above
copyright holders shall not be used in advertising or otherwise to
promote the sale, use or other dealings in this Software without
prior written authorization.
Note that these interfaces are provided solely for the use of the
X11 server. Any other uses are unsupported and strongly discouraged. */
#ifndef XPLUGIN_H
#define XPLUGIN_H 1
#include <stdint.h>
/* By default we use the X server definition of BoxRec to define xp_box,
so that the compiler can silently convert between the two. But if
XP_NO_X_HEADERS is defined, we'll define it ourselves. */
#ifndef XP_NO_X_HEADERS
# include "miscstruct.h"
typedef BoxRec xp_box;
#else
struct xp_box_struct {
short x1, y1, x2, y2;
};
typedef struct xp_box_struct xp_box;
#endif
typedef unsigned int xp_resource_id;
typedef xp_resource_id xp_window_id;
typedef xp_resource_id xp_surface_id;
typedef unsigned int xp_client_id;
typedef unsigned int xp_request_type;
typedef int xp_error;
typedef int xp_bool;
/* Error codes that the functions declared here may return. They all
numerically match their X equivalents, i.e. the XP_ can be dropped
if <X11/X.h> has been included. */
enum xp_error_enum {
XP_Success = 0,
XP_BadRequest = 1,
XP_BadValue = 2,
XP_BadWindow = 3,
XP_BadMatch = 8,
XP_BadAccess = 10,
XP_BadImplementation = 17,
};
/* Event types generated by the plugin. */
enum xp_event_type_enum {
/* The global display configuration changed somehow. */
XP_EVENT_DISPLAY_CHANGED = 1 << 0,
/* A window changed state. Argument is xp_window_state_event */
XP_EVENT_WINDOW_STATE_CHANGED = 1 << 1,
/* An async request encountered an error. Argument is of type
xp_async_error_event */
XP_EVENT_ASYNC_ERROR = 1 << 2,
/* Sent when a surface is destroyed as a side effect of destroying
a window. Arg is of type xp_surface_id. */
XP_EVENT_SURFACE_DESTROYED = 1 << 3,
/* Sent when any GL contexts pointing at the given surface need to
call xp_update_gl_context () to refresh their state (because the
window moved or was resized. Arg is of type xp_surface_id. */
XP_EVENT_SURFACE_CHANGED = 1 << 4,
/* Sent when a window has been moved. Arg is of type xp_window_id. */
XP_EVENT_WINDOW_MOVED = 1 << 5,
};
/* Function type used to receive events. */
typedef void (xp_event_fun) (unsigned int type, const void *arg,
unsigned int arg_size, void *user_data);
/* Operation types. Used when reporting errors asynchronously. */
enum xp_request_type_enum {
XP_REQUEST_NIL = 0,
XP_REQUEST_DESTROY_WINDOW = 1,
XP_REQUEST_CONFIGURE_WINDOW = 2,
XP_REQUEST_FLUSH_WINDOW = 3,
XP_REQUEST_COPY_WINDOW = 4,
XP_REQUEST_UNLOCK_WINDOW = 5,
XP_REQUEST_DISABLE_UPDATE = 6,
XP_REQUEST_REENABLE_UPDATE = 7,
XP_REQUEST_HIDE_CURSOR = 8,
XP_REQUEST_SHOW_CURSOR = 9,
XP_REQUEST_FRAME_DRAW = 10,
};
/* Structure used to report an error asynchronously. Passed as the "arg"
of an XP_EVENT_ASYNC_ERROR event. */
struct xp_async_error_event_struct {
xp_request_type request_type;
xp_resource_id id;
xp_error error;
};
typedef struct xp_async_error_event_struct xp_async_error_event;
/* Possible window states. */
enum xp_window_state_enum {
/* The window is not in the global list of possibly-visible windows. */
XP_WINDOW_STATE_OFFSCREEN = 1 << 0,
/* Parts of the window may be obscured by other windows. */
XP_WINDOW_STATE_OBSCURED = 1 << 1,
};
/* Structure passed as argument of an XP_EVENT_WINDOW_STATE_CHANGED event. */
struct xp_window_state_event_struct {
xp_window_id id;
unsigned int state;
};
typedef struct xp_window_state_event_struct xp_window_state_event;
/* Function type used to supply a colormap for indexed drawables. */
typedef xp_error (xp_colormap_fun) (void *data, int first_color,
int n_colors, uint32_t *colors);
/* Window attributes structure. Used when creating and configuring windows.
Also used when configuring surfaces attached to windows. Functions that
take one of these structures also take a bit mask defining which
fields are set to meaningful values. */
enum xp_window_changes_enum {
XP_ORIGIN = 1 << 0,
XP_SIZE = 1 << 1,
XP_BOUNDS = XP_ORIGIN | XP_SIZE,
XP_SHAPE = 1 << 2,
XP_STACKING = 1 << 3,
XP_DEPTH = 1 << 4,
XP_COLORMAP = 1 << 5,
XP_WINDOW_LEVEL = 1 << 6,
};
struct xp_window_changes_struct {
/* XP_ORIGIN */
int x, y;
/* XP_SIZE */
unsigned int width, height;
int bit_gravity; /* how to resize the backing store */
/* XP_SHAPE */
int shape_nrects; /* -1 = remove shape */
xp_box *shape_rects;
int shape_tx, shape_ty; /* translation for shape */
/* XP_STACKING */
int stack_mode;
xp_window_id sibling; /* may be zero; in ABOVE/BELOW modes
it may specify a relative window */
/* XP_DEPTH, window-only */
unsigned int depth;
/* XP_COLORMAP, window-only */
xp_colormap_fun *colormap;
void *colormap_data;
/* XP_WINDOW_LEVEL, window-only */
int window_level;
};
typedef struct xp_window_changes_struct xp_window_changes;
/* Values for bit_gravity field */
enum xp_bit_gravity_enum {
XP_GRAVITY_NONE = 0, /* no gravity, fill everything */
XP_GRAVITY_NORTH_WEST = 1, /* anchor to top-left corner */
XP_GRAVITY_NORTH_EAST = 2, /* anchor to top-right corner */
XP_GRAVITY_SOUTH_EAST = 3, /* anchor to bottom-right corner */
XP_GRAVITY_SOUTH_WEST = 4, /* anchor to bottom-left corner */
};
/* Values for stack_mode field */
enum xp_window_stack_mode_enum {
XP_UNMAPPED = 0, /* remove the window */
XP_MAPPED_ABOVE = 1, /* display the window on top */
XP_MAPPED_BELOW = 2, /* display the window at bottom */
};
/* Data formats for depth field and composite functions */
enum xp_depth_enum {
XP_DEPTH_NIL = 0, /* null source when compositing */
XP_DEPTH_ARGB8888,
XP_DEPTH_RGB555,
XP_DEPTH_A8, /* for masks when compositing */
XP_DEPTH_INDEX8,
};
/* Options that may be passed to the xp_init () function. */
enum xp_init_options_enum {
/* Don't mark that this process can be in the foreground. */
XP_IN_BACKGROUND = 1 << 0,
/* Deliver background pointer events to this process. */
XP_BACKGROUND_EVENTS = 1 << 1,
};
/* Miscellaneous functions */
/* Initialize the plugin library. Only the copy/fill/composite functions
may be called without having previously called xp_init () */
extern xp_error xp_init (unsigned int options);
/* Sets the current set of requested notifications to MASK. When any of
these arrive, CALLBACK will be invoked with CALLBACK-DATA. Note that
calling this function cancels any previously requested notifications
that aren't set in MASK. */
extern xp_error xp_select_events (unsigned int mask,
xp_event_fun *callback,
void *callback_data);
/* Waits for all initiated operations to complete. */
extern xp_error xp_synchronize (void);
/* Causes any display update initiated through the plugin libary to be
queued until update is reenabled. Note that calls to these functions
nest. */
extern xp_error xp_disable_update (void);
extern xp_error xp_reenable_update (void);
/* Cursor functions. */
/* Installs the specified cursor. ARGB-DATA should point to 32-bit
premultiplied big-endian ARGB data. The HOT-X,HOT-Y parameters
specify the offset to the cursor's hot spot from its top-left
corner. */
extern xp_error xp_set_cursor (unsigned int width, unsigned int height,
unsigned int hot_x, unsigned int hot_y,
const uint32_t *argb_data,
unsigned int rowbytes);
/* Hide and show the cursor if it's owned by the current process. Calls
to these functions nest. */
extern xp_error xp_hide_cursor (void);
extern xp_error xp_show_cursor (void);
/* Window functions. */
/* Create a new window as defined by MASK and VALUES. MASK must contain
XP_BOUNDS or an error is raised. The id of the newly created window
is stored in *RET-ID if this function returns XP_Success. */
extern xp_error xp_create_window (unsigned int mask,
const xp_window_changes *values,
xp_window_id *ret_id);
/* Destroys the window identified by ID. */
extern xp_error xp_destroy_window (xp_window_id id);
/* Reconfigures the given window according to MASK and VALUES. */
extern xp_error xp_configure_window (xp_window_id id, unsigned int mask,
const xp_window_changes *values);
/* Returns true if NATIVE-ID is a window created by the plugin library.
If so and RET-ID is non-null, stores the id of the window in *RET-ID. */
extern xp_bool xp_lookup_native_window (unsigned int native_id,
xp_window_id *ret_id);
/* If ID names a window created by the plugin library, stores it's native
window id in *RET-NATIVE-ID. */
extern xp_error xp_get_native_window (xp_window_id id,
unsigned int *ret_native_id);
/* Locks the rectangle IN-RECT (or, if null, the entire window) of the
given window's backing store. Any other non-null parameters are filled
in as follows:
DEPTH = format of returned data. Currently either XP_DEPTH_ARGB8888
or XP_DEPTH_RGB565 (possibly with 8 bit planar alpha). Data is
always stored in native byte order.
BITS[0] = pointer to top-left pixel of locked color data
BITS[1] = pointer to top-left of locked alpha data, or null if window
has no alpha. If the alpha data is meshed, then BITS[1] = BITS[0].
ROWBYTES[0,1] = size in bytes of each row of color,alpha data
OUT-RECT = rectangle specifying the current position and size of the
locked region relative to the window origin.
Note that an error is raised when trying to lock an already locked
window. While the window is locked, the only operations that may
be performed on it are to modify, access or flush its marked region. */
extern xp_error xp_lock_window (xp_window_id id,
const xp_box *in_rect,
unsigned int *depth,
void *bits[2],
unsigned int rowbytes[2],
xp_box *out_rect);
/* Mark that the region specified by SHAPE-NRECTS, SHAPE-RECTS,
SHAPE-TX, and SHAPE-TY in the specified window has been updated, and
will need to subsequently be redisplayed. */
extern xp_error xp_mark_window (xp_window_id id, int shape_nrects,
const xp_box *shape_rects,
int shape_tx, int shape_ty);
/* Unlocks the specified window. If FLUSH is true, then any marked
regions are immediately redisplayed. Note that it's an error to
unlock an already unlocked window. */
extern xp_error xp_unlock_window (xp_window_id id, xp_bool flush);
/* If anything is marked in the given window for redisplay, do it now. */
extern xp_error xp_flush_window (xp_window_id id);
/* Moves the contents of the region DX,DY pixels away from that specified
by DST_RECTS and DST_NRECTS in the window with SRC-ID to the
destination region in the window DST-ID. Note that currently source
and destination windows must be the same. */
extern xp_error xp_copy_window (xp_window_id src_id, xp_window_id dst_id,
int dst_nrects, const xp_box *dst_rects,
int dx, int dy);
/* Returns true if the given window has any regions marked for
redisplay. */
extern xp_bool xp_is_window_marked (xp_window_id id);
/* If successful returns a superset of the region marked for update in
the given window. Use xp_free_region () to release the returned data. */
extern xp_error xp_get_marked_shape (xp_window_id id,
int *ret_nrects, xp_box **ret_rects);
extern void xp_free_shape (int nrects, xp_box *rects);
/* Searches for the first window below ABOVE-ID containing the point X,Y,
and returns it's window id in *RET-ID. If no window is found, *RET-ID
is set to zero. If ABOVE-ID is zero, finds the topmost window
containing the given point. */
extern xp_error xp_find_window (int x, int y, xp_window_id above_id,
xp_window_id *ret_id);
/* Returns the current origin and size of the window ID in *BOUNDS-RET if
successful. */
extern xp_error xp_get_window_bounds (xp_window_id id, xp_box *bounds_ret);
/* Window surface functions. */
/* Create a new VRAM surface on the specified window. If successful,
returns the identifier of the new surface in *RET-SID. */
extern xp_error xp_create_surface (xp_window_id id, xp_surface_id *ret_sid);
/* Destroys the specified surface. */
extern xp_error xp_destroy_surface (xp_surface_id sid);
/* Reconfigures the specified surface as defined by MASK and VALUES.
Note that specifying XP_DEPTH is an error. */
extern xp_error xp_configure_surface (xp_surface_id sid, unsigned int mask,
const xp_window_changes *values);
/* If successful, places the client identifier of the current process
in *RET-CLIENT. */
extern xp_error xp_get_client_id (xp_client_id *ret_client);
/* Given a valid window,surface combination created by the current
process, attempts to allow the specified external client access
to that surface. If successful, returns two integers in RET-KEY
which the client can use to import the surface into their process. */
extern xp_error xp_export_surface (xp_window_id wid, xp_surface_id sid,
xp_client_id client,
unsigned int ret_key[2]);
/* Given a two integer key returned from xp_export_surface (), tries
to import the surface into the current process. If successful the
local surface identifier is stored in *SID-RET. */
extern xp_error xp_import_surface (const unsigned int key[2],
xp_surface_id *sid_ret);
/* If successful, stores the number of surfaces attached to the
specified window in *RET. */
extern xp_error xp_get_window_surface_count (xp_window_id id,
unsigned int *ret);
/* Attaches the CGLContextObj CGL-CTX to the specified surface. */
extern xp_error xp_attach_gl_context (void *cgl_ctx, xp_surface_id sid);
/* Updates the CGLContextObj CGL-CTX to reflect any recent changes to
the surface it's attached to. */
extern xp_error xp_update_gl_context (void *cgl_ctx);
/* Window frame functions. */
/* Possible arguments to xp_frame_get_rect (). */
enum xp_frame_rect_enum {
XP_FRAME_RECT_TITLEBAR = 1,
XP_FRAME_RECT_TRACKING = 2,
XP_FRAME_RECT_GROWBOX = 3,
};
/* Classes of window frame. */
enum xp_frame_class_enum {
XP_FRAME_CLASS_DOCUMENT = 1 << 0,
XP_FRAME_CLASS_DIALOG = 1 << 1,
XP_FRAME_CLASS_MODAL_DIALOG = 1 << 2,
XP_FRAME_CLASS_SYSTEM_MODAL_DIALOG = 1 << 3,
XP_FRAME_CLASS_UTILITY = 1 << 4,
XP_FRAME_CLASS_TOOLBAR = 1 << 5,
XP_FRAME_CLASS_MENU = 1 << 6,
XP_FRAME_CLASS_SPLASH = 1 << 7,
XP_FRAME_CLASS_BORDERLESS = 1 << 8,
};
/* Attributes of window frames. */
enum xp_frame_attr_enum {
XP_FRAME_ACTIVE = 0x0001,
XP_FRAME_URGENT = 0x0002,
XP_FRAME_TITLE = 0x0004,
XP_FRAME_PRELIGHT = 0x0008,
XP_FRAME_SHADED = 0x0010,
XP_FRAME_CLOSE_BOX = 0x0100,
XP_FRAME_COLLAPSE = 0x0200,
XP_FRAME_ZOOM = 0x0400,
XP_FRAME_ANY_BUTTON = 0x0700,
XP_FRAME_CLOSE_BOX_CLICKED = 0x0800,
XP_FRAME_COLLAPSE_BOX_CLICKED = 0x1000,
XP_FRAME_ZOOM_BOX_CLICKED = 0x2000,
XP_FRAME_ANY_CLICKED = 0x3800,
XP_FRAME_GROW_BOX = 0x4000,
};
#define XP_FRAME_ATTR_IS_SET(a,b) (((a) & (b)) == (b))
#define XP_FRAME_ATTR_IS_CLICKED(a,m) ((a) & ((m) << 3))
#define XP_FRAME_ATTR_SET_CLICKED(a,m) ((a) |= ((m) << 3))
#define XP_FRAME_ATTR_UNSET_CLICKED(a,m) ((a) &= ~((m) << 3))
#define XP_FRAME_POINTER_ATTRS (XP_FRAME_PRELIGHT \
| XP_FRAME_ANY_BUTTON \
| XP_FRAME_ANY_CLICKED)
extern xp_error xp_frame_get_rect (int type, int class, const xp_box *outer,
const xp_box *inner, xp_box *ret);
extern xp_error xp_frame_hit_test (int class, int x, int y,
const xp_box *outer,
const xp_box *inner, int *ret);
extern xp_error xp_frame_draw (xp_window_id wid, int class, unsigned int attr,
const xp_box *outer, const xp_box *inner,
unsigned int title_len,
const unsigned char *title_bytes);
/* Memory manipulation functions. */
enum xp_composite_op_enum {
XP_COMPOSITE_SRC = 0,
XP_COMPOSITE_OVER,
};
#define XP_COMPOSITE_FUNCTION(op, src_depth, mask_depth, dest_depth) \
(((op) << 24) | ((src_depth) << 16) \
| ((mask_depth) << 8) | ((dest_depth) << 0))
#define XP_COMPOSITE_FUNCTION_OP(f) (((f) >> 24) & 255)
#define XP_COMPOSITE_FUNCTION_SRC_DEPTH(f) (((f) >> 16) & 255)
#define XP_COMPOSITE_FUNCTION_MASK_DEPTH(f) (((f) >> 8) & 255)
#define XP_COMPOSITE_FUNCTION_DEST_DEPTH(f) (((f) >> 0) & 255)
/* Composite WIDTH by HEIGHT pixels from source and mask to destination
using a specified function (if source and destination overlap,
undefined behavior results).
For SRC and DEST, the first element of the array is the color data. If
the second element is non-null it implies that there is alpha data
(which may be meshed or planar). Data without alpha is assumed to be
opaque.
Passing a null SRC-ROWBYTES pointer implies that the data SRC points
to is a single element.
Operations that are not supported will return XP_BadImplementation. */
extern xp_error xp_composite_pixels (unsigned int width, unsigned int height,
unsigned int function,
void *src[2], unsigned int src_rowbytes[2],
void *mask, unsigned int mask_rowbytes,
void *dest[2], unsigned int dest_rowbytes[2]);
/* Fill HEIGHT rows of data starting at DST. Each row will have WIDTH
bytes filled with the 32-bit pattern VALUE. Each row is DST-ROWBYTES
wide in total. */
extern void xp_fill_bytes (unsigned int width,
unsigned int height, uint32_t value,
void *dst, unsigned int dst_rowbytes);
/* Copy HEIGHT rows of bytes from SRC to DST. Each row will have WIDTH
bytes copied. SRC and DST may overlap, and the right thing will happen. */
extern void xp_copy_bytes (unsigned int width, unsigned int height,
const void *src, unsigned int src_rowbytes,
void *dst, unsigned int dst_rowbytes);
/* Suggestions for the minimum number of bytes or pixels for which it
makes sense to use some of the xp_ functions */
extern unsigned int xp_fill_bytes_threshold, xp_copy_bytes_threshold,
xp_composite_area_threshold, xp_scroll_area_threshold;
#endif /* XPLUGIN_H */

View File

@@ -1,11 +0,0 @@
bin_PROGRAMS = dumpkeymap
dumpkeymap_SOURCES = dumpkeymap.c
dumpkeymap_LDFLAGS = -Wl,-framework,IOKit
man1_MANS = dumpkeymap.man
EXTRA_DIST = \
README.txt \
dumpkeymap.man

View File

@@ -1,111 +0,0 @@
dumpkeymap - Diagnostic dump and detailed description of .keymapping files
Version 4
Copyright (C)1999,2000 by Eric Sunshine <sunshine@sunshineco.com>
Eric Sunshine, 1 December 2000
OVERVIEW
========
This package contains the diagnostic utility dumpkeymap, as well as highly
detailed documentation describing the internal layout of the Apple/NeXT
.keymapping file.
The dumpkeymap utility displays detailed information about each .keymapping
file mentioned on the command-line. On Apple and NeXT platforms, if no
.keymapping files are mentioned on the command-line, then it will instead
dissect the key mapping currently in use by the WindowServer and AppKit.
Documentation includes a thorough and detailed description of the internal
layout of the .keymapping file, as well as an explanation of how to interpret
the output of dumpkeymap.
The complete set of documentation is available for perusal via dumpkeymap's
manual page (dumpkeymap.1), as well as via the command-line options described
below.
--help
Usage summary.
--help-keymapping
Detailed discussion of the internal format of a .keymapping file.
--help-output
Explanation of dumpkeymap's output.
--help-files
List of key mapping-related files and directories.
--help-diagnostics
Explanation of diagnostic messages.
Once the manual page is been installed, documentation can also be accessed
with the Unix `man' command:
% man dumpkeymap
COMPILATION
===========
MacOS/X, Darwin
cc -Wall -o dumpkeymap dumpkeymap.c -framework IOKit
MacOS/X DP4 (Developer Preview 4)
cc -Wall -o dumpkeymap dumpkeymap.c -FKernel -framework IOKit
MacOS/X Server, OpenStep, NextStep
cc -Wall -o dumpkeymap dumpkeymap.c
By default, dumpkeymap is configured to interface with the HID driver (Apple)
or event-status driver (NeXT), thus allowing it to dump the key mapping which
is currently in use by the WindowServer and AppKit. However, these facilities
are specific to Apple/NeXT. In order to build dumpkeymap for non-Apple/NeXT
platforms, you must define the DUMPKEYMAP_FILE_ONLY flag when compiling the
program. This flag inhibits use of the HID and event-status drivers and
configures dumpkeymap to work strictly with raw key mapping files.
For example, to compile for Linux:
gcc -Wall -DDUMPKEYMAP_FILE_ONLY -o dumpkeymap dumpkeymap.c
INSTALLATION
============
Install the dumpkeymap executable image in a location mentioned in the PATH
environment variable. Typicall locations for executable files are:
/usr/local/bin
$(HOME)/bin
Install the manual page, dumpkeymap.1, in the `man1' subdirectory one of the
standard manual page locations or in any other location mentioned by the
MANPATH environment variable.
Typical locations for manual pages on most Unix platforms are:
/usr/local/man/man1
Typical locations for manual pages on MacOS/X, Darwin, and MacOS/X Server are:
/usr/local/man/man1
/Local/Documentation/ManPages/man1
/Network/Documentation/ManPages/man1
Typical locations for manual pages on OpenStep and NextStep are:
/usr/local/man/man1
/LocalLibrary/Documentation/ManPages/man1
/LocalDeveloper/Documentation/ManPages/man1
CONCLUSION
==========
This program and its accompanying documentation were written by Eric Sunshine
and are copyright (C)1999,2000 by Eric Sunshine <sunshine@sunshineco.com>.
The implementation of dumpkeymap is based upon information gathered on
September 3, 1997 by Eric Sunshine <sunshine@sunshineco.com> and Paul S.
McCarthy <zarnuk@zarnuk.com> during an effort to reverse engineer the format
of the NeXT .keymapping file.
$XFree86: xc/programs/Xserver/hw/darwin/utils/README.txt,v 1.1 2000/12/01 19:47:39 dawes Exp $

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -313,7 +313,7 @@ kaaCreatePixmap(ScreenPtr pScreen, int w, int h, int depth, unsigned usage_hint)
}
}
pPixmap = fbCreatePixmapBpp (pScreen, w, h, depth, bpp);
pPixmap = fbCreatePixmapBpp (pScreen, w, h, depth, bpp, usage_hint);
if (!pPixmap)
return NULL;
pKaaPixmap = KaaGetPixmapPriv(pPixmap);

View File

@@ -220,7 +220,7 @@ AbortDDX()
ddxGiveUp();
}
#ifdef __DARWIN__
#ifdef __APPLE__
void
DarwinHandleGUI(int argc, char *argv[])
{

View File

@@ -23,8 +23,8 @@ BUSSOURCES = xf86isaBus.c xf86pciBus.c xf86fbBus.c xf86noBus.c $(SBUS_SOURCES)
MODEDEFSOURCES = $(srcdir)/vesamodes $(srcdir)/extramodes
xf86DefModeSet.c: $(srcdir)/modeline2c.pl $(MODEDEFSOURCES)
cat $(MODEDEFSOURCES) | $(PERL) $(srcdir)/modeline2c.pl > $@
xf86DefModeSet.c: $(srcdir)/modeline2c.awk $(MODEDEFSOURCES)
cat $(MODEDEFSOURCES) | $(AWK) -f $(srcdir)/modeline2c.awk > $@
BUILT_SOURCES = xf86DefModeSet.c
@@ -85,9 +85,8 @@ EXTRA_DIST = \
xf86Version.h \
xorgVersion.h \
xf86Date.h \
xf86DefModes.c \
$(MODEDEFSOURCES) \
modeline2c.pl \
modeline2c.awk \
$(DISTKBDSOURCES)
if LNXACPI

Some files were not shown because too many files have changed in this diff Show More