aboutsummaryrefslogtreecommitdiffstats
path: root/src/msdos.c
diff options
context:
space:
mode:
authorEli Zaretskii2000-07-31 06:38:19 +0000
committerEli Zaretskii2000-07-31 06:38:19 +0000
commit8f190436eaf7b7b8eaabb2c7ca4ac31fd581159c (patch)
treee9fabcd7cca76f3a0bd79d7138532ee01c27c3f2 /src/msdos.c
parent16425c4a98ba4be9d7bc624d554b40785bdf7613 (diff)
downloademacs-8f190436eaf7b7b8eaabb2c7ca4ac31fd581159c.tar.gz
emacs-8f190436eaf7b7b8eaabb2c7ca4ac31fd581159c.zip
(Fmsdos_set_mouse_buttons, syms_of_msdos): New functions.
(syms_of_msdos): Defsubr Fmsdos_set_mouse_buttons.
Diffstat (limited to 'src/msdos.c')
-rw-r--r--src/msdos.c48
1 files changed, 34 insertions, 14 deletions
diff --git a/src/msdos.c b/src/msdos.c
index 64e6c3cd2b0..e0154a7f7ce 100644
--- a/src/msdos.c
+++ b/src/msdos.c
@@ -168,6 +168,38 @@ mouse_off ()
168} 168}
169 169
170static void 170static void
171mouse_setup_buttons (int n_buttons)
172{
173 if (n_buttons == 3)
174 {
175 mouse_button_count = 3;
176 mouse_button_translate[0] = 0; /* Left */
177 mouse_button_translate[1] = 2; /* Middle */
178 mouse_button_translate[2] = 1; /* Right */
179 }
180 else /* two, what else? */
181 {
182 mouse_button_count = 2;
183 mouse_button_translate[0] = 0;
184 mouse_button_translate[1] = 1;
185 }
186}
187
188DEFUN ("msdos-set-mouse-buttons", Fmsdos_set_mouse_buttons, Smsdos_set_mouse_buttons,
189 1, 1, "NSet number of mouse buttons to: ",
190 "Set the number of mouse buttons to use by Emacs.\n
191This is useful with mice that report the number of buttons inconsistently,\n
192e.g., if the number of buttons is reported as 3, but Emacs only sees 2 of\n
193them. This happens with wheeled mice on Windows 9X, for example.")
194 (nbuttons)
195 Lisp_Object nbuttons;
196{
197 CHECK_NUMBER (nbuttons, 0);
198 mouse_setup_buttons (XINT (nbuttons));
199 return Qnil;
200}
201
202static void
171mouse_get_xy (int *x, int *y) 203mouse_get_xy (int *x, int *y)
172{ 204{
173 union REGS regs; 205 union REGS regs;
@@ -4517,20 +4549,7 @@ dos_ttraw ()
4517 { 4549 {
4518 have_mouse = 1; /* enable mouse */ 4550 have_mouse = 1; /* enable mouse */
4519 mouse_visible = 0; 4551 mouse_visible = 0;
4520 4552 mouse_setup_buttons (outregs.x.bx);
4521 if (outregs.x.bx == 3)
4522 {
4523 mouse_button_count = 3;
4524 mouse_button_translate[0] = 0; /* Left */
4525 mouse_button_translate[1] = 2; /* Middle */
4526 mouse_button_translate[2] = 1; /* Right */
4527 }
4528 else
4529 {
4530 mouse_button_count = 2;
4531 mouse_button_translate[0] = 0;
4532 mouse_button_translate[1] = 1;
4533 }
4534 mouse_position_hook = &mouse_get_pos; 4553 mouse_position_hook = &mouse_get_pos;
4535 mouse_init (); 4554 mouse_init ();
4536 } 4555 }
@@ -5224,6 +5243,7 @@ nil means don't delete them until `list-processes' is run.");
5224 defsubr (&Smsdos_long_file_names); 5243 defsubr (&Smsdos_long_file_names);
5225 defsubr (&Smsdos_downcase_filename); 5244 defsubr (&Smsdos_downcase_filename);
5226 defsubr (&Smsdos_remember_default_colors); 5245 defsubr (&Smsdos_remember_default_colors);
5246 defsubr (&Smsdos_set_mouse_buttons);
5227} 5247}
5228 5248
5229#endif /* MSDOS */ 5249#endif /* MSDOS */