Gestalt Selectors List

Definitions and Formats

This chapter explains where the word 'Gestalt' comes from, a few things are defined and it explains how each selector code entry looks like.

Use in Language

Webster's Dictionary

ge.stalt \g<e>-'s(h)t<a:>lt, -'s(h)t<o.>lt\ n, pl ge.stalt.en \-<\e>n\ or gestalts (1922)

[G, lit., shape, form] :a structure, configuration, or pattern of physical, biological, or psychological phenomena so integrated as to constitute a functional unit with properties not derivable by summation of its parts.

(Try this one:

German-Dutch Dictionary

Gestalt w [-en]
stature, figure, form; Ritter von der Traurigen -, knight of the sorrowful figure.


Apple Software

This category includes all selectors installed by software published by Apple Computer, Inc.

Inside Macintosh says this about them:
"Apple reserves for its own use all four-character sequences consisting solely of lowercase letters and non alphabetic ASCII characters".

It includes all selectors of the next two categories:

Apple System Software

This category includes all selectors installed by System Software from Apple Computer, Inc.

Apple Additional Software

These are selectors installed by additional, non-system, software from Apple Computer, Inc.

Third Parties Software

These are selectors installed by software from parties other than Apple Computer, Inc.

Inside Macintosh says about these:
"If you have registered a creator string with Apple, you are strongly encouraged to use that sequence as your selector code". This type of selectors is included in this list with the motto "If you don't know they are there, you can't do anything with them".

Especially the Third Party selectors may change with every new release and are therefore only listed in the 'known selectors' part when the author has described the structure in the documentation or by email to me. These selectors don't have a high priority but when possible I want to know atleast which software installs it to exclude it as a possible "Apple selector".

Format Selector Entry

Format used to display information about each selector:

selector_code (Software_name & type [since_version], by company/author)
     constant_name (selector code in hex)

     enum {
     #define selectorconstant 'selector_code'
     constant_1 = value_1,  /* remark &ref.numbertosource */
     constant_n = value_n}; /* remark &ref.numbertosource */

     NOTE and/or WARNING:

Where the type is one of:
app  application (APPL)
cp   control panel (cdev)
enbl enabler
ext  extension (INIT/appe/RDEV etc.)
COLA (Sugarwater ext [1.0] part of Knowledge Navigator [1.0]
                           by John Sculley)
     Returns version of Sugarwater as NumVersion.

     enum {
     #define gestaltSugarwaterVersion 'COLA' /* &AB01 */
     gestaltSugarwaterLightVersion = 0x0200}; /* first light version */

     WARNING: This example is fictitious.

     Sugarwater? See the book 'West of Eden, The End of Innocence at
     Apple' by Frank Rose.

Most selectors are listed as four characters, if there are only two or three characters displayed the remainder are spaces (or it's a typo!).
Diacritical characters are shown in the most logical normal character and at the end of the entry a note is included about which key-combination to press with a normal International system and US keyboard layout to get the required diacritical character and also listed is its hexadecimal code.
When 'INF' is at the end of the first line it means it is an informational selector, all others are environmental selectors.
The source reference number may also be used in other places than indicated above. It then applies to other parts of the entry or to the whole entry. A single question mark indicates an uncertainty regarding the information in front of the question mark. Three question marks indicate complete absence of the information.
Some symbolic names may not originate from official publications.

Symbolic Names Suffixes

The last characters of the symbolic names form a suffix which indicates the type of the returned value. Below is a table which lists the different types of suffix and their meaning.

Symbolic Names Suffixes
Suffix                   Meaning
Addr                     Value is an address, i.e. to the base address of
                         a memory-mapped device or to a function in
Attr                     Value is a range of 32 bits (0 is the least
                         significant bit), must compare with list of
                         constants and use BitTst or similair. Sometimes
                         it is a bitmask, then use BitAnd.
Code                     Value is four ASCII characters representing a
                         four byte string (no length byte or zero-
Count                    Value is a number indicating how many of the
                         indicated type exist.
Features                 Same as 'Attr' suffix. Usually used by mistake
                         instead of the more common 'Attr' suffix.
Grade                    Grade is a value which marks a threshold for
                         other software to do certain actions. The unit
                         is undefined.
Icon                     Value is the resource ID of an icon (in the
                         system file).
Size                     Value is a size, usually in bytes.
Table                    Value is the base address of a table.
Type                     Value is an index to map to a version or name.
Version                  Value is a version number. See the section
                         'Format Version Numbers' below, for a list of
                         different formats of version numbers.
<none>                   If there is no suffix like the ones above, the
                         presence of the selector only implies the
                         software which installed the selector is present.
                         The returned value is then private to the

Format Version Numbers

BCD (Binary Coded Decimal)

0x0402 means 4.0.2. Usually the lower two bytes of the response.


The decimal representation of the returned value in the low-byte is the version.

Double BCD

(my own fantasy name..., RR)
0x00010108 means 1.1.8.


The format of the LongInt response can be coerced into type NumVersion, which is the same format as used for the 'vers' resource type.

      NumVersion = packed record
       case INTEGER of
        0: (majorRev: SignedByte;  {1st part of version number in BCD}
            minorRev: 0..9;        {2nd part is 1 nibble in BCD}
            bugFixRev: 0..9;       {3rd part is 1 nibble in BCD}
            stage: SignedByte;     {stage code: dev, alpha, beta, final}
            nonRelRev: SignedByte);{revision level of non-released version}
        1: (version: LONGINT);     {to use all 4 fields at one time}

     stage is one of: 0x20 = development
                      0x40 = alpha
                      0x60 = beta
                      0x80 = final