US2015363041A1PendingUtilityA1

Method and system of data input for an electronic device equipped with a touch screen

Assignee: ADONIT CO LTDPriority: Mar 27, 2012Filed: Aug 24, 2015Published: Dec 17, 2015
Est. expiryMar 27, 2032(~5.7 yrs left)· nominal 20-yr term from priority
G06F 3/0416G06F 3/044G06F 3/03545G06F 3/03547G06F 2203/04105G06F 3/041G06F 2203/04808G06F 2203/04104G06F 3/0447
43
PatentIndex Score
0
Cited by
0
References
0
Claims

Abstract

Systems and methods and non-transitory computer-readable media are disclosed for differentiating between stylus touches and non-stylus touches on a touchscreen device. A stylus emits a signal, received by the touchscreen device, and software selects a touch, the touch start event for which occurred near the time of the signal, and the size and location of which best fit filters, as being the touch made by the stylus. The software associates that touch with the stylus until the touch ends, or until the stylus emits a signal indicating that contact has ended. The signal may be mechanically generated audio, such as from the stylus contacting the screen, or electronic (audio, RF, IR), generated by the stylus upon detecting pressure or capacitive flux. This allows software to perform palm rejection filtering, to track one stylus or multiple styluses, and to ignore touches triggered by dirt, rain, and other environmental causes.

Claims

