Return opaque mouse events in the key structure; add a function to interpret this into its component fields

This commit is contained in:
Paul LeoNerd Evans
2009-11-27 14:36:29 +00:00
parent 6dc2b9c72b
commit 24f9711846
4 changed files with 127 additions and 18 deletions

View File

@@ -100,6 +100,13 @@ typedef enum {
TERMKEY_RES_AGAIN,
} TermKeyResult;
typedef enum {
TERMKEY_MOUSE_UNKNOWN,
TERMKEY_MOUSE_PRESS,
TERMKEY_MOUSE_DRAG,
TERMKEY_MOUSE_RELEASE,
} TermKeyMouseEvent;
enum {
TERMKEY_KEYMOD_SHIFT = 1 << 0,
TERMKEY_KEYMOD_ALT = 1 << 1,
@@ -112,11 +119,10 @@ typedef struct {
long codepoint; // TERMKEY_TYPE_UNICODE
int number; // TERMKEY_TYPE_FUNCTION
TermKeySym sym; // TERMKEY_TYPE_KEYSYM
struct {
short buttons;
short col, line;
} mouse; // TERMKEY_TYPE_MOUSE
char mouse[4]; // TERMKEY_TYPE_MOUSE
// opaque. see termkey_interpret_mouse
} code;
int modifiers;
/* Any Unicode character can be UTF-8 encoded in no more than 6 bytes, plus
@@ -159,6 +165,8 @@ TermKeyResult termkey_advisereadable(TermKey *tk);
TermKeySym termkey_register_keyname(TermKey *tk, TermKeySym sym, const char *name);
const char *termkey_get_keyname(TermKey *tk, TermKeySym sym);
TermKeyResult termkey_interpret_mouse(TermKey *tk, TermKeyKey *key, TermKeyMouseEvent *event, int *button, int *line, int *col);
TermKeySym termkey_keyname2sym(TermKey *tk, const char *keyname);
typedef enum {