annotate lisp/term/wyse50.el @ 341:84ec93d39015

Initial revision
author Jim Blandy <jimb@redhat.com>
date Fri, 19 Jul 1991 20:51:57 +0000
parents c43fb200671f
children 078fa30e9292
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
167
63d9c60bad2d *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 166
diff changeset
1 ; Like all the other files in this dir, this one needs to be redone
63d9c60bad2d *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 166
diff changeset
2 ; for the new way of handling function keys.
63d9c60bad2d *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 166
diff changeset
3
166
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4 ; Terminal mode for Wyse 50
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5 ; should work well for Televideo Tvi 925 though it's an overkill
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6 ; Author Daniel Pfeiffer <pfeiffer@cix.cict.fr> january 1991
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
7
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
8 (require 'keypad)
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
9
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
10 ; at least some of these should be transferred to keypad.el
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
11 (keypad-default "A" '(lambda () (interactive)
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
12 ; actually insert an empty line
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
13 (beginning-of-line)
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
14 (open-line 1)))
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
15 (keypad-default "E" 'kill-line)
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
16 ; (keypad-default "h" 'execute-extended-command)
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
17 (define-key function-keymap "h" 'execute-extended-command) ; bad, bad !!
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
18 (keypad-default "H" 'shell-command)
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
19 (keypad-default "I" '(lambda () (interactive)
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
20 (insert ? ))) ; works even in overwrite-mode
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
21 (keypad-default "L" '(lambda () (interactive)
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
22 ; delete the whole line
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
23 (beginning-of-line)
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
24 (kill-line 1)))
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
25 (keypad-default "M" 'overwrite-mode)
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
26 (keypad-default "\^e" 'shell) ; F5
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
27 (keypad-default "\^f" 'dired) ; F6
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
28 (keypad-default "\^g" 'rnews) ; F7
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
29 (keypad-default "\^h" 'rmail) ; F8
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
30
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
31 (keypad-default "\^i" 'delete-other-windows) ; F9
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
32 (keypad-default "\^j" 'other-window) ; F10
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
33 (keypad-default "\^k" 'split-window-vertically) ; F11
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
34
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
35 (keypad-default "\^m" 'help-for-help) ; F13
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
36 (keypad-default "\^n" 'toggle-screen-width) ; F14
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
37 (keypad-default "\^o" 'set-function-key) ; F15
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
38
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
39
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
40 ; Keys that don't conflict with Emacs defaults
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
41 ; I write \M-x and \C-x for what the user types, \ex and \^x for key sequences
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
42 (setup-terminal-keymap global-map
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
43 '(("\M-?" . ?\?) ; Esc ?
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
44 ("\eI" . ?T) ; Shift Tab
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
45 ("\eJ" . ?P) ; Shift Prev PAGE
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
46 ("\eK" . ?N) ; PAGE Next
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
47 ("\eY" . ?C) ; Shift Scrn CLR
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
48 ("\eT" . ?E) ; CLR Line
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
49 ("\^^" . ?h) ; Home
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
50 ("\M-\^^" . ?H) ; Esc Home
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
51 ("\eQ" . ?I) ; INS Char
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
52 ("\eE" . ?A) ; Shift Line INS
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
53 ("\eW" . ?D) ; DEL Char
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
54 ("\eR" . ?L))) ; Shift Line DEL
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
55
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
56 ; Print -- put in some extra security
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
57 (global-set-key "\eP" '(lambda () (interactive)
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
58 (if (y-or-n-p
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
59 (concat "Print buffer "
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
60 (buffer-name) "? "))
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
61 (print-buffer))))
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
62
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
63
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
64 ; this is an ugly hack for a nasty problem:
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
65 ; Wyse 50 takes one character cell to store video attributes (which seems to
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
66 ; explain width 79 rather than 80, column 1 is not used!!!).
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
67 ; On killing (C-x C-c) the end inverse code (on column 1 of line 24)
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
68 ; of the mode line is overwritten AFTER all the y-or-n questions.
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
69 ; This causes the attribute to remain in effect until the mode line has
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
70 ; scrolled of the screen. Suspending (C-z) does not cause this problem.
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
71 ; On such terminals, Emacs should sacrifice the first and last character of
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
72 ; each mode line, rather than a whole screen column!
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
73 (setq kill-emacs-hook '(lambda () (interactive)
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
74 (send-string-to-terminal
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
75 (concat "\ea23R" (1+ (screen-width)) "C\eG0"))))
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
76
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
77
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
78 ; This function does more than its name which was copied from term/vt100.el
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
79 ; Some more neutral name should be used thru-out term/*.el to simplify
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
80 ; programming term-setup-hook
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
81 (defun enable-arrow-keys ()
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
82 "To be called by term-setup-hook. Overrides 6 Emacs standard keys
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
83 whose functions are then typed as follows:
173
c43fb200671f *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 167
diff changeset
84 C-a Funct left-arrow, C-a C-a
166
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
85 C-h M-?
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
86 LFD Funct Return, some modes override down-arrow via LFD
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
87 C-k CLR Line
173
c43fb200671f *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 167
diff changeset
88 C-l Shift Scrn CLR
166
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
89 M-r M-x move-to-window-line, Funct up-arrow or down-arrow are similar
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
90 All special keys except Send, Shift Ins, Shift Home and shifted functions keys
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
91 are assigned some hopefully useful meaning."
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
92 (interactive)
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
93
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
94 ; Function keys
173
c43fb200671f *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 167
diff changeset
95 (define-key global-map "\^a" (define-prefix-command 'Funct-prefix))
166
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
96
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
97 ; Arrow keys
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
98 (setup-terminal-keymap global-map
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
99 '(("\C-a\C-a" . beginning-of-line) ; for auld lang syne
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
100 ("\^a\^m\^m" . newline-and-indent)
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
101
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
102 ("\^k" . ?u) ; up-arrow
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
103 ("\^j" . ?d) ; down-arrow
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
104 ("\^l" . ?r) ; right-arrow
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
105 ("\^h" . ?l) ; left-arrow
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
106
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
107 ; Terminal needs both Ins and Repl but Emacs knows how to toggle
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
108 ; with just one key. No need to override Ins which is "\eq".
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
109 ("\er" . ?M) ; Repl
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
110
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
111 ("\^a\^i\^m" . ?t) ; Funct Tab
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
112
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
113 ; Function keys F1 thru F16 (we don't define shifted function keys,
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
114 ; they send the same code with the middle character in lowercase.
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
115 ; eg. "Shift F2" is the same as "Funct a" which is more mnemonic but
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
116 ; keypad.el doesn't provide enough codes to accomodate all these)
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
117 ("\^a@\^m" . 1) ("\^aH\^m" . 9)
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
118 ("\^aA\^m" . 2) ("\^aI\^m" . 10)
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
119 ("\^aB\^m" . 3) ("\^aJ\^m" . 11)
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
120 ("\^aC\^m" . 4) ("\^aK\^m" . 12)
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
121 ("\^aD\^m" . 5) ("\^aL\^m" . 13)
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
122 ("\^aE\^m" . 6) ("\^aM\^m" . 14)
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
123 ("\^aF\^m" . 7) ("\^aN\^m" . 15)
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
124 ("\^aG\^m" . 8) ("\^aO\^m" . 16)
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
125
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
126 ; Funct Arrow keys
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
127 ("\^a\^k\^m" . (lambda (n) (interactive "p")
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
128 (move-to-window-line (1- n))))
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
129 ("\^a\^j\^m" . (lambda (n) (interactive "p")
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
130 (move-to-window-line (- n))))
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
131 ("\^a\^h\^m" . beginning-of-line)
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
132 ("\^a\^l\^m" . end-of-line)))
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
133
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
134 ; forget self to put memory to some serious use
173
c43fb200671f *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 167
diff changeset
135 (fmakunbound 'enable-arrow-keys))
166
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
136
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
137
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
138 (defun toggle-screen-width ()
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
139 "Alternate between 80 and 132 columns."
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
140 (interactive)
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
141 (if (<= (screen-width) 80)
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
142 (progn
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
143 (send-string-to-terminal "\e`;")
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
144 (set-screen-width 131))
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
145 (send-string-to-terminal "\e`:")
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
146 (set-screen-width 79)))
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
147
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
148 ;-----------------------------------------------------------------------------
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
149 ; this function is completely independent of wyse, it should be auto-loadable
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
150 ; (presumably from keypad.el) for use in ~/emacs. It should be the only thing
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
151 ; users need to know about all this unintelligible "forwarding" gibberish.
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
152 ; This paves the way for a save-function-keys (some day or sleepless night)
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
153 ; that will edit calls like (set-function-key ?x 'do-whatever) in ~/.emacs.
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
154 (defun set-function-key (key &optional def)
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
155 "Prompt for a function or other special key and assign it a meaning.
173
c43fb200671f *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 167
diff changeset
156 The key must have been \"forwarded\" to a character by term/*.el.
166
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
157
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
158 As a function takes two args CHAR and DEF, with DEF as in define-key.
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
159 If your terminals term/*.el forwards a physical key to CHAR (before or after
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
160 calling this function), then that key will mean DEF, else it is ignored.
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
161 CHAR is one of the following:
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
162 For numbered function keys
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
163 0, 1, ..., 24 (or ?\\^@, ?\\^a, ..., ?\\^x which is the same)
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
164 For keypad keys in application mode
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
165 ?0, ?1, ..., ?9 -- keypad key labelled with that digit,
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
166 but only if that key is not an arrow key (see ?u, ?d, ?r, ?l).
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
167 ?- -- keypad key labelled `-'.
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
168 ?. -- keypad key labelled `.'.
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
169 ?, -- keypad key labelled `,'.
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
170 ?e -- key labelled enter.
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
171 For keys labelled with some words or a symbol
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
172 ?a -- clear all tabs key.
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
173 ?A -- insert line key.
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
174 ?C -- clear screen key.
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
175 ?c -- erase key.
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
176 ?D -- delete character key.
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
177 ?d -- down-arrow.
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
178 ?E -- clear to end of line key.
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
179 ?e -- key labelled enter.
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
180 ?f -- find key or search key.
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
181 ?F -- scroll forward key.
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
182 ?H -- home-down.
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
183 ?h -- home-position key.
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
184 ?I -- insert character key
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
185 If there is just an \"insert\" key, it should be this.
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
186 ?k -- delete key or remove key.
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
187 ?L -- delete line key.
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
188 ?l -- left-arrow.
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
189 ?M -- exit insert mode key.
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
190 ?N -- next page key.
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
191 ?p -- portrait mode.
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
192 ?P -- previous page key.
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
193 ?q -- landscape mode.
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
194 ?r -- right-arrow.
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
195 ?R -- scroll reverse key.
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
196 ?S -- clear to end of screen key.
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
197 ?s -- select key.
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
198 ?t -- clear tab this column key.
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
199 ?T -- set tab this column key.
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
200 ?u -- up-arrow.
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
201 ?x -- do key.
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
202 ?\\? -- help."
173
c43fb200671f *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 167
diff changeset
203 (interactive "kHit key to redefine")
166
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
204 (let ((map function-keymap))
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
205 (if (integerp key)
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
206 ()
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
207 ; reinvent lookup-key to get (map . char) instead of def of char in map
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
208 (setq map (or (lookup-key global-map
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
209 (substring key 0 (1- (length key))))
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
210 global-map)
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
211 key (string-to-char (substring key (1- (length key)))))
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
212 (while (symbolp map)
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
213 (setq map (symbol-function map)))
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
214 (setq map (if (listp map)
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
215 (cdr (assq key (cdr map)))
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
216 (aref map key)))
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
217 (if (and (consp map)
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
218 (integerp (cdr map)))
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
219 (setq key (cdr map)
173
c43fb200671f *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 167
diff changeset
220 map (car map)) ; function-keymap usually
166
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
221 (error "Key is not a \"forwarded\" definition.")))
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
222 (if def
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
223 ()
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
224 (setq def (read-command "command (default last keyboard macro): "))
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
225 (if (string-equal (symbol-name def) "")
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
226 (setq def last-kbd-macro))
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
227 (setq command-history ; nonsense really, since you don't see
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
228 (cons ; key as in a function call (?char)
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
229 (list 'set-function-key key
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
230 (if (stringp def) def (list 'quote def)))
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
231 command-history)))
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
232 ; all we do when called as a function
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
233 (define-key map (char-to-string key) def)))
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
234
4c0d89aec359 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
235