about summary refs log blame commit diff stats
path: root/src/LYKeymap.h
blob: 036e4c60f9791f6f817b4b5d4e716dff3e49b983 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11


                  
                 
                    
      




                                                                  

                                                      
                                                 


                                                  

                                    
                                           

                                  
 





                                                                         
                       
                                                               
 

                          
                                      



                                                   
                                                  
                                 

      








































                                                                                 

                                                                          

























                 

                      








                      
                                                                        


              
                






































                     
                


                     

                        
                


                                          
 
                    
              

                                    
                                          
                  

                                     
                                 
 
                    





                

                                     
                          
 
                
 
 
                       
#ifndef LYKEYMAP_H
#define LYKEYMAP_H

#ifndef HTUTILS_H
#include <HTUtils.h>
#endif

extern BOOLEAN LYisNonAlnumKeyname PARAMS((int ch, int key_name));
extern char *key_for_func PARAMS((int func));
extern int LYReverseKeymap PARAMS((int key_name));
extern int lookup_keymap PARAMS((int code));
extern int lacname_to_lac PARAMS((CONST char *func));
extern int lkcstring_to_lkc PARAMS((CONST char *src));
extern int remap PARAMS((char *key, char *func));
extern void print_keymap PARAMS((char **newfile));
extern void reset_emacs_keys NOPARAMS;
extern void reset_numbers_as_arrows NOPARAMS;
extern void reset_vi_keys NOPARAMS;
extern void set_emacs_keys NOPARAMS;
extern void set_numbers_as_arrows NOPARAMS;
extern void set_vi_keys NOPARAMS;
extern void set_vms_keys NOPARAMS;

/* We only use unsigned keycodes; if there's a problem matching with enum
 * (which is supposed to be 'int'), that would be okay, but not as clean
 * for type-checking.
 */
typedef unsigned short LYKeymap_t;

#define KEYMAP_SIZE 661
extern LYKeymap_t keymap[KEYMAP_SIZE]; /* main keymap matrix */

#ifdef EXP_KEYBOARD_LAYOUT
extern int current_layout;
extern unsigned short * LYKbLayouts[];
extern char * LYKbLayoutNames[];
extern int LYSetKbLayout PARAMS((char *layout_id));
#endif

#if defined(DIRED_SUPPORT) && defined(OK_OVERRIDE)
extern LYKeymap_t key_override[];
#endif

/* * *  LynxKeyCodes  * * */
#define LKC_MOD1	0x4000	/* a modifier bit - currently for ^x-map */
#define LKC_MOD2	0x2000	/* another one - currently for esc-map */
#define LKC_MOD3	0x1000	/* another one - currently for double-map */
#define LKC_ISLAC	0x0800	/* flag: lynxkeycode already lynxactioncode */
#define LKC_ISLKC	0x0400	/* flag: already lynxkeycode (not native) */
		     /* 0x0400  is MOUSE_KEYSYM for slang in LYStrings.c */
#define LKC_MASK	0x07FF	/* mask for lynxkeycode proper */

#define LKC_DONE	0x07FE	/* special value - operation done, not-a-key */

/* * *  LynxActionCodes  * * */
#define LAC_MASK	0x00FF	/* mask for lynxactioncode - must cover all
				   assigned LYK_* values */


/*  Convert lynxkeycode to lynxactioncode.  Modifiers are dropped.  */
#define LKC_TO_LAC(ktab,c) (((c)==-1) ? ktab[0] : \
			    ((c)&LKC_ISLAC) ? ((c)&LAC_MASK) : \
			    ktab[((c)&LKC_MASK)+1])


/*  Mask lynxactioncode as a lynxkeycode.  */
#define LAC_TO_LKC0(a) ((a)|LKC_ISLAC)

/*  Convert lynxactioncode to a lynxkeycode, attempting reverse mapping.  */
#define LAC_TO_LKC(a) ((LYReverseKeymap(a)>=0)?LYReverseKeymap(a):LAC_TO_LKC0(a))

/*  Simplify a lynxkeycode:
    attempt reverse mapping if a masked lynxactioncode, drop modifiers.  */
#define LKC_TO_C(c) ((c&LKC_ISLAC)? LAC_TO_LKC(c&LAC_MASK) : (c&LKC_MASK))

#define LKC_HAS_ESC_MOD(c) (c >= 0 && (c&LKC_MOD2))