exact text as granted — not AI-modified
What is claimed is: 
     
         1 . A method for filtering touch event input, the method comprising:
 receiving at least one touch event,
 each touch event of the at least one touch event comprising a type, an identifier, and a timestamp; 
   selecting a subset of touch events from the at least one touch event;   adding a data node selected from each touch event of the subset of touch events to a queue of data nodes, each data node comprising a type, an identifier, and a timestamp;   receiving a contact event, the contact event comprising a timestamp;   when the contact event is a contact start event, then:
 selecting a set of data nodes from the queue of data nodes,
 wherein the type of each data node in the set of data nodes is a touch start type, and 
 the timestamp of each data node in the set of data nodes is within a predetermined duration of the timestamp of the contact event; and 
 
 when the set of data nodes is not null, then:
 selecting a data node from the set of data nodes, and 
 storing the identifier of the data node in an associated touch identifier. 
 
   
     
     
         2 . The method of  claim 1 , wherein the step of receiving a contact event comprises:
 receiving a stream of sensor events from a stylus, and   generating a contact event from the stream of sensor events, wherein the contact event comprises a type and a timestamp.   
     
     
         3 . The method of  claim 2 , wherein each sensor event of the stream of sensor events comprises a first sensor level and a second sensor level, and the step of generating a contact event comprises:
 comparing the first sensor level of the each sensor event to a first threshold level;   when the first sensor level exceeds the first threshold level and a contact flag is false, then:
 comparing the second sensor level of the each sensor event to a second threshold level, 
 when the second sensor level exceeds the second threshold level, then:
 setting the contact flag to true; 
 setting a timestamp of the contact event; and 
 setting the type of the contact event to be a contact start; 
 
 when the first sensor level does not exceed the first threshold level and a contact flag is true, then:
 setting the contact flag to false; 
 setting a timestamp of the contact event; and 
 setting the type of the contact event to be a contact end; 
 
 when the second sensor level does not exceed the second threshold level and a contact flag is true, then:
 setting the contact flag to false; 
 setting a timestamp of the contact event; and 
 setting the type of the contact event to be a contact end; and 
 
   wherein the first sensor level is based upon sensing capacitive flux, and   wherein the second sensor level is based upon sensing pressure.   
     
     
         4 . The method of  claim 1  further comprising:
 when the contact event is a contact end event, then clearing the associated touch identifier. 
 
     
     
         5 . The method of  claim 1  wherein the step of receiving at least one touch event further comprises:
 when the type of an each touch event of the at least one touch event is a touch end type, 
 and the identifier of the each touch event equals the associated touch identifier, then:
 clearing the associated touch identifier. 
 
 
     
     
         6 . The method of  claim 5 , wherein the touch event further comprises a position, and the data node further comprises a position, the method further comprising:
 after the step of clearing the associated touch identifier:
 saving the position of the data node in a previous touch end position value, and saving the timestamp of the data node in a previous touch end time value; 
   and after the step of storing the identifier of the data node:
 saving the position of the data node in a previous touch start position value; 
   and after the step of receiving at least one touch event and before the step of selecting a subset of touch events from the at least one touch event:
 when the type of a touch event of the at least one touch event is a touch start, then:
 when the time of the touch event is within a predetermined duration of the previous touch end time value, then:
 when the position of the touch event is within a predetermined first distance of the previous touch end position value, then: 
  when the previous touch start position value is within a predetermined second distance of the previous touch end position value, then: 
  storing the identifier of the touch event in the associated touch identifier. 
 
 
   
     
     
         7 . The method of  claim 1  where the step of selecting the subset of touch events from the at least one touch event comprises:
 when the associated touch identifier is null, then:
 when the type of the touch event is a touch start, then:
 selecting the touch event for the subset; 
 
 when the type of the touch event is a touch move, then:
 selecting the touch event for the subset; and 
 
 when the type of the touch event is a touch end, then:
 selecting the touch event for the subset; 
 
 
 when the associated touch identifier is not null, then:
 when the type of the touch event is a touch start, then:
 discarding the touch event; 
 
 when the type of the touch event is a touch move, then:
 when the identifier of the touch event
 does not match the associated touch identifier, then: 
 discarding the touch event; and 
 
 when the identifier of the touch event
 matches the associated touch identifier, then: 
 selecting the touch event for the subset; and 
 
 
 when the type of the touch event is a touch end, then:
 when the identifier of the touch event does not match the associated touch identifier, then:
 selecting the touch event for the subset. 
 
 
 
 
     
     
         8 . The method of  claim 7 , wherein the touch event further comprises size data,
 the method further comprising:
 when the associated touch identifier is null, and the type of the touch event is a touch start, then:
 when the size data of the touch event falls outside a size range, then:
 discarding the touch event. 
 
 
   
     
     
         9 . The method of  claim 1  wherein each touch event of the at least one touch event further comprises a position, and each data node further comprises a position, and the step of selecting a data node from the set of data nodes comprises:
 selecting a leftmost data node from the set of data nodes. 
 
     
     
         10 . A computer system comprising:
 one or more processors;   a communications receptor;   a touchscreen operatively coupled to the one or more processors;   a computer readable medium operatively coupled to the one or more processors; and   logic stored in the computer readable medium that,
 when executed from the computer readable medium by the one or more processors, causes the computer to filter touchscreen input by at least: 
   receiving at least one touch event,
 each touch event of the at least one touch event comprising a type, an identifier, and a timestamp; 
   selecting a subset of touch events from the at least one touch event;   adding a data node selected from each touch event of the subset of touch events to a queue of data nodes, each data node comprising a type, an identifier, and a timestamp;   receiving a contact event, the contact event comprising a timestamp;   when the contact event is a contact start event, then:
 selecting a set of data nodes from the queue of data nodes, wherein the type of each data node in the set of data nodes is a touch start type, and
 the timestamp of each data node in the set of data nodes is within a predetermined duration of the timestamp of the contact event; and 
 
 when the set of data nodes is not null, then:
 selecting a data node from the set of data nodes, and storing the identifier of the data node in an associated touch identifier. 
 
   
     
     
         11 . The system of  claim 10  where the communications receptor is selected from the group consisting of a Bluetooth transceiver, a microphone, a Wi-Fi transceiver, a USB port, and an infrared receiver. 
     
     
         12 . The system of  claim 10 , further comprising a stylus, wherein the stylus comprises:
 a first sensor, and a signal generator,   wherein the first sensor is electrically coupled to the signal generator, and   the signal generator periodically emits a signal,
 the signal comprising a reading of the first sensor. 
   
     
     
         13 . The system of  claim 12  where the first sensor is a pressure sensor. 
     
     
         14 . The system of  claim 12  where the first sensor is a capacitive flux sensor. 
     
     
         15 . The system of  claim 12 , wherein the first sensor is a pressure sensor, and wherein the stylus further comprises a capacitive flux sensor, and wherein the reading is a first reading, and wherein the signal emitted by the signal generator further comprises a second reading of the capacitive flux sensor. 
     
     
         16 . A non-transitory computer-readable medium storing computer-readable code thereon that provides, when executed by a computer, causes the computer to causes the computer to filter touchscreen input by at least:
 receiving at least one touch event,
 each touch event of the at least one touch event comprising a type, an identifier, and a timestamp; 
 selecting a subset of touch events from the at least one touch event; 
 adding a data node selected from each touch event of the subset of touch events to a queue of data nodes, each data node comprising a type, an identifier, and a timestamp; 
 receiving a contact event, the contact event comprising a timestamp; 
 when the contact event is a contact start event, then:
 selecting a set of data nodes from the queue of data nodes,
 wherein the type of each data node in the set of data nodes is a touch start type, and 
 the timestamp of each data node in the set of data nodes is within a predetermined duration of the timestamp of the contact event; and 
 
 when the set of data nodes is not null, then:
 selecting a data node from the set of data nodes, and storing the identifier of the data node in an associated touch identifier. 
 
 
   
     
     
         17 . The non-transitory computer-readable medium of  claim 16 , wherein the step of receiving a contact event comprises:
 receiving a stream of sensor events from a stylus, and   generating a contact event from the stream of sensor events, wherein the contact event comprises a type and a timestamp.   
     
     
         18 . The non-transitory computer-readable medium of  claim 17 , wherein each sensor event of the stream of sensor events comprises a sensor level, and the step of generating a contact event comprises:
 comparing the sensor level of the each sensor event to a threshold level,   when the sensor level exceeds a threshold level and a contact flag is false, then:
 setting the contact flag to true, 
 setting the timestamp of the contact event, and 
 setting the type of the contact event to be a contact start, and 
 calling a contact event handler. 
   when the sensor level does not exceed the threshold level and the contact flag is true, then:
 setting the contact flag to false, 
 setting the timestamp of the contact event, and 
 setting the type of the contact event to be a contact end, and 
 calling a contact event handler. 
   
     
     
         19 . The non-transitory computer-readable medium of  claim 18 ,
 wherein each sensor event of the stream of sensor events further comprises a stylus identifier,   wherein the contact event further comprises a stylus identifier, the method further comprising:   when the sensor level exceeds a threshold level and a contact flag is false, then
 setting the stylus identifier of the contact event to the stylus identifier of the sensor event; and 
   when the sensor level does not exceed a threshold level and a contact flag is true, then:
 setting the stylus identifier of the contact event to the stylus identifier of the sensor event. 
   
     
     
         20 . The non-transitory computer-readable medium of  claim 18 , where the sensor level is based upon sensing pressure. 
     
     
         21 . The non-transitory computer-readable medium of  claim 18 , where the sensor level is based upon sensing capacitive flux. 
     
     
         22 . The non-transitory computer-readable medium of  claim 17 , wherein each sensor event of the stream of sensor events comprises a first sensor level and a second sensor level, and the step of generating a contact event comprises:
 comparing the first sensor level of the each sensor event to a first threshold level;   when the first sensor level exceeds the first threshold level and a contact flag is false, then:
 comparing the second sensor level of the each sensor event to a second threshold level, 
 when the second sensor level exceeds the second threshold level, then:
 setting the contact flag to true; 
 setting a timestamp of the contact event; and 
 setting the type of the contact event to be a contact start; 
 
 when the first sensor level does not exceed the first threshold level and a contact flag is true, then:
 setting the contact flag to false; 
 setting a timestamp of the contact event; and 
 setting the type of the contact event to be a contact end; 
 
 when the second sensor level does not exceed the second threshold level and a contact flag is true, then:
 setting the contact flag to false; 
 setting a timestamp of the contact event; and 
 setting the type of the contact event to be a contact end; and 
 
 wherein the first sensor level is based upon sensing capacitive flux, and 
 wherein the second sensor level is based upon sensing pressure. 
   
     
     
         23 . The non-transitory computer-readable medium of  claim 22 , wherein each sensor event of the stream of sensor events
 further comprises a stylus identifier, and the contact event further comprises a stylus identifier, the method further comprising:
 when the second sensor level exceeds the second threshold level, then setting the stylus identifier of the contact event to the stylus identifier of the sensor event; and 
 when the first sensor level does not exceeds a threshold level and a contact flag is true, then:
 setting the stylus identifier of the contact event to the stylus identifier of the sensor event. 
 
   
     
     
         24 . The non-transitory computer-readable medium of  claim 16  further comprising:
 when the contact event is a contact end event, then clearing the associated touch identifier. 
 
     
     
         25 . The non-transitory computer-readable medium of  claim 16  wherein the step of receiving at least one touch event further comprises:
 when the type of an each touch event of the at least one touch event is a touch end type, and the identifier of the each touch event equals the associated touch identifier, then:
 clearing the associated touch identifier. 
 
 
     
     
         26 . The non-transitory computer-readable medium of  claim 16  where the step of selecting the subset of touch events from the at least one touch event comprises:
 when the associated touch identifier is null, then:
 when the type of the touch event is a touch start, then:
 selecting the touch event for the subset; 
 
 when the type of the touch event is a touch move, then:
 selecting the touch event for the subset; and 
 
 when the type of the touch event is a touch end, then:
 selecting the touch event for the subset; 
 
 
 when the associated touch identifier is not null, then:
 when the type of the touch event is a touch start, then:
 discarding the touch event; 
 
 when the type of the touch event is a touch move, then:
 when the identifier of the touch event does not match the associated touch identifier, then:
 discarding the touch event; and 
 
 when the identifier of the touch event matches the associated touch identifier, then:
 selecting the touch event for the subset; and 
 
 
 when the type of the touch event is a touch end, then:
 when the identifier of the touch event does not match the associated touch identifier, then:
 selecting the touch event for the subset. 
 
 
 
 
     
     
         27 . The non-transitory computer-readable medium of  claim 26 , wherein the touch event further comprises size data,
 the method further comprising:
 when the associated touch identifier is null, and the type of the touch event is a touch start, then:
 when the size data of the touch event falls outside a size range, then:
 discarding the touch event. 
 
 
   
     
     
         28 . The non-transitory computer-readable medium of  claim 16  wherein each touch event of the at least one touch event further comprises a position, and each data node further comprises a position, and the step of selecting a data node from the set of data nodes comprises:
 selecting a leftmost data node from the set of data nodes. 
 
     
     
         29 . The non-transitory computer-readable medium of  claim 16  further comprising, after the step of receiving a contact event and before the step of selecting the subset of touch events:
 delaying by a predetermined interval. 
 
     
     
         30 . The non-transitory computer-readable medium of  claim 25 , wherein the touch event further comprises a position, and the data node further comprises a position, the method further comprising:
 after the step of clearing the associated touch identifier:
 saving the position of the data node in a previous touch end position value, and saving the timestamp of the data node in a previous touch end time value; 
   and after the step of storing the identifier of the data node:
 saving the position of the data node in a previous touch start position value; 
   and after the step of receiving at least one touch event and before the step of selecting a subset of touch events from the at least one touch event:
 when the type of a touch event of the at least one touch event is a touch start, then:
 when the time of the touch event is within a predetermined duration of the previous touch end time value, then:
 when the position of the touch event is within a predetermined first distance of the previous touch end position value, then: 
  when the previous touch start position value is within a predetermined second distance of the previous touch end position value, then: 
  storing the identifier of the touch event in the associated touch identifier.

Join the waitlist — get patent alerts

Track US2015363041A1 — get alerts on status changes and closely related new filings.

We store only your email — no account needed. See our privacy policy.