2009-02-05 21:28:18 +03:00
|
|
|
|
|
|
|
/** \file key.h
|
|
|
|
* \brief Header: keyboard support routines
|
|
|
|
*/
|
|
|
|
|
2004-12-03 22:17:46 +03:00
|
|
|
#ifndef MC_KEY_H
|
|
|
|
#define MC_KEY_H
|
1998-02-27 07:54:42 +03:00
|
|
|
|
2009-09-17 02:07:04 +04:00
|
|
|
#include "../../src/global.h" /* <glib.h> */
|
|
|
|
#include "../../src/dialog.h" /* cb_ret_t */
|
2009-05-18 20:21:11 +04:00
|
|
|
|
2009-09-17 02:07:04 +04:00
|
|
|
#include "../../src/tty/tty.h" /* KEY_F macro */
|
2009-07-04 14:48:39 +04:00
|
|
|
|
|
|
|
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);
|
1999-04-21 23:18:31 +04:00
|
|
|
|
2009-05-24 13:39:14 +04:00
|
|
|
/* Keys management */
|
|
|
|
typedef void (*move_fn) (void *data, int param);
|
|
|
|
cb_ret_t check_movement_keys (int key, int page_size, void *data,
|
2009-09-17 02:07:04 +04:00
|
|
|
move_fn backfn, move_fn forfn, move_fn topfn, move_fn bottomfn);
|
2009-10-24 12:58:02 +04:00
|
|
|
int lookup_key (const char *keyname, char **label);
|
2009-05-24 13:39:14 +04:00
|
|
|
|
|
|
|
typedef const struct {
|
|
|
|
int code;
|
|
|
|
const char *name;
|
|
|
|
const char *longname;
|
2009-10-09 15:46:08 +04:00
|
|
|
const char *shortcut;
|
2009-05-24 13:39:14 +04:00
|
|
|
} key_code_name_t;
|
|
|
|
|
2009-09-17 02:07:04 +04:00
|
|
|
extern key_code_name_t key_name_conv_tab[];
|
2009-05-24 13:39:14 +04:00
|
|
|
|
|
|
|
/* mouse support */
|
2003-10-26 07:03:07 +03:00
|
|
|
struct Gpm_Event;
|
2009-06-19 21:33:41 +04:00
|
|
|
int tty_get_event (struct Gpm_Event *event, gboolean redo_event, gboolean block);
|
2009-07-04 14:48:39 +04:00
|
|
|
gboolean is_idle (void);
|
2009-06-19 21:33:41 +04:00
|
|
|
int tty_getch (void);
|
2009-05-24 13:39:14 +04:00
|
|
|
|
2009-06-19 21:33:41 +04:00
|
|
|
/* Possible return values from tty_get_event: */
|
1998-02-27 07:54:42 +03:00
|
|
|
#define EV_MOUSE -2
|
|
|
|
#define EV_NONE -1
|
|
|
|
|
2002-12-21 10:34:49 +03:00
|
|
|
/*
|
|
|
|
* Internal representation of the key modifiers. It is used in the
|
2002-12-21 11:43:15 +03:00
|
|
|
* sequence tables and the keycodes in the mc sources.
|
2002-12-21 10:34:49 +03:00
|
|
|
*/
|
|
|
|
#define KEY_M_SHIFT 0x1000
|
|
|
|
#define KEY_M_ALT 0x2000
|
|
|
|
#define KEY_M_CTRL 0x4000
|
|
|
|
#define KEY_M_MASK 0x7000
|
|
|
|
|
2009-08-04 14:28:09 +04:00
|
|
|
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;
|
2009-05-26 18:48:21 +04:00
|
|
|
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 */
|
2009-07-04 14:48:39 +04:00
|
|
|
typedef int (*select_fn) (int fd, void *info);
|
1998-02-27 07:54:42 +03:00
|
|
|
|
|
|
|
/* Channel manipulation */
|
2009-09-17 02:07:04 +04:00
|
|
|
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);
|
|
|
|
|
2009-10-09 15:46:08 +04:00
|
|
|
#define XCTRL(x) (KEY_M_CTRL | ((x) & 0x1F))
|
2002-12-23 12:46:28 +03:00
|
|
|
#define ALT(x) (KEY_M_ALT | (unsigned int)(x))
|
1998-02-27 07:54:42 +03:00
|
|
|
|
2009-07-04 14:48:39 +04:00
|
|
|
static inline gboolean
|
|
|
|
is_abort_char (int c)
|
|
|
|
{
|
|
|
|
return ((c == XCTRL ('c')) || (c == XCTRL ('g'))
|
2009-09-17 02:07:04 +04:00
|
|
|
|| (c == ESC_CHAR) || (c == KEY_F (10)));
|
2009-07-04 14:48:39 +04:00
|
|
|
}
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
1998-05-20 06:19:17 +04:00
|
|
|
/* 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);
|
|
|
|
|
1998-04-01 02:36:24 +04:00
|
|
|
/* Set keypad mode (xterm and linux console only) */
|
2001-11-15 02:20:37 +03:00
|
|
|
void numeric_keypad_mode (void);
|
|
|
|
void application_keypad_mode (void);
|
1998-02-27 07:54:42 +03:00
|
|
|
|
2009-09-17 02:07:04 +04:00
|
|
|
#endif /* MC_KEY_H */
|