# HG changeset patch # User franky # Date 1225392431 -3600 # Node ID 2e86c1cc4eb17c0071ce0b772cec652ebfe1d194 # Parent ec55cdf44335b056604bb89b0b87d7fdcd441bfb Map mouse events to p* keycodes diff -r ec55cdf44335 -r 2e86c1cc4eb1 mcabber/src/screen.c --- a/mcabber/src/screen.c Fri Oct 17 18:55:58 2008 +0200 +++ b/mcabber/src/screen.c Thu Oct 30 19:47:11 2008 +0100 @@ -733,6 +733,9 @@ intrflush(stdscr, FALSE); start_color(); use_default_colors(); +#ifdef NCURSES_MOUSE_VERSION + mousemask(ALL_MOUSE_EVENTS, NULL); +#endif if (settings_opt_get("escdelay")) { #ifdef HAVE_ESCDELAY @@ -3737,8 +3740,19 @@ kcode->value = wgetch(inputWnd); if (utf8_mode) { bool ismeta = (kcode->value == 27); - +#ifdef NCURSES_MOUSE_VERSION + bool ismouse = (kcode->value == KEY_MOUSE); + + if (ismouse) { + MEVENT mouse; + getmouse(&mouse); + kcode->value = mouse.bstate; + kcode->mcode = MKEY_MOUSE; + return; + } else if (ismeta) +#else if (ismeta) +#endif ks[0] = wgetch(inputWnd); else ks[0] = kcode->value; @@ -3818,6 +3832,8 @@ g_snprintf(asciikey, 15, "%s", asciicode); else if (kcode.mcode == MKEY_META) g_snprintf(asciikey, 15, "M%s", asciicode); + else if (kcode.mcode == MKEY_MOUSE) + g_snprintf(asciikey, 15, "p%s", asciicode); else g_snprintf(asciikey, 15, "MK%d", kcode.mcode); diff -r ec55cdf44335 -r 2e86c1cc4eb1 mcabber/src/screen.h --- a/mcabber/src/screen.h Fri Oct 17 18:55:58 2008 +0200 +++ b/mcabber/src/screen.h Thu Oct 30 19:47:11 2008 +0100 @@ -70,7 +70,8 @@ MKEY_CTRL_INS, MKEY_CTRL_DEL, MKEY_CTRL_SHIFT_HOME, - MKEY_CTRL_SHIFT_END + MKEY_CTRL_SHIFT_END, + MKEY_MOUSE } mcode; } keycode;