Gestalt Selectors List

Apple System Software (T-Z)

This chapter lists selector codes of which the meaning is documented and the first character of the selector code is in the T-Z range.

tabl (System [6.0.4])
     gestaltSelectorTable?
     Returns a handle to the Gestalt selector table itself.

     #define gestaltSelectorTable? 'tabl' /* Gestalt Table address */

     WARNING:
     Although this information isn't officially confirmed, it is probably
     correct. But it is likely to go away in future systems.

     NOTE:
     The Gestalt selector table is kept in a resizable block in the system
     heap. The last item in the table is a dummy entry (INVALID), marked by
     a selector OSType(MaxLongInt). (Marco Piovanelli, he also has some
     snippet Pascal code to list all selectors)
     With System 7.5 each item in the table now contains three parts:
     the selector, an information field and a field with either a pointer
     or a value. If the information field (or only bit 0) is 1, a value is
     stored, otherwise a pointer to the gestalt function. (Eric-Paul Rebel)
     For backward compatibility this selector probably now points to a
     second table using the old format. (Rene Ros)

     The Gestalt dcmd included with MacsBug 6.5.4a4 or later ignores this
     selector because it makes toolbox calls that don't work in the dcmd
     environment.

tbtt (System [6.0.8])
     gestaltToolboxTable
     Returns the base address of the Toolbox trap table.

     #define gestaltToolboxTable 'tbtt' /* Toolbox trap table base */

te   (System [6.0.5])
     gestaltTextEditVersion
     Returns a value that indicates which version of TextEdit is present.

     enum {
     #define gestaltTextEditVersion 'te  ' /* TextEdit version number */
     gestaltTE1 = 1,  /* TextEdit in MacIIci ROM */
     gestaltTE2 = 2,  /* TextEdit with 6.0.4 Script Systems on MacIIci
                          (Script bug fixes for MacIIci) */
     gestaltTE3 = 3,  /* TextEdit with 6.0.4 Script Systems all but
                          MacIIci */
     gestaltTE4 = 4,  /* TextEdit in System 7.0 */
     gestaltTE5 = 5,  /* TextWidthHook available in TextEdit */
     gestaltTE6 = 6}; /* TextEdit in Mac OS 8.0/Copland &AS20
                          (not seen in Mac OS 8.0/Tempo beta) */

     ======================================================================
     Version numbers for TextEdit
     ======================================================================
     Returned value       New Features           System software   Hardware
     ----------------------------------------------------------------------
     gestaltUndefSelector Multistyled TE         before 6.0.4      all
     gestaltTE1                                  6.0.4 Roman       IIci
     gestaltTE2           New width              6.0.4 non-Roman   IIci
                          measurement hook
                          Script Mgr compatible
     gestaltTE3                                  6.0.4 non-Roman   non-IIci
     gestaltTE4           TEFeatureFlag          6.0.5             all
     gestaltTE5           Text width             7.0               all
                          measurement hook
     gestaltTE6           ???                    ???               all?
     ----------------------------------------------------------------------
     (Original source: Inside Macintosh Text, p.2-23)

     NOTE:
     The inline input features (also in TextEdit version 5) are also
     available with System 6.0.7 using non-Roman script systems, but there
     is no Gestalt constant that indicates this availability. &AD19

teat (Macintosh Drag and Drop ext [1.0])
     gestaltTEAttr &AD05
     Returns information about the functions and capabilities of TextEdit.

     enum {
     #define gestaltTEAttr 'teat' /* TextEdit attributes */
     gestaltTEHasGetHiliteRgn     = 0,  /* TEGetHiliteRgn present */
     gestaltTESupportsInlineInput = 1,  /* TextEdit does Inline Input
                                           &AS20 */
     gestaltTESupportsTextObjects = 2,  /* TextEdit does Text Objects
                                           &AS20 */
     gestaltTEHasWhiteBackground  = 3}; /* TextEdit supports overriding the
                                           TERec's background to white
                                           &AS29 */

tele (System [7.5])
     (Telephone Manager Extension ext [2.0?], part of Apple Telecom)
     gestaltTelephoneMgrAttr?
     Returns information about the Telephone Mgr.

     enum {
     #define gestaltTeleMgrAttr 'tele'
     gestaltTeleMgrPresent          = 0,
     gestaltTeleMgrPowerPCSupport   = 1,
     /* below installed by Telephone Mgr 2.0? &AD21 */
     gestaltTeleMgrSoundStreams     = 2,
     gestaltTeleMgrAutoAnswer       = 3,
     gestaltTeleMgrIndHandset       = 4,
     gestaltTeleMgrSilenceDetect    = 5,
     gestaltTeleMgrNewTELNewSupport = 6};

