|
|
1.1 root 1: .ds [ [\\s-2
2: .ds ] \\s+2]
3: .ds _ \\v'+0u'\(ru\\v'-0u'\|
4: .if t .ds .3 .4v
5: .if n .ds .3 1v
6: .if t .ds Es \\e\\h'-.3m'\"Backslash too wide on Harris
7: .if n .ds Es \\e
8: .TH BTERMINAL 5 local
9: .tr **
10: .SH NAME
11: bterminal \-
12: adapting the
13: .I B
14: system to your local terminals
15: .SH DESCRIPTION
16: The
17: .I B
18: system uses the termcap library to address the terminal,
19: and determines the codes sent by your terminal's function keys
20: from the termcap database.
21: To this end it uses the environment variables TERM and TERMCAP
22: to determine the type and capabilities of your terminal.
23: (See
24: .IR tset (1)
25: and
26: .IR termcap (5)
27: for the exact use of termcap.)
28: .LP
29: You can also redefine the binding of editing operations
30: in a
31: .I "key definitions file."
32: There are a number of places where this file can be found,
33: so that there can be different key bindings per terminal
34: and per user.
35: It is even possible to define an environment variable giving
36: this place.
37: .SH DEFAULT KEY BINDINGS
38: The following table gives the names of the editing operations,
39: and the default bindings.
40: .LP
41: .in +2c
42: .ta 3c 6c
43: .if n .ta 12n 32n
44: .nf
45: Name Default bindings Termcap bindings
46: .sp \*(.3
47: accept ^\|I (1)
48: return ^\|M
49: widen "\*(Esew" \fIk1\fP (2)
50: first "\*(Esef" \fIk2\fP
51: last "\*(Esel" \fIk3\fP
52: extend "\*(Esee" \fIk4\fP
53: upline "\*(Eseu" \fIk5\fP
54: previous "\*(Esep" \fIk6\fP
55: next "\*(Esen" \fIk7\fP
56: downline "\*(Esed" \fIk8\fP
57: up "\*(EseU" \fIku\fP
58: down "\*(EseD" \fIkd\fP
59: left "\*(Ese," \fIkl\fP
60: right "\*(Ese." \fIkr\fP
61: goto ^\|G
62: undo ^\|H
63: redo ^\|U
64: delete ^\|D
65: copy ^\|C
66: record ^\|R
67: play ^\|P
68: look ^\|L
69: help "\*(Ese?"
70: exit ^\|X
71: .sp \*(.3
72: ignore (3)
73: term\*_init (4) \fIks\fP
74: term\*_done (4) \fIke\fP
75: .fi
76: .in -2c
77: .LP
78: Notes:
79: .IP (1)
80: \&^\|X means the Control-X character, \*(Ese means escape;
81: see below for an exact description of the format of key definitions.
82: .IP (2)
83: The termcap entries
84: .I "k1 ... k8"
85: describe the codes sent by the function keys,
86: and
87: .I "ku ... kd"
88: decribe the codes sent by the arrow keys.
89: .IP (3)
90: With the name \fIignore\fP you can declare input strings illegal; see below.
91: .IP (4)
92: The termcap entries \fIks\fP and \fIke\fP are sent to the terminal
93: at startup and upon exiting.
94: .LP
95: .ne 3
96: The third column of the table describes additional bindings
97: for some operations that are derived from termcap,
98: if the termcap entry for your terminal defines that capability.
99: If a termcap definition conflicts with some other default,
100: the definition derived from the termcap holds.
101: (For instance, on a Televideo the left arrow key sends ^\|H;
102: this means that the binding of
103: .I undo
104: to ^\|H (or \*[BACKSPACE\*]) is no longer valid.)
105: .SH KEY DEFINITIONS FILE
106: Each line in the key definitions file contains one definition or a comment.
107: A definition consists of the name of the editing operation
108: (see the table above), an equals sign
109: .RB ( = ),
110: and one or more
111: .I items.
112: Each
113: .I item
114: can be a string, a number, or a control-character.
115: The latter is written as `\|^\|' followed by a letter.
116: A number is an octal number if it starts with 0 (it should not
117: include 8 or 9, then), otherwise it is decimal;
118: it stands for the corresponding ASCII character.
119: Strings are delimited by single
120: .RB ( ' )
121: or double (\fB"\fP) quotes.
122: Inside strings, the following escape sequences are recognized:
123: .sp \*(.3
124: .in +0.5i
125: .ta 2c
126: .nf
127: \*(Esddd (one to three octal digits) the ASCII character ddd
128: \*(Esb backspace, 010
129: \*(Ese escape, 033
130: \*(Esf formfeed, 014
131: \*(Esn linefeed, 012
132: \*(Esr carriage return, 015
133: \*(Est tab, 011
134: \*(Es\fIchar\fP any other character (notably \e or ' or ")
135: .fi
136: .in -0.5i
137: .sp \*(.3
138: Finally, everything from a `#' character to the end of the line is
139: taken as a comment (except inside a string, of course).
140: .LP
141: Each definition implies that the concatenation of its items, when received
142: as input, will provoke the execution of the designated editing
143: operation.
144: A definition for the `operation'
145: .I ignore
146: means that this input string will be treated as an illegal operation
147: (the
148: .I B
149: system will try to ring the bell).
150: .LP
151: Definitions for the
152: .I term\*_init
153: and
154: .I term\*_done
155: operations define strings that will be sent
156: .I to
157: the terminal at initialization time, and on exiting, respectively.
158: These can be used to set programmable function keys, for instance.
159: .LP
160: Note that the definitions in the file only
161: .I add
162: to the already existing key bindings (see the defaults above).
163: When one definition is an initial subsequence of the other,
164: the last one given in the file holds.
165: It is probably counter-productive to have the first item of
166: a definition start with a printable character,
167: as this would make it impossible to enter that character.
168: .LP
169: Beware that you cannot use ^\|] as a key binding when your interrupt
170: character is not the default \*[DEL\*] key; see below.
171: .LP
172: Examples:
173: .LP
174: .in +0.5i
175: .ta 20n
176: .nf
177: widen = "\*(Esep\*(Esr" # HP-2621 function key 1 is escape p return
178: accept = ^\|I # tab
179: undo = ^\|A "O" ^\|M # unshifted function key 11 on Televideo
180: # used because left arrow overwrites ^\|H
181: ignore = 0177 # ignore DEL (a common noise character)
182: .fi
183: .in -0.5i
184: .LP
185: The first of the following four files found by the B system is used to
186: read key bindings from:
187: .LP
188: .in +0.5i
189: .nf
190: $HOME/.Bed\*_$TERM
191: B\*_LIB/.Bed\*_$TERM
192: $HOME/.Bed\*_def
193: B\*_LIB/.Bed\*_def
194: .fi
195: .in -0.5i
196: .LP
197: Here $HOME and $TERM are the values of the environment variables;
198: see sh(1) and tset(1).
199: B\*_LIB stands for a directory appointed by your system administrator
200: (normally /usr/new/lib/B) where various auxiliary files for the
201: .I B
202: system are kept.
203: This organization allows different key bindings per user and
204: per terminal.
205: .SH HELP FILE
206: The file B\*_LIB/Bed\*_help contains a screenful of help information,
207: describing the editing operations and the keys to which they are bound.
208: If you change the key bindings this information is not correct
209: anymore, and so you can define an environment variable BED\*_HELP,
210: that gives the pathname of the file to be printed
211: when the
212: .I help
213: operation is executed.
214: .SH INTERRUPT
215: To interrupt the execution of a
216: .I B
217: command you should normally use the \*[BREAK\*] key.
218: If your interrupt character is the \*[DEL\*] key, this will
219: also work.
220: However, if you have set your interrupt character
221: with
222: .IR stty (1)
223: to something other than \*[DEL\*],
224: the
225: .I B
226: system will in turn reset it to ^\|].
227: This is done to prevent a collision with a key that accesses one of the
228: .I B
229: editing operations, like ^\|C for copy.
230: It means that you cannot use ^\|] as a key binding in a description file
231: in this case.
232: .SH INVERSE VIDEO (standout mode)
233: If your terminal skips a position on the screen when switching
234: to or from inverse video, you are out of luck.
235: The
236: .I B
237: editor must be able to display part of a word in inverse video
238: and the rest normal, without surrounding spaces in between.
239: You can still use
240: .I B
241: (without the
242: .I B
243: editor) with the command
244: .BR "b -e" ;
245: see
246: .IR b (1).
247: .SH GOTO OPERATION
248: The Goto operation can only be used on terminals that can move
249: the cursor locally, eg. the arrow keys do not send any codes to
250: the host computer.
251: If your terminal can be
252: .I sensed
253: for the cursor position, then you can use the operation
254: to tell it you moved the cursor away.
255: You should ask your system administrator to add the non standard
256: capabilities \fIsp\fP and \fIcp\fP to the termcap entry for
257: your terminal.
258: The \fIsp\fP capability should define the string sent by the
259: .I B
260: system to the terminal to request the cursor position.
261: The \fIcp\fP capability must define the format of the cursor position string
262: as returned by the terminal;
263: most of the % escapes as defined in termcap(5) for cursor addressing
264: are recognized.
265: (For example,
266: .IP
267: cp=\*(EsE&a%r%3c%3Y^\|M:sp=\*(EsE`\*(Es021
268: .LP
269: are the entries for a HP2621 terminal.)
270: .SH FILES
271: .ta 25n
272: .if n .ta 18n
273: .nf
274: B\*_LIB /usr/new/lib/B, unless changed by your system administrator
275: $HOME/.Bed\*_$TERM key definitions file; first of these four holds
276: B\*_LIB/.Bed\*_$TERM
277: $HOME/.Bed\*_def
278: B\*_LIB/.Bed\*_def
279: $BED\*_HELP file with one screenful of help info
280: B\*_LIB/Bed\*_help default help file
281: .fi
282: .SH BUGS
283: In searching for the key definitions file .Bed\*_$TERM
284: the
285: .I B
286: system doesn't recognize aliases for terminal types.
287: Watch out for variations like e.g. TERM=2621-wl.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.