Number: 367 Date: 29-Mar-84 12':25':09 Submitter: Sannella.PA Source: Sheil.pa Subject: New': For 2 button mouse, use L-R Chord for Middle button Lisp Version: Description: ' Date': 29 Mar 84 10':25 PST' From': Sheil.pa' Subject': Lisp': Proposal': 2 button mousing' To': LispSupport.pa' cc': raim.pasa, lispcore^' ' Lisp-System-Date': All' ' Both internally and externally we have a lot of users with 2 button mice. This situation does not seem to be getting any better quickly and may stay that way (subject to Xerox mouse manufacturing and policy whims).' ' We hacked around this problem using a DLion function key a long time ago. Perhaps we out to think about this hack again since the situation seems rather permanent.' ' Proposal': Let''s consider the Mesa strategy of regarding a left-right mouse chord as being equivalent to middle. The only application of mouse chording that I know of is the GETREGION case and there is no reason why the "switch corner" code couldnt be middle, rather than right, key dependent.' ' Perhaps we want to make this optional (a user settable GLOBALVAR looked at by MOUSESTATE?). But I do think we should consider it, despite the backwards incompatibility. A large fraction of our users are now working in the 2 button world. I think we have to do something for them.' ' Comments? A discussion on Monday?' ' Beau' ' -----' ' Date': 1 Apr 84 22':38 PST' From': vanMelle.pa' Subject': Re': Lisp': Proposal': 2 button mousing' In-reply-to': Sheil.pa''s message of 29 Mar 84 10':25 PST' To': Sheil.pa' cc': LispSupport.pa, raim.pasa, LispCore^.pa' ' I think it is reasonable and not even particularly hard. Mainly it is a little extra hair in the keyboard handler where it decodes the mouse "keys". It needs to have a state machine and a timer so that it can decide if left and right go down close enough in time to be considered "simultaneous" and hence be treated as middle. To handle the few cases of chording we have, you have to decide how to interpret left+right followed by one of left or right going up. This seems entirely tractable to me. The penalty of it all is principally some extra overhead in the keyhandler, but that can probably be arranged to occur only, or principally, on mouse transitions.' ' Bill' ' -----' ' Date': 8 Apr 84 22':29 PST' From': vanMelle.pa' Subject': Dandelion phantom middle mouse button' To': LispFriends^' cc': LispSupport' ' For all you two-button mouse users':' ' The latest sysouts on Next> have the feature that the middle mouse button can be simulated by "chording" the left and right buttons.' ' Specifically, if Lisp sees Left and Right go down simultaneously, it considers that to be Middle, rather than either Left or Right. The definition of "simultaneously" is within the interval defined by MOUSECHORDWAIT, below. Middle is considered to be down until BOTH Left and Right come up.' ' If you need to do a mouse operation that would require Middle plus some other button down, you can free one (but never both) of the buttons by letting up on it while still holding the other one down. The logical state of the mouse is still considered Middle, but the freed button is now available to register up or down independently. For example, on a 3-button mouse if you are reshaping a window using Middle and want to switch corners, you press Right while still holding down Middle, move to the desired corner, and then let up on Right. To do the same thing on a 2-button mouse, after pressing Left+Right to get Middle, you let up on Right while still holding Left. This "frees" Right from the chord, and you can now press down on Right, move to the other corner, let up on Right, all the while still holding Left. (This is probably easier to do than describe.)' ' To get the combination Left + Right, just don''t press them down at the same instant. To get Left + Middle + Right, or to get combinations in which Middle is not the first (logical) button to go down, you must still resort to the use of the Center key on the keyboard. (I don''t know any operations that require such a combination.)' ' The Center key continues to be a synonym for Middle mouse, independent of the above.' ' (MOUSECHORDWAIT msecs) [Function]' ' Specifies the interval of time (in milliseconds) during which the Left and Right buttons on a DLion mouse must go down to be considered "simultaneous" and hence treated as Middle. Returns the previous setting. (MOUSECHORDWAIT) returns the current setting without changing it. (MOUSECHORDWAIT NIL) disables chording. The largest permissible setting is 1872 milliseconds, or almost 2 seconds.' ' The system is conservatively initialized with (MOUSECHORDWAIT 50). You may want to set it higher; I suspect 100 or even 200 might be acceptable. The competing constraints': The lower the setting, the more difficult it is to chord (the more coordinated your fingers must be). The higher the setting, the longer the system must wait when you press down Left or Right alone before deciding that it''s not going to turn into Middle; hence, the less responsive the mouse might seem in such cases. If there is some concensus among Dandelion users regarding the optimal setting, we could make that the default before this system gets released.' ' Bill' Workaround: Test Case: Edit-By: Sannella.PA Edit-Date: 17-Aug-84 11':57':57 Attn: Assigned To: vanMelle.pa In/By: Carol Disposition: System: Operating System Subsystem: Keyboard Machine: Disk: Microcode Version: Memory Size: File Server: Server Software Version: Difficulty: Frequency: Intermittent Impact: Annoying Priority: Unlikely Status: Closed Problem Type: Design - UI Source Files: