comparison mcabber/src/screen.c @ 1561:2e86c1cc4eb1

Map mouse events to p* keycodes
author franky
date Thu, 30 Oct 2008 19:47:11 +0100
parents 3df441efb7c2
children c1d0f906d379
comparison
equal deleted inserted replaced
1560:ec55cdf44335 1561:2e86c1cc4eb1
731 noecho(); 731 noecho();
732 nonl(); 732 nonl();
733 intrflush(stdscr, FALSE); 733 intrflush(stdscr, FALSE);
734 start_color(); 734 start_color();
735 use_default_colors(); 735 use_default_colors();
736 #ifdef NCURSES_MOUSE_VERSION
737 mousemask(ALL_MOUSE_EVENTS, NULL);
738 #endif
736 739
737 if (settings_opt_get("escdelay")) { 740 if (settings_opt_get("escdelay")) {
738 #ifdef HAVE_ESCDELAY 741 #ifdef HAVE_ESCDELAY
739 ESCDELAY = (unsigned) settings_opt_get_int("escdelay"); 742 ESCDELAY = (unsigned) settings_opt_get_int("escdelay");
740 #else 743 #else
3735 memset(ks, 0, sizeof(ks)); 3738 memset(ks, 0, sizeof(ks));
3736 3739
3737 kcode->value = wgetch(inputWnd); 3740 kcode->value = wgetch(inputWnd);
3738 if (utf8_mode) { 3741 if (utf8_mode) {
3739 bool ismeta = (kcode->value == 27); 3742 bool ismeta = (kcode->value == 27);
3740 3743 #ifdef NCURSES_MOUSE_VERSION
3744 bool ismouse = (kcode->value == KEY_MOUSE);
3745
3746 if (ismouse) {
3747 MEVENT mouse;
3748 getmouse(&mouse);
3749 kcode->value = mouse.bstate;
3750 kcode->mcode = MKEY_MOUSE;
3751 return;
3752 } else if (ismeta)
3753 #else
3741 if (ismeta) 3754 if (ismeta)
3755 #endif
3742 ks[0] = wgetch(inputWnd); 3756 ks[0] = wgetch(inputWnd);
3743 else 3757 else
3744 ks[0] = kcode->value; 3758 ks[0] = kcode->value;
3745 3759
3746 for (i = 0; i < MAX_KEYSEQ_LENGTH - 1; i++) { 3760 for (i = 0; i < MAX_KEYSEQ_LENGTH - 1; i++) {
3816 3830
3817 if (!kcode.mcode || kcode.mcode == MKEY_EQUIV) 3831 if (!kcode.mcode || kcode.mcode == MKEY_EQUIV)
3818 g_snprintf(asciikey, 15, "%s", asciicode); 3832 g_snprintf(asciikey, 15, "%s", asciicode);
3819 else if (kcode.mcode == MKEY_META) 3833 else if (kcode.mcode == MKEY_META)
3820 g_snprintf(asciikey, 15, "M%s", asciicode); 3834 g_snprintf(asciikey, 15, "M%s", asciicode);
3835 else if (kcode.mcode == MKEY_MOUSE)
3836 g_snprintf(asciikey, 15, "p%s", asciicode);
3821 else 3837 else
3822 g_snprintf(asciikey, 15, "MK%d", kcode.mcode); 3838 g_snprintf(asciikey, 15, "MK%d", kcode.mcode);
3823 3839
3824 boundcmd = settings_get(SETTINGS_TYPE_BINDING, asciikey); 3840 boundcmd = settings_get(SETTINGS_TYPE_BINDING, asciikey);
3825 3841