1 /*	EBIND:		Initial default key to function bindings for
2 			MicroEMACS 4.00
3 */
4 
5 /*
6  * Command table.
7  * This table  is *roughly* in ASCII order, left to right across the
8  * characters of the command. It is being searched sequentially for
9  * keystrokes and the &bind function. Thus I am placing more frequent
10  * keys at the top . . .
11  */
12 NOSHARE KEYTAB	keytab[NBINDS] = {
13 
14 #if	MOUSE
15 	{MOUS|'m',		BINDFNC,	mmove},
16 	{MOUS|CTRL|'m',		BINDFNC,	mmove},
17 	{MOUS|SHFT|'m',		BINDFNC,	mmove},
18 	{MOUS|CTRL|SHFT|'m',	BINDFNC,	mmove},
19 	{MOUS|'a',		BINDFNC,	movemd},
20 	{MOUS|'b',		BINDFNC,	movemu},
21 	{MOUS|'e',		BINDFNC,	mregdown},
22 	{MOUS|'f',		BINDFNC,	mregup},
23 	{MOUS|'1',		BINDFNC,	resizm},
24 #endif
25 
26 	{CTRL|'A',		BINDFNC,	gotobol},
27 	{CTRL|'B',		BINDFNC,	backchar},
28 	{CTRL|'C',		BINDFNC,	insspace},
29 	{CTRL|'D',		BINDFNC,	forwdel},
30 	{CTRL|'E',		BINDFNC,	gotoeol},
31 	{CTRL|'F',		BINDFNC,	forwchar},
32 	{CTRL|'G',		BINDFNC,	ctrlg},
33 	{CTRL|'H',		BINDFNC,	backdel},
34 	{CTRL|'I',		BINDFNC,	tab},
35 	{CTRL|'J',		BINDFNC,	indent},
36 	{CTRL|'K',		BINDFNC,	killtext},
37 	{CTRL|'L',		BINDFNC,	refresh},
38 	{CTRL|'M',		BINDFNC,	newline},
39 	{CTRL|'N',		BINDFNC,	forwline},
40 	{CTRL|'O',		BINDFNC,	openline},
41 	{CTRL|'P',		BINDFNC,	backline},
42 	{CTRL|'Q',		BINDFNC,	quote},
43 	{CTRL|'R',		BINDFNC,	backsearch},
44 	{CTRL|'S',		BINDFNC,	forwsearch},
45 	{CTRL|'T',		BINDFNC,	twiddle},
46 	{CTRL|'U',		BINDFNC,	unarg},
47 	{CTRL|'V',		BINDFNC,	forwpage},
48 	{CTRL|'W',		BINDFNC,	killregion},
49 	{CTRL|'X',		BINDFNC,	cex},
50 	{CTRL|'Y',		BINDFNC,	yank},
51 	{CTRL|'Z',		BINDFNC,	backpage},
52 	{CTRL|'[',		BINDFNC,	meta},
53 	{CTRL|'\\',		BINDFNC,	forwsearch},
54 	{CTRL|'^',		BINDFNC,	quote},
55 	{CTRL|'_',		BINDFNC,	undo},
56 	{CTLX|CTRL|'A',		BINDFNC,	fileapp},
57 	{CTLX|CTRL|'B', 	BINDFNC,	listbuffers},
58 	{CTLX|CTRL|'C', 	BINDFNC,	quit},
59 	{CTLX|CTRL|'D', 	BINDFNC,	detab},
60 	{CTLX|CTRL|'E', 	BINDFNC,	entab},
61 	{CTLX|CTRL|'F', 	BINDFNC,	filefind},
62 	{CTLX|CTRL|'I', 	BINDFNC,	insfile},
63 	{CTLX|CTRL|'K',		BINDFNC,	macrotokey},
64 	{CTLX|CTRL|'L', 	BINDFNC,	lowerregion},
65 	{CTLX|CTRL|'M', 	BINDFNC,	delmode},
66 	{CTLX|CTRL|'N', 	BINDFNC,	mvdnwind},
67 	{CTLX|CTRL|'O', 	BINDFNC,	deblank},
68 	{CTLX|CTRL|'P', 	BINDFNC,	mvupwind},
69 	{CTLX|CTRL|'R', 	BINDFNC,	fileread},
70 	{CTLX|CTRL|'S', 	BINDFNC,	filesave},
71 	{CTLX|CTRL|'T', 	BINDFNC,	trim},
72 	{CTLX|CTRL|'U', 	BINDFNC,	upperregion},
73 	{CTLX|CTRL|'V', 	BINDFNC,	viewfile},
74 	{CTLX|CTRL|'W', 	BINDFNC,	filewrite},
75 	{CTLX|CTRL|'X', 	BINDFNC,	swapmark},
76 	{CTLX|CTRL|'Z', 	BINDFNC,	shrinkwind},
77 	{CTLX|CTRL|'\\', 	BINDFNC,	filesave},
78 	{CTLX|'?',		BINDFNC,	deskey},
79 	{CTLX|'!',		BINDFNC,	spawn},
80 	{CTLX|'@',		BINDFNC,	pipecmd},
81 	{CTLX|'#',		BINDFNC,	filter},
82 	{CTLX|'$',		BINDFNC,	execprg},
83 	{CTLX|'=',		BINDFNC,	showcpos},
84 	{CTLX|'(',		BINDFNC,	ctlxlp},
85 	{CTLX|')',		BINDFNC,	ctlxrp},
86 	{CTLX|'<',		BINDFNC,	narrow},
87 	{CTLX|'>',		BINDFNC,	widen},
88 	{CTLX|'^',		BINDFNC,	enlargewind},
89 	{CTLX|' ',		BINDFNC,	remmark},
90 	{CTLX|'0',		BINDFNC,	delwind},
91 	{CTLX|'1',		BINDFNC,	onlywind},
92 	{CTLX|'2',		BINDFNC,	splitwind},
93 	{CTLX|'A',		BINDFNC,	setvar},
94 	{CTLX|'B',		BINDFNC,	usebuffer},
95 	{CTLX|'C',		BINDFNC,	spawncli},
96 #if	BSD || FREEBSD || VMS || SUN || HPUX8 || HPUX9 || AVIION
97 	{CTLX|'D',		BINDFNC,	bktoshell},
98 #endif
99 	{CTLX|'E',		BINDFNC,	ctlxe},
100 	{CTLX|'G',		BINDFNC,	dispvar},
101 	{CTLX|'K',		BINDFNC,	killbuffer},
102 	{CTLX|'M',		BINDFNC,	setmod},
103 	{CTLX|'N',		BINDFNC,	filename},
104 	{CTLX|'O',		BINDFNC,	nextwind},
105 	{CTLX|'P',		BINDFNC,	prevwind},
106 #if	ISRCH
107 	{CTLX|'R',		BINDFNC,	risearch},
108 	{CTLX|'S',		BINDFNC,	fisearch},
109 #endif
110 	{CTLX|'U',		BINDFNC,	undo_list},
111 	{CTLX|'W',		BINDFNC,	resize},
112 	{CTLX|'X',		BINDFNC,	nextbuffer},
113 	{CTLX|'Y',		BINDFNC,	cycle_ring},
114 	{CTLX|'Z',		BINDFNC,	enlargewind},
115 	{META|CTRL|'C', 	BINDFNC,	wordcount},
116 	{META|CTRL|'E', 	BINDFNC,	execproc},
117 	{META|CTRL|'F', 	BINDFNC,	getfence},
118 	{META|CTRL|'G', 	BINDFNC,	gotomark},
119 	{META|CTRL|'H', 	BINDFNC,	delbword},
120 	{META|CTRL|'K', 	BINDFNC,	unbindkey},
121 	{META|CTRL|'L', 	BINDFNC,	reposition},
122 	{META|CTRL|'M', 	BINDFNC,	delgmode},
123 	{META|CTRL|'N', 	BINDFNC,	namebuffer},
124 	{META|CTRL|'R', 	BINDFNC,	qreplace},
125 	{META|CTRL|'S', 	BINDFNC,	execfile},
126 	{META|CTRL|'V', 	BINDFNC,	nextdown},
127 	{META|CTRL|'U', 	BINDFNC,	undo_delete},
128 	{META|CTRL|'W', 	BINDFNC,	killpara},
129 	{META|CTRL|'X', 	BINDFNC,	execcmd},
130 	{META|CTRL|'Y',		BINDFNC,	clear_ring},
131 	{META|CTRL|'Z', 	BINDFNC,	nextup},
132 	{META|CTRL|'\\', 	BINDFNC,	execfile},
133 	{META|' ',		BINDFNC,	setmark},
134 	{META|'?',		BINDFNC,	help},
135 	{META|'!',		BINDFNC,	reposition},
136 	{META|')',		BINDFNC,	indent_region},
137 	{META|'(',		BINDFNC,	undent_region},
138 	{META|'.',		BINDFNC,	setmark},
139 	{META|'>',		BINDFNC,	gotoeob},
140 	{META|'<',		BINDFNC,	gotobob},
141 	{META|'~',		BINDFNC,	unmark},
142 	{META|'A',		BINDFNC,	apro},
143 	{META|'B',		BINDFNC,	backword},
144 	{META|'C',		BINDFNC,	capword},
145 	{META|'D',		BINDFNC,	delfword},
146 #if	CRYPT
147 	{META|'E',		BINDFNC,	setekey},
148 #endif
149 	{META|'F',		BINDFNC,	forwword},
150 	{META|'G',		BINDFNC,	gotoline},
151 	{META|'K',		BINDFNC,	bindtokey},
152 	{META|'L',		BINDFNC,	lowerword},
153 	{META|'M',		BINDFNC,	setgmode},
154 	{META|'N',		BINDFNC,	gotoeop},
155 	{META|'P',		BINDFNC,	gotobop},
156 	{META|'Q',		BINDFNC,	fillpara},
157 	{META|'R',		BINDFNC,	sreplace},
158 #if	BSD || FREEBSD || HPUX8 || HPUX9 || VMS || SUN || AVIION
159 	{META|'S',		BINDFNC,	bktoshell},
160 #endif
161 	{META|'U',		BINDFNC,	upperword},
162 	{META|'V',		BINDFNC,	backpage},
163 	{META|'W',		BINDFNC,	copyregion},
164 	{META|'X',		BINDFNC,	namedcmd},
165 	{META|'Y',		BINDFNC,	yank_pop},
166 	{META|'Z',		BINDFNC,	quickexit},
167 /*	{META|CTRL|'?',		BINDFNC,	delbword}, ??? */
168 
169 	{ALTD|'B',		BINDFNC,	list_screens},
170 	{ALTD|'C',		BINDFNC,	cycle_screens},
171 	{ALTD|'D',		BINDFNC,	delete_screen},
172 	{ALTD|'F',		BINDFNC,	find_screen},
173 	{ALTD|'N',		BINDFNC,	rename_screen},
174 	{ALTD|'R',		BINDFNC,	backhunt},
175 	{ALTD|'S',		BINDFNC,	forwhunt},
176 
177 	{SPEC|'<',		BINDFNC,	gotobob},	/* Home */
178 	{SPEC|'P',		BINDFNC,	backline},	/* up */
179 	{SPEC|'Z',		BINDFNC,	backpage},	/* PgUp */
180 	{SPEC|'B',		BINDFNC,	backchar},	/* left */
181 
182 	{SPEC|'L',		BINDFNC,	reposition},	/* NP5 */
183 
184 	{SPEC|'F',		BINDFNC,	forwchar},	/* right */
185 	{SPEC|'>',		BINDFNC,	gotoeob},	/* End */
186 	{SPEC|'N',		BINDFNC,	forwline},	/* down */
187 	{SPEC|'V',		BINDFNC,	forwpage},	/* PgDn */
188 	{SPEC|'C',		BINDFNC,	insspace},	/* Ins */
189 	{SPEC|'D',		BINDFNC,	forwdel},	/* Del */
190 
191 	{SPEC|CTRL|'B', 	BINDFNC,	backword},	/* ctrl left */
192 	{SPEC|CTRL|'F', 	BINDFNC,	forwword},	/* ctrl right */
193 	{SPEC|CTRL|'Z', 	BINDFNC,	gotobop},	/* ctrl PgUp */
194 	{SPEC|CTRL|'V', 	BINDFNC,	gotoeop},	/* ctrl PgDn */
195 
196 #if	WINDOW_MSWIN	/* IBM-CUA clipboard bindings */
197 	{SPEC|CTRL|'C', 	BINDFNC,	clipregion},	/* ctrl Ins */
198 	{SPEC|SHFT|'C', 	BINDFNC,	insertclip},	/* shift Ins */
199 	{SPEC|SHFT|'D', 	BINDFNC,	cutregion},	/* shift Del */
200 #endif
201 
202 #if ATKBD | OS2
203 
204 /* The following keys are some of the extra ones that can be returned by an
205    AT-style keyboard.  By default we bind them to the same functions as the
206    equivalent PC keys.  However they, and the ones not mentioned here, are
207    available to the user for rebinding to functions of choice.
208 
209    See keyboard.c for a full list of available keys.
210 */
211 	{SPEC|'a',		BINDFNC,	gotobob},	/* grey Home */
212 	{SPEC|'b',		BINDFNC,	backline},	/* grey up */
213 	{SPEC|'c',		BINDFNC,	backpage},	/* grey PgUp */
214 	{SPEC|'d',		BINDFNC,	backchar},	/* grey left */
215 	{SPEC|'e',		BINDFNC,	reposition},	/* grey center */
216 	{SPEC|'f',		BINDFNC,	forwchar},	/* grey right */
217 	{SPEC|'g',		BINDFNC,	gotoeob},	/* grey End */
218 	{SPEC|'h',		BINDFNC,	forwline},	/* grey down */
219 	{SPEC|'i',		BINDFNC,	forwpage},	/* grey PgDn */
220 	{SPEC|'j',		BINDFNC,	insspace},	/* grey Ins */
221 	{SPEC|'k',		BINDFNC,	forwdel},	/* grey Del */
222 	{SPEC|':',		BINDFNC,	execcmd},	/* pause */
223 
224 	{SPEC|CTRL|'c',		BINDFNC,	gotobop},	/* ctrl grey PgUp */
225 	{SPEC|CTRL|'d',		BINDFNC,	backword},	/* ctrl grey left */
226 	{SPEC|CTRL|'f',		BINDFNC,	forwword},	/* ctrl grey right */
227 	{SPEC|CTRL|'i',		BINDFNC,	gotoeop},	/* ctrl grey PgDn */
228 
229 #endif
230 
231 #if	HP150
232 	{SPEC|32,		BINDFNC,	backline},
233 	{SPEC|33,		BINDFNC,	forwline},
234 	{SPEC|35,		BINDFNC,	backchar},
235 	{SPEC|34,		BINDFNC,	forwchar},
236 	{SPEC|44,		BINDFNC,	gotobob},
237 	{SPEC|46,		BINDFNC,	forwpage},
238 	{SPEC|47,		BINDFNC,	backpage},
239 	{SPEC|82,		BINDFNC,	nextwind},
240 	{SPEC|68,		BINDFNC,	openline},
241 	{SPEC|69,		BINDFNC,	killtext},
242 	{SPEC|65,		BINDFNC,	forwdel},
243 	{SPEC|64,		BINDFNC,	ctlxe},
244 	{SPEC|67,		BINDFNC,	refresh},
245 	{SPEC|66,		BINDFNC,	reposition},
246 	{SPEC|83,		BINDFNC,	help},
247 	{SPEC|81,		BINDFNC,	deskey},
248 #endif
249 
250 #if	HP110
251 	{SPEC|0x4b,		BINDFNC,	backchar},
252 	{SPEC|0x4d,		BINDFNC,	forwchar},
253 	{SPEC|0x48,		BINDFNC,	backline},
254 	{SPEC|0x50,		BINDFNC,	forwline},
255 	{SPEC|0x43,		BINDFNC,	help},
256 	{SPEC|0x73,		BINDFNC,	backword},
257 	{SPEC|0x74,		BINDFNC,	forwword},
258 	{SPEC|0x49,		BINDFNC,	backpage},
259 	{SPEC|0x51,		BINDFNC,	forwpage},
260 #endif
261 
262 #if	AMIGA
263 	{SPEC|'?',		BINDFNC,	help},
264 	{SPEC|'A',		BINDFNC,	backline},
265 	{SPEC|'B',		BINDFNC,	forwline},
266 	{SPEC|'C',		BINDFNC,	forwchar},
267 	{SPEC|'D',		BINDFNC,	backchar},
268 	{SPEC|'T',		BINDFNC,	backpage},
269 	{SPEC|'S',		BINDFNC,	forwpage},
270 	{SPEC|'a',		BINDFNC,	backword},
271 	{SPEC|'`',		BINDFNC,	forwword},
272 	{127,			BINDFNC,	forwdel},
273 #endif
274 
275 #if	TOS
276 	{SPEC|CTRL|'5',		BINDFNC,	help},
277 #endif
278 
279 #if  WANGPC
280 	SPEC|0xE0,		BINDFNC,	quit,		/* Cancel */
281 	SPEC|0xE1,		BINDFNC,	help,		/* Help */
282 	SPEC|0xF1,		BINDFNC,	help,		/* ^Help */
283 	SPEC|0xE3,		BINDFNC,	ctrlg,		/* Print */
284 	SPEC|0xF3,		BINDFNC,	ctrlg,		/* ^Print */
285 	SPEC|0xC0,		BINDFNC,	backline,	/* North */
286 	SPEC|0xD0,		BINDFNC,	gotobob,	/* ^North */
287 	SPEC|0xC1,		BINDFNC,	forwchar,	/* East */
288 	SPEC|0xD1,		BINDFNC,	gotoeol,	/* ^East */
289 	SPEC|0xC2,		BINDFNC,	forwline,	/* South */
290 	SPEC|0xD2,		BINDFNC,	gotobop,	/* ^South */
291 	SPEC|0xC3,		BINDFNC,	backchar,	/* West */
292 	SPEC|0xD3,		BINDFNC,	gotobol,	/* ^West */
293 	SPEC|0xC4,		BINDFNC,	ctrlg,		/* Home */
294 	SPEC|0xD4,		BINDFNC,	gotobob,	/* ^Home */
295 	SPEC|0xC5,		BINDFNC,	filesave,	/* Execute */
296 	SPEC|0xD5,		BINDFNC,	ctrlg,		/* ^Execute */
297 	SPEC|0xC6,		BINDFNC,	insfile,	/* Insert */
298 	SPEC|0xD6,		BINDFNC,	ctrlg,		/* ^Insert */
299 	SPEC|0xC7,		BINDFNC,	forwdel,	/* Delete */
300 	SPEC|0xD7,		BINDFNC,	killregion,	/* ^Delete */
301 	SPEC|0xC8,		BINDFNC,	backpage,	/* Previous */
302 	SPEC|0xD8,		BINDFNC,	prevwind,	/* ^Previous */
303 	SPEC|0xC9,		BINDFNC,	forwpage,	/* Next */
304 	SPEC|0xD9,		BINDFNC,	nextwind,	/* ^Next */
305 	SPEC|0xCB,		BINDFNC,	ctrlg,		/* Erase */
306 	SPEC|0xDB,		BINDFNC,	ctrlg,		/* ^Erase */
307 	SPEC|0xDC,		BINDFNC,	ctrlg,		/* ^Tab */
308 	SPEC|0xCD,		BINDFNC,	ctrlg,		/* BackTab */
309 	SPEC|0xDD,		BINDFNC,	ctrlg,		/* ^BackTab */
310 	SPEC|0x80,		BINDFNC,	ctrlg,		/* Indent */
311 	SPEC|0x90,		BINDFNC,	ctrlg,		/* ^Indent */
312 	SPEC|0x81,		BINDFNC,	ctrlg,		/* Page */
313 	SPEC|0x91,		BINDFNC,	ctrlg,		/* ^Page */
314 	SPEC|0x82,		BINDFNC,	ctrlg,		/* Center */
315 	SPEC|0x92,		BINDFNC,	ctrlg,		/* ^Center */
316 	SPEC|0x83,		BINDFNC,	ctrlg,		/* DecTab */
317 	SPEC|0x93,		BINDFNC,	ctrlg,		/* ^DecTab */
318 	SPEC|0x84,		BINDFNC,	ctrlg,		/* Format */
319 	SPEC|0x94,		BINDFNC,	ctrlg,		/* ^Format */
320 	SPEC|0x85,		BINDFNC,	ctrlg,		/* Merge */
321 	SPEC|0x95,		BINDFNC,	ctrlg,		/* ^Merge */
322 	SPEC|0x86,		BINDFNC,	setmark,	/* Note */
323 	SPEC|0x96,		BINDFNC,	ctrlg,		/* ^Note */
324 	SPEC|0x87,		BINDFNC,	ctrlg,		/* Stop */
325 	SPEC|0x97,		BINDFNC,	ctrlg,		/* ^Stop */
326 	SPEC|0x88,		BINDFNC,	forwsearch,	/* Srch */
327 	SPEC|0x98,		BINDFNC,	backsearch,	/* ^Srch */
328 	SPEC|0x89,		BINDFNC,	sreplace,	/* Replac */
329 	SPEC|0x99,		BINDFNC,	qreplace,	/* ^Replac */
330 	SPEC|0x8A,		BINDFNC,	ctrlg,		/* Copy */
331 	SPEC|0x9A,		BINDFNC,	ctrlg,		/* ^Copy */
332 	SPEC|0x8B,		BINDFNC,	ctrlg,		/* Move */
333 	SPEC|0x9B,		BINDFNC,	ctrlg,		/* ^Move */
334 	SPEC|0x8C,		BINDFNC,	namedcmd,	/* Command */
335 	SPEC|0x9C,		BINDFNC,	spawn,		/* ^Command */
336 	SPEC|0x8D,		BINDFNC,	ctrlg,		/* ^ */
337 	SPEC|0x9D,		BINDFNC,	ctrlg,		/* ^^ */
338 	SPEC|0x8E,		BINDFNC,	ctrlg,		/* Blank */
339 	SPEC|0x9E,		BINDFNC,	ctrlg,		/* ^Blank */
340 	SPEC|0x8F,		BINDFNC,	gotoline,	/* GoTo */
341 	SPEC|0x9F,		BINDFNC,	usebuffer,	/* ^GoTo */
342 #endif
343 
344 	{CTRL|'?',		BINDFNC,	backdel},
345 
346 	{0,			BINDNUL,	NULL}
347 };
348