Add missing piece of previous doc/ change.
[bpt/emacs.git] / doc / emacs / msdog.texi
CommitLineData
ca2565b0 1@c This is part of the Emacs manual.
73b0cd50 2@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2011
8838673e 3@c Free Software Foundation, Inc.
ca2565b0 4@c See file emacs.texi for copying conditions.
e93bc142 5@node Microsoft Windows, Manifesto, Mac OS / GNUstep, Top
5798efc8 6@appendix Emacs and Microsoft Windows/MS-DOS
c6b30bd2 7@cindex Microsoft Windows
270c6692 8@cindex MS-Windows, Emacs peculiarities
ca2565b0 9
e691d082 10 This section describes peculiarities of using Emacs on Microsoft
270c6692
EZ
11Windows. Some of these peculiarities are also relevant to Microsoft's
12older MS-DOS ``operating system'' (also known as ``MS-DOG'').
13However, Emacs features that are relevant @emph{only} to MS-DOS are
5798efc8
EZ
14described in a separate
15@iftex
9dc999d3 16manual (@pxref{MS-DOS,,, emacs-xtra, Specialized Emacs Features}).
5798efc8
EZ
17@end iftex
18@ifnottex
19section (@pxref{MS-DOS}).
20@end ifnottex
21
ca2565b0 22
270c6692
EZ
23 The behavior of Emacs on MS-Windows is reasonably similar to what is
24documented in the rest of the manual, including support for long file
25names, multiple frames, scroll bars, mouse menus, and subprocesses.
26However, a few special considerations apply, and they are described
27here.
ca2565b0
AI
28
29@menu
62d72a4a 30* Windows Startup:: How to start Emacs on Windows.
5798efc8
EZ
31* Text and Binary:: Text files use CRLF to terminate lines.
32* Windows Files:: File-name conventions on Windows.
9974630f 33* ls in Lisp:: Emulation of @code{ls} for Dired.
a16b2d46
EZ
34* Windows HOME:: Where Emacs looks for your @file{.emacs} and
35 where it starts up.
5a3e3201 36* Windows Keyboard:: Windows-specific keyboard features.
37a75312 37* Windows Mouse:: Windows-specific mouse features.
5798efc8
EZ
38* Windows Processes:: Running subprocesses on Windows.
39* Windows Printing:: How to specify the printer on MS-Windows.
03bebefc 40* Windows Fonts:: Specifying fonts on MS-Windows.
37a75312 41* Windows Misc:: Miscellaneous Windows features.
5798efc8
EZ
42@ifnottex
43* MS-DOS:: Using Emacs on MS-DOS (otherwise known as @dfn{MS-DOG}).
44@end ifnottex
ca2565b0
AI
45@end menu
46
62d72a4a
EZ
47@node Windows Startup
48@section How to Start Emacs on MS-Windows
49@cindex starting Emacs on MS-Windows
50
51 There are several ways of starting Emacs on MS-Windows:
52
53@enumerate
54@item
55@pindex runemacs.exe
56@cindex desktop shortcut, MS-Windows
57@cindex start directory, MS-Windows
58@cindex directory where Emacs starts on MS-Windows
59From the desktop shortcut icon: either double-click the left mouse
60button on the icon, or click once, then press @key{RET}. The desktop
61shortcut should specify as its ``Target'' (in the ``Properties'' of
62the shortcut) the full absolute file name of @file{runemacs.exe},
63@emph{not} of @file{emacs.exe}. This is because @file{runemacs.exe}
64hides the console window that would have been created if the target of
65the shortcut were @file{emacs.exe} (which is a console program, as far
66as Windows is concerned). If you use this method, Emacs starts in the
67directory specified by the shortcut. To control where that is,
68right-click on the shortcut, select ``Properties'', and in the
69``Shortcut'' tab modify the ``Start in'' field to your liking.
70
71@item
72From the Command Prompt window, by typing @kbd{emacs @key{RET}} at the
73prompt. The Command Prompt window where you did that will not be
74available for invoking other commands until Emacs exits. In this
75case, Emacs will start in the current directory of the Windows shell.
76
77@item
78From the Command Prompt window, by typing @kbd{runemacs @key{RET}} at
79the prompt. The Command Prompt window where you did that will be
80immediately available for invoking other commands. In this case,
81Emacs will start in the current directory of the Windows shell.
82
83@item
84@cindex invoking Emacs from Windows Explorer
85@pindex emacsclient.exe
86@pindex emacsclientw.exe
87Via the Emacs client program, @file{emacsclient.exe} or
88@file{emacsclientw.exe}. This allows to invoke Emacs from other
89programs, and to reuse a running Emacs process for serving editing
90jobs required by other programs. @xref{Emacs Server}. The difference
91between @file{emacsclient.exe} and @file{emacsclientw.exe} is that the
362b9d48
GM
92former is a console program, while the latter is a Windows GUI
93program. Both programs wait for Emacs to signal that the editing job
94is finished, before they exit and return control to the program that
95invoked them. Which one of them to use in each case depends on the
96expectations of the program that needs editing services. If that
97program is itself a console (text-mode) program, you should use
98@file{emacsclient.exe}, so that any of its messages and prompts appear
99in the same command window as those of the invoking program. By
100contrast, if the invoking program is a GUI program, you will be better
101off using @file{emacsclientw.exe}, because @file{emacsclient.exe} will
102pop up a command window if it is invoked from a GUI program. A
103notable situation where you would want @file{emacsclientw.exe} is when
104you right-click on a file in the Windows Explorer and select ``Open
105With'' from the pop-up menu. Use the @samp{--alternate-editor=} or
106@samp{-a} options if Emacs might not be running (or not running as a
107server) when @command{emacsclient} is invoked---that will always give
108you an editor. When invoked via @command{emacsclient}, Emacs will
109start in the current directory of the program that invoked
62d72a4a
EZ
110@command{emacsclient}.
111@end enumerate
112
ca2565b0
AI
113@node Text and Binary
114@section Text Files and Binary Files
115@cindex text and binary files on MS-DOS/MS-Windows
116
117 GNU Emacs uses newline characters to separate text lines. This is the
270c6692 118convention used on GNU, Unix, and other Posix-compliant systems.
ca2565b0
AI
119
120@cindex end-of-line conversion on MS-DOS/MS-Windows
270c6692
EZ
121 By contrast, MS-DOS and MS-Windows normally use carriage-return linefeed,
122a two-character sequence, to separate text lines. (Linefeed is the same
ca2565b0
AI
123character as newline.) Therefore, convenient editing of typical files
124with Emacs requires conversion of these end-of-line (EOL) sequences.
125And that is what Emacs normally does: it converts carriage-return
126linefeed into newline when reading files, and converts newline into
127carriage-return linefeed when writing files. The same mechanism that
128handles conversion of international character codes does this conversion
129also (@pxref{Coding Systems}).
130
1ca54e68
EZ
131@cindex cursor location, on MS-DOS
132@cindex point location, on MS-DOS
ca2565b0
AI
133 One consequence of this special format-conversion of most files is
134that character positions as reported by Emacs (@pxref{Position Info}) do
135not agree with the file size information known to the operating system.
136
ca2565b0
AI
137 In addition, if Emacs recognizes from a file's contents that it uses
138newline rather than carriage-return linefeed as its line separator, it
8e375db2
RS
139does not perform EOL conversion when reading or writing that file.
140Thus, you can read and edit files from GNU and Unix systems on MS-DOS
141with no special effort, and they will retain their Unix-style
142end-of-line convention after you edit them.
ca2565b0 143
ca2565b0 144 The mode line indicates whether end-of-line translation was used for
1ca54e68 145the current buffer. If MS-DOS end-of-line translation is in use for the
270c6692
EZ
146buffer, the MS-Windows build of Emacs displays a backslash @samp{\} after
147the coding system mnemonic near the beginning of the mode line
148(@pxref{Mode Line}). If no EOL translation was performed, the string
149@samp{(Unix)} is displayed instead of the backslash, to alert you that the
150file's EOL format is not the usual carriage-return linefeed.
1ca54e68
EZ
151
152@cindex DOS-to-Unix conversion of files
8e375db2 153 To visit a file and specify whether it uses DOS-style or Unix-style
fef4d6a6 154end-of-line, specify a coding system (@pxref{Text Coding}). For
8e375db2
RS
155example, @kbd{C-x @key{RET} c unix @key{RET} C-x C-f foobar.txt}
156visits the file @file{foobar.txt} without converting the EOLs; if some
157line ends with a carriage-return linefeed pair, Emacs will display
158@samp{^M} at the end of that line. Similarly, you can direct Emacs to
159save a buffer in a specified EOL format with the @kbd{C-x @key{RET} f}
160command. For example, to save a buffer with Unix EOL format, type
161@kbd{C-x @key{RET} f unix @key{RET} C-x C-s}. If you visit a file
162with DOS EOL conversion, then save it with Unix EOL format, that
163effectively converts the file to Unix EOL style, like @code{dos2unix}.
ca2565b0
AI
164
165@cindex untranslated file system
166@findex add-untranslated-filesystem
270c6692
EZ
167 When you use NFS, Samba, or some other similar method to access file
168systems that reside on computers using GNU or Unix systems, Emacs
169should not perform end-of-line translation on any files in these file
170systems---not even when you create a new file. To request this,
171designate these file systems as @dfn{untranslated} file systems by
172calling the function @code{add-untranslated-filesystem}. It takes one
173argument: the file system name, including a drive letter and
174optionally a directory. For example,
ca2565b0
AI
175
176@example
177(add-untranslated-filesystem "Z:")
178@end example
179
180@noindent
181designates drive Z as an untranslated file system, and
182
183@example
184(add-untranslated-filesystem "Z:\\foo")
185@end example
186
187@noindent
188designates directory @file{\foo} on drive Z as an untranslated file
189system.
190
191 Most often you would use @code{add-untranslated-filesystem} in your
270c6692 192@file{.emacs} file, or in @file{site-start.el} so that all the users at
ca2565b0
AI
193your site get the benefit of it.
194
195@findex remove-untranslated-filesystem
196 To countermand the effect of @code{add-untranslated-filesystem}, use
197the function @code{remove-untranslated-filesystem}. This function takes
198one argument, which should be a string just like the one that was used
199previously with @code{add-untranslated-filesystem}.
200
8e375db2
RS
201 Designating a file system as untranslated does not affect character
202set conversion, only end-of-line conversion. Essentially, it directs
203Emacs to create new files with the Unix-style convention of using
204newline at the end of a line. @xref{Coding Systems}.
1ca54e68
EZ
205
206@vindex file-name-buffer-file-type-alist
207@cindex binary files, on MS-DOS/MS-Windows
208 Some kinds of files should not be converted at all, because their
270c6692 209contents are not really text. Therefore, Emacs on MS-Windows distinguishes
1ca54e68 210certain files as @dfn{binary files}. (This distinction is not part of
270c6692 211MS-Windows; it is made by Emacs only.) Binary files include executable
1ca54e68
EZ
212programs, compressed archives, etc. Emacs uses the file name to decide
213whether to treat a file as binary: the variable
214@code{file-name-buffer-file-type-alist} defines the file-name patterns
215that indicate binary files. If a file name matches one of the patterns
216for binary files (those whose associations are of the type
217@code{(@var{pattern} . t)}, Emacs reads and writes that file using the
218@code{no-conversion} coding system (@pxref{Coding Systems}) which turns
219off @emph{all} coding-system conversions, not only the EOL conversion.
220@code{file-name-buffer-file-type-alist} also includes file-name patterns
270c6692 221for files which are known to be Windows-style text files with
1ca54e68 222carriage-return linefeed EOL format, such as @file{CONFIG.SYS}; Emacs
270c6692 223always writes those files with Windows-style EOLs.
1ca54e68
EZ
224
225 If a file which belongs to an untranslated file system matches one of
226the file-name patterns in @code{file-name-buffer-file-type-alist}, the
227EOL conversion is determined by @code{file-name-buffer-file-type-alist}.
228
270c6692
EZ
229@node Windows Files
230@section File Names on MS-Windows
231@cindex file names on MS-Windows
232
233 MS-Windows and MS-DOS normally use a backslash, @samp{\}, to
234separate name units within a file name, instead of the slash used on
235other systems. Emacs on MS-DOS/MS-Windows permits use of either slash or
236backslash, and also knows about drive letters in file names.
237
238@cindex file-name completion, on MS-Windows
239 On MS-DOS/MS-Windows, file names are case-insensitive, so Emacs by
240default ignores letter-case in file names during completion.
241
37a75312 242@vindex w32-get-true-file-attributes
6af511e3
EZ
243 The variable @code{w32-get-true-file-attributes} controls whether
244Emacs should issue additional system calls to determine more
245accurately file attributes in primitives like @code{file-attributes}
246and @code{directory-files-and-attributes}. These additional calls are
247needed to report correct file ownership, link counts and file types
248for special files such as pipes. Without these system calls, file
249ownership will be attributed to the current user, link counts will be
250always reported as 1, and special files will be reported as regular
251files.
252
253 If the value of this variable is @code{local} (the default), Emacs
254will issue these additional system calls only for files on local fixed
255drives. Any other non-@code{nil} value means do this even for
256removable and remote volumes, where this could potentially slow down
257Dired and other related features. The value of @code{nil} means never
b1c8242b
EZ
258issue those system calls. Non-@code{nil} values are more useful on
259NTFS volumes, which support hard links and file security, than on FAT,
260FAT32, and XFAT volumes.
37a75312 261
9974630f
EZ
262@node ls in Lisp
263@section Emulation of @code{ls} on MS-Windows
264@cindex Dired, and MS-Windows/MS-DOS
265@cindex @code{ls} emulation
266
267 Dired normally uses the external program @code{ls} (or its close
268work-alike) to produce the directory listing displayed in Dired
269buffers (@pxref{Dired}). However, MS-Windows and MS-DOS systems don't
270come with such a program, although several ports of @sc{gnu} @code{ls}
271are available. Therefore, Emacs on those systems @emph{emulates}
272@code{ls} in Lisp, by using the @file{ls-lisp.el} package. While
273@file{ls-lisp.el} provides a reasonably full emulation of @code{ls},
7d0a2d30
EZ
274there are some options and features peculiar to that emulation;
275@iftex
276for more details, see the documentation of the variables whose names
277begin with @code{ls-lisp}.
278@end iftex
279@ifnottex
280they are described in this section.
9974630f
EZ
281
282 The @code{ls} emulation supports many of the @code{ls} switches, but
283it doesn't support all of them. Here's the list of the switches it
284does support: @option{-A}, @option{-a}, @option{-B}, @option{-C},
285@option{-c}, @option{-i}, @option{-G}, @option{-g}, @option{-R},
286@option{-r}, @option{-S}, @option{-s}, @option{-t}, @option{-U},
287@option{-u}, and @option{-X}. The @option{-F} switch is partially
288supported (it appends the character that classifies the file, but does
289not prevent symlink following).
290
291@vindex ls-lisp-use-insert-directory-program
292 On MS-Windows and MS-DOS, @file{ls-lisp.el} is preloaded when Emacs
293is built, so the Lisp emulation of @code{ls} is always used on those
294platforms. If you have a ported @code{ls}, setting
295@code{ls-lisp-use-insert-directory-program} to a non-@code{nil} value
296will revert to using an external program named by the variable
297@code{insert-directory-program}.
298
299@vindex ls-lisp-ignore-case
300 By default, @file{ls-lisp.el} uses a case-sensitive sort order for
301the directory listing it produces; this is so the listing looks the
302same as on other platforms. If you wish that the files be sorted in
303case-insensitive order, set the variable @code{ls-lisp-ignore-case} to
304a non-@code{nil} value.
305
306@vindex ls-lisp-dirs-first
307 By default, files and subdirectories are sorted together, to emulate
308the behavior of @code{ls}. However, native MS-Windows/MS-DOS file
309managers list the directories before the files; if you want that
310behavior, customize the option @code{ls-lisp-dirs-first} to a
311non-@code{nil} value.
312
313@vindex ls-lisp-verbosity
314 The variable @code{ls-lisp-verbosity} controls the file attributes
315that @file{ls-lisp.el} displays. The value should be a list that
316contains one or more of the symbols @code{links}, @code{uid}, and
317@code{gid}. @code{links} means display the count of different file
318names that are associated with (a.k.a.@: @dfn{links to}) the file's
75099884
EZ
319data; this is only useful on NTFS volumes. @code{uid} means display
320the numerical identifier of the user who owns the file. @code{gid}
321means display the numerical identifier of the file owner's group. The
322default value is @code{(links uid gid)} i.e.@: all the 3 optional
323attributes are displayed.
9974630f
EZ
324
325@vindex ls-lisp-emulation
326 The variable @code{ls-lisp-emulation} controls the flavour of the
327@code{ls} emulation by setting the defaults for the 3 options
328described above: @code{ls-lisp-ignore-case},
329@code{ls-lisp-dirs-first}, and @code{ls-lisp-verbosity}. The value of
330this option can be one of the following symbols:
331
332@table @code
333@item GNU
334@itemx nil
335Emulate @sc{gnu} systems; this is the default. This sets
336@code{ls-lisp-ignore-case} and @code{ls-lisp-dirs-first} to
337@code{nil}, and @code{ls-lisp-verbosity} to @code{(links uid gid)}.
338@item UNIX
339Emulate Unix systems. Like @code{GNU}, but sets
340@code{ls-lisp-verbosity} to @code{(links uid)}.
341@item MacOS
342Emulate MacOS. Sets @code{ls-lisp-ignore-case} to @code{t}, and
343@code{ls-lisp-dirs-first} and @code{ls-lisp-verbosity} to @code{nil}.
344@item MS-Windows
345Emulate MS-Windows. Sets @code{ls-lisp-ignore-case} and
346@code{ls-lisp-dirs-first} to @code{t}, and @code{ls-lisp-verbosity} to
347@code{(links)} on Windows NT/2K/XP/2K3 and to @code{nil} on Windows 9X.
348Note that the default emulation is @emph{not} @code{MS-Windows}, even
349on Windows, since many users of Emacs on those platforms prefer the
350@sc{gnu} defaults.
351@end table
352
353@noindent
90639cea
GM
354Any other value of @code{ls-lisp-emulation} means the same as @code{GNU}.
355Customizing this option calls the function @code{ls-lisp-set-options} to
356update the 3 dependent options as needed. If you change the value of
357this variable without using customize after @file{ls-lisp.el} is loaded
358(note that it is preloaded on MS-Windows and MS-DOS), you can call that
359function manually for the same result.
9974630f
EZ
360
361@vindex ls-lisp-support-shell-wildcards
362 The variable @code{ls-lisp-support-shell-wildcards} controls how
363file-name patterns are supported: if it is non-@code{nil} (the
364default), they are treated as shell-style wildcards; otherwise they
365are treated as Emacs regular expressions.
de320775
EZ
366
367@vindex ls-lisp-format-time-list
368 The variable @code{ls-lisp-format-time-list} defines how to format
369the date and time of files. @emph{The value of this variable is
370ignored}, unless Emacs cannot determine the current locale. (However,
371if the value of @code{ls-lisp-use-localized-time-format} is
372non-@code{nil}, Emacs obeys @code{ls-lisp-format-time-list} even if
373the current locale is available; see below.)
374
375The value of @code{ls-lisp-format-time-list} is a list of 2 strings.
376The first string is used if the file was modified within the current
377year, while the second string is used for older files. In each of
378these two strings you can use @samp{%}-sequences to substitute parts
379of the time. For example:
380@lisp
381("%b %e %H:%M" "%b %e %Y")
382@end lisp
383
384@noindent
385Note that the strings substituted for these @samp{%}-sequences depend
386on the current locale. @xref{Time Parsing,,, elisp, The Emacs Lisp
387Reference Manual}, for more about format time specs.
388
389@vindex ls-lisp-use-localized-time-format
390 Normally, Emacs formats the file time stamps in either traditional
391or ISO-style time format. However, if the value of the variable
392@code{ls-lisp-use-localized-time-format} is non-@code{nil}, Emacs
393formats file time stamps according to what
394@code{ls-lisp-format-time-list} specifies. The @samp{%}-sequences in
395@code{ls-lisp-format-time-list} produce locale-dependent month and day
396names, which might cause misalignment of columns in Dired display.
7d0a2d30 397@end ifnottex
9974630f 398
270c6692 399@node Windows HOME
a16b2d46 400@section HOME and Startup Directories on MS-Windows
270c6692
EZ
401@cindex @code{HOME} directory on MS-Windows
402
444246ca 403 The Windows equivalent of the @code{HOME} directory is the
270c6692
EZ
404@dfn{user-specific application data directory}. The actual location
405depends on your Windows version and system configuration; typical values
406are @file{C:\Documents and Settings\@var{username}\Application Data} on
407Windows 2K/XP and later, and either @file{C:\WINDOWS\Application Data}
408or @file{C:\WINDOWS\Profiles\@var{username}\Application Data} on the
409older Windows 9X/ME systems.
410
b8a9e136
EZ
411 @code{HOME} can also be set in the system registry, for details see
412@ref{MS-Windows Registry}.
413
270c6692
EZ
414@cindex init file @file{.emacs} on MS-Windows
415 The home directory is where your init file @file{.emacs} is stored.
416When Emacs starts, it first checks whether the environment variable
417@env{HOME} is set. If it is, it looks for the init file in the
418directory pointed by @env{HOME}. If @env{HOME} is not defined, Emacs
419checks for an existing @file{.emacs} file in @file{C:\}, the root
420directory of drive @file{C:}@footnote{
03bebefc
JR
421The check in @file{C:\} is for compatibility with older versions of Emacs,
422which didn't check the application data directory.
270c6692
EZ
423}. If there's no such file in @file{C:\}, Emacs next uses the Windows
424system calls to find out the exact location of your application data
03bebefc 425directory. If that system call fails, Emacs falls back to @file{C:\}.
270c6692
EZ
426
427 Whatever the final place is, Emacs sets the value of the @env{HOME}
428environment variable to point to it, and it will use that location for
429other files and directories it normally creates in the user's home
430directory.
431
432 You can always find out where Emacs thinks is your home directory's
433location by typing @kbd{C-x d ~/ @key{RET}}. This should present the
434list of files in the home directory, and show its full name on the
435first line. Likewise, to visit your init file, type @kbd{C-x C-f
436~/.emacs @key{RET}}.
437
438@cindex @file{_emacs} init file, MS-Windows
439 Because MS-DOS does not allow file names with leading dots, and
440because older Windows systems made it hard to create files with such
441names, the Windows port of Emacs supports an alternative name
442@file{_emacs} as a fallback, if such a file exists in the home
443directory, whereas @file{.emacs} does not.
444
5a3e3201
EZ
445@node Windows Keyboard
446@section Keyboard Usage on MS-Windows
447@cindex keyboard, MS-Windows
448
449 This section describes the Windows-specific features related to
450keyboard input in Emacs.
451
e7379492 452@cindex MS-Windows keyboard shortcuts
668ef058
RS
453 Many key combinations (known as ``keyboard shortcuts'') that have
454conventional uses in MS-Windows programs conflict with traditional
51524f43
RS
455Emacs key bindings. (These Emacs key bindings were established years
456before Microsoft was founded.) Examples of conflicts include
457@kbd{C-c}, @kbd{C-x}, @kbd{C-z}, @kbd{C-a}, and @kbd{W-@key{SPC}}.
458You can redefine some of them with meanings more like the MS-Windows
459meanings by enabling CUA Mode (@pxref{CUA Bindings}).
e7379492 460
5a3e3201
EZ
461@kindex F10 @r{(MS-Windows)}
462@cindex menu bar access using keyboard @r{(MS-Windows)}
463 The @key{F10} key on Windows activates the menu bar in a way that
464makes it possible to use the menus without a mouse. In this mode, the
465arrow keys traverse the menus, @key{RET} selects a highlighted menu
466item, and @key{ESC} closes the menu.
467
a210f8e6
EZ
468@iftex
469@inforef{Windows Keyboard, , emacs}, for information about additional
470Windows-specific variables in this category.
471@end iftex
7d0a2d30 472@ifnottex
5a3e3201
EZ
473@vindex w32-alt-is-meta
474@cindex @code{Alt} key (MS-Windows)
475 By default, the key labeled @key{Alt} is mapped as the @key{META}
476key. If you wish it to produce the @code{Alt} modifier instead, set
477the variable @code{w32-alt-is-meta} to a @code{nil} value.
478
71ce5fd0
JB
479@findex w32-register-hot-key
480@findex w32-unregister-hot-key
2be6bfe2
EZ
481 MS-Windows reserves certain key combinations, such as
482@kbd{Alt-@key{TAB}}, for its own use. These key combinations are
483intercepted by the system before Emacs can see them. You can use the
484@code{w32-register-hot-key} function to allow a key sequence to be
485seen by Emacs instead of being grabbed by Windows. This functions
486registers a key sequence as a @dfn{hot key}, overriding the special
487meaning of that key sequence for Windows. (MS-Windows is told that
488the key sequence is a hot key only when one of the Emacs windows has
489focus, so that the special keys still have their usual meaning for
490other Windows applications.)
491
492 The argument to @code{w32-register-hot-key} must be a single key,
493with or without modifiers, in vector form that would be acceptable to
494@code{define-key}. The meta modifier is interpreted as the @key{ALT}
495key if @code{w32-alt-is-meta} is @code{t} (the default), and the hyper
496modifier is always interpreted as the Windows key (usually labeled
497with @key{start} and the Windows logo). If the function succeeds in
498registering the key sequence, it returns the hotkey ID, a number;
499otherwise it returns @code{nil}.
500
501@kindex M-TAB@r{, (MS-Windows)}
71ce5fd0
JB
502@cindex @kbd{M-@key{TAB}} vs @kbd{Alt-@key{TAB}} (MS-Windows)
503@cindex @kbd{Alt-@key{TAB}} vs @kbd{M-@key{TAB}} (MS-Windows)
504 For example, @code{(w32-register-hot-key [M-tab])} lets you use
2be6bfe2
EZ
505@kbd{M-TAB} normally in Emacs, for instance, to complete the word or
506symbol at point at top level, or to complete the current search string
507against previously sought strings during incremental search.
508
509 The function @code{w32-unregister-hot-key} reverses the effect of
510@code{w32-register-hot-key} for its argument key sequence.
71ce5fd0 511
5a3e3201
EZ
512@vindex w32-capslock-is-shiftlock
513 By default, the @key{CapsLock} key only affects normal character
514keys (it converts lower-case characters to their upper-case
515variants). However, if you set the variable
516@code{w32-capslock-is-shiftlock} to a non-@code{nil} value, the
517@key{CapsLock} key will affect non-character keys as well, as if you
518pressed the @key{Shift} key while typing the non-character key.
519
520@vindex w32-enable-caps-lock
521 If the variable @code{w32-enable-caps-lock} is set to a @code{nil}
522value, the @key{CapsLock} key produces the symbol @code{capslock}
523instead of the shifted version of they keys. The default value is
524@code{t}.
525
526@vindex w32-enable-num-lock
527@cindex keypad keys (MS-Windows)
528 Similarly, if @code{w32-enable-num-lock} is @code{nil}, the
529@key{NumLock} key will produce the symbol @code{kp-numlock}. The
530default is @code{t}, which causes @key{NumLock} to work as expected:
531toggle the meaning of the keys on the numeric keypad.
7d0a2d30 532@end ifnottex
5a3e3201 533
3a9d9327
EZ
534@vindex w32-apps-modifier
535 The variable @code{w32-apps-modifier} controls the effect of the
536@key{Apps} key (usually located between the right @key{Alt} and the
537right @key{Ctrl} keys). Its value can be one of the symbols
538@code{hyper}, @code{super}, @code{meta}, @code{alt}, @code{control},
539or @code{shift} for the respective modifier, or @code{nil} to appear
540as the key @code{apps}. The default is @code{nil}.
541
5a3e3201
EZ
542@vindex w32-lwindow-modifier
543@vindex w32-rwindow-modifier
544@vindex w32-scroll-lock-modifier
545 The variable @code{w32-lwindow-modifier} determines the effect of
546the left Windows key (usually labeled with @key{start} and the Windows
547logo). If its value is @code{nil} (the default), the key will produce
548the symbol @code{lwindow}. Setting it to one of the symbols
549@code{hyper}, @code{super}, @code{meta}, @code{alt}, @code{control},
550or @code{shift} will produce the respective modifier. A similar
551variable @code{w32-rwindow-modifier} controls the effect of the right
552Windows key, and @code{w32-scroll-lock-modifier} does the same for the
553@key{ScrLock} key. If these variables are set to @code{nil}, the
554right Windows key produces the symbol @code{rwindow} and @key{ScrLock}
555produces the symbol @code{scroll}.
556
557@vindex w32-pass-alt-to-system
37a75312
EZ
558@cindex Windows system menu
559@cindex @code{Alt} key invokes menu (Windows)
560 Emacs compiled as a native Windows application normally turns off
561the Windows feature that tapping the @key{ALT} key invokes the Windows
562menu. The reason is that the @key{ALT} serves as @key{META} in Emacs.
563When using Emacs, users often press the @key{META} key temporarily and
564then change their minds; if this has the effect of bringing up the
565Windows menu, it alters the meaning of subsequent commands. Many
566users find this frustrating.
567
568 You can re-enable Windows' default handling of tapping the @key{ALT}
569key by setting @code{w32-pass-alt-to-system} to a non-@code{nil}
570value.
571
7d0a2d30 572@ifnottex
5a3e3201
EZ
573@vindex w32-pass-lwindow-to-system
574@vindex w32-pass-rwindow-to-system
37a75312 575 The variables @code{w32-pass-lwindow-to-system} and
5a3e3201
EZ
576@code{w32-pass-rwindow-to-system} determine whether the respective
577keys are passed to Windows or swallowed by Emacs. If the value is
578@code{nil}, the respective key is silently swallowed by Emacs,
37a75312
EZ
579otherwise it is passed to Windows. The default is @code{t} for both
580of these variables. Passing each of these keys to Windows produces
581its normal effect: for example, @kbd{@key{Lwindow}} opens the
a26d12e3
EZ
582@code{Start} menu, etc.@footnote{
583Some combinations of the ``Windows'' keys with other keys are caught
584by Windows at low level in a way that Emacs currently cannot prevent.
585For example, @kbd{@key{Lwindow} r} always pops up the Windows
586@samp{Run} dialog. Customizing the value of
587@code{w32-phantom-key-code} might help in some cases, though.}
5a3e3201
EZ
588
589@vindex w32-recognize-altgr
590@kindex AltGr @r{(MS-Windows)}
591@cindex AltGr key (MS-Windows)
6041f4e1 592 The variable @code{w32-recognize-altgr} controls whether the
1521f22e
EZ
593@key{AltGr} key (if it exists on your keyboard), or its equivalent,
594the combination of the right @key{Alt} and left @key{Ctrl} keys
595pressed together, is recognized as the @key{AltGr} key. The default
596is @code{t}, which means these keys produce @code{AltGr}; setting it
597to @code{nil} causes @key{AltGr} or the equivalent key combination to
598be interpreted as the combination of @key{CTRL} and @key{META}
599modifiers.
7d0a2d30 600@end ifnottex
5a3e3201 601
37a75312
EZ
602@node Windows Mouse
603@section Mouse Usage on MS-Windows
604@cindex mouse, and MS-Windows
605
606 This section describes the Windows-specific variables related to
607mouse.
608
609@vindex w32-mouse-button-tolerance
610@cindex simulation of middle mouse button
611 The variable @code{w32-mouse-button-tolerance} specifies the
612time interval, in milliseconds, for faking middle mouse button press
613on 2-button mice. If both mouse buttons are depressed within this
614time interval, Emacs generates a middle mouse button click event
615instead of a double click on one of the buttons.
616
617@vindex w32-pass-extra-mouse-buttons-to-system
618 If the variable @code{w32-pass-extra-mouse-buttons-to-system} is
619non-@code{nil}, Emacs passes the fourth and fifth mouse buttons to
620Windows.
621
622@vindex w32-swap-mouse-buttons
623 The variable @code{w32-swap-mouse-buttons} controls which of the 3
624mouse buttons generates the @kbd{mouse-2} events. When it is
625@code{nil} (the default), the middle button generates @kbd{mouse-2}
626and the right button generates @kbd{mouse-3} events. If this variable
627is non-@code{nil}, the roles of these two buttons are reversed.
5a3e3201 628
ca2565b0 629@node Windows Processes
270c6692
EZ
630@section Subprocesses on Windows 9X/ME and Windows NT/2K/XP
631@cindex subprocesses on MS-Windows
ca2565b0 632
270c6692 633@cindex DOS applications, running from Emacs
049224f6 634 Emacs compiled as a native Windows application (as opposed to the DOS
ca2565b0
AI
635version) includes full support for asynchronous subprocesses.
636In the Windows version, synchronous and asynchronous subprocesses work
637fine on both
270c6692 638Windows 9X/ME and Windows NT/2K/XP as long as you run only 32-bit Windows
ca2565b0
AI
639applications. However, when you run a DOS application in a subprocess,
640you may encounter problems or be unable to run the application at all;
641and if you run two DOS applications at the same time in two
642subprocesses, you may have to reboot your system.
643
644Since the standard command interpreter (and most command line utilities)
270c6692 645on Windows 9X are DOS applications, these problems are significant when
ca2565b0
AI
646using that system. But there's nothing we can do about them; only
647Microsoft can fix them.
648
649If you run just one DOS application subprocess, the subprocess should
650work as expected as long as it is ``well-behaved'' and does not perform
651direct screen access or other unusual actions. If you have a CPU
652monitor application, your machine will appear to be 100% busy even when
653the DOS application is idle, but this is only an artifact of the way CPU
654monitors measure processor load.
655
656You must terminate the DOS application before you start any other DOS
657application in a different subprocess. Emacs is unable to interrupt or
658terminate a DOS subprocess. The only way you can terminate such a
659subprocess is by giving it a command that tells its program to exit.
660
661If you attempt to run two DOS applications at the same time in separate
662subprocesses, the second one that is started will be suspended until the
663first one finishes, even if either or both of them are asynchronous.
664
270c6692 665@cindex kill DOS application
ca2565b0
AI
666If you can go to the first subprocess, and tell it to exit, the second
667subprocess should continue normally. However, if the second subprocess
668is synchronous, Emacs itself will be hung until the first subprocess
669finishes. If it will not finish without user input, then you have no
ff43a665 670choice but to reboot if you are running on Windows 9X. If you are
270c6692
EZ
671running on Windows NT/2K/XP, you can use a process viewer application to kill
672the appropriate instance of NTVDM instead (this will terminate both DOS
ca2565b0
AI
673subprocesses).
674
ff43a665 675If you have to reboot Windows 9X in this situation, do not use the
ca2565b0
AI
676@code{Shutdown} command on the @code{Start} menu; that usually hangs the
677system. Instead, type @kbd{CTL-ALT-@key{DEL}} and then choose
678@code{Shutdown}. That usually works, although it may take a few minutes
679to do its job.
680
37a75312 681@vindex w32-quote-process-args
a210f8e6
EZ
682 The variable @code{w32-quote-process-args} controls how Emacs quotes
683the process arguments. Non-@code{nil} means quote with the @code{"}
684character. If the value is a character, use that character to escape
685any quote characters that appear; otherwise chose a suitable escape
686character based on the type of the program.
37a75312 687
ccff391f
EZ
688@ifnottex
689@findex w32-shell-execute
690 The function @code{w32-shell-execute} can be useful for writing
691customized commands that run MS-Windows applications registered to
692handle a certain standard Windows operation for a specific type of
693document or file. This function is a wrapper around the Windows
694@code{ShellExecute} API. See the MS-Windows API documentation for
695more details.
696@end ifnottex
697
270c6692
EZ
698@node Windows Printing
699@section Printing and MS-Windows
700
701 Printing commands, such as @code{lpr-buffer} (@pxref{Printing}) and
702@code{ps-print-buffer} (@pxref{PostScript}) work in MS-DOS and
703MS-Windows by sending the output to one of the printer ports, if a
704Posix-style @code{lpr} program is unavailable. The same Emacs
705variables control printing on all systems, but in some cases they have
706different default values on MS-DOS and MS-Windows.
707
708 Emacs on Windows automatically determines your default printer and
03bebefc 709sets the variable @code{printer-name} to that printer's name. But in
270c6692
EZ
710some rare cases this can fail, or you may wish to use a different
711printer from within Emacs. The rest of this section explains how to
712tell Emacs which printer to use.
713
03bebefc 714@vindex printer-name@r{, (MS-DOS/MS-Windows)}
270c6692
EZ
715 If you want to use your local printer, then set the Lisp variable
716@code{lpr-command} to @code{""} (its default value on Windows) and
717@code{printer-name} to the name of the printer port---for example,
718@code{"PRN"}, the usual local printer port or @code{"LPT2"}, or
719@code{"COM1"} for a serial printer. You can also set
720@code{printer-name} to a file name, in which case ``printed'' output
721is actually appended to that file. If you set @code{printer-name} to
722@code{"NUL"}, printed output is silently discarded (sent to the system
723null device).
724
725 You can also use a printer shared by another machine by setting
726@code{printer-name} to the UNC share name for that printer---for
727example, @code{"//joes_pc/hp4si"}. (It doesn't matter whether you use
728forward slashes or backslashes here.) To find out the names of shared
729printers, run the command @samp{net view} from the command prompt to
730obtain a list of servers, and @samp{net view @var{server-name}} to see
731the names of printers (and directories) shared by that server.
732Alternatively, click the @samp{Network Neighborhood} icon on your
733desktop, and look for machines which share their printers via the
734network.
735
736@cindex @samp{net use}, and printing on MS-Windows
737@cindex networked printers (MS-Windows)
738 If the printer doesn't appear in the output of @samp{net view}, or
739if setting @code{printer-name} to the UNC share name doesn't produce a
740hardcopy on that printer, you can use the @samp{net use} command to
741connect a local print port such as @code{"LPT2"} to the networked
742printer. For example, typing @kbd{net use LPT2: \\joes_pc\hp4si}@footnote{
743Note that the @samp{net use} command requires the UNC share name to be
744typed with the Windows-style backslashes, while the value of
745@code{printer-name} can be set with either forward- or backslashes.}
746causes Windows to @dfn{capture} the @code{LPT2} port and redirect the
747printed material to the printer connected to the machine @code{joes_pc}.
748After this command, setting @code{printer-name} to @code{"LPT2"}
749should produce the hardcopy on the networked printer.
750
751 With some varieties of Windows network software, you can instruct
752Windows to capture a specific printer port such as @code{"LPT2"}, and
753redirect it to a networked printer via the @w{@code{Control
754Panel->Printers}} applet instead of @samp{net use}.
755
756 If you set @code{printer-name} to a file name, it's best to use an
757absolute file name. Emacs changes the working directory according to
758the default directory of the current buffer, so if the file name in
759@code{printer-name} is relative, you will end up with several such
760files, each one in the directory of the buffer from which the printing
761was done.
762
375136cc
EZ
763 If the value of @code{printer-name} is correct, but printing does
764not produce the hardcopy on your printer, it is possible that your
765printer does not support printing plain text (some cheap printers omit
a210f8e6
EZ
766this functionality). In that case, try the PostScript print commands,
767described below.
375136cc 768
270c6692
EZ
769@findex print-buffer @r{(MS-DOS)}
770@findex print-region @r{(MS-DOS)}
771@vindex lpr-headers-switches @r{(MS-DOS)}
772 The commands @code{print-buffer} and @code{print-region} call the
773@code{pr} program, or use special switches to the @code{lpr} program, to
774produce headers on each printed page. MS-DOS and MS-Windows don't
775normally have these programs, so by default, the variable
776@code{lpr-headers-switches} is set so that the requests to print page
777headers are silently ignored. Thus, @code{print-buffer} and
778@code{print-region} produce the same output as @code{lpr-buffer} and
779@code{lpr-region}, respectively. If you do have a suitable @code{pr}
780program (for example, from GNU Coreutils), set
781@code{lpr-headers-switches} to @code{nil}; Emacs will then call
782@code{pr} to produce the page headers, and print the resulting output as
783specified by @code{printer-name}.
784
785@vindex print-region-function @r{(MS-DOS)}
786@cindex lpr usage under MS-DOS
787@vindex lpr-command @r{(MS-DOS)}
788@vindex lpr-switches @r{(MS-DOS)}
789 Finally, if you do have an @code{lpr} work-alike, you can set the
790variable @code{lpr-command} to @code{"lpr"}. Then Emacs will use
791@code{lpr} for printing, as on other systems. (If the name of the
792program isn't @code{lpr}, set @code{lpr-command} to specify where to
793find it.) The variable @code{lpr-switches} has its standard meaning
794when @code{lpr-command} is not @code{""}. If the variable
795@code{printer-name} has a string value, it is used as the value for the
796@code{-P} option to @code{lpr}, as on Unix.
797
798@findex ps-print-buffer @r{(MS-DOS)}
799@findex ps-spool-buffer @r{(MS-DOS)}
800@vindex ps-printer-name @r{(MS-DOS)}
801@vindex ps-lpr-command @r{(MS-DOS)}
802@vindex ps-lpr-switches @r{(MS-DOS)}
803 A parallel set of variables, @code{ps-lpr-command},
804@code{ps-lpr-switches}, and @code{ps-printer-name} (@pxref{PostScript
805Variables}), defines how PostScript files should be printed. These
806variables are used in the same way as the corresponding variables
807described above for non-PostScript printing. Thus, the value of
808@code{ps-printer-name} is used as the name of the device (or file) to
809which PostScript output is sent, just as @code{printer-name} is used
810for non-PostScript printing. (There are two distinct sets of
811variables in case you have two printers attached to two different
812ports, and only one of them is a PostScript printer.)
813
6c60bbdb 814@cindex Ghostscript, use for PostScript printing
270c6692
EZ
815 The default value of the variable @code{ps-lpr-command} is @code{""},
816which causes PostScript output to be sent to the printer port specified
817by @code{ps-printer-name}, but @code{ps-lpr-command} can also be set to
818the name of a program which will accept PostScript files. Thus, if you
819have a non-PostScript printer, you can set this variable to the name of
820a PostScript interpreter program (such as Ghostscript). Any switches
821that need to be passed to the interpreter program are specified using
822@code{ps-lpr-switches}. (If the value of @code{ps-printer-name} is a
823string, it will be added to the list of switches as the value for the
824@code{-P} option. This is probably only useful if you are using
825@code{lpr}, so when using an interpreter typically you would set
826@code{ps-printer-name} to something other than a string so it is
827ignored.)
828
829 For example, to use Ghostscript for printing on the system's default
830printer, put this in your @file{.emacs} file:
831
832@example
833(setq ps-printer-name t)
834(setq ps-lpr-command "D:/gs6.01/bin/gswin32c.exe")
835(setq ps-lpr-switches '("-q" "-dNOPAUSE" "-dBATCH"
8838673e
GM
836 "-sDEVICE=mswinpr2"
837 "-sPAPERSIZE=a4"))
270c6692
EZ
838@end example
839
840@noindent
841(This assumes that Ghostscript is installed in the
842@file{D:/gs6.01} directory.)
843
03bebefc
JR
844@node Windows Fonts
845@section Specifying Fonts on MS-Windows
846@cindex font specification (MS Windows)
847
848 Starting with Emacs 23, fonts are specified by their name, size
87e391bb
EZ
849and optional properties. The format for specifying fonts comes from the
850fontconfig library used in modern Free desktops:
03bebefc
JR
851
852@example
853 [Family[-PointSize]][:Option1=Value1[:Option2=Value2[...]]]
854@end example
855
856 The old XLFD based format is also supported for backwards compatibility.
857
87e391bb 858 Emacs 23 supports a number of backends. Currently, the @code{gdi}
ed6e7b11 859and @code{uniscribe} font backends are supported on Windows. The
86dca3e8 860@code{gdi} font backend is available on all versions of Windows, and
ed6e7b11 861supports all fonts that are natively supported by Windows. The
86dca3e8 862@code{uniscribe} font backend is available on Windows 2000 and later,
ed6e7b11 863and supports Truetype and Opentype fonts. Some languages requiring
86dca3e8 864complex layout can only be properly supported by the uniscribe
ed6e7b11 865backend. By default, both backends are enabled if supported, with
86dca3e8 866@code{uniscribe} taking priority over @code{gdi}.
03bebefc
JR
867
868@cindex font properties (MS Windows)
869@noindent
870Optional properties common to all font backends on MS-Windows are:
871
87e391bb
EZ
872@table @code
873
03bebefc 874@vindex font-weight-table @r{(MS-Windows)}
87e391bb
EZ
875@item weight
876Specifies the weight of the font. Special values @code{light},
877@code{medium}, @code{demibold}, @code{bold}, and @code{black} can be specified
878without @code{weight=} (e.g., @kbd{Courier New-12:bold}). Otherwise,
03bebefc 879the weight should be a numeric value between 100 and 900, or one of the
87e391bb 880named weights in @code{font-weight-table}. If unspecified, a regular font
03bebefc
JR
881is assumed.
882
883@vindex font-slant-table @r{(MS-Windows)}
87e391bb
EZ
884@item slant
885Specifies whether the font is italic. Special values
03bebefc 886@code{roman}, @code{italic} and @code{oblique} can be specified
87e391bb
EZ
887without @code{slant=} (e.g., @kbd{Courier New-12:italic}).
888Otherwise, the slant should be a numeric value, or one of the named
03bebefc 889slants in @code{font-slant-table}. On Windows, any slant above 150 is
87e391bb 890treated as italics, and anything below as roman.
03bebefc 891
87e391bb
EZ
892@item family
893Specifies the font family, but normally this will be specified
03bebefc
JR
894at the start of the font name.
895
87e391bb
EZ
896@item pixelsize
897Specifies the font size in pixels. This can be used instead
03bebefc
JR
898of the point size specified after the family name.
899
87e391bb
EZ
900@item adstyle
901Specifies additional style information for the font.
03bebefc 902On MS-Windows, the values @code{mono}, @code{sans}, @code{serif},
87e391bb 903@code{script} and @code{decorative} are recognized. These are most useful
03bebefc
JR
904as a fallback with the font family left unspecified.
905
906@vindex w32-charset-info-alist
87e391bb
EZ
907@item registry
908Specifies the character set registry that the font is
909expected to cover. Most Truetype and Opentype fonts will be unicode fonts
03bebefc
JR
910that cover several national character sets, but you can narrow down the
911selection of fonts to those that support a particular character set by
912using a specific registry from @code{w32-charset-info-alist} here.
913
87e391bb 914@item spacing
ed6e7b11 915Specifies how the font is spaced. The @code{p} spacing specifies
03bebefc
JR
916a proportional font, and @code{m} or @code{c} specify a monospaced font.
917
87e391bb
EZ
918@item foundry
919Not used on Windows, but for informational purposes and to
03bebefc
JR
920prevent problems with code that expects it to be set, is set internally to
921@code{raster} for bitmapped fonts, @code{outline} for scalable fonts,
922or @code{unknown} if the type cannot be determined as one of those.
87e391bb 923@end table
03bebefc
JR
924
925@cindex font properties (MS Windows gdi backend)
87e391bb
EZ
926Options specific to @code{GDI} fonts:
927
928@table @code
03bebefc
JR
929
930@cindex font scripts (MS Windows)
931@cindex font unicode subranges (MS Windows)
87e391bb
EZ
932@item script
933Specifies a unicode subrange the font should support.
934
935The following scripts are recognized on Windows: @code{latin}, @code{greek},
936@code{coptic}, @code{cyrillic}, @code{armenian}, @code{hebrew}, @code{arabic},
03bebefc
JR
937@code{syriac}, @code{nko}, @code{thaana}, @code{devanagari}, @code{bengali},
938@code{gurmukhi}, @code{gujarati}, @code{oriya}, @code{tamil}, @code{telugu},
939@code{kannada}, @code{malayam}, @code{sinhala}, @code{thai}, @code{lao},
940@code{tibetan}, @code{myanmar}, @code{georgian}, @code{hangul},
941@code{ethiopic}, @code{cherokee}, @code{canadian-aboriginal}, @code{ogham},
942@code{runic}, @code{khmer}, @code{mongolian}, @code{symbol}, @code{braille},
943@code{han}, @code{ideographic-description}, @code{cjk-misc}, @code{kana},
944@code{bopomofo}, @code{kanbun}, @code{yi}, @code{byzantine-musical-symbol},
945@code{musical-symbol}, and @code{mathematical}.
946
947@cindex font antialiasing (MS Windows)
87e391bb
EZ
948@item antialias
949Specifies the antialiasing to use for the font. The value @code{none}
03bebefc
JR
950means no antialiasing, @code{standard} means use standard antialiasing,
951@code{subpixel} means use subpixel antialiasing (known as Cleartype on Windows),
87e391bb
EZ
952and @code{natural} means use subpixel antialiasing with adjusted spacing between
953letters. If unspecified, the font will use the system default antialiasing.
954@end table
03bebefc 955
37a75312
EZ
956@node Windows Misc
957@section Miscellaneous Windows-specific features
958
959 This section describes miscellaneous Windows-specific features.
960
a210f8e6
EZ
961@vindex w32-use-visible-system-caret
962@cindex screen reader software, MS-Windows
963 The variable @code{w32-use-visible-system-caret} is a flag that
86dca3e8
JR
964determines whether to make the system caret visible. The default when
965no screen reader software is in use is @code{nil}, which means Emacs
966draws its own cursor to indicate the position of point. A
967non-@code{nil} value means Emacs will indicate point location by the
968system caret; this facilitates use of screen reader software, and is
969the default when such software is detected when running Emacs.
970When this variable is non-@code{nil}, other variables affecting the
971cursor display have no effect.
a210f8e6
EZ
972
973@iftex
974@inforef{Windows Misc, , emacs}, for information about additional
975Windows-specific variables in this category.
976@end iftex
977
7d0a2d30 978@ifnottex
37a75312
EZ
979@vindex w32-grab-focus-on-raise
980@cindex frame focus policy, MS-Windows
981 The variable @code{w32-grab-focus-on-raise}, if set to a
982non-@code{nil} value causes a frame to grab focus when it is raised.
983The default is @code{t}, which fits well with the Windows default
984click-to-focus policy.
7d0a2d30 985@end ifnottex
37a75312 986
5798efc8
EZ
987@ifnottex
988@include msdog-xtra.texi
989@end ifnottex