- switch (b) {
- case MBT_LEFT:
- encstate = 0x20; /* left button down */
- break;
- case MBT_MIDDLE:
- encstate = 0x21;
- break;
- case MBT_RIGHT:
- encstate = 0x22;
- break;
- case MBT_WHEEL_UP:
- encstate = 0x60;
- break;
- case MBT_WHEEL_DOWN:
- encstate = 0x61;
- break;
- default: break; /* placate gcc warning about enum use */
- }
- switch (a) {
- case MA_DRAG:
- if (term->xterm_mouse == 1)
- return;
- encstate += 0x20;
- break;
- case MA_RELEASE:
- encstate = 0x23;
- is_down = 0;
- break;
- case MA_CLICK:
- if (is_down == b)
- return;
- is_down = b;
- break;
- default: break; /* placate gcc warning about enum use */
+ if (term->ldisc) {
+
+ switch (b) {
+ case MBT_LEFT:
+ encstate = 0x20; /* left button down */
+ break;
+ case MBT_MIDDLE:
+ encstate = 0x21;
+ break;
+ case MBT_RIGHT:
+ encstate = 0x22;
+ break;
+ case MBT_WHEEL_UP:
+ encstate = 0x60;
+ break;
+ case MBT_WHEEL_DOWN:
+ encstate = 0x61;
+ break;
+ default: break; /* placate gcc warning about enum use */
+ }
+ switch (a) {
+ case MA_DRAG:
+ if (term->xterm_mouse == 1)
+ return;
+ encstate += 0x20;
+ break;
+ case MA_RELEASE:
+ encstate = 0x23;
+ term->mouse_is_down = 0;
+ break;
+ case MA_CLICK:
+ if (term->mouse_is_down == b)
+ return;
+ term->mouse_is_down = b;
+ break;
+ default: break; /* placate gcc warning about enum use */
+ }
+ if (shift)
+ encstate += 0x04;
+ if (ctrl)
+ encstate += 0x10;
+ r = y + 33;
+ c = x + 33;
+
+ sprintf(abuf, "\033[M%c%c%c", encstate, c, r);
+ ldisc_send(term->ldisc, abuf, 6, 0);