diff options
author | Richard M. Stallman <rms@gnu.org> | 1994-07-14 04:58:02 +0000 |
---|---|---|
committer | Richard M. Stallman <rms@gnu.org> | 1994-07-14 04:58:02 +0000 |
commit | f6ea30991aef255ecbe951acec32a2a36a1c081b (patch) | |
tree | c19b45d784a73e1ed0967f92962ed72179a8c62c /src/msdos.c | |
parent | b4a0e01521014c7b5a50add0c3cd9b4bf7e1513a (diff) | |
download | emacs-f6ea30991aef255ecbe951acec32a2a36a1c081b.tar.gz |
(mouse_init1): Use alternate mouse detection for old mouse drivers.
(mouse_get_pos): Downscale coordinates by 8.
Diffstat (limited to 'src/msdos.c')
-rw-r--r-- | src/msdos.c | 19 |
1 files changed, 16 insertions, 3 deletions
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) |