Gestalt Selectors List

Apple Additional Software

This chapter lists selector codes of which the meaning is documented and are installed by additional, non-system software, software from Apple.

#!#7 (File Server Extension ? [???] part of AppleShare 6.0)
     Returns the version of AppleShare IP as BCD?

     #define gestaltASIPFSVersion '#!#7'

arb  (PortShare Pro ? cp [1.2?] by Stalker Software)
     (Serial Port Arbitrator ext [1.0], part of Apple Remote Access)
     gestaltArbitorAttr &AD02
     Returns information about the Serial Port Arbitration.

     enum {
     #define gestaltArbitorAttr 'arb '    /* Serial Port Arbitration
                                              attributes */
     gestaltSerialArbitrationExists = 0}; /* Serial Port Arbitration
                                              installed */

calb (OpenDoc? [???])
     Returns the version of the CA Library as BCD?

     #define gestaltCALibVersion 'calb'
     #define CALIBVERSION1 ((short)0x0100)

clip (PC Clipboard appl [1.0] part of DOS Compatibility Card)
     Returns the PC clipboard translator zone hint.
     The PC Clipboard software places a "zone hint" in this selector which
     is a hint to the translator where some memory might be found. This
     will be a pointer to the application zone of the PC Clipboard
     application. (Anonymous)

     #define gestaltPCClipboardZoneAddr? 'clip'

clpx (PC Clipboard Translators ext [1.0]
      part of DOS Compatibility Card)
     Returns the PC clipboard translator error.
     The PC clipboard translators place an error code in this selector that
     can be used by the PC Clipboard application to determine why a
     GetScrap request may have really failed. (Anonymous)

     #define gestaltPCClipboardError? 'clpx'

