diff options
author | Paul LeoNerd Evans <leonerd@leonerd.org.uk> | 2009-11-26 00:27:58 +0000 |
---|---|---|
committer | Paul LeoNerd Evans <leonerd@leonerd.org.uk> | 2009-11-26 00:27:58 +0000 |
commit | c4bc0486d40477d8c9203b8696b77774aafed985 (patch) | |
tree | 360e94853ceb202ec725a327b648c99d01daddcf /termkey.c | |
parent | bdc22b8b3d4cde7727a5d480c8457fc24182885d (diff) | |
download | termo-c4bc0486d40477d8c9203b8696b77774aafed985.tar.gz termo-c4bc0486d40477d8c9203b8696b77774aafed985.tar.xz termo-c4bc0486d40477d8c9203b8696b77774aafed985.zip |
Moved mouse parsing code out of driver-ti.c into core termkey.c
Diffstat (limited to 'termkey.c')
-rw-r--r-- | termkey.c | 16 |
1 files changed, 16 insertions, 0 deletions
@@ -35,6 +35,7 @@ static struct TermKeyDriver *drivers[] = { // static void eat_bytes(TermKey *tk, size_t count); static void emit_codepoint(TermKey *tk, long codepoint, TermKeyKey *key); static TermKeyResult peekkey_simple(TermKey *tk, TermKeyKey *key, int force, size_t *nbytes); +static TermKeyResult peekkey_mouse(TermKey *tk, TermKeyKey *key, size_t *nbytes); static TermKeySym register_c0(TermKey *tk, TermKeySym sym, unsigned char ctrl, const char *name); static TermKeySym register_c0_full(TermKey *tk, TermKeySym sym, int modifier_set, int modifier_mask, unsigned char ctrl, const char *name); @@ -165,6 +166,7 @@ static TermKey *termkey_new_full(int fd, int flags, size_t buffsize, int waittim tk->method.emit_codepoint = &emit_codepoint; tk->method.peekkey_simple = &peekkey_simple; + tk->method.peekkey_mouse = &peekkey_mouse; for(i = 0; keynames[i].name; i++) termkey_register_keyname(tk, keynames[i].sym, keynames[i].name); @@ -631,6 +633,20 @@ static TermKeyResult peekkey_simple(TermKey *tk, TermKeyKey *key, int force, siz } } +static TermKeyResult peekkey_mouse(TermKey *tk, TermKeyKey *key, size_t *nbytep) +{ + if(tk->buffcount < 3) + return TERMKEY_RES_AGAIN; + + key->type = TERMKEY_TYPE_MOUSE; + key->code.mouse.buttons = CHARAT(0) - 0x20; + key->code.mouse.col = CHARAT(1) - 0x20; + key->code.mouse.line = CHARAT(2) - 0x20; + key->modifiers = 0; + *nbytep = 3; + return TERMKEY_RES_KEY; +} + #ifdef DEBUG static void print_buffer(TermKey *tk) { |