From f6ea30991aef255ecbe951acec32a2a36a1c081b Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Thu, 14 Jul 1994 04:58:02 +0000 Subject: (mouse_init1): Use alternate mouse detection for old mouse drivers. (mouse_get_pos): Downscale coordinates by 8. --- src/msdos.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) (limited to 'src/msdos.c') diff --git a/src/msdos.c b/src/msdos.c index 6c72853143a..55d2fc27490 100644 --- a/src/msdos.c +++ b/src/msdos.c @@ -1147,8 +1147,8 @@ mouse_get_pos (f, bar_window, part, x, y, time) *f = selected_frame; *bar_window = Qnil; gettimeofday (&tv, NULL); - *x = make_number (regs.x.cx); - *y = make_number (regs.x.dx); + *x = make_number (regs.x.cx / 8); + *y = make_number (regs.x.dx / 8); *time = tv.tv_usec; mouse_moved = 0; } @@ -1174,9 +1174,22 @@ mouse_init1 () union REGS regs; int present; + if (!internal_terminal) + return 0; + regs.x.ax = 0x0021; int86 (0x33, ®s, ®s); - present = internal_terminal && (regs.x.ax & 0xffff) == 0xffff; + present = (regs.x.ax & 0xffff) == 0xffff; + if (!present) + { + /* Reportedly, the above doesn't work for some mouse drivers. There + is an additional detection method that should work, but might be + a little slower. Use that as an alternative. */ + regs.x.ax = 0x0000; + int86 (0x33, ®s, ®s); + present = (regs.x.ax & 0xffff) == 0xffff; + } + if (present) { if (regs.x.bx == 3) -- cgit v1.2.1