Mercurial > hg > xemacs-beta
comparison man/lispref/x-windows.texi @ 0:376386a54a3c r19-14
Import from CVS: tag r19-14
author | cvs |
---|---|
date | Mon, 13 Aug 2007 08:45:50 +0200 |
parents | |
children | 11cf20601dec |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:376386a54a3c |
---|---|
1 @c -*-texinfo-*- | |
2 @c This is part of the XEmacs Lisp Reference Manual. | |
3 @c Copyright (C) 1990, 1991, 1992, 1993 Free Software Foundation, Inc. | |
4 @c See the file lispref.texi for copying conditions. | |
5 @setfilename ../../info/x-windows.texinfo | |
6 @node X-Windows, ToolTalk Support, System Interface, Top | |
7 @chapter Functions Specific to the X Window System | |
8 @cindex X | |
9 @cindex X-Windows | |
10 | |
11 @c This section is largely different from the one in FSF Emacs. | |
12 | |
13 XEmacs provides the concept of @dfn{devices}, which generalizes | |
14 connections to an X server, a TTY device, etc. Most information about | |
15 an X server that XEmacs is connected to can be determined through | |
16 general console and device functions. @xref{Consoles and Devices}. | |
17 However, there are some features of the X Window System that do not | |
18 generalize well, and they are covered specially here. | |
19 | |
20 @menu | |
21 * X Selections:: Transferring text to and from other X clients. | |
22 * X Server:: Information about the X server connected to | |
23 a particular device. | |
24 * X Miscellaneous:: Other X-specific functions and variables. | |
25 @end menu | |
26 | |
27 @node X Selections | |
28 @section X Selections | |
29 @cindex selection (for X windows) | |
30 | |
31 The X server records a set of @dfn{selections} which permit transfer of | |
32 data between application programs. The various selections are | |
33 distinguished by @dfn{selection types}, represented in XEmacs by | |
34 symbols. X clients including XEmacs can read or set the selection for | |
35 any given type. | |
36 | |
37 @defun x-own-selection data &optional type | |
38 This function sets a ``selection'' in the X server. It takes two | |
39 arguments: a value, @var{data}, and the selection type @var{type} to | |
40 assign it to. @var{data} may be a string, a cons of two markers, or an | |
41 extent. In the latter cases, the selection is considered to be the text | |
42 between the markers, or between the extent's endpoints. | |
43 | |
44 Each possible @var{type} has its own selection value, which changes | |
45 independently. The usual values of @var{type} are @code{PRIMARY} and | |
46 @code{SECONDARY}; these are symbols with upper-case names, in accord | |
47 with X Windows conventions. The default is @code{PRIMARY}. | |
48 | |
49 (In FSF Emacs, this function is called @code{x-set-selection} and | |
50 takes different arguments.) | |
51 @end defun | |
52 | |
53 @defun x-get-selection | |
54 This function accesses selections set up by XEmacs or by other X | |
55 clients. It returns the value of the current primary selection. | |
56 @end defun | |
57 | |
58 @defun x-disown-selection &optional secondary-p | |
59 Assuming we own the selection, this function disowns it. If | |
60 @var{secondary-p} is non-@code{nil}, the secondary selection instead of | |
61 the primary selection is discarded. | |
62 @end defun | |
63 | |
64 @cindex cut buffer | |
65 The X server also has a set of numbered @dfn{cut buffers} which can | |
66 store text or other data being moved between applications. Cut buffers | |
67 are considered obsolete, but XEmacs supports them for the sake of X | |
68 clients that still use them. | |
69 | |
70 @defun x-get-cutbuffer &optional n | |
71 This function returns the contents of cut buffer number @var{n}. (This | |
72 function is called @code{x-get-cut-buffer} in FSF Emacs.) | |
73 @end defun | |
74 | |
75 @defun x-store-cutbuffer string | |
76 This function stores @var{string} into the first cut buffer (cut buffer | |
77 0), moving the other values down through the series of cut buffers, | |
78 kill-ring-style. (This function is called @code{x-set-cut-buffer} in FSF | |
79 Emacs.) | |
80 @end defun | |
81 | |
82 @node X Server | |
83 @section X Server | |
84 | |
85 This section describes how to access and change the overall status of | |
86 the X server XEmacs is using. | |
87 | |
88 @menu | |
89 * Resources:: Getting resource values from the server. | |
90 * Server Data:: Getting info about the X server. | |
91 * Grabs:: Restricting access to the server by other apps. | |
92 @end menu | |
93 | |
94 @node Resources | |
95 @subsection Resources | |
96 | |
97 @defun default-x-device | |
98 This function return the default X device for resourcing. This is the | |
99 first-created X device that still exists. | |
100 @end defun | |
101 | |
102 @defun x-get-resource name class type &optional locale device noerror | |
103 This function retrieves a resource value from the X resource manager. | |
104 | |
105 @itemize @bullet | |
106 @item | |
107 The first arg is the name of the resource to retrieve, such as | |
108 @samp{"font"}. | |
109 | |
110 @item | |
111 The second arg is the class of the resource to retrieve, like | |
112 @samp{"Font"}. | |
113 | |
114 @item | |
115 The third arg should be one of the symbols @code{string}, | |
116 @code{integer}, @code{natnum}, or @code{boolean}, specifying the type of | |
117 object that the database is searched for. | |
118 | |
119 @item | |
120 The fourth arg is the locale to search for the resources on, and can | |
121 currently be a a buffer, a frame, a device, or the symbol @code{global}. | |
122 If omitted, it defaults to @code{global}. | |
123 | |
124 @item | |
125 The fifth arg is the device to search for the resources on. (The | |
126 resource database for a particular device is constructed by combining | |
127 non-device- specific resources such any command-line resources specified | |
128 and any app-defaults files found [or the fallback resources supplied by | |
129 XEmacs, if no app-defaults file is found] with device-specific resources | |
130 such as those supplied using @samp{xrdb}.) If omitted, it defaults to | |
131 the device of @var{locale}, if a device can be derived (i.e. if | |
132 @var{locale} is a frame or device), and otherwise defaults to the value | |
133 of @code{default-x-device}. | |
134 | |
135 @item | |
136 The sixth arg @var{noerror}, if non-@code{nil}, means do not signal an | |
137 error if a bogus resource specification was retrieved (e.g. if a | |
138 non-integer was given when an integer was requested). In this case, a | |
139 warning is issued instead. | |
140 @end itemize | |
141 | |
142 The resource names passed to this function are looked up relative to the | |
143 locale. | |
144 | |
145 If you want to search for a subresource, you just need to specify the | |
146 resource levels in @var{name} and @var{class}. For example, @var{name} | |
147 could be @samp{"modeline.attributeFont"}, and @var{class} | |
148 @samp{"Face.AttributeFont"}. | |
149 | |
150 Specifically, | |
151 | |
152 @enumerate | |
153 @item | |
154 If @var{locale} is a buffer, a call | |
155 | |
156 @example | |
157 @code{(x-get-resource "foreground" "Foreground" 'string @var{some-buffer})} | |
158 @end example | |
159 | |
160 is an interface to a C call something like | |
161 | |
162 @example | |
163 @code{XrmGetResource (db, "xemacs.buffer.@var{buffer-name}.foreground", | |
164 "Emacs.EmacsLocaleType.EmacsBuffer.Foreground", | |
165 "String");} | |
166 @end example | |
167 | |
168 @item | |
169 If @var{locale} is a frame, a call | |
170 | |
171 @example | |
172 @code{(x-get-resource "foreground" "Foreground" 'string @var{some-frame})} | |
173 @end example | |
174 | |
175 is an interface to a C call something like | |
176 @example | |
177 | |
178 @code{XrmGetResource (db, "xemacs.frame.@var{frame-name}.foreground", | |
179 "Emacs.EmacsLocaleType.EmacsFrame.Foreground", | |
180 "String");} | |
181 @end example | |
182 | |
183 @item | |
184 If @var{locale} is a device, a call | |
185 | |
186 @example | |
187 @code{(x-get-resource "foreground" "Foreground" 'string @var{some-device})} | |
188 @end example | |
189 | |
190 is an interface to a C call something like | |
191 | |
192 @example | |
193 @code{XrmGetResource (db, "xemacs.device.@var{device-name}.foreground", | |
194 "Emacs.EmacsLocaleType.EmacsDevice.Foreground", | |
195 "String");} | |
196 @end example | |
197 | |
198 @item | |
199 If @var{locale} is the symbol @code{global}, a call | |
200 | |
201 @example | |
202 @code{(x-get-resource "foreground" "Foreground" 'string 'global)} | |
203 @end example | |
204 | |
205 is an interface to a C call something like | |
206 | |
207 @example | |
208 @code{XrmGetResource (db, "xemacs.foreground", | |
209 "Emacs.Foreground", | |
210 "String");} | |
211 @end example | |
212 @end enumerate | |
213 | |
214 Note that for @code{global}, no prefix is added other than that of the | |
215 application itself; thus, you can use this locale to retrieve arbitrary | |
216 application resources, if you really want to. | |
217 | |
218 The returned value of this function is @code{nil} if the queried | |
219 resource is not found. If @var{type} is @code{string}, a string is | |
220 returned, and if it is @code{integer}, an integer is returned. If | |
221 @var{type} is @code{boolean}, then the returned value is the list | |
222 @code{(t)} for true, @code{(nil)} for false, and is @code{nil} to mean | |
223 ``unspecified''. | |
224 @end defun | |
225 | |
226 @defun x-put-resource resource-line &optional device | |
227 This function adds a resource to the resource database for @var{device}. | |
228 @var{resource-line} specifies the resource to add and should be a | |
229 standard resource specification. | |
230 @end defun | |
231 | |
232 @defvar x-emacs-application-class | |
233 This variable holds The X application class of the XEmacs process. This | |
234 controls, among other things, the name of the ``app-defaults'' file that | |
235 XEmacs will use. For changes to this variable to take effect, they must | |
236 be made before the connection to the X server is initialized, that is, | |
237 this variable may only be changed before XEmacs is dumped, or by setting | |
238 it in the file @file{lisp/term/x-win.el}. | |
239 @end defvar | |
240 | |
241 @node Server Data | |
242 @subsection Data about the X Server | |
243 | |
244 This section describes functions and a variable that you can use to | |
245 get information about the capabilities and origin of the X server | |
246 corresponding to a particular device. The device argument is generally | |
247 optional and defaults to the selected device. | |
248 | |
249 @defun x-server-version &optional device | |
250 This function returns the list of version numbers of the X server | |
251 @var{device} is on. The returned value is a list of three integers: the | |
252 major and minor version numbers of the X protocol in use, and the | |
253 vendor-specific release number. | |
254 @end defun | |
255 | |
256 @defun x-server-vendor &optional device | |
257 This function returns the vendor supporting the X server @var{device} is | |
258 on. | |
259 @end defun | |
260 | |
261 @defun x-display-visual-class &optional device | |
262 This function returns the visual class of the display @var{device} is | |
263 on. The value is one of the symbols @code{static-gray}, | |
264 @code{gray-scale}, @code{static-color}, @code{pseudo-color}, | |
265 @code{true-color}, and @code{direct-color}. (Note that this is different | |
266 from previous versions of XEmacs, which returned @code{StaticGray}, | |
267 @code{GrayScale}, etc.) | |
268 @end defun | |
269 | |
270 @node Grabs | |
271 @subsection Restricting Access to the Server by Other Apps | |
272 | |
273 @defun x-grab-keyboard &optional device | |
274 This function grabs the keyboard on the given device (defaulting to the | |
275 selected one). So long as the keyboard is grabbed, all keyboard events | |
276 will be delivered to XEmacs -- it is not possible for other X clients to | |
277 eavesdrop on them. Ungrab the keyboard with @code{x-ungrab-keyboard} | |
278 (use an @code{unwind-protect}). Returns @code{t} if the grab was | |
279 successful; @code{nil} otherwise. | |
280 @end defun | |
281 | |
282 @defun x-ungrab-keyboard &optional device | |
283 This function releases a keyboard grab made with @code{x-grab-keyboard}. | |
284 @end defun | |
285 | |
286 @defun x-grab-pointer &optional device cursor ignore-keyboard | |
287 This function grabs the pointer and restricts it to its current window. | |
288 If optional @var{device} argument is @code{nil}, the selected device | |
289 will be used. If optional @var{cursor} argument is non-@code{nil}, | |
290 change the pointer shape to that until @code{x-ungrab-pointer} is called | |
291 (it should be an object returned by the @code{make-cursor} function). | |
292 If the second optional argument @var{ignore-keyboard} is non-@code{nil}, | |
293 ignore all keyboard events during the grab. Returns @code{t} if the | |
294 grab is successful, @code{nil} otherwise. | |
295 @end defun | |
296 | |
297 @defun x-ungrab-pointer &optional device | |
298 This function releases a pointer grab made with @code{x-grab-pointer}. | |
299 If optional first arg @var{device} is @code{nil} the selected device is | |
300 used. If it is @code{t} the pointer will be released on all X devices. | |
301 @end defun | |
302 | |
303 @node X Miscellaneous | |
304 @section Miscellaneous X Functions and Variables | |
305 | |
306 @defvar x-bitmap-file-path | |
307 This variable holds a list of the directories in which X bitmap files | |
308 may be found. If @code{nil}, this is initialized from the | |
309 @samp{"*bitmapFilePath"} resource. This is used by the | |
310 @code{make-image-instance} function (however, note that if the | |
311 environment variable @samp{XBMLANGPATH} is set, it is consulted first). | |
312 @end defvar | |
313 | |
314 @defvar x-library-search-path | |
315 This variable holds the search path used by @code{read-color} to find | |
316 @file{rgb.txt}. | |
317 @end defvar | |
318 | |
319 @defun x-valid-keysym-name-p keysym | |
320 This function returns true if @var{keysym} names a keysym that the X | |
321 library knows about. Valid keysyms are listed in the files | |
322 @file{/usr/include/X11/keysymdef.h} and in | |
323 @file{/usr/lib/X11/XKeysymDB}, or whatever the equivalents are on your | |
324 system. | |
325 @end defun | |
326 | |
327 @defun x-window-id &optional frame | |
328 This function returns the ID of the X11 window. This gives us a chance | |
329 to manipulate the Emacs window from within a different program. Since | |
330 the ID is an unsigned long, we return it as a string. | |
331 @end defun | |
332 | |
333 @defvar x-allow-sendevents | |
334 If non-@code{nil}, synthetic events are allowed. @code{nil} means | |
335 they are ignored. Beware: allowing XEmacs to process SendEvents opens a | |
336 big security hole. | |
337 @end defvar | |
338 | |
339 @defun x-debug-mode arg &optional device | |
340 With a true arg, make the connection to the X server synchronous. With | |
341 false, make it asynchronous. Synchronous connections are much slower, | |
342 but are useful for debugging. (If you get X errors, make the connection | |
343 synchronous, and use a debugger to set a breakpoint on | |
344 @code{x_error_handler}. Your backtrace of the C stack will now be | |
345 useful. In asynchronous mode, the stack above @code{x_error_handler} | |
346 isn't helpful because of buffering.) If @var{device} is not specified, | |
347 the selected device is assumed. | |
348 | |
349 Calling this function is the same as calling the C function | |
350 @code{XSynchronize}, or starting the program with the @samp{-sync} | |
351 command line argument. | |
352 @end defun | |
353 | |
354 @defvar x-debug-events | |
355 If non-zero, debug information about events that XEmacs sees is | |
356 displayed. Information is displayed on stderr. Currently defined | |
357 values are: | |
358 | |
359 @itemize @bullet | |
360 @item | |
361 1 == non-verbose output | |
362 @item | |
363 2 == verbose output | |
364 @end itemize | |
365 @end defvar |