term (System [7.1])
     gestaltTermMgrAttr
     Returns information about the Terminal Manager.

     enum {
     #define gestaltTermMgrAttr 'term' /* Terminal Mgr attributes */
     gestaltTermMgrPresent     = 0,  /* Terminal Mgr is present */
     gestaltTermMgrErrorString = 2}; /* &AS04 */

thds (Thread Manager ext [1.1]) &AD04
     (QuickDraw GX ext [1.0?])
     (System [7.1.2?])
     gestaltThreadAttr
     Returns information about the Thread Manager.

     enum {
     #define gestaltThreadAttr 'thds'   /* Thread Manager attributes */
     gestaltThreadsPresent        = 0,  /* bit true if Threads present */
     gestaltSpecificMatchSupport  = 1,  /* bit true if 'exact match' API
                                            supported */
     gestaltThreadsLibraryPresent = 2,  /* bit true if ThreadsLib is
                                            present */
     gestaltSchedulerFix?         = 3,  /* preemptive scheduler fix
                                            present? */
     gestalt???                   = 4,  /* unknown, System 7.5.1 */
     gestalt???                   = 5,  /* unknown, Thread Mgr 2.1.5
                                            installed with QT MPEG
                                            Extension 1.0 */
     gestalt???                   = 6}; /* unknown, Mac OS 9.0 */

     NOTES:
     IM OS Utilities lists this selector as 'gestaltThreadMgrAttr'.

     For unknown reasons, the gestaltThreadsLibraryPresent bit is not set when
     running under PPC-native mode, on KanjiTalk (Japanese) System 7.5.
     (Laurent Humbert)

tmgr (System [6.0.4])
     gestaltTimeMgrVersion
     Returns a value that indicates the version of the Time Manager.

     enum {
     #define gestaltTimeMgrVersion 'tmgr' /* Time Mgr version */
     gestaltStandardTimeMgr = 1,  /* Standard Time Mgr */
     gestaltRevisedTimeMgr  = 2,  /* Revised Time Mgr */
     gestaltExtendedTimeMgr = 3}; /* Extended Time Mgr */

tpad (System? [7.5?] on PowerBook 520/540?)
     Indicates precense of a trackpad? As such used in the 'IsTrackPad.c'
     file included with the Apple Guide Authoring Kit.

tree (System? [9.0?])
     gestaltAVLTreeAttr
     Returns information abouth the AVLTree utility routines.

     enum {
     #define gestaltAVLTreeAttr 'tree'
     gestaltAVLTreePresentBit = 0}; /* AVL Tree routines are available. */

tsma (System? [???])
     gestaltTSMgrAttr &AS14
     Returns information about the Text Services Manager.

     enum {
     #define gestaltTSMgrAttr 'tsma' /* Text Services Mgr attributes */
     gestaltTSMDisplayMgrAwareBit = 0,  /* TSM knows about Display Mgr */
     gestaltTSMdoesTSMTEBit       = 1}; /* TSM has integrated TSMTE &AS20 */

tsmv (System [7.1])
     gestaltTSMgrVersion &AT05
     Returns Text Services Manager version in BCD.

     enum {
     #define gestaltTSMgrVersion 'tsmv' /*Text Services Mgr version */
     gestaltTSMgr15 = 0x0150,  /* &AS29 */
     gestaltTSMgr2  = 0x0200}; /* &AS20 */

