Elan Microelectronics Corporation v. Apple, Inc.

Filing 236

Declaration of Derek Walter IN SUPPORT OF APPLE INC'S OPPOSITION TO ELAN MICROELECTRONICS CORPORATION'S MOTION FOR PARTIAL SUMMARY JUDGMENT OF INFRINGEMENT OF U.S. PATENT 5,825,352] filed byApple, Inc.. (Attachments: # 1 Exhibit B, # 2 Exhibit C, # 3 Exhibit E, # 4 Exhibit F, # 5 Exhibit I, # 6 Exhibit J, # 7 Exhibit K)(Greenblatt, Nathan) (Filed on 6/2/2011)

Download PDF
Exhibit B 111111111111111111111111111111111111111111111111111111111111111111111111111 US005825352A United States Patent [19] Bisset et al. [45] [54] [75] Inventors: Stephen J. Bisset, Palo Alto; Bernard Kasser, Menlo Park, both of Calif. [73] Assignee: Logitech, Inc., Fremont, Calif. [21] Appl. No.: 608,116 [22] Filed: 5,016,008 5,203,704 5,327,161 5,365,461 5,376,946 5,432,531 5,442,376 5,463,388 5,495,077 5,528,266 5,543,591 5,565,658 5,648,642 MULTIPLE FINGERS CONTACT SENSING METHOD FOR EMULATING MOUSE BUTTONS AND MOUSE OPERATIONS ON A TOUCH SENSOR PAD Feb. 28, 1996 5/1991 4/1993 7/1994 11/1994 12/1994 7/1995 8/1995 10/1995 2/1996 6/1996 8/1996 10/1996 7/1997 5,825,352 Oct. 20, 1998 Gruaz et al. McCloud Logan et al. Stein et al. Mikan Calder et al. Tannenbaum et al. Boie et al. Miller et al. Arbeitman et al. Gillespie et al. Gerpheide et al. Miller et al. 345/173 434/156 345/173 364/550 345/173 345/173 345/156 341/33 345/173 345/173 178/18 345/174 178/18 FOREIGN PATENT DOCUMENTS Related U.S. Application Data [63] Continuation of Ser. No. 582,768, Jan. 4, 1996, abandoned. [51] [52] [58] Int. C1. 6 G09G 5/00; G09G 5/08 U.S. Cl. 345/173; 345/157 Field of Search 345/156, 157, 345/160,173,174,145; 178/18; 341/33 [56] Patent Number: Date of Patent: [11] References Cited U.S. PATENT DOCUMENTS WO 91/03039 WO 97/18508 3/1991 5/1997 345/174 345/173 345/173 345/174 345/173 341/33 345/157 345/173 Synaptics Brochure, "Synaptics Touch Pad," pp. 1-39. Primary Examiner-Jeffery Brier Assistant Examiner-Paul A. Bell Attorney, Agent, or Firm-Townsend and Townsend and Crew 31 Claims, 17 Drawing Sheets I ENU HURSOR posmON C oA TOUCH PAD FINGER IN CONTACT WITH TOUCH SENSOR 110, ENU VIDEO DISPLAY I BUTTON I ABSTRACT Method and apparatus for detecting an operative coupling between one or more fingers or other appropriate objects and a touch pad includes processes for detection of multiple maxima with intermediate minima in appropriate sequences to emulate the operations of cursor control and button actuations in a pointing and control device. VIDED DISPLAY I BUTTONI ~ ~ VIDEO DISPLAY IBUTTON I 2 C 3 YPROFilE :==~~~=~ I', :,l U A moo. .. 720, rI 2 C 3 YPROFilE YPROFilE (' D ---I [J TOUCH PAD AA PRO~llEI __- G06F 3/033 OTHER PUBLICATIONS [57] 3,921,166 11/1975 Volpe. 4,103,252 7/1978 Bobick 4,455,452 6/1984 Schuyler 4,550,221 10/1985 Mabusth 4,639,720 1/1987 Rympalski et al. 4,686,332 8/1987 Greanias et al. 4,733,222 3/1988 Evans 4,736,191 4/1988 Matzke et al. 4,914,624 4/1990 Dunthorn WIPO. WIPO PRO~llEI An TOUCH PAD FINGER NOT IN CONTACT WITH TOUCH SENSOR u.s. Patent Oct. 20, 1998 Sheet 1 of 17 IDA FIG. I. 5,825,352 u.s. Patent Oct. 20, 1998 5,825,352 Sheet 2 of 17 SENSOR t- 30 "- YDIRECTION CONDUCTORS rr1: DIRECTION CONDUCTORS { ... f- 45 ANALOG MULTIPLEXOR CIRCUIT TO MEASURE f-70 CHANGES IN CAPACITANCE ... OF SENSOR CONDUCTORS ANALOG-TO- DIGITAL CONVERTER MICROCONTROLLER ... >.- 80 .. ~60 INTERFACE TO PC OR OTHER DEVICE FIG. 2. u.s. Patent Oct. 20, 1998 Sheet 3 of 17 8S:\.. FIG. 3. FIG. 4. 5,825,352 d • 'JJ. • ~ i __ ... ~ ..... ..... r 410 u~._ .. ~ I I ,..- i ' ..... 440 , i = 430 SET BUTTON: NO CHANGE o -450 I"l :""" t N ~c -- 555 YES '""'" '0 '0 QIO REPORT Xmotion AND Ymotion 465 'JJ. 495 SET XobsolutePrevious =XObSOlute1560 SET YobsolutePrevious=Yobsolute, 570 SET XbuttonPrevious= Xbutton, 580 SET YbuttonPrevious· Ybutton 590 =- ~ ~ .... ~ o ...., '-..J ""'" 595 Xmotion =Xobsolute - XobsolutePrevious Ymotion =Yobsolute- YobsolutePrevious 5/0 Ul .... 00 N 520 FIG. 5. Ul .... ~ Ul N u.s. Patent Oct. 20, 1998 Sheet 5 of 17 200 .----:':1N=IT::-:-:'A~lIZ=E-!-V~AR~JA~Bl-=E SO:--,/' 205 SET Xstote =Peak I r - - - - - - ' - - - - - " , 2/0 Xloop Start 2/5 N=N+I Xsum =Xsum of' X(N) ..---- -..L. ---. XweighfSum =Xweight Sum'" N* X(N) Xpeak2= X(N-f) Xstafe • Tail NO FIG. 6-1. 220 5,825,352 u.s. Patent Oct. 20, 1998 Sheet 6 of 17 5,825,352 NO 295 Set Xobsolute = XweightSum / Xsum 305 NO 315 (Xpeakl-XValley) > (Xpeak f) /4? and (Xpeak2-XValley) > (Xpeak2)/41 and Xpeakl> Fthresh? and Xpeok2 >Fthresh? 310 Xbutton =Down Xbutton= Up 320 FIG. 6-2. d 710 Y • 'JJ. • 720 _ ~ ffi\ I ~ ..... ..... I "-J ffil ~ = o 7~fm roofffi I"l :-'" N ~c 760-DOWN 770- UP QIO ~:~ON~ (--ll;\ 'JJ. =- ~ ~ .... \~ .\~ MOVING ~825 "-------- '""'" '0 '0 -..J o ...., '""'" -..J 800--(),{\n_ _ _ _ _ _ \, \ \ 830~TAT IONARY ~ _Ot?VM(NING~ FIG. 7A. Ul .... 00 N Ul .... ~ Ul N u.s. Patent rI VIDEO DISPLAY U I"""""BU-n-ONI 705\ C -----J TOUCH PAD 3 --1 1-. TOUCH PAD J I I J FINGER IN CONTACT WITH TOUCH SENSOR :I I YPROFILE I 7/0, rI VIDEO DISPLAY NU 720" !BUTTON! VIDEO DISPLAY MENU IBUTTON I I 2 C 2seJectC 3 13 YPROFILE ' - II --J TOUCH PAD I )1 I IBUTTONI 2 C I, A I rI VIDEO DISPLAY NU C=CURSOR POSITION YPROFILE ' - 5,825,352 Sheet 8 of 17 Oct. 20, 1998 II AA I- - x PROFILE __- -_- - YPROALE An TOUCH PAD I I I I _ FIG. 78. FINGER NOT IN CONTACT WITH TOUCH SENSOR u.s. Patent 130", 740, VIDEO DISPLAY ICBUTTONJ ~ENU 2select VIDEO DISPLAY MENU [CBUTTONI select 3 YPROFILE YPROFILE An TOUCH PAD I I 5,825,352 Sheet 9 of 17 Oct. 20, 1998 :1 I TOUGH PAD I AA II I I PROF~EI 750, VIDEO DISPLAY ~~c~ Ie - - - 755, VIDEO DISPLAY MENU select fG BUTTONJ BUTTONI YPROFILE YPROFILE TO UCHPAD I I I J I TOUCH PAD PI (9 nn FIG. 7C. -_I u.s. Patent Oct. 20, 1998 760, VIDEO DISPLAY MENU I 2se1ect 2seleCi II BUTTON:1 C ACTIVATE /CBUTTONI 'J YPROFILE II YPROFILE TOUCH PAD I, TOUCH PAD nn API I I VIDEO DISPLAY 770, MENU I 13 5,825,352 Sheet 10 of 17 ----I 780, 790, VIDEO DISPLAY MENU I 2seleet 3 VIDEO DISPLAY MENU I BUTTON 2select ICBUTTONI MENU I 3 Ic BUTTONI [2 3 YPROFILE I YPROFILE TOUCH PAD TOUCH PAD I I I II PROF~lEI~ nnn AAA =-_1 -_-_-_-_-_-_ _ FIG. u.s. Patent BOO "' Oct. 20, 1998 BUTTON MENU ICBUTTON I I I MENU II 2select 3 I AAR II I BUTTON MENU ICBUTTONI I 2 3 TOUCHPAD I I I' I MENU BUTTON MENU 2select I :3 ICBUTTONI 12 I 13 Y PROFILE APIA PROFI~I. : __:- VIDEO DISPLAY BID", TOUCH PAD nnn PROFfLE VIDEO DISPLAY YPROFILE TOUCH PAD I " 2 3 YPROFILE I B05 VIDEO DISPLAY MENU I 2select 3 5,825,352 Sheet 11 of 17 I-============FIG. 7£ -_-_-_-_--II u.s. Patent Ir I 5,825,352 Sheet 12 of 17 Oct. 20, 1998 VIDEO DISPLAY U VIDEO DISPLAY IOOTTON I C= CURSOR POSITION C YPROFILE '--- II I J fiNGER IN CONTACT WITH TOUCH SENSOR I I BUTTON UP TOUCH PAD II A I I BUTTON I YPROFILE ----J TOUCH PAD I J r~' ENU CI A I mOf~EI __- rUCI _ 825A, VIDEO DISPLAY I BUTTONI YPROFILE YPROfILE TOUCH PAD I II I BUTTON DOWN rUCI BUTTON DOWN I, VIDEO DISPLAY IBUTTON AA I I I PROf~EI,-- - TOUCH PAD I 1 I I II I Arq PROF~LEI __- - - FIG. 7F-1. - __ u.s. Patent Oct. 20, 1998 825B", G=GURSOR POSITION YPROFILE ,) A II I BUTTON DOWN rUGI TDUGHPAD I I VIDEO DISPLAY I BUTTON I BUTTON DOWN YPROFILE I 8250, VIDEO DISPLAY [BUTTON I ~ENU GI 5,825,352 Sheet 13 of 17 I I AA I I TOUGHPAD I II x 1_-- VIDEO DISPLAY J'"'=BU=n=ON] BUDON OOiN YPROFILE II VIDEO DISPLAY I BUTTON I 830" /rUGI YPROFILE TDUGHPAD I II mOF~LE TOUGH PAD '- -' HA AA I \ I I ... -.1 1'---_-- _-_-_-___ PROF~LE[ FIG. 7F-2. BUTTON UP _ u.s. Patent Oct. 20, 1998 Sheet 14 of 17 .-------..A-------,/875 Xmotion =Xabsolute - XabsolutePrevious Ymotion= Yabsolute -Yabsolute Previous YES YES FIG. 8-l 5,825,352 u.s. Patent Oct. 20, 1998 5,825,352 Sheet 15 of 17 YES 915 Report Button: Down Set ButtonPrevious=D 9/0 ButtonPrevious =Down AND [Finger = 0 OR (Finger =/ AND Motion= Yes)] YES 925 Report Button: Up Set ButtonPrevious =Up NO 930 Report Xmotion Report Ymotion ..-- --L. -{ 935 Set XabsolutePrevious = Xabsolute t Set YabsolutePrevious = Yabsolute, Set Finger Previous = Finger 940 FIG. 8-2. u.s. Patent Oct. 20, 1998 Sheet 16 of 17 200 .....---:-:,N=IT""""IA""""lIZ=E~V~AR::-:-:IA:-=B L~E-:-S --V" 205 SET Xstate =Peakl ..----~---y Xloop Start 215 N=N+I Xsum :: Xsum + X(N) ..--'- ---L. 2/0 ---, XweightSum =XweightSum +N*X(N) FIG. 9-1. 220 5,825,352 u.s. Patent Oct. 20, 1998 5,825,352 Sheet 17 of 17 NO 295 Set Xabsolufe = XweightSum / Xsum 970 Xfinger= 0 305 (Xpeakl-XValley) > (Xpeak f) /4? and (Xpeak2-XValley)> (Xpeak2)/4? and Xpeakl> Fthresh? and 975 Xpeok2 >Fthresh? Xfinger= I 980 Xfinger=2 320 FIG. 9-2. 5,825,352 1 2 MULTIPLE FINGERS CONTACT SENSING METHOD FOR EMULATING MOUSE BUTTONS AND MOUSE OPERATIONS ON A TOUCH SENSOR PAD This requires an up-down-up-down finger motion to do the same thing as simply the "down-up" motion of the mouse button. In general, any touchpad equivalent to a mouse button-clicking function requires an extra "up . . . up" motion of the finger, because the finger must be lifted off the pad before and after the tap. The time and stress associated with the extra motion is significant. Human factors studies have shown that such touchpads yield lower productivity than a mouse in many applications. This somewhat limits touchpads to those applications, such as portable computing, where use of a mouse is inconvenient due to space or other considerations. There is therefore a need for a touchpad capable of yielding the same productivity as a mouse. 5 RELATED APPLICATION This application is a continuation of U.S. patent application Ser. No. 08/582,768, filed Jan. 4, 1996, abandoned. FIELD OF THE INVENTION 10 The present invention relates generally to touchpad devices, and more particularly relates to touchpad devices which detect at least the presence of one or more objects such as fingers to effectuate preselected control functions. 15 SUMMARY OF THE INVENTION BACKGROUND OF THE INVENTION Touch sensing devices are well known, and take a number of different forms. Perhaps the best known are resistivemembrane position sensors, which have been used in a number of different applications for many years. Such devices have been used as keyboards, position indicators, and so forth. Other types of touch sensing devices include resistive tablets, surface acoustic wave devices, touch sensors based on strain gages or pressure sensors, and optical sensors. Yet another touch sensing technology is capacitive sensing, in which the location of a finger (or in some instances another object such as a stylus) over a sensing device is determined by virtue of variations in capacitance under and around the location of the finger. Typical of capacitive touch sensing devices are touch screens and capacitive pads which employ a matrix of row and column electrodes and detect, for example, either the transcapacitance between row and column electrodes or the effective capacitance to virtual ground. Other capacitive techniques are also known. Some touch sensitive devices are known to use interpolation for more precisely identifying the location of a finger or stylus. Typical of each of these prior art devices is that each of them senses any contact as that of only one finger at a time. Cursor movement is straightforward with one finger, and tapping of a finger on the surface of the pad can be detected and acted upon in a manner similar to detecting the actuation of a button on a mouse. Single and double taps can be used as simple equivalents of single and double mouse clicks. With a single-finger touchpad, the click and drag function is more difficult. With single finger detection, dragging has been implemented with schemes such as uptap (finger lifted and placed down again quickly), tap-and-a-half, and sticky drag (drag lock turns on automatically after the finger is placed in one location without moving for more than a certain time, such as one second). All of these methods take more time and/or more finger motions than it takes to perform the equivalent function with a mouse, and are not intuitive to users familiar with electronic mice. Prior art touch pads are thus less attractive for general use than a mouse. Another commonly used function in the prior art is that of clicking a box (or icon or displayed "button") or series of boxes (such as "connecting the dots"). With a mouse, the cursor is moved into position by moving the mouse, then the click occurs with a down-up motion of the finger to actuate a button or switch. With a touchpad typical of the prior art, the cursor is moved into position with the finger, then the click occurs with a tap of the finger which moved the cursor. 20 25 30 35 40 45 50 55 60 65 The present invention provides a novel method and apparatus for sensing the proximity of multiple simultaneous fingers or other appropriate objects to a touch sensor. The present invention may be implemented based on any conventional touch sensing technology, although an exemplary embodiment involves the use of a capacitive touch sensing device similar to that described in U.S. patent application Ser. No. 08,478,290, entitled Touch Sensing Method and Apparatus, filed Jun. 7, 1995, and assigned to the assignee of the present application. The numerous modifications to such a basic device required to implement the present invention are described generally below, and in detail hereinafter. Alternatively, the present invention may be used with the method and apparatus described in the U.S. patent application Ser. No. 08/582,769, entitled Touch Pad Sensing Method and Apparatus, having as inventors Bemi Joss, Bernard Kasser and Stephen Bisset, filed on Jan. 4, 1996, and assigned to the assignee of the present invention, the relevant portions of which are incorporated herein by reference. Operation of the present invention includes two aspects: detection of multiple objects, typically fingers, and assignment of various functions to particular actions by the movement of one or both fingers. The detection function can be general, but in a simple, exemplary implementation can be limited to a two-finger function such as the combination of the index finger and middle finger. In general, these are the two most dextrous fingers, and they work well together. As a result, for this exemplary embodiment, the touchpad need only distinguish between the two fingers in one dimension since the two fingers are typically side by side. In addition, the touchpad need only detect the second finger in reasonably close proximity to the first finger. In most situations, the distance between finger centers will be less than five centimeters. Additional combinations of fingers, such as three fingers tapping simultaneously or other combinations, may also be implemented in accordance with the methodology of the present invention. For clarity of explanation, the present invention can be described in most of its applications by establishing one finger as controlling movement of the cursor, and the second finger as controlling functions equivalent to a mouse button or switch. In this context, one finger may be considered the "point" finger, while the other is the "click" finger. Various conventional functions may then be defined accordingly. For example, "drag" may be effected by moving the two fingers in unison, "point and click" may be effected by moving the cursor with the first finger and tapping with the second finger, "point and double click" may be effected by moving the cursor with the first finger and double tapping with the 5,825,352 3 4 second finger, and so on. "Click and Drag" may be performed simply by moving the cursor to the appropriate position with the first finger, placing both first and second fingers on the pad, and moving both fingers together. The function may be concluded by simply raising one or both fingers. Similarly, connecting the dots may be performed simply by moving the cursor from dot to dot with the first finger, and then clicking on the dot by tapping with the second finger. It will be apparent to those skilled in the art that these functions may be defined differently and still fall within the scope of the present invention. It will also be apparent that many of these operations will be intuitive to experienced mouse users, as soon as the correspondence between mouse functions and the two fingers is demonstated to the user, and thus their implementation in a touchpad context makes them especially desirable. In addition to the foregoing functions, which can be performed (albeit awkwardly and less intuitively) with conventional touch pads, there are additional functions that can be performed with two fingers and which can have substantial analogs to the use of a mouse or even go beyond conventional mouse functions. For example, detection and location of two fingers will permit the touchpad to report to a host system the distance between the two fingers. This can be used, for example, in paint or other programs to determine line width or other spacing functions, or any other "variable value" function. Similarly, tapping with both fingers at the same time may be defined as an alternate, shorthand method for a double tap (such as may be defined for the middle button in a Logitech mouse) or may be defined as a special function, similar to the "right button" functions of a mouse. Such special functions may have particular value in operating systems such as Windows 95 where, for example, implementation of the Object Viewer function is an important special function. Such functions can be implemented readily with a triple finger tap, a double tap of two fingers, or other convenient combination. Another function which may be implemented with two finger detection is "drag lock". This function may be used when a drag function is underway, but at least one of the fingers reaches the edge of the pad before the drag function is complete. Touchpad operation may be controlled to maintain the drag mode if, for example, both fingers are lifted off the pad within a threshold period of one another, and are then placed down on the pad again within a suitable time period. In some implementations, highly extended time periods may be suitable in this context. A further function which may be readily implemented with the present invention is the ability to operate in relative mode, where a first finger performs a key function, and a second finger controls some attribute of the operation performed by the first finger. For example, a first finger contacting a touch pad may cause a cursor to move across a screen, while contact (and removal) of a second finger with the screen may turn an image, or "ink" on (and off). The resulting image, or "ink," is defined by the motion of the first finger during the period when the second finger is also in contact with the pad; gaps in the "ink" occur when the second finger is lifted away from the pad. The function may, in some ways, be thought of as electronic finger painting, but has the additional advantage of allowing multiple characters to be written on a touch pad. Thus, with the use of two fingers, hand printing of text with gaps between the letters and words becomes feasible and convenient, whereas it is impractical with the prior art "tap and a half' method of turning on the ink. Yet another function which may be implemented with the present invention is use of the touchpad in absolute mode. Most prior art touchpad devices operate, like mice, in relative mode by indicating the distance travelled relative to the starting point of the motion. Touchpads, on the other hand, can also be operated in absolute mode, where the absolute position of the finger on the pad is detected and reported to the host system or application. In absolute mode, multi-finger detection allows the first finger to point to the desired absolute position, while the second finger performs whatever "click" operation is desired without requiring a removal of the first finger which might lessen accuracy or resolution. Also included within the present invention is the detection and location of more than two fingers, with accompanying functional definitions permitting such multiple contacts to indicate pointing device or other control operations, such as musical keyboards. It is therefore one object of the present invention to provide a touchpad system capable of detecting a plurality of contacts such as fingers. It is a further object of the present invention to provide a touchpad device capable of locating a plurality of contacts such as fingers. It is a further object of the present invention to provide a method for detecting the presence of more than one finger on a touch pad device. It is a still further object of the present invention to provide a method for locating each of a plurality of fingers on a touch pad device. It is yet another object of the present invention to provide a method for effecting the "point and click" function on a touchpad through the use of multiple fingers. Yet a further object of the present invention is to provide a method for effecting the "click and drag" function on a touchpad through the use of multiple fingers. A still further object of the present invention is to provide a method for effecting on a touchpad, through the use of multiple finger contacts, a plurality of conventional mouse button functions. Yet another object of the present invention is to provide a method and apparatus for effecting on a touchpad, through the use of multiple finger contacts, a plurality of enhanced functions. Yet a further object of the present invention is to provide a method and apparatus for electronic finger painting. These and other objects of the invention may be better appreciated from the following detailed description of the invention, taken together with the appended figures. 5 10 15 20 25 30 35 40 45 50 55 60 65 THE FIGURES FIG. 1 shows a perspective view of a device according to the present invention. FIG. 2 shows in block diagram form the electronics of the present invention. FIG. 3 shows a finger profile for two non-overlapping fingers as sensed by the present invention. FIG. 4 shows a finger profile for two closely-spaced fingers as sensed by the present invention. FIG. 5 shows in flow diagram form the steps for a high level algorithm for a pointing device according to the present invention. FIG. 6 shows in flow diagram form the steps for computing motion and "button" states. FIGS. 7A-7F2 show in diagrammatic form an exemplary sequence of finger contacts and movements across a touch sensor. 5,825,352 5 FIG. 8 shows a more generalized case of FIG. 5. FIG. 9 shows a more generalized case of FIG. 6. 6 capacitance when no finger is present. This "no-finger" capacitance is measured and stored at a time previous to the beginning of the cycle described herein, and is described DETAILED DESCRIPTION OF IRE more fully in U.S. patent application Ser. No. 08/478,290, INVENTION 5 filed 7 Jun. 1995 and commonly assigned. It has also been found by applicant that it is not necessary, Referring first to FIG. 1, a plurality of a user's fingers lOA in all embodiments, to subtract the "no-finger" capacitance and lOB are shown positioned over a touchpad 20 in if techniques other than calculation of a centroid are used to sufficiently close proximity to be operatively connected locate the position of the fingers, and such subtraction is not thereto. Movement of a single finger over the touchpad causes the cursor to move in a now-conventional manner. 10 required even in all instances in which a centroid is calculated. However, in at least some embodiments the sensitivity However, unlike prior art devices, various control functions and hence the resolution of the calculated finger location is may be performed by the use of the second finger, typically enhanced by such subtraction. in combination with the same or a related operation of the Referring again to the exemplary embodiment, the values first finger. Operations involving more than two fingers may also be performed. In an exemplary embodiment, the touch- 15 of finger-induced capacitance are then processed to calculate a position, detect whether one or more fingers is in operative pad of the present invention reports to a host either the contact with the pad surface, and to detect any changes in the relative motion of a finger across the touchpad or changes in number of fingers operatively coupled to the pad. If the cycle "button" status. is repeated rapidly enough to update a graphical user interReferring next to FIG. 2, the operation of the touchpad 20 may be better appreciated. In particular, FIG. 2 shows in 20 face approximately 30 times per second or more, the appearance of smooth and instantaneous response is provided to block diagram form the electronics implemented to form an the user. For functions other than pointing, such as handexemplary touchpad 20. A touchpad matrix 30 is composed writing with the finger, a faster scan rate may be required of a plurality of rows 35 and columns 40 of wires or traces and may, for example, be on the order of 200 scans per arranged in a conventional manner; see U.S. patent application Ser. No. 08/321,987, filed 12 Oct. 1994, entitled 25 second. Referring next to FIG. 3, a finger profile is shown indicaTouch Pad Sensor with Simultaneous Sensing, commonly tive of the presence of two fingers, spaced apart from one assigned with the present application. The rows and columns another. In particular, the circuitry, software or firmware of are connected to an analog multiplexor 45 through a plurality of X (row) direction conductors 50 and a plurality of 30 the touchpad circuitry, such as that shown in FIG. 2, detects a first maxima 85 indicative of a first finger in operative Y (column) direction conductors 55, one conductor for each proximity to the touchpad 30, followed by a minima 90 row and each column. Under the control of a microcontroller indicative of a space between the fingers, and further fol60, the analog multiplexor 45 selects which traces of the lowed by another maxima 95 indicative of a second finger matrix 30 will be sampled, and the output of those traces is then provided to a capacitance measuring circuit 70. One 35 operatively coupled to the touchpad 30. It will be appreciated that, for operations involving more than two fingers, suitable capacitance measuring circuit is described in aforemore maxima will be detected with an appropriate number mentioned U.S. patent application Ser. No. 08/321,987, of intermediate minima. commonly assigned with the present invention and incorporated herein by reference; another is described in U.S. Although the finger profile shown in FIG. 3 suggests that patent application Ser. No. 08/478,290, filed 7 Jun. 1995, 40 the intermediate minima separating the two fingers is a zero entitled Touch Sensing Method and Apparatus and also value, it is not necessary in all instances that the minima be commonly assigned with the present invention and incorzero. Thus, for example, FIG. 4 reflects a finger profile with porated herein by reference. a nonzero local minima 100 intermediate the two maxima 105 and 110 indicative of two fingers operatively coupled to The output of the capacitance measuring circuit is then provided to an analog to digital converter 80, which operates 45 the touchpad. This finger profile simply reflects two fingers placed closely to one another, but still yields a valley for as described in either of the above-referenced patent applimeasurement of the minima. cations to convert the capacitance values from the circuit 70 into a digital representation. The analog to digital converter To operate effectively, the present invention must detect and distinguish the presence of a single finger, and the 80 then supplies the signals to the microcontroller 60, which operates to form, among other things, a finger profile for one 50 presence of multiple fingers. As noted previously, the second or more fingers, X-Y cursor data, and control signals. or additional fingers are typically involved to provide "button" or control functions, similar to actuation of the buttons Depending on the operation being performed at the particular time, the output of microcontroller 60 is then supplied to or switches on a mouse. Although the following example an interface to a PC or other device, such as a PS/2 interface, describes in detail the use of only two fingers, one for cursor an RS-232 interface, or an Apple Desktop Bus (ADB). 55 control and a second as a button, the teachings herein are believed sufficient to permit those skilled in the art to A key feature of the present invention is its ability to construct apparata using multiple fingers for additional distinguish the presence of multiple fingers either touching buttons. or in operative proximity to the touchpad 30. In a typical embodiment, the operation of the circuit of FIG. 2 cycles To avoid artifacts, a threshold may be applied to the both continuously. As noted above, the cycle begins by scanning 60 the maximum and minimum distance between the maxima the traces and measuring the capacitance on each trace. Then representative of multiple fingers. For example, a threshold the portion of each measured capacitance that is induced by requiring the maxima to be within five centimeters of one another may be used to limit the maximum distance between the presence of a finger is extracted, and this finger-induced the fingers; other thresholds may be appropriate in some capacitance is stored in RAM, as X(I) through X(Xcon) and Y(I) through Y(Ycon), as described below. The finger- 65 embodiments. A threshold representative of the minimum induced portion of the measured capacitance is determined distance may be configured by establishing a maximum by subtracting a value, for each trace, representing the value of the local minima 100. 5,825,352 7 8 In an exemplary embodiment, the operation of the system as checked at step 490, the state of Ybutton is up and of FIG. 2 is controlled in either firmware, software or YbuttonPrevious is Down, then the variable Button is set to hardware. Shown in FIG. 5 is a flow diagram showing the Up at step 495. general operation of such software or firmware which is If the button was set to Down at state 465, or Up at step capable of detecting multiple fingers, and which uses the 5 495, or if the results at steps 480 and 490 are NO, the process algorithm of FIG. 6, discussed hereinafter. The variables advances to step 510. found in the flow diagram of FIG. 5 are defined below: At step 510, Xmotion is set to the sum of Xabsolute less XabsolutePrevious, and at step 520, Ymotion is set to the sum ofYabsolute less YabsolutePrevious. Then, at step 530, Name Definition 10 the state of Button is checked and, if it is changed by being Xabsolute Finger position in X direction, calculated during the either Up or Down, both Xmotion and Ymotion are set to current cycle relative to the sensor pad. zero at step 535, indicating that the user has actuated a The value above stored from the previous cycle. XabsolutePrevious button and no cursor movement should occur. Yabsolute Similar to Xabsolute. In addition, if Button equals Up or Down, the state of YabsolutePrevious Similar to XabsolutePrevious. Xbutton Has value Up or Down (regardless of previous 15 Button is reported at step 540. At step 550, Xmotion and state). Ymotion are compared to zero, and if either is not zero then XbuttonPrevious The value above stored from the previous cycle. both Xmotion and Ymotion are reported to the microconYbutton Similar to Xbutton. troller. It will be apparent that this indicates a cursor Similar to XbuttonPrevious. YbuttonPrevious Xmotion Cursor motion in the X direction, relative to the movement, typically reflective of the movement of a single cursor position of the previous cycle (only reported 20 finger over the touchpad, or two fingers in some modes such if either or both Xmotion and Ymotion are as Click-and-Drag. non-zero). Ymotion Similar to Xmotion. Further, at step 560, whether there is motion reported or May be Up or Down (only reported if a change Button not, the variable XabsolutePrevious is set to the value of from the previous cycle). Xabsolute, and at step 570 the variable YabsolutePrevious is 25 set to the value ofYabsolute. Similarly, at step 580 the value It will be understood by those skilled in the art that a "report" of XbuttonPrevious is set to Xbutton, and at step 590 the means transmitting information to an application process value of YabsolutePrevious is set to Yabsolute. The cycle executing on a host, such that the cursor is moved or a then repeats by returning to step 400. It will be apparent that function is performed. In some instances, driver software the foregoing algorithm can be readily extended to include executing on the host may ascertain the existence of finger 30 additional fingers beyond two, representative of additional movement, while in other instances including the exemplary buttons. In such an instance, compare steps for current and embodiment described herein the determination of finger previous states of each button would be conducted, and movement occurs in the firmware in the pointing device. "up," or "down" conditions would be reported for each such Referring still to FIG. 5, the cyclical process begins at step button. In some embodiments it may be desired to report "no 400, and continues at step 410 by scanning the conductor 35 change" conditions, and the foregoing algorithm could be sensors. The sensors may be scanned sequentially or readily modified to provide such reporting. concurrently, depending on the hardware implementation. Depending on the desired configuration, second and third The scan process measures the values of finger-induced buttons may be implemented, for example, either by requircapacitance for each of the conductors, and stores the values ing a combination of two or more fingers to indicate operain RAM at step 420. The cycle process continues by 40 tion of a second button, or by the independent movement of performing the Xcompute loop of FIG. 6 discussed additional fingers or other objects. In this latter embodiment, hereinafter, and also the Ycompute loop analogous to FIG. it may be desirable to implement distance thresholding, to 6, at step 430 and 440, respectively. In general, the function ensure that movement of a second or additional button finger of the Xcompute and Ycompute processes is simply to is not mistaken for movement of the first or other button evaluate the current measurements by calculating the cen- 45 finger. troid of the finger measurement, and by detecting whether a Set forth in FIG. 6 is a flow diagram setting forth the steps second finger is touching the pad-which determines the for computing motion and "button" states in the X direction, button state. or what may be referred to as "Xcompute." An analogous In the exemplary embodiment, only a change in the button calculation is performed for the Y direction, or what may be state is reported. As a result, at step 450 the value of Button 50 referred to as "Ycompute." The algorithm uses the following is set to No Change. In addition, in the exemplary embodivariables and constants: ment a tap or double click by only a first finger is not acted upon, although a tap by a second finger or by multiple fingers is acted upon. In the exemplary arrangement, a Name Definition "button down" condition is only reported if both fingers are 55 X(N) Values, stored in memory, of finger-induced portion of in operative contact with the touchpad. capacitance measured on each conductor. N varies from The process continues by comparing the current and 1 to Xcon. [When no finger is contacting the pad above a conductor, the value is approximately zero. In addition, previous button states of the X and Y conductors. First, at X(O) is initialized to a value of 0.] step 460, the state of Xbutton is checked to see if it is Down X(N-1) Value of finger-induced sensor conductor capacitance and the state of XbuttonPrevious is checked to see if it is Up. 60 for the previous conductor. If both compares are true, then the variable Button is set to Xcon The number of sensor conductors in the X direction. Fthresh The minimum threshold that X must reach before a finger is Down at step 465. In addition, at step 470, the state of considered to be present. [Sets the touch sensitivity of Ybutton is checked to see if it is Down and the state of the pad.] YbuttonPrevious is checked to see if it is Up. If both Variable to store the value of the first peak X value. Xpeak1 compares are true, the variable Button is also set to Down. 65 Xvalley Variable to store the value of a local minimum (if any) between 2 peaks. Alternatively, as determined at step 480, if the state of Xbutton is Up and the state of XbuttonPrevious is Down, or, 5,825,352 9 Name 10 -continued 235 and a repeat with an incrementally higher N. If a second finger is touching the pad then eventually the value of X(N-l) will be geater than or equal to the value of X(N), such that the valley is detected. At this point, at step 262, the value of Xvalley is set to X(N-l) and Xstate is set to Peak2. The process then jumps to step 235, where it repeats from step 215 unless the last conductor in the matrix has been evaluated. On the next cycle, a NO result is reached at both step 225 and step 250, causing a jump to step 270. At step 270 the state of Xstate is compared to Peak2, and a YES result will occur. This results in a compare between X(N) and X(N-l) at step 275, to look for a second peak, in a manner substantially identical to the process by which the first peak was found. As long as X(N) is greater than or equal to X(N-l), the peak has not been found, so the process jumps to step 235, and then to step 215 until the change measured at the last conductor has been evaluated. As before, the value of X(N) will eventually start to decrease, such that X(N) will be less than X(N-l). At this point, at step 278, the value of Xpeak2 is set to the value of X(N-1) and the state of Xstate is set to Tail. The "tail" is the remaining portion of FIG. 4 following the second peak. While a Tail state is used in the exemplary embodiment, such a state may not be necessary in all embodiments. The process then cycles through until the last conductor measurement has been considered, at which point N does equal Xcon when the check at step 235 is made. With a YES result, the process branches to a thresholding comparison at step 290. In an exemplary embodiment, the Xcompute process then continues by calculating the centroid for the fingers detected, so long as the maxima exceed a threshold value. In accordance with the present invention, two approaches may be used in calculating centroid values. In a first implementation, only a single centroid value is calculated for the combination of one or more fingers. In this arrangement, it will be apparent that, when a second finger contacts the touchpad, the centroid "jumps" laterally approximately to the midpoint of the two fingers. In a second implementation, a centroid value may be calculated for each maxima, yielding multiple centroid values when multiple fingers interact with the pad. For purposes of clarity, the following description will be limited to the first implementation. Thus, at step 290 the values of Xpeakl and Xpeak2 are compared to Fthresh, and if either or both are greater then Xabsolute is set to the value of XweightSumlXsum at step 295, which causes the X centroid to be calculated. If neither peak exceeds Fthresh, then no finger is deemed present and Xbutton is set to Up at step 315. If both Xpeakl and Xpeak2 were greater than Fthresh, the Xcompute process continues at step 305 by comparing the difference between Xpeakl and Valley to the value of Xpeakl divided, for example, by four. If the difference is the greater of the two, then the difference between Xpeak2 and Valley is compared to the value of Xpeak2 divided, for example, by four. If the difference is greater than the dividend, the Xbutton is set to Down at step 310. Otherwise, the value of Xbutton is set to Up at step 315. The comparison described above is provided to ensure that a legitimate valley and two legitimate peaks have been detected, to avoid artifacts. It will be appreciated, given the teachings herein, that other comparison methods or divisors other than four may be used for this purpose. The Xcompute loop then ends at step 320. It will be appreciated by those skilled in the art that the foregoing is Definition Xpeak2 Variable ta stare the value af the secand peak X value (if any). Xsum Variable to accumulate the sum of the X values, for centroid calculation. XweightSum Variable ta accumulate the sum af the X values, weighted by N (the pasitian af the canductor), for centroid calculation. Xstate A variable which can have values Peak1, Valley, Peak2 or Tail, ta indicate which part af the finger profile we are currently searching far. The Tail state is simply the remainder af the scan after a secand peak (in the exemplary embadiment) has been identified. It will be apparent to those skilled in the art that the "Ycompute" variables and constants differ only in replacing X by Y. The algorithm for Xcompute starts at step 200, followed by initialization of variables at step 205. For Xcompute, the variables initialized are N, which is set to zero, and the value of X(O), which is also set to zero. In addition, Xpeakl, Xvalley, Xpeak2, Xsum and XweightSum, are all set to zero. In addition, the state of Xstate is set to Peakl. At step 210 a loop, referred to as "Xloop" starts. The purpose of Xloop is to calculate the X centroid, by accumulating the sum and weighted sum of the X values for all the X conductors from one to Xcon. Thus, the loop typically starts with the value of N=O and increments by one at the beginning of each cycle until the value of N=Xcon. The steps of the loop include step 215, where N is incremented to N + 1 and the value X(N) of the current conductor is added to the prior accumulated value, Xsum, which then becomes the new value of Xsum. The loop then continues at step 220, where the prior value of XweightSum is added to a weighted value of X(N), where the weighting is done by multiplying X(N) by the number N of the conductor being sampled. The sum of XweightSum and N*X(N) then becomes the new value of XweightSum. The XLoop continues at step 225, where one of a series of subloops is selected depending on the value of Xstate. Since Xstate is initially set to Peakl, the first subloop entered is the Peakl subloop, beginning at step 230. At step 230 the value of X(N) is compared to the value of X(N-l) and, if X(N) is greater than or equal to the value of X(N-1), the first peak has not yet been reached. As a result, the loop jumps to step 235, at which points the value of N is compared to the value of Xcon. If the finger-induced capacitance measured at the last conductor has not been evaluated, the result is a NO and the process jumps to step 215 to repeat with an incremented value of N. At some value of N the value of X(N) is less than the value of X(N-1), at which point the check at step 230 yields a NO. At this point, the peak has been found and at step 232 the value of Xpeakl is set to X(N-1) and the value of Xstate is set to Valley. The system then jumps to step 235, where a check is made to see if the last conductor has been measured by comparing N to Xcon. As before, if the capacitance change measured at the last conductor has not been checked, the result is a NO, and the process loops to step 215 and repeats. When the process begins with the next increment of N, a NO will result at step 225, so that the process will jump to step 250, where a check is made to see if Xstate equal Xvalley. Since it now does, a YES results and the process branches to step 255. At step 255 a X(N) is compared to X(N-l). If X(N-l) is not greater than or equal to X(N), the valley has not yet been found, causing a further jump to step 5 10 15 20 25 30 35 40 45 50 55 60 65 5,825,352 11 12 example, relative movement of the first finger, together with a simplified algorithm and does not include compensation a tap of the second or more fingers at some point, followed for settling, moisture and noise. Noise thresholding may be either by removal of both fingers, further movement of the provided in at least some embodiments, if noise causes the first finger, or further movement of both fingers. Such curve to be non-monotonic; settling and moisture may be 5 sequences can, essentially, be viewed as a series of scans in dealt with in a similar manner. which one or more fingers were found to be either present or The Ycompute loop is performed similarly, as noted absent in any given scan, with motion, or lack thereof, of the above. Depending on the particular arrangement desired, finger or fingers across the touch sensor interspersed and the associated hardware, the X and Y compute processes between changes in the number of fingers in contact with the may be performed sequentially in either order or concur10 touchpad. The specific sequence can then be analyzed to rently. determine whether only a cursor movement is involved or While the foregoing example describes identification of whether a control function is intended. If a control function minima and maxima in the X and Y directions, it will be is intended, the specific control function can then be idenapparent that an analysis along a diagonal or some other tified. angular direction may be preferred in some instances, and is Referring to FIGS. 7A-7F, there is shown in diagramstill within the scope of the present invention. 15 matic form an exemplary sequence involving operative It will be appreciated that the foregoing describes a new coupling of a plurality of fingers with a touch sensor to cause and useful method and apparatus for detecting a plurality of both a cursor movement and a control function. More fingers operatively coupled to a touch pad sensor for specifically, FIG. 7Ashows a series of movements of one or enabling a variety of mouse-like operations. A second pormore fingers across a touch sensor, including various finger tion of the invention involves using the previously detection 20 taps. FIGS. 7B-7F show, for each of the numeric references methodology to perform various cursor movement and conin FIG. 7A, an exemplary video display, an exemplary trol functions similar to those well known to users of position of one or more fingers on the touchpad, and X and Y finger profiles appropriate to that finger contact. It will be electronic mice and trackballs. helpful to define certain conventions used in FIGS. 7A-7F As previously noted, the first finger is most commonly associated, in the prior art, with cursor movement, while 25 before discussing these figures. In FIG. 7A-7F, contact various tapping motions [e.g., tap and tap-and-a half] of that between a finger and the touch pad is indicated by a solid first finger have been implemented to perform various circle within the fingertip; an absence of contact between a fingertip and the touch sensor is indicated by the absence of control functions. Unlike such prior art, however, various movements (including sequences of taps) of additional fincircle within the finger tip. A tap-i.e., an up and down gers or combinations of the first and additional fingers are 30 motion-by a finger is indicated by a dashed circle. Moveprovided to enable such control functions in the present ment of the fingers from a first to a second point while in contact with the touch sensor is indicated by a solid arrow. invention. Depending on the implementation desired, it is also possible to implement a superset of the prior art control Movement of the fingers from a first to a second point with functions together with the more robust control function set the fingers not in contact is indicated by a dashed arrow. 35 With these conventions in mind, FIGS. 7A-7F can be better available with the present invention. Note that in the preferred embodiment, the user may understood. arbitrarily choose which finger he or she uses as the "first" In particular, and with reference to FIG. 7A in combinaor "second" or additional fingers. Thus, for example, one tion with FIG. 7B, an initial series of scans 700 indicates the user may choose the index finger as the first finger and the presence of a single finger in contact with the touch sensor, middle finger as the second finger, while another user may 40 with the changing X,Y location between 700 and 705 prefer the reverse or some different combination. In the indicating relative motion by the finger across the touch preferred embodiment, the only distinction between the first, sensor. At 710, a second finger is detected in contact with the second and additional fingers is the sequence in which they touch sensor, and continues to be operatively coupled to the are placed in contact with the touchpad surface, or removed sensor for several more scans without significant relative from it. In any case where a second or additional finger or 45 motion across the sensor. At 720, the second finger is fingers is placed down after a first finger, or multiple fingers, removed, while the first finger remains. From 720 until 730 is already in contact with the pad, the newly placed fingers (shown in FIG. 7C) the first finger continues its relative can be in any relationship to those already in contact with the motion, while at 740 the second finger is again placed down. pad, such as to the left, to the right, above or below. The only The scans of the sensor then detect both the first and second requirement is that, in the profile of finger-induced 50 finger being moved together across the sensor until the scan capacitances, the profile of the newly placed finger exhibits at 750, then both fingers are removed at 755. Thereafter, a zero value or a local minimum on each side of its peak both fingers are again placed on the sensor at 760 (shown in value, in at least one of the X or Y directions, so that it may FIG. 7D), where they remain for a few more scans until 770, be distinguished from the other finger(s) in contact with the at which time they are both removed. Three fingers are touchpad. 55 placed on the sensor at 780, and removed a few scans later In particular, the ability of the previously described methat 790. Thereafter, three fingers are placed on the sensor at odology to recognize multiple fingers allows the first finger 800 (FIG. 7E), moved across the touch sensor for a few to serve, essentially, as the "point" finger, while additional scans from 800 to 805, and are then removed at 810. Finally, fingers serve as the "click" finger(s). Combinations of the as shown at 820 (FIGS. 7FI-2), one finger is placed down first, second, and perhaps additional fingers can then enable 60 while the adjacent finger is moved, such as might be numerous conventional functions to be performed based on desirable for marking text or other functions. When the the mapping of a variety of sequences of taps or finger finger is moved as far as is practicable, the moving finger is picked up at 825 and placed down again at 830 for further movements to a set of conventional pointing device functions, where the pointing device could be a touchpad, movement. The moving finger can be picked up and placed mouse, trackball, joystick, or stylus, for example. It will be 65 down again as often as desired. Eventually the other, subapparent to those skilled in the art, given the foregoing stantially fixed finger is lifted at 835, causing a "button up" description, that the present invention can detect, for condition. 5,825,352 13 14 While the foregoing sequence can be programmed to define any number of cursor movement and control functions, an exemplary definition of the functions associated with such sequences can be the following: For the period from 700 through 705 the relative motion of a single finger can be defined to mean cursor movement for that period, from the beginning point until the relative ending point. During the period 710 to 720, a second finger is detected and then removed, which is defined in an exemplary embodiment as a single finger tap which may be a "select" function such as selecting one item from a screen menu. During the period 720 until 730, the single finger again moves the cursor, while at 740 the second finger reappears to enable a different function. The second finger moves across the sensor, together with the first finger, until at 755 both fingers are removed. Again, such sequences-all of which may be regarded as gestures-can be mapped to control functions in numerous ways, but one reasonable definition is that the presence of two fingers engaged in relative motion is a "drag function," such as where an entity was selected by the first tap and dragged to a new location, where it is dropped by the removal of both fingers at 750. Then, at 760, both fingers reappear and remain for a few additional scans until both are removed at 770. This gesture, which may be considered a "two finger tap," can enable numerous functions, but an exemplary definition is the classical "double-click" of a standard left mouse button, or the click of a middle button on some three button mice, such as those sold by Logitech, Inc., and could, for example, activate a function or application associated with the item to which the cursor is pointing. Next, the sequence from 780 to 790, when the three fingers reappear and are then removed, is a "three finger tap", and can be regarded, for example, as a right mouse button click which may, for example, activate a menu specific to the item to which the cursor is pointing. Finally, the sequence from 800 until 810, in which three fingers reappear, move across the touch sensor and are then removed, may in an exemplary embodiment be seen as a shortcut to a multi-sequence function. For example, such a movement might be defined as a scroll function, which might otherwise require the user to move the cursor to a scroll bar, drag and drop a scroll box, and return the cursor to the working area of the screen. Finally, the sequence from 820 through 830 can be analogized to holding down a mouse button (for example the left mouse button), rolling a mouse whatever distance is convenient for the user, then picking up the mouse (while continuing to hold down the button) and placing the mouse down again at a position convenient for further movement of the mouse. One example of the use of such a sequence is the marking of text. The algorithm for recognizing movement by one "cursor" finger while the other "button" finger is maintained in position is a generalized case of the algorithm shown in FIGS. 5 and 6, and is described in greater detail in FIGS. 8 and 9. Other functions which can be implemented with such gestures include an "ink" function (mentioned above), entry of variable values, and use of the sensor in absolute mode. Referring next to FIGS. 8 and 9, the generalized case associated with FIGS. 7FI-2, but also applicable to the remaining functions, may be better appreciated. In the exemplary algorithm shown in FIGS. 8 and 9, a determination is made whether zero, one or two fingers are in contact with the touchpad. Depending on how many fingers are identified, various operations are permitted. It will be appreciated that FIG. 8 is analogous to FIG. 5, while FIG. 9 is analogous to FIG. 6. For convenience, steps unchanged from FIGS. 5 and 6 are in most cases referred to by the reference numerals used in those figures. In FIG. 8, the process begins in a manner identical to FIG. 5, starting at step 400 and followed by scanning the conductors and storing the results of the scan in memory at step 405, followed by Xcompute and Ycompute at steps 430 and 440, respectively. For this embodiment, Xcompute is shown in FIG. 9, and Ycompute is identical to Xcompute. At step 850, a determination is made whether two fingers are in contact with the touchpad by evaluating both Xcompute and Ycompute. If neither Xcompute nor Ycompute indicate the presence of two fingers, the answer is NO and the process drops to step 855. However, if either the Xcompute routine or the Ycompute routine indicates the presence of two fingers, the answer at step 850 is YES and the process moves to step 860, where the value of the variable FINGER is set to 2. If the answer at step 850 was NO, then a determination has to be made at step 855 whether one or no fingers are in contact with the touch sensor. If variables Xfinger and Yfinger do not both equal 1, then the comparison at step 850 is a NO and it is determined that no fingers are in contact with the touch sensor. In this case, the variable FINGER is set to 0 at step 865. However, if the variables both yield a 1, then a determination is made that one finger is in contact with the sensor, and the variable FINGER is set to 1 at step 870. In either event, the process then moves to step 875, where Xmotion and Ymotion are calculated in a manner identical with FIG. 5. The process then continues at step 880, where the variable Finger is compared to the value of FingerPrevious. If the value of Finger differs from the value of FingerPrevious, then a button actuation is assumed to have occurred, and Xmotion and Ymotion are set to zero at step 885. However, if the value of Finger equals the value of FingerPrevious (i.e., the current number of fingers contacting the pad is the same as in the previous state), then the comparison of step 880 yields a YES, and the process moves to step 890. At step 890 a comparison is made to determine whether there has been motion in either the X or Y directions. If neither Xmotion nor Ymotion is nonzero, a NO results and the process moves to step 895 where the variable Motion is set to NO. The same results obtains if the process goes through step 885. However, if either Xmotion or Ymotion is nonzero, a YES results at step 890, and the process moves to step 900 where the variable Motion is set to YES. From either step 895 or step 900, the process moves to step 905, where a check is made to determine whether ButtonPrevious was up and the number of fingers detected is two. If the answer is NO, the process moves to step 910. However, if a YES is obtained, the process moves to step 915 where the state of the Button variable is reported to the host as DOWN, and the variable ButtonPrevious is set to Down. Referring again to step 910, a check is made to determine whether either of two groups of conditions exist. A YES result may be obtained if ButtonPrevious is DOWN and and the value of the Finger variable is zero; or if ButtonPrevious is Down and the variable Motion is set to YES and the variable Finger is set to one. If none of these conditions exist, a NO result is obtained and the process moves to step 920. However, if a YES does result, then the process moves to step 925 and reports to the host that Button is Up, while also setting the variable ButtonPrevious to Up. If a NO resulted at step 910, at step 920 a comparison is made between variables FingerPrevious and Finger, and the S 10 15 20 25 30 35 40 45 50 55 60 65 5,825,352 15 16 state of the Motion variable. If FingerPrevious is the same finger or fingers across the touch sensor, to evaluate those value as Finger, and Motion has occurred (i.e., Motion is sequences either locally or via software on the host, and to Yes), the process moves to step 930 and both Xmotion and report appropriate signals to cause cursor movements or Ymotion are reported. The process then moves to step 935. control functions to occur in applications programs or operHowever, if the comparison at step 920 yields a No, the 5 ating environments. process moves directly to step 935. At step 935, the value of Having fully described various embodiments of the XabsolutePrevious is set to the value of Xabsolute, the value present invention, numerous alternatives and equivalents ofYabsolutePrevious is set to the value ofYabsolute, and the which do not depart from the invention will be apparent to value of FingerPrevious is set to the value of Finger. The those skilled in the art. It is therefore intended that the process then moves to step 940, where it recycles by 10 invention not be limited by the foregoing description, but jumping back to start. only by the appended claims. Referring next to FIG. 9, the Xcompute process is shown What is claimed is: in detail for the generalized case shown in FIG. 8. As noted 1. A method for detecting the operative coupling of previously, the Ycompute process is identical and is therefore not shown separately. The process of FIG. 9 is identical 15 multiple fingers to a touch sensor involving the steps of to that shown in FIG. 6 up through step 290, and the scanning the touch sensor to (a) identify a first maxima in preceding steps will therefore not be discussed again. a signal corresponding to a first finger, (b) identify a However, if a No results from the comparison at step 290, a minima following the first maxima, (c) identify a determination is made that no fingers are in contact with the second maxima in a signal corresponding to a second pad. This causes the variable Xfinger to be set to zero at step 20 finger following said minima, and 970. providing an indication of the simultaneous presence of Steps 295 and 305 are unchanged from FIG. 6 and will not two fingers in response to identification of said first and be discussed further. However, if a No results from the second maxima. comparison at step 305, then a determination is made that 2. The method of claim 1 further including the step of one finger is in contact with the sensor, and the value of the 25 causing a pointing device click function to occur in response variable Xfinger is set to one at step 975. By contrast, if the to the detection of at least a second maxima. result at step 305 is a Yes, then a determination is made that 3. The method of claim 1 further including the step of two fingers are in contact with the sensor and the variable enabling a "drag" function to occur in response to the Xfinger is set to two at step 980. Regardless of the number detection of at least a second maxima. of fingers in contact with the sensor, the process moves to 30 4. The method of claim 1 further including the step of step 320 and ends until the next cycle. enabling a "select" function in response to the detection of Another function achievable with the detection method at least a second maxima. and apparatus of the present invention may be referred to as 5. The method of claim 1 further including the step of edge lock. Because a touch sensor can detect, in absolute enabling an "ink" function in response to the detection of at terms, where on the sensor the operative coupling occurs, it 35 least a second maxima. is possible to detect that one or more fingers have reached 6. The method of claim 1 wherein said touch sensor the edge of the sensor. In some instances, the user intends to includes a plurality of lines, said maxima being a largest continue the movement he was engaged in when he hit the local variation in a signal value on one of said lines due to edge; for example, a drag function involving two fingers, in capacitive coupling of a finger. which the two fingers hit the edge before the object being 40 7. The method of claim 6 wherein said maxima are peaks. dragged has reached its destination. In the environment of a 8. The method of claim 1 further comprising the step of mouse, the user simply picks up the mouse while holding the comparing a distance between said first maxima and said button down, puts it back down and moves again. In the second maxima to a predefined threshold. context of a touchpad, however, removal of the two fingers 9. The method of claim 1 further comprising the steps of: may be perceived as termination of the function even though 45 providing a first control function in response to the such termination was not intended. To avoid such problems, detection of the movement of two fingers: the function in which the user was engaged at the time the detecting the reaching of an edge of said touch sensor by fingers hit the edge may remain active-i.e., locked in-for said two fingers; a delay period. If the fingers are placed down on the touchpad within the delay period, the user continues with the 50 detecting a first time corresponding to the removal of said earlier function. If the user does not place down the fingers fingers from said touch sensor; within a predefined delay, the function is terminated and a detecting a second time corresponding to the replacement new function begins when the user again places the fingers of said two fingers on said touch sensor; and in operative contact with the sensor. continuing said first control function if said first and It will be appreciated from the foregoing that the present 55 second times are within a predetermined time limit of invention allows numerous multi-finger gestures to be each other. detected and converted to mouse-related functions for mov10. The method of claim 1 further comprising the step of: ing a cursor and control of operating environments or detecting a distance between said first and second applications programs. However, while some exemplary maXIma. functions and exemplary definitions for particular sequences 60 11. The method of claim 1 further comprising the step of: have been provided above, it is to be understood that the providing a drag control function in response to detecting present invention is not limited to the association of a a movement in substantial unison of two said fingers. particular function with a particular sequence or to any 12. The method of claim 1 further comprising the step of: particular set of functions. Instead this aspect of the invention is directed to the ability to identify and process various 65 providing a click function in response to the removal and sequences in which one or more fingers are either absent or reappearance of said second maxima within a predepresent, interspersed with motion or lack of motion of the termined period of time. 5,825,352 17 18 13. The method of claim 1 further comprising the steps of: 23. The touch sensor of claim 18 further comprising: means for providing a first control function in response to detecting a movement of said first maxima; the detection of the movement of two fingers: detecting a removal and replacement of said maxima means for detecting the reaching of an edge of said touch within a predetermined time period; sensor by said two fingers; 5 controlling a cursor function in response to said movemeans for detecting a first time corresponding to the ment of said first maxima; and removal of said fingers from said touch sensor; providing a control function in response to said removal means for detecting a second time corresponding to the and replacement of said second maxima. replacement of said two fingers on said touch sensor; and 14. The method of claim 1 further comprising the step of: 10 means for continuing said first control function if said first selecting an appropriate control function based on a and second times are within a predetermined time limit combination of a number of fingers detected, an of each other. amount of time said fingers are detected, and any 24. The touch sensor of claim 18 further comprising: movement of said fingers. 15 means for detecting a distance between said first and 15. The method of claim 1 further comprising the step of second maxima. determining if said first and second maxima are within 5 25. The touch sensor of claim 18 further comprising: centimeters, and only providing said indication of the presmeans for providing a drag control function in response to ence of two fingers if said first and second maxima are detecting a movement in substantial unison of two said within 5 centimeters. 20 fingers. 16. The method of claim 1 further comprising the step of 26. The touch sensor of claim 18 further comprising: calculating first and second centroids corresponding to said means for providing a click function in response to the first and second fingers. removal and reappearance of said second maxima 17. The method of claim 1 wherein said first and second within a predetermined period of time. maxima are required to be higher than a first threshold, and 25 27. The touch sensor of claim 18 further comprising: said minima is required to be less than a second threshold. means for detecting a movement of said first maxima; 18. A touch sensor for detecting the operative coupling of means for detecting a removal and replacement of said multiple fingers comprising: maxima within a predetermined time period; means for scanning the touch sensor to (a) identify a first 30 means for controlling a cursor function in response to said maxima in a signal corresponding to a first finger, (b) movement of said first maxima; and identify a minima following the first maxima, and (c) means for providing a control function in response to said identify a second maxima in a signal corresponding to removal and replacement of said second maxima. a second finger following said minima, and 28. The touch sensor of claim 18 further comprising: means for providing an indication of the simultaneous 35 means for selecting an appropriate control function based presence of two fingers in response to identification of on a combination of a number of fingers detected, an said first and second maxima. amount of time said fingers are detected, and any 19. The touch sensor of claim 18 further comprising: movement of said fingers. 29. The sensor of claim 18 further comprising means for means for selecting an appropriate control function based on a combination of a number of fingers detected, an 40 determining if said first and second maxima are within 5 centimeters, and only providing said indication of the presamount of time said fingers are detected, and any movement of said fingers. ence of two fingers if said first and second maxima are 20. The touch sensor of claim 18 wherein said touch within 5 centimeters. sensor includes a plurality of lines, said maxima being a 30. The sensor of claim 18 further comprising means for largest local variation in a signal value on one of said lines 45 calculating first and second centroids corresponding to said first and second fingers. due to capacitive coupling of a finger. 21. The touch sensor of claim 18 wherein said maxima are 31. The sensor of claim 18 wherein said first and second peaks. maxima are required to be higher than a first threshold, and 22. The touch sensor of claim 18 further comprising said minima is required to be less than a second threshold. means for comparing a distance from said first maxima to 50 said second maxima to a predefined threshold. * * * * *

Disclaimer: Justia Dockets & Filings provides public litigation records from the federal appellate and district courts. These filings and docket sheets should not be considered findings of fact or liability, nor do they necessarily reflect the view of Justia.


Why Is My Information Online?