mc/lib/tty/key.h

105 lines
2.6 KiB
C
Raw Normal View History

/** \file key.h
* \brief Header: keyboard support routines
*/
#ifndef MC_KEY_H
#define MC_KEY_H
1998-02-27 07:54:42 +03:00
#include "lib/global.h" /* <glib.h> */
#include "src/dialog.h" /* cb_ret_t */
#include "tty.h" /* KEY_F macro */
gboolean define_sequence (int code, const char *seq, int action);
1998-02-27 07:54:42 +03:00
void init_key (void);
void init_key_input_fd (void);
void done_key (void);
/* Keys management */
typedef void (*move_fn) (void *data, int param);
cb_ret_t check_movement_keys (int key, int page_size, void *data,
move_fn backfn, move_fn forfn, move_fn topfn, move_fn bottomfn);
long lookup_key (const char *name, char **label);
typedef struct {
int code;
const char *name;
const char *longname;
const char *shortcut;
} key_code_name_t;
extern const key_code_name_t key_name_conv_tab[];
extern int old_esc_mode_timeout;
/* mouse support */
2003-10-26 07:03:07 +03:00
struct Gpm_Event;
int tty_get_event (struct Gpm_Event *event, gboolean redo_event, gboolean block);
gboolean is_idle (void);
int tty_getch (void);
/* Possible return values from tty_get_event: */
1998-02-27 07:54:42 +03:00
#define EV_MOUSE -2
#define EV_NONE -1
/*
* Internal representation of the key modifiers. It is used in the
* sequence tables and the keycodes in the mc sources.
*/
#define KEY_M_SHIFT 0x1000
#define KEY_M_ALT 0x2000
#define KEY_M_CTRL 0x4000
#define KEY_M_MASK 0x7000
extern int alternate_plus_minus;
1998-02-27 07:54:42 +03:00
extern int double_click_speed;
extern int old_esc_mode;
extern int use_8th_bit_as_meta;
extern int mou_auto_repeat;
1998-02-27 07:54:42 +03:00
/* While waiting for input, the program can select on more than one file */
typedef int (*select_fn) (int fd, void *info);
1998-02-27 07:54:42 +03:00
/* Channel manipulation */
void add_select_channel (int fd, select_fn callback, void *info);
1998-02-27 07:54:42 +03:00
void delete_select_channel (int fd);
void remove_select_channel (int fd);
/* Activate/deactivate the channel checking */
void channels_up (void);
void channels_down (void);
#define XCTRL(x) (KEY_M_CTRL | ((x) & 0x1F))
#define ALT(x) (KEY_M_ALT | (unsigned int)(x))
1998-02-27 07:54:42 +03:00
static inline gboolean
is_abort_char (int c)
{
return ((c == ESC_CHAR) || (c == KEY_F (10)));
}
1998-02-27 07:54:42 +03:00
/* To define sequences and return codes */
#define MCKEY_NOACTION 0
#define MCKEY_ESCAPE 1
/* Return code for the mouse sequence */
#define MCKEY_MOUSE -2
/* internally used in key.c, defined in keyxtra.c */
void load_xtra_key_defines (void);
1998-02-27 07:54:42 +03:00
/* Learn a single key */
char *learn_key (void);
/* Returns a key code (interpreted) */
int get_key_code (int nodelay);
Wed Apr 1 00:15:30 1998 Norbert Warmuth <k3190@fh-sw.de> * key.c, key.h (numeric_keypad_mode, application_keypad_mode): New functions which encapsulate two hardcoded escape sequences from main.c. * main.c (main): Use the two new functions from key.c * main.c, screen.c: Moved all file selection keys from the default keymap to the keymap for panels in listing mode. Changed *_selection_cmd to *_selection_cmd_panel in panel_keymap (functions in panel_keymap get a WPanel * as first parameter, i.e. the indirection with cpanel isn't necessary). * main.c (midnight_callback): Keys '*' and '-' were not treated when only_leading_plus_minus==0; Optimized the if-clauses a little bit (i.e. removed duplicate checks). More optimation is possible but it would make the whole stuff completly unreadable. * key.c (correct_key_code): KP_ADD, KP_SUBTRACT and KP_MULTIPLY will be translated to +, - and * only if the option alternate_plus_minus is turned off. * learn.c (learn_keys): Turn alternate_plus_minus temporarily on to avoid translation of KP_ADD, KP_SUBTRACT and KP_MULTIPLY in correct_key_code/make sure keypad is in application mode (makes it possible to learn this keys). * cmd.c (reverse_selection_cmd_panel): New function (renamed from reverse_selection_cmd, takes a WPanel * as parameter, references to cpanel changed to panel/the passed parameter). reverse_selection_cmd now simply calls this function with cpanel. This pair was missing among the *_selection_cmd* functions. * cmd.h: Added function prototypes.
1998-04-01 02:36:24 +04:00
/* Set keypad mode (xterm and linux console only) */
void numeric_keypad_mode (void);
void application_keypad_mode (void);
1998-02-27 07:54:42 +03:00
#endif /* MC_KEY_H */