Commit | Line | Data |
---|---|---|
cf07d2bd | 1 | ;;; x-win.el --- parse relevant switches and set up for X -*-coding: iso-2022-7bit;-*- |
2fe590dc | 2 | |
ae10d597 | 3 | ;; Copyright (C) 1993, 1994, 2001, 2002 Free Software Foundation, Inc. |
5cdb3f1e ER |
4 | |
5 | ;; Author: FSF | |
cf07d2bd | 6 | ;; Keywords: terminals, i18n |
5cdb3f1e | 7 | |
2fe590dc EN |
8 | ;; This file is part of GNU Emacs. |
9 | ||
10 | ;; GNU Emacs is free software; you can redistribute it and/or modify | |
11 | ;; it under the terms of the GNU General Public License as published by | |
12 | ;; the Free Software Foundation; either version 2, or (at your option) | |
13 | ;; any later version. | |
14 | ||
15 | ;; GNU Emacs is distributed in the hope that it will be useful, | |
16 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
17 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
18 | ;; GNU General Public License for more details. | |
19 | ||
20 | ;; You should have received a copy of the GNU General Public License | |
21 | ;; along with GNU Emacs; see the file COPYING. If not, write to the | |
22 | ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
23 | ;; Boston, MA 02111-1307, USA. | |
63f77899 | 24 | |
5cdb3f1e | 25 | ;;; Commentary: |
63f77899 JB |
26 | |
27 | ;; X-win.el: this file is loaded from ../lisp/startup.el when it recognizes | |
28 | ;; that X windows are to be used. Command line switches are parsed and those | |
29 | ;; pertaining to X are processed and removed from the command line. The | |
30 | ;; X display is opened and hooks are set for popping up the initial window. | |
31 | ||
32 | ;; startup.el will then examine startup files, and eventually call the hooks | |
cf07d2bd | 33 | ;; which create the first window(s). |
5cdb3f1e ER |
34 | |
35 | ;;; Code: | |
63f77899 JB |
36 | \f |
37 | ;; These are the standard X switches from the Xt Initialize.c file of | |
38 | ;; Release 4. | |
39 | ||
40 | ;; Command line Resource Manager string | |
41 | ||
42 | ;; +rv *reverseVideo | |
43 | ;; +synchronous *synchronous | |
44 | ;; -background *background | |
45 | ;; -bd *borderColor | |
46 | ;; -bg *background | |
47 | ;; -bordercolor *borderColor | |
48 | ;; -borderwidth .borderWidth | |
49 | ;; -bw .borderWidth | |
50 | ;; -display .display | |
51 | ;; -fg *foreground | |
52 | ;; -fn *font | |
53 | ;; -font *font | |
54 | ;; -foreground *foreground | |
55 | ;; -geometry .geometry | |
db176f55 JB |
56 | ;; -i .iconType |
57 | ;; -itype .iconType | |
63f77899 JB |
58 | ;; -iconic .iconic |
59 | ;; -name .name | |
60 | ;; -reverse *reverseVideo | |
61 | ;; -rv *reverseVideo | |
62 | ;; -selectionTimeout .selectionTimeout | |
63 | ;; -synchronous *synchronous | |
63f77899 JB |
64 | ;; -xrm |
65 | ||
63f77899 JB |
66 | ;; An alist of X options and the function which handles them. See |
67 | ;; ../startup.el. | |
68 | ||
63c86e17 | 69 | (if (not (eq window-system 'x)) |
800642d2 | 70 | (error "%s: Loading x-win.el but not compiled for X" (invocation-name))) |
db95369b | 71 | |
0cc89026 | 72 | (require 'frame) |
3eb43f71 | 73 | (require 'mouse) |
b16795eb | 74 | (require 'scroll-bar) |
ffe1dd7a JB |
75 | (require 'faces) |
76 | (require 'select) | |
290cb602 | 77 | (require 'menu-bar) |
6acdd93e | 78 | (require 'fontset) |
63c86e17 | 79 | |
19b08de9 RS |
80 | (defvar x-invocation-args) |
81 | ||
f6f6d98c RS |
82 | (defvar x-command-line-resources nil) |
83 | ||
63f77899 JB |
84 | ;; Handler for switches of the form "-switch value" or "-switch". |
85 | (defun x-handle-switch (switch) | |
80128ceb | 86 | (let ((aelt (assoc switch command-line-x-option-alist))) |
63f77899 | 87 | (if aelt |
80128ceb RS |
88 | (let ((param (nth 3 aelt)) |
89 | (value (nth 4 aelt))) | |
90 | (if value | |
91 | (setq default-frame-alist | |
92 | (cons (cons param value) | |
93 | default-frame-alist)) | |
0cc89026 | 94 | (setq default-frame-alist |
80128ceb RS |
95 | (cons (cons param |
96 | (car x-invocation-args)) | |
97 | default-frame-alist) | |
98 | x-invocation-args (cdr x-invocation-args))))))) | |
99 | ||
100 | ;; Handler for switches of the form "-switch n" | |
101 | (defun x-handle-numeric-switch (switch) | |
102 | (let ((aelt (assoc switch command-line-x-option-alist))) | |
103 | (if aelt | |
104 | (let ((param (nth 3 aelt))) | |
0cc89026 | 105 | (setq default-frame-alist |
80128ceb RS |
106 | (cons (cons param |
107 | (string-to-int (car x-invocation-args))) | |
0cc89026 | 108 | default-frame-alist) |
80128ceb RS |
109 | x-invocation-args |
110 | (cdr x-invocation-args)))))) | |
63f77899 | 111 | |
2f9b363a EZ |
112 | ;; Handle options that apply to initial frame only |
113 | (defun x-handle-initial-switch (switch) | |
114 | (let ((aelt (assoc switch command-line-x-option-alist))) | |
115 | (if aelt | |
116 | (let ((param (nth 3 aelt)) | |
117 | (value (nth 4 aelt))) | |
118 | (if value | |
119 | (setq initial-frame-alist | |
120 | (cons (cons param value) | |
121 | initial-frame-alist)) | |
122 | (setq initial-frame-alist | |
123 | (cons (cons param | |
124 | (car x-invocation-args)) | |
125 | initial-frame-alist) | |
126 | x-invocation-args (cdr x-invocation-args))))))) | |
127 | ||
ef599142 RS |
128 | ;; Make -iconic apply only to the initial frame! |
129 | (defun x-handle-iconic (switch) | |
130 | (setq initial-frame-alist | |
131 | (cons '(visibility . icon) initial-frame-alist))) | |
132 | ||
800642d2 JB |
133 | ;; Handle the -xrm option. |
134 | (defun x-handle-xrm-switch (switch) | |
2025ddca GM |
135 | (unless (consp x-invocation-args) |
136 | (error "%s: missing argument to `%s' option" (invocation-name) switch)) | |
137 | (setq x-command-line-resources | |
138 | (if (null x-command-line-resources) | |
139 | (car x-invocation-args) | |
140 | (concat x-command-line-resources "\n" (car x-invocation-args)))) | |
f6f6d98c RS |
141 | (setq x-invocation-args (cdr x-invocation-args))) |
142 | ||
63f77899 JB |
143 | ;; Handle the geometry option |
144 | (defun x-handle-geometry (switch) | |
ea8d3061 RS |
145 | (let* ((geo (x-parse-geometry (car x-invocation-args))) |
146 | (left (assq 'left geo)) | |
147 | (top (assq 'top geo)) | |
148 | (height (assq 'height geo)) | |
149 | (width (assq 'width geo))) | |
150 | (if (or height width) | |
151 | (setq default-frame-alist | |
152 | (append default-frame-alist | |
bfabe882 RS |
153 | '((user-size . t)) |
154 | (if height (list height)) | |
155 | (if width (list width))) | |
156 | initial-frame-alist | |
157 | (append initial-frame-alist | |
ea8d3061 RS |
158 | '((user-size . t)) |
159 | (if height (list height)) | |
160 | (if width (list width))))) | |
161 | (if (or left top) | |
162 | (setq initial-frame-alist | |
163 | (append initial-frame-alist | |
164 | '((user-position . t)) | |
165 | (if left (list left)) | |
166 | (if top (list top))))) | |
167 | (setq x-invocation-args (cdr x-invocation-args)))) | |
63f77899 | 168 | |
66f229be RS |
169 | ;; Handle the -name option. Set the variable x-resource-name |
170 | ;; to the option's operand; set the name of | |
800642d2 | 171 | ;; the initial frame, too. |
66f229be | 172 | (defun x-handle-name-switch (switch) |
800642d2 JB |
173 | (or (consp x-invocation-args) |
174 | (error "%s: missing argument to `%s' option" (invocation-name) switch)) | |
175 | (setq x-resource-name (car x-invocation-args) | |
176 | x-invocation-args (cdr x-invocation-args)) | |
66f229be RS |
177 | (setq initial-frame-alist (cons (cons 'name x-resource-name) |
178 | initial-frame-alist))) | |
800642d2 | 179 | |
63f77899 | 180 | (defvar x-display-name nil |
0cc89026 | 181 | "The X display name specifying server and X frame.") |
63f77899 JB |
182 | |
183 | (defun x-handle-display (switch) | |
184 | (setq x-display-name (car x-invocation-args) | |
d98f0b87 RS |
185 | x-invocation-args (cdr x-invocation-args)) |
186 | ;; Make subshell programs see the same DISPLAY value Emacs really uses. | |
187 | ;; Note that this isn't completely correct, since Emacs can use | |
188 | ;; multiple displays. However, there is no way to tell an already | |
189 | ;; running subshell which display the user is currently typing on. | |
190 | (setenv "DISPLAY" x-display-name)) | |
63f77899 | 191 | |
8769d648 | 192 | (defun x-handle-args (args) |
dc20df95 RS |
193 | "Process the X-related command line options in ARGS. |
194 | This is done before the user's startup file is loaded. They are copied to | |
80128ceb | 195 | `x-invocation-args', from which the X-related things are extracted, first |
8769d648 | 196 | the switch (e.g., \"-fg\") in the following code, and possible values |
a4e104bf | 197 | \(e.g., \"black\") in the option handler code (e.g., x-handle-switch). |
80128ceb RS |
198 | This function returns ARGS minus the arguments that have been processed." |
199 | ;; We use ARGS to accumulate the args that we don't handle here, to return. | |
63c86e17 JB |
200 | (setq x-invocation-args args |
201 | args nil) | |
0dd96d4c RS |
202 | (while (and x-invocation-args |
203 | (not (equal (car x-invocation-args) "--"))) | |
63c86e17 | 204 | (let* ((this-switch (car x-invocation-args)) |
e491912f | 205 | (orig-this-switch this-switch) |
80128ceb | 206 | completion argval aelt handler) |
63c86e17 | 207 | (setq x-invocation-args (cdr x-invocation-args)) |
e491912f RS |
208 | ;; Check for long options with attached arguments |
209 | ;; and separate out the attached option argument into argval. | |
210 | (if (string-match "^--[^=]*=" this-switch) | |
211 | (setq argval (substring this-switch (match-end 0)) | |
212 | this-switch (substring this-switch 0 (1- (match-end 0))))) | |
80128ceb RS |
213 | ;; Complete names of long options. |
214 | (if (string-match "^--" this-switch) | |
215 | (progn | |
216 | (setq completion (try-completion this-switch command-line-x-option-alist)) | |
217 | (if (eq completion t) | |
218 | ;; Exact match for long option. | |
219 | nil | |
220 | (if (stringp completion) | |
221 | (let ((elt (assoc completion command-line-x-option-alist))) | |
222 | ;; Check for abbreviated long option. | |
223 | (or elt | |
224 | (error "Option `%s' is ambiguous" this-switch)) | |
225 | (setq this-switch completion)))))) | |
226 | (setq aelt (assoc this-switch command-line-x-option-alist)) | |
227 | (if aelt (setq handler (nth 2 aelt))) | |
228 | (if handler | |
e491912f RS |
229 | (if argval |
230 | (let ((x-invocation-args | |
231 | (cons argval x-invocation-args))) | |
80128ceb RS |
232 | (funcall handler this-switch)) |
233 | (funcall handler this-switch)) | |
234 | (setq args (cons orig-this-switch args))))) | |
0dd96d4c | 235 | (nconc (nreverse args) x-invocation-args)) |
941a391a JD |
236 | |
237 | ;; Handle the --smid switch. This is used by the session manager | |
238 | ;; to give us back our session id we had on the previous run. | |
239 | (defun x-handle-smid (switch) | |
240 | (or (consp x-invocation-args) | |
241 | (error "%s: missing argument to `%s' option" (invocation-name) switch)) | |
242 | (setq x-session-previous-id (car x-invocation-args) | |
243 | x-invocation-args (cdr x-invocation-args))) | |
244 | ||
245 | (defvar emacs-save-session-functions nil | |
c3ef5084 SM |
246 | "Special hook run when a save-session event occurs. |
247 | The functions do not get any argument. | |
941a391a JD |
248 | Functions can return non-nil to inform the session manager that the |
249 | window system shutdown should be aborted. | |
250 | ||
251 | See also `emacs-session-save'.") | |
252 | ||
253 | (defun emacs-session-filename (session-id) | |
254 | "Construct a filename to save the session in based on SESSION-ID. | |
255 | If the directory ~/.emacs.d exists, we make a filename in there, otherwise | |
256 | a file in the home directory." | |
257 | (let ((basename (concat "session." session-id)) | |
258 | (emacs-dir "~/.emacs.d/")) | |
259 | (expand-file-name (if (file-directory-p emacs-dir) | |
260 | (concat emacs-dir basename) | |
261 | (concat "~/.emacs-" basename))))) | |
db95369b | 262 | |
941a391a JD |
263 | (defun emacs-session-save () |
264 | "This function is called when the window system is shutting down. | |
265 | If this function returns non-nil, the window system shutdown is cancelled. | |
266 | ||
267 | When a session manager tells Emacs that the window system is shutting | |
268 | down, this function is called. It calls the functions in the hook | |
269 | `emacs-save-session-functions'. Functions are called with the current | |
270 | buffer set to a temporary buffer. Functions should use `insert' to insert | |
271 | lisp code to save the session state. The buffer is saved | |
272 | in a file in the home directory of the user running Emacs. The file | |
273 | is evaluated when Emacs is restarted by the session manager. | |
274 | ||
275 | If any of the functions returns non-nil, no more functions are called | |
276 | and this function returns non-nil. This will inform the session manager | |
277 | that it should abort the window system shutdown." | |
278 | (let ((filename (emacs-session-filename x-session-id)) | |
279 | (buf (get-buffer-create (concat " *SES " x-session-id)))) | |
280 | (when (file-exists-p filename) | |
281 | (delete-file filename)) | |
282 | (with-current-buffer buf | |
283 | (let ((cancel-shutdown (condition-case nil | |
3842fde1 | 284 | ;; A return of t means cancel the shutdown. |
db95369b | 285 | (run-hook-with-args-until-success |
941a391a JD |
286 | 'emacs-save-session-functions) |
287 | (error t)))) | |
288 | (unless cancel-shutdown | |
289 | (write-file filename)) | |
290 | (kill-buffer buf) | |
291 | cancel-shutdown)))) | |
292 | ||
1e4f6cec | 293 | (defun emacs-session-restore (previous-session-id) |
941a391a JD |
294 | "Restore the Emacs session if started by a session manager. |
295 | The file saved by `emacs-session-save' is evaluated and deleted if it | |
296 | exists." | |
1e4f6cec | 297 | (let ((filename (emacs-session-filename previous-session-id))) |
941a391a JD |
298 | (when (file-exists-p filename) |
299 | (load-file filename) | |
300 | (delete-file filename) | |
301 | (message "Restored session data")))) | |
302 | ||
db95369b JB |
303 | |
304 | ||
63f77899 JB |
305 | \f |
306 | ;; | |
307 | ;; Standard X cursor shapes, courtesy of Mr. Fox, who wanted ALL of them. | |
308 | ;; | |
309 | ||
310 | (defconst x-pointer-X-cursor 0) | |
311 | (defconst x-pointer-arrow 2) | |
312 | (defconst x-pointer-based-arrow-down 4) | |
313 | (defconst x-pointer-based-arrow-up 6) | |
314 | (defconst x-pointer-boat 8) | |
315 | (defconst x-pointer-bogosity 10) | |
316 | (defconst x-pointer-bottom-left-corner 12) | |
317 | (defconst x-pointer-bottom-right-corner 14) | |
318 | (defconst x-pointer-bottom-side 16) | |
319 | (defconst x-pointer-bottom-tee 18) | |
320 | (defconst x-pointer-box-spiral 20) | |
321 | (defconst x-pointer-center-ptr 22) | |
322 | (defconst x-pointer-circle 24) | |
323 | (defconst x-pointer-clock 26) | |
324 | (defconst x-pointer-coffee-mug 28) | |
325 | (defconst x-pointer-cross 30) | |
326 | (defconst x-pointer-cross-reverse 32) | |
327 | (defconst x-pointer-crosshair 34) | |
328 | (defconst x-pointer-diamond-cross 36) | |
329 | (defconst x-pointer-dot 38) | |
330 | (defconst x-pointer-dotbox 40) | |
331 | (defconst x-pointer-double-arrow 42) | |
332 | (defconst x-pointer-draft-large 44) | |
333 | (defconst x-pointer-draft-small 46) | |
334 | (defconst x-pointer-draped-box 48) | |
335 | (defconst x-pointer-exchange 50) | |
336 | (defconst x-pointer-fleur 52) | |
337 | (defconst x-pointer-gobbler 54) | |
338 | (defconst x-pointer-gumby 56) | |
339 | (defconst x-pointer-hand1 58) | |
340 | (defconst x-pointer-hand2 60) | |
341 | (defconst x-pointer-heart 62) | |
342 | (defconst x-pointer-icon 64) | |
343 | (defconst x-pointer-iron-cross 66) | |
344 | (defconst x-pointer-left-ptr 68) | |
345 | (defconst x-pointer-left-side 70) | |
346 | (defconst x-pointer-left-tee 72) | |
347 | (defconst x-pointer-leftbutton 74) | |
348 | (defconst x-pointer-ll-angle 76) | |
349 | (defconst x-pointer-lr-angle 78) | |
350 | (defconst x-pointer-man 80) | |
351 | (defconst x-pointer-middlebutton 82) | |
352 | (defconst x-pointer-mouse 84) | |
353 | (defconst x-pointer-pencil 86) | |
354 | (defconst x-pointer-pirate 88) | |
355 | (defconst x-pointer-plus 90) | |
356 | (defconst x-pointer-question-arrow 92) | |
357 | (defconst x-pointer-right-ptr 94) | |
358 | (defconst x-pointer-right-side 96) | |
359 | (defconst x-pointer-right-tee 98) | |
360 | (defconst x-pointer-rightbutton 100) | |
361 | (defconst x-pointer-rtl-logo 102) | |
362 | (defconst x-pointer-sailboat 104) | |
363 | (defconst x-pointer-sb-down-arrow 106) | |
364 | (defconst x-pointer-sb-h-double-arrow 108) | |
365 | (defconst x-pointer-sb-left-arrow 110) | |
366 | (defconst x-pointer-sb-right-arrow 112) | |
367 | (defconst x-pointer-sb-up-arrow 114) | |
368 | (defconst x-pointer-sb-v-double-arrow 116) | |
369 | (defconst x-pointer-shuttle 118) | |
370 | (defconst x-pointer-sizing 120) | |
371 | (defconst x-pointer-spider 122) | |
372 | (defconst x-pointer-spraycan 124) | |
373 | (defconst x-pointer-star 126) | |
374 | (defconst x-pointer-target 128) | |
375 | (defconst x-pointer-tcross 130) | |
376 | (defconst x-pointer-top-left-arrow 132) | |
377 | (defconst x-pointer-top-left-corner 134) | |
378 | (defconst x-pointer-top-right-corner 136) | |
379 | (defconst x-pointer-top-side 138) | |
380 | (defconst x-pointer-top-tee 140) | |
381 | (defconst x-pointer-trek 142) | |
382 | (defconst x-pointer-ul-angle 144) | |
383 | (defconst x-pointer-umbrella 146) | |
384 | (defconst x-pointer-ur-angle 148) | |
385 | (defconst x-pointer-watch 150) | |
386 | (defconst x-pointer-xterm 152) | |
387 | \f | |
388 | ;; | |
389 | ;; Available colors | |
390 | ;; | |
391 | ||
38fb1ad4 GM |
392 | (defvar x-colors '("LightGreen" |
393 | "light green" | |
394 | "DarkRed" | |
395 | "dark red" | |
396 | "DarkMagenta" | |
397 | "dark magenta" | |
398 | "DarkCyan" | |
399 | "dark cyan" | |
400 | "DarkBlue" | |
401 | "dark blue" | |
402 | "DarkGray" | |
403 | "dark gray" | |
404 | "DarkGrey" | |
405 | "dark grey" | |
406 | "grey100" | |
407 | "gray100" | |
408 | "grey99" | |
409 | "gray99" | |
410 | "grey98" | |
411 | "gray98" | |
412 | "grey97" | |
413 | "gray97" | |
414 | "grey96" | |
415 | "gray96" | |
416 | "grey95" | |
417 | "gray95" | |
418 | "grey94" | |
419 | "gray94" | |
420 | "grey93" | |
421 | "gray93" | |
422 | "grey92" | |
423 | "gray92" | |
424 | "grey91" | |
425 | "gray91" | |
426 | "grey90" | |
427 | "gray90" | |
428 | "grey89" | |
429 | "gray89" | |
430 | "grey88" | |
431 | "gray88" | |
432 | "grey87" | |
433 | "gray87" | |
434 | "grey86" | |
435 | "gray86" | |
436 | "grey85" | |
437 | "gray85" | |
438 | "grey84" | |
439 | "gray84" | |
440 | "grey83" | |
441 | "gray83" | |
442 | "grey82" | |
443 | "gray82" | |
444 | "grey81" | |
445 | "gray81" | |
446 | "grey80" | |
447 | "gray80" | |
448 | "grey79" | |
449 | "gray79" | |
450 | "grey78" | |
451 | "gray78" | |
452 | "grey77" | |
453 | "gray77" | |
454 | "grey76" | |
455 | "gray76" | |
456 | "grey75" | |
457 | "gray75" | |
458 | "grey74" | |
459 | "gray74" | |
460 | "grey73" | |
461 | "gray73" | |
462 | "grey72" | |
463 | "gray72" | |
464 | "grey71" | |
465 | "gray71" | |
466 | "grey70" | |
467 | "gray70" | |
468 | "grey69" | |
469 | "gray69" | |
470 | "grey68" | |
471 | "gray68" | |
472 | "grey67" | |
473 | "gray67" | |
474 | "grey66" | |
475 | "gray66" | |
476 | "grey65" | |
477 | "gray65" | |
478 | "grey64" | |
479 | "gray64" | |
480 | "grey63" | |
481 | "gray63" | |
482 | "grey62" | |
483 | "gray62" | |
484 | "grey61" | |
485 | "gray61" | |
486 | "grey60" | |
487 | "gray60" | |
488 | "grey59" | |
489 | "gray59" | |
490 | "grey58" | |
491 | "gray58" | |
492 | "grey57" | |
493 | "gray57" | |
494 | "grey56" | |
495 | "gray56" | |
496 | "grey55" | |
497 | "gray55" | |
498 | "grey54" | |
499 | "gray54" | |
500 | "grey53" | |
501 | "gray53" | |
502 | "grey52" | |
503 | "gray52" | |
504 | "grey51" | |
505 | "gray51" | |
506 | "grey50" | |
507 | "gray50" | |
508 | "grey49" | |
509 | "gray49" | |
510 | "grey48" | |
511 | "gray48" | |
512 | "grey47" | |
513 | "gray47" | |
514 | "grey46" | |
515 | "gray46" | |
516 | "grey45" | |
517 | "gray45" | |
518 | "grey44" | |
519 | "gray44" | |
520 | "grey43" | |
521 | "gray43" | |
522 | "grey42" | |
523 | "gray42" | |
524 | "grey41" | |
525 | "gray41" | |
526 | "grey40" | |
527 | "gray40" | |
528 | "grey39" | |
529 | "gray39" | |
530 | "grey38" | |
531 | "gray38" | |
532 | "grey37" | |
533 | "gray37" | |
534 | "grey36" | |
535 | "gray36" | |
536 | "grey35" | |
537 | "gray35" | |
538 | "grey34" | |
539 | "gray34" | |
540 | "grey33" | |
541 | "gray33" | |
542 | "grey32" | |
543 | "gray32" | |
544 | "grey31" | |
545 | "gray31" | |
546 | "grey30" | |
547 | "gray30" | |
548 | "grey29" | |
549 | "gray29" | |
550 | "grey28" | |
551 | "gray28" | |
552 | "grey27" | |
553 | "gray27" | |
554 | "grey26" | |
555 | "gray26" | |
556 | "grey25" | |
557 | "gray25" | |
558 | "grey24" | |
559 | "gray24" | |
560 | "grey23" | |
561 | "gray23" | |
562 | "grey22" | |
563 | "gray22" | |
564 | "grey21" | |
565 | "gray21" | |
566 | "grey20" | |
567 | "gray20" | |
568 | "grey19" | |
569 | "gray19" | |
570 | "grey18" | |
571 | "gray18" | |
572 | "grey17" | |
573 | "gray17" | |
574 | "grey16" | |
575 | "gray16" | |
576 | "grey15" | |
577 | "gray15" | |
578 | "grey14" | |
579 | "gray14" | |
580 | "grey13" | |
581 | "gray13" | |
582 | "grey12" | |
583 | "gray12" | |
584 | "grey11" | |
585 | "gray11" | |
586 | "grey10" | |
587 | "gray10" | |
588 | "grey9" | |
589 | "gray9" | |
590 | "grey8" | |
591 | "gray8" | |
592 | "grey7" | |
593 | "gray7" | |
594 | "grey6" | |
595 | "gray6" | |
596 | "grey5" | |
597 | "gray5" | |
598 | "grey4" | |
599 | "gray4" | |
600 | "grey3" | |
601 | "gray3" | |
602 | "grey2" | |
603 | "gray2" | |
604 | "grey1" | |
605 | "gray1" | |
606 | "grey0" | |
607 | "gray0" | |
608 | "thistle4" | |
609 | "thistle3" | |
610 | "thistle2" | |
611 | "thistle1" | |
612 | "MediumPurple4" | |
613 | "MediumPurple3" | |
614 | "MediumPurple2" | |
615 | "MediumPurple1" | |
616 | "purple4" | |
617 | "purple3" | |
618 | "purple2" | |
619 | "purple1" | |
620 | "DarkOrchid4" | |
621 | "DarkOrchid3" | |
622 | "DarkOrchid2" | |
623 | "DarkOrchid1" | |
624 | "MediumOrchid4" | |
625 | "MediumOrchid3" | |
626 | "MediumOrchid2" | |
627 | "MediumOrchid1" | |
628 | "plum4" | |
629 | "plum3" | |
630 | "plum2" | |
631 | "plum1" | |
632 | "orchid4" | |
633 | "orchid3" | |
634 | "orchid2" | |
635 | "orchid1" | |
636 | "magenta4" | |
637 | "magenta3" | |
638 | "magenta2" | |
639 | "magenta1" | |
640 | "VioletRed4" | |
641 | "VioletRed3" | |
642 | "VioletRed2" | |
643 | "VioletRed1" | |
644 | "maroon4" | |
645 | "maroon3" | |
646 | "maroon2" | |
647 | "maroon1" | |
648 | "PaleVioletRed4" | |
649 | "PaleVioletRed3" | |
650 | "PaleVioletRed2" | |
651 | "PaleVioletRed1" | |
652 | "LightPink4" | |
653 | "LightPink3" | |
654 | "LightPink2" | |
655 | "LightPink1" | |
656 | "pink4" | |
657 | "pink3" | |
658 | "pink2" | |
659 | "pink1" | |
660 | "HotPink4" | |
661 | "HotPink3" | |
662 | "HotPink2" | |
663 | "HotPink1" | |
664 | "DeepPink4" | |
665 | "DeepPink3" | |
666 | "DeepPink2" | |
667 | "DeepPink1" | |
668 | "red4" | |
669 | "red3" | |
670 | "red2" | |
671 | "red1" | |
672 | "OrangeRed4" | |
673 | "OrangeRed3" | |
674 | "OrangeRed2" | |
675 | "OrangeRed1" | |
676 | "tomato4" | |
677 | "tomato3" | |
678 | "tomato2" | |
679 | "tomato1" | |
680 | "coral4" | |
681 | "coral3" | |
682 | "coral2" | |
683 | "coral1" | |
684 | "DarkOrange4" | |
685 | "DarkOrange3" | |
686 | "DarkOrange2" | |
687 | "DarkOrange1" | |
688 | "orange4" | |
689 | "orange3" | |
690 | "orange2" | |
691 | "orange1" | |
692 | "LightSalmon4" | |
693 | "LightSalmon3" | |
694 | "LightSalmon2" | |
695 | "LightSalmon1" | |
696 | "salmon4" | |
697 | "salmon3" | |
698 | "salmon2" | |
699 | "salmon1" | |
700 | "brown4" | |
701 | "brown3" | |
702 | "brown2" | |
703 | "brown1" | |
704 | "firebrick4" | |
705 | "firebrick3" | |
706 | "firebrick2" | |
707 | "firebrick1" | |
708 | "chocolate4" | |
709 | "chocolate3" | |
710 | "chocolate2" | |
711 | "chocolate1" | |
712 | "tan4" | |
713 | "tan3" | |
714 | "tan2" | |
715 | "tan1" | |
716 | "wheat4" | |
717 | "wheat3" | |
718 | "wheat2" | |
719 | "wheat1" | |
720 | "burlywood4" | |
721 | "burlywood3" | |
722 | "burlywood2" | |
723 | "burlywood1" | |
724 | "sienna4" | |
725 | "sienna3" | |
726 | "sienna2" | |
727 | "sienna1" | |
728 | "IndianRed4" | |
729 | "IndianRed3" | |
730 | "IndianRed2" | |
731 | "IndianRed1" | |
732 | "RosyBrown4" | |
733 | "RosyBrown3" | |
734 | "RosyBrown2" | |
735 | "RosyBrown1" | |
736 | "DarkGoldenrod4" | |
737 | "DarkGoldenrod3" | |
738 | "DarkGoldenrod2" | |
739 | "DarkGoldenrod1" | |
740 | "goldenrod4" | |
741 | "goldenrod3" | |
742 | "goldenrod2" | |
743 | "goldenrod1" | |
744 | "gold4" | |
745 | "gold3" | |
746 | "gold2" | |
747 | "gold1" | |
748 | "yellow4" | |
749 | "yellow3" | |
750 | "yellow2" | |
751 | "yellow1" | |
752 | "LightYellow4" | |
753 | "LightYellow3" | |
754 | "LightYellow2" | |
755 | "LightYellow1" | |
756 | "LightGoldenrod4" | |
757 | "LightGoldenrod3" | |
758 | "LightGoldenrod2" | |
759 | "LightGoldenrod1" | |
760 | "khaki4" | |
761 | "khaki3" | |
762 | "khaki2" | |
763 | "khaki1" | |
764 | "DarkOliveGreen4" | |
765 | "DarkOliveGreen3" | |
766 | "DarkOliveGreen2" | |
767 | "DarkOliveGreen1" | |
768 | "OliveDrab4" | |
769 | "OliveDrab3" | |
770 | "OliveDrab2" | |
771 | "OliveDrab1" | |
772 | "chartreuse4" | |
773 | "chartreuse3" | |
774 | "chartreuse2" | |
775 | "chartreuse1" | |
776 | "green4" | |
777 | "green3" | |
778 | "green2" | |
779 | "green1" | |
780 | "SpringGreen4" | |
781 | "SpringGreen3" | |
782 | "SpringGreen2" | |
783 | "SpringGreen1" | |
784 | "PaleGreen4" | |
785 | "PaleGreen3" | |
786 | "PaleGreen2" | |
787 | "PaleGreen1" | |
788 | "SeaGreen4" | |
789 | "SeaGreen3" | |
790 | "SeaGreen2" | |
791 | "SeaGreen1" | |
792 | "DarkSeaGreen4" | |
793 | "DarkSeaGreen3" | |
794 | "DarkSeaGreen2" | |
795 | "DarkSeaGreen1" | |
796 | "aquamarine4" | |
797 | "aquamarine3" | |
798 | "aquamarine2" | |
799 | "aquamarine1" | |
800 | "DarkSlateGray4" | |
801 | "DarkSlateGray3" | |
802 | "DarkSlateGray2" | |
803 | "DarkSlateGray1" | |
804 | "cyan4" | |
805 | "cyan3" | |
806 | "cyan2" | |
807 | "cyan1" | |
808 | "turquoise4" | |
809 | "turquoise3" | |
810 | "turquoise2" | |
811 | "turquoise1" | |
812 | "CadetBlue4" | |
813 | "CadetBlue3" | |
814 | "CadetBlue2" | |
815 | "CadetBlue1" | |
816 | "PaleTurquoise4" | |
817 | "PaleTurquoise3" | |
818 | "PaleTurquoise2" | |
819 | "PaleTurquoise1" | |
820 | "LightCyan4" | |
821 | "LightCyan3" | |
822 | "LightCyan2" | |
823 | "LightCyan1" | |
824 | "LightBlue4" | |
825 | "LightBlue3" | |
826 | "LightBlue2" | |
827 | "LightBlue1" | |
828 | "LightSteelBlue4" | |
829 | "LightSteelBlue3" | |
830 | "LightSteelBlue2" | |
831 | "LightSteelBlue1" | |
832 | "SlateGray4" | |
833 | "SlateGray3" | |
834 | "SlateGray2" | |
835 | "SlateGray1" | |
836 | "LightSkyBlue4" | |
837 | "LightSkyBlue3" | |
838 | "LightSkyBlue2" | |
839 | "LightSkyBlue1" | |
840 | "SkyBlue4" | |
841 | "SkyBlue3" | |
842 | "SkyBlue2" | |
843 | "SkyBlue1" | |
844 | "DeepSkyBlue4" | |
845 | "DeepSkyBlue3" | |
846 | "DeepSkyBlue2" | |
847 | "DeepSkyBlue1" | |
848 | "SteelBlue4" | |
849 | "SteelBlue3" | |
850 | "SteelBlue2" | |
851 | "SteelBlue1" | |
852 | "DodgerBlue4" | |
853 | "DodgerBlue3" | |
854 | "DodgerBlue2" | |
855 | "DodgerBlue1" | |
856 | "blue4" | |
857 | "blue3" | |
858 | "blue2" | |
859 | "blue1" | |
860 | "RoyalBlue4" | |
861 | "RoyalBlue3" | |
862 | "RoyalBlue2" | |
863 | "RoyalBlue1" | |
864 | "SlateBlue4" | |
865 | "SlateBlue3" | |
866 | "SlateBlue2" | |
867 | "SlateBlue1" | |
868 | "azure4" | |
869 | "azure3" | |
870 | "azure2" | |
871 | "azure1" | |
872 | "MistyRose4" | |
873 | "MistyRose3" | |
874 | "MistyRose2" | |
875 | "MistyRose1" | |
876 | "LavenderBlush4" | |
877 | "LavenderBlush3" | |
878 | "LavenderBlush2" | |
879 | "LavenderBlush1" | |
880 | "honeydew4" | |
881 | "honeydew3" | |
882 | "honeydew2" | |
883 | "honeydew1" | |
884 | "ivory4" | |
885 | "ivory3" | |
886 | "ivory2" | |
887 | "ivory1" | |
888 | "cornsilk4" | |
889 | "cornsilk3" | |
890 | "cornsilk2" | |
891 | "cornsilk1" | |
892 | "LemonChiffon4" | |
893 | "LemonChiffon3" | |
894 | "LemonChiffon2" | |
895 | "LemonChiffon1" | |
896 | "NavajoWhite4" | |
897 | "NavajoWhite3" | |
898 | "NavajoWhite2" | |
899 | "NavajoWhite1" | |
900 | "PeachPuff4" | |
901 | "PeachPuff3" | |
902 | "PeachPuff2" | |
903 | "PeachPuff1" | |
904 | "bisque4" | |
905 | "bisque3" | |
906 | "bisque2" | |
907 | "bisque1" | |
908 | "AntiqueWhite4" | |
909 | "AntiqueWhite3" | |
910 | "AntiqueWhite2" | |
911 | "AntiqueWhite1" | |
912 | "seashell4" | |
913 | "seashell3" | |
914 | "seashell2" | |
915 | "seashell1" | |
916 | "snow4" | |
917 | "snow3" | |
918 | "snow2" | |
919 | "snow1" | |
920 | "thistle" | |
921 | "MediumPurple" | |
922 | "medium purple" | |
923 | "purple" | |
924 | "BlueViolet" | |
925 | "blue violet" | |
926 | "DarkViolet" | |
927 | "dark violet" | |
928 | "DarkOrchid" | |
929 | "dark orchid" | |
930 | "MediumOrchid" | |
931 | "medium orchid" | |
932 | "orchid" | |
933 | "plum" | |
934 | "violet" | |
935 | "magenta" | |
936 | "VioletRed" | |
937 | "violet red" | |
938 | "MediumVioletRed" | |
939 | "medium violet red" | |
940 | "maroon" | |
941 | "PaleVioletRed" | |
942 | "pale violet red" | |
943 | "LightPink" | |
944 | "light pink" | |
945 | "pink" | |
946 | "DeepPink" | |
947 | "deep pink" | |
948 | "HotPink" | |
949 | "hot pink" | |
950 | "red" | |
951 | "OrangeRed" | |
952 | "orange red" | |
953 | "tomato" | |
954 | "LightCoral" | |
955 | "light coral" | |
63f77899 | 956 | "coral" |
38fb1ad4 GM |
957 | "DarkOrange" |
958 | "dark orange" | |
959 | "orange" | |
960 | "LightSalmon" | |
961 | "light salmon" | |
962 | "salmon" | |
963 | "DarkSalmon" | |
964 | "dark salmon" | |
63f77899 | 965 | "brown" |
38fb1ad4 GM |
966 | "firebrick" |
967 | "chocolate" | |
968 | "tan" | |
969 | "SandyBrown" | |
970 | "sandy brown" | |
971 | "wheat" | |
972 | "beige" | |
973 | "burlywood" | |
974 | "peru" | |
975 | "sienna" | |
976 | "SaddleBrown" | |
977 | "saddle brown" | |
978 | "IndianRed" | |
979 | "indian red" | |
980 | "RosyBrown" | |
981 | "rosy brown" | |
982 | "DarkGoldenrod" | |
983 | "dark goldenrod" | |
63f77899 | 984 | "goldenrod" |
38fb1ad4 GM |
985 | "LightGoldenrod" |
986 | "light goldenrod" | |
987 | "gold" | |
988 | "yellow" | |
989 | "LightYellow" | |
990 | "light yellow" | |
991 | "LightGoldenrodYellow" | |
992 | "light goldenrod yellow" | |
993 | "PaleGoldenrod" | |
994 | "pale goldenrod" | |
995 | "khaki" | |
996 | "DarkKhaki" | |
997 | "dark khaki" | |
998 | "OliveDrab" | |
999 | "olive drab" | |
63f77899 | 1000 | "ForestGreen" |
38fb1ad4 GM |
1001 | "forest green" |
1002 | "YellowGreen" | |
1003 | "yellow green" | |
63f77899 | 1004 | "LimeGreen" |
38fb1ad4 GM |
1005 | "lime green" |
1006 | "GreenYellow" | |
1007 | "green yellow" | |
63f77899 | 1008 | "MediumSpringGreen" |
38fb1ad4 GM |
1009 | "medium spring green" |
1010 | "chartreuse" | |
1011 | "green" | |
1012 | "LawnGreen" | |
1013 | "lawn green" | |
1014 | "SpringGreen" | |
1015 | "spring green" | |
63f77899 | 1016 | "PaleGreen" |
38fb1ad4 GM |
1017 | "pale green" |
1018 | "LightSeaGreen" | |
1019 | "light sea green" | |
1020 | "MediumSeaGreen" | |
1021 | "medium sea green" | |
63f77899 | 1022 | "SeaGreen" |
38fb1ad4 GM |
1023 | "sea green" |
1024 | "DarkSeaGreen" | |
1025 | "dark sea green" | |
1026 | "DarkOliveGreen" | |
1027 | "dark olive green" | |
1028 | "DarkGreen" | |
1029 | "dark green" | |
1030 | "aquamarine" | |
1031 | "MediumAquamarine" | |
1032 | "medium aquamarine" | |
1033 | "CadetBlue" | |
1034 | "cadet blue" | |
1035 | "LightCyan" | |
1036 | "light cyan" | |
1037 | "cyan" | |
63f77899 | 1038 | "turquoise" |
63f77899 | 1039 | "MediumTurquoise" |
38fb1ad4 GM |
1040 | "medium turquoise" |
1041 | "DarkTurquoise" | |
1042 | "dark turquoise" | |
1043 | "PaleTurquoise" | |
1044 | "pale turquoise" | |
1045 | "PowderBlue" | |
1046 | "powder blue" | |
1047 | "LightBlue" | |
1048 | "light blue" | |
1049 | "LightSteelBlue" | |
1050 | "light steel blue" | |
1051 | "SteelBlue" | |
1052 | "steel blue" | |
1053 | "LightSkyBlue" | |
1054 | "light sky blue" | |
1055 | "SkyBlue" | |
1056 | "sky blue" | |
1057 | "DeepSkyBlue" | |
1058 | "deep sky blue" | |
1059 | "DodgerBlue" | |
1060 | "dodger blue" | |
1061 | "blue" | |
1062 | "RoyalBlue" | |
1063 | "royal blue" | |
1064 | "MediumBlue" | |
1065 | "medium blue" | |
1066 | "LightSlateBlue" | |
1067 | "light slate blue" | |
1068 | "MediumSlateBlue" | |
1069 | "medium slate blue" | |
1070 | "SlateBlue" | |
1071 | "slate blue" | |
1072 | "DarkSlateBlue" | |
1073 | "dark slate blue" | |
1074 | "CornflowerBlue" | |
1075 | "cornflower blue" | |
1076 | "NavyBlue" | |
1077 | "navy blue" | |
1078 | "navy" | |
1079 | "MidnightBlue" | |
1080 | "midnight blue" | |
1081 | "LightGray" | |
1082 | "light gray" | |
1083 | "LightGrey" | |
1084 | "light grey" | |
1085 | "grey" | |
1086 | "gray" | |
1087 | "LightSlateGrey" | |
1088 | "light slate grey" | |
1089 | "LightSlateGray" | |
1090 | "light slate gray" | |
1091 | "SlateGrey" | |
1092 | "slate grey" | |
1093 | "SlateGray" | |
1094 | "slate gray" | |
1095 | "DimGrey" | |
1096 | "dim grey" | |
1097 | "DimGray" | |
1098 | "dim gray" | |
1099 | "DarkSlateGrey" | |
1100 | "dark slate grey" | |
1101 | "DarkSlateGray" | |
1102 | "dark slate gray" | |
1103 | "black" | |
63f77899 | 1104 | "white" |
38fb1ad4 GM |
1105 | "MistyRose" |
1106 | "misty rose" | |
1107 | "LavenderBlush" | |
1108 | "lavender blush" | |
1109 | "lavender" | |
1110 | "AliceBlue" | |
1111 | "alice blue" | |
1112 | "azure" | |
1113 | "MintCream" | |
1114 | "mint cream" | |
1115 | "honeydew" | |
1116 | "seashell" | |
1117 | "LemonChiffon" | |
1118 | "lemon chiffon" | |
1119 | "ivory" | |
1120 | "cornsilk" | |
1121 | "moccasin" | |
1122 | "NavajoWhite" | |
1123 | "navajo white" | |
1124 | "PeachPuff" | |
1125 | "peach puff" | |
1126 | "bisque" | |
1127 | "BlanchedAlmond" | |
1128 | "blanched almond" | |
1129 | "PapayaWhip" | |
1130 | "papaya whip" | |
1131 | "AntiqueWhite" | |
1132 | "antique white" | |
1133 | "linen" | |
1134 | "OldLace" | |
1135 | "old lace" | |
1136 | "FloralWhite" | |
1137 | "floral white" | |
1138 | "gainsboro" | |
1139 | "WhiteSmoke" | |
1140 | "white smoke" | |
1141 | "GhostWhite" | |
1142 | "ghost white" | |
1143 | "snow") | |
1144 | "The list of X colors from the `rgb.txt' file. | |
1145 | XConsortium: rgb.txt,v 10.41 94/02/20 18:39:36 rws Exp") | |
63f77899 | 1146 | |
f795f633 EZ |
1147 | (defun xw-defined-colors (&optional frame) |
1148 | "Internal function called by `defined-colors', which see." | |
891eb3fe | 1149 | (or frame (setq frame (selected-frame))) |
63f77899 JB |
1150 | (let ((all-colors x-colors) |
1151 | (this-color nil) | |
1152 | (defined-colors nil)) | |
1153 | (while all-colors | |
1154 | (setq this-color (car all-colors) | |
1155 | all-colors (cdr all-colors)) | |
79b24da3 | 1156 | (and (color-supported-p this-color frame t) |
63f77899 JB |
1157 | (setq defined-colors (cons this-color defined-colors)))) |
1158 | defined-colors)) | |
63f77899 | 1159 | \f |
98bf0c8d JB |
1160 | ;;;; Function keys |
1161 | ||
2d7bfcc3 RS |
1162 | (substitute-key-definition 'suspend-emacs 'iconify-or-deiconify-frame |
1163 | global-map) | |
e9de784c | 1164 | |
3d80ef3f RS |
1165 | ;; Map certain keypad keys into ASCII characters |
1166 | ;; that people usually expect. | |
1167 | (define-key function-key-map [backspace] [127]) | |
1168 | (define-key function-key-map [delete] [127]) | |
1169 | (define-key function-key-map [tab] [?\t]) | |
1170 | (define-key function-key-map [linefeed] [?\n]) | |
b8e9a326 RS |
1171 | (define-key function-key-map [clear] [?\C-l]) |
1172 | (define-key function-key-map [return] [?\C-m]) | |
3d80ef3f RS |
1173 | (define-key function-key-map [escape] [?\e]) |
1174 | (define-key function-key-map [M-backspace] [?\M-\d]) | |
1175 | (define-key function-key-map [M-delete] [?\M-\d]) | |
1176 | (define-key function-key-map [M-tab] [?\M-\t]) | |
1177 | (define-key function-key-map [M-linefeed] [?\M-\n]) | |
b8e9a326 RS |
1178 | (define-key function-key-map [M-clear] [?\M-\C-l]) |
1179 | (define-key function-key-map [M-return] [?\M-\C-m]) | |
3d80ef3f | 1180 | (define-key function-key-map [M-escape] [?\M-\e]) |
87c033db | 1181 | (define-key function-key-map [iso-lefttab] [backtab]) |
8f96b49b | 1182 | (define-key function-key-map [S-iso-lefttab] [backtab]) |
3d80ef3f RS |
1183 | |
1184 | ;; These tell read-char how to convert | |
1185 | ;; these special chars to ASCII. | |
1186 | (put 'backspace 'ascii-character 127) | |
1187 | (put 'delete 'ascii-character 127) | |
1188 | (put 'tab 'ascii-character ?\t) | |
1189 | (put 'linefeed 'ascii-character ?\n) | |
1190 | (put 'clear 'ascii-character 12) | |
1191 | (put 'return 'ascii-character 13) | |
1192 | (put 'escape 'ascii-character ?\e) | |
afa43349 | 1193 | |
cf07d2bd DL |
1194 | \f |
1195 | ;;;; Keysyms | |
1196 | ||
9b4234ae | 1197 | (defun vendor-specific-keysyms (vendor) |
089bc712 | 1198 | "Return the appropriate value of `system-key-alist' for VENDOR. |
9b4234ae | 1199 | VENDOR is a string containing the name of the X Server's vendor, |
089bc712 | 1200 | as returned by `x-server-vendor'." |
cf07d2bd | 1201 | ;; Fixme: Drop Apollo now? |
9b4234ae RS |
1202 | (cond ((string-equal vendor "Apollo Computer Inc.") |
1203 | '((65280 . linedel) | |
1204 | (65281 . chardel) | |
1205 | (65282 . copy) | |
1206 | (65283 . cut) | |
1207 | (65284 . paste) | |
1208 | (65285 . move) | |
1209 | (65286 . grow) | |
1210 | (65287 . cmd) | |
1211 | (65288 . shell) | |
1212 | (65289 . leftbar) | |
1213 | (65290 . rightbar) | |
1214 | (65291 . leftbox) | |
1215 | (65292 . rightbox) | |
1216 | (65293 . upbox) | |
1217 | (65294 . downbox) | |
1218 | (65295 . pop) | |
1219 | (65296 . read) | |
1220 | (65297 . edit) | |
1221 | (65298 . save) | |
1222 | (65299 . exit) | |
1223 | (65300 . repeat))) | |
3f18a142 KH |
1224 | ((or (string-equal vendor "Hewlett-Packard Incorporated") |
1225 | (string-equal vendor "Hewlett-Packard Company")) | |
9b4234ae RS |
1226 | '(( 168 . mute-acute) |
1227 | ( 169 . mute-grave) | |
1228 | ( 170 . mute-asciicircum) | |
1229 | ( 171 . mute-diaeresis) | |
1230 | ( 172 . mute-asciitilde) | |
1231 | ( 175 . lira) | |
1232 | ( 190 . guilder) | |
1233 | ( 252 . block) | |
1234 | ( 256 . longminus) | |
1235 | (65388 . reset) | |
1236 | (65389 . system) | |
1237 | (65390 . user) | |
1238 | (65391 . clearline) | |
1239 | (65392 . insertline) | |
1240 | (65393 . deleteline) | |
1241 | (65394 . insertchar) | |
1242 | (65395 . deletechar) | |
1243 | (65396 . backtab) | |
1244 | (65397 . kp-backtab))) | |
cf07d2bd | 1245 | ;; Fixme: What about non-X11/NeWS sun server? |
04486a2d KH |
1246 | ((or (string-equal vendor "X11/NeWS - Sun Microsystems Inc.") |
1247 | (string-equal vendor "X Consortium")) | |
51a8e1cc KH |
1248 | '((392976 . f36) |
1249 | (392977 . f37) | |
9b4234ae RS |
1250 | (393056 . req) |
1251 | ;; These are for Sun under X11R6 | |
1252 | (393072 . props) | |
1253 | (393073 . front) | |
1254 | (393074 . copy) | |
1255 | (393075 . open) | |
1256 | (393076 . paste) | |
1257 | (393077 . cut))) | |
1258 | (t | |
1259 | ;; This is used by DEC's X server. | |
1260 | '((65280 . remove))))) | |
1261 | ||
cf07d2bd DL |
1262 | (let ((i 160)) |
1263 | (while (< i 256) | |
1264 | (puthash i (make-char 'latin-iso8859-1 i) x-keysym-table) | |
1265 | (setq i (1+ i)))) | |
1266 | ||
1267 | ;; Table from Kuhn's proposed additions to the `KEYSYM Encoding' | |
1268 | ;; appendix to the X protocol definition. | |
1269 | (dolist | |
1270 | (pair | |
1271 | '( | |
1272 | ;; Latin-2 | |
1273 | (#x1a1 . ?\e,B!\e(B) | |
1274 | (#x1a2 . ?\e,B"\e(B) | |
1275 | (#x1a3 . ?\e,B#\e(B) | |
1276 | (#x1a5 . ?\e,B%\e(B) | |
1277 | (#x1a6 . ?\e,B&\e(B) | |
1278 | (#x1a9 . ?\e,B)\e(B) | |
1279 | (#x1aa . ?\e,B*\e(B) | |
1280 | (#x1ab . ?\e,B+\e(B) | |
1281 | (#x1ac . ?\e,B,\e(B) | |
1282 | (#x1ae . ?\e,B.\e(B) | |
1283 | (#x1af . ?\e,B/\e(B) | |
1284 | (#x1b1 . ?\e,B1\e(B) | |
1285 | (#x1b2 . ?\e,B2\e(B) | |
1286 | (#x1b3 . ?\e,B3\e(B) | |
1287 | (#x1b5 . ?\e,B5\e(B) | |
1288 | (#x1b6 . ?\e,B6\e(B) | |
1289 | (#x1b7 . ?\e,B7\e(B) | |
1290 | (#x1b9 . ?\e,B9\e(B) | |
1291 | (#x1ba . ?\e,B:\e(B) | |
1292 | (#x1bb . ?\e,B;\e(B) | |
1293 | (#x1bc . ?\e,B<\e(B) | |
1294 | (#x1bd . ?\e,B=\e(B) | |
1295 | (#x1be . ?\e,B>\e(B) | |
1296 | (#x1bf . ?\e,B?\e(B) | |
1297 | (#x1c0 . ?\e,B@\e(B) | |
1298 | (#x1c3 . ?\e,BC\e(B) | |
1299 | (#x1c5 . ?\e,BE\e(B) | |
1300 | (#x1c6 . ?\e,BF\e(B) | |
1301 | (#x1c8 . ?\e,BH\e(B) | |
1302 | (#x1ca . ?\e,BJ\e(B) | |
1303 | (#x1cc . ?\e,BL\e(B) | |
1304 | (#x1cf . ?\e,BO\e(B) | |
1305 | (#x1d0 . ?\e,BP\e(B) | |
1306 | (#x1d1 . ?\e,BQ\e(B) | |
1307 | (#x1d2 . ?\e,BR\e(B) | |
1308 | (#x1d5 . ?\e,BU\e(B) | |
1309 | (#x1d8 . ?\e,BX\e(B) | |
1310 | (#x1d9 . ?\e,BY\e(B) | |
1311 | (#x1db . ?\e,B[\e(B) | |
1312 | (#x1de . ?\e,B^\e(B) | |
1313 | (#x1e0 . ?\e,B`\e(B) | |
1314 | (#x1e3 . ?\e,Bc\e(B) | |
1315 | (#x1e5 . ?\e,Be\e(B) | |
1316 | (#x1e6 . ?\e,Bf\e(B) | |
1317 | (#x1e8 . ?\e,Bh\e(B) | |
1318 | (#x1ea . ?\e,Bj\e(B) | |
1319 | (#x1ec . ?\e,Bl\e(B) | |
1320 | (#x1ef . ?\e,Bo\e(B) | |
1321 | (#x1f0 . ?\e,Bp\e(B) | |
1322 | (#x1f1 . ?\e,Bq\e(B) | |
1323 | (#x1f2 . ?\e,Br\e(B) | |
1324 | (#x1f5 . ?\e,Bu\e(B) | |
1325 | (#x1f8 . ?\e,Bx\e(B) | |
1326 | (#x1f9 . ?\e,By\e(B) | |
1327 | (#x1fb . ?\e,B{\e(B) | |
1328 | (#x1fe . ?\e,B~\e(B) | |
1329 | (#x1ff . ?\e,B\7f\e(B) | |
1330 | ;; Latin-3 | |
1331 | (#x2a1 . ?\e,C!\e(B) | |
1332 | (#x2a6 . ?\e,C&\e(B) | |
1333 | (#x2a9 . ?\e,C)\e(B) | |
1334 | (#x2ab . ?\e,C+\e(B) | |
1335 | (#x2ac . ?\e,C,\e(B) | |
1336 | (#x2b1 . ?\e,C1\e(B) | |
1337 | (#x2b6 . ?\e,C6\e(B) | |
1338 | (#x2b9 . ?\e,C9\e(B) | |
1339 | (#x2bb . ?\e,C;\e(B) | |
1340 | (#x2bc . ?\e,C<\e(B) | |
1341 | (#x2c5 . ?\e,CE\e(B) | |
1342 | (#x2c6 . ?\e,CF\e(B) | |
1343 | (#x2d5 . ?\e,CU\e(B) | |
1344 | (#x2d8 . ?\e,CX\e(B) | |
1345 | (#x2dd . ?\e,C]\e(B) | |
1346 | (#x2de . ?\e,C^\e(B) | |
1347 | (#x2e5 . ?\e,Ce\e(B) | |
1348 | (#x2e6 . ?\e,Cf\e(B) | |
1349 | (#x2f5 . ?\e,Cu\e(B) | |
1350 | (#x2f8 . ?\e,Cx\e(B) | |
1351 | (#x2fd . ?\e,C}\e(B) | |
1352 | (#x2fe . ?\e,C~\e(B) | |
1353 | ;; Latin-4 | |
1354 | (#x3a2 . ?\e,D"\e(B) | |
1355 | (#x3a3 . ?\e,D#\e(B) | |
1356 | (#x3a5 . ?\e,D%\e(B) | |
1357 | (#x3a6 . ?\e,D&\e(B) | |
1358 | (#x3aa . ?\e,D*\e(B) | |
1359 | (#x3ab . ?\e,D+\e(B) | |
1360 | (#x3ac . ?\e,D,\e(B) | |
1361 | (#x3b3 . ?\e,D3\e(B) | |
1362 | (#x3b5 . ?\e,D5\e(B) | |
1363 | (#x3b6 . ?\e,D6\e(B) | |
1364 | (#x3ba . ?\e,D:\e(B) | |
1365 | (#x3bb . ?\e,D;\e(B) | |
1366 | (#x3bc . ?\e,D<\e(B) | |
1367 | (#x3bd . ?\e,D=\e(B) | |
1368 | (#x3bf . ?\e,D?\e(B) | |
1369 | (#x3c0 . ?\e,D@\e(B) | |
1370 | (#x3c7 . ?\e,DG\e(B) | |
1371 | (#x3cc . ?\e,DL\e(B) | |
1372 | (#x3cf . ?\e,DO\e(B) | |
1373 | (#x3d1 . ?\e,DQ\e(B) | |
1374 | (#x3d2 . ?\e,DR\e(B) | |
1375 | (#x3d3 . ?\e,DS\e(B) | |
1376 | (#x3d9 . ?\e,DY\e(B) | |
1377 | (#x3dd . ?\e,D]\e(B) | |
1378 | (#x3de . ?\e,D^\e(B) | |
1379 | (#x3e0 . ?\e,D`\e(B) | |
1380 | (#x3e7 . ?\e,Dg\e(B) | |
1381 | (#x3ec . ?\e,Dl\e(B) | |
1382 | (#x3ef . ?\e,Do\e(B) | |
1383 | (#x3f1 . ?\e,Dq\e(B) | |
1384 | (#x3f2 . ?\e,Dr\e(B) | |
1385 | (#x3f3 . ?\e,Ds\e(B) | |
1386 | (#x3f9 . ?\e,Dy\e(B) | |
1387 | (#x3fd . ?\e,D}\e(B) | |
1388 | (#x3fe . ?\e,D~\e(B) | |
1389 | ;; Kana: Fixme: needs conversion to Japanese charset -- seems | |
1390 | ;; to require jisx0213, for which the Unicode translation | |
1391 | ;; isn't clear. | |
1392 | (#x47e . ?\e$,1s>\e(B) | |
1393 | (#x4a1 . ?\e$,2=B\e(B) | |
1394 | (#x4a2 . ?\\e$,2=L\e(B) | |
1395 | (#x4a3 . ?\\e$,2=M\e(B) | |
1396 | (#x4a4 . ?\e$,2=A\e(B) | |
1397 | (#x4a5 . ?\e$,2?{\e(B) | |
1398 | (#x4a6 . ?\e$,2?r\e(B) | |
1399 | (#x4a7 . ?\e$,2?!\e(B) | |
1400 | (#x4a8 . ?\e$,2?#\e(B) | |
1401 | (#x4a9 . ?\e$,2?%\e(B) | |
1402 | (#x4aa . ?\e$,2?'\e(B) | |
1403 | (#x4ab . ?\e$,2?)\e(B) | |
1404 | (#x4ac . ?\e$,2?c\e(B) | |
1405 | (#x4ad . ?\e$,2?e\e(B) | |
1406 | (#x4ae . ?\e$,2?g\e(B) | |
1407 | (#x4af . ?\e$,2?C\e(B) | |
1408 | (#x4b0 . ?\e$,2?|\e(B) | |
1409 | (#x4b1 . ?\e$,2?"\e(B) | |
1410 | (#x4b2 . ?\e$,2?$\e(B) | |
1411 | (#x4b3 . ?\e$,2?&\e(B) | |
1412 | (#x4b4 . ?\e$,2?(\e(B) | |
1413 | (#x4b5 . ?\e$,2?*\e(B) | |
1414 | (#x4b6 . ?\e$,2?+\e(B) | |
1415 | (#x4b7 . ?\e$,2?-\e(B) | |
1416 | (#x4b8 . ?\e$,2?/\e(B) | |
1417 | (#x4b9 . ?\e$,2?1\e(B) | |
1418 | (#x4ba . ?\e$,2?3\e(B) | |
1419 | (#x4bb . ?\e$,2?5\e(B) | |
1420 | (#x4bc . ?\e$,2?7\e(B) | |
1421 | (#x4bd . ?\e$,2?9\e(B) | |
1422 | (#x4be . ?\e$,2?;\e(B) | |
1423 | (#x4bf . ?\e$,2?=\e(B) | |
1424 | (#x4c0 . ?\e$,2??\e(B) | |
1425 | (#x4c1 . ?\e$,2?A\e(B) | |
1426 | (#x4c2 . ?\e$,2?D\e(B) | |
1427 | (#x4c3 . ?\e$,2?F\e(B) | |
1428 | (#x4c4 . ?\e$,2?H\e(B) | |
1429 | (#x4c5 . ?\e$,2?J\e(B) | |
1430 | (#x4c6 . ?\e$,2?K\e(B) | |
1431 | (#x4c7 . ?\e$,2?L\e(B) | |
1432 | (#x4c8 . ?\e$,2?M\e(B) | |
1433 | (#x4c9 . ?\e$,2?N\e(B) | |
1434 | (#x4ca . ?\e$,2?O\e(B) | |
1435 | (#x4cb . ?\e$,2?R\e(B) | |
1436 | (#x4cc . ?\e$,2?U\e(B) | |
1437 | (#x4cd . ?\e$,2?X\e(B) | |
1438 | (#x4ce . ?\e$,2?[\e(B) | |
1439 | (#x4cf . ?\e$,2?^\e(B) | |
1440 | (#x4d0 . ?\e$,2?_\e(B) | |
1441 | (#x4d1 . ?\e$,2?`\e(B) | |
1442 | (#x4d2 . ?\e$,2?a\e(B) | |
1443 | (#x4d3 . ?\e$,2?b\e(B) | |
1444 | (#x4d4 . ?\e$,2?d\e(B) | |
1445 | (#x4d5 . ?\e$,2?f\e(B) | |
1446 | (#x4d6 . ?\e$,2?h\e(B) | |
1447 | (#x4d7 . ?\e$,2?i\e(B) | |
1448 | (#x4d8 . ?\e$,2?j\e(B) | |
1449 | (#x4d9 . ?\e$,2?k\e(B) | |
1450 | (#x4da . ?\e$,2?l\e(B) | |
1451 | (#x4db . ?\e$,2?m\e(B) | |
1452 | (#x4dc . ?\e$,2?o\e(B) | |
1453 | (#x4dd . ?\e$,2?s\e(B) | |
1454 | (#x4de . ?\e$,2>{\e(B) | |
1455 | (#x4df . ?\e$,2>|\e(B) | |
1456 | ;; Arabic | |
1457 | (#x5ac . ?\e,G,\e(B) | |
1458 | (#x5bb . ?\e,G;\e(B) | |
1459 | (#x5bf . ?\e,G?\e(B) | |
1460 | (#x5c1 . ?\e,GA\e(B) | |
1461 | (#x5c2 . ?\e,GB\e(B) | |
1462 | (#x5c3 . ?\e,GC\e(B) | |
1463 | (#x5c4 . ?\e,GD\e(B) | |
1464 | (#x5c5 . ?\e,GE\e(B) | |
1465 | (#x5c6 . ?\e,GF\e(B) | |
1466 | (#x5c7 . ?\e,GG\e(B) | |
1467 | (#x5c8 . ?\e,GH\e(B) | |
1468 | (#x5c9 . ?\e,GI\e(B) | |
1469 | (#x5ca . ?\e,GJ\e(B) | |
1470 | (#x5cb . ?\e,GK\e(B) | |
1471 | (#x5cc . ?\e,GL\e(B) | |
1472 | (#x5cd . ?\e,GM\e(B) | |
1473 | (#x5ce . ?\e,GN\e(B) | |
1474 | (#x5cf . ?\e,GO\e(B) | |
1475 | (#x5d0 . ?\e,GP\e(B) | |
1476 | (#x5d1 . ?\e,GQ\e(B) | |
1477 | (#x5d2 . ?\e,GR\e(B) | |
1478 | (#x5d3 . ?\e,GS\e(B) | |
1479 | (#x5d4 . ?\e,GT\e(B) | |
1480 | (#x5d5 . ?\e,GU\e(B) | |
1481 | (#x5d6 . ?\e,GV\e(B) | |
1482 | (#x5d7 . ?\e,GW\e(B) | |
1483 | (#x5d8 . ?\e,GX\e(B) | |
1484 | (#x5d9 . ?\e,GY\e(B) | |
1485 | (#x5da . ?\e,GZ\e(B) | |
1486 | (#x5e0 . ?\e,G`\e(B) | |
1487 | (#x5e1 . ?\e,Ga\e(B) | |
1488 | (#x5e2 . ?\e,Gb\e(B) | |
1489 | (#x5e3 . ?\e,Gc\e(B) | |
1490 | (#x5e4 . ?\e,Gd\e(B) | |
1491 | (#x5e5 . ?\e,Ge\e(B) | |
1492 | (#x5e6 . ?\e,Gf\e(B) | |
1493 | (#x5e7 . ?\e,Gg\e(B) | |
1494 | (#x5e8 . ?\e,Gh\e(B) | |
1495 | (#x5e9 . ?\e,Gi\e(B) | |
1496 | (#x5ea . ?\e,Gj\e(B) | |
1497 | (#x5eb . ?\e,Gk\e(B) | |
1498 | (#x5ec . ?\e,Gl\e(B) | |
1499 | (#x5ed . ?\e,Gm\e(B) | |
1500 | (#x5ee . ?\e,Gn\e(B) | |
1501 | (#x5ef . ?\e,Go\e(B) | |
1502 | (#x5f0 . ?\e,Gp\e(B) | |
1503 | (#x5f1 . ?\e,Gq\e(B) | |
1504 | (#x5f2 . ?\e,Gr\e(B) | |
1505 | ;; Cyrillic | |
1506 | (#x6a1 . ?\e,Lr\e(B) | |
1507 | (#x6a2 . ?\e,Ls\e(B) | |
1508 | (#x6a3 . ?\e,Lq\e(B) | |
1509 | (#x6a4 . ?\e,Lt\e(B) | |
1510 | (#x6a5 . ?\e,Lu\e(B) | |
1511 | (#x6a6 . ?\e,Lv\e(B) | |
1512 | (#x6a7 . ?\e,Lw\e(B) | |
1513 | (#x6a8 . ?\e,Lx\e(B) | |
1514 | (#x6a9 . ?\e,Ly\e(B) | |
1515 | (#x6aa . ?\e,Lz\e(B) | |
1516 | (#x6ab . ?\e,L{\e(B) | |
1517 | (#x6ac . ?\e,L|\e(B) | |
1518 | (#x6ae . ?\e,L~\e(B) | |
1519 | (#x6af . ?\e,L\7f\e(B) | |
1520 | (#x6b0 . ?\e,Lp\e(B) | |
1521 | (#x6b1 . ?\e,L"\e(B) | |
1522 | (#x6b2 . ?\e,L#\e(B) | |
1523 | (#x6b3 . ?\e,L!\e(B) | |
1524 | (#x6b4 . ?\e,L$\e(B) | |
1525 | (#x6b5 . ?\e,L%\e(B) | |
1526 | (#x6b6 . ?\e,L&\e(B) | |
1527 | (#x6b7 . ?\e,L'\e(B) | |
1528 | (#x6b8 . ?\e,L(\e(B) | |
1529 | (#x6b9 . ?\e,L)\e(B) | |
1530 | (#x6ba . ?\e,L*\e(B) | |
1531 | (#x6bb . ?\e,L+\e(B) | |
1532 | (#x6bc . ?\e,L,\e(B) | |
1533 | (#x6be . ?\e,L.\e(B) | |
1534 | (#x6bf . ?\e,L/\e(B) | |
1535 | (#x6c0 . ?\e,Ln\e(B) | |
1536 | (#x6c1 . ?\e,LP\e(B) | |
1537 | (#x6c2 . ?\e,LQ\e(B) | |
1538 | (#x6c3 . ?\e,Lf\e(B) | |
1539 | (#x6c4 . ?\e,LT\e(B) | |
1540 | (#x6c5 . ?\e,LU\e(B) | |
1541 | (#x6c6 . ?\e,Ld\e(B) | |
1542 | (#x6c7 . ?\e,LS\e(B) | |
1543 | (#x6c8 . ?\e,Le\e(B) | |
1544 | (#x6c9 . ?\e,LX\e(B) | |
1545 | (#x6ca . ?\e,LY\e(B) | |
1546 | (#x6cb . ?\e,LZ\e(B) | |
1547 | (#x6cc . ?\e,L[\e(B) | |
1548 | (#x6cd . ?\e,L\\e(B) | |
1549 | (#x6ce . ?\e,L]\e(B) | |
1550 | (#x6cf . ?\e,L^\e(B) | |
1551 | (#x6d0 . ?\e,L_\e(B) | |
1552 | (#x6d1 . ?\e,Lo\e(B) | |
1553 | (#x6d2 . ?\e,L`\e(B) | |
1554 | (#x6d3 . ?\e,La\e(B) | |
1555 | (#x6d4 . ?\e,Lb\e(B) | |
1556 | (#x6d5 . ?\e,Lc\e(B) | |
1557 | (#x6d6 . ?\e,LV\e(B) | |
1558 | (#x6d7 . ?\e,LR\e(B) | |
1559 | (#x6d8 . ?\e,Ll\e(B) | |
1560 | (#x6d9 . ?\e,Lk\e(B) | |
1561 | (#x6da . ?\e,LW\e(B) | |
1562 | (#x6db . ?\e,Lh\e(B) | |
1563 | (#x6dc . ?\e,Lm\e(B) | |
1564 | (#x6dd . ?\e,Li\e(B) | |
1565 | (#x6de . ?\e,Lg\e(B) | |
1566 | (#x6df . ?\e,Lj\e(B) | |
1567 | (#x6e0 . ?\e,LN\e(B) | |
1568 | (#x6e1 . ?\e,L0\e(B) | |
1569 | (#x6e2 . ?\e,L1\e(B) | |
1570 | (#x6e3 . ?\e,LF\e(B) | |
1571 | (#x6e4 . ?\e,L4\e(B) | |
1572 | (#x6e5 . ?\e,L5\e(B) | |
1573 | (#x6e6 . ?\e,LD\e(B) | |
1574 | (#x6e7 . ?\e,L3\e(B) | |
1575 | (#x6e8 . ?\e,LE\e(B) | |
1576 | (#x6e9 . ?\e,L8\e(B) | |
1577 | (#x6ea . ?\e,L9\e(B) | |
1578 | (#x6eb . ?\e,L:\e(B) | |
1579 | (#x6ec . ?\e,L;\e(B) | |
1580 | (#x6ed . ?\e,L<\e(B) | |
1581 | (#x6ee . ?\e,L=\e(B) | |
1582 | (#x6ef . ?\e,L>\e(B) | |
1583 | (#x6f0 . ?\e,L?\e(B) | |
1584 | (#x6f1 . ?\e,LO\e(B) | |
1585 | (#x6f2 . ?\e,L@\e(B) | |
1586 | (#x6f3 . ?\e,LA\e(B) | |
1587 | (#x6f4 . ?\e,LB\e(B) | |
1588 | (#x6f5 . ?\e,LC\e(B) | |
1589 | (#x6f6 . ?\e,L6\e(B) | |
1590 | (#x6f7 . ?\e,L2\e(B) | |
1591 | (#x6f8 . ?\e,LL\e(B) | |
1592 | (#x6f9 . ?\e,LK\e(B) | |
1593 | (#x6fa . ?\e,L7\e(B) | |
1594 | (#x6fb . ?\e,LH\e(B) | |
1595 | (#x6fc . ?\e,LM\e(B) | |
1596 | (#x6fd . ?\e,LI\e(B) | |
1597 | (#x6fe . ?\e,LG\e(B) | |
1598 | (#x6ff . ?\e,LJ\e(B) | |
1599 | ;; Greek | |
1600 | (#x7a1 . ?\e,F6\e(B) | |
1601 | (#x7a2 . ?\e,F8\e(B) | |
1602 | (#x7a3 . ?\e,F9\e(B) | |
1603 | (#x7a4 . ?\e,F:\e(B) | |
1604 | (#x7a5 . ?\e,FZ\e(B) | |
1605 | (#x7a7 . ?\e,F<\e(B) | |
1606 | (#x7a8 . ?\e,F>\e(B) | |
1607 | (#x7a9 . ?\e,F[\e(B) | |
1608 | (#x7ab . ?\e,F?\e(B) | |
1609 | (#x7ae . ?\e,F5\e(B) | |
1610 | (#x7af . ?\e,F/\e(B) | |
1611 | (#x7b1 . ?\e,F\\e(B) | |
1612 | (#x7b2 . ?\e,F]\e(B) | |
1613 | (#x7b3 . ?\e,F^\e(B) | |
1614 | (#x7b4 . ?\e,F_\e(B) | |
1615 | (#x7b5 . ?\e,Fz\e(B) | |
1616 | (#x7b6 . ?\e,F@\e(B) | |
1617 | (#x7b7 . ?\e,F|\e(B) | |
1618 | (#x7b8 . ?\e,F}\e(B) | |
1619 | (#x7b9 . ?\e,F{\e(B) | |
1620 | (#x7ba . ?\e,F`\e(B) | |
1621 | (#x7bb . ?\e,F~\e(B) | |
1622 | (#x7c1 . ?\e,FA\e(B) | |
1623 | (#x7c2 . ?\e,FB\e(B) | |
1624 | (#x7c3 . ?\e,FC\e(B) | |
1625 | (#x7c4 . ?\e,FD\e(B) | |
1626 | (#x7c5 . ?\e,FE\e(B) | |
1627 | (#x7c6 . ?\e,FF\e(B) | |
1628 | (#x7c7 . ?\e,FG\e(B) | |
1629 | (#x7c8 . ?\e,FH\e(B) | |
1630 | (#x7c9 . ?\e,FI\e(B) | |
1631 | (#x7ca . ?\e,FJ\e(B) | |
1632 | (#x7cb . ?\e,FK\e(B) | |
1633 | (#x7cc . ?\e,FL\e(B) | |
1634 | (#x7cd . ?\e,FM\e(B) | |
1635 | (#x7ce . ?\e,FN\e(B) | |
1636 | (#x7cf . ?\e,FO\e(B) | |
1637 | (#x7d0 . ?\e,FP\e(B) | |
1638 | (#x7d1 . ?\e,FQ\e(B) | |
1639 | (#x7d2 . ?\e,FS\e(B) | |
1640 | (#x7d4 . ?\e,FT\e(B) | |
1641 | (#x7d5 . ?\e,FU\e(B) | |
1642 | (#x7d6 . ?\e,FV\e(B) | |
1643 | (#x7d7 . ?\e,FW\e(B) | |
1644 | (#x7d8 . ?\e,FX\e(B) | |
1645 | (#x7d9 . ?\e,FY\e(B) | |
1646 | (#x7e1 . ?\e,Fa\e(B) | |
1647 | (#x7e2 . ?\e,Fb\e(B) | |
1648 | (#x7e3 . ?\e,Fc\e(B) | |
1649 | (#x7e4 . ?\e,Fd\e(B) | |
1650 | (#x7e5 . ?\e,Fe\e(B) | |
1651 | (#x7e6 . ?\e,Ff\e(B) | |
1652 | (#x7e7 . ?\e,Fg\e(B) | |
1653 | (#x7e8 . ?\e,Fh\e(B) | |
1654 | (#x7e9 . ?\e,Fi\e(B) | |
1655 | (#x7ea . ?\e,Fj\e(B) | |
1656 | (#x7eb . ?\e,Fk\e(B) | |
1657 | (#x7ec . ?\e,Fl\e(B) | |
1658 | (#x7ed . ?\e,Fm\e(B) | |
1659 | (#x7ee . ?\e,Fn\e(B) | |
1660 | (#x7ef . ?\e,Fo\e(B) | |
1661 | (#x7f0 . ?\e,Fp\e(B) | |
1662 | (#x7f1 . ?\e,Fq\e(B) | |
1663 | (#x7f2 . ?\e,Fs\e(B) | |
1664 | (#x7f3 . ?\e,Fr\e(B) | |
1665 | (#x7f4 . ?\e,Ft\e(B) | |
1666 | (#x7f5 . ?\e,Fu\e(B) | |
1667 | (#x7f6 . ?\e,Fv\e(B) | |
1668 | (#x7f7 . ?\e,Fw\e(B) | |
1669 | (#x7f8 . ?\e,Fx\e(B) | |
1670 | (#x7f9 . ?\e,Fy\e(B) | |
1671 | ;; Technical | |
1672 | (#x8a1 . ?\e$,1|W\e(B) | |
1673 | (#x8a2 . ?\e$,2 ,\e(B) | |
1674 | (#x8a3 . ?\e$,2 \e(B) | |
1675 | (#x8a4 . ?\e$,1{ \e(B) | |
1676 | (#x8a5 . ?\e$,1{!\e(B) | |
1677 | (#x8a6 . ?\e$,2 "\e(B) | |
1678 | (#x8a7 . ?\e$,1|A\e(B) | |
1679 | (#x8a8 . ?\e$,1|C\e(B) | |
1680 | (#x8a9 . ?\e$,1|D\e(B) | |
1681 | (#x8aa . ?\e$,1|F\e(B) | |
1682 | (#x8ab . ?\e$,1|;\e(B) | |
1683 | (#x8ac . ?\e$,1|=\e(B) | |
1684 | (#x8ad . ?\e$,1|>\e(B) | |
1685 | (#x8ae . ?\e$,1|@\e(B) | |
1686 | (#x8af . ?\e$,1|H\e(B) | |
1687 | (#x8b0 . ?\e$,1|L\e(B) | |
1688 | (#x8bc . ?\e$,1y$\e(B) | |
1689 | (#x8bd . ?\e$,1y \e(B) | |
1690 | (#x8be . ?\e$,1y%\e(B) | |
1691 | (#x8bf . ?\e$,1xK\e(B) | |
1692 | (#x8c0 . ?\e$,1xT\e(B) | |
1693 | (#x8c1 . ?\e$,1x=\e(B) | |
1694 | (#x8c2 . ?\e$,1x>\e(B) | |
1695 | (#x8c5 . ?\e$,1x'\e(B) | |
1696 | (#x8c8 . ?\e$,1x\\e(B) | |
1697 | (#x8c9 . ?\e$,1xc\e(B) | |
1698 | (#x8cd . ?\e$,1wT\e(B) | |
1699 | (#x8ce . ?\e$,1wR\e(B) | |
1700 | (#x8cf . ?\e$,1y!\e(B) | |
1701 | (#x8d6 . ?\e$,1x:\e(B) | |
1702 | (#x8da . ?\e$,1yB\e(B) | |
1703 | (#x8db . ?\e$,1yC\e(B) | |
1704 | (#x8dc . ?\e$,1xI\e(B) | |
1705 | (#x8dd . ?\e$,1xJ\e(B) | |
1706 | (#x8de . ?\e$,1xG\e(B) | |
1707 | (#x8df . ?\e$,1xH\e(B) | |
1708 | (#x8ef . ?\e$,1x"\e(B) | |
1709 | (#x8f6 . ?\e$,1!R\e(B) | |
1710 | (#x8fb . ?\e$,1vp\e(B) | |
1711 | (#x8fc . ?\e$,1vq\e(B) | |
1712 | (#x8fd . ?\e$,1vr\e(B) | |
1713 | (#x8fe . ?\e$,1vs\e(B) | |
1714 | ;; Special | |
1715 | (#x9e0 . ?\e$,2"&\e(B) | |
1716 | (#x9e1 . ?\e$,2!R\e(B) | |
1717 | (#x9e2 . ?\e$,1}I\e(B) | |
1718 | (#x9e3 . ?\e$,1}L\e(B) | |
1719 | (#x9e4 . ?\e$,1}M\e(B) | |
1720 | (#x9e5 . ?\e$,1}J\e(B) | |
1721 | (#x9e8 . ?\e$,1}d\e(B) | |
1722 | (#x9e9 . ?\e$,1}K\e(B) | |
1723 | (#x9ea . ?\e$,2 8\e(B) | |
1724 | (#x9eb . ?\e$,2 0\e(B) | |
1725 | (#x9ec . ?\e$,2 ,\e(B) | |
1726 | (#x9ed . ?\e$,2 4\e(B) | |
1727 | (#x9ee . ?\e$,2 \\e(B) | |
1728 | (#x9ef . ?\e$,1|Z\e(B) | |
1729 | (#x9f0 . ?\e$,1|[\e(B) | |
1730 | (#x9f1 . ?\e$,2 \e(B) | |
1731 | (#x9f2 . ?\e$,1|\\e(B) | |
1732 | (#x9f3 . ?\e$,1|]\e(B) | |
1733 | (#x9f4 . ?\e$,2 <\e(B) | |
1734 | (#x9f5 . ?\e$,2 D\e(B) | |
1735 | (#x9f6 . ?\e$,2 T\e(B) | |
1736 | (#x9f7 . ?\e$,2 L\e(B) | |
1737 | (#x9f8 . ?\e$,2 "\e(B) | |
1738 | ;; Publishing | |
1739 | (#xaa1 . ?\e$,1rc\e(B) | |
1740 | (#xaa2 . ?\e$,1rb\e(B) | |
1741 | (#xaa3 . ?\e$,1rd\e(B) | |
1742 | (#xaa4 . ?\e$,1re\e(B) | |
1743 | (#xaa5 . ?\e$,1rg\e(B) | |
1744 | (#xaa6 . ?\e$,1rh\e(B) | |
1745 | (#xaa7 . ?\e$,1ri\e(B) | |
1746 | (#xaa8 . ?\e$,1rj\e(B) | |
1747 | (#xaa9 . ?\e$,1rt\e(B) | |
1748 | (#xaaa . ?\e$,1rs\e(B) | |
1749 | (#xaae . ?\e$,1s&\e(B) | |
1750 | (#xaaf . ?\e$,1s%\e(B) | |
1751 | (#xab0 . ?\e$,1v3\e(B) | |
1752 | (#xab1 . ?\e$,1v4\e(B) | |
1753 | (#xab2 . ?\e$,1v5\e(B) | |
1754 | (#xab3 . ?\e$,1v6\e(B) | |
1755 | (#xab4 . ?\e$,1v7\e(B) | |
1756 | (#xab5 . ?\e$,1v8\e(B) | |
1757 | (#xab6 . ?\e$,1v9\e(B) | |
1758 | (#xab7 . ?\e$,1v:\e(B) | |
1759 | (#xab8 . ?\e$,1uE\e(B) | |
1760 | (#xabb . ?\e$,1rr\e(B) | |
1761 | (#xabc . ?\e$,1{)\e(B) | |
1762 | (#xabe . ?\e$,1{*\e(B) | |
1763 | (#xac3 . ?\e$,1v;\e(B) | |
1764 | (#xac4 . ?\e$,1v<\e(B) | |
1765 | (#xac5 . ?\e$,1v=\e(B) | |
1766 | (#xac6 . ?\e$,1v>\e(B) | |
1767 | (#xac9 . ?\e$,1ub\e(B) | |
1768 | (#xaca . ?\e$,2"s\e(B) | |
1769 | (#xacc . ?\e$,2"!\e(B) | |
1770 | (#xacd . ?\e$,2!w\e(B) | |
1771 | (#xace . ?\e$,2"+\e(B) | |
1772 | (#xacf . ?\e$,2!o\e(B) | |
1773 | (#xad0 . ?\e$,1rx\e(B) | |
1774 | (#xad1 . ?\e$,1ry\e(B) | |
1775 | (#xad2 . ?\e$,1r|\e(B) | |
1776 | (#xad3 . ?\e$,1r}\e(B) | |
1777 | (#xad4 . ?\e$,1u^\e(B) | |
1778 | (#xad6 . ?\e$,1s2\e(B) | |
1779 | (#xad7 . ?\e$,1s3\e(B) | |
1780 | (#xad9 . ?\e$,2%]\e(B) | |
1781 | (#xadb . ?\e$,2!l\e(B) | |
1782 | (#xadc . ?\e$,2" \e(B) | |
1783 | (#xadd . ?\e$,2!v\e(B) | |
1784 | (#xade . ?\e$,2"/\e(B) | |
1785 | (#xadf . ?\e$,2!n\e(B) | |
1786 | (#xae0 . ?\e$,2"F\e(B) | |
1787 | (#xae1 . ?\e$,2!k\e(B) | |
1788 | (#xae2 . ?\e$,2!m\e(B) | |
1789 | (#xae3 . ?\e$,2!s\e(B) | |
1790 | (#xae4 . ?\e$,2!}\e(B) | |
1791 | (#xae5 . ?\e$,2"f\e(B) | |
1792 | (#xae6 . ?\e$,1s"\e(B) | |
1793 | (#xae7 . ?\e$,2!j\e(B) | |
1794 | (#xae8 . ?\e$,2!r\e(B) | |
1795 | (#xae9 . ?\e$,2!|\e(B) | |
1796 | (#xaea . ?\e$,2"|\e(B) | |
1797 | (#xaeb . ?\e$,2"~\e(B) | |
1798 | (#xaec . ?\e$,2#c\e(B) | |
1799 | (#xaed . ?\e$,2#f\e(B) | |
1800 | (#xaee . ?\e$,2#e\e(B) | |
1801 | (#xaf0 . ?\e$,2%`\e(B) | |
1802 | (#xaf1 . ?\e$,1s \e(B) | |
1803 | (#xaf2 . ?\e$,1s!\e(B) | |
1804 | (#xaf3 . ?\e$,2%S\e(B) | |
1805 | (#xaf4 . ?\e$,2%W\e(B) | |
1806 | (#xaf5 . ?\e$,2#o\e(B) | |
1807 | (#xaf6 . ?\e$,2#m\e(B) | |
1808 | (#xaf7 . ?\e$,2#B\e(B) | |
1809 | (#xaf8 . ?\e$,2#@\e(B) | |
1810 | (#xaf9 . ?\e$,2"n\e(B) | |
1811 | (#xafa . ?\e$,1zu\e(B) | |
1812 | (#xafb . ?\e$,1uW\e(B) | |
1813 | (#xafc . ?\e$,1s8\e(B) | |
1814 | (#xafd . ?\e$,1rz\e(B) | |
1815 | (#xafe . ?\e$,1r~\e(B) | |
1816 | ;; APL | |
1817 | (#xba3 . ?<) | |
1818 | (#xba6 . ?>) | |
1819 | (#xba8 . ?\e$,1xH\e(B) | |
1820 | (#xba9 . ?\e$,1xG\e(B) | |
1821 | (#xbc0 . ?\e,A/\e(B) | |
1822 | (#xbc2 . ?\e$,1ye\e(B) | |
1823 | (#xbc3 . ?\e$,1xI\e(B) | |
1824 | (#xbc4 . ?\e$,1zj\e(B) | |
1825 | (#xbc6 . ?_) | |
1826 | (#xbca . ?\e$,1x8\e(B) | |
1827 | (#xbcc . ?\e$,1|5\e(B) | |
1828 | (#xbce . ?\e$,1yd\e(B) | |
1829 | (#xbcf . ?\e$,2"+\e(B) | |
1830 | (#xbd3 . ?\e$,1zh\e(B) | |
1831 | (#xbd6 . ?\e$,1xJ\e(B) | |
1832 | (#xbd8 . ?\e$,1yC\e(B) | |
1833 | (#xbda . ?\e$,1yB\e(B) | |
1834 | (#xbdc . ?\e$,1yb\e(B) | |
1835 | (#xbfc . ?\e$,1yc\e(B) | |
1836 | ;; Hebrew | |
1837 | (#xcdf . ?\e,H_\e(B) | |
1838 | (#xce0 . ?\e,H`\e(B) | |
1839 | (#xce1 . ?\e,Ha\e(B) | |
1840 | (#xce2 . ?\e,Hb\e(B) | |
1841 | (#xce3 . ?\e,Hc\e(B) | |
1842 | (#xce4 . ?\e,Hd\e(B) | |
1843 | (#xce5 . ?\e,He\e(B) | |
1844 | (#xce6 . ?\e,Hf\e(B) | |
1845 | (#xce7 . ?\e,Hg\e(B) | |
1846 | (#xce8 . ?\e,Hh\e(B) | |
1847 | (#xce9 . ?\e,Hi\e(B) | |
1848 | (#xcea . ?\e,Hj\e(B) | |
1849 | (#xceb . ?\e,Hk\e(B) | |
1850 | (#xcec . ?\e,Hl\e(B) | |
1851 | (#xced . ?\e,Hm\e(B) | |
1852 | (#xcee . ?\e,Hn\e(B) | |
1853 | (#xcef . ?\e,Ho\e(B) | |
1854 | (#xcf0 . ?\e,Hp\e(B) | |
1855 | (#xcf1 . ?\e,Hq\e(B) | |
1856 | (#xcf2 . ?\e,Hr\e(B) | |
1857 | (#xcf3 . ?\e,Hs\e(B) | |
1858 | (#xcf4 . ?\e,Ht\e(B) | |
1859 | (#xcf5 . ?\e,Hu\e(B) | |
1860 | (#xcf6 . ?\e,Hv\e(B) | |
1861 | (#xcf7 . ?\e,Hw\e(B) | |
1862 | (#xcf8 . ?\e,Hx\e(B) | |
1863 | (#xcf9 . ?\e,Hy\e(B) | |
1864 | (#xcfa . ?\e,Hz\e(B) | |
1865 | ;; Thai | |
1866 | (#xda1 . ?\e,T!\e(B) | |
1867 | (#xda2 . ?\e,T"\e(B) | |
1868 | (#xda3 . ?\e,T#\e(B) | |
1869 | (#xda4 . ?\e,T$\e(B) | |
1870 | (#xda5 . ?\e,T%\e(B) | |
1871 | (#xda6 . ?\e,T&\e(B) | |
1872 | (#xda7 . ?\e,T'\e(B) | |
1873 | (#xda8 . ?\e,T(\e(B) | |
1874 | (#xda9 . ?\e,T)\e(B) | |
1875 | (#xdaa . ?\e,T*\e(B) | |
1876 | (#xdab . ?\e,T+\e(B) | |
1877 | (#xdac . ?\e,T,\e(B) | |
1878 | (#xdad . ?\e,T-\e(B) | |
1879 | (#xdae . ?\e,T.\e(B) | |
1880 | (#xdaf . ?\e,T/\e(B) | |
1881 | (#xdb0 . ?\e,T0\e(B) | |
1882 | (#xdb1 . ?\e,T1\e(B) | |
1883 | (#xdb2 . ?\e,T2\e(B) | |
1884 | (#xdb3 . ?\e,T3\e(B) | |
1885 | (#xdb4 . ?\e,T4\e(B) | |
1886 | (#xdb5 . ?\e,T5\e(B) | |
1887 | (#xdb6 . ?\e,T6\e(B) | |
1888 | (#xdb7 . ?\e,T7\e(B) | |
1889 | (#xdb8 . ?\e,T8\e(B) | |
1890 | (#xdb9 . ?\e,T9\e(B) | |
1891 | (#xdba . ?\e,T:\e(B) | |
1892 | (#xdbb . ?\e,T;\e(B) | |
1893 | (#xdbc . ?\e,T<\e(B) | |
1894 | (#xdbd . ?\e,T=\e(B) | |
1895 | (#xdbe . ?\e,T>\e(B) | |
1896 | (#xdbf . ?\e,T?\e(B) | |
1897 | (#xdc0 . ?\e,T@\e(B) | |
1898 | (#xdc1 . ?\e,TA\e(B) | |
1899 | (#xdc2 . ?\e,TB\e(B) | |
1900 | (#xdc3 . ?\e,TC\e(B) | |
1901 | (#xdc4 . ?\e,TD\e(B) | |
1902 | (#xdc5 . ?\e,TE\e(B) | |
1903 | (#xdc6 . ?\e,TF\e(B) | |
1904 | (#xdc7 . ?\e,TG\e(B) | |
1905 | (#xdc8 . ?\e,TH\e(B) | |
1906 | (#xdc9 . ?\e,TI\e(B) | |
1907 | (#xdca . ?\e,TJ\e(B) | |
1908 | (#xdcb . ?\e,TK\e(B) | |
1909 | (#xdcc . ?\e,TL\e(B) | |
1910 | (#xdcd . ?\e,TM\e(B) | |
1911 | (#xdce . ?\e,TN\e(B) | |
1912 | (#xdcf . ?\e,TO\e(B) | |
1913 | (#xdd0 . ?\e,TP\e(B) | |
1914 | (#xdd1 . ?\e,TQ\e(B) | |
1915 | (#xdd2 . ?\e,TR\e(B) | |
1916 | (#xdd3 . ?\e,TS\e(B) | |
1917 | (#xdd4 . ?\e,TT\e(B) | |
1918 | (#xdd5 . ?\e,TU\e(B) | |
1919 | (#xdd6 . ?\e,TV\e(B) | |
1920 | (#xdd7 . ?\e,TW\e(B) | |
1921 | (#xdd8 . ?\e,TX\e(B) | |
1922 | (#xdd9 . ?\e,TY\e(B) | |
1923 | (#xdda . ?\e,TZ\e(B) | |
1924 | (#xddf . ?\e,T_\e(B) | |
1925 | (#xde0 . ?\e,T`\e(B) | |
1926 | (#xde1 . ?\e,Ta\e(B) | |
1927 | (#xde2 . ?\e,Tb\e(B) | |
1928 | (#xde3 . ?\e,Tc\e(B) | |
1929 | (#xde4 . ?\e,Td\e(B) | |
1930 | (#xde5 . ?\e,Te\e(B) | |
1931 | (#xde6 . ?\e,Tf\e(B) | |
1932 | (#xde7 . ?\e,Tg\e(B) | |
1933 | (#xde8 . ?\e,Th\e(B) | |
1934 | (#xde9 . ?\e,Ti\e(B) | |
1935 | (#xdea . ?\e,Tj\e(B) | |
1936 | (#xdeb . ?\e,Tk\e(B) | |
1937 | (#xdec . ?\e,Tl\e(B) | |
1938 | (#xded . ?\e,Tm\e(B) | |
1939 | (#xdf0 . ?\e,Tp\e(B) | |
1940 | (#xdf1 . ?\e,Tq\e(B) | |
1941 | (#xdf2 . ?\e,Tr\e(B) | |
1942 | (#xdf3 . ?\e,Ts\e(B) | |
1943 | (#xdf4 . ?\e,Tt\e(B) | |
1944 | (#xdf5 . ?\e,Tu\e(B) | |
1945 | (#xdf6 . ?\e,Tv\e(B) | |
1946 | (#xdf7 . ?\e,Tw\e(B) | |
1947 | (#xdf8 . ?\e,Tx\e(B) | |
1948 | (#xdf9 . ?\e,Ty\e(B) | |
1949 | ;; Korean | |
1950 | (#xea1 . ?\e$(C$!\e(B) | |
1951 | (#xea2 . ?\e$(C$"\e(B) | |
1952 | (#xea3 . ?\e$(C$#\e(B) | |
1953 | (#xea4 . ?\e$(C$$\e(B) | |
1954 | (#xea5 . ?\e$(C$%\e(B) | |
1955 | (#xea6 . ?\e$(C$&\e(B) | |
1956 | (#xea7 . ?\e$(C$'\e(B) | |
1957 | (#xea8 . ?\e$(C$(\e(B) | |
1958 | (#xea9 . ?\e$(C$)\e(B) | |
1959 | (#xeaa . ?\e$(C$*\e(B) | |
1960 | (#xeab . ?\e$(C$+\e(B) | |
1961 | (#xeac . ?\e$(C$,\e(B) | |
1962 | (#xead . ?\e$(C$-\e(B) | |
1963 | (#xeae . ?\e$(C$.\e(B) | |
1964 | (#xeaf . ?\e$(C$/\e(B) | |
1965 | (#xeb0 . ?\e$(C$0\e(B) | |
1966 | (#xeb1 . ?\e$(C$1\e(B) | |
1967 | (#xeb2 . ?\e$(C$2\e(B) | |
1968 | (#xeb3 . ?\e$(C$3\e(B) | |
1969 | (#xeb4 . ?\e$(C$4\e(B) | |
1970 | (#xeb5 . ?\e$(C$5\e(B) | |
1971 | (#xeb6 . ?\e$(C$6\e(B) | |
1972 | (#xeb7 . ?\e$(C$7\e(B) | |
1973 | (#xeb8 . ?\e$(C$8\e(B) | |
1974 | (#xeb9 . ?\e$(C$9\e(B) | |
1975 | (#xeba . ?\e$(C$:\e(B) | |
1976 | (#xebb . ?\e$(C$;\e(B) | |
1977 | (#xebc . ?\e$(C$<\e(B) | |
1978 | (#xebd . ?\e$(C$=\e(B) | |
1979 | (#xebe . ?\e$(C$>\e(B) | |
1980 | (#xebf . ?\e$(C$?\e(B) | |
1981 | (#xec0 . ?\e$(C$@\e(B) | |
1982 | (#xec1 . ?\e$(C$A\e(B) | |
1983 | (#xec2 . ?\e$(C$B\e(B) | |
1984 | (#xec3 . ?\e$(C$C\e(B) | |
1985 | (#xec4 . ?\e$(C$D\e(B) | |
1986 | (#xec5 . ?\e$(C$E\e(B) | |
1987 | (#xec6 . ?\e$(C$F\e(B) | |
1988 | (#xec7 . ?\e$(C$G\e(B) | |
1989 | (#xec8 . ?\e$(C$H\e(B) | |
1990 | (#xec9 . ?\e$(C$I\e(B) | |
1991 | (#xeca . ?\e$(C$J\e(B) | |
1992 | (#xecb . ?\e$(C$K\e(B) | |
1993 | (#xecc . ?\e$(C$L\e(B) | |
1994 | (#xecd . ?\e$(C$M\e(B) | |
1995 | (#xece . ?\e$(C$N\e(B) | |
1996 | (#xecf . ?\e$(C$O\e(B) | |
1997 | (#xed0 . ?\e$(C$P\e(B) | |
1998 | (#xed1 . ?\e$(C$Q\e(B) | |
1999 | (#xed2 . ?\e$(C$R\e(B) | |
2000 | (#xed3 . ?\e$(C$S\e(B) | |
2001 | (#xed4 . ?\e$,1LH\e(B) | |
2002 | (#xed5 . ?\e$,1LI\e(B) | |
2003 | (#xed6 . ?\e$,1LJ\e(B) | |
2004 | (#xed7 . ?\e$,1LK\e(B) | |
2005 | (#xed8 . ?\e$,1LL\e(B) | |
2006 | (#xed9 . ?\e$,1LM\e(B) | |
2007 | (#xeda . ?\e$,1LN\e(B) | |
2008 | (#xedb . ?\e$,1LO\e(B) | |
2009 | (#xedc . ?\e$,1LP\e(B) | |
2010 | (#xedd . ?\e$,1LQ\e(B) | |
2011 | (#xede . ?\e$,1LR\e(B) | |
2012 | (#xedf . ?\e$,1LS\e(B) | |
2013 | (#xee0 . ?\e$,1LT\e(B) | |
2014 | (#xee1 . ?\e$,1LU\e(B) | |
2015 | (#xee2 . ?\e$,1LV\e(B) | |
2016 | (#xee3 . ?\e$,1LW\e(B) | |
2017 | (#xee4 . ?\e$,1LX\e(B) | |
2018 | (#xee5 . ?\e$,1LY\e(B) | |
2019 | (#xee6 . ?\e$,1LZ\e(B) | |
2020 | (#xee7 . ?\e$,1L[\e(B) | |
2021 | (#xee8 . ?\e$,1L\\e(B) | |
2022 | (#xee9 . ?\e$,1L]\e(B) | |
2023 | (#xeea . ?\e$,1L^\e(B) | |
2024 | (#xeeb . ?\e$,1L_\e(B) | |
2025 | (#xeec . ?\e$,1L`\e(B) | |
2026 | (#xeed . ?\e$,1La\e(B) | |
2027 | (#xeee . ?\e$,1Lb\e(B) | |
2028 | (#xeef . ?\e$(C$]\e(B) | |
2029 | (#xef0 . ?\e$(C$a\e(B) | |
2030 | (#xef1 . ?\e$(C$h\e(B) | |
2031 | (#xef2 . ?\e$(C$o\e(B) | |
2032 | (#xef3 . ?\e$(C$q\e(B) | |
2033 | (#xef4 . ?\e$(C$t\e(B) | |
2034 | (#xef5 . ?\e$(C$v\e(B) | |
2035 | (#xef6 . ?\e$(C$}\e(B) | |
2036 | (#xef7 . ?\e$(C$~\e(B) | |
2037 | (#xef8 . ?\e$,1M+\e(B) | |
2038 | (#xef9 . ?\e$,1M0\e(B) | |
2039 | (#xefa . ?\e$,1M9\e(B) | |
2040 | (#xeff . ?\e$,1tI\e(B) | |
2041 | ;; Latin-5 | |
2042 | ;; Latin-6 | |
2043 | ;; Latin-7 | |
2044 | ;; Latin-8 | |
2045 | ;; Latin-9 | |
2046 | (#x13bc . ?\e,b<\e(B) | |
2047 | (#x13bd . ?\e,b=\e(B) | |
2048 | (#x13be . ?\e,b>\e(B) | |
2049 | ;; Currency | |
2050 | (#x20a0 . ?\e$,1t@\e(B) | |
2051 | (#x20a1 . ?\e$,1tA\e(B) | |
2052 | (#x20a2 . ?\e$,1tB\e(B) | |
2053 | (#x20a3 . ?\e$,1tC\e(B) | |
2054 | (#x20a4 . ?\e$,1tD\e(B) | |
2055 | (#x20a5 . ?\e$,1tE\e(B) | |
2056 | (#x20a6 . ?\e$,1tF\e(B) | |
2057 | (#x20a7 . ?\e$,1tG\e(B) | |
2058 | (#x20a8 . ?\e$,1tH\e(B) | |
2059 | (#x20aa . ?\e$,1tJ\e(B) | |
2060 | (#x20ab . ?\e$,1tK\e(B) | |
2061 | (#x20ac . ?\e,b$\e(B))) | |
2062 | (puthash (car pair) (cdr pair) x-keysym-table)) | |
2063 | ||
2064 | ;; The following keysym codes for graphics are listed in the document | |
2065 | ;; as not having unicodes available: | |
2066 | ||
2067 | ;; #x08b1 TOP LEFT SUMMATION Technical | |
2068 | ;; #x08b2 BOTTOM LEFT SUMMATION Technical | |
2069 | ;; #x08b3 TOP VERTICAL SUMMATION CONNECTOR Technical | |
2070 | ;; #x08b4 BOTTOM VERTICAL SUMMATION CONNECTOR Technical | |
2071 | ;; #x08b5 TOP RIGHT SUMMATION Technical | |
2072 | ;; #x08b6 BOTTOM RIGHT SUMMATION Technical | |
2073 | ;; #x08b7 RIGHT MIDDLE SUMMATION Technical | |
2074 | ;; #x0aac SIGNIFICANT BLANK SYMBOL Publish | |
2075 | ;; #x0abd DECIMAL POINT Publish | |
2076 | ;; #x0abf MARKER Publish | |
2077 | ;; #x0acb TRADEMARK SIGN IN CIRCLE Publish | |
2078 | ;; #x0ada HEXAGRAM Publish | |
2079 | ;; #x0aff CURSOR Publish | |
2080 | ;; #x0dde THAI MAIHANAKAT Thai | |
2081 | ||
2fb263f6 JB |
2082 | \f |
2083 | ;;;; Selections and cut buffers | |
67c86cfc | 2084 | |
daa37602 JB |
2085 | ;;; We keep track of the last text selected here, so we can check the |
2086 | ;;; current selection against it, and avoid passing back our own text | |
ae10d597 PJ |
2087 | ;;; from x-cut-buffer-or-selection-value. We track all three |
2088 | ;;; seperately in case another X application only sets one of them | |
aa87aafc | 2089 | ;;; (say the cut buffer) we aren't fooled by the PRIMARY or |
ae10d597 PJ |
2090 | ;;; CLIPBOARD selection staying the same. |
2091 | (defvar x-last-selected-text-clipboard nil | |
2092 | "The value of the CLIPBOARD X selection last time we selected or | |
2093 | pasted text.") | |
089bc712 | 2094 | (defvar x-last-selected-text-primary nil |
ae10d597 PJ |
2095 | "The value of the PRIMARY X selection last time we selected or |
2096 | pasted text.") | |
089bc712 JPW |
2097 | (defvar x-last-selected-text-cut nil |
2098 | "The value of the X cut buffer last time we selected or pasted text.") | |
daa37602 | 2099 | |
2666a6a5 | 2100 | ;;; It is said that overlarge strings are slow to put into the cut buffer. |
ef599142 RS |
2101 | ;;; Note this value is overridden below. |
2102 | (defvar x-cut-buffer-max 20000 | |
2666a6a5 RS |
2103 | "Max number of characters to put in the cut buffer.") |
2104 | ||
d14518d8 | 2105 | (defcustom x-select-enable-clipboard nil |
dc20df95 | 2106 | "Non-nil means cutting and pasting uses the clipboard. |
d14518d8 DL |
2107 | This is in addition to, but in preference to, the primary selection." |
2108 | :type 'boolean | |
2109 | :group 'killing) | |
dc20df95 | 2110 | |
2666a6a5 | 2111 | ;;; Make TEXT, a string, the primary X selection. |
492878e4 | 2112 | ;;; Also, set the value of X cut buffer 0, for backward compatibility |
d81fd0bf | 2113 | ;;; with older X applications. |
feeb94f7 | 2114 | ;;; gildea@stop.mail-abuse.org says it's not desirable to put kills |
2666a6a5 | 2115 | ;;; in the clipboard. |
0e2f4e59 | 2116 | (defun x-select-text (text &optional push) |
785080c5 RS |
2117 | ;; Don't send the cut buffer too much text. |
2118 | ;; It becomes slow, and if really big it causes errors. | |
ae10d597 PJ |
2119 | (cond ((>= (length text) x-cut-buffer-max) |
2120 | (x-set-cut-buffer "" push) | |
2121 | (setq x-last-selected-text-cut "")) | |
f05394cc KH |
2122 | ;; Don't store a multibyte string that contains |
2123 | ;; eight-bit-control/graphic chars because they can't be | |
2124 | ;; restored correctly by x-get-cut-buffer. | |
99b631c8 KH |
2125 | ((and (multibyte-string-p text) |
2126 | (let ((charsets (find-charset-string text))) | |
2127 | (or (memq 'eight-bit-control charsets) | |
2128 | (memq 'eight-bit-graphic charsets)))) | |
2129 | (x-set-cut-buffer "" push) | |
2130 | (setq x-last-selected-text-cut "")) | |
db95369b | 2131 | (t |
99b631c8 | 2132 | (x-set-cut-buffer text push) |
ae10d597 | 2133 | (setq x-last-selected-text-cut text))) |
c8c72d6b | 2134 | (x-set-selection 'PRIMARY text) |
ae10d597 PJ |
2135 | (setq x-last-selected-text-primary text) |
2136 | (when x-select-enable-clipboard | |
99b631c8 KH |
2137 | (x-set-selection 'CLIPBOARD text) |
2138 | (setq x-last-selected-text-clipboard text)) | |
ae10d597 | 2139 | ) |
492878e4 | 2140 | |
c7d9df18 KH |
2141 | (defvar x-select-request-type nil |
2142 | "*Data type request for X selection. | |
2143 | The value is nil, one of the following data types, or a list of them: | |
2144 | `COMPOUND_TEXT', `UTF8_STRING', `STRING', `TEXT' | |
2145 | ||
2146 | If the value is nil, try `COMPOUND_TEXT' and `UTF8_STRING', and | |
2147 | use the more appropriate result. If both fail, try `STRING', and | |
2148 | then `TEXT'. | |
2149 | ||
2150 | If the value is one of the above symbols, try only the specified | |
2151 | type. | |
2152 | ||
2153 | If the value is a list of them, try each of them in the specified | |
2154 | order until succeed.") | |
2155 | ||
2156 | ;; Helper function for x-selection-value. Select UTF8 or CTEXT | |
2157 | ;; whichever is more appropriate. Here, we use this heurisitcs. | |
2158 | ;; | |
2159 | ;; (1) If their lengthes are different, select the longer one. This | |
2160 | ;; is because an X client may just cut off unsupported characters. | |
2161 | ;; | |
2162 | ;; (2) Otherwise, if the Nth character of CTEXT is an ASCII | |
2163 | ;; character that is different from the Nth character of UTF8, | |
2164 | ;; select UTF8. This is because an X client may replace unsupported | |
2165 | ;; characters with some ASCII character (typically ` ' or `?') in | |
2166 | ;; CTEXT. | |
2167 | ;; | |
2168 | ;; (3) Otherwise, select CTEXT. This is because legacy charsets are | |
2169 | ;; better for the current Emacs, especially when the selection owner | |
2170 | ;; is also Emacs. | |
2171 | ||
2172 | (defun x-select-utf8-or-ctext (utf8 ctext) | |
2173 | (let ((len-utf8 (length utf8)) | |
2174 | (len-ctext (length ctext)) | |
2175 | (selected ctext) | |
2176 | (i 0) | |
2177 | char) | |
2178 | (if (/= len-utf8 len-ctext) | |
2179 | (if (> len-utf8 len-ctext) utf8 ctext) | |
2180 | (while (< i len-utf8) | |
2181 | (setq char (aref ctext i)) | |
2182 | (if (and (< char 128) (/= char (aref utf8 i))) | |
2183 | (setq selected utf8 | |
2184 | i len-utf8) | |
2185 | (setq i (1+ i)))) | |
2186 | selected))) | |
2187 | ||
2188 | (defun x-selection-value (type) | |
2189 | (let (text) | |
2190 | (cond ((null x-select-request-type) | |
2191 | (let (utf8 ctext utf8-coding) | |
2192 | ;; We try both UTF8_STRING and COMPOUND_TEXT, and choose | |
2193 | ;; the more appropriate one. If both fail, try STRING. | |
2194 | ||
2195 | ;; At first try UTF8_STRING. | |
2196 | (setq utf8 (condition-case nil | |
2197 | (x-get-selection type 'UTF8_STRING) | |
2198 | (error nil)) | |
2199 | utf8-coding last-coding-system-used) | |
2200 | (if utf8 | |
2201 | ;; If it is a locale selection, choose it. | |
2202 | (or (get-text-property 0 'foreign-selection utf8) | |
2203 | (setq text utf8))) | |
2204 | ;; If not yet decided, try COMPOUND_TEXT. | |
2205 | (if (not text) | |
2206 | (if (setq ctext (condition-case nil | |
2207 | (x-get-selection type 'COMPOUND_TEXT) | |
2208 | (error nil))) | |
2209 | ;; If UTF8_STRING was also successful, choose the | |
2210 | ;; more appropriate one from UTF8 and CTEXT. | |
2211 | (if utf8 | |
2212 | (setq text (x-select-utf8-or-ctext utf8 ctext)) | |
2213 | ;; Othewise, choose CTEXT. | |
2214 | (setq text ctext)))) | |
2215 | ;; If not yet decided, try STRING. | |
2216 | (or text | |
2217 | (setq text (condition-case nil | |
2218 | (x-get-selection type 'STRING) | |
2219 | (error nil)))) | |
2220 | (if (eq text utf8) | |
2221 | (setq last-coding-system-used utf8-coding)))) | |
2222 | ||
2223 | ((consp x-select-request-type) | |
2224 | (let ((tail x-select-request-type)) | |
2225 | (while (and tail (not text)) | |
2226 | (condition-case nil | |
2227 | (setq text (x-get-selection type (car tail))) | |
2228 | (error nil)) | |
2229 | (setq tail (cdr tail))))) | |
2230 | ||
2231 | (t | |
2232 | (condition-case nil | |
2233 | (setq text (x-get-selection type x-select-request-type)) | |
2234 | (error nil)))) | |
2235 | ||
2236 | (if text | |
2237 | (remove-text-properties 0 (length text) '(foreign-selection nil) text)) | |
2238 | text)) | |
2239 | ||
4390cc9c | 2240 | ;;; Return the value of the current X selection. |
ae10d597 | 2241 | ;;; Consult the selection, and the cut buffer. Treat empty strings |
4390cc9c | 2242 | ;;; as if they were unset. |
d854d839 RS |
2243 | ;;; If this function is called twice and finds the same text, |
2244 | ;;; it returns nil the second time. This is so that a single | |
2245 | ;;; selection won't be added to the kill ring over and over. | |
492878e4 | 2246 | (defun x-cut-buffer-or-selection-value () |
ae10d597 | 2247 | (let (clip-text primary-text cut-text) |
8ba13581 | 2248 | (when x-select-enable-clipboard |
c7d9df18 | 2249 | (setq clip-text (x-selection-value 'CLIPBOARD)) |
ae10d597 PJ |
2250 | (if (string= clip-text "") (setq clip-text nil)) |
2251 | ||
2252 | ;; Check the CLIPBOARD selection for 'newness', is it different | |
2253 | ;; from what we remebered them to be last time we did a | |
2254 | ;; cut/paste operation. | |
db95369b | 2255 | (setq clip-text |
ae10d597 PJ |
2256 | (cond;; check clipboard |
2257 | ((or (not clip-text) (string= clip-text "")) | |
2258 | (setq x-last-selected-text-clipboard nil)) | |
2259 | ((eq clip-text x-last-selected-text-clipboard) nil) | |
2260 | ((string= clip-text x-last-selected-text-clipboard) | |
db95369b | 2261 | ;; Record the newer string, |
ae10d597 PJ |
2262 | ;; so subsequent calls can use the `eq' test. |
2263 | (setq x-last-selected-text-clipboard clip-text) | |
2264 | nil) | |
2265 | (t | |
2266 | (setq x-last-selected-text-clipboard clip-text)))) | |
2267 | ) | |
8ba13581 | 2268 | |
c7d9df18 | 2269 | (setq primary-text (x-selection-value 'PRIMARY)) |
ae10d597 PJ |
2270 | ;; Check the PRIMARY selection for 'newness', is it different |
2271 | ;; from what we remebered them to be last time we did a | |
2272 | ;; cut/paste operation. | |
db95369b | 2273 | (setq primary-text |
ae10d597 PJ |
2274 | (cond;; check primary selection |
2275 | ((or (not primary-text) (string= primary-text "")) | |
2276 | (setq x-last-selected-text-primary nil)) | |
2277 | ((eq primary-text x-last-selected-text-primary) nil) | |
2278 | ((string= primary-text x-last-selected-text-primary) | |
db95369b | 2279 | ;; Record the newer string, |
ae10d597 PJ |
2280 | ;; so subsequent calls can use the `eq' test. |
2281 | (setq x-last-selected-text-primary primary-text) | |
2282 | nil) | |
2283 | (t | |
2284 | (setq x-last-selected-text-primary primary-text)))) | |
1be7f9b0 | 2285 | |
ae10d597 | 2286 | (setq cut-text (x-get-cut-buffer 0)) |
f6c7b4e7 | 2287 | |
ae10d597 PJ |
2288 | ;; Check the x cut buffer for 'newness', is it different |
2289 | ;; from what we remebered them to be last time we did a | |
2290 | ;; cut/paste operation. | |
db95369b | 2291 | (setq cut-text |
ae10d597 PJ |
2292 | (cond;; check primary selection |
2293 | ((or (not cut-text) (string= cut-text "")) | |
2294 | (setq x-last-selected-text-cut nil)) | |
2295 | ((eq cut-text x-last-selected-text-cut) nil) | |
2296 | ((string= cut-text x-last-selected-text-cut) | |
db95369b | 2297 | ;; Record the newer string, |
ae10d597 PJ |
2298 | ;; so subsequent calls can use the `eq' test. |
2299 | (setq x-last-selected-text-cut cut-text) | |
f6c7b4e7 JB |
2300 | nil) |
2301 | (t | |
ae10d597 PJ |
2302 | (setq x-last-selected-text-cut cut-text)))) |
2303 | ||
c7d9df18 KH |
2304 | ;; As we have done one selection, clear this now. |
2305 | (setq next-selection-coding-system nil) | |
2306 | ||
ae10d597 PJ |
2307 | ;; At this point we have recorded the current values for the |
2308 | ;; selection from clipboard (if we are supposed to) primary, | |
2309 | ;; and cut buffer. So return the first one that has changed | |
2310 | ;; (which is the first non-null one). | |
2311 | ;; | |
2312 | ;; NOTE: There will be cases where more than one of these has | |
2313 | ;; changed and the new values differ. This indicates that | |
2314 | ;; something like the following has happened since the last time | |
2315 | ;; we looked at the selections: Application X set all the | |
2316 | ;; selections, then Application Y set only one or two of them (say | |
2317 | ;; just the cut-buffer). In this case since we don't have | |
2318 | ;; timestamps there is no way to know what the 'correct' value to | |
2319 | ;; return is. The nice thing to do would be to tell the user we | |
2320 | ;; saw multiple possible selections and ask the user which was the | |
db95369b | 2321 | ;; one they wanted. |
ae10d597 PJ |
2322 | ;; This code is still a big improvement because now the user can |
2323 | ;; futz with the current selection and get emacs to pay attention | |
2324 | ;; to the cut buffer again (previously as soon as clipboard or | |
2325 | ;; primary had been set the cut buffer would essentially never be | |
2326 | ;; checked again). | |
2327 | (or clip-text primary-text cut-text) | |
2328 | )) | |
492878e4 | 2329 | |
2fb263f6 JB |
2330 | \f |
2331 | ;;; Do the actual X Windows setup here; the above code just defines | |
2332 | ;;; functions and variables that we use now. | |
2333 | ||
2334 | (setq command-line-args (x-handle-args command-line-args)) | |
800642d2 JB |
2335 | |
2336 | ;;; Make sure we have a valid resource name. | |
2337 | (or (stringp x-resource-name) | |
2338 | (let (i) | |
2339 | (setq x-resource-name (invocation-name)) | |
2340 | ||
2341 | ;; Change any . or * characters in x-resource-name to hyphens, | |
2342 | ;; so as not to choke when we use it in X resource queries. | |
2343 | (while (setq i (string-match "[.*]" x-resource-name)) | |
2344 | (aset x-resource-name i ?-)))) | |
2345 | ||
cf07d2bd DL |
2346 | (x-open-connection (or x-display-name |
2347 | (setq x-display-name (getenv "DISPLAY"))) | |
2348 | x-command-line-resources | |
2349 | ;; Exit Emacs with fatal error if this fails. | |
2350 | t) | |
2fb263f6 | 2351 | |
ffe1dd7a | 2352 | (setq frame-creation-function 'x-create-frame-with-faces) |
3d80ef3f | 2353 | |
ef599142 RS |
2354 | (setq x-cut-buffer-max (min (- (/ (x-server-max-request-size) 2) 100) |
2355 | x-cut-buffer-max)) | |
2356 | ||
6acdd93e KH |
2357 | ;; Setup the default fontset. |
2358 | (setup-default-fontset) | |
2359 | ||
cf07d2bd DL |
2360 | ;; Create the standard fontset. |
2361 | (create-fontset-from-fontset-spec standard-fontset-spec t) | |
2362 | ||
2363 | ;; Create fontset specified in X resources "Fontset-N" (N is 0, 1, ...). | |
2364 | (create-fontset-from-x-resource) | |
2365 | ||
2366 | ;; Try to create a fontset from a font specification which comes | |
2367 | ;; from initial-frame-alist, default-frame-alist, or X resource. | |
2368 | ;; A font specification in command line argument (i.e. -fn XXXX) | |
2369 | ;; should be already in default-frame-alist as a `font' | |
2370 | ;; parameter. However, any font specifications in site-start | |
2371 | ;; library, user's init file (.emacs), and default.el are not | |
2372 | ;; yet handled here. | |
2373 | ||
2374 | (let ((font (or (cdr (assq 'font initial-frame-alist)) | |
2375 | (cdr (assq 'font default-frame-alist)) | |
2376 | (x-get-resource "font" "Font"))) | |
2377 | xlfd-fields resolved-name) | |
2378 | (if (and font | |
2379 | (not (query-fontset font)) | |
2380 | (setq resolved-name (x-resolve-font-name font)) | |
2381 | (setq xlfd-fields (x-decompose-font-name font))) | |
2382 | (if (string= "fontset" (aref xlfd-fields xlfd-regexp-registry-subnum)) | |
2383 | (new-fontset font (x-complement-fontset-spec xlfd-fields nil)) | |
2384 | ;; Create a fontset from FONT. The fontset name is | |
2385 | ;; generated from FONT. | |
2386 | (create-fontset-from-ascii-font font resolved-name "startup")))) | |
f90080d4 | 2387 | |
5b0b2316 | 2388 | ;; Sun expects the menu bar cut and paste commands to use the clipboard. |
5b3dd5e8 | 2389 | ;; This has ,? to match both on Sunos and on Solaris. |
f81dbe56 | 2390 | (if (string-match "Sun Microsystems,? Inc\\." |
5b0b2316 RS |
2391 | (x-server-vendor)) |
2392 | (menu-bar-enable-clipboard)) | |
2393 | ||
5d20eba6 JB |
2394 | ;; Apply a geometry resource to the initial frame. Put it at the end |
2395 | ;; of the alist, so that anything specified on the command line takes | |
2396 | ;; precedence. | |
e42a4b86 RS |
2397 | (let* ((res-geometry (x-get-resource "geometry" "Geometry")) |
2398 | parsed) | |
5d20eba6 | 2399 | (if res-geometry |
e42a4b86 RS |
2400 | (progn |
2401 | (setq parsed (x-parse-geometry res-geometry)) | |
9b4234ae RS |
2402 | ;; If the resource specifies a position, |
2403 | ;; call the position and size "user-specified". | |
2404 | (if (or (assq 'top parsed) (assq 'left parsed)) | |
2405 | (setq parsed (cons '(user-position . t) | |
2406 | (cons '(user-size . t) parsed)))) | |
e42a4b86 RS |
2407 | ;; All geometry parms apply to the initial frame. |
2408 | (setq initial-frame-alist (append initial-frame-alist parsed)) | |
2409 | ;; The size parms apply to all frames. | |
2410 | (if (assq 'height parsed) | |
2411 | (setq default-frame-alist | |
2412 | (cons (cons 'height (cdr (assq 'height parsed))) | |
2413 | default-frame-alist))) | |
2414 | (if (assq 'width parsed) | |
2415 | (setq default-frame-alist | |
2416 | (cons (cons 'width (cdr (assq 'width parsed))) | |
2417 | default-frame-alist)))))) | |
5d20eba6 | 2418 | |
88046be2 | 2419 | ;; Check the reverseVideo resource. |
800642d2 JB |
2420 | (let ((case-fold-search t)) |
2421 | (let ((rv (x-get-resource "reverseVideo" "ReverseVideo"))) | |
2422 | (if (and rv | |
2423 | (string-match "^\\(true\\|yes\\|on\\)$" rv)) | |
2424 | (setq default-frame-alist | |
2425 | (cons '(reverse . t) default-frame-alist))))) | |
88046be2 | 2426 | |
553624bf RS |
2427 | ;; Set x-selection-timeout, measured in milliseconds. |
2428 | (let ((res-selection-timeout | |
2429 | (x-get-resource "selectionTimeout" "SelectionTimeout"))) | |
5c2867e0 | 2430 | (setq x-selection-timeout 20000) |
553624bf RS |
2431 | (if res-selection-timeout |
2432 | (setq x-selection-timeout (string-to-number res-selection-timeout)))) | |
2433 | ||
3d80ef3f | 2434 | (defun x-win-suspend-error () |
089bc712 | 2435 | (error "Suspending an Emacs running under X makes no sense")) |
c8c72d6b JB |
2436 | (add-hook 'suspend-hook 'x-win-suspend-error) |
2437 | ||
492878e4 JB |
2438 | ;;; Arrange for the kill and yank functions to set and check the clipboard. |
2439 | (setq interprogram-cut-function 'x-select-text) | |
2440 | (setq interprogram-paste-function 'x-cut-buffer-or-selection-value) | |
63c86e17 | 2441 | |
0cc6db57 JB |
2442 | ;;; Turn off window-splitting optimization; X is usually fast enough |
2443 | ;;; that this is only annoying. | |
2444 | (setq split-window-keep-point t) | |
5cdb3f1e | 2445 | |
53631723 | 2446 | ;; Don't show the frame name; that's redundant with X. |
982fa4e5 | 2447 | (setq-default mode-line-frame-identification " ") |
53631723 | 2448 | |
c3ef5084 SM |
2449 | ;; Motif direct handling of f10 wasn't working right, |
2450 | ;; So temporarily we've turned it off in lwlib-Xm.c | |
2451 | ;; and turned the Emacs f10 back on. | |
2452 | ;; ;; Motif normally handles f10 itself, so don't try to handle it a second time. | |
2453 | ;; (if (featurep 'motif) | |
2454 | ;; (global-set-key [f10] 'ignore)) | |
2455 | ||
2456 | ;; Turn on support for mouse wheels. | |
2457 | (mouse-wheel-mode 1) | |
9541a441 | 2458 | |
ab5796a9 | 2459 | ;;; arch-tag: f1501302-db8b-4d95-88e3-116697d89f78 |
5cdb3f1e | 2460 | ;;; x-win.el ends here |