Two Mouse Pointers And One Display?
metasynth asks: "I've been looking around a bit for information on this, but haven't had much luck. What I would like to do is to get two mice running, each with its own pointer. And be able to distinguish between the two in programs, e.g. something like mouse1.button1 as an event so I can tell which mouse did what. I have found references to getting two mice working with one pointer, which I've been playing around with but have yet to get it working, but I really would like two pointers." I don't know about you all, but I would get a bit confused by the presence of two mouse pointers. Do you all see this as a neat idea, or would it be a tough thing to implement?
When I saw this question, I went "WTF?!" - then I started thinking...
I first imagined a drawing program - one hand controls the rotation of the paper, the other controls the brush or pen (could make some wacky designs)...
Then (of course) my thoughts turned to VR apps - imagine one hand controlling a "virtual" hand pointer in space (left button to control left/right/zoom, right to control "grabbing" - no buttons for X/Y positioning). The other hand could control (in a similar manner) avatar positioning in the world - so one could move around, and grab things.
A similar scheme could be done for games - it is a little awkward, but it might be something fun to play with...
Worldcom - Generation Duh!
Reason is the Path to God - Anon
IBM's Trackpoint researchers have implemented a dual Trackpoint keyboard. See Two-handed Keyboard for a brief description, rationale, and further links.
What's the point of having two pointers if you can only click on things with one?
Since this came up in several responses, when I say "two mice" I mean "two pointers," in the spirit of the original question. Everything is able to support two mice driving the same pointer. The issue is having two pointers. All my comments after the first paragraph are with respect to the issue of two pointers.
It is on a W2K machine, but it works just as well in Win98. Since it is USB dependant, I have never been able to make it work in *nix.
With USB mice you can plug in a mouse in the USB slot and one in the PS/2 hole. I don't know if there is a limit, barring the 127(?) device limit on a USB chain. They all move the same pointer, however.
This can still be useful when the mice can have different sensitivity settings. One of my mice is the Razer Boomslang 2000 (order from ThinkGeek) that can be set to absurdly high responsiveness, which makes it unwieldy for graphics work, but great for gaming. The PS/2 mouse and the castrated mouse are both a lot easier to use for fine work, or when someone that can't handle the Razer sits at my desk.
I have long looked for a utility that would enable mutiple pointers so I would be able to use whichever hand wasn't typing to mouse with, but have never found anything that makes it look possible.
Computers can only simulate determinism. ~Hermetic.
This is mentioned in the "20 years after" section of The Mythical Man Month, under user interfaces. There he (Brooks) gives references to research done into doing this. I don't have my copy handy or else I'd post them here.
--
News for Geeks in Austin, TX
I used it a couple of times with two mice on a pc. It worked pretty well.
I think it supported two mice by having a driver for serial mice built in, so that it would use the installed driver for one mouse, and the internal driver for the other.
Over all, I think I would have liked network or modem multiplayer support better than the two mouse method. It was too tempting to peek at that the other player was doing.
--
OK, primary mouse on /dev/aux or whatever is the pointer.
/dev/ncua1 or whatever? It would have to translate the movements into coordinates, and paste its own sprite? It's a bit clunky but it coulld work
Is there anything to stop another app reading
FP.
-- Real Men Don't Use Porn. -- Morality In Media Billboards
Also FatPhil on SoylentNews, id 863
Geez, I saw this implemented several years back. Engineering office, using AutoCAD, with mutiple monitors per user. A couple of the people there had the 'keyboard with touchpad', as well as a regular mouse. Very useful having a pointer on different screens. I think the implementation had something to do with the net-admin's desire for killer gaming, rather than enhanced productivity. Oddly enough, I think it was a DOS/Win 3.x system.
Microsoft has been able to use multiple mice to drive one pointer since Win 3.1. I don't know when they first implemented this, but it was a feature of the MS EasyBall. It plugged into one serial port and an conventional mouse plugged into the other. When the normal mouse was used, the mouse pointer was like ..er.. well..normal. When the EasyBall was used, the pointer would change shape. This was so a parent and a child could interact with the computer. I doubt very many geeks would use it: it had only one button, and the trackball was yellow and about the size of a softball. Given that the base of white, it looked like a mutant fried egg.
the good ground has been paved over by suicidal maniacs
Quite a bit more is going to be the software itself. Particularly on a system which was never designed to handle multiple mice, do you think that code like the X server is necessarily able to handle multiple mice doing things simultaneously? Also, if I remember correctly (but it's been some time since I did raw Xlib programming), the X protocol assumes ONE mouse. Which means that there's no way for the X server to talk to the applications and tell them that it was the second mouse that did something (i.e. no differentiation possible). You'd have to rewrite portions of X to get the second mouse active. Even if the X server and/or hardware was able to distinguish between the two types of mouse interrupts, AND show two different pointers, what about the applications?
I know that most of the software which is happening on the front end is built to be single-threaded (for example, almost all of KDE is based on Qt, and one of the major problems I have with Qt is the crazy way it handles simultaneous events in a single-threaded model). Let's start assuming that it's possible for your application to start receiving two simultaneous mouse events. Will every bit of software be able to handle it? Not necessarily.
And then let's say that you get to the point where all the hardware, X Servers, widget toolkits and window managers are able to handle it by queueing the requests. Mouse events happen MUCH more quickly than keyboard events, so even if your application is designed to be fast enough to handle a keyboard event with reasonable speed, is it fast enough to handle multiple clicks simultaneously? What about mouseover events?
So you're looking to rewrite the X protocol, your X Server, and then spend about 6 months debugging every application you use. And that's assuming that you get the hardware to handle multiple pointers.
Still seem worth it?