tv   (System? [???])
     (Video Startup ext [1.0], part of European Video Installer)
     gestaltTVAttr &AS14
     Returns information about the TV capabilities.

     enum {
     #define gestaltTVAttr 'tv  ' /* TV Version [huh? ed.] */
     gestaltHasTVTuner             =  0,  /* supports Philips FL1236F
                                             video tuner */
     gestaltHasSoundFader          =  1,  /* supports Philips TEA6330
                                             Sound Fader chip */
     gestaltHasHWClosedCaptioning  =  2,  /* supports Philips SAA5252
                                             Closed Captioning */
     gestaltHasIRRemote            =  3,  /* supports CyclopsII Infra Red
                                             Remote Control */
     gestaltHasVidDecoderScaler    =  4,  /* supports Philips SAA7194
                                             Video Decoder/Scaler */
     gestaltHasStereoDecoder       =  5,  /* supports Sony SBX1637A-01
                                             stereo decoder */
     gestaltHasSerialFader         =  6,  /* has fader audio in serial
                                             with system audio &AS22 */
     gestaltHasFMTuner             =  7,  /* has FM Tuner from donnybrook
                                             card &AS22 */
     gestaltHasSystemIRFunction    =  8,
     gestaltIRDisabled             =  9,  /* Infra Red remote is not
                                             disabled. &AS29 */
     gestaltINeedIRPowerOffConfirm = 10,  /* Need IR power off confirm
                                             dialog. &AS29 */
     gestaltHasZoomedVideo         = 11}; /* Has Zoomed Video PC Card video
                                             input. &AS29 */

     NOTE:
     A Power Macintosh 6100/66 with AV card and System 7.5.1 had both bit
     3 and 4 set. A Quadra 605, LC475, PM 6100/60, Performa 5200 and
     Power Computing Power 100 (all with System 7.5.x?) only had bit 3 set.
     Where is the remote control, then?
     Selector not installed on Quadra 700 and PB Duo 210 (also System
     7.5.1 & 7.5upd2). (John Tsombakos, Rene Ros)
     An LC630 didn't had bit 5 set, while it is supposed to have a stereo
     decoder. (Eric-Paul Rebel)

ufox (Foreign File Access ext [4.0], part of Apple CD-ROM Software) &AT03
     gestaltForeignFileAccessVersion?
     Returns Foreign File Access version in BCD.

     #define gestaltForeignFileAccessVersion? 'ufox';
                                          /* Foreign File Access version */

     NOTE: The returned version is obtained from 'vers' resource ID# 1.

uisf (System? [8.5?])
     gestaltATSUFeatures
     Returns information about Apple Text Services Unicode.

     enum {
     #define gestaltATSUFeatures 'uisf'
     /* Features introduced in ATSUI version 1.1*/
     gestaltATSUTrackingFeature            = 0x00000001,
     gestaltATSUMemoryFeature              = 0x00000001,
     gestaltATSUFallbacksFeature           = 0x00000001,
     gestaltATSUGlyphBoundsFeature         = 0x00000001,
     gestaltATSULineControlFeature         = 0x00000001,
     gestaltATSULayoutCreateAndCopyFeature = 0x00000001,
     gestaltATSULayoutCacheClearFeature    = 0x00000001,
     /* Feature introduced in ATSUI version 1.2*/
     gestaltATSUTextLocatorUsageFeature    = 0x00000002,
     /* Feature introduced in ATSUI version 2.0*/
     gestaltATSULowLevelOrigFeatures       = 0x00000004};

uisv (System? [8.5?])
     gestaltATSUVersion
     Returns the version of Apple Text Services Unicode as BCD.

     enum {
     #define gestaltATSUVersion 'uisv'
     gestaltOriginalATSUVersion = (1 << 16),  /* ATSUI version 1.0*/
     gestaltATSUUpdate1			= (2 << 16),  /* ATSUI version 1.1*/
     gestaltATSUUpdate2			= (3 << 16),  /* ATSUI version 1.2*/
     gestaltATSUUpdate3			= (4 << 16)}; /* ATSUI version 2.0*/

usb  {System? [8.5?])
     gestaltUSBAttr
     Returns information about the Universal Serial Bus (USB) support.

     enum {
     #define gestaltUSBAttr 'usb '
     gestaltUSBPresent  = 0,  /* USB Support available */
     gestaltUSBHasIsoch = 1}; /* USB Isochronous features available */

usbv {System? [8.5?])
     Returns the version of Universal Serial Bus (USB) support
     software as NumVersion.

     #define gestaltUSBVersion 'usbv'

vers (System [6.0.4])
     gestaltVersion
     Returns the version of Gestalt as INTEGER.

     enum {
     #define gestaltVersion 'vers'     /* Gestalt version */
     gestaltValueImplementedVers = 5}; /* Version implementing
                                           GestaltValue &AD21 */

     NOTE:
     Usually version 1 is present. On machines with ROM version 1917
     (Quadra 840AV, PowerMacs etc.) version 4 is present.
     Version 5 is installed by System 7.5 adding support for the
     GestaltValue calls. And version 6 is installed by System 7.5.1.
     Version 7 is the Mac OS 8.5 and iMac version.
     (Rene Ros, Anonymous)

via1 (System [6.0.4, discontinued])
     gestaltVIA1Addr
     Returns the address of VIA 1.

     #define gestaltVIA1Addr 'via1' /* VIA 1 address */

     NOTE:
     At least on a Performa 450 (LC III) this selector and 'via2' exists for
     a short moment, until they are removed (by the system?).
     (Anthony DeRobertis)

