1. Field
This disclosure relates generally to detecting input, and more specifically, but not exclusively, to detecting gestures.
2. Description
Many computing devices accept user input from a wide range of input devices. For example, many mobile devices accept user input from touch screens that display virtual keyboards. Additionally, many computing devices accept user input from physical keyboards. As users use the mobile devices in additional environments, the users may inadvertently enter erroneous input. For example, users may select keys along the edge of a keyboard while holding a mobile device.
The following detailed description may be better understood by referencing the accompanying drawings, which contain specific examples of numerous features of the disclosed subject matter.
According to embodiments of the subject matter discussed herein, a computing device can detect gestures. A gesture, as referred to herein, includes any suitable movement, action, and the like that corresponds to input for a computing device. For example, a gesture may include a keystroke on a keyboard, or a movement captured by sensors, among others. In some embodiments, a gesture may include erroneous input and intended input. Erroneous input, as referred to herein, includes any keystrokes, selections on touch screen devices, or any other input that was inadvertently entered by a user. For example, a user may hold a mobile device, such as a tablet, or a cell phone, among others, and the user may rest fingers along the edge of the mobile device. As a result, the user may inadvertently generate user input by selecting a key from a keyboard, among others. Intended input, as referred to herein, includes any keystrokes, selections on a touch screen device, or any other input that a user expects to be detected by a computing device.
In some examples, the computing device can detect the pressure and the velocity that corresponds with each selection of user input. For example, the computing device may detect that any suitable number of keys have been pressed on an input device. The computing device may also determine that the velocity of one of the key presses was higher than the velocity of the additional key presses. Therefore, the computing device may determine that the keys pressed with a level of pressure and a low level of velocity may be erroneous input.
Reference in the specification to “one embodiment” or “an embodiment” of the disclosed subject matter means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the disclosed subject matter. Thus, the phrase “in one embodiment” may appear in various places throughout the specification, but the phrase may not necessarily refer to the same embodiment.
The processor 102 may also be linked through the system interconnect 106 (e.g., PCI®, PCI-Express®, HyperTransport®, NuBus, etc.) to a display interface 108 adapted to connect the computing device 100 to a display device 110. The display device 110 may include a display screen that is a built-in component of the computing device 100. The display device 110 may also include a computer monitor, television, or projector, among others, that is externally connected to the computing device 100. In addition, a network interface controller (also referred to herein as a NIC) 112 may be adapted to connect the computing device 100 through the system interconnect 106 to a network (not depicted). The network (not depicted) may be a cellular network, a radio network, a wide area network (WAN), a local area network (LAN), or the Internet, among others.
The processor 102 may be connected through a system interconnect 106 to an input/output (I/O) device interface 114 adapted to connect the computing device 100 to one or more I/O devices 116. The I/O devices 116 may include, for example, a keyboard and a pointing device, wherein the pointing device may include a touchpad or a touchscreen, among others. The I/O devices 116 may be built-in components of the computing device 100, or may be devices that are externally connected to the computing device 100.
The processor 102 may also be linked through the system interconnect 106 to a storage device 118 that can include a hard drive, an optical drive, a USB flash drive, an array of drives, or any combinations thereof. In some embodiments, the storage device 118 can include a gesture module 120 that can detect any suitable gesture from an input device 116. In some examples, the gesture may include a set of input that corresponds to any suitable number of keystrokes or selections of a touchscreen display device, among others. In some embodiments, the gesture module 120 can also detect a measurement for each detected gesture. A measurement, as referred to herein, includes the pressure and/or velocity that correspond to a gesture such as a keystroke or selection of a touchscreen device, among others. In some examples, the gesture module 120 may detect more than one measurement that corresponds to a set of input included in a detected gesture. The gesture module 120 may use a measurement for each detected gesture to determine if a user entered an erroneous input. For example, a user may have rested a hand on a keyboard while typing, which could have resulted in a gesture module 120 detecting multiple key selections despite a user intending to select a single key.
In some embodiments, the gesture module 120 can determine if a gesture includes erroneous input by comparing the detected gesture and the measurements for the detected gesture with patterns stored in input storage 122. A pattern, as referred to herein, can include any previously detected gesture, any number of measurements associated with the previously detected gesture, and an indication of erroneous input and/or intended input included in the previously detected gesture. As discussed above, erroneous input can include any keystrokes, selections on touch screen devices, or any other input that was inadvertently entered by a user. For example, a user may hold a mobile device, such as a tablet, or a cell phone, among others, and the user may rest fingers along the edge of the mobile device. As a result, the user may inadvertently generate user input by selecting a key from a keyboard, among others. Intended input can include any keystrokes, selections on a touch screen device, or any other input that a user expects to be detected by a computing device. In some examples, the patterns stored in input storage 122 may indicate that the selection of a set of keys on a keyboard may include a subset of erroneously selected keys. In some examples, the subset of erroneously selected keys can result from a user inadvertently selecting keys while entering input on an I/O device 116. The gesture module 120 can compare detected gestures to the previously stored patterns of input to determine if the detected gesture includes erroneous input.
In some embodiments, the gesture module 120 can also send a detected gesture with corresponding measurements to a machine learning module 124. The machine learning module 124, which can reside in the storage device 118, may implement machine learning logic to analyze the detected gestures and determine if a previously detected pattern includes intended input. The machine learning module 124 is described in greater detail below in relation to
In some embodiments, the storage device 120 may also include a sequence module 126 that can detect a series of gestures and perform various tasks such as automatically correcting the spelling of a word, predicting the word that is being entered, or generating a command, among others. The sequence module 126 can also assign a function to any suitable sequence of gestures. For example, the sequence module 126 can detect a sequence of gestures that correspond to modifying the amount of a display device that displays an application, or modifying settings such as audio and video settings, among others. In some embodiments, the sequence module 126 can also detect a sequence of gestures that can be used for authentication purposes. For example, the sequence module 126 may enable access to the computing device 100 in response to detecting a sequence of gestures.
It is to be understood that the block diagram of
At block 202, the gesture module 120 can detect gestures from an input device. As discussed above, a gesture can include any suitable selection from an input device such as a selection of a key from a keyboard, or a selection of a portion of a touch screen device, among others. In some embodiments, the gesture module 120 can detect any suitable number of gestures simultaneously or within a predefined period of time. For example, a gesture module 120 may detect that any suitable number of gestures entered within a predetermined period of time are to be considered together as a set of gestures.
At block 204, the gesture module 120 can detect a set of measurements that correspond to the detected gestures. In some embodiments, the measurements can include any suitable velocity and/or pressure associated with each gesture. For example, each measurement can correspond to a key selected on a keyboard or a portion of a touch screen device that has been selected, among others. The measurements can indicate the amount of force applied with a gesture. In some examples, the gesture module 120 may use a measurement threshold value to determine if the amount of pressure and/or velocity indicates a selection of a gesture. For example, a key on a keyboard may be pressed lightly so the pressure on the key does not exceed the measurement threshold value. In some examples, any suitable number of gestures may exceed the measurement threshold value and any suitable number of gestures may not exceed the pressure threshold value.
At block 206, the gesture module 120 can detect that the detected gesture and set of measurements correspond to a stored pattern. In some examples, gesture module 120 can compare the detected gesture and set of measurements to previously identified gestures stored in the input storage 122. For example, the gesture module 120 can detect a stored pattern that matches the set of gesture pressures or is within a predetermined range. In some embodiments, the stored pattern may include any suitable number of measurements, such as a pressure and velocity, for any number of inputs included in a gesture. For example, a stored pattern may correspond to a gesture with multiple keystrokes, wherein each keystroke includes a separate velocity and pressure. The stored pattern may also include any number of intended inputs and erroneous inputs. Each stored pattern related to a gesture and corresponding measurements can indicate any suitable number of intend inputs and erroneous inputs. For example, the gesture module 120 may detect multiple keys have been selected on a keyboard, and determine the keys that correspond to intended input and the keys that correspond to erroneous input. In some embodiments, the gesture module 120 detects the intended inputs and erroneous input using machine learning logic described in further detail below in relation to
At block 208, the gesture module 120 can return an intended input from the gestures based on the stored pattern. In some examples, the gesture module 120 may have previously detected a set of gestures and determined that the set of gestures included erroneous input and intended input. In some examples, a gesture with a greater velocity or pressure may indicate that the gesture was intended. However, a gesture with a slower velocity or pressure may indicate that the gesture was erroneous. In some examples, the erroneous input may have a slower velocity due to a user inadvertently selecting an input while holding a computing device such as a tablet or a mobile device, among others. In one example, the set of gestures may indicate that a keyboard has detected an “a” “q” and “g” selection. The “a” key may not have been selected with enough pressure to exceed a pressure threshold. However, the “q” and “g” keys may have been selected with a pressure that exceeds a pressure threshold. The gesture module 120 may store the pattern of “a” “q” and “g” selections with similar pressure as a “g” and “q” key stroke. In some examples, the gesture module 120 may also determine that selections detected by an input/output device may exceed a measurement threshold, but the selections may be erroneous input. In the previous example, the “q” key may be selected with less pressure than the “g” key, which indicates that the “q” key was an erroneous input. The gesture module 120 may then store “g” as intended input if the “a” “g” and “q” keys are selected but the measurement associated with the “a” key is below a threshold and the measurement associated with the “q” key is smaller than the measurement for the “g” key.
In some examples, the gesture module 120 can also detect erroneous input and intended input from touch screen devices. Furthermore, the gesture module 120 may determine any suitable number of intended inputs and any suitable number of erroneous inputs from a set of gestures.
The process flow diagram of
At block 302, the machine learning module 124 can initialize neurons. In some embodiments, the machine learning module 124 is initialized with example gestures. For example, the machine learning module 124 may receive any suitable number of example gestures and the corresponding erroneous input and intended input. In some examples, the machine learning module 124 may utilize any suitable machine learning technique to detect erroneous input and intended input. In some examples, the machine learning module 124 can load a library as the default initialization of neurons. The machine learning module 124 may then detect the differences between gestures from a user and the library. Alternatively, the machine learning module 124 can also request users to enter gestures and match each gesture with an intended keystroke.
At block 304, the machine learning module 124 can detect gestures. In some embodiments, the machine learning module 124 may receive a single gesture that can include any suitable number of input such as key selections, selections of touch screen devices, and any other suitable input. The machine learning module 124 may also receive a series of gestures that may correspond to a function or a task that is to be performed. In some examples, the series of gestures may correspond to authenticating a user of a computing device, or modifying the settings of computing device, among others.
At block 306, the machine learning module 124 can determine if the detected gesture includes intended input. For example, the machine learning module 116 may detect any suitable number of gestures within stored patterns. In some embodiments, the stored patterns correspond to previously detected gestures that include intended input and erroneous input. In some examples, the machine learning module 124 can detect that the detected gesture is a match for a previously detected gesture based on similar measurements such as pressure and velocity. For example, a number of keystrokes captured as a gesture may correspond to keystrokes in a previously detected gesture. In some embodiments, each previously detected gesture can correspond to a similarity value and the previously detected gesture with a similarity value above a threshold can be returned as a match. The similarity value can include the difference in pressure and/or velocity between the detected gesture and a previously detected gesture. In some examples, the machine learning module 124 can detect intended input by monitoring if a detected gesture is followed by a delete operation. In some embodiments, the machine learning module 124 can store the gesture entered following a delete operation as intended input.
If the machine learning module 124 determines that the detected gesture includes intended input, the process flow continues at block 310. If the machine learning module 124 determines that the detected gesture does not include intended input, the process flow continues at block 308.
At block 308, the machine learning module 124 determines if the detected gesture includes dead space. Dead space, as referred to herein, can include any suitable portion of an input device that receive continuous contact but does not correspond with input. In some examples, the machine learning module 124 can detect that portions of an input device 118 have been selected unintentionally and the portions of the input device 118 include erroneous input. In one example, the dead space may correspond to a user resting a hand on a keyboard or touchscreen device, among others. In some embodiments, the machine learning module 124 can modify the portions of an input device 118 designated as dead space based on the measurements from the dead space. For example, the machine learning module 124 may determine that an area of an input device previously designated as dead space receives a selection with a pressure below a threshold. The machine learning module 124 can then detect input from the area of the input device previously designated as dead space.
If the machine learning module 124 determines that the detected gesture includes dead space, the process flow modifies the gesture module 120 to recognize the dead space at block 312 and the process flow ends at block 314. If the machine learning module 124 determines that the detected gesture does not include dead space, the process flow ends at block 314.
At block 310, the machine learning module 124 can modify stored patterns based on the detected gesture. For example, the machine learning module 124 can determine that a modification of a previously detected gesture has been selected multiple times. In some embodiments, the machine learning module 124 can modify the stored pattern to reflect the modification. For example, a previously detected pattern corresponding to the selection of one or more keystrokes may be modified so that additional keystrokes are included as erroneous input. In some embodiments, the machine learning module 124 can modify the previously detected patterns to reflect a change in the operating environment of a computing device. For example, the machine learning module 124 may detect that additional selections are included in a gesture based on the angle of a computing device or if the computing device is currently in motion. In some embodiments, the machine learning module 124 can detect the operating environment of a computing device based on data received from any suitable number of sensors such as accelerometers, gyrometers, compasses, and GPS devices, among others.
At block 316, the machine learning module 124 can return the intended input. For example, the machine learning module 124 can separate the detected gesture into intended input and erroneous input based on a stored pattern. The machine learning module 124 can also discard the erroneous input and return the intended input. The process flow ends at block 314.
The process flow diagram of
The example chart 400 illustrated in
In some embodiments, the gesture module 120 can detect dead space based on keystrokes with a pressure above a threshold and a velocity below a threshold. For example, the keystrokes “j”, “k”, “I”, and “;” have pressure measurements that exceed a threshold while the velocity measurements are below the threshold. In some embodiments, the gesture module 120 may detect that keystrokes or detected gestures with both pressure and velocity measurements above a threshold include intended input. For example, the “e” keystroke in
The chart depicted in
The various software components discussed herein may be stored on the tangible, non-transitory, computer-readable medium 500, as indicated in
It is to be understood that any suitable number of the software components shown in
The processor 602 may also be linked through the system interconnect 606 (e.g., PCI®, PCI-Express®, HyperTransport®, NuBus, etc.) to a display interface 608 adapted to connect the computing device 600 to a display device 610. The display device 610 may include a display screen that is a built-in component of the computing device 600. The display device 610 may also include a computer monitor, television, or projector, among others, that is externally connected to the computing device 600. In addition, a network interface controller (also referred to herein as a NIC) 612 may be adapted to connect the computing device 600 through the system interconnect 606 to a network (not depicted). The network (not depicted) may be a cellular network, a radio network, a wide area network (WAN), a local area network (LAN), or the Internet, among others.
The processor 602 may be connected through a system interconnect 606 to an input/output (I/O) device interface 614 adapted to connect the computing device 600 to one or more gesture devices 616. The gesture device 616, as referred to herein, includes any suitable device that can detect input based on sensor data. For example, a gesture device may include devices with sensors worn around any suitable portion of a user such as fingers, wrists, ankles, and the like. In some embodiments, the gesture device 616 may detect data from any number of sensors that correspond to input. The gesture device 616 may detect data that corresponds to simulated keystrokes, simulated actions related to musical instruments, or simulated actions related to functions, among others. In some embodiments, an I/O device interface 614 may detect data from multiple gesture devices 616. For example, any suitable number of gesture devices 616 may be worn on a user's hand when detecting simulated keystrokes or any other suitable input. The gesture device 616 is described in greater detail below in relation to
The processor 602 may also be linked through the system interconnect 606 to a storage device 620 that can include a hard drive, an optical drive, a USB flash drive, an array of drives, or any combinations thereof. In some embodiments, the storage device 620 can include an input module 622. The input module 622 can detect any suitable gesture from the gesture device 616. In some examples, the gesture may include any number of movements or actions associated with input. In some embodiments, the input module 622 can also detect a measurement for each gesture or set of input. As discussed above, a measurement can include the pressure and/or velocity that correspond to a gesture or any other input. In some examples, the measurement may also include the location of a gesture device 616. The input module 622 may use the measurement for each detected gesture or input to determine if a user entered an erroneous keystroke. For example, the gesture device 616r may have moved to a different location or orientation which may cause the data detected by the gesture device 616 to be modified or skewed.
In some embodiments, the storage device 620 can include a gesture module 624 that can detect the input and the measurements from the input module 622. In some embodiments, the gesture module 624 can compare the detected input and the measurements for the detected input with previously detected input stored in input storage 620. In some examples, the storage device 620 may also include input storage 624 that can store previously detected patterns of input and the corresponding erroneous input. For example, the patterns stored in input storage 624 may indicate that the simulated selection of keystrokes may include a subset of erroneously selected keys. In some examples, the subset of erroneously selected keys can result from a user inadvertently selecting keys while entering input on a gesture device 616. For example, the gesture device 616 may detect simulated keystrokes at a modified angle of operation that can result in erroneous input. In some embodiments, the gesture module 624 can compare detected input from a gesture device 616 to previously stored patterns of input to determine if the detected input includes erroneous input. In some embodiments, the gesture module 624 can implement machine learning logic to analyze the detected input and determine if a previously detected pattern includes the intended input. The machine learning logic is described in greater detail above in relation to
In some embodiments, the storage device 620 may also include a sequence module 626 that can detect a series of gestures and perform various tasks such as automatically correcting the spelling of a word, predicting the word that is being entered, or generating a command, among others. The sequence module 626 can also assign a function to any suitable sequence of gestures. For example, the sequence module 626 can detect a sequence of gestures that correspond to modifying the amount of a display device that displays an application, or modifying user settings such as audio and video settings, among others. In some embodiments, the sequence module 626 can also detect a sequence of gestures that can be used for authentication purposes. For example, the sequence module 626 may enable access to the computing device 600 in response to detecting a sequence of gestures.
It is to be understood that the block diagram of
In some embodiments, the gesture device 616 may detect a location and velocity of a gesture, but the gesture device 616 may not detect a pressure corresponding to a gesture. For example, the gesture device 616 may detect a gesture that does not include the gesture device 616 coming into contact with a surface. In some examples, the gesture device 616 may generate a reference point or a reference plane in three dimensional space when detecting a gesture. For example, the gesture device 616 may determine that the gesture device 616 operates at an angle to a plane in three dimensional space and may send the angle to the gesture module 624. In some embodiments, the gesture module 624 may use the angle of operation of a gesture device 616 to determine if a detected gesture matches a previously stored gesture. It is to be understood that the gesture device 616 can include any suitable number of additional modules and hardware components.
At block 802, the input module 622 can detect sensor data from a set of gesture devices. In some embodiments, the gesture devices 616 can include any suitable number of sensors. In some examples, the sensor data can indicate any suitable movement or action. For example, the sensor data can indicate a simulated keystroke, or a simulated selection of a touchscreen device, among others.
At block 804, the gesture module 624 can calculate a distance between each gesture device in the set of gesture devices. In some embodiments, the distance between the gesture devices can be calculated based on an amount of time that elapses during the transmission of data between two gesture devices. For example, the distance may be calculated by determining the amount of time to transmit any suitable amount of data using a protocol, such as Bluetooth®.
At block 806, the gesture module 624 can detect that the detected sensor data and the distance between each gesture device match a previously stored pattern. For example, the gesture module 624 may detect that a gesture that includes input from three gesture devices matches a previously detected gesture based on the location and velocity of the gesture devices. At block 808, the gesture module 624 can return intended input corresponding to the previously stored pattern. For example, the gesture module 624 may detect that the matching pattern includes intended input and erroneous input. The gesture module 624 may ignore the erroneous input and return the intended input as the input selection from the gesture.
The process flow diagram of
The various software components discussed herein may be stored on the tangible, non-transitory, computer-readable medium 900, as indicated in
It is to be understood that any suitable number of the software components shown in
The processor 1002 may also be linked through the system interconnect 1006 (e.g., PCI®, PCI-Express®, HyperTransport®, NuBus, etc.) to a display interface 1008 adapted to connect the computing device 1000 to a display device 10100. The display device 10100 may include a display screen that is a built-in component of the computing device 1000. The display device 1010 may also include a computer monitor, television, or projector, among others, that is externally connected to the computing device 1000. In addition, a network interface controller (also referred to herein as a NIC) 1012 may be adapted to connect the computing device 1000 through the system interconnect 1006 to a network (not depicted). The network (not depicted) may be a cellular network, a radio network, a wide area network (WAN), a local area network (LAN), or the Internet, among others.
The processor 1002 may be connected through a system interconnect 1006 to an input/output (I/O) device interface 114 adapted to connect the computing device 1000 to one or more I/O devices 1016. The I/O devices 1016 may include, for example, a keyboard and a pointing device, wherein the pointing device may include a touchpad or a touchscreen, among others. The I/O devices 1016 may be built-in components of the computing device 1000, or may be devices that are externally connected to the computing device 1000.
The processor 1002 may also be linked through the system interconnect 1006 to a storage device 1018 that can include a hard drive, an optical drive, a USB flash drive, an array of drives, or any combinations thereof. In some embodiments, the storage device 1018 can include an input module 1020. The input module 1020 can detect any suitable gesture. For example, the gesture may include any suitable selection of a touchscreen device or a keystroke, among others. In some examples, the input module 1020 can also detect a measurement for each detected gesture. A measurement can include the pressure and/or velocity that correspond to the gesture or any other input. In some examples, the input module 1020 can detect a change in voltage or current detected from any suitable pressure sensitive material in an I/O device 1016 such as resistive films and piezo based materials, among others.
In some embodiments, the storage device 1020 can also include a waveform module 1022 that can detect the input and the measurements from the input module 1018. The waveform module 1022 may also calculate a wave for each gesture or input based on measurements associated with the gesture or input over a period of time. In some embodiments, the waveform module 1022 can compare the detected input and the measurements for the detected input with stored patterns or waveforms in input storage 1024. The stored patterns or waveforms may include previously detected measurements, such as pressure and velocity, for an input over a period of time. In some examples, the storage device 1020 may also include input storage 1024 that can store previously detected patterns that correspond to input. For example, the input storage 1024 may include any suitable number of waveforms for any suitable number of inputs. In some embodiments, the waveform module 1022 can include machine learning logic that can modify the recognized waveforms in input storage 1024. For example, the waveform module 1022 may modify a stored pattern or waveform based on a detected modification to the pressure or velocity associated with an input. The machine learning logic is described in greater detail below in relation to
It is to be understood that the block diagram of
At block 1102, the waveform module 1022 can detect a first waveform corresponding to a first input. As discussed above, a waveform can include any suitable number of increases and/or decreases in a measurement corresponding with an input. In some examples, the measurement can include a pressure measurement or a velocity measurement. An input can include any suitable selection of a keyboard, touchscreen display, or any other input device. In some examples, a waveform for an input may indicate that a user enters a keystroke or touches a touchscreen display with a similar measurement such as pressure, velocity, or a combination thereof.
At block 1104, the waveform module 1022 can store the first waveform and the corresponding first input as the calibrated input. In some embodiments, the calibrated input can be used to determine if subsequent waveforms associated with subsequent input are to be ignored or the subsequent input is to be returned. In some examples, the waveform module 1022 can store the first waveform detected for an input as calibrated input.
At block 1106, the waveform module 1022 can determine that a second waveform and the first waveform do not match. In some examples, the waveform module 1022 can determine the second waveform and the first waveform do not match by comparing the two waveforms. For example, the waveform module 1022 may compute a value for the first waveform that corresponds to the measurements associated with the first waveform such as the changes in pressure and velocity over a period of time. In some embodiments, the waveform module 1022 can store the computed value for the first waveform and compare values for additional waveforms such as the second waveform to determine a match. If the waveform module 1022 determines that the second waveform and the first waveform match, the process flow continues at block 1110. If the waveform module 1022 determines that the second waveform and the first waveform do not match, the process flow continues at block 1108.
At block 1108, the waveform module 1022 can block a signal generated by the second input. In some examples, the waveform module 1022 blocks the signal generated by the second input to prevent erroneous input. For example, the waveform module 1022 may block the signal for keystrokes or selections of a touchscreen display that do not match previously detected waveforms. In some embodiments, the waveform module 1022 can prevent software, hardware components, firmware, or any combination thereof in the computing device from receiving the signal generated by the second input. The process flow ends at block 1112.
At block 1110, the waveform module 1022 can return the second input if the second waveform and the first waveform match. As discussed above, the second waveform and the waveform can match when the selection of a touchscreen device, a keystroke, or any other suitable input corresponds to measurements that match previous measurements for previous inputs. For example, the waveform module 1022 can return the input if the measurements for the input match the measurements that correspond with previous measurements for the input. In some embodiments, the waveform module 1022 can return keystrokes when the pressure and velocity of each keystroke corresponds to a pressure and velocity of previously detected keystrokes. In some embodiments, the waveform module 1022 can be calibrated for any suitable number of users. Therefore, the waveform module 1022 may store waveforms for each keystroke on a keyboard that correspond to the typing style of a user. The process flow ends at block 1112.
The process flow diagram of
The various software components discussed herein may be stored on the tangible, non-transitory, computer-readable medium 1300, as indicated in
It is to be understood that any suitable number of the software components shown in
A method for analyzing gestures is described herein. In some examples, the method can include detecting the gestures from an input device and detecting a set of measurements, wherein each measurement corresponds to a gesture. The method can also include detecting that the set of measurements and the gestures correspond to a stored pattern and returning intended input from the gestures based on the stored pattern.
In some embodiments, wherein the set of gestures comprises a set of selected keys from a keyboard or a touch screen device. In some examples, the stored pattern comprises previously detected erroneous input and previously detected intended inputs. The method can also include detecting a velocity corresponding to each gesture, and detecting a pressure corresponding to each gesture. Additionally, the method can include detecting a set of previously detected patterns, and detecting the stored pattern with a similarity value above a threshold from the set of previously detected patterns. In some embodiments, the method includes detecting dead space that corresponds to an input device. The method can also include detecting a sequence of gestures, and executing a function based on the sequence of gestures.
An electronic device for analyzing gestures is also described herein. In some embodiments, the electronic device includes logic to detect the gestures from an input device and detect a set of measurements, wherein each measurement corresponds to a gesture. The logic can also detect that the set of measurements and the gestures correspond to a stored pattern and return intended input from the gestures based on the stored pattern.
In some embodiments, the logic can detect a set of previously detected patterns, and detect the stored pattern with a similarity value above a threshold from the set of previously detected patterns. In some embodiments, the logic can also detect dead space that corresponds to an input device. The logic can also detect a sequence of gestures, and execute a function based on the sequence of gestures.
At least one non-transitory machine readable medium having instructions stored therein that analyze gestures are described herein. The at least one non-transitory machine readable medium can have instructions that, in response to being executed on an electronic device, cause the electronic device to detect the gestures from an input device and detect a set of measurements, wherein each measurement corresponds to a gesture. The instructions can also cause the electronic device to detect that the set of measurements and the gestures correspond to a stored pattern and return intended input from the gestures based on the stored pattern. In some embodiments, the set of gestures comprises a set of selected keys from a keyboard or a touch screen device. In some examples, the stored pattern comprises previously detected erroneous input and previously detected intended inputs.
A method for detecting a gesture is described herein. In some examples, the method includes detecting sensor data from a set of gesture devices and calculating a distance between each gesture device in the set of gesture devices. The method also includes determining that the detected sensor data and the distance between each gesture device match a previously stored pattern, and returning an input corresponding to the previously stored pattern.
In some embodiments, the distance is based on a data transmission time. In some examples, the method can include calculating the data transmission time based on a protocol to transmit the data, wherein the protocol is Bluetooth® compliant. In some embodiments, the input comprises a selection from a keyboard or a touchscreen display device.
An electronic device for detecting a gesture is described herein. In some examples, the electronic device includes logic that can detect sensor data from a set of gesture devices and calculate a distance between each gesture device in the set of gesture devices. The logic can also determine that the detected sensor data and the distance between each gesture device match a previously stored pattern, and return an input corresponding to the previously stored pattern. In some embodiments, the distance is based on a data transmission time. In some examples, the logic can include calculating the data transmission time based on a protocol to transmit the data, wherein the protocol is Bluetooth® compliant. In some embodiments, the input comprises a selection from a keyboard or a touchscreen display device.
At least one non-transitory machine readable medium having instructions stored therein that can detect a gesture is described herein. The at least one non-transitory machine readable medium having instructions that, in response to being executed on an electronic device, cause the electronic device to detect sensor data from a set of gesture devices and calculate a distance between each gesture device in the set of gesture devices. The instructions can also cause the electronic device to determine that the detected sensor data and the distance between each gesture device match a previously stored pattern and return an input corresponding to the previously stored pattern. In some embodiments, the distance is based on a data transmission time. In some examples, the logic can include calculating the data transmission time based on a protocol to transmit the data. In some embodiments, the input comprises a selection from a keyboard or a touchscreen display device.
An electronic device for detecting input is also described herein. The electronic device can include logic to detect sensor data indicating a movement of the electronic device and detect a location of the electronic device in relation to a second electronic device. The logic can also send the location and the sensor data to an external computing device. In some embodiments, the electronic device comprises a sensor that detects the sensor data. In some examples, the sensor is an accelerometer or a gyrometer.
A method for detecting a calibrated input is described herein. The method can include detecting a first waveform corresponding to a first input and storing the first waveform and the corresponding first input as the calibrated input. The method can also include comparing a second waveform corresponding to a second input to the first waveform of the calibrated input and determining that the second waveform and the first waveform do not match. Additionally, the method can include blocking a signal generated by the second input.
In some embodiments, the first waveform is based on a change in a voltage corresponding to the first input, wherein the change in the voltage indicates a pressure and a velocity corresponding to the first input. In some examples, the method also includes determining that a third waveform corresponding to a third input matches the first waveform corresponding to the calibrated input, and returning the third input. Additionally, the method can include comparing the pressure and the velocity corresponding to the first input to a pressure and a velocity corresponding to the second input, and determining that a difference between the pressure and the velocity of the first input and the pressure and the velocity of the second input exceeds a threshold value.
An electronic device for detecting a calibrated input is described herein. In some examples, the electronic device includes logic that can detect a first waveform corresponding to a first input and compare a second waveform corresponding to a second input to the first waveform. The logic can also determine that the second waveform and the first waveform do not match, and block a signal generated by the second input.
In some embodiments, the first waveform is based on a change in a voltage corresponding to the first input, wherein the change in the voltage indicates a pressure and a velocity corresponding to the first input. In some examples, the logic can also determine that a third waveform corresponding to a third input matches the first waveform corresponding to the calibrated input, and return the third input. Additionally, the logic can compare the pressure and the velocity corresponding to the first input to a pressure and a velocity corresponding to the second input, and determine that a difference between the pressure and the velocity of the first input and the pressure and the velocity of the second input exceeds a threshold value.
At least one non-transitory machine readable medium having instructions stored therein that can detect calibrated input is described herein. The at least one non-transitory machine readable medium can have instructions that, in response to being executed on an electronic device, cause the electronic device to detect a first waveform corresponding to a first input and compare a second waveform corresponding to a second input to the first waveform. The at least one non-transitory machine readable medium can also have instructions that, in response to being executed on an electronic device, cause the electronic device to determine that the second waveform and the first waveform do not match, and block a signal generated by the second input. In some embodiments, the first waveform is based on a change in a voltage corresponding to the first input, wherein the change in the voltage indicates a pressure and a velocity corresponding to the first input. In some examples, the instructions can cause an electronic device to determine that a third waveform corresponding to a third input matches the first waveform corresponding to the calibrated input, and return the third input.
Although an example embodiment of the disclosed subject matter is described with reference to block and flow diagrams in
In the preceding description, various aspects of the disclosed subject matter have been described. For purposes of explanation, specific numbers, systems and configurations were set forth in order to provide a thorough understanding of the subject matter. However, it is apparent to one skilled in the art having the benefit of this disclosure that the subject matter may be practiced without the specific details. In other instances, well-known features, components, or modules were omitted, simplified, combined, or split in order not to obscure the disclosed subject matter.
Various embodiments of the disclosed subject matter may be implemented in hardware, firmware, software, or combination thereof, and may be described by reference to or in conjunction with program code, such as instructions, functions, procedures, data structures, logic, application programs, design representations or formats for simulation, emulation, and fabrication of a design, which when accessed by a machine results in the machine performing tasks, defining abstract data types or low-level hardware contexts, or producing a result.
Program code may represent hardware using a hardware description language or another functional description language which essentially provides a model of how designed hardware is expected to perform. Program code may be assembly or machine language or hardware-definition languages, or data that may be compiled and/or interpreted. Furthermore, it is common in the art to speak of software, in one form or another as taking an action or causing a result. Such expressions are merely a shorthand way of stating execution of program code by a processing system which causes a processor to perform an action or produce a result.
Program code may be stored in, for example, volatile and/or non-volatile memory, such as storage devices and/or an associated machine readable or machine accessible medium including solid-state memory, hard-drives, floppy-disks, optical storage, tapes, flash memory, memory sticks, digital video disks, digital versatile discs (DVDs), etc., as well as more exotic mediums such as machine-accessible biological state preserving storage. A machine readable medium may include any tangible mechanism for storing, transmitting, or receiving information in a form readable by a machine, such as antennas, optical fibers, communication interfaces, etc. Program code may be transmitted in the form of packets, serial data, parallel data, etc., and may be used in a compressed or encrypted format.
Program code may be implemented in programs executing on programmable machines such as mobile or stationary computers, personal digital assistants, set top boxes, cellular telephones and pagers, and other electronic devices, each including a processor, volatile and/or non-volatile memory readable by the processor, at least one input device and/or one or more output devices. Program code may be applied to the data entered using the input device to perform the described embodiments and to generate output information. The output information may be applied to one or more output devices. One of ordinary skill in the art may appreciate that embodiments of the disclosed subject matter can be practiced with various computer system configurations, including multiprocessor or multiple-core processor systems, minicomputers, mainframe computers, as well as pervasive or miniature computers or processors that may be embedded into virtually any device. Embodiments of the disclosed subject matter can also be practiced in distributed computing environments where tasks may be performed by remote processing devices that are linked through a communications network.
Although operations may be described as a sequential process, some of the operations may in fact be performed in parallel, concurrently, and/or in a distributed environment, and with program code stored locally and/or remotely for access by single or multi-processor machines. In addition, in some embodiments the order of operations may be rearranged without departing from the spirit of the disclosed subject matter. Program code may be used by or in conjunction with embedded controllers.
While the disclosed subject matter has been described with reference to illustrative embodiments, this description is not intended to be construed in a limiting sense. Various modifications of the illustrative embodiments, as well as other embodiments of the subject matter, which are apparent to persons skilled in the art to which the disclosed subject matter pertains are deemed to lie within the scope of the disclosed subject matter.