about summary refs log tree commit diff stats
path: root/WWW/Library/Implementation/HTAnchor.h
blob: b7d4f7605e1305258c6d075167056241426386fe (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
/*		   /Net/dxcern/userd/timbl/hypertext/WWW/Library/Implementation/HTAnchor.html
 */

/*	Hypertext "Anchor" Object				     HTAnchor.h
 *	==========================
 *
 *	An anchor represents a region of a hypertext document which is linked
 *	to another anchor in the same or a different document.
 */

#ifndef HTANCHOR_H
#define HTANCHOR_H

/* Version 0 (TBL) written in Objective-C for the NeXT browser */
/* Version 1 of 24-Oct-1991 (JFG), written in C, browser-independent */

#include <HTList.h>
#include <HTBTree.h>
#include <HTChunk.h>
#include <HTAtom.h>
#include <UCDefs.h>

/*			Main definition of anchor
 *			=========================
 */

typedef struct _HyperDoc HyperDoc;	/* Ready for forward references */
typedef struct _HTAnchor HTAnchor;
typedef struct _HTParentAnchor HTParentAnchor;
typedef struct _HTParentAnchor0 HTParentAnchor0;

/*	After definition of HTFormat: */
#include <HTFormat.h>

struct _HTAnchor {		/* Generic anchor */
    HTParentAnchor0 *parent;	/* Parent of this anchor (self for adults) */
};

struct _HTParentAnchor0 {	/* One for adult_table,
				 * generally not used outside HTAnchor.c */
    /* Common part from the generic anchor structure */
    HTParentAnchor0 *parent;	/* (self) */

    /* ParentAnchor0-specific information */
    char *address;		/* Absolute address of this node */
    HTParentAnchor *info;	/* additional info, allocated on demand */

    HTBTree *children;		/* Subanchors <a name="tag">, sorted by tag */
    HTList sources;		/* List of anchors pointing to this, if any */

    HTList _add_adult;		/* - just a memory for list entry:) */
    short adult_hash;		/* adult list number */
    BOOL underway;		/* Document about to be attached to it */
};

/*
 *  Separated from the above to save memory:  allocated on demand,
 *  it is nearly 1:1 to HText (well, sometimes without HText...),
 *  available for SGML, HTML, and HText stages.
 *  [being precise, we currently allocate it before HTLoadDocument(),
 *  in HTAnchor_findAddress() and HTAnchor_parent()].
 */
struct _HTParentAnchor {
    /* Common part from the generic anchor structure */
    HTParentAnchor0 *parent;	/* Parent of this anchor */

    /* ParentAnchor-specific information */
    HTList children_notag;	/* Subanchors <a href=...>, tag is NULL */
    HyperDoc *document;		/* The document within which this is an anchor */

    char *address;		/* parent->address, a pointer */
    bstring *post_data;		/* Posting data */
    char *post_content_type;	/* Type of post data */
    char *bookmark;		/* Bookmark filename */
    HTFormat format;		/* Pointer to node format descriptor */
    char *charset;		/* Pointer to character set (kludge, for now */
    BOOL isIndex;		/* Acceptance of a keyword search */
    char *isIndexAction;	/* URL of isIndex server */
    char *isIndexPrompt;	/* Prompt for isIndex query */
    char *title;		/* Title of document */
    char *owner;		/* Owner of document */
    char *RevTitle;		/* TITLE in REV="made" or REV="owner" LINK */
    char *citehost;		/* Citehost from REL="citehost" LINK */
#ifdef USE_COLOR_STYLE
    char *style;
#endif

    HTList *methods;		/* Methods available as HTAtoms */
    void *protocol;		/* Protocol object */
    char *physical;		/* Physical address */
    BOOL isISMAPScript;		/* Script for clickable image map */
    BOOL isHEAD;		/* Document is headers from a HEAD request */
    BOOL safe;			/* Safe */
#ifdef USE_SOURCE_CACHE
    char *source_cache_file;
    HTChunk *source_cache_chunk;
#endif
    char *FileCache;		/* Path to a disk-cached copy (see src/HTFWriter.c) */
    char *SugFname;		/* Suggested filename */
    char *cache_control;	/* Cache-Control */
    BOOL no_cache;		/* Cache-Control, Pragma or META "no-cache"? */
    BOOL inBASE;		/* duplicated from HTStructured (HTML.c/h) */
#ifdef EXP_HTTP_HEADERS
    HTChunk http_headers;
#endif
    char *content_type_params;	/* Content-Type (with parameters if any) */
    char *content_type;		/* Content-Type */
    char *content_language;	/* Content-Language */
    char *content_encoding;	/* Compression algorithm */
    char *content_base;		/* Content-Base */
    char *content_disposition;	/* Content-Disposition */
    char *content_location;	/* Content-Location */
    char *content_md5;		/* Content-MD5 */
    char *message_id;		/* Message-ID */
    char *subject;		/* Subject */
    int content_length;		/* Content-Length */
    char *date;			/* Date */
    char *expires;		/* Expires */
    char *last_modified;	/* Last-Modified */
    char *ETag;			/* ETag (HTTP1.1 cache validator) */
    char *server;		/* Server */
    UCAnchorInfo *UCStages;	/* chartrans stages */
    HTList *imaps;		/* client side image maps */
};

typedef HTAtom HTLinkType;

typedef struct {
    /* Common part from the generic anchor structure */
    HTParentAnchor0 *parent;	/* Parent of this anchor */

    /* ChildAnchor-specific information */
    char *tag;			/* #fragment,  relative to the parent */

    HTAnchor *dest;		/* The anchor to which this leads */
    HTLinkType *type;		/* Semantics of this link */

    HTList _add_children_notag;	/* - just a memory for list entry:) */
    HTList _add_sources;	/* - just a memory for list entry:) */
} HTChildAnchor;

/*
 *  DocAddress structure is used for loading an absolute anchor with all
 *  needed information including posting data and post content type.
 */
typedef struct _DocAddress {
    char *address;
    bstring *post_data;
    char *post_content_type;
    char *bookmark;
    BOOL isHEAD;
    BOOL safe;
} DocAddress;

/* "internal" means "within the same document, with certainty". */
extern HTLinkType *HTInternalLink;

/*	Create or find a child anchor with a possible link
 *	--------------------------------------------------
 *
 *	Create new anchor with a given parent and possibly
 *	a name, and possibly a link to a _relatively_ named anchor.
 *	(Code originally in ParseHTML.h)
 */
extern HTChildAnchor *HTAnchor_findChildAndLink(HTParentAnchor *parent,		/* May not be 0 */
						const char *tag,	/* May be "" or 0 */
						const char *href,	/* May be "" or 0 */
						HTLinkType *ltype);	/* May be 0 */

/*	Create new or find old parent anchor
 *	------------------------------------
 *
 *	This one is for a reference which is found in a document, and might
 *	not be already loaded.
 *	Note: You are not guaranteed a new anchor -- you might get an old one,
 *	like with fonts.
 */
extern HTParentAnchor *HTAnchor_findAddress(const DocAddress *address);

/*	Create new or find old named anchor - simple form
 *	-------------------------------------------------
 *
 *	Like the previous one, but simpler to use for simple cases.
 *	No post data etc. can be supplied. - kw
 */
extern HTParentAnchor *HTAnchor_findSimpleAddress(const char *url);

/*	Delete an anchor and possibly related things (auto garbage collection)
 *	--------------------------------------------
 *
 *	The anchor is only deleted if the corresponding document is not loaded.
 *	All outgoing links from children are deleted, and children are
 *	removed from the sources lists of their targets.
 *	We also try to delete the targets whose documents are not loaded.
 *	If this anchor's sources list is empty, we delete it and its children.
 */
extern BOOL HTAnchor_delete(HTParentAnchor0 *me);

/*
 *  Unnamed children (children_notag) have no sense without HText -
 *  delete them and their links if we are about to free HText.
 *  Document currently exists.  Called within HText_free().
 */
extern void HTAnchor_delete_links(HTParentAnchor *me);

#ifdef USE_SOURCE_CACHE
extern void HTAnchor_clearSourceCache(HTParentAnchor *me);
#endif

/*	Data access functions
 *	---------------------
 */
extern HTParentAnchor *HTAnchor_parent(HTAnchor * me);

extern void HTAnchor_setDocument(HTParentAnchor *me,
				 HyperDoc *doc);

extern HyperDoc *HTAnchor_document(HTParentAnchor *me);

/*	Returns the full URI of the anchor, child or parent
 *	as a malloc'd string to be freed by the caller.
 */
extern char *HTAnchor_address(HTAnchor * me);

extern void HTAnchor_setFormat(HTParentAnchor *me,
			       HTFormat form);

extern HTFormat HTAnchor_format(HTParentAnchor *me);

extern void HTAnchor_setIndex(HTParentAnchor *me,
			      const char *address);

extern void HTAnchor_setPrompt(HTParentAnchor *me,
			       const char *prompt);

extern BOOL HTAnchor_isIndex(HTParentAnchor *me);

extern BOOL HTAnchor_isISMAPScript(HTAnchor * me);

#if defined(USE_COLOR_STYLE)
extern const char *HTAnchor_style(HTParentAnchor *me);

extern void HTAnchor_setStyle(HTParentAnchor *me,
			      const char *style);
#endif

/*	Title handling.
*/
extern const char *HTAnchor_title(HTParentAnchor *me);

extern void HTAnchor_setTitle(HTParentAnchor *me,
			      const char *title);

extern void HTAnchor_appendTitle(HTParentAnchor *me,
				 const char *title);

/*	Bookmark handling.
*/
extern const char *HTAnchor_bookmark(HTParentAnchor *me);

extern void HTAnchor_setBookmark(HTParentAnchor *me,
				 const char *bookmark);

/*	Owner handling.
*/
extern const char *HTAnchor_owner(HTParentAnchor *me);

extern void HTAnchor_setOwner(HTParentAnchor *me,
			      const char *owner);

/*	TITLE handling in LINKs with REV="made" or REV="owner". - FM
*/
extern const char *HTAnchor_RevTitle(HTParentAnchor *me);

extern void HTAnchor_setRevTitle(HTParentAnchor *me,
				 const char *title);

/*	Citehost for bibp links from LINKs with REL="citehost". - RDC
*/
extern const char *HTAnchor_citehost(HTParentAnchor *me);

extern void HTAnchor_setCitehost(HTParentAnchor *me,
				 const char *citehost);

/*	Suggested filename handling. - FM
 *	(will be loaded if we had a Content-Disposition
 *	 header or META element with filename=name.suffix)
 */
extern const char *HTAnchor_SugFname(HTParentAnchor *me);

/*	HTTP Headers.
*/
extern const char *HTAnchor_http_headers(HTParentAnchor *me);

/*	Content-Type handling (parameter list).
*/
extern const char *HTAnchor_content_type_params(HTParentAnchor *me);

/*	Content-Type handling. - FM
*/
extern const char *HTAnchor_content_type(HTParentAnchor *me);

/*	Content-Encoding handling. - FM
 *	(will be loaded if we had a Content-Encoding
 *	 header.)
 */
extern const char *HTAnchor_content_encoding(HTParentAnchor *me);

/*	Last-Modified header handling. - FM
*/
extern const char *HTAnchor_last_modified(HTParentAnchor *me);

/*	Date header handling. - FM
*/
extern const char *HTAnchor_date(HTParentAnchor *me);

/*	Server header handling. - FM
*/
extern const char *HTAnchor_server(HTParentAnchor *me);

/*	Safe header handling. - FM
*/
extern BOOL HTAnchor_safe(HTParentAnchor *me);

/*	Content-Base header handling. - FM
*/
extern const char *HTAnchor_content_base(HTParentAnchor *me);

/*	Content-Location header handling. - FM
*/
extern const char *HTAnchor_content_location(HTParentAnchor *me);

/*	Message-ID, used for mail replies - kw
*/
extern const char *HTAnchor_messageID(HTParentAnchor *me);

extern BOOL HTAnchor_setMessageID(HTParentAnchor *me,
				  const char *messageid);

/*	Subject, used for mail replies - kw
*/
extern const char *HTAnchor_subject(HTParentAnchor *me);

extern BOOL HTAnchor_setSubject(HTParentAnchor *me,
				const char *subject);

/*	Manipulation of links
 *	---------------------
 */
extern HTAnchor *HTAnchor_followLink(HTChildAnchor *me);

extern HTAnchor *HTAnchor_followTypedLink(HTChildAnchor *me,
					  HTLinkType *type);

/*	Read and write methods
 *	----------------------
 */
extern HTList *HTAnchor_methods(HTParentAnchor *me);

/*	Protocol
 *	--------
 */
extern void *HTAnchor_protocol(HTParentAnchor *me);

extern void HTAnchor_setProtocol(HTParentAnchor *me,
				 void *protocol);

/*	Physical address
 *	----------------
 */
extern char *HTAnchor_physical(HTParentAnchor *me);

extern void HTAnchor_setPhysical(HTParentAnchor *me,
				 char *protocol);

extern LYUCcharset *HTAnchor_getUCInfoStage(HTParentAnchor *me,
					    int which_stage);

extern int HTAnchor_getUCLYhndl(HTParentAnchor *me,
				int which_stage);

extern LYUCcharset *HTAnchor_setUCInfoStage(HTParentAnchor *me,
					    int LYhndl,
					    int which_stage,
					    int set_by);

extern LYUCcharset *HTAnchor_setUCInfoStage(HTParentAnchor *me,
					    int LYhndl,
					    int which_stage,
					    int set_by);

extern LYUCcharset *HTAnchor_resetUCInfoStage(HTParentAnchor *me,
					      int LYhndl,
					      int which_stage,
					      int set_by);

extern LYUCcharset *HTAnchor_copyUCInfoStage(HTParentAnchor *me,
					     int to_stage,
					     int from_stage,
					     int set_by);

extern void ImageMapList_free(HTList *list);

#endif /* HTANCHOR_H */
ss="p">, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, /* 100..10F function key definitions in LYStrings.h */ LYE_FORM_PASS, LYE_FORM_PASS, LYE_FORW, LYE_BACK, /* UPARROW DNARROW RTARROW LTARROW */ LYE_FORM_PASS, LYE_FORM_PASS, LYE_BOL, LYE_EOL, /* PGDOWN PGUP HOME END */ #if (defined(_WINDOWS) || defined(__DJGPP__)) LYE_FORM_PASS, LYE_NOP, LYE_NOP, LYE_NOP, /* F1 */ #else LYE_FORM_PASS, LYE_TAB, LYE_BOL, LYE_EOL, /* F1 Do key Find key Select key */ #endif /* _WINDOWS || __DJGPP__ */ LYE_NOP, LYE_DELP, LYE_NOP, LYE_FORM_PASS, /* Insert key Remove key DO_NOTHING Back tab */ /* 110..18F */ #if (defined(_WINDOWS) || defined(__DJGPP__)) && defined(USE_SLANG) && !defined(DJGPP_KEYHANDLER) LYE_DELP, LYE_ENTER, LYE_NOP, LYE_NOP, /* Backspace Enter */ #else LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, #endif /* USE_SLANG &&(_WINDOWS || __DJGPP) && !DJGPP_KEYHANDLER */ LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, /* MOUSE_KEY */ LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, /* 190..20F */ LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, /* 210..28F */ LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, /* 290..293 */ LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, }; /* * Add your favorite key bindings HERE */ /* KED-01 */ /* Default except: ^B=cursor-backward, ^F=cursor-forward, */ /* ^K=delete-to-EOL, ^X=delete-to-BOL, */ /* ^R=delete-prev-word, ^T=delete-next-word, */ /* ^^=upper-case-line, ^_=lower-case-line */ /* Why the difference for tab? - kw */ #ifdef EXP_ALT_BINDINGS static LYEditCode BetterEditBinding[KEYMAP_SIZE-1]={ LYE_NOP, LYE_BOL, LYE_BACK, LYE_ABORT, /* nul ^A ^B ^C */ LYE_DELN, LYE_EOL, LYE_FORW, LYE_ABORT, /* ^D ^E ^F ^G */ LYE_DELP, LYE_ENTER, LYE_ENTER, LYE_DELEL, /* bs tab nl ^K */ LYE_NOP, LYE_ENTER, LYE_FORWW, LYE_ABORT, /* ^L cr ^N ^O */ LYE_BACKW, LYE_NOP, LYE_DELPW, LYE_NOP, /* ^P XON ^R XOFF */ #ifdef CAN_CUT_AND_PASTE LYE_DELNW, LYE_ERASE, LYE_LKCMD, LYE_PASTE, #else LYE_DELNW, LYE_ERASE, LYE_LKCMD, LYE_NOP, #endif /* ^T ^U ^V ^W */ LYE_SETM1, LYE_NOP, LYE_NOP, LYE_NOP, /* ^X ^Y ^Z ESC */ LYE_NOP, LYE_NOP, LYE_UPPER, LYE_LOWER, /* ^\ ^] ^^ ^_ */ /* sp .. RUBOUT */ LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_DELP, /* 80..9F ISO-8859-1 8-bit escape characters. */ LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, #ifdef CJK_EX /* 1997/11/03 (Mon) 20:30:54 */ LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, #else LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_AIX, /* 97 AIX */ #endif LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, /* A0..FF (permissible ISO-8859-1) 8-bit characters. */ LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, /* 100..10F function key definitions in LYStrings.h */ LYE_FORM_PASS, LYE_FORM_PASS, LYE_FORW, LYE_BACK, /* UPARROW DNARROW RTARROW LTARROW */ LYE_FORM_PASS, LYE_FORM_PASS, LYE_BOL, LYE_EOL, /* PGDOWN PGUP HOME END */ #if (defined(_WINDOWS) || defined(__DJGPP__)) LYE_FORM_PASS, LYE_NOP, LYE_NOP, LYE_NOP, /* F1 */ #else LYE_FORM_PASS, LYE_TAB, LYE_BOL, LYE_EOL, /* F1 Do key Find key Select key */ #endif /* _WINDOWS || __DJGPP__ */ LYE_NOP, LYE_DELP, LYE_NOP, LYE_FORM_PASS, /* Insert key Remove key DO_NOTHING Back tab */ /* 110..18F */ #if (defined(_WINDOWS) || defined(__DJGPP__)) && defined(USE_SLANG) && !defined(DJGPP_KEYHANDLER) LYE_DELP, LYE_ENTER, LYE_NOP, LYE_NOP, /* Backspace Enter */ #else LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, #endif /* USE_SLANG &&(_WINDOWS || __DJGPP) && !DJGPP_KEYHANDLER */ LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, /* MOUSE_KEY */ LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, /* 190..20F */ LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, /* 210..28F */ LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, /* 290..293 */ LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, }; /* kw */ /* Default except: ^B=cursor-backward[+],^F=cursor-forward[+], */ /* ^K=delete-to-EOL[+][++],^X=Modifier Prefix, */ /* ^[ (ESC)=Modifier Prefix, */ /* ^R=BACKW, ^S=FORWW, */ /* ^T=transpose-chars, */ /* ^U=delete-to-BOL, ^W=delete-prev-word, */ /* ^@ (NUL)=SETMARK, ^Y=YANK, */ /* ^_=ABORT (undo), */ /* ^P=FORM_PASS, ^N=FORM_PASS, */ /* ^O=FORM_PASS, ^L=FORM_PASS, */ /* ^\=FORM_PASS, ^]=FORM_PASS, */ /* ^Z=FORM_PASS, F1=FORM_PASS, */ /* ^E=EOL[++], Remove=DELN */ /* [+]: same as BetterEditBinding */ /* [++]: additionally set double-key modifier */ /* Default where BetterEditBinding deviates: ^^=SWMAP, */ /* tab=LYE_TAB */ /* Some functions for which the modifier binding is preferred: */ /* M-bs,M-del=delete-prev-word, M-d=delete-next-word, */ /* M-b=BACKW, M-f=FORWW, */ static LYEditCode BashlikeEditBinding[KEYMAP_SIZE-1]={ LYE_SETMARK, LYE_BOL, LYE_BACK, LYE_ABORT, /* nul ^A ^B ^C */ LYE_DELN, LYE_EOL|LYE_DF, LYE_FORW, LYE_ABORT, /* ^D ^E ^F ^G */ LYE_DELP, LYE_TAB, LYE_ENTER, LYE_DELEL|LYE_DF, /* bs tab nl ^K */ LYE_FORM_PASS, LYE_ENTER, LYE_FORM_PASS, LYE_FORM_PASS, /* ^L cr ^N ^O */ LYE_FORM_PASS, LYE_NOP, LYE_BACKW, LYE_FORWW, /* ^P XON ^R ^S/XOFF */ LYE_TPOS, LYE_DELBL, LYE_LKCMD, LYE_DELPW, /* ^T ^U ^V ^W */ LYE_SETM1, LYE_YANK, LYE_FORM_PASS, LYE_SETM2, /* ^X ^Y ^Z ESC */ LYE_FORM_PASS, LYE_FORM_PASS, LYE_SWMAP, LYE_ABORT, /* ^\ ^] ^^ ^_ */ /* sp .. RUBOUT */ LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_DELP, /* 80..9F ISO-8859-1 8-bit escape characters. */ LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_AIX, /* 97 AIX */ LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, /* A0..FF (permissible ISO-8859-1) 8-bit characters. */ LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR, /* 100..10F function key definitions in LYStrings.h */ LYE_FORM_PASS, LYE_FORM_PASS, LYE_FORW, LYE_BACK, /* UPARROW DNARROW RTARROW LTARROW */ LYE_FORM_PASS, LYE_FORM_PASS, LYE_BOL, LYE_EOL, /* PGDOWN PGUP HOME END */ #if (defined(_WINDOWS) || defined(__DJGPP__)) LYE_FORM_PASS, LYE_NOP, LYE_NOP, LYE_NOP, /* F1 */ #else LYE_FORM_PASS, LYE_TAB, LYE_BOL, LYE_EOL, /* F1 Do key Find key Select key */ #endif /* _WINDOWS || __DJGPP__ */ LYE_NOP, LYE_DELN, LYE_NOP, LYE_FORM_PASS, /* Insert key Remove key DO_NOTHING Back tab */ /* 110..18F */ #if (defined(_WINDOWS) || defined(__DJGPP__)) && defined(USE_SLANG) && !defined(DJGPP_KEYHANDLER) LYE_DELP, LYE_ENTER, LYE_NOP, LYE_NOP, /* Backspace Enter */ #else LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, #endif /* USE_SLANG &&(_WINDOWS || __DJGPP) && !DJGPP_KEYHANDLER */ LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, /* MOUSE_KEY */ LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, /* 190..20F */ LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, /* 210..28F */ LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, /* 290..293 */ LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, }; /* Oh no, not another one of those tables... * * If modifier bit is set in a lynxkeycode, it is first looked up here. Note * the type different from the previous tables (short vs. char), since we want * to hold larger values. OTOH we can keep the size shorter, everything beyond * the end is effectively LYE_UNMOD (ignore modifier) by virtue of the * LKC_TO_LEC_M1 macro. * * Currently this table isn't specific to the current_lineedit value, it is * shared by all alternative "Bindings" to save space. However, if the * modifier flag is set only by a LYE_SETMn lynxeditaction, this table can have * effect only for those Bindings that map a lynxkeycode to LYE_SETMn. ( This * doesn't apply if the modifier is already being set in LYgetch(). ) - kw */ static short Mod1Binding[LAST_MOD1_LKC+1]={ LYE_NOP, LYE_BOL, LYE_BACKW, LYE_UNMOD, /* nul ^A ^B ^C */ LYE_FORM_LAC|LYK_NEXT_LINK, LYE_FORM_LAC|LYK_EDIT_TEXTAREA, LYE_FORWW, LYE_ABORT, /* ^D ^E ^F ^G */ LYE_DELPW, LYE_UNMOD, LYE_ENTER, LYE_FORM_LAC|LYK_LPOS_NEXT_LINK, /* bs tab nl ^K */ LYE_FORM_PASS, LYE_ENTER, LYE_FORWW, LYE_UNMOD, /* ^L cr ^N ^O */ LYE_BACKW, LYE_NOP, LYE_BACKW, LYE_NOP, /* ^P XON ^R ^S/XOFF */ LYE_NOP, LYE_FORM_PASS, LYE_NOP, LYE_KILLREG, /* ^T ^U ^V ^W */ LYE_XPMARK, LYE_UNMOD, LYE_FORM_PASS, LYE_NOP, /* ^X ^Y ^Z ESC */ LYE_FORM_PASS, LYE_FORM_PASS, LYE_UNMOD, LYE_NOP, /* ^\ ^] ^^ ^_ */ /* sp .. ? */ LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_FORM_PASS, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_FORM_LAC|LYK_HOME, LYE_UNMOD, LYE_FORM_LAC|LYK_END, LYE_UNMOD, /* @, A .. Z, [, \, ], ^, _ */ LYE_C1CHAR, LYE_C1CHAR, LYE_C1CHAR, LYE_C1CHAR, LYE_C1CHAR, LYE_C1CHAR, LYE_C1CHAR, LYE_C1CHAR, LYE_C1CHAR, LYE_C1CHAR, LYE_C1CHAR, LYE_C1CHAR, LYE_C1CHAR, LYE_C1CHAR, LYE_C1CHAR, LYE_C1CHAR, LYE_C1CHAR, LYE_C1CHAR, LYE_C1CHAR, LYE_C1CHAR, LYE_C1CHAR, LYE_C1CHAR, LYE_C1CHAR, LYE_C1CHAR, LYE_C1CHAR, LYE_C1CHAR, LYE_C1CHAR, LYE_C1CHAR, LYE_C1CHAR, LYE_C1CHAR, LYE_C1CHAR, LYE_C1CHAR, /* `, a .. z, {, |, }, ~, RUBOUT */ LYE_UNMOD, LYE_BOL, LYE_BACKW, LYE_UNMOD, LYE_DELNW, LYE_FORM_LAC|LYK_EDIT_TEXTAREA, LYE_FORWW, LYE_FORM_LAC|LYK_GROW_TEXTAREA, LYE_CHAR, LYE_FORM_LAC|LYK_INSERT_FILE, LYE_CHAR, LYE_ERASE, LYE_LOWER, LYE_CHAR, LYE_FORM_PASS, LYE_UNMOD, LYE_CHAR, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_UPPER, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_DELPW, /* 80..9F ISO-8859-1 8-bit escape characters. */ LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP, /* A0..FF (permissible ISO-8859-1) 8-bit characters. */ LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, /* 100..10F function key definitions in LYStrings.h */ LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, /* UPARROW DNARROW RTARROW LTARROW */ LYE_UNMOD, LYE_UNMOD, LYE_FORM_PASS, LYE_FORM_PASS, /* PGDOWN PGUP HOME END */ #if (defined(_WINDOWS) || defined(__DJGPP__)) LYE_FORM_LAC|LYK_DWIMHELP, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, /* F1 */ #else LYE_FORM_LAC|LYK_DWIMHELP, LYE_UNMOD, LYE_FORM_LAC|LYK_WHEREIS, LYE_FORM_LAC|LYK_NEXT, /* F1 Do key Find key Select key */ #endif /* _WINDOWS || __DJGPP__ */ LYE_UNMOD, LYE_NOP, LYE_UNMOD, LYE_UNMOD, /* Insert key Remove key DO_NOTHING Back tab */ /* 110..111 */ #if (defined(_WINDOWS) || defined(__DJGPP__)) && defined(USE_SLANG) && !defined(DJGPP_KEYHANDLER) LYE_DELPW, LYE_UNMOD, /* Backspace Enter */ #else LYE_UNMOD, LYE_UNMOD, #endif /* USE_SLANG &&(_WINDOWS || __DJGPP) && !DJGPP_KEYHANDLER */ }; /* Two more tables here, but currently they are all the same. In other words, we are cheating to save space, until there is a need for different tables. - kw */ static short *Mod2Binding = Mod1Binding; static short *Mod3Binding = Mod1Binding; #endif /* EXP_ALT_BINDINGS */ /* *INDENT-ON* */ /* * Add the array name to LYLineEditors */ LYEditCode *LYLineEditors[] = { DefaultEditBinding, /* You can't please everyone, so you ... DW */ #ifdef EXP_ALT_BINDINGS BetterEditBinding, /* No, you certainly can't ... /ked 10/27/98 */ BashlikeEditBinding, /* and one more... - kw 1999-02-15 */ #endif }; /* * Add the name that the user will see below. * The order of LYLineEditors and LYLineditNames MUST be the same. */ const char *LYLineeditNames[] = { "Default Binding", #ifdef EXP_ALT_BINDINGS "Alternate Bindings", "Bash-like Bindings", #endif (char *) 0 }; /* * Add the URL (relative to helpfilepath) used for context-dependent * help on form field editing. * * The order must correspond to that of LYLineditNames. */ const char *LYLineeditHelpURLs[] = { EDIT_HELP, #ifdef EXP_ALT_BINDINGS ALT_EDIT_HELP, BASHLIKE_EDIT_HELP, #endif (char *) 0 }; int EditBinding(int xlkc) { int editaction, xleac = LYE_UNMOD; int c = xlkc & LKC_MASK; if (xlkc == -1) return LYE_NOP; /* maybe LYE_ABORT? or LYE_FORM_LAC|LYK_UNKNOWN? */ #ifdef NOT_ASCII if (c < 256) { c = TOASCII(c); } #endif #ifdef EXP_ALT_BINDINGS /* * Get intermediate code from one of the lynxkeycode+modifier tables if * applicable, otherwise get the lynxeditactioncode directly. If we have * more than one modifier bits, the first currently wins. - kw */ if (xlkc & LKC_ISLECLAC) { return LKC2_TO_LEC(xlkc); } else if (xlkc & LKC_MOD1) { xleac = LKC_TO_LEC_M1(c); } else if (xlkc & LKC_MOD2) { xleac = LKC_TO_LEC_M2(c); } else if (xlkc & LKC_MOD3) { xleac = LKC_TO_LEC_M3(c); } else { xleac = UCH(LYLineEditors[current_lineedit][c]); } #endif /* * If we have an intermediate code that says "same as without modifier", * look that up now; otherwise we are already done. - kw */ if (xleac == LYE_UNMOD) { editaction = LYLineEditors[current_lineedit][c]; } else { editaction = xleac; } return editaction; } /* * Install lec as the lynxeditaction for lynxkeycode xlkc. func must be * present in the revmap table. For normal (non-modifier) lynxkeycodes, * select_edi selects which of the alternative line-editor binding tables is * modified. If select_edi is positive, only the table given by it is modified * (the DefaultEditBinding table is numbered 1). If select_edi is 0, all * tables are modified. If select_edi is negative, all tables except the one * given by abs(select_edi) are modified. returns TRUE if the mapping was * made, FALSE if not. Note that this remapping cannot be undone (as might be * desirable as a result of re-parsing lynx.cfg), we don't remember the * original editaction from the Bindings tables anywhere. - kw */ BOOL LYRemapEditBinding(int xlkc, int lec, int select_edi) { int j; int c = xlkc & LKC_MASK; BOOLEAN success = FALSE; if (xlkc < 0 || (xlkc & LKC_ISLAC) || c >= KEYMAP_SIZE + 1) return FALSE; #ifdef EXP_ALT_BINDINGS if (xlkc & LKC_MOD1) { if (c > LAST_MOD1_LKC) return FALSE; else Mod1Binding[c] = (short) lec; return TRUE; } else if (xlkc & LKC_MOD2) { if (c > LAST_MOD2_LKC) return FALSE; else Mod2Binding[c] = (short) lec; return TRUE; } else if (xlkc & LKC_MOD3) { if (c > LAST_MOD3_LKC) return FALSE; else Mod3Binding[c] = (short) lec; return TRUE; } else #endif /* EXP_ALT_BINDINGS */ { #ifndef UCHAR_MAX #define UCHAR_MAX 255 #endif if ((unsigned int) lec > UCHAR_MAX) return FALSE; /* cannot do, doesn't fit in a char - kw */ if (select_edi > 0) { if ((unsigned int) select_edi < TABLESIZE(LYLineEditors)) { LYLineEditors[select_edi - 1][c] = (LYEditCode) lec; success = TRUE; } } else { for (j = 0; LYLineeditNames[j]; j++) { success = TRUE; if (select_edi < 0 && j + 1 + select_edi == 0) continue; LYLineEditors[j][c] = (LYEditCode) lec; } } } return success; } /* * Macro to walk through lkc-indexed tables up to imax, in the (ASCII) order * 97 - 122 ('a' - 'z'), * 32 - 96 (' ' - '`', includes 'A' - 'Z'), * 123 - 126 ('{' - '~'), * 0 - 31 (^@ - ^_), * 256 - imax, * 127 - 255 */ #define NEXT_I(i,imax) ((i==122) ? 32 : (i==96) ? 123 : (i==126) ? 0 :\ (i==31) ? 256 : (i==imax) ? 127 :\ (i==255) ? (-1) :i+1) #define FIRST_I 97 int LYKeyForEditAction(int lec) { int editaction, i; for (i = FIRST_I; i >= 0; i = NEXT_I(i, KEYMAP_SIZE - 2)) { editaction = LYLineEditors[current_lineedit][i]; if (editaction == lec) { #ifdef NOT_ASCII if (i < 256) { return FROMASCII(i); } else #endif return i; } } return (-1); } /* * Given a lynxactioncode, return a key (lynxkeycode) or sequence of two keys * that results in the given action while forms-editing. The main keycode is * returned as function value, possibly with modifier bits set; in addition, if * applicable, a key that sets the required modifier flag is returned in * *pmodkey if (pmodkey!=NULL). Non-lineediting bindings that would require * typing LYE_LKCMD (default ^V) to activate are not checked here, the caller * should do that separately if required. If no key is bound by current * line-editor bindings to the action, -1 is returned. * * This is all a bit long - it is general enough to continue to work should the * three Mod<N>Binding[] become different tables. - kw */ int LYEditKeyForAction(int lac, int *pmodkey) { int editaction, i, c; int mod1found = -1, mod2found = -1, mod3found = -1; if (pmodkey) *pmodkey = -1; for (i = FIRST_I; i >= 0; i = NEXT_I(i, KEYMAP_SIZE - 2)) { editaction = LYLineEditors[current_lineedit][i]; #ifdef NOT_ASCII if (i < 256) { c = FROMASCII(i); } else #endif c = i; if (editaction == (lac | LYE_FORM_LAC)) return c; if (editaction == LYE_FORM_PASS) { #if defined(DIRED_SUPPORT) && defined(OK_OVERRIDE) if (lynx_edit_mode && !no_dired_support && lac && LKC_TO_LAC(key_override, c) == lac) return c; #endif /* DIRED_SUPPORT && OK_OVERRIDE */ if (LKC_TO_LAC(keymap, c) == lac) return c; } if (editaction == LYE_TAB) { #if defined(DIRED_SUPPORT) && defined(OK_OVERRIDE) if (lynx_edit_mode && !no_dired_support && lac && LKC_TO_LAC(key_override, '\t') == lac) return c; #endif /* DIRED_SUPPORT && OK_OVERRIDE */ if (LKC_TO_LAC(keymap, '\t') == lac) return c; } if (editaction == LYE_SETM1 && mod1found < 0) mod1found = i; if (editaction == LYE_SETM2 && mod2found < 0) mod2found = i; if ((editaction & LYE_DF) && mod3found < 0) mod3found = i; } #ifdef EXP_ALT_BINDINGS if (mod3found >= 0) { for (i = mod3found; i >= 0; i = NEXT_I(i, LAST_MOD3_LKC)) { editaction = LYLineEditors[current_lineedit][i]; if (!(editaction & LYE_DF)) continue; editaction = Mod3Binding[i]; #ifdef NOT_ASCII if (i < 256) { c = FROMASCII(i); } else #endif c = i; if (pmodkey) *pmodkey = c; if (editaction == (lac | LYE_FORM_LAC)) return (c | LKC_MOD3); if (editaction == LYE_FORM_PASS) { #if defined(DIRED_SUPPORT) && defined(OK_OVERRIDE) if (lynx_edit_mode && !no_dired_support && lac && LKC_TO_LAC(key_override, c) == lac) return (c | LKC_MOD3); #endif /* DIRED_SUPPORT && OK_OVERRIDE */ if (LKC_TO_LAC(keymap, c) == lac) return (c | LKC_MOD3); } if (editaction == LYE_TAB) { #if defined(DIRED_SUPPORT) && defined(OK_OVERRIDE) if (lynx_edit_mode && !no_dired_support && lac && LKC_TO_LAC(key_override, '\t') == lac) return (c | LKC_MOD3); #endif /* DIRED_SUPPORT && OK_OVERRIDE */ if (LKC_TO_LAC(keymap, '\t') == lac) return (c | LKC_MOD3); } } } if (mod1found >= 0) { if (pmodkey) { #ifdef NOT_ASCII if (mod1found < 256) { *pmodkey = FROMASCII(mod1found); } else #endif *pmodkey = mod1found; } for (i = FIRST_I; i >= 0; i = NEXT_I(i, LAST_MOD1_LKC)) { editaction = Mod1Binding[i]; #ifdef NOT_ASCII if (i < 256) { c = FROMASCII(i); } else #endif c = i; if (editaction == (lac | LYE_FORM_LAC)) return (c | LKC_MOD1); if (editaction == LYE_FORM_PASS) { #if defined(DIRED_SUPPORT) && defined(OK_OVERRIDE) if (lynx_edit_mode && !no_dired_support && lac && LKC_TO_LAC(key_override, c) == lac) return (c | LKC_MOD1); #endif /* DIRED_SUPPORT && OK_OVERRIDE */ if (LKC_TO_LAC(keymap, c) == lac) return (c | LKC_MOD1); } if (editaction == LYE_TAB) { #if defined(DIRED_SUPPORT) && defined(OK_OVERRIDE) if (lynx_edit_mode && !no_dired_support && lac && LKC_TO_LAC(key_override, '\t') == lac) return (c | LKC_MOD1); #endif /* DIRED_SUPPORT && OK_OVERRIDE */ if (LKC_TO_LAC(keymap, '\t') == lac) return (c | LKC_MOD1); } } } if (mod2found >= 0) { if (pmodkey) { #ifdef NOT_ASCII if (mod1found < 256) { *pmodkey = FROMASCII(mod1found); } else #endif *pmodkey = mod1found; } for (i = FIRST_I; i >= 0; i = NEXT_I(i, LAST_MOD2_LKC)) { editaction = Mod2Binding[i]; #ifdef NOT_ASCII if (i < 256) { c = FROMASCII(i); } else #endif c = i; if (editaction == (lac | LYE_FORM_LAC)) return (c | LKC_MOD2); if (editaction == LYE_FORM_PASS) { #if defined(DIRED_SUPPORT) && defined(OK_OVERRIDE) if (lynx_edit_mode && !no_dired_support && lac && LKC_TO_LAC(key_override, c) == lac) return (c | LKC_MOD2); #endif /* DIRED_SUPPORT && OK_OVERRIDE */ if (LKC_TO_LAC(keymap, c) == lac) return (c | LKC_MOD2); } if (editaction == LYE_TAB) { #if defined(DIRED_SUPPORT) && defined(OK_OVERRIDE) if (lynx_edit_mode && !no_dired_support && lac && LKC_TO_LAC(key_override, '\t') == lac) return (c | LKC_MOD2); #endif /* DIRED_SUPPORT && OK_OVERRIDE */ if (LKC_TO_LAC(keymap, '\t') == lac) return (c | LKC_MOD2); } } } #endif /* EXP_ALT_BINDINGS */ if (pmodkey) *pmodkey = -1; return (-1); } /* * Dummy initializer to ensure this module is linked * if the external model is common block, and the * module is ever placed in a library. - FM */ int LYEditmapDeclared(void) { int status = 1; return status; }