via2 (System [6.0.4, discontinued])
     gestaltVIA2Addr
     Returns the address of VIA 2.

     #define gestaltVIA2Addr 'via2' /* VIA 2 address */

     NOTE:
     At least on a Performa 450 (LC III) this selector and 'via1' exists for
     a short moment, until they are removed (by the system?).
     (Anthony DeRobertis)

vm   (System [6.0.4])
     gestaltVMAttr
     Returns information about virtual memory.

     enum {
     #define gestaltVMAttr 'vm  '
     gestaltVMPresent          = 0,  /* set; virtual memory present */
     gestaltVMNotInstalled     = 0,  /* clear; virtual memory not present */
     gestaltVMHasLockMemoryForOutput = 1,
                                     /* LockMemoryForOutput available */
     gestalt???                = 2,  /* unknown, Mac OS 7.6? */
     gestaltVMFilemappingOn    = 3,  /* Filemapping is available
                                        (Mac OS 7.6?) &AS28 */
     gestaltVMHasPagingControl = 4,  /* the four Virtual Memory Paging
                                        Control functions are available
                                        &AT21 */
     gestalt???                = 5}; /* seen with Mac OS 8.5 */

     NOTE:
     Starting with Copland (abandoned Mac OS 8) VM is always on but this
     selector will tell VM is off. A future selector allows to test if
     the microkernel is running and thus if VM is actually used.
     &AD10/AD22

     With Rhapsody's Blue Box the note above is true and real. See for
     more info the 'lram' selector. (Anonymous)

vmbs (System [7.0])
     gestaltVMBackingStoreFileRefNum
     Returns the file refNum of virtual memory's main backing store file
     (returned in low word of result).

     #define gestaltVMBackingStoreFileRefNum 'vmbs'

vmin (System? [8.5])
    Indicates how the Finder should display information about VM in the
    Finder about box.

    #define gestaltVMInfoType 'vmin'
    gestaltVMInfoSizeStorageType = 0,  /* Display VM on/off, backing store
                                          size and name */
    gestaltVMInfoSizeType        = 1,  /* Display whether VM is on or off
                                          and the size of the backing
                                          store */
    gestaltVMInfoSimpleType      = 2,  /* Display whether VM is on or
                                          off */
    gestaltVMInfoNoneType        = 3}; /* Display no VM information */

vmxe (AltiVec Emulator ext [1.0d4])
     Returns information private to the AltiVec Emulator extension.

vmxg (AltiVec Emulator ext [1.0a1])
     Returns information private to the AltiVec Emulator extension.

wind (System [8.5?])
     gestaltWindowMgrAttr &AD21
     Returns information about the Mac OS 8.5 (Allegro) Window Manager.

     enum {
     #define gestaltWindowMgrAttr 'wind'
     gestaltWindowMgrPresentBit          = 0,
     gestaltExtendedWindowAttributes     = 1,
                                             /* Has ChangeWindowAttributes;
                                GetWindowAttributes works for all windows*/
     gestaltExtendedWindowAttributesBit  = 1, /* same */
     gestaltHasFloatingWindows           = 2, /* Floating window APIs */
     gestaltHasFloatingWindowsBit        = 2, /* same */
     gestaltHasWindowBuffering           = 3, /* buffering available */
     gestaltHasWindowBufferingBit        = 3, /* same */

     gestaltWindowMgrPresent	         = (1L << 0),
     gestaltWindowMgrPresentMask         = (1L << gestaltWindowMgrPresentBit),
     gestaltExtendedWindowAttributesMask = (1L << gestaltExtendedWindowAttributesBit),
     gestaltHasFloatingWindowsMask       = (1L << gestaltHasFloatingWindowsBit),
     gestaltHasWindowBufferingMask       = (1L << gestaltHasWindowBufferingBit)};

     NOTE:
     The gestaltWindowMgrPresent constant is a bit mask, where all other
     Gestalt constants of this type are bit index values.
     Universal Interfaces 3.2 slipped out the door with this mistake.
     (Apple)

     The following is originally from the Preliminary Copland Headers.
     Copland is replaced by Rhapsody which is replaced by Mac OS X.

     enum {
     #define gestaltWindowMgrAttr  'wind'
     kSystemEightWindowMgr      = 0,
     gestalt???                 = 1,
     gestalt???                 = 2,
     kSystemEightWindowsVersion = 8,
     kLatestWindowsVersion      = 8};

