|
Packit |
f574b8 |
/* $LynxId: LYKeymap.h,v 1.55 2015/10/07 23:34:55 tom Exp $ */
|
|
Packit |
f574b8 |
#ifndef LYKEYMAP_H
|
|
Packit |
f574b8 |
#define LYKEYMAP_H
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#include <HTUtils.h>
|
|
Packit |
f574b8 |
#include <HTList.h>
|
|
Packit |
f574b8 |
#include <LYCurses.h>
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef __cplusplus
|
|
Packit |
f574b8 |
extern "C" {
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
extern BOOLEAN LYisNonAlnumKeyname(int ch, int KeyName);
|
|
Packit |
f574b8 |
extern HTList *LYcommandList(void);
|
|
Packit |
f574b8 |
extern const char *lec_to_lecname(int code);
|
|
Packit |
f574b8 |
extern char *LYKeycodeToString(int c, int upper8);
|
|
Packit |
f574b8 |
extern char *fmt_keys(int lkc_first, int lkc_second);
|
|
Packit |
f574b8 |
extern char *key_for_func(int func);
|
|
Packit |
f574b8 |
extern char *key_for_func_ext(int lac, int context_code);
|
|
Packit |
f574b8 |
extern int LYReverseKeymap(int KeyName);
|
|
Packit |
f574b8 |
extern int LYStringToKeycode(char *src);
|
|
Packit |
f574b8 |
extern int lacname_to_lac(const char *func);
|
|
Packit |
f574b8 |
extern int lecname_to_lec(const char *func);
|
|
Packit |
f574b8 |
extern int lkcstring_to_lkc(const char *src);
|
|
Packit |
f574b8 |
extern int remap(char *key, const char *func, int for_dired);
|
|
Packit |
f574b8 |
extern void print_keymap(char **newfile);
|
|
Packit |
f574b8 |
extern void reset_emacs_keys(void);
|
|
Packit |
f574b8 |
extern void reset_numbers_as_arrows(void);
|
|
Packit |
f574b8 |
extern void reset_vi_keys(void);
|
|
Packit |
f574b8 |
extern void set_emacs_keys(void);
|
|
Packit |
f574b8 |
extern void set_numbers_as_arrows(void);
|
|
Packit |
f574b8 |
extern void set_vi_keys(void);
|
|
Packit |
f574b8 |
extern void set_vms_keys(void);
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
/* We only use unsigned keycodes; if there's a problem matching with enum
|
|
Packit |
f574b8 |
* (which is supposed to be 'int'), that would be okay, but not as clean
|
|
Packit |
f574b8 |
* for type-checking.
|
|
Packit |
f574b8 |
*/
|
|
Packit |
f574b8 |
typedef short LYKeymap_t;
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#define KEYMAP_SIZE 661
|
|
Packit |
f574b8 |
extern LYKeymap_t keymap[KEYMAP_SIZE]; /* main keymap matrix */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef EXP_KEYBOARD_LAYOUT
|
|
Packit |
f574b8 |
typedef unsigned short LYKbLayout_t;
|
|
Packit |
f574b8 |
extern int current_layout;
|
|
Packit |
f574b8 |
extern LYKbLayout_t *LYKbLayouts[];
|
|
Packit |
f574b8 |
extern const char *LYKbLayoutNames[];
|
|
Packit |
f574b8 |
extern BOOLEAN LYSetKbLayout(char *layout_id);
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#if defined(DIRED_SUPPORT) && defined(OK_OVERRIDE)
|
|
Packit |
f574b8 |
extern LYKeymap_t key_override[];
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
/* readable mapping for characters in edit- and key-maps */
|
|
Packit |
f574b8 |
#define CTL(c) ((c) & 0x1f)
|
|
Packit |
f574b8 |
#define KHR(c) ((c) + 1)
|
|
Packit |
f574b8 |
#define KTL(c) (CTL(c) + 1)
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
/* * * LynxKeyCodes * * */
|
|
Packit |
f574b8 |
#define LKC_ISLECLAC 0x8000 /* flag: contains lynxaction + editaction */
|
|
Packit |
f574b8 |
#define LKC_MOD1 0x4000 /* a modifier bit - currently for ^x-map */
|
|
Packit |
f574b8 |
#define LKC_MOD2 0x2000 /* another one - currently for esc-map */
|
|
Packit |
f574b8 |
#define LKC_MOD3 0x1000 /* another one - currently for double-map */
|
|
Packit |
f574b8 |
#define LKC_ISLAC 0x0800 /* flag: lynxkeycode already lynxactioncode */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
/* Used to distinguish internal Lynx keycodes of (say) extended ncurses once. */
|
|
Packit |
f574b8 |
#define LKC_ISLKC 0x0400 /* flag: already lynxkeycode (not native) */
|
|
Packit |
f574b8 |
/* 0x0400 is MOUSE_KEYSYM for slang in LYStrings.c */
|
|
Packit |
f574b8 |
#define LKC_MASK 0x07FF /* mask for lynxkeycode proper */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#define LKC_DONE 0x07FE /* special value - operation done, not-a-key */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
/* * * LynxActionCodes * * */
|
|
Packit |
f574b8 |
#define LAC_SHIFT 8 /* shift for lynxactioncode - must not
|
|
Packit |
f574b8 |
overwrite any assigned LYK_* values */
|
|
Packit |
f574b8 |
#define LAC_MASK ((1<
|
|
Packit |
f574b8 |
/* mask for lynxactioncode - must cover all
|
|
Packit |
f574b8 |
assigned LYK_* values */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
/* Return lkc masking single actioncode, given an lkc masking a lac + lec */
|
|
Packit |
f574b8 |
#define LKC2_TO_LKC(c) (((c) == -1 || !((c) & LKC_ISLECLAC)) ? (c) : \
|
|
Packit |
f574b8 |
(((c) & LAC_MASK) | LKC_ISLAC))
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
/* Return lynxeditactioncode, given an lkc masking a lac + lec */
|
|
Packit |
f574b8 |
#define LKC2_TO_LEC(c) (((c) == -1 || !((c) & LKC_ISLECLAC)) ? (c) : \
|
|
Packit |
f574b8 |
((((c)&~LKC_ISLECLAC)>>LAC_SHIFT) & LAC_MASK))
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
/* Convert lynxkeycode to lynxactioncode. Modifiers are dropped. */
|
|
Packit |
f574b8 |
#define LKC_TO_LAC(ktab,c) (((c) == -1) ? ktab[0] : \
|
|
Packit |
f574b8 |
((c) & (LKC_ISLECLAC|LKC_ISLAC)) ? ((c) & LAC_MASK) : \
|
|
Packit |
f574b8 |
ktab[((c) & LKC_MASK) + 1])
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
/* Mask lynxactioncode as a lynxkeycode. */
|
|
Packit |
f574b8 |
#define LAC_TO_LKC0(a) ((a)|LKC_ISLAC)
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
/* Mask a lynxactioncode and an editactioncode as a lynxkeycode. */
|
|
Packit |
f574b8 |
#define LACLEC_TO_LKC0(a,b) ((a)|((b)<
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
/* Convert lynxactioncode to a lynxkeycode, attempting reverse mapping. */
|
|
Packit |
f574b8 |
#define LAC_TO_LKC(a) ((LYReverseKeymap(a)>=0)?LYReverseKeymap(a):LAC_TO_LKC0(a))
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
/* Simplify a lynxkeycode:
|
|
Packit |
f574b8 |
attempt reverse mapping if a single masked lynxactioncode, drop modifiers. */
|
|
Packit |
f574b8 |
#define LKC_TO_C(c) ((c&LKC_ISLECLAC)? c : (c&LKC_ISLAC)? LAC_TO_LKC(c&LAC_MASK) : (c&LKC_MASK))
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#define LKC_HAS_ESC_MOD(c) (c >= 0 && !(c&LKC_ISLECLAC) && (c&LKC_MOD2))
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
/* * The defined LynxActionCodes * */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
/* Variables for holding and passing around lynxactioncodes are generally of
|
|
Packit |
f574b8 |
* type int, the types LYKeymap_t and LYKeymapCodes are currently only used for
|
|
Packit |
f574b8 |
* the definitions. That could change. - kw
|
|
Packit |
f574b8 |
*
|
|
Packit |
f574b8 |
* The values in this enum are indexed against the command names in the
|
|
Packit |
f574b8 |
* 'revmap[]' array in LYKeymap.c
|
|
Packit |
f574b8 |
*/
|
|
Packit |
f574b8 |
typedef enum {
|
|
Packit |
f574b8 |
LYK_UNKNOWN = 0
|
|
Packit |
f574b8 |
,LYK_COMMAND
|
|
Packit |
f574b8 |
,LYK_1
|
|
Packit |
f574b8 |
,LYK_2
|
|
Packit |
f574b8 |
,LYK_3
|
|
Packit |
f574b8 |
,LYK_4
|
|
Packit |
f574b8 |
,LYK_5
|
|
Packit |
f574b8 |
,LYK_6
|
|
Packit |
f574b8 |
,LYK_7
|
|
Packit |
f574b8 |
,LYK_8
|
|
Packit |
f574b8 |
,LYK_9
|
|
Packit |
f574b8 |
,LYK_SOURCE
|
|
Packit |
f574b8 |
,LYK_RELOAD
|
|
Packit |
f574b8 |
,LYK_QUIT
|
|
Packit |
f574b8 |
,LYK_ABORT
|
|
Packit |
f574b8 |
,LYK_NEXT_PAGE
|
|
Packit |
f574b8 |
,LYK_PREV_PAGE
|
|
Packit |
f574b8 |
,LYK_UP_TWO
|
|
Packit |
f574b8 |
,LYK_DOWN_TWO
|
|
Packit |
f574b8 |
,LYK_UP_HALF
|
|
Packit |
f574b8 |
,LYK_DOWN_HALF
|
|
Packit |
f574b8 |
,LYK_REFRESH
|
|
Packit |
f574b8 |
,LYK_HOME
|
|
Packit |
f574b8 |
,LYK_END
|
|
Packit |
f574b8 |
,LYK_FIRST_LINK
|
|
Packit |
f574b8 |
,LYK_LAST_LINK
|
|
Packit |
f574b8 |
,LYK_PREV_LINK
|
|
Packit |
f574b8 |
,LYK_NEXT_LINK
|
|
Packit |
f574b8 |
,LYK_LPOS_PREV_LINK
|
|
Packit |
f574b8 |
,LYK_LPOS_NEXT_LINK
|
|
Packit |
f574b8 |
,LYK_FASTBACKW_LINK
|
|
Packit |
f574b8 |
,LYK_FASTFORW_LINK
|
|
Packit |
f574b8 |
,LYK_UP_LINK
|
|
Packit |
f574b8 |
,LYK_DOWN_LINK
|
|
Packit |
f574b8 |
,LYK_RIGHT_LINK
|
|
Packit |
f574b8 |
,LYK_LEFT_LINK
|
|
Packit |
f574b8 |
,LYK_HISTORY
|
|
Packit |
f574b8 |
,LYK_PREV_DOC
|
|
Packit |
f574b8 |
,LYK_NEXT_DOC
|
|
Packit |
f574b8 |
,LYK_ACTIVATE
|
|
Packit |
f574b8 |
,LYK_MOUSE_SUBMIT /* mostly like LYK_ACTIVATE, for mouse use, don't map */
|
|
Packit |
f574b8 |
,LYK_SUBMIT
|
|
Packit |
f574b8 |
,LYK_RESET
|
|
Packit |
f574b8 |
,LYK_GOTO
|
|
Packit |
f574b8 |
,LYK_ECGOTO
|
|
Packit |
f574b8 |
,LYK_HELP
|
|
Packit |
f574b8 |
,LYK_DWIMHELP
|
|
Packit |
f574b8 |
,LYK_INDEX
|
|
Packit |
f574b8 |
,LYK_NOCACHE
|
|
Packit |
f574b8 |
,LYK_INTERRUPT
|
|
Packit |
f574b8 |
,LYK_MAIN_MENU
|
|
Packit |
f574b8 |
,LYK_OPTIONS
|
|
Packit |
f574b8 |
,LYK_INDEX_SEARCH
|
|
Packit |
f574b8 |
,LYK_WHEREIS
|
|
Packit |
f574b8 |
,LYK_PREV
|
|
Packit |
f574b8 |
,LYK_NEXT
|
|
Packit |
f574b8 |
,LYK_COMMENT
|
|
Packit |
f574b8 |
,LYK_EDIT
|
|
Packit |
f574b8 |
,LYK_INFO
|
|
Packit |
f574b8 |
,LYK_PRINT
|
|
Packit |
f574b8 |
,LYK_ADD_BOOKMARK
|
|
Packit |
f574b8 |
,LYK_DEL_BOOKMARK
|
|
Packit |
f574b8 |
,LYK_VIEW_BOOKMARK
|
|
Packit |
f574b8 |
,LYK_VLINKS
|
|
Packit |
f574b8 |
,LYK_SHELL
|
|
Packit |
f574b8 |
,LYK_DOWNLOAD
|
|
Packit |
f574b8 |
,LYK_TRACE_TOGGLE
|
|
Packit |
f574b8 |
,LYK_TRACE_LOG
|
|
Packit |
f574b8 |
,LYK_IMAGE_TOGGLE
|
|
Packit |
f574b8 |
,LYK_INLINE_TOGGLE
|
|
Packit |
f574b8 |
,LYK_HEAD
|
|
Packit |
f574b8 |
,LYK_DO_NOTHING
|
|
Packit |
f574b8 |
,LYK_TOGGLE_HELP
|
|
Packit |
f574b8 |
,LYK_JUMP
|
|
Packit |
f574b8 |
,LYK_EDITMAP
|
|
Packit |
f574b8 |
,LYK_KEYMAP
|
|
Packit |
f574b8 |
,LYK_LIST
|
|
Packit |
f574b8 |
,LYK_TOOLBAR
|
|
Packit |
f574b8 |
,LYK_HISTORICAL
|
|
Packit |
f574b8 |
,LYK_MINIMAL
|
|
Packit |
f574b8 |
,LYK_SOFT_DQUOTES
|
|
Packit |
f574b8 |
,LYK_RAW_TOGGLE
|
|
Packit |
f574b8 |
,LYK_COOKIE_JAR
|
|
Packit |
f574b8 |
,LYK_F_LINK_NUM
|
|
Packit |
f574b8 |
,LYK_CLEAR_AUTH
|
|
Packit |
f574b8 |
,LYK_SWITCH_DTD
|
|
Packit |
f574b8 |
,LYK_ELGOTO
|
|
Packit |
f574b8 |
,LYK_CHANGE_LINK
|
|
Packit |
f574b8 |
,LYK_DWIMEDIT
|
|
Packit |
f574b8 |
,LYK_EDITTEXTAREA
|
|
Packit |
f574b8 |
,LYK_GROWTEXTAREA
|
|
Packit |
f574b8 |
,LYK_INSERTFILE
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef USE_ADDRLIST_PAGE
|
|
Packit |
f574b8 |
,LYK_ADDRLIST
|
|
Packit |
f574b8 |
#else
|
|
Packit |
f574b8 |
#define LYK_ADDRLIST LYK_ADD_BOOKMARK
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef USE_EXTERNALS
|
|
Packit |
f574b8 |
,LYK_EXTERN_LINK
|
|
Packit |
f574b8 |
,LYK_EXTERN_PAGE
|
|
Packit |
f574b8 |
#else
|
|
Packit |
f574b8 |
#define LYK_EXTERN_LINK LYK_UNKNOWN
|
|
Packit |
f574b8 |
#define LYK_EXTERN_PAGE LYK_UNKNOWN
|
|
Packit |
f574b8 |
#endif /* !defined(USE_EXTERNALS) */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#if defined(VMS) || defined(DIRED_SUPPORT)
|
|
Packit |
f574b8 |
,LYK_DIRED_MENU
|
|
Packit |
f574b8 |
#else
|
|
Packit |
f574b8 |
#define LYK_DIRED_MENU LYK_UNKNOWN
|
|
Packit |
f574b8 |
#endif /* VMS || DIRED_SUPPORT */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef DIRED_SUPPORT
|
|
Packit |
f574b8 |
,LYK_CREATE
|
|
Packit |
f574b8 |
,LYK_REMOVE
|
|
Packit |
f574b8 |
,LYK_MODIFY
|
|
Packit |
f574b8 |
,LYK_TAG_LINK
|
|
Packit |
f574b8 |
,LYK_UPLOAD
|
|
Packit |
f574b8 |
,LYK_INSTALL
|
|
Packit |
f574b8 |
#else
|
|
Packit |
f574b8 |
#define LYK_TAG_LINK LYK_UNKNOWN
|
|
Packit |
f574b8 |
#endif /* DIRED_SUPPORT */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
,LYK_CHANGE_CENTER
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef KANJI_CODE_OVERRIDE
|
|
Packit |
f574b8 |
,LYK_CHANGE_KCODE
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef SUPPORT_CHDIR
|
|
Packit |
f574b8 |
,LYK_CHDIR
|
|
Packit |
f574b8 |
,LYK_PWD
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef USE_CURSES_PADS
|
|
Packit |
f574b8 |
,LYK_SHIFT_LEFT
|
|
Packit |
f574b8 |
,LYK_SHIFT_RIGHT
|
|
Packit |
f574b8 |
,LYK_LINEWRAP_TOGGLE
|
|
Packit |
f574b8 |
#else
|
|
Packit |
f574b8 |
#define LYK_SHIFT_LEFT LYK_UNKNOWN
|
|
Packit |
f574b8 |
#define LYK_SHIFT_RIGHT LYK_UNKNOWN
|
|
Packit |
f574b8 |
#define LYK_LINEWRAP_TOGGLE LYK_UNKNOWN
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef CAN_CUT_AND_PASTE
|
|
Packit |
f574b8 |
,LYK_PASTE_URL
|
|
Packit |
f574b8 |
,LYK_TO_CLIPBOARD
|
|
Packit |
f574b8 |
#else
|
|
Packit |
f574b8 |
#define LYK_PASTE_URL LYK_UNKNOWN
|
|
Packit |
f574b8 |
#define LYK_TO_CLIPBOARD LYK_UNKNOWN
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef EXP_NESTED_TABLES
|
|
Packit |
f574b8 |
,LYK_NESTED_TABLES
|
|
Packit |
f574b8 |
#else
|
|
Packit |
f574b8 |
#define LYK_NESTED_TABLES LYK_UNKNOWN
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef USE_CACHEJAR
|
|
Packit |
f574b8 |
,LYK_CACHE_JAR
|
|
Packit |
f574b8 |
#else
|
|
Packit |
f574b8 |
#define LYK_CACHE_JAR LYK_UNKNOWN
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef USE_MAXSCREEN_TOGGLE
|
|
Packit |
f574b8 |
,LYK_MAXSCREEN_TOGGLE
|
|
Packit |
f574b8 |
#else
|
|
Packit |
f574b8 |
#define LYK_MAXSCREEN_TOGGLE LYK_UNKNOWN
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
} LYKeymapCode;
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
/*
|
|
Packit |
f574b8 |
* Symbol table for internal commands.
|
|
Packit |
f574b8 |
*/
|
|
Packit |
f574b8 |
typedef struct {
|
|
Packit |
f574b8 |
LYKeymapCode code;
|
|
Packit |
f574b8 |
const char *name;
|
|
Packit |
f574b8 |
const char *doc;
|
|
Packit |
f574b8 |
} Kcmd;
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
extern Kcmd *LYKeycodeToKcmd(LYKeymapCode code);
|
|
Packit |
f574b8 |
extern Kcmd *LYStringToKcmd(const char *name);
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef __cplusplus
|
|
Packit |
f574b8 |
}
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
#endif /* LYKEYMAP_H */
|