version 1.492, 2015/04/19 21:34:21 |
version 1.493, 2015/04/20 15:34:56 |
|
|
#define KEYC_ESCAPE 0x2000 |
#define KEYC_ESCAPE 0x2000 |
#define KEYC_CTRL 0x4000 |
#define KEYC_CTRL 0x4000 |
#define KEYC_SHIFT 0x8000 |
#define KEYC_SHIFT 0x8000 |
#define KEYC_PREFIX 0x10000 |
|
|
|
/* Mask to obtain key w/o modifiers. */ |
/* Mask to obtain key w/o modifiers. */ |
#define KEYC_MASK_MOD (KEYC_ESCAPE|KEYC_CTRL|KEYC_SHIFT|KEYC_PREFIX) |
#define KEYC_MASK_MOD (KEYC_ESCAPE|KEYC_CTRL|KEYC_SHIFT) |
#define KEYC_MASK_KEY (~KEYC_MASK_MOD) |
#define KEYC_MASK_KEY (~KEYC_MASK_MOD) |
|
|
/* Is this a mouse key? */ |
/* Is this a mouse key? */ |
|
|
struct screen status; |
struct screen status; |
|
|
#define CLIENT_TERMINAL 0x1 |
#define CLIENT_TERMINAL 0x1 |
#define CLIENT_PREFIX 0x2 |
/* 0x2 unused */ |
#define CLIENT_EXIT 0x4 |
#define CLIENT_EXIT 0x4 |
#define CLIENT_REDRAW 0x8 |
#define CLIENT_REDRAW 0x8 |
#define CLIENT_STATUS 0x10 |
#define CLIENT_STATUS 0x10 |
|
|
#define CLIENT_256COLOURS 0x20000 |
#define CLIENT_256COLOURS 0x20000 |
#define CLIENT_IDENTIFIED 0x40000 |
#define CLIENT_IDENTIFIED 0x40000 |
int flags; |
int flags; |
|
struct key_table *keytable; |
|
|
struct event identify_timer; |
struct event identify_timer; |
|
|
|
|
enum cmd_retval (*exec)(struct cmd *, struct cmd_q *); |
enum cmd_retval (*exec)(struct cmd *, struct cmd_q *); |
}; |
}; |
|
|
/* Key binding. */ |
/* Key binding and key table. */ |
struct key_binding { |
struct key_binding { |
int key; |
int key; |
struct cmd_list *cmdlist; |
struct cmd_list *cmdlist; |
int can_repeat; |
int can_repeat; |
|
|
RB_ENTRY(key_binding) entry; |
RB_ENTRY(key_binding) entry; |
}; |
}; |
RB_HEAD(key_bindings, key_binding); |
RB_HEAD(key_bindings, key_binding); |
|
struct key_table { |
|
const char *name; |
|
struct key_bindings key_bindings; |
|
|
|
u_int references; |
|
|
|
RB_ENTRY(key_table) entry; |
|
}; |
|
RB_HEAD(key_tables, key_table); |
|
|
/* |
/* |
* Option table entries. The option table is the user-visible part of the |
* Option table entries. The option table is the user-visible part of the |
* option, as opposed to the internal options (struct option) which are just |
* option, as opposed to the internal options (struct option) which are just |
|
|
int client_main(int, char **, int); |
int client_main(int, char **, int); |
|
|
/* key-bindings.c */ |
/* key-bindings.c */ |
extern struct key_bindings key_bindings; |
|
int key_bindings_cmp(struct key_binding *, struct key_binding *); |
|
RB_PROTOTYPE(key_bindings, key_binding, entry, key_bindings_cmp); |
RB_PROTOTYPE(key_bindings, key_binding, entry, key_bindings_cmp); |
struct key_binding *key_bindings_lookup(int); |
RB_PROTOTYPE(key_tables, key_table, entry, key_table_cmp); |
void key_bindings_add(int, int, struct cmd_list *); |
extern struct key_tables key_tables; |
void key_bindings_remove(int); |
int key_table_cmp(struct key_table *, struct key_table *); |
|
int key_bindings_cmp(struct key_binding *, struct key_binding *); |
|
struct key_table *key_bindings_get_table(const char *, int); |
|
void key_bindings_unref_table(struct key_table *); |
|
void key_bindings_add(const char *, int, int, struct cmd_list *); |
|
void key_bindings_remove(const char *, int); |
|
void key_bindings_remove_table(const char *); |
void key_bindings_init(void); |
void key_bindings_init(void); |
void key_bindings_dispatch(struct key_binding *, struct client *, |
void key_bindings_dispatch(struct key_binding *, struct client *, |
struct mouse_event *); |
struct mouse_event *); |