`
`1111111111111111111111111111111111111111111111111111111111111111111111111111
`US 20090284478Al
`
`(19) United States
`c12) Patent Application Publication
`De Ia Torre Baltierra et al.
`
`(10) Pub. No.: US 2009/0284478 Al
`Nov. 19, 2009
`(43) Pub. Date:
`
`(54) MULTI-CONTACT AND SINGLE-CONTACT
`INPUT
`
`(22) Filed:
`
`May 15,2008
`
`Publication Classification
`
`(75)
`
`Inventors:
`
`Pamela De Ia Torre Baltierra,
`Carnation, WA (US); Scott
`Sheehan, Seattle, WA (US); Xiao
`Tu, Sammamish, WA (US); Bryan
`D. Scott, Mill Creek, WA (US);
`Reed L. Townsend, Kirkland, WA
`(US)
`
`Correspondence Address:
`MICROSOFT CORPORATION
`ONE MICROSOFT WAY
`REDMOND, WA 98052 (US)
`
`(73) Assignee:
`
`MICROSOFT CORPORATION,
`Redmond, WA (US)
`
`(21) Appl. No.:
`
`12/120,820
`
`(51)
`
`Int. Cl.
`G06F 31041
`(2006.01)
`(52) U.S. Cl. ........................................................ 345/173
`
`(57)
`
`ABSTRACT
`
`This document describes tools capable of initiating a function
`based on one or more tactile contacts received through a
`contact detection device, such as a touch pad. In some
`embodiments, the tools identify tactile contacts in accordance
`with the tool's input mode. The tools may use the input mode
`to determine what gestures may be identified for the tactile
`contacts. In some embodiments, these tools switch input
`modes based on a number or characteristic of tactile contacts
`electronically represented in contact data. By so doing, the
`tools may more accurately determine appropriate gestures or
`provide a broader range of functions based on tactile contacts
`received through a contact detection device.
`
`Computing System
`100
`
`Contact Detection Device
`108
`
`Multi-Input System having Computer(cid:173)
`Readable Media
`102
`
`Input Controller
`1.1§
`
`Application
`1.1Q
`
`Identifier
`Module
`104
`
`Contact State
`Machine
`120
`
`Library
`llil.
`
`Monitoring
`State Machine
`122
`
`Petitioner Samsung Ex-1005, 0001
`
`
`
`Computing System
`100
`
`Contact Detection Device
`108
`
`Multi-Input System having Computer(cid:173)
`Readable Media
`102
`
`Input Controller
`116
`
`Application
`110
`
`Identifier
`Module
`104
`
`Contact State
`Machine
`120
`
`I
`
`Library
`118
`
`Monitoring
`State Machine
`122
`
`Contact Detector(s)
`106
`/-----------""
`Zoom
`'
`I
`124
`I
`I
`,......r\...
`I
`I
`I
`I
`I
`
`r
`I
`1
`I
`. . 1
`
`' \ - - - - -
`'
`'
`'
`'
`
`\
`
`' '
`
`{
`------;;
`
`/
`
`/
`
`/
`
`/
`
`/
`
`/
`
`~~ ·{:
`
`107
`
`~
`
`Fig. 1
`
`(')
`
`~ .....
`
`(')
`
`~ .....
`
`'"= ~ .....
`('D = .....
`~ 'e -....
`.... 0 = '"= = 0" -....
`.... 0 =
`z 0
`~ ....
`
`~'-CI
`N
`0
`0
`'-CI
`
`('D
`('D
`
`rFJ =(cid:173)
`.....
`....
`0 .....
`
`.j;o.
`
`c
`rFJ
`N
`0
`0
`..._
`'-CI
`0
`N
`QO
`.j;o.
`.j;o.
`-....l
`QO
`
`> ....
`
`Petitioner Samsung Ex-1005, 0002
`
`
`
`Patent Application Publication
`
`Nov. 19, 2009 Sheet 2 of 4
`
`US 2009/0284478 Al
`
`200
`Detect Tactile Input
`and Produce
`Output
`
`208
`Switch Input Mode
`.1-----11~
`to Current Input
`Mode
`
`No
`
`210
`Maintain Current
`Input Mode
`
`214
`Initiate Mapped
`Function/Auxiliary
`Function
`
`Fig. 2
`
`Petitioner Samsung Ex-1005, 0003
`
`
`
`Patent Application Publication
`
`Nov. 19, 2009 Sheet 3 of 4
`
`US 2009/0284478 Al
`
`300
`Detect Tactile
`
`Convert to Contact
`Data
`
`304
`Receive Contact
`Data Indicating
`Movement
`
`310
`Remain in Current
`Input Mode/Sub(cid:173)
`Mode
`
`308
`~--~~~switch Input Mode/
`Sub-mode
`
`314
`Initiate Mapped
`Function/Auxiliary
`Function
`
`Fig. 3
`
`Petitioner Samsung Ex-1005, 0004
`
`
`
`Patent Application Publication Nov. 19, 2009 Sheet 4 of 4
`
`US 2009/0284478 Al
`
`400
`Initiate Function
`Exceeding
`Application's Capacity
`
`No
`
`408
`Initiate/Provide
`Function
`
`Yes
`
`404
`Respond with
`Indication
`
`406
`Initiate/Partially
`Provide Function
`and/or Initiate
`Feedback
`Function
`
`Fig. 4
`
`Petitioner Samsung Ex-1005, 0005
`
`
`
`US 2009/0284478 AI
`
`Nov. 19, 2009
`
`1
`
`MULTI-CONTACT AND SINGLE-CONTACT
`INPUT
`
`BACKGROUND
`
`[0001] People interact with computing systems through
`input devices, such as keyboards, mice, touch pads, and the
`like. These input devices are important because if users can(cid:173)
`not easily or robustly interact with a computing system
`because of its input device, users may reject the computing
`system. For example, if a cellular phone has a clunky, irritat(cid:173)
`ing number pad, the cellular phone may fail in the market.
`Similarly, if a laptop computer has a touch pad that does not
`understand enough functions or requires awkward gestures,
`the laptop may also be rejected in the market.
`[0002] More and more, computing systems are sold with
`touch pad or touch screen input devices. These touch devices
`accept user input based on physical contact with one or more
`detectors in the touch device. Current touch devices, however,
`are not well suited to many computing tasks and applications
`because they often cannot differentiate between enough dif(cid:173)
`ferent types of physical contacts or require users to perform
`awkward gestures.
`
`SUMMARY
`
`[0003] This document describes tools capable of initiating
`a function based on one or more tactile contacts received
`through a contact detection device, such as a touch pad. In
`some embodiments, the tools identify tactile contacts in
`accordance with the tool's input mode. The tools may use the
`input mode to determine what gestures may be identified for
`the tactile contacts. In some embodiments, these tools switch
`input modes based on a number or characteristic of tactile
`contacts electronically represented in contact data. By so
`doing, the tools may more accurately determine appropriate
`gestures or provide a broader range of functions based on
`tactile contacts received through a contact detection device.
`[0004] This Summary is provided to introduce a selection
`of concepts in a simplified form that are further described
`below in the Detailed Description. This Summary is not
`intended to identifY key or essential features of the claimed
`subject matter, nor is it intended to be used as an aid in
`determining the scope of the claimed subject matter. The term
`"tools," for instance, may refer to system( s ), method( s ), com(cid:173)
`puter-readable instructions (e.g., one or more computer-read(cid:173)
`able media having executable instructions), components,
`and/or technique(s) as permitted by the context above and
`throughout this document.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`[0005] The detailed description is described with reference
`to the accompanying figures. In the figures, the left-most
`digit(s) of a reference number identifies the figure in which
`the reference number first appears. The use of similar refer(cid:173)
`ence numbers in different instances in the description and the
`figures may indicate similar or identical items.
`[0006] FIG. 1 is an illustration of an example environment
`having a computer system and contact detection device.
`[0007] FIG. 2 is a flow diagram depicting a procedure in an
`example implementation by which the tools may act to switch
`input modes based on a state change in tactile contacts.
`[0008] FIG. 3 is a flow diagram depicting a procedure in an
`example implementation by which the tools may act to ini-
`
`tiate a function in accordance with the tools' sub-mode based
`on movement of a contact input.
`[0009] FIG. 4 is a flow diagram depicting a procedure in an
`example implementation by which the tools may act to ini(cid:173)
`tiate a feedback function.
`
`DETAILED DESCRIPTION
`
`[0010] Overview
`[0011] More and more, computing systems are sold with
`contact input devices, such as a touch pad or a touch screen.
`These devices accept user input based on physical contact,
`such as tactile contact for one or more stylus or finger con(cid:173)
`tacts, with one or more contact detectors included in the touch
`pad. Current touch pads, however, are not well suited to many
`computing tasks and applications because they often cannot
`differentiate between enough different types of physical con(cid:173)
`tacts or require users to perform awkward gestures.
`[0012] This document describes an identifier module
`included with a contact detection device to identify or recog(cid:173)
`nize an electronic version of one or more tactile contacts
`represented in contact data obtained from contact detectors in
`the contact detection device. One or more contact state
`machines and a monitoring state machine are included with
`the identifier module to switch the identifier module's input
`mode, which controls which gestures that the identifier mod(cid:173)
`ule can identifY. The contact state machines and/or monitor(cid:173)
`ing state machine may receive and watch the contact data for
`a change in a number of tactile contacts and characteristics of
`the tactile contacts represented in the contact data. In
`response to a change represented in contact data, each contact
`state machine may determine to change state. The monitoring
`state machine monitors the state of the contact state machine
`to determine when the contact state machine changes state.
`The monitoring state machine changes the identifier module's
`input mode in response to the contact state machine changing
`state.
`[0013]
`In at least this way, the monitoring state machine
`determines what gestures the identifier module may identify.
`If a person contacts the contact detection device with two
`fingertips, the identifier module may identify which gesture is
`appropriate or intended by a user that made the tactile con(cid:173)
`tacts to the contact detection device based on the input mode.
`Thus, when identifying gestures, the identifier module may
`analyze individual tactile contacts based on the identifier
`module's input mode or sub-mode. By treating individual
`tactile contacts differently based on the input mode or sub(cid:173)
`mode, the identifier module can distinguish combinations of
`tactile contacts. This feature permits the identifier module to
`identify gestures from multiple tactile contacts without inter(cid:173)
`fering with the identifier module's ability to identifY gestures
`from a single tactile contact.
`[0014] An environment in which the tools may enable these
`and other actions is set forth below in a section entitled
`"Example Operating Environment." This is followed by
`another section describing "Example Techniques." This over(cid:173)
`view, including these section titles and snnnnaries, is pro(cid:173)
`vided for the reader's convenience and is not intended to limit
`the scope of the claims or the entitled sections.
`[0015] Example Operating Environment
`[0016] FIG. 1 references a computing system 100 with a
`multi-input system 102 including an identifier module 104
`that identifies gestures input by a user and detected by one or
`more contact detectors 106 (shown integrated with a display
`107) included in a contact detection device 108. Upon iden-
`
`Petitioner Samsung Ex-1005, 0006
`
`
`
`US 2009/0284478 AI
`
`Nov. 19, 2009
`
`2
`
`tifYing the gestures, the identifier module 104 initiates an
`application 110 to provide the function (e.g., zooming) that is
`mapped to the gestures. Functions include inputting data,
`manipulating data, changing a display (e.g., pan, zoom, and
`rotate), providing audio, and the like.
`[0017] Various systems and devices may benefit from the
`multi-input system 102, such as media players, remote con(cid:173)
`trols, smart phones, personal digital assistants, personal audio
`devices, global positioning systems, Internet appliances,
`wireless connectivity devices, vehicle control systems,
`vehicle entertainment systems, tablet computers, laptop com(cid:173)
`puters, standalone input and/or output devices, and the like.
`Note that the multi-input system 102 may be separate from or
`integral with the contact detection device 108 and that a
`display and the contact detection device 108 may be separate
`or combined. Note also that the multi-input system 102 com(cid:173)
`prises or has access to computer-readable media on which
`various applications, software, or other executable instruc(cid:173)
`tions may be stored.
`[0018]
`In some embodiments, the multi-input system 102 is
`operating system (OS) specific. When the multi-input system
`is OS specific, the multi-input system 102 provides functions
`that are specific to the OS and various applications (e.g., the
`application 110) configured for use with the OS. In other
`embodiments, the multi-input system 102 is configured for a
`specific application. The OS or a module within the OS may
`act as an intermediary between the multi-input system 102
`and the application 110.
`In the example environment of FIG. 1, the multi(cid:173)
`[0019]
`input system 102 is included in the contact detection device
`108. As illustrated, the contact detectors 106 are included in
`the contact detection device 108 and are integrated with the
`display 107 (e.g., a liquid crystal display screen). The indi(cid:173)
`vidual contact detectors may be configured to detect multiple
`physical, tactile contacts, such as a first tactile contact 112 and
`a second tactile contact 114. Multiple individual contact
`detectors may identifY a tactile contact (e.g., a first contact
`detector detects a first tactile contact while a second contact
`detector detects a second tactile contact). The contact detec(cid:173)
`tors 106 may be aligned with the pixels in a column/row
`configuration or otherwise.
`[0020] The contact detectors 106 may be configured to
`detect an x-y position, i.e., a two-dimensional position, of the
`tactile contact. The contact detectors may also detect, for
`example, duration of contact (whether static or moving), con(cid:173)
`tact pressure, contact height, contact width, bounding box for
`multiple contacts, rate of positional change, angular orienta(cid:173)
`tion, contact vectors, movement of the contact, and other
`information set forth herein.
`[0021]
`In some embodiments, an input controller 116 is
`included in the multi-input system 102 to convert the contact
`detector output (e.g., the electrical signals from the contact
`detectors) into contact data. For instance, the input controller
`116 includes appropriate hardware/software for converting
`the contact detector output into contact data that is usable by
`the multi-input system 102. In other embodiments, the input
`controller 116 can be included in the multi-input system 102,
`contained in a separate module, or performed by a general
`purpose processor loaded with firmware or software for con(cid:173)
`verting contact detector output into contact data.
`[0022] The identifier module 104 may heuristically iden(cid:173)
`tifY or recognize gestures from the contact data, such as for
`text recognition. Thus, if a user previously arched his/her
`lines, the identifier module 104 heuristically interprets the
`
`contact data when identifYing gestures to identifY the straight
`line. If the gestures are mapped to a function, the identifier
`module 104 initiates the mapped function upon identifying
`the gestures.
`[0023] For example, the identifier module 104 may com(cid:173)
`bine contact data that indicates physical contact with contact
`detectors included in the contact detection device at x-y posi(cid:173)
`tions to identify a straight line. If a straight line is mapped to
`a function, the identifier module 104 initiates the function. In
`response, the application 110 provides the initiated function.
`[0024] The identifier module 104 may also identifY ges(cid:173)
`tures from contact data within a pre-defined range rather than
`heuristically identifying the gestures. As a result, the identi(cid:173)
`fier module 104 identifies gestures that are within tolerance
`but does not use heuristic techniques. The identifier module's
`range or tolerance can be selected to avoid or minimize misi(cid:173)
`dentification.
`[0025] The identifier module 104 may also or instead use a
`library 118 storing a lookup table to identify the gestures from
`the contact data. For example, the identifier module 104 may
`identify the gestures by comparing contact data with sample
`contact data or parameters included in the lookup table to
`initiate the mapped function.
`[0026] Exemplary physical gestures and mapped functions
`include, but are not limited to:
`
`TABLE 1
`
`Exemplary Gestures/Mapped Function
`
`Tactile Contacts - Contact Data Represents
`
`Gesture
`
`Mapped
`Fnnction
`
`Zoom Out
`
`Zoom Out
`
`Zoom In
`
`Zoom In
`
`Pan
`
`Pinch
`
`Modified
`Pinch
`
`Spread
`
`Modified
`Spread
`
`First and second tactile contacts that both
`move and converge along a common axis
`First tactile contact stationary and second
`tactile contact moves toward first tactile
`contact
`First and second tactile contacts that both
`move and diverge along a common axis
`First tactile contact stationary and second
`tactile contact moves away from first tactile
`contact
`Double
`Both first and second tactile contacts move
`perpendicularly to an axis extending through Slide
`the initial contact points of the first and
`second tactile contacts
`Two momentary and stationary tactile
`contacts
`First tactile contact detected and
`sequentially a second tactile contact is
`detected, neither tactile contact is moving
`Two tactile contacts dwell and are
`positioned with respect to a map
`
`Two-Finger Double Click
`tap
`Sequential
`Tap
`
`Right Click
`
`Two tactile contacts are side-by-side, both
`move diagonally
`
`Two-Finger Route Find
`Press-and-
`(map
`Hold
`directions)
`Flip 3D-
`Diagonal
`view re-
`Double
`Slide
`arrangement
`Two tactile contacts rotating around a center Two-Finger Rotate View
`point
`Rotate
`Four-Finger Launch
`Four momentary and stationary tactile
`Tap
`Application
`contacts
`
`[0027] The multi-input system 102 switches or controls the
`identifier module's input mode based on the number of tactile
`contacts represented in the contact data and/ or other informa(cid:173)
`tion, such as characteristics of the tactile contacts. By switch(cid:173)
`ing identifier module input modes, the multi-input system
`102 determines what gestures can be identified and thus what
`functions can be initiated. Additionally, by switching input
`modes, the identifier module may initiate a large number of
`
`Petitioner Samsung Ex-1005, 0007
`
`
`
`US 2009/0284478 AI
`
`Nov. 19, 2009
`
`3
`
`functions in comparison to the number of tactile contacts
`associated with the functions, misidentification can be
`avoided, and basic tactile contacts can be reused.
`[0028] For example, when the identifier module 104 is in
`single-input mode, the identifier module 104 is prohibited
`from identifYing more than one tactile contact. In this manner,
`inadvertent physical contact with the contact detectors 106
`does not initiate a function.
`[0029]
`In some cases, such as when multiple tactile con(cid:173)
`tacts are represented in the contact data, the identifier mod(cid:173)
`ule's input mode is based on the number of tactile contacts
`present in the contact data. Thus, the identifier module iden(cid:173)
`tifies three tactile contacts when the identifier module's input
`mode is set to identifY three tactile contacts.
`[0030] One or more contact state machines 120 and a moni(cid:173)
`taring state machine 122 may be included in the multi-input
`system 102 to switch or determine the identifier module's
`input mode. The contact state machines 120 (e.g., multiple
`instances of the contact state machine, one for each tactile
`contact) may watch the input controller 116 for contact data
`that indicates a change in the number of tactile contacts (e.g.,
`the addition of a tactile contact or removal of a tactile contact)
`represented in the contact data. Each contact state machine
`120 may change state in response to its tactile contact chang(cid:173)
`ing state (as represented in the contact data).
`[0031]
`In some embodiments, each tactile contact has its
`own instance of a contact state machine. Thus, a first finger
`may have a first contact state machine and a second finger a
`second contact state machine. In these cases, the monitoring
`statement machine 122 monitors the state of the contact state
`machines 120 to determine when each contact state machine
`120 changes state. Each of the contact state machines 120
`may change state when the particular tactile contact changes
`state.
`[0032] Thus, the monitoring state machine 122 monitors
`the change in the number of tactile contacts by monitoring the
`state of the contact state machines 120. Upon determining
`that the contact state machines 120 has changed state and the
`change in the number of tactile contacts, the monitoring state
`machine 122 switches the identifier module's input mode
`from a previous input mode to a current input mode.
`[0033] For example, when a user makes a pinching gesture,
`a user may contact the contact detection device 108 with
`his/her thumb before contacting the contact detection device
`108 with his/her forefinger. In this scenario, the contact state
`machine 120 for the thumb changes state when the user origi(cid:173)
`nally contacts the contact detection device 108 with his/her
`thumb. The contact state machine 120 for the forefinger may
`change state when the user presses his/her forefinger against
`the contact detection device 108. In response to these state
`changes and the number of contacts change, the monitoring
`state machine 122 changes the identifier module's input
`mode.
`[0034] Note also that the contact state machines 120 may
`differ, in some embodiments. For example, a first contact state
`machine for a first or primary tactile contact (e.g., a forefin(cid:173)
`ger) may be backward compatible with single-finger input
`modes and scenarios, such as touch widget, flicks, and
`double-tap support. Other state machines may also have this
`compatibility or they may not. Further, contact state machines
`for non-first or non-primary tactile contacts may have addi(cid:173)
`tional or different logic, such as logic that relates to a second
`contact but that would not pertain to a first or primary contact
`(e.g., for gestures where a second finger's actions are deter-
`
`minative for a gesture but do not pertain to a first finger's
`actions). This logic may also be included in a contact state
`machine for a first or primary tactile contact, though such
`logic may not be used in many situations.
`[0035] The monitoring state machine 122 may also switch
`the identifier module's input mode at a discrete time or on the
`occurrence of an additional event, such as when the contact
`detection device 108 detects a static tactile contact.
`[0036]
`In another example, the identifier module's input
`mode is set at a previous point-in-time or upon the occurrence
`of another event (e. g., one finger is stationary). In this way, the
`identifier module 104 may remain in single tactile contact
`mode because the input mode was set at a previous point-in(cid:173)
`time even though a user accidently contacts the contact detec(cid:173)
`tion device 108 with another finger. The identifier module 104
`may also identify two tactile contacts even though the user is
`currently touching the contact detection device 108 with three
`fingers because the identifier module's input mode was set to
`identify two tactile contacts at a previous point-in-time.
`[0037] The identifier module may also receive a user's
`selection (e.g., a mouse click) and, responsive to receiving the
`selection, refrain from entering another input mode.
`[0038] Turning again to the multi-input system 102, the
`system may include additional contact and monitoring state
`machines. For example, additional combinations of contact
`and monitoring state machines may be included for watching
`additional tactile contacts represented in the contact data. In
`these embodiments, the number of contact state machines and
`monitoring state machines in the multi-input system 102 cor(cid:173)
`responds to the number of tactile contacts that the contact
`detection device 108 can detect.
`[0039] The contact and monitoring state machines may be
`configured to switch or determine a sub-mode for the identi(cid:173)
`fier module 104. For example, when the identifier module 104
`is in multi-input mode, the monitoring state machine 122 may
`switch the identifier module 104 between sub-modes depend(cid:173)
`ing on a characteristic of the tactile contact (e.g., movement)
`as represented in the contact data.
`[0040] The contact state machine 120 (or instances of it)
`may change its state when one or more of the tactile contacts
`start moving. The monitoring state machine 122 switches the
`sub-mode of the identifier module 104 in response to the
`contact state machine 120 changing state. For instance, the
`monitoring state machine 122 switches the identifier module
`104 from a multi-input static sub-mode to a multi-input
`hybrid sub-mode when one of the tactile contacts moves
`while the other tactile contact remains fixed. In this case, the
`contact state machine 120 for the second tactile contact
`changes state in response to the second tactile contact begin(cid:173)
`ning to move. The monitoring state machine 122, monitoring
`the state of the contact state machine 120, switches the iden(cid:173)
`tifier module 104 to the hybrid sub-mode.
`[0041] For reference, Table 2 below lists sample input
`modes and sub-modes with corresponding tactile contacts.
`Additional input modes may be included based on the capa(cid:173)
`bilities of the contact detectors 106.
`
`TABLE2
`
`Example Tactile Contacts and Input Modes and Sub-Modes
`
`Input Modes/Sub-Modes
`
`Corresponding Tactile contact
`
`Zero Mode
`Single-Input Mode
`
`No Tactile Contact Detected
`Single Tactile Contact Detected
`
`Petitioner Samsung Ex-1005, 0008
`
`
`
`US 2009/0284478 AI
`
`Nov. 19, 2009
`
`4
`
`TABLE 2-continued
`
`Example Tactile Contacts and Input Modes and Sub-Modes
`
`Input Modes/Sub-Modes
`
`Corresponding Tactile contact
`
`Press and Hold Sub-Mode
`Moving Sub-Mode
`Multi-Input Mode
`Moving Sub-Mode
`Static Sub-Mode
`Hybrid Sub-Mode
`
`Current Tactile Contact Stationary
`Current Tactile Contact Moving
`Multiple Tactile Contacts Detected
`Current Tactile Contacts-Moving
`Current Inputs Stationary
`At Least One Input is Moving and at
`Least One Input is Stationary
`
`[0042] By changing input modes and sub-modes, the iden(cid:173)
`tifier module 104 can treat an individual tactile contact as a
`subset of the group when identifYing tactile contacts. In addi(cid:173)
`tion, by configuring the identifier module in this manner, the
`multi-input system 102 can identifY multiple tactile contacts
`represented in the contact data without impacting single tac(cid:173)
`tile contact identification. In other words, by configuring the
`identifier module 104 to identify tactile contacts with respect
`to a group (based on the identifier module's input mode),
`misidentification may be minimized or avoided and the multi(cid:173)
`input system may be backward compatible with applications
`that are not multi-input enabled. In this way, the identifier
`module's input mode determines what number of tactile con(cid:173)
`tacts can be identified within the group. Further, by configur(cid:173)
`ing the identifier module in this manner, basic tactile contacts,
`such a tap or a straight line, may be reused between input
`modes.
`[0043] These are not exhaustive. By way of example, the
`identifier module may initiate an initial function and continue
`that initial or subsequent function until interrupted by another
`function that stops the initial function. For example, the appli(cid:173)
`cation 110 may continue to pan with inertia after a pan gesture
`until a user triggers a stop function. In another example, the
`identifier module 104 causes the rate of the function to
`increase the longer the function is active (e.g., without being
`stopped). A user may stop the initial function by triggering a
`stop function. In another example, the multi -input system 102
`determines the extent of the initiated function based on a
`characteristic of the tactile contact-when the contact data
`indicates that the tactile contact was quick, based on a pre(cid:173)
`defined standard, the mapped function is performed in a rapid
`manner, also based on a predefined standard. Further still, the
`identifier module 104 may initiate an ancillary function in
`addition to a primary function. For example, while the iden(cid:173)
`tifier module 104 initiates a zoom function 124, the identifier
`module may additionally initiate a tool bar, an icon, or some
`other interactive graphical object that is associated with the
`primary function.
`[0044] The tools may perform other functions and actions
`as well. For example, a user may inadvertently provide or
`attempt to provide a tactile contact that exceeds the capacity
`of the application 110. In response, the identifier module 104
`may initiate a feedback function to alert a user to a condition
`or situation. If, for example, a user attempts to pan beyond the
`end of a web page, the identifier module 104 initiates a feed(cid:173)
`back function that alerts the user to the condition. In this
`instance, the application 110 signals the multi-input system
`102 that the initiated function exceeds the application's
`capacity. In response, the identifier module 104 initiates a
`feedback function so that the user is alerted to the situation.
`Exemplary feedback functions include, but are not limited to,
`
`jittering and distorting a display (e.g., appearing to stretch a
`document's text), a shaking zoom (zooming in and out rapidly
`to show that the limit of the zoom is reached), a shaking pan
`(panning in opposite directions rapidly to show that the limit
`of the pan is reached), and a window or frame alteration (e.g.,
`a window around a zoomed or panned display shaking, mov(cid:173)
`ing, or stretching when the limit of the zoom or pan is
`reached). By way of example, consider a feedback function
`where the window or frame aronnd a displayed map is panned
`beyond the limit of the application. In this case, when a user
`pans too far (either continuously or with inertia), the applica(cid:173)
`tion shows the farthest reachable edge of the map and then,
`with the feedback function, moves the frame or window on
`the computer screen in the direction of the pan. The moved
`frame or window may stay moved or snap back to its prior
`position, as if the frame or window was attached to its prior
`position on the screen with rubber bands or springs.
`[0045] Generally, any of the functions described herein can
`be implemented using software, firmware, hardware (e.g.,
`fixed-logic circuitry), manual processing, or a combination of
`these implementations. The terms "tool" or "tools" and
`"module" or "modules" as used herein generally represent
`software, firmware, hardware, whole devices or networks, or
`a combination thereof. In the case of a software implementa(cid:173)
`tion, for instance, these may represent program code that
`performs specified tasks when executed on a processor (e.g.,
`CPU or CPUs). The program code can be stored in one or
`more computer-readable memory devices, such as computer(cid:173)
`readable storage media. The features and techniques of the
`tools and modules are platform-independent, meaning that
`they may be implemented on a variety of commercial com(cid:173)
`puting platforms having a variety of processors.
`[0046] Example Techniques
`[0047] The following discussion describes various tech(cid:173)
`niques and procedures, which may be implemented in hard(cid:173)
`ware, firmware, software, or a combination thereof. The pro(cid:173)
`cedures are shown as a set of blocks that specifY operations
`performed by one or more entities, devices, modules, and/or
`the tools (e.g., identifier module 104 of FIG. 1) and are not
`necessarily limited to the orders shown for performing the
`operations by the respective blocks. A variety of other
`examples and sub-techniques are also contemplated.
`[0048] FIG. 2 depicts a procedure in an example implemen(cid:173)
`tation in which the tools switch between input modes based
`on contact data.
`[0049] Block 200 detects tactile contacts from an object
`(e.g., a user's finger or stylus) contacting a contact detection
`device and generates output that represents the detected tac(cid:173)
`tile contact(s). Thus, the tools generate an output that repre(cid:173)
`sents the user's physical interaction (e.g., tactile contact) with
`a tactile contact device (e.g., a touch pad). In one embodi(cid:173)
`ment, the tools detect input from a user touching his/her finger
`to one or more contact detectors included in the contact detec(cid:173)
`tion device. In some embodiments, the tools detect concurrent
`tactile contacts.
`[0050] Block 202 converts the tactile contacts to contact
`data based on the output from block 200. Contact data com(cid:173)
`prises