wma. (System [7.0])
     (Responder ext [2.0?])
     gestaltResponderAttr
     Returns information about the Workstation Management Agent a.k.a.
     Responder.

     enum {
     #define gestaltResponderAttr 'wma.' /* Responder attributes */
     gestaltResponderPresent = 0}; /* Responder is present */

x86f (??? [???])
     gestaltX86Features
     Returns information about the Intel platform the OS is running on?

     enum{
     #define gestaltX86Features	'x86f'
     gestaltX86HasFPU     =  0,  /* FPU supports the 387 instructions */
     gestaltX86HasVME     =  1,  /* supports Virtual-8086 Mode Ext */
     gestaltX86HasDE      =  2,  /* supports I/O breakpoints (Debug Ext) */
     gestaltX86HasPSE     =  3,  /* supports 4-Mbyte pages\
                                   (Page Size Extension) */
     gestaltX86HasTSC     =  4,  /* supports RTDSC instruction
                                    (Time Stamp Counter) */
     gestaltX86HasMSR     =  5,  /* supports Model Specific Registers */
     gestaltX86HasPAE     =  6,  /* supports physical addresses > 32 bits
                                    (Physical Address Extension) */
     gestaltX86HasMCE     =  7,  /* supports Machine Check Exception */
     gestaltX86HasCX8     =  8,  /* supports CMPXCHG8 instructions
                                    (Compare Exchange 8 bytes) */
     gestaltX86HasAPIC    =  9,  /* contains local APIC */
     gestaltX86Reserved10 = 10,  /* do not count on this bit value*/
     gestaltX86HasSEP     = 11,  /* supports fast system call
                                    (SysEnter Present) */
     gestaltX86HasMTRR    = 12,  /* supports Memory Type Range Registers */
     gestaltX86HasPGE     = 13,  /* supports Page Global Enable */
     gestaltX86HasMCA     = 14,  /* supports Machine Check Architecture */
     gestaltX86HasCMOV    = 15,  /* supports CMOVcc instruction
                                   (Conditional Move). If FPU bit is also
                                   set, supports FCMOVcc and FCOMI, too */
     gestaltX86HasPAT     = 16,  /* supports Page Attribute Table*/
     gestaltX86HasPSE36   = 17,  /* supports 36-bit Page Size Extension */
     gestaltX86HasMMX     = 23,  /* supports MMX instructions */
     gestaltX86HasFXSR    = 24}; /* Supports FXSAVE and FXRSTOR
                                    instructions (fast FP save/restore) */

xlat (Macintosh Easy Open cp [1.0?-1.1.2?])
     (Mac OS Easy Open cp [1.1.3])
     gestaltTranslationAttr
     Returns information about the Translation Manager.

     enum {
     #define gestaltTranslationAttr 'xlat' /* Translation Mgr attrib. */
     gestaltTranslationMgrExists       = 0,  /* TM present */
     gestaltTranslationMgrHintOrder    = 1,  /* TRUE if hint order */
                                                 reversal bug is fixed */
     gestaltTranslationPPCAvail        = 2,  /* PPC Lib. available */
     gestaltTranslationGetPathAPIAvail = 3,  /* GetFileTranslationPath &
                                                 GetPathTranslationDialog
                                                 available */
     gestalt???                        = 4}; /* by MEO 1.1 and later */

xlsf (Macintosh Easy Open cp [1.1.1?-1.1.2?])
     (Mac OS Easy Open cp [1.1.3])
     kTranslateScrapGestaltAttr
     Indicates to Easy Open what actions must be taken.

     enum {
     #define kTranslateScrapGestaltAttr 'xlsf'
     kTranslateScrapOnDisk = (1 << 0)};

     NOTE:
     The kTranslateScrapOnDisk bit is set to one if MEO should translate
     scrap when the clipboard is unloaded (on disk). This is done only if
     this GestaltValue selector is installed, and only if this bit is set.
     Applications should install this selector only temporarilly while
     calling GetScrap. (Anonymous)

xttt (System [6.0.8])
     gestaltExtToolboxTable
     Returns the base address of the second half of the Toolbox trap table
     if the table is discontiguous. If the table is contiguous, this
     selector returns zero. &AD19

     #define gestaltExtToolboxTable 'xttt' /* Extended Toolbox trap table*/

     NOTE:
     This selector may be installed but returns gestaltUnknownErr instead
     of zero when the table is contiguous? (Rene Ros)