/* *  The defined LynxActionCodes  * */

/*  Variables for holding and passing around lynxactioncodes are
 *  generally of type int, the types LYKeymap_t and LYKeymapCodes
 *  are currently only used for the definitions.  That could change. - kw
 */
/* The order of this enum must match the 'revmap[]' array in LYKeymap.c */
typedef enum {
    LYK_UNKNOWN=0
  , LYK_1
  , LYK_2
  , LYK_3
  , LYK_4
  , LYK_5
  , LYK_6
  , LYK_7
  , LYK_8
  , LYK_9
  , LYK_SOURCE
  , LYK_RELOAD
  , LYK_PIPE
  , LYK_QUIT
  , LYK_ABORT
  , LYK_NEXT_PAGE
  , LYK_PREV_PAGE
  , LYK_UP_TWO
  , LYK_DOWN_TWO
  , LYK_UP_HALF
  , LYK_DOWN_HALF
  , LYK_REFRESH
  , LYK_HOME
  , LYK_END
  , LYK_PREV_LINK
  , LYK_NEXT_LINK
  , LYK_LPOS_PREV_LINK
  , LYK_LPOS_NEXT_LINK
  , LYK_FASTBACKW_LINK
  , LYK_FASTFORW_LINK
  , LYK_UP_LINK
  , LYK_DOWN_LINK
  , LYK_RIGHT_LINK
  , LYK_LEFT_LINK
  , LYK_HISTORY
  , LYK_PREV_DOC
  , LYK_ACTIVATE
  , LYK_SUBMIT	/* mostly like LYK_ACTIVATE, for mouse use, don't map */
  , LYK_GOTO
  , LYK_ECGOTO
  , LYK_HELP
  , LYK_DWIMHELP
  , LYK_INDEX
  , LYK_NOCACHE
  , LYK_INTERRUPT
  , LYK_MAIN_MENU
  , LYK_OPTIONS
  , LYK_INDEX_SEARCH
  , LYK_WHEREIS
  , LYK_NEXT
  , LYK_COMMENT
  , LYK_EDIT
  , LYK_INFO
  , LYK_PRINT
  , LYK_ADD_BOOKMARK
  , LYK_DEL_BOOKMARK
  , LYK_VIEW_BOOKMARK
  , LYK_VLINKS
  , LYK_SHELL
  , LYK_DOWNLOAD
  , LYK_TRACE_TOGGLE
  , LYK_TRACE_LOG
  , LYK_IMAGE_TOGGLE
  , LYK_INLINE_TOGGLE
  , LYK_HEAD
  , LYK_DO_NOTHING
  , LYK_TOGGLE_HELP
  , LYK_JUMP
  , LYK_KEYMAP
  , LYK_LIST
  , LYK_TOOLBAR
  , LYK_HISTORICAL
  , LYK_MINIMAL
  , LYK_SOFT_DQUOTES
  , LYK_RAW_TOGGLE
  , LYK_COOKIE_JAR
  , LYK_F_LINK_NUM
  , LYK_CLEAR_AUTH
  , LYK_SWITCH_DTD
  , LYK_ELGOTO
  , LYK_CHANGE_LINK
  , LYK_DWIMEDIT
  , LYK_EDIT_TEXTAREA
  , LYK_GROW_TEXTAREA
  , LYK_INSERT_FILE

#ifdef EXP_ADDRLIST_PAGE
  , LYK_ADDRLIST
#else
#define LYK_ADDRLIST      LYK_ADD_BOOKMARK
#endif

#ifdef USE_EXTERNALS
  , LYK_EXTERN
#endif /* !defined(USE_EXTERNALS) */

#if defined(VMS) || defined(DIRED_SUPPORT)
  , LYK_DIRED_MENU
#else
#define LYK_DIRED_MENU    LYK_UNKNOWN
#endif /* VMS || DIRED_SUPPORT */

#ifdef DIRED_SUPPORT
  , LYK_CREATE
  , LYK_REMOVE
  , LYK_MODIFY
  , LYK_TAG_LINK
  , LYK_UPLOAD
  , LYK_INSTALL
#else
#define LYK_TAG_LINK      LYK_UNKNOWN
#endif /* DIRED_SUPPORT */

} LYKeymapCodes;


#endif /* LYKEYMAP_H */