995
|
1 /* Main header */
|
|
2
|
|
3 #ifdef MAINTABLE
|
|
4 int currow; /* Working cursor row */
|
|
5 int curcol; /* Working cursor column */
|
|
6 int fillcol; /* Current fill column */
|
|
7 int thisflag; /* Flags, this command */
|
|
8 int lastflag; /* Flags, last command */
|
|
9 int curgoal; /* Goal column */
|
|
10 BUFFER *curbp; /* Current buffer */
|
|
11 WINDOW *curwp; /* Current window */
|
|
12 BUFFER *bheadp; /* BUFFER listhead */
|
|
13 WINDOW *wheadp; /* WINDOW listhead */
|
|
14 BUFFER *blistp; /* Buffer list BUFFER */
|
|
15 short kbdm[NKBDM] = {CTLX|')'}; /* Macro */
|
|
16 short *kbdmip; /* Input for above */
|
|
17 short *kbdmop; /* Output for above */
|
|
18 char pat[NPAT]; /* Pattern */
|
|
19 #else
|
|
20 extern int currow; /* Working cursor row */
|
|
21 extern int curcol; /* Working cursor column */
|
|
22 extern int fillcol; /* Current fill column */
|
|
23 extern int thisflag; /* Flags, this command */
|
|
24 extern int lastflag; /* Flags, last command */
|
|
25 extern int curgoal; /* Goal column */
|
|
26 extern BUFFER *curbp; /* Current buffer */
|
|
27 extern WINDOW *curwp; /* Current window */
|
|
28 extern BUFFER *bheadp; /* BUFFER listhead */
|
|
29 extern WINDOW *wheadp; /* WINDOW listhead */
|
|
30 extern BUFFER *blistp; /* Buffer list BUFFER */
|
|
31 extern short kbdm[]; /* Macro */
|
|
32 extern short *kbdmip; /* Input for above */
|
|
33 extern short *kbdmop; /* Output for above */
|
|
34 extern char pat[]; /* Pattern */
|
|
35 #endif
|
|
36
|
|
37 typedef struct {
|
|
38 short k_code; /* Key code */
|
|
39 int (*k_fp)(); /* Routine to handle it */
|
|
40 } KEYTAB;
|
|
41
|
|
42 /*
|
|
43 * Command table.
|
|
44 * This table is *roughly* in ASCII order, left to right across the
|
|
45 * characters of the command. This expains the funny location of the
|
|
46 * control-X commands.
|
|
47 */
|
|
48 #ifdef MAINTABLE
|
|
49
|
|
50 extern int ctrlg(); /* Abort out of things */
|
|
51 extern int quit(); /* Quit */
|
|
52 extern int ctlxlp(); /* Begin macro */
|
|
53 extern int ctlxrp(); /* End macro */
|
|
54 extern int ctlxe(); /* Execute macro */
|
|
55 extern int fileread(); /* Get a file, read only */
|
|
56 extern int filevisit(); /* Get a file, read write */
|
|
57 extern int filewrite(); /* Write a file */
|
|
58 extern int filesave(); /* Save current file */
|
|
59 extern int filename(); /* Adjust file name */
|
|
60 extern int getccol(); /* Get current column */
|
|
61 extern int gotobol(); /* Move to start of line */
|
|
62 extern int forwchar(); /* Move forward by characters */
|
|
63 extern int gotoeol(); /* Move to end of line */
|
|
64 extern int backchar(); /* Move backward by characters */
|
|
65 extern int forwline(); /* Move forward by lines */
|
|
66 extern int backline(); /* Move backward by lines */
|
|
67 extern int forwpage(); /* Move forward by pages */
|
|
68 extern int backpage(); /* Move backward by pages */
|
|
69 extern int gotobob(); /* Move to start of buffer */
|
|
70 extern int gotoeob(); /* Move to end of buffer */
|
|
71 extern int setfillcol(); /* Set fill column. */
|
|
72 extern int setmark(); /* Set mark */
|
|
73 extern int swapmark(); /* Swap "." and mark */
|
|
74 extern int forwsearch(); /* Search forward */
|
|
75 extern int backsearch(); /* Search backwards */
|
|
76 extern int showcpos(); /* Show the cursor position */
|
|
77 #ifndef OS9
|
|
78 extern int nextwind(); /* Move to the next window */
|
|
79 extern int prevwind(); /* Move to the previous window */
|
|
80 extern int onlywind(); /* Make current window only one */
|
|
81 extern int splitwind(); /* Split current window */
|
|
82 extern int mvdnwind(); /* Move window down */
|
|
83 extern int mvupwind(); /* Move window up */
|
|
84 extern int enlargewind(); /* Enlarge display window. */
|
|
85 extern int shrinkwind(); /* Shrink window. */
|
|
86 extern int listbuffers(); /* Display list of buffers */
|
|
87 extern int usebuffer(); /* Switch a window to a buffer */
|
|
88 extern int killbuffer(); /* Make a buffer go away. */
|
|
89 #endif
|
|
90 extern int reposition(); /* Reposition window */
|
|
91 extern int refresh(); /* Refresh the screen */
|
|
92 extern int twiddle(); /* Twiddle characters */
|
|
93 extern int tab(); /* Insert tab */
|
|
94 extern int newline(); /* Insert CR-LF */
|
|
95 extern int indent(); /* Insert CR-LF, then indent */
|
|
96 extern int openline(); /* Open up a blank line */
|
|
97 extern int deblank(); /* Delete blank lines */
|
|
98 extern int quote(); /* Insert literal */
|
|
99 extern int backword(); /* Backup by words */
|
|
100 extern int forwword(); /* Advance by words */
|
|
101 extern int forwdel(); /* Forward delete */
|
|
102 extern int backdel(); /* Backward delete */
|
|
103 extern int killer(); /* Kill forward */
|
|
104 extern int yank(); /* Yank back from killbuffer. */
|
|
105 extern int upperword(); /* Upper case word. */
|
|
106 extern int lowerword(); /* Lower case word. */
|
|
107 extern int upperregion(); /* Upper case region. */
|
|
108 extern int lowerregion(); /* Lower case region. */
|
|
109 extern int capword(); /* Initial capitalize word. */
|
|
110 extern int delfword(); /* Delete forward word. */
|
|
111 extern int delbword(); /* Delete backward word. */
|
|
112 extern int killregion(); /* Kill region. */
|
|
113 extern int copyregion(); /* Copy region to kill buffer. */
|
|
114 extern int spawncli(); /* Run CLI in a subjob. */
|
|
115 extern int spawn(); /* Run a command in a subjob. */
|
|
116 extern int quickexit(); /* low keystroke style exit. */
|
|
117
|
|
118 KEYTAB keytab[] = {
|
|
119 CTRL|'@', setmark,
|
|
120 CTRL|'A', gotobol,
|
|
121 CTRL|'B', backchar,
|
|
122 CTRL|'C', spawncli, /* Run CLI in subjob. */
|
|
123 CTRL|'D', forwdel,
|
|
124 CTRL|'E', gotoeol,
|
|
125 CTRL|'F', forwchar,
|
|
126 CTRL|'G', ctrlg,
|
|
127 CTRL|'H', backdel,
|
|
128 CTRL|'I', tab,
|
|
129 CTRL|'J', indent,
|
|
130 CTRL|'K', killer,
|
|
131 CTRL|'L', refresh,
|
|
132 CTRL|'M', newline,
|
|
133 CTRL|'N', forwline,
|
|
134 CTRL|'O', openline,
|
|
135 CTRL|'P', backline,
|
|
136 CTRL|'Q', quote, /* Often unreachable */
|
|
137 CTRL|'R', backsearch,
|
|
138 CTRL|'S', forwsearch, /* Often unreachable */
|
|
139 CTRL|'T', twiddle,
|
|
140 CTRL|'V', forwpage,
|
|
141 CTRL|'W', killregion,
|
|
142 CTRL|'Y', yank,
|
|
143 CTRL|'Z', quickexit, /* quick save and exit */
|
|
144 #ifndef OS9
|
|
145 CTLX|CTRL|'B', listbuffers,
|
|
146 #endif
|
|
147 CTLX|CTRL|'C', quit, /* Hard quit. */
|
|
148 CTLX|CTRL|'F', filename,
|
|
149 CTLX|CTRL|'L', lowerregion,
|
|
150 CTLX|CTRL|'O', deblank,
|
|
151 #ifndef OS9
|
|
152 CTLX|CTRL|'N', mvdnwind,
|
|
153 CTLX|CTRL|'P', mvupwind,
|
|
154 #endif
|
|
155 CTLX|CTRL|'R', fileread,
|
|
156 CTLX|CTRL|'S', filesave, /* Often unreachable */
|
|
157 CTLX|CTRL|'U', upperregion,
|
|
158 #ifndef OS9
|
|
159 CTLX|CTRL|'V', filevisit,
|
|
160 #endif
|
|
161 CTLX|CTRL|'W', filewrite,
|
|
162 CTLX|CTRL|'X', swapmark,
|
|
163 #ifndef OS9
|
|
164 CTLX|CTRL|'Z', shrinkwind,
|
|
165 #endif
|
|
166 CTLX|'!', spawn, /* Run 1 command. */
|
|
167 CTLX|'=', showcpos,
|
|
168 CTLX|'(', ctlxlp,
|
|
169 CTLX|')', ctlxrp,
|
|
170 #ifndef OS9
|
|
171 CTLX|'1', onlywind,
|
|
172 CTLX|'2', splitwind,
|
|
173 CTLX|'B', usebuffer,
|
|
174 #endif
|
|
175 CTLX|'E', ctlxe,
|
|
176 CTLX|'F', setfillcol,
|
|
177 #ifndef OS9
|
|
178 CTLX|'K', killbuffer,
|
|
179 CTLX|'N', nextwind,
|
|
180 CTLX|'P', prevwind,
|
|
181 CTLX|'Z', enlargewind,
|
|
182 #endif
|
|
183 META|CTRL|'H', delbword,
|
|
184 META|'!', reposition,
|
|
185 META|'.', setmark,
|
|
186 META|'>', gotoeob,
|
|
187 META|'<', gotobob,
|
|
188 META|'B', backword,
|
|
189 META|'C', capword,
|
|
190 META|'D', delfword,
|
|
191 META|'F', forwword,
|
|
192 META|'L', lowerword,
|
|
193 META|'U', upperword,
|
|
194 META|'V', backpage,
|
|
195 #ifndef OS9
|
|
196 META|'W', copyregion,
|
|
197 #endif
|
|
198 META|0x7F, delbword,
|
|
199 0x7F, backdel,
|
|
200 0, 0 /* Signals end of table */
|
|
201 };
|
|
202 #else
|
|
203 extern KEYTAB keytab[];
|
|
204 #endif
|
|
205
|
|
206 #define NKEYTAB (sizeof(keytab)/sizeof(keytab[0]))
|
|
207
|
|
208 #ifdef RAINBOW
|
|
209
|
|
210 #include "rainbow.h"
|
|
211
|
|
212 /*
|
|
213 * Mapping table from the LK201 function keys to the internal EMACS character.
|
|
214 */
|
|
215
|
|
216 short lk_map[][2] = {
|
|
217 Up_Key, CTRL+'P',
|
|
218 Down_Key, CTRL+'N',
|
|
219 Left_Key, CTRL+'B',
|
|
220 Right_Key, CTRL+'F',
|
|
221 Shift+Left_Key, META+'B',
|
|
222 Shift+Right_Key, META+'F',
|
|
223 Control+Left_Key, CTRL+'A',
|
|
224 Control+Right_Key, CTRL+'E',
|
|
225 Prev_Scr_Key, META+'V',
|
|
226 Next_Scr_Key, CTRL+'V',
|
|
227 Shift+Up_Key, META+'<',
|
|
228 Shift+Down_Key, META+'>',
|
|
229 Cancel_Key, CTRL+'G',
|
|
230 Find_Key, CTRL+'S',
|
|
231 Shift+Find_Key, CTRL+'R',
|
|
232 Insert_Key, CTRL+'Y',
|
|
233 Options_Key, CTRL+'D',
|
|
234 Shift+Options_Key, META+'D',
|
|
235 Remove_Key, CTRL+'W',
|
|
236 Shift+Remove_Key, META+'W',
|
|
237 Select_Key, CTRL+'@',
|
|
238 Shift+Select_Key, CTLX+CTRL+'X',
|
|
239 Interrupt_Key, CTRL+'U',
|
|
240 Keypad_PF2, META+'L',
|
|
241 Keypad_PF3, META+'C',
|
|
242 Keypad_PF4, META+'U',
|
|
243 Shift+Keypad_PF2, CTLX+CTRL+'L',
|
|
244 Shift+Keypad_PF4, CTLX+CTRL+'U',
|
|
245 Keypad_1, CTLX+'1',
|
|
246 Keypad_2, CTLX+'2',
|
|
247 Do_Key, CTLX+'E',
|
|
248 Keypad_4, CTLX+CTRL+'B',
|
|
249 Keypad_5, CTLX+'B',
|
|
250 Keypad_6, CTLX+'K',
|
|
251 Resume_Key, META+'!',
|
|
252 Control+Next_Scr_Key, CTLX+'N',
|
|
253 Control+Prev_Scr_Key, CTLX+'P',
|
|
254 Control+Up_Key, CTLX+CTRL+'P',
|
|
255 Control+Down_Key, CTLX+CTRL+'N',
|
|
256 Help_Key, CTLX+'=',
|
|
257 Shift+Do_Key, CTLX+'(',
|
|
258 Control+Do_Key, CTLX+')',
|
|
259 Keypad_0, CTLX+'Z',
|
|
260 Shift+Keypad_0, CTLX+CTRL+'Z',
|
|
261 Main_Scr_Key, CTRL+'C',
|
|
262 Keypad_Enter, CTLX+'!',
|
|
263 Exit_Key, CTLX+CTRL+'C',
|
|
264 Shift+Exit_Key, CTRL+'Z'
|
|
265 };
|
|
266
|
|
267 #define lk_map_size (sizeof(lk_map)/2)
|
|
268
|
|
269 #endif
|
|
270
|
1869
|
271 /* #define NULL 0 */
|
995
|
272
|