428
|
1 @c -*-texinfo-*-
|
|
2 @c This is part of the XEmacs Lisp Reference Manual.
|
|
3 @c Copyright (C) 1995, 1996 Ben Wing.
|
|
4 @c See the file lispref.texi for copying conditions.
|
|
5 @setfilename ../../info/consoles-devices.info
|
|
6 @node Consoles and Devices, Positions, Frames, top
|
|
7 @chapter Consoles and Devices
|
|
8 @cindex devices
|
|
9 @cindex consoles
|
|
10
|
|
11 A @dfn{console} is an object representing a single input connection
|
|
12 to XEmacs, such as an X display or a TTY connection. It is possible
|
|
13 for XEmacs to have frames on multiple consoles at once (even on
|
440
|
14 heterogeneous types---you can simultaneously have a frame on an
|
428
|
15 X display and a TTY connection). Normally, there is only one
|
|
16 console in existence.
|
|
17
|
|
18 A @dfn{device} is an object representing a single output device, such
|
|
19 as a particular screen on an X display. (Usually there is exactly one
|
|
20 device per X console connection, but there may be more than one if you
|
|
21 have a multi-headed X display. For TTY connections, there is always
|
|
22 exactly one device per console.)
|
|
23
|
|
24 Each device has one or more @dfn{frames} in which text can be
|
|
25 displayed. For X displays and the like, a frame corresponds to the
|
|
26 normal window-system concept of a window. Frames can overlap, be
|
|
27 displayed at various locations within the display, be resized, etc. For
|
|
28 TTY, only one frame can be displayed at a time, and it occupies the
|
|
29 entire TTY display area.
|
|
30
|
|
31 However, you can still define multiple frames and switch between them.
|
|
32 Their contents are entirely separate from each other. These sorts of
|
|
33 frames resemble the ``virtual console'' capability provided under Linux
|
|
34 or the multiple screens provided by the multiplexing program
|
|
35 @samp{screen} under Unix.
|
|
36
|
|
37 When you start up XEmacs, an initial console and device are created to
|
|
38 receive input and display frames on. This will either be an X display
|
|
39 or a TTY connection, depending on what mode you started XEmacs in (this
|
|
40 is determined by the @samp{DISPLAY} environment variable, the
|
|
41 @samp{-nw}, @samp{-t} and @samp{-display} command-line options, etc.).
|
|
42
|
|
43 You can connect to other X displays and TTY connections by creating
|
|
44 new console objects, and to other X screens on an existing display by
|
|
45 creating new device objects, as described below. Many functions (for
|
|
46 example the frame-creation functions) take an optional device argument
|
|
47 specifying which device the function pertains to. If the argument is
|
|
48 omitted, it defaults to the selected device (see below).
|
|
49
|
|
50 @defun consolep object
|
|
51 This returns non-@code{nil} if @var{object} is a console.
|
|
52 @end defun
|
|
53
|
|
54 @defun devicep object
|
|
55 This returns non-@code{nil} if @var{object} is a device.
|
|
56 @end defun
|
|
57
|
|
58 @menu
|
|
59 * Basic Console Functions:: Functions for working with consoles.
|
|
60 * Basic Device Functions:: Functions for working with devices.
|
|
61 * Console Types and Device Classes::
|
|
62 I/O and color characteristics.
|
|
63 * Connecting to a Console or Device::
|
|
64 * The Selected Console and Device::
|
|
65 * Console and Device I/O:: Controlling input and output.
|
|
66 @end menu
|
|
67
|
|
68 @node Basic Console Functions
|
|
69 @section Basic Console Functions
|
|
70
|
|
71 @defun console-list
|
|
72 This function returns a list of all existing consoles.
|
|
73 @end defun
|
|
74
|
|
75 @defun console-device-list &optional console
|
|
76 This function returns a list of all devices on @var{console}. If
|
|
77 @var{console} is @code{nil}, the selected console will be used.
|
|
78 @end defun
|
|
79
|
|
80 @node Basic Device Functions
|
|
81 @section Basic Device Functions
|
|
82
|
|
83 @defun device-list
|
|
84 This function returns a list of all existing devices.
|
|
85 @end defun
|
|
86
|
|
87 @defun device-or-frame-p object
|
|
88 This function returns non-@code{nil} if @var{object} is a device or
|
|
89 frame. This function is useful because devices and frames are similar
|
|
90 in many respects and many functions can operate on either one.
|
|
91 @end defun
|
|
92
|
444
|
93 @defun device-frame-list &optional device
|
428
|
94 This function returns a list of all frames on @var{device}.
|
444
|
95 @var{device} defaults to the currently selected device.
|
428
|
96 @end defun
|
|
97
|
444
|
98 @defun frame-device &optional frame
|
428
|
99 This function returns the device that @var{frame} is on.
|
444
|
100 @var{frame} defaults to the currently selected frame.
|
428
|
101 @end defun
|
|
102
|
|
103 @node Console Types and Device Classes
|
|
104 @section Console Types and Device Classes
|
|
105
|
|
106 Every device is of a particular @dfn{type}, which describes how the
|
|
107 connection to that device is made and how the device operates, and
|
|
108 a particular @dfn{class}, which describes other characteristics of
|
|
109 the device (currently, the color capabilities of the device).
|
|
110
|
|
111 The currently-defined device types are
|
|
112
|
|
113 @table @code
|
|
114 @item x
|
|
115 A connection to an X display (such as @samp{willow:0}).
|
|
116
|
|
117 @item tty
|
|
118 A connection to a tty (such as @samp{/dev/ttyp3}).
|
|
119
|
|
120 @item stream
|
|
121 A stdio connection. This describes a device for which input and output
|
|
122 is only possible in a stream-like fashion, such as when XEmacs in running
|
|
123 in batch mode. The very first device created by XEmacs is a terminal
|
|
124 device and is used to print out messages of various sorts (for example,
|
|
125 the help message when you use the @samp{-help} command-line option).
|
|
126 @end table
|
|
127
|
|
128 The currently-defined device classes are
|
|
129 @table @code
|
|
130 @item color
|
|
131 A color device.
|
|
132
|
|
133 @item grayscale
|
|
134 A grayscale device (a device that can display multiple shades of gray,
|
|
135 but no color).
|
|
136
|
|
137 @item mono
|
|
138 A device that can only display two colors (e.g. black and white).
|
|
139 @end table
|
|
140
|
444
|
141 @defun device-type &optional device
|
428
|
142 This function returns the type of @var{device}. This is a symbol whose
|
444
|
143 name is one of the device types mentioned above. @var{device} defaults
|
|
144 to the selected device.
|
428
|
145 @end defun
|
|
146
|
|
147 @defun device-or-frame-type device-or-frame
|
|
148 This function returns the type of @var{device-or-frame}.
|
|
149 @end defun
|
|
150
|
444
|
151 @defun device-class &optional device
|
428
|
152 This function returns the class (color behavior) of @var{device}. This
|
|
153 is a symbol whose name is one of the device classes mentioned above.
|
|
154 @end defun
|
|
155
|
|
156 @defun valid-device-type-p device-type
|
|
157 This function returns whether @var{device-type} (which should be a symbol)
|
442
|
158 specifies a valid device type.
|
428
|
159 @end defun
|
|
160
|
|
161 @defun valid-device-class-p device-class
|
|
162 This function returns whether @var{device-class} (which should be a symbol)
|
442
|
163 specifies a valid device class.
|
428
|
164 @end defun
|
|
165
|
|
166 @defvar terminal-device
|
|
167 This variable holds the initial terminal device object, which
|
|
168 represents XEmacs's stdout.
|
|
169 @end defvar
|
|
170
|
|
171 @node Connecting to a Console or Device
|
|
172 @section Connecting to a Console or Device
|
|
173
|
444
|
174 @defun make-device type connection &optional props
|
428
|
175 This function creates a new device.
|
|
176 @end defun
|
|
177
|
|
178 The following two functions create devices of specific types and are
|
|
179 written in terms of @code{make-device}.
|
|
180
|
444
|
181 @defun make-tty-device &optional tty terminal-type
|
428
|
182 This function creates a new tty device on @var{tty}. This also creates
|
|
183 the tty's first frame. @var{tty} should be a string giving the name of
|
|
184 a tty device file (e.g. @samp{/dev/ttyp3} under SunOS et al.), as
|
|
185 returned by the @samp{tty} command issued from the Unix shell. A value
|
|
186 of @code{nil} means use the stdin and stdout as passed to XEmacs from
|
|
187 the shell. If @var{terminal-type} is non-@code{nil}, it should be a
|
|
188 string specifying the type of the terminal attached to the specified
|
|
189 tty. If it is @code{nil}, the terminal type will be inferred from the
|
|
190 @samp{TERM} environment variable.
|
|
191 @end defun
|
|
192
|
|
193 @defun make-x-device &optional display argv-list
|
|
194 This function creates a new device connected to @var{display}. Optional
|
|
195 argument @var{argv-list} is a list of strings describing command line
|
|
196 options.
|
|
197 @end defun
|
|
198
|
444
|
199 @defun delete-device device &optional force
|
428
|
200 This function deletes @var{device}, permanently eliminating it from use.
|
|
201 This disconnects XEmacs's connection to the device.
|
|
202 @end defun
|
|
203
|
|
204 @defvar create-device-hook
|
|
205 This variable, if non-@code{nil}, should contain a list of functions,
|
|
206 which are called when a device is created.
|
|
207 @end defvar
|
|
208
|
|
209 @defvar delete-device-hook
|
|
210 This variable, if non-@code{nil}, should contain a list of functions,
|
|
211 which are called when a device is deleted.
|
|
212 @end defvar
|
|
213
|
|
214 @defun console-live-p object
|
|
215 This function returns non-@code{nil} if @var{object} is a console that
|
|
216 has not been deleted.
|
|
217 @end defun
|
|
218
|
|
219 @defun device-live-p object
|
|
220 This function returns non-@code{nil} if @var{object} is a device that
|
|
221 has not been deleted.
|
|
222 @end defun
|
|
223
|
|
224 @defun device-x-display device
|
|
225 This function returns the X display which @var{device} is connected to,
|
|
226 if @var{device} is an X device.
|
|
227 @end defun
|
|
228
|
|
229 @node The Selected Console and Device
|
|
230 @section The Selected Console and Device
|
|
231
|
|
232 @defun select-console console
|
|
233 This function selects the console @var{console}. Subsequent editing
|
|
234 commands apply to its selected device, selected frame, and selected
|
|
235 window. The selection of @var{console} lasts until the next time the
|
|
236 user does something to select a different console, or until the next
|
|
237 time this function is called.
|
|
238 @end defun
|
|
239
|
|
240 @defun selected-console
|
|
241 This function returns the console which is currently active.
|
|
242 @end defun
|
|
243
|
|
244 @defun select-device device
|
|
245 This function selects the device @var{device}.
|
|
246 @end defun
|
|
247
|
|
248 @defun selected-device &optional console
|
|
249 This function returns the device which is currently active. If optional
|
|
250 @var{console} is non-@code{nil}, this function returns the device that
|
|
251 would be currently active if @var{console} were the selected console.
|
|
252 @end defun
|
|
253
|
|
254 @node Console and Device I/O
|
|
255 @section Console and Device I/O
|
|
256
|
|
257 @defun console-disable-input console
|
|
258 This function disables input on console @var{console}.
|
|
259 @end defun
|
|
260
|
|
261 @defun console-enable-input console
|
|
262 This function enables input on console @var{console}.
|
|
263 @end defun
|
|
264
|
|
265 Each device has a @dfn{baud rate} value associated with it.
|
|
266 On most systems, changing this value will affect the amount of padding
|
|
267 and other strategic decisions made during redisplay.
|
|
268
|
|
269 @defun device-baud-rate &optional device
|
|
270 This function returns the output baud rate of @var{device}.
|
|
271 @end defun
|
|
272
|
|
273 @defun set-device-baud-rate device rate
|
|
274 This function sets the output baud rate of @var{device} to @var{rate}.
|
|
275 @end defun
|