annotate lisp/x-win-xfree86.el @ 5075:868a9ffcc37b

Normally return a compiled function if one argument, #'constantly. 2010-02-24 Aidan Kehoe <kehoea@parhasard.net> * cl-extra.el (constantly): Normally return a compiled function from #'constantly if we are handed a single argument. Shouldn't actually matter, the overhead for returning a single constant in a lambda form vs. in a compiled function is minuscule, but using compiled functions as much as possible is good style in XEmacs, our interpreter is not stellar (nor indeed should it need to be).
author Aidan Kehoe <kehoea@parhasard.net>
date Wed, 24 Feb 2010 17:17:13 +0000
parents e3ef34f57070
children 17fe69fff7fa
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1 ;;; x-win-xfree86.el --- runtime initialization for XFree86 servers
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2 ;; Copyright (C) 1995 Sun Microsystems, Inc.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
3 ;; Copyright (C) 1995 Ben Wing.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
4
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
5 ;; Author: Ben Wing
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
6 ;; Author: Martin Buchholz (rewritten to use function-key-map)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
7 ;; Keywords: terminals
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
8
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
9 ;; This file is part of XEmacs.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
10
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
11 ;; XEmacs is free software; you can redistribute it and/or modify it
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
12 ;; under the terms of the GNU General Public License as published by
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
13 ;; the Free Software Foundation; either version 2, or (at your option)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
14 ;; any later version.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
15
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
16 ;; XEmacs is distributed in the hope that it will be useful, but
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
17 ;; WITHOUT ANY WARRANTY; without even the implied warranty of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
19 ;; General Public License for more details.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
20
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
21 ;; You should have received a copy of the GNU General Public License
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
22 ;; along with XEmacs; see the file COPYING. If not, write to the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
23 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
24 ;; Boston, MA 02111-1307, USA.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
25
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
26 ;;; Commentary:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
27
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
28 ;; This file is loaded by x-win.el at run-time when we are sure that XEmacs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
29 ;; is running on the display of something running XFree86 (Linux,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
30 ;; NetBSD, FreeBSD, and perhaps other Intel Unixen).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
31
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
32 ;;; #### bleck!!! Use key-translation-map!
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
33
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
34 ;;; #### Counter-bleck!! We shouldn't override a user binding for F13.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
35 ;;; So we use function-key-map for now.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
36 ;;; When we've implemented a fallback-style equivalent of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
37 ;;; keyboard-translate-table, we'll use that instead. (martin)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
38
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
39 ;; For no obvious reason, shift-F1 is called F13, although Meta-F1 and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
40 ;; Control-F1 have normal names.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
41
502
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 428
diff changeset
42 ;;; Code:
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 428
diff changeset
43
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 428
diff changeset
44 (globally-declare-fboundp
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 428
diff changeset
45 '(x-keysym-on-keyboard-p x-keysym-on-keyboard-sans-modifiers-p))
7039e6323819 [xemacs-hg @ 2001-05-04 22:41:46 by ben]
ben
parents: 428
diff changeset
46
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
47 ;;;###autoload
4477
e34711681f30 Don't determine whether to call general device-type code at startup,
Aidan Kehoe <kehoea@parhasard.net>
parents: 3171
diff changeset
48 (defun x-win-init-xfree86 (device)
3171
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 502
diff changeset
49
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 502
diff changeset
50 ;; We know this keyboard is an XFree86 keyboard. As such, we can predict
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 502
diff changeset
51 ;; what key scan codes will correspond to the keys on US keyboard layout,
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 502
diff changeset
52 ;; and we can use that information to fall back to the US layout when
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 502
diff changeset
53 ;; looking up commands that would otherwise fail. (Cf. the hard-coding of
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 502
diff changeset
54 ;; this information in /usr/X11R6/lib/X11/xkb/keycodes/xfree86 )
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 502
diff changeset
55 ;;
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 502
diff changeset
56 ;; These settings for x-us-keymap-first-keycode and
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 502
diff changeset
57 ;; x-us-keymap-description were determined with
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 502
diff changeset
58 ;;
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 502
diff changeset
59 ;; setxkbmap us
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 502
diff changeset
60 ;; xmodmap -pke > keyboard-description.txt
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 502
diff changeset
61 ;;
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 502
diff changeset
62 ;; "8" is the key code of the first line, x-us-keymap-description is
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 502
diff changeset
63 ;; taken from the column describing the bindings.
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 502
diff changeset
64
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 502
diff changeset
65 (setq x-us-keymap-first-keycode 8
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 502
diff changeset
66 x-us-keymap-description
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 502
diff changeset
67 [nil nil [?1 ?!] [?2 ?@] [?3 ?\#] [?4 ?$] [?5 ?%] [?6 ?^] [?7 ?&]
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 502
diff changeset
68 [?8 ?*] [?9 ?\(] [?0 ?\)] [?- ?_] [?= ?+] nil ?\t [?q ?Q]
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 502
diff changeset
69 [?w ?W] [?e ?E] [?r ?R] [?t ?T] [?y ?Y] [?u ?U] [?i ?I] [?o ?O]
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 502
diff changeset
70 [?p ?P] [?\[ ?{] [?\] ?}] nil nil [?a ?A] [?s ?S] [?d ?D]
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 502
diff changeset
71 [?f ?F] [?g ?G] [?h ?H] [?j ?J] [?k ?K] [?l ?L] [?\; ?:]
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 502
diff changeset
72 [?\' ?\"] [?\` ?~] nil [?\\ ?|] [?z ?Z] [?x ?X] [?c ?C]
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 502
diff changeset
73 [?v ?V] [?b ?B] [?n ?N] [?m ?M] [?\, ?<] [?\. ?>] [?/ ?\?]
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 502
diff changeset
74 nil ?* nil ?\ nil nil nil nil nil nil nil nil nil nil nil
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 502
diff changeset
75 nil nil ?7 ?8 ?9 ?- ?4 ?5 ?6 ?+ ?1 ?2 ?3 ?0 ?\. nil nil
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 502
diff changeset
76 [?< ?>] nil nil nil nil nil nil nil nil nil nil nil nil
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 502
diff changeset
77 nil nil nil nil nil ?/ nil nil nil nil nil nil nil nil
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 502
diff changeset
78 nil nil nil nil nil ?=])
4cad7ff4a200 [xemacs-hg @ 2005-12-24 19:53:53 by aidan]
aidan
parents: 502
diff changeset
79
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
80 (loop for (key sane-key) in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
81 '((f13 f1)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
82 (f14 f2)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
83 (f15 f3)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
84 (f16 f4)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
85 (f17 f5)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
86 (f18 f6)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
87 (f19 f7)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
88 (f20 f8)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
89 (f21 f9)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
90 (f22 f10)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
91 (f23 f11)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
92 (f24 f12))
4482
e3ef34f57070 Bind function-key-map correctly in device-specific startup code.
Aidan Kehoe <kehoea@parhasard.net>
parents: 4477
diff changeset
93 ;; Get the correct value for function-key-map
e3ef34f57070 Bind function-key-map correctly in device-specific startup code.
Aidan Kehoe <kehoea@parhasard.net>
parents: 4477
diff changeset
94 with function-key-map = (symbol-value-in-console 'function-key-map
e3ef34f57070 Bind function-key-map correctly in device-specific startup code.
Aidan Kehoe <kehoea@parhasard.net>
parents: 4477
diff changeset
95 (device-console device)
e3ef34f57070 Bind function-key-map correctly in device-specific startup code.
Aidan Kehoe <kehoea@parhasard.net>
parents: 4477
diff changeset
96 function-key-map)
e3ef34f57070 Bind function-key-map correctly in device-specific startup code.
Aidan Kehoe <kehoea@parhasard.net>
parents: 4477
diff changeset
97
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
98 do
4477
e34711681f30 Don't determine whether to call general device-type code at startup,
Aidan Kehoe <kehoea@parhasard.net>
parents: 3171
diff changeset
99 (when (and (x-keysym-on-keyboard-p key device)
e34711681f30 Don't determine whether to call general device-type code at startup,
Aidan Kehoe <kehoea@parhasard.net>
parents: 3171
diff changeset
100 (not (x-keysym-on-keyboard-sans-modifiers-p key device)))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
101 ;; define also the control, meta, and meta-control versions.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
102 (loop for mods in '(() (control) (meta) (meta control)) do
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
103 (define-key function-key-map `[(,@mods ,key)] `[(shift ,@mods ,sane-key)])
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
104 ))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
105
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
106 ;;; x-win-xfree86.el ends here