cltn (QuickDraw GX [1.0])
     Returns the version of the Collection Manager as NumVersion.

     #define gestaltCollectionMgrVersion 'cltn' /* Collection Mgr version*/

     The Collection Manager is a set of routines for maintaining tagged
     collections of data; GX uses it to support the "tags" that you can
     attach to GX objects, for holding special data, including
     user-defined data. (Lawrence D'Oliveiro)

fred (??? [???])
     'a set of admin flags, mostly useful internally.'

     enum {
     #define gestaltAdminFeaturesFlagsAttr 'fred'
     gestaltFinderUsesSpecialOpenFoldersFile = 0};
     /* The Finder uses a special file to store the list of open folders.*/

gc24 (8*24 GC cp [???])
     gestaltGC24? &M07
     Returns the version of the 8*24 GC software for the Macintosh
     Display Card 8*24 GC as BCD?

     #define gestaltGC24? 'gc24'

     This selector is also installed when no card is available. A value
     returned when no card is installed is 0xFFFF D8EB.

gfxa (QuickDraw GX [1.0])
     Returns information about the Graphics.

     enum {
     #define gestaltGraphicsAttr 'gfxa' /* graphics attributes bits  */
     gestaltGraphicsIsDebugging = 0x0001,
     gestaltGraphicsIsLoaded    = 0x0002,
     gestaltGraphicsIsPowerPC   = 0x0004};

     NOTE: Not bit values but bit masks? Use AND?

grfx (QuickDraw GX ext [1.0])
     Returns the version of the Graphics as ???.

     enum {
     #define gestaltGraphicsVersion 'grfx' /* Gestalt version selector */
     gestaltCurrentGraphicsVersion = 0x00010200}; /* supposed value
                                                      returned */

kids (At Ease [1.0])
     Returns a handle to a structure holding information about At Ease.

     The following code was published by Apple &AT06:

     #define kAtEaseGestalt    'kids'
     typedef struct {
       short  giVersion;         /* structure version */
       short  giIsActive;        /* true if at ease is currently running */
       short  giAutoCreateAlias; /* if true then auto create alias */
       short  giRequestFloppy;   /* if true then request floppy on new
                                    saves */
       short  giStacksAreApps;   /* if true then HyperCard stacks are shown
                                    with applications */
       FSSpec giItemsLocation;   /* location of the At Ease Items folder */
       /* more version 2 fields??? */
     } GestaltRec, *GestaltRecPtr, **GestaltRecHand;

mess (QuickDraw GX [1.0])
     Returns the version of the Message Manager as ???.

     #define gestaltMessageMgrVersion 'mess' /* Message Mgr version */

     The Message Manager is an implementation of object-oriented-style
     message passing within an inheritance hierarchy, that can be used from
     non-OO languages.
     It is used by the GX printing system, to allow the customization of
     printing behaviour by letting applications (and developers of printing
     extensions) intercept messages sent to the printer driver.
     (Lawrence D'Oliveiro)

mpeg (QuickTime MPEG Extension ext [1.0])
     Indicates MPEG support in some form on your system.

     This selector is not public. Originally the 'mpeg' selector
     (returning 0) was supposed to tell the Apple Video Player app if the
     MPEG card was installed. This application somehow did not simply query
     QuickTime in the usual fashion.
     Since this selector only exists because of backward compatibility it
     is very likely to disappear next time the Apple Video Player app is
     revised. Any application that tests for this selector is very likely
     to break in the near future. (Maynard James Handley)

mtlk (QuickTime Conferencing ext? [1.0?])
     Returns the version of QuickTime Conferencing (renamed to QuickTime
     Streaming) as NumVersion.

     #define gestaltQuickTimeConferencing 'mtlk'

     For compatibiity reasons the gestaltQuickTimeConferencing ('mtlk')
     selector will remain to return 0x01028000.
     The gestaltQuickTimeConferencingInfo ('qtci') selector will return the
     proper version number and string. &AT15

     See also the gestaltQuickTimeConferencingInfo ('qtci') selector.

mtv2 (Video Player app [???])
     (Video Startup ext [1.0], part of European Video Installer)
     gestaltTV &AD16
     "Indicates whether the Video Player app is present."

pc   (PC Setup cp? [???])
     gestaltDOSCompatibleState &AD23
     Returns information about the state of the DOS Compatible system.

     enum {
     #define gestaltDOSCompatibleState 'pc  '
     gestaltPCInstalled      = 0,  /* PC Setup Init is installed */
     gestaltPCRunning        = 1,  /* If bit set, the PC system is
                                       running */
     gestaltPCHasTakenOver   = 2,  /* If bit set, the PC system is in
                                       the foreground */
     gestaltPCSharingMonitor = 3}; /* If bit set, there is no dedicated
                                       monitor for the PC system */

ppcf (AltiVec Emulator ext [1.0d4])
     (System [8.6?])
     Returns information about optional PowerPC processor features.

     enum {
     #define gestaltPowerPCProcessorFeatures 'ppcf'
     gestaltPowerPCHasGraphicsInstructions = 0,    /* has fres, frsqrte,
                                                      and fsel instr. */
     gestaltPowerPCHasSTFIWXInstruction      = 1,  /* has stfiwx instr. */
     gestaltPowerPCHasSquareRootInstructions = 2,  /* has fsqrt and fsqrts
                                                      instructions */
     gestaltPowerPCHasDCBAInstruction        = 3,  /* has dcba instr. */
     gestaltPowerPCHasVectorInstructions     = 4,  /* has vector instr. */
     gestaltPowerPCHasDataStreams            = 5}; /* has dst, dstt, dstst,
                                                      dss, and dssall
                                                      instructions */

pic1 (any piece of software [???])
     Can hold a zero (to disable), or the vRefNum in the low word of the
     response of the disk to hold screen capture picture. The high word is
     reserved. Possible since Mac OS 7.6.

     #define gestaltScreenCaptureMain 'pic1'

     See also: 'pic2'.

pic2 (any piece of software [???])
     Can hold the Directory ID of folder to hold screen capture picture.
     Possible since Mac OS 7.6.

     #define gestaltScreenCaptureDir 'pic2'

     See also: 'pic1'.

pipa (System? [7.5.3? on Pippin])
     gestaltPippinAttr &AS24
     Returns information about the storage device of the Pippin OS

     #define gestaltPippinAttr 'pipa'
     #define kAnyStorageDevice    0
     #define kPippinStorageDevice 1
     #define kFloppyStorageDevice 2

     Source does not specify usage and which symbolic names define the
     attribute bits.

     Originally the header files listed the 'pipn' selector as
     gestaltPippinAttr. But observations indicate it's actually 'pipa'?

     See also: 'pipf', 'pipk' and 'pipn'.

pipf (System? [7.5.3? on Pippin])
     gestaltPippinStandardFile &AS24
     Returns information about the Pippin OS extraction Standard File

     #define gestaltPippinStandardFile 'pipf'

     Source does not specify usage and which symbolic names define the
     attribute bits.

     Observed value: 0x0.

     See also: 'pipa', 'pipk' and 'pipn'.

pipk (System? [??? on Pippin])

     #define gestaltPippinSoftKeyboard 'pipk'

     See also: 'pipa', 'pipf' and 'pipn'.

pmgr (QuickDraw GX [1.0])
     Returns the version of the QuickDraw GX Printing Manager as ???.

     #define gestaltGXPrintingMgrVersion 'pmgr' /* QD GX Printing Mgr
                                                    version */

     The QuickDraw GX documentation lists this selector incorrectly as
     'gestaltPrintingMgrVersion'. (Ken Prehoda)

prvr (System? [X?])
     gestaltPrintingManagerVersion &AD37
     Returns the version of the Printing Manager as BCD.

     enum {
     #define gestaltPrintingManagerVersion 'prvr'
     gestaltPrintManager2 = 0x0200};

q3v  (QuickDraw 3D ext? [1.0.2])
     gestaltQD3DVersion &AD30
     Returns the version of QuickDraw 3D as a Double BCD.

     #define gestaltQD3DVersion 'q3v '

     Selector was not defined with documentation, but version 1.0.3 was
     seen to install this selector with a response value similair to
     its version.

q3vc (QuickDraw 3D ??? [???])
     Returns information about the QuickDraw 3D Viewer.

     enum {
     #define gestaltQD3DViewer 'q3vc'
     gestaltQD3DViewerNotPresent = 0,
     gestaltQD3DViewerAvailable  = 1};

qd3d (QuickDraw 3D ext? [1.0?])
     Returns if QuickDraw 3D is installed or not (no attribute bits?).

     enum {
     #define gestaltQD3D 'qd3d'
     gestaltQD3DNotPresent = 0,
     gestaltQD3DAvailable  = 1};

     Is there a bug with the selector function for QD 3D 1.0b1c5? Whenever
     the 'qd3d' selector is used on a PM 6100/66 (System 7.5.1) crashes
     with a 'PowerPC illegal instruction'. This is when using the Gestalt
     dcmd in Macsbug or any of the Gestalt utilities.
     (found by John Mancino and Rene Ros)

qdgx (QuickDraw GX [1.0])
     Returns the version of QuickDraw GX as ???.

     #define gestaltGXVersion 'qdgx' /* QuickDraw GX version */

     Both the values 0x0100 8000 and 0x0001 0001 were observed.

qdtf (System? [8.5?])
     gestaltQDTextFeatures &AS29
     Returns information about QuickdrawText.

     enum {
     #define gestaltQDTextFeatures 'qdtf' /* QuickdrawText features */
     gestaltWSIISupportBit         = 0,  /* bit 0: WSII support included */
     gestaltSbitFontsBit           = 1,  /* sbit-only fonts supported */
     gestaltAntiAliasBit           = 2,  /* capably of antialiased text */
     gestaltOFA2availableBit       = 3,  /* OFA2 available */
     gestaltCreatesAliasFontRsrc   = 4,  /* "real" datafork font support */
     gestaltNativeType1FontSupport = 5}; /* have scaler for Type1 fonts */

qdtx (System? [8.5?])
     gestaltQDTextVersion &AS29
     Returns the version of QuickDraw Text as BCD.

     enum {
     #define gestaltQDTextVersion 'qdtx' /* QuickdrawText version */
     gestaltOriginalQDText = 0x0000,  /* up to and including 8.1 */
     gestaltAllegroQDText  = 0x0100}; /* starting with 8.5 (?) */

qtci (QuickTime Conferencing ext? [1.0.3])
     gestaltQuickTimeConferencingInfo &AT15
     Returns pointer to QuickTime Conferencing (renamed to QuickTime
     Streaming) information, a structure:

     struct QTCGestaltInfo {
     long QTCversion; /* standard binary version - i.e. 0x01044007
                          means "1.0.4a7" */
     char QTCversionString[20]; /* this is a pascal string, followed
                                    by a zero char */

     #define gestaltQuickTimeConferencingInfo 'qtci'

     Do not modify or dispose of the pointer to this structure - treat it
     as read-only information.

     For compatibiity reasons the gestaltQuickTimeConferencing ('mtlk')
     selector will remain to return 0x01028000.
     The gestaltQuickTimeConferencingInfo ('qtci') selector will return the
     proper version number and string. &AT15

     If the Gestalt selector points at a zero version number and empty
     string, it means that some QTC-related extension has already loaded,
     but QTC itself is not installed or has not yet loaded.
     The QTCversionString is a Pascal string. Since there's a zero
     character after it, however, you can add one byte to the address and
     use it as a C string. &AT15

     See also the gestaltQuickTimeConferencing ('mtlk') selector.

srad (Mac OS Licensing Extension ext [???])
     (System? [7.5.3?])
     (System 7.5 Update enbl [2.0])
     gestaltSoftwareVendorCode &AS22
     Returns system software vendor information.

     #define gestaltSoftwareVendorCode 'srad'
     #define gestaltSoftwareVendorApple 'Appl'    /* System software sold
                                                     by Apple Computer */
     #define gestaltSoftwareVendorLicensee 'Lcns' /* System software sold
                                                     by licensee */
     #define gestaltSoftwareVendorMotorola 'Moto' /* Hardware built by
                                                     Motorola Inc. */

     This selector may return incorrect values when on Macintosh compatible
     computers released before approx. july 1996.

     See also the 'hrad' selector in this section.

     See for more information on this selector and its twin 'srad', the
     'Manufacturer Identification' section in the 'Reports' chapter.

srta (Speech Recognition ext [1.2.1?])
     Returns information about the Speech Recognition Manager.

     enum {
     #define gestaltSpeechRecognitionAttr 'srta'
     gestaltDesktopSpeechRecognition   = 1L << 0,  /* Recognition using mic. */
     gestaltTelephoneSpeechRecognition = 1L << 1}; /* FUTURE */

     The Speech Recognition (1.2.1) only works on AV and PPC Macs, but the
     selector is installed on all machines and the response value will
     indicate the speech recognition is available. (Rene Ros)

srtb (Speech Recognition ext [1.2.1?])
     Returns the version of the Speech Recognition Manager as BCD.

     #define gestaltSpeechRecognitionVersion 'srtb'

     The Speech Recognition (1.2.1) only works on AV and PPC Macs, but the
     selector is installed on all machines and its presence will indicate
     the speech recognition is available. (Rene Ros)

strm (Remote Access Aliases ext [1.0], part of Apple Remote Access)
     gestaltRemoteAccessAttr &AD02

     enum {
     #define gestaltRemoteAccessAttr 'strm' /* Remote Access attributes */
     gestaltRemoteAccessExists   = 0,  /* ARA Connection Interface is
                                           available */
     gestaltRemoteAccessCallOnly = 1,  /* checks for ARA client &AD15 */
     gestaltRemoteAccessMPServer = 2,  /* checks for ARA multi-port
                                           server &AD15 */
     gestaltRemoteAccessVers2    = 3,  /* checks for ARA 2.0 features
                                           &AD15 */
     gestaltRemoteAccessVers21?  = 4}; /* installed by ARA Personal
                                           Server 2.1 */

     See also 'otra' in this chapter.

tmTE (Inline Extension ext [1.0], part of KanjiTalk7)
     gestaltTSMTEAttr &AS07
     Returns information about the Text Services Manager for TextEdit.

     enum {
     #define gestaltTSMTEAttr 'tmTE' /* TSM for TE attributes */
     gestaltTSMTEPresent = 0,                   /* TSM for TE is present */
     gestaltTSMTE        = gestaltTSMTEPresent};/* old name */

tmTV (Inline Extension ext [1.0], part of KanjiTalk7)
     gestaltTSMTEVersion &AS07
     Returns the version of the Text Services Manager for TextEdit as BCD.

     enum {
     #define gestaltTSMTEVersion 'tmTV' /* TSM for TE version */
     gestaltTSMTE1   = 0x100,  /* TSM for TE version 1.0 */
     gestaltTSMTE15  = 0x0150, /* &AS28 */
     gestaltTSMTE152 = 0x0152, /* System 8.2 */
     gestaltTSMTE2   = 0x0200}; /* TSM for TE version 2.0 &AS20 */

trip (WalkInit ext [1.0?])
     (Location Manager INIT ext [1.0])
     gestaltALMAttr &AS27
     Returns information about the Settings Manager (formerly Apple
     Location Manager, codename Walkabout) extension. (Anonymous)

     #define gestaltALMAttr = 'trip'
     gestaltALMPresent            = 0,  /* may be false anyway: check! */
     /* the following bits are not defined prior ALM 2.0 */
     gestaltALMHasSFGroup         = 1,  /* Get, Put and Merge locations
                                           calls are implemented &D01 */
     gestaltALMHasSFLocation      = gestaltALMHasSFGroup,
     gestaltALMHasCFMSupport      = 2,  /* ALM engine recognizes CFM
                                           modules &D01 */
     gestaltALMHasRescanNotifiers = 3}; /* beside notifiers for switches,
                                           notifiers for renames and new
                                           locations are send &D01 */

     The constants used before GM were gestaltWalkaboutAttr and

     See also the gestaltALMVers ('walk') selector.

ttsc (Text-To-Speech Manager ext [1.0?])
     Returns information about the Speech Synthesis Manager (formerly
     called Speech Manager).

     enum {
     #define gestaltSpeechAttr 'ttsc' /* Text-To-Speech Manager attrib. */
     gestaltSpeechMgrPresent = 0,  /* bit true if Speech Mgr present */
     gestaltSpeechHasPPCGlue = 1}; /* Speech Mgr has native PPC glue */

     With System 7.5.1 on a PowerBook Duo 210 this selector had both
     bits set indicating the PPC Glue is available, while it is not.
     (Rene Ros)

unic (System [Copland?])
     (UnicodeConverter.FAT ext [1.0?])
     gestaltUnicodeAttr &AD21
     Returns information about Unicode.

     enum {
     #define gestaltUnicodeAttr 'unic'
     gestaltUnicodeConverterPresent = 0,
     gestaltUnicodeConverterMask   = 1L << gestaltUnicodeConverterPresent};

     The Preliminary Copland headers defined a 'gestaltUnicodeFeatures'
     constant which is now replaced by 'gestaltUnicodeAttr'.

walk (WalkInit ext [1.0?])
     (Location Manager INIT ext [1.0])
     gestaltALMVers &AS27
     Returns the version of the Settings Manager (formerly Apple
     Location Manager, codename Walkabout) extension as NumVersion.

     #define gestaltALMVers 'walk'

     The constant used before GM was gestaltWalkaboutVers.

     See also the gestaltALMAttr ('trip') selector.

ws 1 (WorldScript I ext [7.1?])
     Returns version of WorldScript I software as BCD.

     #define gestaltWorldScriptIVersion? 'ws 1'

wsat (System? [8.5?])
     Returns information about the World Script II software.

     enum {
     #define gestaltWorldScriptIIAttr 'wsat'
     gestaltWSIICanPrintWithoutPrGeneralBit = 0};
              /* Bit 0 is on if WS II knows about PrinterStatus callback */

XTND (XTND Power Enabler ext ? [1.0b6?] part of OpenDoc ?)
     gestaltXTNDAttr &AS10
     Returns information about XTND Manager?

     enum {
     #define gestaltXTNDAttr 'XTND'
     gestaltPPCXTNDPresent = 1};

     Is used in some code to check if XTND engine is present. However it is
     unknown when it is installed, so supposedly it is meant for future
     use. Like a built-in XTND engine in the System Software? When the
     selector is installed all operations are dispatched through trap
     _XTNDMgr (0xABF4) otherwise the library provides the code.
     (Marco Piovanelli)