@c This is part of the Emacs manual.@c Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.@c See file emacs.texi for copying conditions.@node Mac OS, MS-DOS, Antinews, Top@appendix Emacs and the Mac OS@cindex Mac OS@cindex Macintosh Emacs built on Mac OS X supports most of its major features:multiple frames, colors, scroll bars, menu bars, use of the mouse,fontsets, international characters, input methods, coding systems,asynchronous and synchronous subprocesses, unexec (@code{dump-emacs}),and networking (@code{open-network-stream}). Support for variousimage file formats has not been implemented yet. The following features of Emacs are not yet supported on the Mac OS8 or 9: unexec (@code{dump-emacs}), asynchronous subprocesses(@code{start-process}), and networking (@code{open-network-stream}).As a result, packages such as Gnus, GUD, and Comint do not work.However, synchronous subprocesses (@code{call-process}) are supported.Since external programs to handle commands such as @code{print-buffer}and @code{diff} are not available on Mac OS 8 or 9, they are notsupported. Most of the features that are supported work in the same way as onother platforms and are therefore documented in the rest of thismanual. This section describes the peculiarities of using Emacs underthe Mac OS.@menu* Input: Mac Input. Keyboard input on the Mac.* Intl: Mac International. International character sets on the Mac.* Env: Mac Environment Variables. Setting environment variables for Emacs.* Directories: Mac Directories. Volumes and directories on the Mac.* Font: Mac Font Specs. Specifying fonts on the Mac.* Functions: Mac Functions. Mac-specific Lisp functions.@end menu@node Mac Input@section Keyboard Input on the Mac@cindex Meta (Mac OS)@cindex keyboard coding (Mac OS)@vindex mac-command-key-is-meta@vindex mac-keyboard-text-encoding On the Mac, Emacs can use either the @key{option} key or the@key{command} key as the @key{META} key. If the value of the variable@code{mac-command-key-is-meta} is non-@code{nil} (its default value),Emacs uses the @key{command} key as the @key{META} key. Otherwise ituses the @key{option} key as the @key{META} key. Most people should want to use the @key{command} key as the @key{META} key,so that dead-key processing with the @key{option} key will still work. This isuseful for entering non-ASCII Latin characters directly from the Mackeyboard, for example. Emacs recognizes the setting in the Keyboard control panel andsupports international and alternative keyboard layouts (e.g., Dvorak).Selecting one of the layouts from the keyboard layout pull-down menuwill affect how the keys typed on the keyboard are interpreted. The Mac OS intercepts and handles certain key combinations (e.g.,@key{command}-@key{SPC} for switching input languages). These will notbe passed to Emacs. The Mac keyboard ordinarily generates characters in the Mac Romanencoding. To use it for entering ISO Latin-1 characters directly, setthe value of the variable @code{mac-keyboard-text-encoding} to@code{kTextEncodingISOLatin1}. Note that not all Mac Roman charactersthat can be entered at the keyboard can be converted to ISO Latin-1characters. To enter ISO Latin-2 characters directly from the Mac keyboard, setthe value of @code{mac-keyboard-text-encoding} to@code{kTextEncodingISOLatin2}. Then let Emacs know that the keyboardgenerates Latin-2 codes, by typing @kbd{C-x @key{RET} k iso-latin-2@key{RET}}. To make this setting permanent, put this in your@file{.emacs} init file:@lisp(set-keyboard-coding-system 'iso-latin-2)@end lisp@node Mac International@section International Character Set Support on the Mac@cindex Mac Roman coding system@cindex clipboard support (Mac OS) The Mac uses a non-standard encoding for the upper 128 single-bytecharacters. It also deviates from the ISO 2022 standard by usingcharacter codes in the range 128-159. The coding system@code{mac-roman} is used to represent this Mac encoding. It is usedfor editing files stored in this native encoding, and for displayingfile names in Dired mode. Any native (non-symbol) Mac font can be used to correctly displaycharacters in the @code{mac-roman} coding system. The fontset @code{fontset-mac} is created automatically when Emacsis run on the Mac. It displays characters in the @code{mac-roman}coding system using 12-point Monaco. To insert characters directly in the @code{mac-roman} coding system,type @kbd{C-x @key{RET} k mac-roman @key{RET}}, customize the option@code{keyboard-coding-system}, or put this in your init file:@lisp(set-keyboard-coding-system 'mac-roman)@end lisp@noindentThis is useful for editing documents in native Mac encoding. You can use input methods provided either by LEIM (@pxref{InputMethods}) or the Mac OS to enter international characters. To use the former, see the International Character Set Support sectionof the manual (@pxref{International}). To use input methods provided by the Mac OS, set the keyboard codingsystem accordingly using the @kbd{C-x @key{RET} k} command(@code{set-keyboard-coding-system}). For example, for TraditionalChinese, use @samp{chinese-big5} as keyboard coding system; forJapanese, use @samp{sjis}, etc. Then select the desired input method inthe keyboard layout pull-down menu. The Mac clipboard and the Emacs kill ring (@pxref{Killing}) areconnected as follows: the most recent kill is copied to the clipboardwhen Emacs is suspended and the contents of the clipboard is insertedinto the kill ring when Emacs resumes. The result is that you can yanka piece of text and paste it into another Mac application, or cut or copyone in another Mac application and yank it into a Emacs buffer. The encoding of text selections must be specified using the commands@kbd{C-x @key{RET} x} (@code{set-selection-coding-system}) or @kbd{C-x@key{RET} X} (@code{set-next-selection-coding-system}) (e.g., forTraditional Chinese, use @samp{chinese-big5-mac} and for Japanese,@samp{sjis-mac}). @xref{Specify Coding}, for more details.@node Mac Environment Variables@section Environment Variables and Command Line Arguments.@cindex environment variables (Mac OS) On Mac OS X, when Emacs is run in a terminal, it inherits the valuesof environment variables from the shell from which it is invoked.However, when it is run from the Finder as a GUI application, itinherits no environment variable values. On Mac OS 8 or 9, environment variables and command line argumentsfor Emacs can be set by modifying the @samp{STR#} resources 128 and129, respectively. A common environment variable that one may want toset is @samp{HOME}. The way to set an environment variable is by adding a string of theform@exampleENV_VAR=VALUE@end example@noindentto resource @samp{STR#} number 128 using @code{ResEdit}. To set up theprogram to use unibyte characters exclusively, for example, add thestring@exampleEMACS_UNIBYTE=1@end example@node Mac Directories@section Volumes and Directories on the Mac@cindex file names (Mac OS) The directory structure in the Mac OS is seen by Emacs as @example/@var{volumename}/@var{filename}@end exampleSo when Emacs requests a file name, doing file name completion on@file{/} will display all volumes on the system. You can use @file{..}to go up a directory level. On Mac OS 8 or 9, to access files and folders on the desktop, lookin the folder @file{Desktop Folder} in your boot volume (this folderis usually invisible in the Mac @code{Finder}). On Mac OS 8 or 9, Emacs creates the Mac folder@file{:Preferences:Emacs:} in the @file{System Folder} and uses it asthe temporary directory. Emacs maps the directory name @file{/tmp/}to that. Therefore it is best to avoid naming a volume @file{tmp}.If everything works correctly, the program should leave no files in itwhen it exits. You should be able to set the environment variable@code{TMPDIR} to use another directory but this folder will still becreated.@node Mac Font Specs@section Specifying Fonts on the Mac@cindex font names (Mac OS) It is rare that you need to specify a font name in Emacs; usuallyyou specify face attributes instead. But when you do need to specifya font name in Emacs on the Mac, use a standard X font name:@smallexample-@var{maker}-@var{family}-@var{weight}-@var{slant}-@var{widthtype}-@var{style}@dots{}@dots{}-@var{pixels}-@var{height}-@var{horiz}-@var{vert}-@var{spacing}-@var{width}-@var{charset}@end smallexample@noindent@xref{Font X}. Wildcards are supported as they are on X. Native Apple fonts in Mac Roman encoding has maker name @code{apple}and charset @code{mac-roman}. For example 12-point Monaco can bespecified by the name @samp{-apple-monaco-*-12-*-mac-roman}. Native Apple Traditional Chinese, Simplified Chinese, Japanese, andKorean fonts have charsets @samp{big5-0}, @samp{gb2312.1980-0},@samp{jisx0208.1983-sjis}, and @samp{ksc5601.1989-0}, respectively. Single-byte fonts converted from GNU fonts in BDF format, which are notin the Mac Roman encoding, have foundry, family, and character setsencoded in the names of their font suitcases. E.g., the font suitcase@samp{ETL-Fixed-ISO8859-1} contains fonts which can be referred to bythe name @samp{-ETL-fixed-*-iso8859-1}.@node Mac Functions@section Mac-Specific Lisp Functions@cindex Lisp functions specific to Mac OS@findex do-applescript The function @code{do-applescript} takes a string argument,executes it as an AppleScript command, and returns the result as astring.@findex mac-file-name-to-posix@findex posix-file-name-to-mac The function @code{mac-file-name-to-posix} takes a Mac file name andreturns the GNU or Unix equivalent. The function@code{posix-file-name-to-mac} performs the opposite conversion. Theyare useful for constructing AppleScript commands to be passed to@code{do-applescript}.