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:
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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.
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
8
|
||||
@@ -1,5 +0,0 @@
|
||||
K 13
|
||||
svn:mime-type
|
||||
V 24
|
||||
application/octet-stream
|
||||
END
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
Binary file not shown.
@@ -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}
|
||||
Binary file not shown.
@@ -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;
|
||||
}
|
||||
BIN
hw/darwin/bundle/Dutch.lproj/MainMenu.nib/objects.nib
generated
BIN
hw/darwin/bundle/Dutch.lproj/MainMenu.nib/objects.nib
generated
Binary file not shown.
@@ -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
|
||||
@@ -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ï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 éé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 éé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>
|
||||
|
||||
@@ -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}
|
||||
@@ -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__;
|
||||
@@ -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";
|
||||
@@ -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;
|
||||
}
|
||||
BIN
hw/darwin/bundle/English.lproj/MainMenu.nib/objects.nib
generated
BIN
hw/darwin/bundle/English.lproj/MainMenu.nib/objects.nib
generated
Binary file not shown.
@@ -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
|
||||
@@ -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>
|
||||
@@ -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}
|
||||
Binary file not shown.
@@ -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;
|
||||
}
|
||||
BIN
hw/darwin/bundle/French.lproj/MainMenu.nib/objects.nib
generated
BIN
hw/darwin/bundle/French.lproj/MainMenu.nib/objects.nib
generated
Binary file not shown.
@@ -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
|
||||
@@ -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>
|
||||
|
||||
@@ -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}
|
||||
Binary file not shown.
@@ -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;
|
||||
}
|
||||
BIN
hw/darwin/bundle/German.lproj/MainMenu.nib/objects.nib
generated
BIN
hw/darwin/bundle/German.lproj/MainMenu.nib/objects.nib
generated
Binary file not shown.
@@ -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
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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}
|
||||
Binary file not shown.
@@ -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;
|
||||
}
|
||||
BIN
hw/darwin/bundle/Japanese.lproj/MainMenu.nib/objects.nib
generated
BIN
hw/darwin/bundle/Japanese.lproj/MainMenu.nib/objects.nib
generated
Binary file not shown.
@@ -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
|
||||
@@ -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>
|
||||
@@ -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
|
||||
@@ -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}
|
||||
Binary file not shown.
@@ -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.
@@ -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
|
||||
@@ -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>Í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ências do usuário</A></li>
|
||||
<li><A HREF="#license">Licença</A></li>
|
||||
</ol>
|
||||
<center>
|
||||
<h2><a NAME="notice">Notas importantes</a></h2>
|
||||
</center>
|
||||
<blockquote>
|
||||
#if PRE_RELEASE
|
||||
Essa é uma versão pré-lancamento
|
||||
do XDarwin, e ela não é suportada de nenhuma forma. Bugs podem
|
||||
ser reportados e correções podem ser enviadas para <A HREF="http://sourceforge.net/projects/xonx/">Página
|
||||
do projeto XonX</A> no SourceForge. Antes de informar bugs em versões
|
||||
pré-lancamento, por favor verifique a <EFBFBD>ltima versão em <A HREF="http://sourceforge.net/projects/xonx/">XonX</A>
|
||||
or X_VENDOR_LINK.
|
||||
#else
|
||||
Se o servidor é mais velho que 6-12 semanas, ou seu hardware é
|
||||
mais novo que a data acima, procure por uma nova versão antes de informar
|
||||
problemas. Bugs podem ser reportados e correções podem ser enviadas
|
||||
para a <A HREF="http://sourceforge.net/projects/xonx/">Página do projeto
|
||||
XonX</A> na SourceForge.
|
||||
#endif
|
||||
</blockquote>
|
||||
<blockquote> Este software é distribuído sob os termos da <a href="#license">licença
|
||||
MIT X11 / X Consortium</a> e é provido, sem nenhuma garantia. Por favor
|
||||
leia a <a href="#license">Licença</a> antes de começar a usar
|
||||
o programa.</blockquote>
|
||||
|
||||
<h2><a NAME="usage">Uso</a></h2>
|
||||
<p>O XDarwin é uma X server "open-source" livremente
|
||||
redistribuí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á ativo, ele ocupa
|
||||
a tela toda. Você pode voltar ao desktop do Mac OS X clicando Command-Option-A.
|
||||
Essa combinação de teclas pode ser mudada nas preferências.
|
||||
Pelo desktop Mac OS X, clique no ícone XDarwin no Dock para voltar ao
|
||||
sistema X window. (Você pode mudar esse comportamento nas preferências
|
||||
daí você deverá clicar no ícone XDarwin na janela
|
||||
flutuante que aparecerá.)</p>
|
||||
<p>No modo Compartilhado, o sistema X window e Aqua dividem a mesma tela. A janela
|
||||
raiz da tela X11 está do tamanho da tela (monitor) e contém todas
|
||||
as outras janelas. A janela raiz do X11 no modo compartilhado não é
|
||||
mostrada pois o Aqua controla o fundo de tela.</p>
|
||||
<h3>Emulação de Mouse Multi-Botões</h3>
|
||||
<p>Muitas aplicações X11 insistem em usar um mouse de 3 botões.
|
||||
Você pode emular um mouse de 3 botões com um simples botão,
|
||||
mantendo pressionando teclas modificadoras enquanto você clica no botão
|
||||
do mouse. Isto é controlado pela configuração da "Emulação
|
||||
de Mouse Multi-Botões" da preferência "Geral". Por
|
||||
padrão, a emulação está habilitada e mantendo pressionada
|
||||
a tecla Command e clicando no botão do mouse ele simulará o clique
|
||||
no segundo botão do mouse. Mantendo pressionada a tecla Option e clicando
|
||||
no botão do mouse ele simulará o terceiro botão. Você
|
||||
pode mudar a combinação de teclas modificadoras para emular os
|
||||
botões dois e três nas preferências. Nota, se a tecla modificadora
|
||||
foi mapeada para alguma outra tecla no xmodmap, você ainda terá
|
||||
que usar a tecla atual especificada nas preferências para a emulação
|
||||
do mouse multi-botões.</p>
|
||||
<h2><a NAME="path">Ajustando seu Path</a></h2>
|
||||
<p>Seu path é a lista de diretórios a serem procurados por arquivos
|
||||
executáveis. O comando X11 está localizado em <code>/usr/X11R6/bin</code>,
|
||||
que precisa ser adicionado ao seu path. XDarwin faz isso para você por
|
||||
padrão e pode-se também adicionar diretórios onde você
|
||||
instalou aplicações de linha de comando.</p>
|
||||
<p>Usuários experientes já terão configurado corretamente
|
||||
seu path usando arquivos de inicialização de seu shell. Neste
|
||||
caso, você pode informar o XDarwin para não modificar seu path
|
||||
nas preferências. O XDarwin inicia o cliente inicial X11 no shell padrão
|
||||
do usuário corrente. (Um shell alternativo pode ser também expecificado
|
||||
nas preferências.) O modo para ajustar o path depende do shell que você
|
||||
está usando. Isto é descrito na man page do seu shell.</p>
|
||||
<p>Você pode também querer adicionar as man pages do X11 para
|
||||
a lista de páginas a serem procuradas quando você está procurando
|
||||
por documentação. As man pages do X11 estão localizadas
|
||||
em <code>/usr/X11R6/man</code> e a variável de ambiente <code>MANPATH</code>
|
||||
contém a lista de diretórios a buscar.</p>
|
||||
<h2><a NAME="prefs">Preferências do Usuário</a></h2>
|
||||
<p>Várias opções podem ser ajustadas nas preferências
|
||||
do usuário, acessível pelo item "Preferências..."
|
||||
no menu "XDarwin". As opções listadas como opções
|
||||
de inicialização, não terão efeito até você
|
||||
reiniciar o XDarwin. Todas as outras opções terão efeito
|
||||
imediatamente. Várias das opções estã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ão do Mac OS X será usado como alerta no X11. Quando desabilitado
|
||||
(padrão) um tom simples será usado.</li>
|
||||
<li><b>Permitir o X11 mudar a aceleração do mouse: </b>Por implementação
|
||||
padrão no sistema X window, o gerenciador de janelas pode mudar a aceleração
|
||||
do mouse. Isso pode gerar uma confusão pois a aceleração
|
||||
do mouse pode ser ajustada diferentemente nas preferências do Mac OS
|
||||
X e nas preferências do X window. Por padrão, o X11 não
|
||||
está habilitado a mudar a aceleração do mouse para evitar
|
||||
este problema.</li>
|
||||
<li><b>Emulação de Mouse de Multi-Botões: </b>Esta opção
|
||||
está escrita acima em <a href="#usage">Uso</a>. Quando a emulação
|
||||
está habilitada as teclas modificadoras selecionadas tem que estar
|
||||
pressionadas quando o botão do mouse for pressionado, para emular o
|
||||
segundo e terceiro botões.</li>
|
||||
</ul>
|
||||
<h3>Inicial</h3>
|
||||
<ul>
|
||||
<li><b>Modo Padrão: </b>Se o usuário não indicar qual modo
|
||||
de exibição quer usar (Tela Cheia ou Compartilhado) o modo especificado
|
||||
aqui será usado .</li>
|
||||
<li><b>Mostrar o painel de escolha na inicialização: </b> Por
|
||||
padrão, uma painel é mostrado quando o XDarwin é
|
||||
iniciado para permitir que o usuário escolha ente o modo tela cheia
|
||||
ou modo compartilhado. Se esta opção estiver desligada, o modo
|
||||
padrão será inicializado automaticamente.</li>
|
||||
<li><b>Número do Monitor X11: </b>O X11 permite ser administrado em multiplos
|
||||
monitores por servidores X separados num mesmo computador. O usuário
|
||||
pode indicar o número do monitor para o XDarwin usar se mais de um
|
||||
servidor X se estiver rodando simultaneamente.</li>
|
||||
<li><b>Habilitar suporte a múltiplos monitores pelo Xinerama: </b>o XDarwin
|
||||
suporta múltiplos monitores com o Xinerama, que trata todos os monitores
|
||||
como parte de uma grande e retangular tela. Você pode desabilitar o
|
||||
Xinerama com está opção, mas normalmente o XDarwin não
|
||||
controla múltiplos monitores corretamente sem está opção.
|
||||
Se você só tiver um monotor, Xinerama é automaticamente
|
||||
desabilitado. </li>
|
||||
<li><b>Arquivo de Mapa de Teclado: </b> O mapa de teclado é lido na inicialização
|
||||
e traduzido para um mapa de teclado X11. Arquivos de mapa de teclado, estão
|
||||
disponíveis numa grande variedade de línguas e são encontradas
|
||||
em <code>/System/Library/Keyboards</code>.</li>
|
||||
<li><b>Iniciando Clientes X11 primeiro: </b>Quando o XDrawin é inicializado
|
||||
pelo Finder, ele irá 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ções.) Antes do XDarwin rodar o <code>xinit</code>
|
||||
ele irá adicionar específicos diretórios a seu path.
|
||||
Por padrão somente o <code>/usr/X11R6/bin</code> é adicionado.
|
||||
separado por um ponto-e-vírgula. Os clientes X são inicializados
|
||||
no shell padrão do usuário e os arquivos de inicialização
|
||||
do shell serão lidos. Se desejado, um shell alternativo pode ser especificado.</li>
|
||||
</ul>
|
||||
<h3>Tela Cheia</h3>
|
||||
<ul>
|
||||
<li><b>Botão de Combinação de Teclas: </b> Clique no botão
|
||||
e pressione qualquer quantidade de teclas modificadoras seguidas por uma tecla
|
||||
padrão para modificar a combinação quando se quer mudar
|
||||
entre o Aqua e X11.</li>
|
||||
<li><b>Clique no Ícone no Dock para mudar para o X11: </b>Habilitando
|
||||
esta opção você irá ativar a mudança para
|
||||
o X11 clicando no ícone do XDarwin no Dock. Em algumas versõ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ção: </b>Isto irá mostrar
|
||||
uma tela introdutó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ção
|
||||
"Atual" está especificada, a profundidade usada pelo Aqua
|
||||
quando o XDarwin iniciar será a mesma. Além das opções
|
||||
8, 15 ou 24 bits que podem ser especificadas.</li>
|
||||
</ul>
|
||||
|
||||
<h2><a NAME="license">Licença</a></h2>
|
||||
<p>A licença
|
||||
principal nós por XDarwin baseada na licença tradicional MIT X11
|
||||
/ X Consortium, que não impõe nenhuma condição sobre
|
||||
modificações ou redistribuição do código-fonte
|
||||
ou dos binários desde que o copyright/licença sejam mantidos intactos.
|
||||
Para mais informações e notícias adicionais de copyright/licensing
|
||||
em algumas seção do código, por favor refer to the source code.</p>
|
||||
<H3><A NAME="3"></A>Licença do X Consortium</H3>
|
||||
<p>Copyright (C) 1996 X Consortium</p>
|
||||
<p>Permissões são em virtude garantidas, livre de mudanças,
|
||||
para qualquer pessoa que possua uma cópia deste software e aos arquivos
|
||||
de documentação associada (o "Software"), para lidar
|
||||
com o software sem restrições, incluindo limitações
|
||||
dos direitos de uso, cópia, modificação, inclusão,
|
||||
publicação, distribuição, sub licença, e/ou
|
||||
venda de cópias deste Software, e permitir pessoas to whom o Software
|
||||
é fornecido para ser desta forma, verifique as seguintes condições:</p>
|
||||
<p>O nota de copyright abaixo e a permissão deverão ser incluídas
|
||||
em todas as cópias ou substanciais porções do Software.</p>
|
||||
<p>O SOFTWARE 'E PROVIDO "COMO TAL", SEM GARANTIAS DE NENHUM TIPO, EXPLICITA
|
||||
OU IMPLICITA, INCLUINDO MAS NÃO LIMITADO NOS AVISOS DE COMÉRCIO,
|
||||
TAMANHO OU PARA PROPOSTAS PARTICULARES E NÃO INFRAÇÃO.
|
||||
EM NENHUM ACONTECIMENTO O X CONSORTIUM SERÁ RESPONSAVÉL POR NENHUMA
|
||||
RECLAMAÇÃO, DANOS OU OUTRAS RESPONSABILIDADES, SE NUMA AÇÃO
|
||||
DE CONTRATO, OU OUTRA COISA, SURGINDO DE, FORA DE OU EM CONEXÃ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ão pode ser usado
|
||||
em propagandas ou outra forma de promoção de vendas, uso ou outro
|
||||
modo de lidar com este Software sem ter recebido uma autorização
|
||||
escrita pelo X Consortium.</p>
|
||||
<p>O Sistema X Window é marca registrada do X Consortium, Inc.</p>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -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}
|
||||
Binary file not shown.
@@ -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;
|
||||
}
|
||||
BIN
hw/darwin/bundle/Spanish.lproj/MainMenu.nib/objects.nib
generated
BIN
hw/darwin/bundle/Spanish.lproj/MainMenu.nib/objects.nib
generated
Binary file not shown.
@@ -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
|
||||
@@ -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ón pre-release de XDarwin, y no tiene ningún soporte. Patches y reportes de error pueden ser enviados a la <A HREF="http://sourceforge.net/projects/xonx/">página del proyecto XonX</A> en SourceForge. Antes de reportar errores en versiones pre-release, por favor verifique la ultima versión en <A HREF="http://sourceforge.net/projects/xonx/">XonX</A> o bien el X_VENDOR_LINK.
|
||||
#else
|
||||
Si el server el más antiguo que 6 a 12 meses, o si su hardware es posterior a la fecha indicada más arriba, por favor verifique la última versión antes de reportar problemas. Patches y reportes de error pueden ser enviados a la <A HREF="http://sourceforge.net/projects/xonx/">página del proyecto XonX</A> en SourceForge.
|
||||
#endif
|
||||
</blockquote>
|
||||
<blockquote>
|
||||
Este software es distribuido bajo los términos de la <A HREF="#license">Licencia MIT X11 / X Consortium</A> y es provisto sin garantía 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ón 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ón de teclas puede cambiarse en las Preferencias de Usuario. Desde el Escritorio de Mac OS X, haga click en ícono 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ño de la pantalla y contiene a todas las demás ventanas. La ventana root de X11 no se muestra en este modo, ya que Aqua maneja el fondo de pantalla.</p>
|
||||
<h3>Emulación de mouse multi-botón</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ón presionando teclas modificadoras mientras hace click. Esto es controlado en de la seccion "Emulación mouse" dentro de la sección "General" de las Preferencias del Usuario. Por defecto, la emulación está activa y utiliza la tecla Command para simular el 2do botón y la tecla Option para simlar el 3er botón. La conbinación para simular el 2do y 3er botón pueden ser modificada por cualquier combinación 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án siendo las utilizadas por la emulación de mouse multi-botón.</p>
|
||||
|
||||
<h2><a NAME="path">Configurando su Path</a></h2>
|
||||
<p>El path es la lista de directorios donde se buscarán los comandos ejecutables. Los comandos de X11 se encuentran en <code>/usr/X11R6/bin</code>, y éste necesita estar dentro de su path. XDarwin hace ésto automáticamente por defecto, y puede además agregar directorios adicionales donde tenga otros comandos de línea.</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á los clientes X11 iniciales usando el intérprete de comandos del usuario, según su configuración de login. Un intérprete de comandos alternativo puede ser especificado en las Preferencias del Usuario. La manera de configurar el path de su intérprete de comandos depende de cual está usando, y es generalmente descripta en las páginas man del mismo.</p>
|
||||
<p>Además, Ud. puede agregar las páginas man de X11 a la lista de páginas que son consultadas. Estas están 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ú de XDarwin. Las opciones dentro de de "Inicio" no surtirán efecto hasta que la aplicación se reinicie. Las restantes opciones surten efecto inmediatamente. Las diferentes opciones se describen a continuación:</p>
|
||||
<h3>General</h3>
|
||||
<ul>
|
||||
<li><b>Usar beep del sistema en X11:</b> Cuando esta opción está activa, el sonido de alerta estándar de Mac OS X se usará como alerta de X11. Cuando está desactivada, un simple tono es utilizado (esta es la opción por defecto).</li>
|
||||
<li><b>Permitir que X11 cambie la aceleración del mouse:</b> En una implementación estándard de X11, el window manager puede cambiar la aceleración del mouse. Esto puede llevar a una gran confusión si la aceleración es diferente en XDarwin y en Mac OS X. Por defecto, no se le permite a X11 alterar la aceleración para evitar este inconveniente.</li>
|
||||
<li><b>Emulación de mouse multi-botón:</b> Esta opción es descripta más arriba bajo <a HREF="#usage">Modo de Uso</a>. Cuando esta emulación está activa los modificadores seleccionados deben ser presionados cuando se hace click para emular el botón 2 o el botón 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í será el usado.</li>
|
||||
<li><b>Mostrar panel de selección al inicio:</b> Por defecto, un diálogo permite al usuario elegir entre Pantalla Completa o Rootless al inicio. Si esta opción esta desactivada, XDarwin arrancará utilizando el modo por defecto sin consultar al usuario.</li>
|
||||
<li><b>Número de display X11:</b> X11 permite que existan múltiples pantallas manejadas por servidores X11 separados funcionando en una misma computadora. El usuario puede especificar aqui un número entero para indicar el número de pantalla (display) que XDarwin utilizará si más de un servidor X funciona en forma simultánea.</li>
|
||||
<li><b>Habilitar soporte Xinerama para múltipes monitores:</b> XDarwin suporta múltiple monitores con Xinerama, que maneja todos los monitores como si fueran parte de una gran pantalla rectangular. Puede deshabilitar Xinerama con esta opción, pero XDarwin no maneja múltiples monitores en forma correcta sin esta opción habilitada. Si tiene solo un monitor, Xinerama es automáticamente deshabilitado.</li>
|
||||
<li><b>Archivo de mapa de teclado:</b> Un archivo de mapa de teclas es leído al inicio y es traducido a un keymap X11 (un archivo estándard de X11 para especificar la función 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, éste ejecutará <code>xinit</code> para a su vez arrancar el window manager y otros clientes. (Vea en "<code>man xinit</code>" para mayor información). Antes de ejecutar <code>xinit</code> XDarwin agregará 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érprete de comandos del usuario, por lo que los archivos de inicio de éste son leídos. Si se desea, un intérprete de comandos diferente puede ser especificado.</li>
|
||||
</ul>
|
||||
<h3>Pantalla Completa</h3>
|
||||
<ul>
|
||||
<li><b>Botón para definir combinación de teclas:</b> Haga click en este botón y luego presione cualquier combinación de modificadores seguidos de una tecla convencional para definir que combinación usará para intercambiar entre X11 y Aqua.</li>
|
||||
<li><b>Click en el ícono del Dock cambia a X11:</b> Habilite esta opción para volver a X11 al hacer click en ícono de XDarwin en el Dock. En algunas versiones de Mac OS X, al volver haciendo click en el Dock puede causar al desaparción del cursor al volver a Aqua.</li>
|
||||
<li><b>Mostrar ayuda al inicio:</b> Esta opción habilitada hará que una pantalla inicial de introducción 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á 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ón o redistribución del código fuente o de archivos binarios más allá de requerir que los mensajes de Licencia y Copyright se mantengan intactos. Para mayor información y para mensajes adicionales de Licencia y Copyright que cubren algunas secciones del código 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ón asociados (el "Software"),
|
||||
para utilizar el Software sin restricciones, incluyendo sin límites 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ás arriba y este permiso será incluído 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á utilizado en propaganda o como medio de promoción para la venta, utilización u otros manejos de este Software sin previa autorización 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>
|
||||
@@ -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}
|
||||
Binary file not shown.
@@ -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;
|
||||
}
|
||||
BIN
hw/darwin/bundle/Swedish.lproj/MainMenu.nib/objects.nib
generated
BIN
hw/darwin/bundle/Swedish.lproj/MainMenu.nib/objects.nib
generated
Binary file not shown.
@@ -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
|
||||
@@ -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ärdigställt: X_REL_DATE
|
||||
</center>
|
||||
<h2>Innehåll</h2>
|
||||
<ol>
|
||||
<li><A HREF="#notice">Viktigt!</A></li>
|
||||
<li><A HREF="#usage">Användande</A></li>
|
||||
<li><A HREF="#path">Att ställa in sin sökväg</A></li>
|
||||
<li><A HREF="#prefs">Instä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 är en testversion av XDarwin, och du kan inte garranteras någon som helst support för den. Buggar och fel kan rapporteras och förslag till fixar kan skickas till <A HREF="http://sourceforge.net/projects/xonx/">XonX-projektets sida</A> på SourceForge. Innan du rapporterar buggar i testversioner, var god pröva den senaste versionen från <A HREF="http://sourceforge.net/projects/xonx/">XonX</A> eller i X_VENDOR_LINK.
|
||||
#else
|
||||
Om servern är äldre än 6-12 månader, eller om din hårdvara är nyare än datumet ovan, leta efter en nyare version innan du rapporterar fel. Buggar och fel kan rapporteras och förslag till fixar kan skickas till <A HREF="http://sourceforge.net/projects/xonx/">XonX-projektets sida</A> på SourceForge.
|
||||
#endif
|
||||
</blockquote>
|
||||
<blockquote>
|
||||
Denna programvara distrubueras i enlighet med <A HREF="#license">MIT X11 / X Consortium License</A> och tilhandhålls som den är, helt utan garantier. Var god läs igenom <A HREF="#license">licensdokumentet (engelska)</A> innan du använder programmet.</blockquote>
|
||||
|
||||
<h2><a NAME="usage">Användande</a></h2>
|
||||
<p>XDarwin ä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öras på Mac OS X i fullskärmsläge eller rotlöst läge.</p>
|
||||
<p>I fullskärmsläge kommer X window-systemet att ta över hela skärmen när det är aktivt. Du kan byta tillbaka till Mac OS Xs skrivbord genom att trycka Kommando-Alt-A. Denna tangentkombination kan ändra i inställningarna. När du är på Mac OS Xs skrivbord kan du klicka på XDarwin-ikonen i dockan för att byta tillbaka till X Window-systemet. (Du kan förändra detta beteende i inställningarna så att du istället måste klicka i det fltande bytesfönstret istället.)</p>
|
||||
<p>I rotlöstläge delar X11 och Aqua på din skärm. Rotfönstret på X11-skärmen är av samma storlek som hela skärmen och innehåller alla andra fönster - det fungerar som bakgrund. I rotlöstläge visas inte detta rotfönster, eftersom Aqua hanterar skrvbordbakgrunden.</p>
|
||||
|
||||
<h3>Emulering av flerknapparsmus</h3>
|
||||
<p>Många X11-program utnyttjar en treknapparsmus. Du kan emulera en treknapparsmus med en knapp genom att hålla ner olika knappar på tangentbordet medan du klickar med musens enda knapp. Denna funktion styrs av inställningarna i "Emulera flerknapparsmus" under fliken "Diverse" i inställningarna. Grundinställningen är att emulationen är aktiv och att ett kommando-klick (Håll ner kommando och klicka) simulerar den andra musknappen. Den tredje musknappen fås genom att hålla ner alt och klicka. Du kan ändra detta till någon annan kombination av de fem tangenterna kommando, alt, kontrol, skift och fn (Powerbook/iBook). Notera att om dessa knappar har flyttats med hjälp av kommandot xmodmap kommer denna förändring inte att påverka vilka knappar som används vid flerknappsemulationen.</p>
|
||||
|
||||
<h2><a NAME="path">Att ställa in sin sökväg</a></h2>
|
||||
<p>Din sökväg är en lista av kataloger som söks igenom när terminalen letar efter kommandon att exekvera. Kommandon som hör till X11 ligger i <code>/usr/X11R6/bin</code>, en katalog som inte ligger i din sökväg från början. XDarwin lägger till denna katalog åt dig, och du kan också lägga till ytterligare kataloger i vilka du lagt program som skall köras från kommandoraden.</p>
|
||||
<p>Mer erfarna användare har antagligen redan ställt in sin sökväg i skalets inställningsfiler. Om detta gäller dig kan ställa in XDarwin så att din sökväg inte modifieras. XDarwin startar de första X11-klienterna i användarens inloggningsskal (Vill du använda ett alternativt skall, kan du specificera detta i inställningarna). Hur du ställer in din sökväg beror på vilket skal du använder. Exakt hur beskrivs i skalets man-sidor.</p>
|
||||
|
||||
<p>Utöver detta kan du också vilja lägga till X11s man-sidor (dokumentation) till listan äver sidor som som skall sökas när du vill läsa efter dokumentationen. X11s man-sidor ligger i <code>/usr/X11R6/man</code> och listan äver kataloger att söka bestämms av variabeln<code>MANPATH</code>.</p>
|
||||
|
||||
<h2><a NAME="prefs">Inställningar</a></h2>
|
||||
<p>I inställningarna finns ett antal alternativ där du kan påverka hur XDarwin beter sig i vissa fall. Inställningarna kommer du till genom att välja "Inställningar..." i menyn "XDarwin". De alternativ som finns under fliken "Starta" träder inte i kraft förrän du startat om programmet. Alla andra alternativ träder i kraft omedelbart. De olika alternativen beskrivs nedan:</p>
|
||||
<h3>Diverse</h3>
|
||||
<ul>
|
||||
<li><b>Använd Mac OS varningsljud i X11:</b> När detta alternativ är valt används Mac OS vanliga varningsljud är X11s varningsljud (bell). När detta alternativ inte är valt (förvalt) används en vanlig ton.</li>
|
||||
<li><b>Tillåt X11 att ändra musens acceleration:</b> I ett vanligt X11-system kan fönsterhanteraren ändra musens acceleration. Detta kan vara förvirrande eftersom musens acceleration kan vara olika i Mac OS Xs System Preferences och i fönsterhanteraren i X11. Förvalet är att X11 inte kan ändra musens acceleration för att på detta sätt undvika detta problem.</li>
|
||||
<li><b>Emulera flerknapparsmus:</b> Detta beskrivs ovan under <a HREF="#usage">Användande</a>. När emulationen är aktiv måste du hålla ner de valda knapparna för att emulera en andra eller tredje musknapp.</li>
|
||||
</ul>
|
||||
<h3>Starta</h3>
|
||||
<ul>
|
||||
<li><b>Förvalt läge:</b> Om användaren inte på annat sätt väljer vilket läge som skall användas kommer alternativet här att användas.</li>
|
||||
<li><b>Visa val av skärmläge vid start:</b> Förvalet är att visa ett fönster när XDarwin startar som låter användaren välja mellan fullskärmsläge och rotlöst läge. Om detta alternativ inte är aktivt kommer XDarwin automatiskt att startas i det läge som valts ovan.</li>
|
||||
<li><b>Skärmnummer i X11:</b> X11 tillåter att det finns flera skärmar styrda av varsin X-server på en och samma dator. Användaren kan ange vilket nummer XDarwin skall använda om mer än en X-server skall användas samtidigt.</li>
|
||||
<li><b>Aktivera Xinerama (stöd för flera skärmar):</b> XDarwin stödjer flera skärmar genom Xinerama, vilket hanterar alla skrämar som delar av en enda stor rektangulär skärm. Du kan använda detta alternativ för att stänga av Xinerama, men för närvarande kan inte XDarwin hantera flera skärmar utan det. Om du bara har en skärm kommer Xinerama automatiskt att deaktiveras.</li>
|
||||
<li><b>Fil med tangentbordsuppsättning:</b> En fil som anger tangentbordsuppsättning läses vid start och översätts till en tangentborsuppsättningsfil för X11. Filer med tangentbordsuppsättningar för ett stort antal språk finns i <code>/System/Library/Keyboards</code>.</li>
|
||||
<li><b>Startar första X11-klienterna:</b> När X11 startas från Finder kommer det att exekvera filen <code>xinit</code> för att starta fönsterhanteraren i X11 och andra program. (Se "<code>man xinit</code>" för mer information.) Innan XDarwin kör xinit kommer det att lägga till katalogern här till användarens sökväg. Förvalet är att endast lägga till katalogen <code>/usr/X11R6/bin</code>. Ytterligare kataloger kan läggas till - separera dem med kolon. X11-klienterna startas i användarens inloggningsskal så att användarens inställningsfiler i skalet läses. Om så önskas kan de startas i ett annat skal.</li>
|
||||
</ul>
|
||||
<h3>Fullskärm</h3>
|
||||
<ul>
|
||||
<li><b>Tangentkombinationsknappen:</b> Tryck på denna knapp och en tangentkombination för att ändra den tangentkombination som används för att byta mellan X11 och Aqua.</li>
|
||||
<li><b>Klick på ikonen i dockan byter till X11:</b> Aktivera detta alternativ för att byta till X11 genom att klicka på ikonen i dockan. I vissa versioner av Mac OS X kommer ett bte på detta sätt att gömma pekaren när du återvänder till Aqua.</li>
|
||||
<li><b>Visa fullskärmshjälp vid start:</b> Detta kommer att visa en informationsruta när XDarwin startas i fullskärmsläge.</li>
|
||||
<li><b>Färgdjup:</b> I fullskärmsläge kan X11 använda ett annat färgdjup än Aquas. Om du väjer "Nuvarande" kommer X11 att använda det färgdjup som Aqua har just då. Annars kan du välja 8, 15, eller 24 bitare färg.</li>
|
||||
</ul>
|
||||
|
||||
<h2><a NAME="license">Licens (svenska)</a></h2>
|
||||
<p>Den huvudsakliga licens vi använder oss av är baserad på den traditionella MIT X11 / XConsortium-licensen, vilken inte på något sätt begränsar förändringar eller vidarespridning av vare sig källkod eller kompilerad programvara annat än genom att kräva att delarna som rör copyright och licensiering lämnas intakta. För mer information och ytterligare copyright/licensieringsinfromation rö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.
@@ -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}
|
||||
Binary file not shown.
72
hw/darwin/bundle/ko.lproj/MainMenu.nib/classes.nib
generated
72
hw/darwin/bundle/ko.lproj/MainMenu.nib/classes.nib
generated
@@ -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;
|
||||
}
|
||||
BIN
hw/darwin/bundle/ko.lproj/MainMenu.nib/objects.nib
generated
BIN
hw/darwin/bundle/ko.lproj/MainMenu.nib/objects.nib
generated
Binary file not shown.
@@ -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
|
||||
@@ -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>
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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 */
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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
|
||||
@@ -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
|
||||
};
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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.
|
||||
|
||||
@@ -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
@@ -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
|
||||
@@ -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 */
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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 */
|
||||
@@ -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
|
||||
@@ -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
@@ -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);
|
||||
|
||||
@@ -220,7 +220,7 @@ AbortDDX()
|
||||
ddxGiveUp();
|
||||
}
|
||||
|
||||
#ifdef __DARWIN__
|
||||
#ifdef __APPLE__
|
||||
void
|
||||
DarwinHandleGUI(int argc, char *argv[])
|
||||
{
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user