KR101519194B1 - 제스쳐 인식을 제어하고 수정하기 위한 델리게이트를 갖는 제스쳐 인식기 - Google Patents

제스쳐 인식을 제어하고 수정하기 위한 델리게이트를 갖는 제스쳐 인식기 Download PDF

Info

Publication number
KR101519194B1
KR101519194B1 KR1020127022239A KR20127022239A KR101519194B1 KR 101519194 B1 KR101519194 B1 KR 101519194B1 KR 1020127022239 A KR1020127022239 A KR 1020127022239A KR 20127022239 A KR20127022239 A KR 20127022239A KR 101519194 B1 KR101519194 B1 KR 101519194B1
Authority
KR
South Korea
Prior art keywords
gesture
touch
event
recognizer
delegate
Prior art date
Application number
KR1020127022239A
Other languages
English (en)
Other versions
KR20120123476A (ko
Inventor
조슈아 에이치. 쉐퍼
브레드포드 알렌 무어
제이슨 클레이 비버
Original Assignee
애플 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 애플 인크. filed Critical 애플 인크.
Publication of KR20120123476A publication Critical patent/KR20120123476A/ko
Application granted granted Critical
Publication of KR101519194B1 publication Critical patent/KR101519194B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • G06F3/0488Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
    • G06F3/04883Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures for inputting data by handwriting, e.g. gesture or text
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

소프트웨어 애플리케이션은 복수의 뷰와 애플리케이션 상태를 포함한다. 이 방법은, 하나 이상의 뷰를 디스플레이하는 단계를 포함하고, 각각의 뷰는 각각의 제스쳐 인식기에 대응하는 델리게이트를 갖는 각각의 제스쳐 인식기를 포함한다. 이 방법은 하나 이상의 이벤트를 검출하는 단계와, 각각의 제스쳐 인식기를 이용하여 상기 하나 이상의 이벤트의 각각의 이벤트를 처리하는 단계를 포함한다. 각각의 이벤트의 처리는, 각각의 제스쳐 인식기에 대응하는 각각의 제스쳐 정의에 따라 각각의 제스쳐 인식기에서 각각의 이벤트를 처리하는 단계, 애플리케이션 상태에 따라 하나 이상의 값을 결정하기 위해 델리게이트를 실행하는 단계; 및 대응하는 델리게이트에 의해 결정된 하나 이상의 값에 따라, 각각의 이벤트에 대응하는 정보를 소프트웨어 애플리케이션에 조건부로 전송하는 단계를 포함한다. 이 방법은, 각각의 제스쳐 인식기로부터 수신된 정보에 따라 소프트웨어 애플리케이션을 실행하는 단계를 포함한다.

Description

제스쳐 인식을 제어하고 수정하기 위한 델리게이트를 갖는 제스쳐 인식기{GESTURE RECOGNIZERS WITH DELEGATES FOR CONTROLLING AND MODIFYING GESTURE RECOGNITION}
본 발명은 대체로 제스쳐 입력을 인식하기 위한 장치 및 방법을 포함한 사용자 인터페이스 처리에 관한 것이지만 이것으로 한정되는 것은 아니다.
전자 장치는 통상 컴퓨팅 장치와 상호작용하는데 이용될 수도 있는 사용자 인터페이스를 포함한다. 사용자 인터페이스는, 사용자 인터페이스의 다양한 양태와 상호작용하기 위한 키보드, 마우스, 및 터치 감응면과 같은 디스플레이 및/또는 입력 장치를 포함할 수도 있다. 입력 장치로서 터치 감응면을 갖춘 일부 장치에서는, 제1 세트의 터치 기반의 제스쳐(예를 들어, 탭, 더블 탭, 수평 스와이프(swipe), 수직 스와이프, 핀치(pinch), 디핀치(depinch), 두 손가락 스와이프 중에서 2개 이상)가 특정한 정황(예를 들어, 제1 애플리케이션의 특정한 모드)에서 적절한 입력으로서 인식되며, 다른 상이한 세트의 터치 기반의 제스쳐는 다른 정황(예를 들어, 상이한 애플리케이션 및/또는 제1 애플리케이션 내의 상이한 모드나 정황)에서 적절한 입력으로서 인식된다. 그 결과, 터치 기반의 제스쳐를 인식하고 이에 응답하는데 요구되는 소프트웨어 및 논리는 복잡해질 수 있으며, 애플리케이션이 업데이트되거나 새로운 애플리케이션이 컴퓨팅 장치에 추가될 때마다 수정판(revision)을 요구할 수 있다. 터치 기반의 제스쳐가 아닌 입력 소스를 이용하는 사용자 인터페이스에서 이들 문제 및 유사한 문제들이 발생할 수도 있다.
따라서, 컴퓨팅 장치 상의 모든 애플리케이션 프로그램들의 사실상 모든 정황이나 모드에 용이하게 적응될 수 있고 애플리케이션이 업데이트되거나 새로운 애플리케이션이 컴퓨팅 장치에 추가될 때 수정판을 요구하지 않거나 거의 요구하지 않으며, 터치 기반의 제스쳐 및 이벤트뿐만 아니라 다른 입력 소스로부터의 제스쳐 및 이벤트들도 인식하기 위한 포괄적인 체제나 메커니즘을 갖는 것이 바람직할 것이다.
전술된 단점들을 해결하기 위해, 일부 실시예들에 따라, 하나 이상의 이벤트 센서를 가지며 복수의 뷰(view)와 소프트웨어 애플리케이션의 애플리케이션 상태를 포함하는 소프트웨어 애플리케이션을 실행하도록 구성된 전자 장치에서 한 방법이 실행된다. 이 방법은 복수의 뷰들 중에서 하나 이상의 뷰를 디스플레이하는 단계를 포함한다. 하나 이상의 디스플레이된 뷰의 각각의 뷰는 하나 이상의 제스쳐 인식기를 포함하며, 각각의 제스쳐 인식기는 대응하는 델리게이트(delegate)를 가진다. 이 방법은 하나 이상의 이벤트를 검출하는 단계와, 각각의 제스쳐 인식기를 이용하여 상기 하나 이상의 이벤트의 각각의 이벤트를 처리하는 단계를 포함한다. 각각의 이벤트의 처리는, 각각의 제스쳐 인식기에 대응하는 각각의 제스쳐 정의에 따라 각각의 제스쳐 인식기에서 각각의 이벤트를 처리하는 단계, 애플리케이션 상태에 따라 하나 이상의 값을 결정하기 위해 각각의 제스쳐 인식기의 대응하는 델리게이트를 실행하는 단계, 및 각각의 제스쳐 인식기에 의한 각각의 이벤트의 처리의 결과에 따라 그리고 대응하는 델리게이트에 의해 결정된 하나 이상의 값에 따라, 각각의 이벤트에 대응하는 정보를 소프트웨어 애플리케이션에 조건부로 전송하는 단계를 포함한다. 이 방법은, 각각의 이벤트에 대응하는, 각각의 제스쳐 인식기로부터 수신된 정보에 따라 소프트웨어 애플리케이션을 실행하는 단계를 더 포함한다.
일부 실시예들에 따라, 전자 장치는, 이벤트를 검출하기 위한 하나 이상의 이벤트 센서, 하나 이상의 프로세서, 메모리, 및 메모리에 저장되고 하나 이상의 프로세서에 의해 실행되도록 구성된 하나 이상의 프로그램을 포함한다. 하나 이상의 프로그램은 복수의 뷰와 애플리케이션 상태를 갖는 소프트웨어 애플리케이션을 포함한다. 소프트웨어 애플리케이션은 복수의 뷰들 중 하나 이상의 뷰를 디스플레이하기 위한 명령어를 포함한다. 하나 이상의 디스플레이된 뷰의 각각의 뷰는 하나 이상의 제스쳐 인식기를 포함하며, 각각의 제스쳐 인식기는 대응하는 델리게이트(delegate)를 가진다. 소프트웨어 애플리케이션은, 하나 이상의 이벤트를 검출하기 위한 명령어와 각각의 제스쳐 인식기를 이용하여 검출된 이벤트들의 각각의 이벤트를 처리하기 위한 명령어를 더 포함한다. 각각의 이벤트의 처리를 위한 명령어는, 각각의 제스쳐 인식기에 대응하는 각각의 제스쳐 정의에 따라 각각의 제스쳐 인식기에서 각각의 이벤트를 처리하고, 애플리케이션 상태에 따라 하나 이상의 값을 결정하기 위해 대응하는 델리게이트를 실행하며; 및 각각의 제스쳐 인식기에 의한 각각의 이벤트의 처리의 결과에 따라 그리고 대응하는 델리게이트에 의해 결정된 하나 이상의 값에 따라, 각각의 이벤트에 대응하는 정보를 소프트웨어 애플리케이션에 조건부로 전송하기 위한 명령어를 포함한다. 소프트웨어 애플리케이션은, 각각의 이벤트에 대응하는, 각각의 제스쳐 인식기로부터 수신된 정보에 따라 소프트웨어 애플리케이션을 실행하기 위한 명령어를 더 포함한다.
일부 실시예들에 따라, 컴퓨터 판독가능한 저장 매체는, 이벤트를 검출하기 위한 하나 이상의 이벤트 센서를 갖는 전자 장치의 하나 이상의 프로세서에 의해 실행되기 위한 하나 이상의 프로그램을 저장한다. 하나 이상의 프로그램은, 복수의 뷰와 소프트웨어 애플리케이션의 애플리케이션 상태를 포함하는 소프트웨어 애플리케이션을 포함한다. 소프트웨어 애플리케이션은 복수의 뷰들 중 하나 이상의 뷰를 디스플레이하기 위한 명령어를 포함한다. 하나 이상의 디스플레이된 뷰의 각각의 뷰는 하나 이상의 각각의 제스쳐 인식기를 포함하며, 각각의 제스쳐 인식기는 대응하는 델리게이트를 가진다. 소프트웨어 애플리케이션은, 하나 이상의 이벤트를 검출하고 각각의 제스쳐 인식기를 이용하여 검출된 이벤트들의 각각의 이벤트를 처리하기 위한 명령어를 더 포함한다. 각각의 이벤트의 처리를 위한 명령어는, 각각의 제스쳐 인식기에 대응하는 각각의 제스쳐 정의에 따라 각각의 제스쳐 인식기에서 각각의 이벤트를 처리하고, 애플리케이션 상태에 따라 하나 이상의 값을 결정하기 위해 대응하는 델리게이트를 실행하며; 및 각각의 제스쳐 인식기에 의한 각각의 이벤트의 처리의 결과에 따라 그리고 대응하는 델리게이트에 의해 결정된 하나 이상의 값에 따라, 각각의 이벤트에 대응하는 정보를 소프트웨어 애플리케이션에 조건부로 전송하기 위한 명령어를 포함한다. 소프트웨어 애플리케이션은, 각각의 이벤트에 대응하는, 각각의 제스쳐 인식기로부터 수신된 정보에 따라 소프트웨어 애플리케이션을 실행하기 위한 명령어를 더 포함한다.
일부 실시예들에 따라, 터치 감응면을 가지며 복수의 뷰와 소프트웨어 애플리케이션의 애플리케이션 상태를 포함하는 소프트웨어 애플리케이션을 실행하도록 구성된 전자 장치에서 소정의 방법이 실행된다. 이 방법은 복수의 뷰들 중 하나 이상의 뷰를 디스플레이하는 단계를 포함한다. 하나 이상의 디스플레이된 뷰의 각각의 뷰는 각각의 제스쳐 인식기를 포함한다. 각각의 제스쳐 인식기는 대응하는 델리게이트를 가진다. 이 방법은, 터치 감응면 상에서 하나 이상의 터치를 검출하는 단계를 포함하고, 각각의 터치는 하나 이상의 디스플레이된 뷰들 내에 떨어지는 터치 위치를 가진다. 이 방법은 하나 이상의 터치의 각각의 터치를 처리하는 단계를 더 포함한다. 각각의 터치를 처리하는 단계는, 애플리케이션 상태에 따라 수신 터치값을 얻기 위해 각각의 제스쳐 인식기에 대응하는 델리게이트를 실행하는 단계, 및 수신 터치값이 미리정의된 기준을 만족하면, 각각의 제스쳐 인식기에서 각각의 터치를 처리하는 단계를 포함한다. 각각의 터치를 처리하는 단계는 또한, 각각의 터치에 대응하는 정보를 소프트웨어 애플리케이션에 조건부로 전송하는 단계를 포함한다. 이 방법은, 각각의 터치에 대응하는, 각각의 제스쳐 인식기로부터 수신된 정보에 따라 소프트웨어 애플리케이션을 실행하는 단계를 더 포함한다.
일부 실시예들에 따라, 전자 장치는, 터치 감응면, 하나 이상의 프로세서, 메모리, 및 메모리에 저장되고 하나 이상의 프로세서에 의해 실행되도록 구성된 하나 이상의 프로그램을 포함한다. 하나 이상의 프로그램은, 복수의 뷰와 소프트웨어 애플리케이션의 애플리케이션 상태를 포함하는 소프트웨어 애플리케이션을 포함한다. 소프트웨어 애플리케이션은 복수의 뷰들 중 하나 이상의 뷰를 디스플레이하기 위한 명령어를 포함한다. 하나 이상의 디스플레이된 뷰의 각각의 뷰는 하나 이상의 각각의 제스쳐 인식기를 포함한다. 각각의 제스쳐 인식기는 대응하는 델리게이트를 가진다. 소프트웨어 애플리케이션은, 터치 감응면 상에서 하나 이상의 터치를 검출하기 위한 명령어를 포함하고, 각각의 터치는 하나 이상의 디스플레이된 뷰들 내에 떨어지는 터치 위치를 가진다. 소프트웨어 애플리케이션은 하나 이상의 터치의 각각의 터치를 처리하기 위한 명령어를 더 포함한다. 각각의 터치를 처리하기 위한 명령어는, 애플리케이션 상태에 따라 수신 터치값을 얻기 위해 각각의 제스쳐 인식기에 대응하는 델리게이트를 실행하고, 수신 터치값이 미리정의된 기준을 만족하면, 각각의 제스쳐 인식기에서 각각의 터치를 처리하기 위한 명령어를 포함한다. 각각의 터치를 처리하기 위한 명령어는 또한, 각각의 터치에 대응하는 정보를 소프트웨어 애플리케이션에 조건부로 전송하기 위한 명령어를 포함한다. 소프트웨어 애플리케이션은, 각각의 터치에 대응하는, 각각의 제스쳐 인식기로부터 수신된 정보에 따라 소프트웨어 애플리케이션을 실행하기 위한 명령어를 더 포함한다.
일부 실시예들에 따라, 컴퓨터 판독가능한 저장 매체는, 터치 감응면을 갖는 전자 장치의 하나 이상의 프로세서에 의해 실행되기 위한 하나 이상의 프로그램을 저장한다. 하나 이상의 프로그램은, 복수의 뷰와 소프트웨어 애플리케이션의 애플리케이션 상태를 포함하는 소프트웨어 애플리케이션을 포함한다. 소프트웨어 애플리케이션은 복수의 뷰들 중 하나 이상의 뷰를 디스플레이하기 위한 명령어를 포함한다. 하나 이상의 디스플레이된 뷰의 각각의 뷰는 하나 이상의 각각의 제스쳐 인식기를 포함한다. 각각의 제스쳐 인식기는 대응하는 델리게이트를 가진다. 소프트웨어 애플리케이션은, 터치 감응면 상에서 하나 이상의 터치를 검출하기 위한 명령어를 포함하고, 각각의 터치는 하나 이상의 디스플레이된 뷰들 내에 떨어지는 터치 위치를 가진다. 소프트웨어 애플리케이션은 하나 이상의 터치의 각각의 터치를 처리하기 위한 명령어를 더 포함한다. 각각의 터치를 처리하기 위한 명령어는, 애플리케이션 상태에 따라 수신 터치값을 얻기 위해 각각의 제스쳐 인식기에 대응하는 델리게이트를 실행하고, 수신 터치값이 미리정의된 기준을 만족하면, 각각의 제스쳐 인식기에서 각각의 터치를 처리하기 위한 명령어를 포함한다. 각각의 터치를 처리하기 위한 명령어는 또한, 각각의 터치에 대응하는 정보를 소프트웨어 애플리케이션에 조건부로 전송하기 위한 명령어를 포함한다. 소프트웨어 애플리케이션은, 각각의 터치에 대응하는, 각각의 제스쳐 인식기로부터 수신된 정보에 따라 소프트웨어 애플리케이션을 실행하기 위한 명령어를 더 포함한다.
일부 실시예들에 따라, 터치 감응면을 가지며 소프트웨어 애플리케이션을 실행하도록 구성된 전자 장치에서 한 방법이 수행된다. 이 방법은 소프트웨어 애플리케이션의 하나 이상의 뷰를 디스플레이하는 단계를 포함한다. 하나 이상의 디스플레이된 뷰는 복수의 제스쳐 인식기를 포함한다. 복수의 제스쳐 인식기는 적어도 하나의 이산(discrete) 제스쳐 인식기와 적어도 하나의 연속(continuous) 제스쳐 인식기를 포함한다. 이산 제스쳐 인식기는 각각의 제스쳐에 응답하여 단일의 액션 메시지(action message)를 전송하도록 구성되고, 연속 제스쳐 인식기는 각각의 인식된 제스쳐의 연속 인식된 서브-이벤트들에서 액션 메시지를 전송하도록 구성된다. 이 방법은 또한, 하나 이상의 터치를 검출하는 단계와, 하나 이상의 제스쳐 인식기를 이용하여 각각의 터치를 처리하는 단계를 포함한다. 각각의 터치의 처리는 각각의 제스쳐 인식기에 대응하는 각각의 제스쳐 정의에 따라 각각의 제스쳐 인식기에서 각각의 터치를 처리하는 단계, 및 각각의 제스쳐 인식기에서의 각각의 터치의 처리의 결과에 따라 하나 이상의 각각의 액션 메시지를 소프트웨어 애플리케이션에 조건부로 전송하는 단계를 포함한다. 이 방법은 하나 이상의 터치에 대응하는 하나 이상의 제스쳐 인식기로부터 수신된 하나 이상의 액션 메시지에 따라 소프트웨어 애플리케이션을 실행하는 단계를 더 포함한다.
일부 실시예들에 따라, 전자 장치는, 터치 감응면, 하나 이상의 프로세서, 메모리, 및 메모리에 저장되고 하나 이상의 프로세서에 의해 실행되도록 구성된 하나 이상의 프로그램을 포함한다. 하나 이상의 프로그램은 소프트웨어 애플리케이션을 포함하고, 소프트웨어 애플리케이션은 소프트웨어 애플리케이션의 하나 이상의 뷰를 디스플레이하기 위한 명령어를 포함한다. 하나 이상의 디스플레이된 뷰는 복수의 제스쳐 인식기를 포함한다. 복수의 제스쳐 인식기는 적어도 하나의 이산 제스쳐 인식기와 적어도 하나의 연속 제스쳐 인식기를 포함한다. 이산 제스쳐 인식기는 각각의 제스쳐에 응답하여 단일의 액션 메시지를 전송하도록 구성되고, 연속 제스쳐 인식기는 각각의 인식된 제스쳐의 연속 인식된 서브-이벤트들에서 액션 메시지를 전송하도록 구성된다. 소프트웨어 애플리케이션은 또한, 하나 이상의 터치를 검출하기 위한 명령어와, 하나 이상의 제스쳐 인식기를 이용하여 각각의 터치를 처리하기 위한 명령어를 포함한다. 각각의 터치를 처리하기 위한 명령어는, 각각의 제스쳐 인식기에 대응하는 각각의 제스쳐 정의에 따라 각각의 제스쳐 인식기에서 각각의 터치를 처리하고, 각각의 제스쳐 인식기에서의 각각의 터치의 처리의 결과에 따라 하나 이상의 각각의 액션 메시지를 소프트웨어 애플리케이션에 조건부로 전송하기 위한 명령어를 포함한다. 소프트웨어 애플리케이션은 하나 이상의 터치에 대응하는 하나 이상의 제스쳐 인식기로부터 수신된 하나 이상의 액션 메시지에 따라 소프트웨어 애플리케이션을 실행하기 위한 명령어를 더 포함한다.
일부 실시예들에 따라, 컴퓨터 판독가능한 저장 매체는, 터치 감응면을 갖는 전자 장치의 하나 이상의 프로세서에 의한 실행을 위한 하나 이상의 프로그램을 저장한다. 하나 이상의 프로그램은 소프트웨어 애플리케이션을 포함하고, 소프트웨어 애플리케이션은 소프트웨어 애플리케이션의 하나 이상의 뷰를 디스플레이하기 위한 명령어를 포함한다. 하나 이상의 디스플레이된 뷰는 복수의 제스쳐 인식기를 포함한다. 복수의 제스쳐 인식기는 적어도 하나의 이산 제스쳐 인식기와 적어도 하나의 연속 제스쳐 인식기를 포함한다. 이산 제스쳐 인식기는 각각의 제스쳐에 응답하여 단일의 액션 메시지를 전송하도록 구성되고, 연속 제스쳐 인식기는 각각의 인식된 제스쳐의 연속 인식된 서브-이벤트들에서 액션 메시지를 전송하도록 구성된다. 소프트웨어 애플리케이션은 하나 이상의 터치를 검출하기 위한 명령어와, 하나 이상의 제스쳐 인식기를 이용하여 각각의 터치를 처리하기 위한 명령어를 포함한다. 각각의 터치를 처리하기 위한 명령어는, 각각의 제스쳐 인식기에 대응하는 각각의 제스쳐 정의에 따라 각각의 제스쳐 인식기에서 각각의 터치를 처리하고, 각각의 제스쳐 인식기에서의 각각의 터치의 처리의 결과에 따라 하나 이상의 각각의 액션 메시지를 소프트웨어 애플리케이션에 조건부로 전송하기 위한 명령어를 포함한다. 소프트웨어 애플리케이션은 하나 이상의 터치에 대응하는 하나 이상의 제스쳐 인식기로부터 수신된 하나 이상의 액션 메시지에 따라 소프트웨어 애플리케이션을 실행하기 위한 명령어를 더 포함한다.
일부 실시예들에 따라, 전자 장치는 하나 이상의 이벤트를 감지하도록 구성된 하나 이상의 이벤트 감지 유닛과, 하나 이상의 이벤트 감지 유닛에 결합된 처리 유닛을 포함한다. 처리 유닛은, 복수의 뷰와 소프트웨어 애플리케이션의 애플리케이션 상태를 포함하는 소프트웨어 애플리케이션을 실행하고, 복수의 뷰들 중의 하나 이상의 뷰의 디스플레이를 인에이블하도록 구성된다. 하나 이상의 디스플레이된 뷰의 각각의 뷰는 하나 이상의 각각의 제스쳐 인식기를 포함하며, 각각의 제스쳐 인식기는 대응하는 델리게이트를 가진다. 처리 유닛은, 하나 이상의 이벤트 감지 유닛에 의해 감지된 하나 이상의 이벤트를 검출하고, 각각의 제스쳐 인식기에 대응하는 각각의 제스쳐 정의에 따라 각각의 제스쳐 인식기에서 각각의 이벤트를 처리하고, 애플리케이션 상태에 따라 하나 이상의 값을 결정하기 위해 대응하는 델리게이트를 실행하며, 각각의 제스쳐 인식기에 의한 각각의 이벤트의 처리의 결과에 따라 그리고 대응하는 델리게이트에 의해 결정된 하나 이상의 값에 따라, 각각의 이벤트에 대응하는 정보를 소프트웨어 애플리케이션에 조건부로 전송함으로써, 각각의 제스쳐 인식기를 이용하여 하나 이상의 이벤트의 각각의 이벤트를 처리하도록 구성된다. 처리 유닛은, 각각의 이벤트에 대응하는, 각각의 제스쳐 인식기로부터 수신된 정보에 따라 소프트웨어 애플리케이션을 실행하도록 구성된다.
일부 실시예들에 따라, 전자 장치는 하나 이상의 터치를 수신하도록 구성된 터치 감응면 유닛과, 터치 감응면 유닛에 결합된 처리 유닛을 포함한다. 처리 유닛은, 복수의 뷰와 소프트웨어 애플리케이션의 애플리케이션 상태를 포함하는 소프트웨어 애플리케이션을 실행하고, 복수의 뷰들 중의 하나 이상의 뷰의 디스플레이를 인에이블하도록 구성된다. 하나 이상의 디스플레이된 뷰의 각각의 뷰는 하나 이상의 각각의 제스쳐 인식기를 포함하며, 각각의 제스쳐 인식기는 대응하는 델리게이트를 가진다. 처리 유닛은 터치 감응면 유닛 상에서 수신된 하나 이상의 터치를 검출하도록 구성된다. 하나 이상의 터치들 각각은 하나 이상의 디스플레이된 뷰들 내에 떨어지는 터치 위치를 가진다. 처리 유닛은, 애플리케이션 상태에 따라 수신 터치값을 얻기 위해 각각의 제스쳐 인식기에 대응하는 델리게이트를 실행하고, 수신 터치값이 미리정의된 기준을 만족하면, 각각의 제스쳐 인식기에서 각각의 터치를 처리하고 각각의 터치에 대응하는 정보를 소프트웨어 애플리케이션에 조건부로 전송함으로써, 하나 이상의 터치의 각각의 터치를 처리하도록 구성된다. 처리 유닛은, 각각의 터치에 대응하는, 각각의 제스쳐 인식기로부터 수신된 정보에 따라 소프트웨어 애플리케이션을 실행하도록 구성된다.
일부 실시예들에 따라, 전자 장치는 하나 이상의 터치를 수신하도록 구성된 터치 감응면 유닛과, 터치 감응면 유닛에 결합된 처리 유닛을 포함한다. 처리 유닛은, 소프트웨어 애플리케이션을 실행하고 소프트웨어 애플리케이션의 하나 이상의 뷰들의 디스플레이를 인에이블하도록 구성된다. 하나 이상의 디스플레이된 뷰는 복수의 제스쳐 인식기를 포함하고, 복수의 제스쳐 인식기는 적어도 하나의 이산 제스쳐 인식기와 적어도 하나의 연속 제스쳐 인식기를 포함한다. 이산 제스쳐 인식기는 각각의 제스쳐에 응답하여 단일의 액션 메시지를 전송하도록 구성되고, 연속 제스쳐 인식기는 각각의 인식된 제스쳐의 연속 인식된 서브-이벤트들에서 액션 메시지를 전송하도록 구성된다. 처리 유닛은, 터치 감응면 유닛 상에서 수신된 하나 이상의 터치를 검출하고, 하나 이상의 제스쳐 인식기를 이용하여 각각의 터치를 처리하도록 구성된다. 처리 유닛은, 각각의 제스쳐 인식기에 대응하는 각각의 제스쳐 정의에 따라 각각의 제스쳐 인식기에서 각각의 터치를 처리하고, 각각의 제스쳐 인식기에서의 각각의 터치의 처리의 결과에 따라 하나 이상의 각각의 액션 메시지를 소프트웨어 애플리케이션에 조건부로 전송함으로써, 각각의 터치를 처리하도록 구성된다. 처리 유닛은, 하나 이상의 터치에 대응하는 하나 이상의 제스쳐 인식기로부터 수신된 하나 이상의 액션 메시지에 따라 소프트웨어 애플리케이션을 실행하도록 구성된다.
도 1a 및 도 1b는 일부 실시예들에 따른 전자 장치를 나타내는 블록도이다.
도 2는 일부 실시예들에 따른 예시적 전자 장치의 입력/출력 처리 스택의 도면이다.
도 3a는 일부 실시예들에 따른, 예시적 뷰 계층구조(view hierarchy)를 나타낸다.
도 3b는 일부 실시예들에 따른 이벤트 처리를 위한 예시적 컴포넌트들을 나타내는 블록도이다.
도 3c는 일부 실시예들에 따른 제스쳐 인식기들의 예시적 클래스(class)와 인스턴스(instance)를 나타내는 블록도이다.
도 4a 내지 도 4d는 일부 실시예들에 따른, 예시적 상태 머신(state machine)을 나타내는 플로차트이다.
도 5a는 일부 실시예들에 따른, 이벤트 정보의 흐름을 나타내는 블록도이다.
도 5b 및 도 5c는 일부 실시예들에 따른, 제스쳐 인식 방법을 나타내는 고수준 플로차트이다.
도 6a 및 도 6b는 일부 실시예들에 따른, 델리게이트로부터 얻어진 정보에 따라 각각의 이벤트를 처리하는 예시적 방법을 나타내는 플로차트이다.
도 7a 및 도 7b는 일부 실시예들에 따른, 델리게이트로부터 얻어진 수신 터치값에 따라 각각의 터치를 처리하는 예시적 방법을 나타내는 플로차트이다.
도 8a 및 도 8b는 일부 실시예들에 따른, 이산 제스쳐 인식기와 연속 제스쳐 인식기를 포함하는 소프트웨어 애플리케이션에서 각각의 터치를 처리하는 예시적 방법을 나타내는 플로차트이다.
도 9는 일부 실시예들에 따른 전자 장치의 기능적 블록도이다.
도 10은 일부 실시예들에 따른 전자 장치의 기능적 블록도이다.
도 11은 일부 실시예들에 따른 전자 장치의 기능적 블록도이다.
도면 전체에 걸쳐 유사한 참조 번호는 대응하는 부분을 가리킨다.
이제 실시예들을 상세히 참조할 것이며, 그 예들은 첨부된 도면들에 예시되어 있다. 이하의 상세한 설명에서, 본 발명의 철저한 이해를 제공하기 위하여 다양한 구체적인 세부사항이 개시된다. 그러나, 본 발명은 이들 구체적인 세부사항 없이도 실시될 수 있다는 것은 당업자에게 명백할 것이다. 다른 사례에서, 공지된 방법, 프로시져, 컴포넌트, 회로, 및 네트워크는 실시예들의 양태를 불필요하게 모호하게 하지 않도록 상세히 설명되지 않았다.
비록, 용어, 제1, 제2, 등이 다양한 요소들을 설명하기 위해 여기에 사용될 수도 있지만, 이들 요소들은 이들 용어에 의해 제한되어서는 안 된다는 것을 이해할 것이다. 이들 용어들은 한 요소를 다른 요소로부터 구분하기 위해서만 사용된다. 본 발명의 범위로부터 벗어나지 않고, 예를 들어, 제1 접촉은 제2 접촉이라 명명할 수 있고, 마찬가지로 제2 접촉은 제1 접촉이라 명명할 수 있다. 제1 접촉 및 제2 접촉 양쪽 모두는 접촉이지만, 동일한 접촉은 아니다.
여기 본 발명의 설명에서 사용되는 용어는 특정한 실시예를 설명하기 위한 것일 뿐이며, 본 발명을 제한하기 위한 것이 아니다. 본 발명의 설명 및 첨부된 특허청구범위에서 사용될 때, 단수 형태, "한(a)", "하나의(an)", 그(the)"는, 문맥상 달리 표시하지 않는 한, 마찬가지로 복수 형태도 포함하는 것을 의도한 것이다. 본 명세서에서 사용될 때 용어 "및/또는"은 연관된 나열된 항목들 중 하나 이상의 임의의 조합 및 모든 가능한 조합을 지칭하며 포함한다는 것을 이해할 것이다. 용어 "포함한다" 및/또는 "포함하는"은, 본 명세서에서 사용될 때, 진술된 특징, 완전체, 단계, 동작, 요소, 및/또는 컴포넌트의 존재를 명시하지만, 하나 이상의 다른 특징, 완전체, 단계, 동작, 요소, 컴포넌트, 및/또는 이들의 그룹의 존재나 추가를 배제하는 것은 아님을 추가로 이해할 것이다.
본 명세서에서 사용될 때, 용어 "만일"은 문맥에 따라 "~할 때", 또는 "~시에" 또는 "판정에 응답하여" 또는 "검출에 응답하여"를 의미하는 것으로 해석될 수도 있다. 마찬가지로, 문구 "~라고 판정된다면" 또는 "만일 [진술된 조건이나 이벤트]가 검출된다면"은, 문맥에 따라, "~라고 판정시에" 또는 "~라는 판정에 응답하여" 또는 "(진술된 조건이나 이벤트)의 검출시에" 또는 "(진술된 조건이나 이벤트)의 검출에 응답하여"를 의미하는 것으로 해석될 수도 있다.
본 명세서에서 사용될 때, 용어 "이벤트"는 장치의 하나 이상의 센서에 의해 검출된 입력을 말한다. 특히, 용어 "이벤트"는 터치 감응면 상의 터치를 포함한다. 이벤트는 하나 이상의 서브-이벤트를 포함한다. 서브-이벤트는 통상, 이벤트에 대한 변화(예를 들어, 터치-다운, 터치 이동, 및 터치의 들어 올림은 서브-이벤트가 될 수 있다)를 말한다. 하나 이상의 서브-이벤트들의 시퀀스들 내의 서브-이벤트들은, 무엇보다도, 키 누름, 키 누름 유지, 키 누름 해제, 버튼 누름, 버튼 누름 유지, 버튼 누름 해제, 조이스틱 이동, 마우스 이동, 마우스 버튼 누름, 마우스 버튼 해제, 펜 스타일러스 터치, 펜 스타일러스 이동, 펜 스타일러스 해제, 구두 명령, 검출된 안구 움직임, 생체인증 입력, 및 사용자의 검출된 생리학적 변화를 포함한 많은 형태를 포함할 수 있지만, 이것으로 한정되는 것은 아니다. 이벤트는 단일의 서브-이벤트(예를 들어, 장치의 짧은 측방향 이동)를 포함할 수도 있기 때문에, 본 명세서에서 사용될 때 용어 "서브-이벤트"는 이벤트를 지칭하기도 한다.
본 명세서에서 사용될 때, 용어 "이벤트 인식기" 및 "제스쳐 인식기"는 상호교환가능하게 사용되어 제스쳐나 기타의 이벤트(예를 들어, 장치의 움직임)를 인식할 수 있는 인식기를 지칭한다.
앞서 언급한 바와 같이, 입력 장치로서 터치 감응면을 갖춘 일부 장치에서는, 제1 세트의 터치 기반의 제스쳐(예를 들어, 탭, 더블 탭, 수평 스와이프, 수직 스와이프 중에서 2개 이상)가 특정한 정황(예를 들어, 제1 애플리케이션의 특정한 모드)에서 적절한 입력으로서 인식되며, 다른 상이한 세트의 터치 기반의 제스쳐는 다른 정황(예를 들어, 상이한 애플리케이션 및/또는 제1 애플리케이션 내의 상이한 모드나 정황)에서 적절한 입력으로서 인식된다. 또한, 2개 이상의 적절한 입력(또는 제스쳐)이 서로 간섭하거나 충돌할 수도 있다(예를 들어, 단일 탭을 검출한 후, 단일 탭을 완전한 단일 탭 제스쳐로 인식할지, 또는 더블 탭 제스쳐의 일부로서 인식할지를 결정할 필요가 있다). 그 결과, 터치 기반의 제스쳐를 인식하고 응답하는데 요구되는 소프트웨어 및 논리는 복잡해질 수 있으며, 애플리케이션이 업데이트되거나 새로운 애플리케이션이 컴퓨팅 장치에 추가될 때마다 수정판(revision)을 요구할 수 있다.
터치 기반의 제스쳐를 이용하여 터치 감응면을 갖는 장치에서 실행중인 애플리케이션을 제어할 때, 터치는 시간적 및 공간적 양태 양쪽 모두를 가진다. 페이즈(phase)라 불리는 시간적 양태는, 터치가 시작된 때, 터치가 이동중인지 정지 상태인지의 여부, 및 터치가 종료한 때 ― 즉, 손가락이 스크린으로부터 들어 올려진 때를 가리킨다. 터치의 공간적 양태는 한 세트의 뷰 또는 터치가 발생하는 사용자 인터페이스 윈도우이다. 터치가 검출되는 뷰 또는 윈도우는 뷰 계층구조 내의 프로그램 레벨(programmatic levels)에 대응할 수도 있다. 예를 들어, 터치가 검출되는 최하위 레벨의 뷰는 히트 뷰(hit view)라 불리고, 적절한 입력으로서 인식되는 이벤트 세트는, 적어도 부분적으로, 터치 기반의 제스쳐를 시작하는 초기 터치의 히트 뷰에 기초하여 결정될 수도 있다.
도 1a 및 도 1b는, 일부 실시예들에 따른, 전자 장치(102, 104)의 상이한 실시예들을 나타내는 블록도이다. 전자 장치(102 또는 104)는, 데스크탑 컴퓨터 시스템, 랩탑 컴퓨터 시스템, 노트북 컴퓨터 시스템, 모바일 전화, 스마트폰, PDA(personal digital assistant) 또는 네비게이션 시스템을 포함하는 임의의 전자 장치일 수도 있지만, 이것으로 한정되는 것은 아니다. 전자 장치는, 사용자 인터페이스를 제시하도록 구성된 터치 스크린 디스플레이(예를 들어, 터치 감응 디스플레이(156), 도 1b)를 갖춘 휴대형 전자 장치, 사용자 인터페이스를 제시하도록 구성된 터치 스크린 디스플레이를 갖춘 컴퓨터, 터치 감응면과 사용자 인터페이스를 제시하도록 구성된 디스플레이를 갖춘 컴퓨터, 또는, 소비자 전자 장치, 모바일 전화, 비디오 게임 시스템, 전자 음악 플레이어, 태블릿 PC, 전자 서적 판독 시스템, 전자 서적, PDA, 전자 오거나이저, 전자메일 장치, 랩탑, 넷북 또는 기타의 컴퓨터, 키오스크 컴퓨터, 자판기, 스마트 기기 등을 포함한 기타 임의 형태의 컴퓨팅 장치일 수도 있으나, 이것으로 한정되는 것은 아니다. 전자 장치(102 또는 104)는 사용자 인터페이스(113)를 포함한다.
일부 실시예들에서, 전자 장치(104)는 터치 스크린 디스플레이를 포함한다. 이들 실시예들에서, 사용자 인터페이스(113)는, 전자 장치(102 및 104)와 상호작용하기 위해 사용자에 의해 사용되는 온-스크린 키보드(미도시)를 포함할 수도 있다. 대안으로서, 키보드는 전자 장치(104)(또는 전자 장치(102))와는 분리되거나 별개일 수도 있다. 예를 들어, 키보드는 전자 장치(102 또는 104)에 결합된 유선 또는 무선 키보드일 수도 있다.
일부 실시예들에서, 전자 장치(102)는, 전자 장치(102)에 결합된 디스플레이(126) 및 하나 이상의 입력 장치(128)(예를 들어, 키보드, 마우스, 트랙볼, 마이크로폰, 물리적 버튼(들), 터치패드 등)를 포함한다. 이들 실시예들에서, 하나 이상의 입력 장치(128)는 선택적으로 전자 장치(102)로부터 분리되거나 별개일 수도 있다. 예를 들어, 하나 이상의 입력 장치는, 선택적으로 전자 장치와 분리될 수도 있는, 키보드, 마우스, 트랙패드, 트랙볼, 및 전자 펜 중 하나 이상을 포함할 수도 있다. 선택적으로, 장치(102 또는 104)는, 하나 이상의 가속도계, 자이로스코프, GPS 시스템, 스피커, 적외선(IR) 센서, 생체인증 센서, 카메라 등과 같은 하나 이상의 센서(130)를 포함할 수도 있다. 입력 장치(128) 또는 센서(130)로서 상기 기술된 다양한 예시적 장치들의 상기 설명은 여기서 설명되는 실시예들의 동작에 어떤 중요성을 갖지 않으며, 여기서 입력 장치로서 기술되는 임의의 입력 또는 센서 장치는 동등하게 센서로서도 기술될 수도 있으며, 그 반대도 마찬가지일 수도 있다는 점에 유의한다. 일부 실시예들에서, 하나 이상의 센서(130)에 의해 생성되는 신호는 이벤트를 검출하기 위한 입력 소스로서 이용된다.
일부 실시예들에서, 전자 장치(104)는 터치 감응 디스플레이(156)(즉, 터치 감응면을 갖는 디스플레이)와 전자 장치(104)에 결합된 하나 이상의 입력 장치(128)를 포함한다. 일부 실시예들에서, 터치 감응 디스플레이(156)는 2개 이상의 별개의 동시발생적(또는 부분적으로 동시발생적) 터치를 검출할 능력을 가지며, 이들 실시예들에서, 디스플레이(156)는 때때로 여기서는 멀티터치 디스플레이 또는 멀티터치 감응 디스플레이라고 불린다.
여기서 논의되는 전자 장치(102 또는 104)의 일부 실시예들에서, 입력 장치(128)는 전자 장치(102 또는 104)에 배치된다. 다른 실시예들에서, 하나 이상의 입력 장치(128)는 전자 장치(102 또는 104)로부터 분리되고 별개이다; 예를 들어, 하나 이상의 입력 장치(128)는 케이블(예를 들어, USB 케이블)에 의해 또는 무선 접속(예를 들어, 블루투스 접속)에 의해 전자 장치(102 또는 104)에 결합될 수도 있다.
입력 장치(128)를 이용할 때, 또는 전자 장치(104)의 터치 감응 디스플레이(156) 상에서 터치 기반의 제스쳐를 수행할 때, 사용자는 전자 장치(102 또는 104)의 하나 이상의 CPU(110)에 의해 처리되는 서브-이벤트들의 시퀀스를 생성한다. 일부 실시예들에서, 전자 장치(102 또는 104)의 하나 이상의 CPU(110)는 이벤트를 인식하기 위해 서브-이벤트들의 시퀀스를 처리한다.
전자 장치(102 또는 104)는 통상 하나 이상의 단일-코어 또는 멀티-코어 처리 유닛("CPU" 또는 "CPU들")(110) 뿐만 아니라 각각 하나 이상의 네트워크나 기타의 통신 인터페이스(112)를 포함한다. 전자 장치(102 또는 104)는 메모리(111)와 이들 컴포넌트들을 상호접속하기 위한 하나 이상의 통신 버스(115)를 각각 포함한다. 통신 버스(115)는 시스템 컴포넌트들(여기서는 미도시)을 상호접속하고 이들간의 통신을 제어하는 회로(때때로 칩셋이라고 함)를 포함할 수도 있다. 앞서 간략하게 논의된 바와 같이, 전자 장치(102 또는 104)는 디스플레이(예를 들어, 디스플레이(126) 또는 터치 감응 디스플레이(156))를 포함하는 사용자 인터페이스(113)를 포함한다. 또한, 전자 장치(102 또는 104)는 통상, 입력 장치(128)(예를 들어, 키보드, 마우스, 터치 감응면, 키패드 등)를 포함한다. 일부 실시예들에서, 입력 장치(128)는 온-스크린 입력 장치(예를 들어, 디스플레이 장치의 터치 감응면)를 포함한다. 메모리(111)는, DRAM, SRAM, DDR RAM 또는 기타의 랜덤 액세스 솔리드 스테이트 메모리 장치와 같은 고속 랜덤 액세스 메모리를 포함할 수도 있으며; 하나 이상의 자기 디스크 저장 장치, 광 디스크 저장 장치, 플래시 메모리 장치 또는 기타의 비휘발성 솔리드 스테이트 저장 장치와 같은 비휘발성 메모리를 포함할 수도 있다. 메모리(111)는, 선택적으로, CPU(들)(110)로부터 원격 위치한 하나 이상의 저장 장치를 포함할 수도 있다. 메모리(111), 또는 대안으로서 메모리(111) 내부의 비휘발성 메모리 장치(들)은, 컴퓨터 판독가능한 저장 매체를 포함한다. 일부 실시예들에서, (전자 장치(102 또는 104)의) 메모리(111)나 메모리(111)의 컴퓨터 판독가능한 저장 매체는 다음과 같은 프로그램, 모듈 및 데이터 구조나, 그 서브세트를 저장한다:
● 다양한 기본적인 시스템 서비스를 처리하고 하드웨어 의존형 태스크를 수행하기 위한 프로시져들을 포함한, 운영 체제(118);
● 전자 장치(102 또는 104)를 각각, 그들의 하나 이상의 각각의 통신 인터페이스(112)(유선 또는 무선), 및 인터넷, 기타의 광역 네트워크, 근거리 통신망(local area network), 중거리 통신망(metropolitan area networks), 등등과 같은 하나 이상의 통신 네트워크를 통해 다른 장치들에 접속하는데 이용되는 통신 모듈(120);
● 디스플레이(126) 또는 터치 감응 디스플레이(156) 상에 사용자 인터페이스 객체를 포함하는 사용자 인터페이스를 디스플레이하는데 이용되는 사용자 인터페이스 모듈(122);
● 프로세스를 제어(예를 들어, 히트 뷰 결정, 쓰레드(thread) 관리, 및/또는 이벤트 모니터링 등))하는데 이용되는 제어 애플리케이션(124); 일부 실시예들에서는 제어 애플리케이션(124)은 런-타임 애플리케이션을 포함한다; 다른 실시예들에서는, 런-타임 애플리케이션은 제어 애플리케이션(124)을 포함한다;
● 운영 체제(118)나 애플리케이션 소프트웨어(132) 내의 다양한 대안적 실시예에서 구현될 수도 있는 이벤트 전달 시스템(130); 그러나, 일부 실시예들에서는, 이벤트 전달 시스템(130)의 일부 양태는 운영 체제(118)에서 구현될 수도 있는 반면 다른 양태들(예를 들어, 이벤트 처리기의 적어도 서브세트)은 애플리케이션 소프트웨어(132)에서 구현된다;
● 하나 이상의 소프트웨어 애플리케이션(예를 들어, 전자메일 애플리케이션, 웹 브라우저 애플리케이션, 텍스트 메시징 애플리케이션 등)을 포함할 수도 있는 애플리케이션 소프트웨어(132); 각각의 소프트웨어 애플리케이션은 통상, 적어도 실행시에, 소프트웨어 애플리케이션의 상태를 나타내는 애플리케이션 상태와, 그 컴포넌트(예를 들어, 제스쳐 인식기 및 델리게이트)를 가진다; 후술되는 애플리케이션 내부 상태(317)(도 3b)를 참조한다;
● 소프트웨어 애플리케이션의 상태와 그 컴포넌트(예를 들어, 제스쳐 인식기 및 델리게이트)를 나타내는 애플리케이션 상태; 어떤 애플리케이션, 뷰 또는 기타의 정보가 터치 감응 디스플레이(156) 또는 디스플레이(126)의 다양한 영역을 점유하는지를 나타내는 디스플레이 상태; 장치의 다양한 센서(130), 입력 장치(128), 및/또는 터치 감응 디스플레이(156)로부터 얻어진 정보를 포함하는 센서 상태; 및 장치의 위치 및/또는 자세에 관한 위치 정보 중에서 하나 이상을 포함하는, 장치/전역 내부 상태(134).
상기 식별된 요소들 각각은 앞서 언급된 메모리 장치들 중 하나 이상에 저장될 수도 있으며, 여기서 기술된 기능들을 수행하기 위한 한 세트의 명령어에 대응한다. 이 명령어 세트는 하나 이상의 프로세서(예를 들어, 하나 이상의 CPU(110))에 의해 실행될 수 있다. 앞서 식별된 모듈들 또는 프로그램들(즉, 명령어 세트)은 별개의 소프트웨어 프로그램들, 프로시져 또는 모듈들로서 구현될 필요는 없으므로, 이들 모듈들의 다양한 서브세트들은 다양한 실시예들에서 결합되거나 그렇지 않으면 재배열될 수도 있다. 일부 실시예들에서, 메모리(111)는 앞서 식별된 모듈들 및 데이터 구조들의 서브세트를 저장할 수도 있다. 또한, 메모리(111)는 전술되지 않은 추가의 모듈과 데이터 구조를 저장할 수도 있다.
도 2는 본 발명의 일부 실시예들에 따른 예시적 전자 장치나 기기(예를 들어, 장치(102 또는 104))의 입력/출력 처리 스택(200)의 도면이다. 장치의 하드웨어(예를 들어, 전자 회로)(212)는 입력/출력 처리 스택(200)의 기저(base) 레벨에 있다. 하드웨어(212)는 도 1a 및/또는 도 1b에 도시된 컴포넌트들과 같은, 다양한 하드웨어 인터페이스 컴포넌트들을 포함할 수 있다. 하드웨어(212)는 또한 앞서 언급된 하나 이상의 센서(130)를 포함할 수 있다. 입력/출력 처리 스택(200)의 다른 모든 요소들(132, 204-210)은 하드웨어(212)로부터 수신된 입력을 처리하고 하드웨어 사용자 인터페이스(예를 들어, 디스플레이, 스피커, 장치 진동 액츄에이터 중 하나 이상)를 통해 제공되는 다양한 출력을 생성하는 소프트웨어 프로시져, 또는 소프트웨어 프로시져의 일부이다.
드라이버 또는 한 세트의 드라이버(210)는 하드웨어(212)와 통신한다. 드라이버(210)는 하드웨어(212)로부터 수신된 입력 데이터를 수신하고 처리할 수 있다. 코어 운영 체제("OS")(208)는 드라이버(들)(210)과 통신할 수 있다. 코어 OS(208)는 드라이버(들)(210)로부터 수신된 미가공(raw) 입력 데이터를 처리할 수 있다. 일부 실시예들에서, 드라이버(210)는 코어 OS(208)의 일부인 것으로 간주될 수 있다.
한 세트의 OS 애플리케이션 프로그래밍 인터페이스("OS API")(206)는 코어 OS(208)와 통신하는 소프트웨어 프로시져들이다. 일부 실시예들에서, API(206)는 장치의 운영 체제에 포함되지만, 코어 OS(208)보다 위의 레벨에 있다. API(206)는 여기서 논의되는 전자 장치 또는 기기 상에서 실행되는 애플리케이션에 의한 사용을 위해 설계된다. 사용자 인터페이스(UI) API(204)는 OS API(206)를 이용할 수 있다. 장치 상에서 실행 중인 애플리케이션 소프트웨어("애플리케이션")(132)는 사용자와 통신하기 위하여 UI API(204)를 이용할 수 있다. UI API(204)는, 차례로, 하위 레벨 요소들과 통신할 수 있고, 궁극적으로는, 다양한 사용자 인터페이스 하드웨어, 예를 들어, 멀티터치 디스플레이(156)와 통신할 수 있다.
각 계층 입력/출력 처리 스택(200)은 그 아래의 계층을 이용할 수 있지만, 이것은 항상 요구되는 것은 아니다. 예를 들어, 일부 실시예들에서, 애플리케이션(132)은 OS API(206)와 때때로 통신할 수 있다. 일반적으로, OS API 계층(206)의 계층 또는 그 위의 계층들은 코어 OS(208), 드라이버(들)(210), 또는 하드웨어(212)에 직접 액세스하지 못할 수도 있는데, 이것은 이들 계층들은 프라이빗(private)으로 간주되기 때문이다. 계층(132) 내의 애플리케이션들과 UI API(204)는 대개 콜(call)을 OS API(206)로 향하게 하고, OS API(206)는, 차례로, 계층들 코어 OS(208), 드라이버(들)(210), 및 하드웨어(212)에 액세스한다.
다른 방식으로 말하자면, 전자 장치(102 또는 104)의 하나 이상의 하드웨어 요소(212), 및 예를 들어, 드라이버(210)(도 2에 도시), 코어 OS(운영 체제)(208)(도 2에 도시), 운영 체제 API 소프트웨어(206)(도 2에 도시), 및 애플리케이션 및 사용자 인터페이스 API 소프트웨어(204)(도 2에 도시)와 같은 장치 상에서 실행 중인 소프트웨어는, 하나 이상의 입력 장치(들)(128) 및/또는 터치 감응 디스플레이(156)에서 (제스쳐에서 서브-이벤트에 대응할 수도 있는) 입력 이벤트를 검출하고, 한 세트의 현재 활성인 이벤트 인식기에 의해 사용되는 (장치(102 또는 104)의 메모리에 저장되는) 다양한 데이터 구조를 생성 또는 업데이트하여 입력 이벤트들이 애플리케이션(132)에 전달되는 이벤트에 대응하는지의 여부와 시기를 결정한다. 이벤트 인식 방법론, 장치 및 컴퓨터 프로그램 제품의 실시예는 이하에서 더 상세히 기술된다.
도 3a는 예시적인 뷰 계층구조(300)를 도시하며, 이것은, 이 예에서는, 최외곽 뷰(302)에 디스플레이된 검색 프로그램이다. 최외곽 뷰(302)는 일반적으로 사용자가 직접 상호작용할 수도 있는 전체 사용자 인터페이스를 에워싸며, 종속 뷰, 예를 들어,
● 검색 결과를 그룹화하고 수직으로 스크롤될 수 있는 검색 결과 패널(304);
● 텍스트 입력을 허용하는 검색 필드(306); 및
● 퀵 액세스를 위한 애플리케이션들을 그룹화하는 홈 행(home row, 310)을 포함한다.
이 예에서, 각각 종속 뷰는 하위 레벨 종속 뷰를 포함한다. 다른 예에서, 계층구조(300) 내의 뷰 레벨의 수는 계층구조의 브랜치들마다 상이할 수 있고, 여기서 하나 이상의 종속 뷰는 하위 레벨 종속 뷰를 가지며, 하나 이상의 다른 종속 뷰는 이러한 임의의 하위 레벨 종속 뷰를 갖지 않을 수도 있다. 도 3a에 도시된 예를 계속하면, 검색 결과 패널(304)은 각각의 검색 결과에 대한 별개의 종속 뷰(305)(패널(304)에 종속됨)를 포함한다. 여기서, 이 예는 맵 뷰(305)라 불리는 종속 뷰에서 하나의 검색 결과를 나타낸다. 검색 필드(306)는 내용 소거 아이콘 뷰(307)라 불리는 종속 뷰를 포함하며, 이것은 사용자가 내용 소거 아이콘 뷰(307) 상에서 특정 액션(예를 들어, 단일 터치 또는 탭 제스쳐)을 수행할 때 검색 필드의 내용을 소거한다. 홈 행(310)은 종속 뷰들(310-1, 310-2, 310-3, 및 310-4)을 포함하며, 이것은, 각각, 연락처 애플리케이션, 전자메일 애플리케이션, 웹 브라우저, 및 iPod 뮤직 인터페이스에 대응한다.
터치 서브-이벤트(301-1)는 최외곽 뷰(302)에 나타나 있다. 검색 결과 패널(304) 및 맵 뷰(305) 양쪽 모두 위의 터치 서브-이벤트(301-1)의 위치를 가정하면, 터치 서브-이벤트는 또한 이들 뷰들 위에 각각 301-2 및 301-3으로서 표현된다. 터치 서브-이벤트의 능동적 참여 뷰(actively involved view)들은, 뷰들 검색 결과 패널(304), 맵 뷰(305), 및 최외곽 뷰(302)를 포함한다. 서브-이벤트 전달 및 능동적 참여 뷰들에 관한 추가 정보는 도 3b 및 도 3c를 참조하여 이하에 제공된다.
뷰(및 대응하는 프로그램 레벨)는 네스팅(nest)될 수 있다. 즉, 뷰는 다른 뷰를 포함할 수 있다. 결과적으로, 제1 뷰와 연관된 소프트웨어 요소(들)(예를 들어, 이벤트 인식기)는 제1 뷰 내의 뷰들과 연관된 하나 이상의 소프트웨어 요소를 포함하거나 이들에 링크될 수 있다. 일부 뷰들은 애플리케이션과 연관될 수 있는 반면, 다른 뷰들은, 그래픽 사용자 인터페이스, 윈도우 관리자 등과 같은, 고수준 OS 요소들과 연관될 수 있다.
도 3b는 일부 실시예들에 따른 이벤트 처리를 위한 예시적 컴포넌트(예를 들어, 이벤트 처리 컴포넌트(390))를 나타내는 블록도이다. 일부 실시예들에서, 메모리(111)(도 1a 및 도 1b)는 이벤트 인식기 전역 메소드(311)(예를 들어, 운영 체제(118) 내) 및 각각의 애플리케이션(132-1)를 포함한다.
일부 실시예들에서, 이벤트 인식기 전역 메소드(311)는 이벤트 모니터(312), 히트 뷰 결정 모듈(313), 활성 이벤트 인식기 결정 모듈(314), 및 이벤트 디스패처 모듈(315)을 포함한다. 일부 실시예들에서, 이벤트 인식기 전역 메소드(311)는 이벤트 전달 시스템(130) 내에 위치한다. 일부 실시예들에서, 이벤트 인식기 전역 메소드(311)는 운영 체제(118)에서 구현된다.
대안으로서, 이벤트 인식기 전역 메소드(311)는 애플리케이션(132-1)에서 구현된다. 역시 또 다른 실시예에서, 이벤트 인식기 전역 메소드(311)는 단독형 모듈로서 구현되거나, 메모리(111)에 저장된 또 다른 모듈(예를 들어, 접촉/움직임 모듈(미도시))의 일부로서 구현된다.
이벤트 모니터(312)는 센서(130), 터치 감응 디스플레이(156), 및/또는 입력 장치(128)로부터 이벤트 정보를 수신한다. 이벤트 정보는, 이벤트에 대한 정보(예를 들어, 멀티터치 제스쳐의 일부 또는 장치(102 또는 104)의 움직임으로서, 터치 감응 디스플레이(156) 상의 사용자 터치) 및/또는 서브-이벤트(예를 들어, 터치 감응 디스플레이(156)를 가로지른 터치의 이동)를 포함한다. 예를 들어, 터치 이벤트에 대한 이벤트 정보는 터치의 위치와 타임 스탬프 중 하나 이상을 포함한다. 마찬가지로, 스와이프(swipe) 이벤트에 대한 이벤트 정보는 스와이프의 위치, 타임 스탬프, 방향, 및 속도 중 2개 이상을 포함한다. 센서(130), 터치 감응 디스플레이(156), 및 입력 장치(128)는, 이벤트 모니터(312)에 직접, 또는 이벤트 정보를 검색하고 저장하는 주변장치 인터페이스를 통해, 정보 이벤트 및 서브-이벤트 정보를 전송한다. 센서(130)는 근접 센서, 가속도계(들), 자이로스코프, 마이크로폰, 및 비디오 카메라 중 하나 이상을 포함한다. 일부 실시예들에서, 센서(130)는 또한, 입력 장치(128) 및/또는 터치-감응 디스플레이(156)를 포함한다.
일부 실시예들에서, 이벤트 모니터(312)는 미리결정된 간격으로 센서(130) 및/또는 주변장치 인터페이스에 요청을 전송한다. 응답하여, 센서(130) 및/또는 주변장치 인터페이스는 이벤트 정보를 전송한다. 다른 실시예들에서, 센서(130) 및 주변장치 인터페이스는, 중요한 이벤트가 있을 때에만(예를 들어, 미리결정된 노이즈 임계를 넘는 및/또는 미리결정된 지속기간 이상의 입력을 수신하는 것) 이벤트 정보를 전송한다.
이벤트 모니터(312)는 이벤트 정보를 수신하고 그 이벤트 정보를 전달할 애플리케이션(132-1) 및 애플리케이션(132-1)의 애플리케이션 뷰(316-2)를 결정한다.
일부 실시예들에서, 이벤트 인식기 전역 메소드(311)는 또한 히트 뷰 결정 모듈(313) 및/또는 활성 이벤트 인식기 결정 모듈(314)을 포함한다.
히트 뷰 결정 모듈(313)은, 터치 감응 디스플레이(156)가 하나 보다 많은 뷰를 디스플레이할 때, 하나 이상의 뷰 내에서 이벤트 또는 서브-이벤트가 발생하는 장소를 결정하기 위한 소프트웨어 프로시져를 제공한다. 뷰들은, 제어 요소와, 사용자가 디스플레이 상에서 볼 수 있는 기타의 요소들로 구성된다.
애플리케이션(132-1)과 연관된 사용자 인터페이스의 또 다른 양태는 세트 뷰(set view, 316)로서, 때때로 여기서는 애플리케이션 뷰 또는 사용자 인터페이스 윈도우라고 불리며, 여기에 정보가 표시되고, 터치 기반의 제스쳐가 발생한다. 터치가 검출되는 (각각의 애플리케이션의) 애플리케이션 뷰는 애플리케이션의 뷰 계층구조 내의 특정한 뷰에 대응할 수도 있다. 예를 들어, 터치가 검출되는 최하위 레벨 뷰는 히트 뷰(hit view)라 불리고, 적절한 입력으로서 인식되는 이벤트 세트는, 적어도 부분적으로, 터치 기반의 제스쳐를 시작하는 초기 터치의 히트 뷰에 기초하여 결정될 수도 있다.
히트 뷰 결정 모듈(313)은 이벤트 및/또는 서브-이벤트에 관련된 정보를 수신한다. 애플리케이션이 계층구조로 조직화된 다수의 뷰를 가질 때, 히트 뷰 결정 모듈(313)은 히트 뷰를 이벤트나 서브-이벤트를 처리해야 하는 계층구조 내의 최하위 뷰로서 식별한다. 대부분의 상황에서, 히트 뷰는 개시 이벤트나 서브-이벤트가 발생하는 최하위 레벨 뷰이다(즉, 제스쳐를 형성하는 이벤트 및/또는 서브-이벤트의 시퀀스 내의 첫 번째 이벤트 또는 서브-이벤트). 일단 히트 뷰가 히트 뷰 결정 모듈에 의해 식별되면, 히트 뷰는 통상적으로, 히트 뷰라고 식별되었던 입력 소스나 동일한 터치에 관련된 모든 이벤트 및/또는 서브-이벤트를 수신한다.
활성 이벤트 인식기 결정 모듈(314)은, 뷰 계층구조 내에서 어느 뷰 또는 뷰들이 이벤트 및/또는 서브-이벤트의 특정한 시퀀스를 수신해야 하는지를 결정한다. 일부 애플리케이션 정황에서, 활성 이벤트 인식기 결정 모듈(314)은 히트 뷰만이 이벤트 및/또는 서브-이벤트의 특정한 시퀀스를 수신해야 한다고 결정한다. 다른 애플리케이션 정황에서는, 활성 이벤트 인식기 결정 모듈(314)은 이벤트나 서브-이벤트의 물리적 위치를 포함하는 모든 뷰는 능동적 참여 뷰라고 결정하므로, 모든 능동적 참여 뷰는 이벤트 및/또는 서브-이벤트의 특정한 시퀀스를 수신해야 한다고 결정한다. 다른 애플리케이션 정황에서, 만일 터치 이벤트 및/또는 서브-이벤트가 하나의 특정한 뷰와 연관된 영역으로 완전히 제한되더라도, 계층구조 내의 더 높은 뷰들은 여전히 능동적 참여 뷰로서 남아 있다.
이벤트 디스패처 모듈(315)은 이벤트 정보를 이벤트 인식기(여기서는 "제스쳐 인식기"라고도 함)(예를 들어, 이벤트 인식기 320-1)에 송달한다. 활성 이벤트 인식기 결정 모듈(314)을 포함하는 실시예들에서, 이벤트 디스패처 모듈(315)은 활성 이벤트 인식기 결정 모듈(314)에 의해 결정된 이벤트 인식기에 이벤트 정보를 전달한다. 일부 실시예들에서, 이벤트 디스패처 모듈(315)은 이벤트 큐 내에 이벤트 정보를 저장하고, 이것은 각각의 이벤트 인식기(320)(또는 각각의 이벤트 인식기(320) 내의 이벤트 수신기(331))에 의해 회수된다.
일부 실시예들에서, 애플리케이션(132-1)은, 애플리케이션이 활성이거나 실행 중일 때 터치 감응 디스플레이(156) 상에 디스플레이된 현재의 애플리케이션 뷰(들)을 가리키는 애플리케이션 내부 상태(317)를 포함한다. 일부 실시예들에서, 장치/전역 내부 상태(134)는 어떤 애플리케이션(들)이 현재 활성인지를 결정하기 위해 이벤트 인식기 전역 메소드(311)에 의해 사용되며, 애플리케이션 내부 상태(317)는 이벤트 정보를 전달할 애플리케이션 뷰(316)를 결정하기 위해 이벤트 인식기 전역 메소드(311)에 의해 사용된다.
일부 실시예들에서, 애플리케이션 내부 상태(317)는, 애플리케이션(132-1)이 실행을 재개할 때 사용될 재개 정보, 애플리케이션(132-1)에 의한 표시에 준비되거나 표시 중인 정보를 가리키는 사용자 인터페이스 상태 정보, 애플리케이션(132-1)의 이전 상태나 뷰로 사용자가 되돌아갈 수 있게 하기 위한 상태 큐, 및 사용자에 의해 취해진 이전 액션들의 재실행(redo)/실행취소(undo) 큐 중 하나 이상과 같은, 추가의 정보(예를 들어, 도 3c의 344)를 포함한다. 일부 실시예들에서, 애플리케이션 내부 상태(317)는 정황 정보/텍스트 및 메타데이터(318)를 더 포함한다.
일부 실시예들에서, 애플리케이션(132-1)은 하나 이상의 애플리케이션 뷰(316)를 포함하며, 그 각각은 애플리케이션의 사용자 인터페이스의 각각의 뷰 내부에서 발생하는 터치 이벤트를 처리하기 위한 명령어를 포함한다. 애플리케이션(132-1)의 적어도 하나의 애플리케이션 뷰(316)는 하나 이상의 이벤트 인식기(320) 및 하나 이상의 이벤트 처리기(322)를 포함한다. 통상적으로, 각각의 애플리케이션 뷰(316)는 복수의 이벤트 인식기(320)와 복수의 이벤트 처리기(322)를 포함한다. 다른 실시예들에서, 하나 이상의 이벤트 인식기(320)는, 사용자 인터페이스 키트(미도시) 또는 애플리케이션(132-1)이 메소드나 기타의 속성을 상속받는 상위 레벨 객체와 같은, 별개의 모듈의 일부이다. 일부 실시예들에서, 각각의 애플리케이션 뷰(316)는 또한, 데이터 갱신기, 객체 갱신기, GUI 갱신기 및/또는 수신된 이벤트 데이터 중 하나 이상을 포함한다.
각각의 이벤트 인식기(320-1)는 이벤트 디스패처 모듈(315)로부터 이벤트 정보를 수신하고, 그 이벤트 정보로부터 이벤트를 식별한다. 이벤트 인식기(320-1)는 이벤트 수신기(331)와 이벤트 비교기(332)를 포함한다.
이벤트 정보는 이벤트(예를 들어, 터치)나 서브-이벤트(예를 들어, 터치 이동)에 대한 정보를 포함한다. 이벤트 또는 서브-이벤트에 따라, 이벤트 정보는 또한 이벤트나 서브-이벤트의 위치와 같은 추가의 정보를 포함한다. 이벤트 또는 서브-이벤트가 터치의 이동에 관한 것일 때, 이벤트 정보는 또한 서브-이벤트의 속도와 방향을 포함할 수도 있다. 일부 실시예들에서, 이벤트는 한 배향으로부터 다른 배향(예를 들어, 초상화 배향으로부터 풍경화 배향, 또는 그 반대)으로의 장치의 회전을 포함하며, 이벤트 정보는 장치의 현재 배향(장치 자세라고도 함)에 관한 대응하는 정보를 포함한다.
이벤트 비교기(332)는 이벤트 정보를 하나 이상의 미리정의된 제스쳐 정의(여기서는 "이벤트 정의"라고도 함)와 비교하고, 이 비교에 기초하여, 이벤트나 서브-이벤트를 결정하거나, 이벤트나 서브-이벤트의 상태를 결정 또는 갱신한다. 일부 실시예들에서, 이벤트 비교기(332)는 하나 이상의 제스쳐 정의(333)(전술된 바와 같이, 여기서는 "이벤트 정의"라고도 함)를 포함한다. 제스쳐 정의(333)는, 제스쳐의 정의(예를 들어, 이벤트 및/또는 서브-이벤트들의 미리정의된 시퀀스), 예를 들어, 제스쳐 1(334-1), 제스쳐 2(334-2), 및 기타를 포함한다. 일부 실시예들에서, 제스쳐 정의(333) 내의 서브-이벤트들은, 예를 들어, 터치 시작, 터치 종료, 터치 이동, 터치 취소, 및 다중 터치를 포함한다. 한 예에서, 제스쳐 1(334-1)에 대한 정의는 표시된 객체 상의 더블 탭이다. 더블 탭은, 예를 들어, 제스쳐의 미리결정된 페이즈 동안에 표시된 객체 상의 제1 터치(터치 시작), 제스쳐의 다음 미리결정된 페이즈 동안의 제1 들어-올림(터치 종료), 제스쳐의 후속하는 미리결정된 페이즈 동안의 표시된 객체 상의 제2 터치(터치 시작), 및 제스쳐의 마지막 미리결정된 페이즈 동안의 제2 들어-올림(터치 종료)을 포함한다. 또 다른 예에서, 제스쳐 2(334-2)에 대한 정의는 표시된 객체 상의 드래깅(dragging)이다. 드래깅은, 예를 들어, 표시된 객체 상의 터치(또는 접촉), 터치-감응 디스플레이(156)를 가로지른 터치의 이동, 및 터치의 들어-올림(터치 종료)을 포함한다.
일부 실시예들에서, 이벤트 인식기(320-1)는 또한 이벤트 전달(335)을 위한 정보를 포함한다. 이벤트 전달(335)을 위한 정보는 대응하는 이벤트 처리기(322)의 참조를 포함한다. 선택적으로, 이벤트 전달(335)을 위한 정보는 액션-타겟 쌍(들)을 포함한다. 일부 실시예들에서, 제스쳐(또는 제스쳐의 일부)를 인식하는 것에 응답하여, 이벤트 정보(예를 들어, 액션 메시지(들))가 액션-타겟 쌍(들)에 의해 식별된 하나 이상의 타겟에 전송된다. 다른 실시예들에서, 제스쳐(또는 제스쳐의 일부)를 인식하는 것에 응답하여, 액션-타겟 쌍(들)이 활성화된다.
일부 실시예들에서, 제스쳐 정의(333)는 각각의 사용자-인터페이스 객체에 대한 제스쳐의 정의를 포함한다. 일부 실시예들에서, 이벤트 비교기(332)는 어느 사용자 인터페이스 객체가 서브-이벤트와 연관되어 있는지를 결정하기 위해 히트 테스트(hit test)를 수행한다. 예를 들어, 터치 감응 디스플레이(156) 상에 3개의 사용자 인터페이스 객체가 표시되어 있는 애플리케이션 뷰에서, 터치 감응 디스플레이(156) 상에서 터치가 검출되면, 이벤트 비교기(332)는, 만약 있다면, 3개의 사용자 인터페이스 객체 중, 어느 것이 터치 (이벤트)와 연관되어 있는지를 결정하기 위해 히트 테스트를 수행한다. 만일 각각의 표시된 객체가 각각의 이벤트 처리기(322)와 연관되어 있다면, 이벤트 비교기(332)는 어느 이벤트 처리기(322)가 활성화되어야 하는지를 결정하기 위해 히트 테스트의 결과를 이용한다. 예를 들어, 이벤트 비교기(332)는 히트 테스트를 트리거링한 객체와 이벤트와 연관된 이벤트 처리기(322)를 선택한다.
일부 실시예들에서, 각각의 제스쳐(333)에 대한 정의는 또한, 이벤트 및/또는 서브-이벤트의 시퀀스가 이벤트 인식기의 이벤트 타입에 대응하는지의 여부가 결정된 후까지 이벤트 정보의 전달을 지연하는 지연된 액션을 포함한다.
각각의 이벤트 인식기(320-1)가 일련의 이벤트 및/또는 서브-이벤트가 제스쳐 정의(333) 내의 어떠한 이벤트와도 정합하지 않는다고 판정하면, 각각의 이벤트 인식기(320-1)는 이벤트 실패 상태로 진입하고, 그 후, 각각의 이벤트 인식기(320-1)는 터치 기반의 제스쳐의 후속하는 이벤트 및/또는 서브-이벤트를 무시한다. 이 상황에서, 만약 있다면, 히트 뷰에 대해 여전히 활성으로 남아 있는 다른 이벤트 인식기들은, 진행중인 터치 기반의 제스쳐의 이벤트 및/또는 서브-이벤트들을 계속 추적 및 처리한다.
일부 실시예들에서, 각각의 이벤트 인식기(320-1)는 이벤트 인식기 상태(336)를 포함한다. 이벤트 인식기 상태(336)는 각각의 이벤트 인식기(320-1)의 상태를 포함한다. 이벤트 인식기 상태들의 예는 도 4a 내지 도 4d를 참조하여 이하에서 더 상세히 기술된다.
일부 실시예들에서, 이벤트 인식기 상태(336)는 인식기 메타데이터 및 속성(337-1)을 포함한다. 일부 실시예들에서, 인식기 메타데이터 및 속성(337-1)은 다음 중 하나 이상을 포함한다: A) 이벤트 전달 시스템이 능동적 참여 이벤트 인식기들로의 이벤트 및/또는 서브-이벤트의 전달을 어떻게 수행해야 하는지를 나타내는 구성가능한 속성, 플래그, 및/또는 리스트; B) 이벤트 인식기들이 어떻게 서로 상호작용하는지를 나타내는 구성가능한 속성, 플래그, 및/또는 리스트; C) 이벤트 인식기들이 이벤트 정보를 어떻게 수신하는지를 나타내는 구성가능한 속성, 플래그, 및/또는 리스트; D) 이벤트 인식기들이 제스쳐를 어떻게 인식하는지를 나타내는 구성가능한 속성, 플래그, 및/또는 리스트; E) 이벤트 및/또는 서브-이벤트들이 뷰 계층구조 내의 다양한 레벨들에 전달될지의 여부를 나타내는 구성가능한 속성, 플래그, 및/또는 리스트; 및 F) 대응하는 이벤트 처리기(322)의 참조.
일부 실시예들에서, 이벤트 인식기 상태(336)는 이벤트/터치 메타데이터(337-2)를 포함한다. 이벤트/터치 메타데이터(337-2)는, 검출된 각각의 이벤트/터치에 대한 이벤트/터치 정보를 포함하고 제스쳐 정의(333)에 대응한다. 이벤트/터치 정보는, 각각의 이벤트/터치의 위치, 타임 스탬프, 속도, 방향, 거리, 스케일(또는 스케일 변화) 및 각도(또는 각도 변화) 중에서 하나 이상을 포함한다.
일부 실시예들에서, 각각의 애플리케이션 뷰는 하나 이상의 델리게이트(321)를 포함한다. 각각의 델리게이트(321)는 각각의 이벤트 인식기(320)에 할당된다. 대안으로서, 각각의 이벤트 인식기(320)는 대응하는 델리게이트(321)를 갖지만, 델리게이트(321)는 실행시 각각의 인식기(320)에 반드시 할당되는 것은 아니고, 대신에 이벤트 인식기에 대한 델리게이트는 애플리케이션의 실행 이전에 확립될 수도 있다(예를 들어, 이벤트 인식기에 대한 델리게이트는, 애플리케이션 뷰의 델리게이트 속성에 의해 표시되고, 대응하는 애플리케이션 뷰(316)가 초기화될 때 확립될 수도 있다). 일부 실시예들에서, 일부 이벤트 인식기는 할당된(또는 대응하는) 델리게이트를 갖지 않는다. 대응하는 델리게이트가 없는 이벤트 인식기는, 이벤트 인식 배타성(event recognition exclusivity)을 지배하는 디폴트 룰(default rule)과 같은, 디폴트 룰에 따라 수행한다. 일부 실시예들에서, 일부 이벤트 인식기는 다수의 할당된(또는 대응하는) 델리게이트를 가진다. 델리게이트는 대응하는 이벤트 인식기의 행동을 수정하고, 복수의 이벤트 인식기의 행동을 조율하는데에도 이용될 수 있다. 이하에 설명되는 일부 실시예들에서, 델리게이트는, 각각의 이벤트 인식기에 할당될 때, 각각의 이벤트 인식기의 동작의 다수의 양태를 수정한다.
일부 실시예들에서, 각각의 이벤트 인식기(320)는, 제스쳐의 하나 이상의 특정한 이벤트 및/또는 서브-이벤트가 인식될 때 각각의 이벤트 인식기(320)와 연관된 이벤트 처리기(322)를 활성화한다. 일부 실시예들에서, 각각의 이벤트 인식기(320)는 이벤트와 연관된 이벤트 정보를 이벤트 처리기(322)에 전달한다.
이벤트 처리기(322)는, 활성화될 때, 데이터의 생성 및/또는 갱신, 객체의 생성 및 갱신, 디스플레이 정보를 준비하고 디스플레이(126)나 터치 감응 디스플레이(156) 상에서의 표시를 위해 전송하는 것 중 하나 이상을 수행한다.
일부 실시예들에서, 각각의 애플리케이션 뷰(316-2)는 뷰 메타데이터(323)를 포함한다. 뷰 메타데이터(323)는 뷰에 관한 데이터를 포함한다. 선택적으로, 뷰 메타데이터는, 이벤트 인식이로의 이벤트 및/또는 서브-이벤트 전달에 영향을 주는 다음과 같은 속성들을 포함한다.
● 뷰에 대해 세트될 때, 뷰 계층구조에서 그 조상뿐만 아니라 뷰와 연관된 이벤트 인식기들로의 이벤트 및/또는 서브-이벤트의 전달을 방지하는 정지 속성(stop property; 324-1);
● 뷰에 대해 세트될 때, 뷰와 연관된 이벤트 인식기들로의 이벤트 및/또는 서브-이벤트의 전달을 방지하지만, 뷰 계층구조에서 그 조상으로의 이벤트 및/또는 서브-이벤트의 전달을 허용하는 스킵 속성(skip property; 324-2);
● 뷰에 대해 세트될 때, 뷰가 히트 뷰가 아니라면 뷰와 연관된 이벤트 인식기들로의 이벤트 및/또는 서브-이벤트들의 전달을 방지하는 노히트 스킵 속성(NoHit skip property; 324-3); 전술된 바와 같이, 히트 뷰 결정 모듈(313)은 히트-뷰를 서브-이벤트를 처리해야 하는 계층구조 내의 최하위 뷰로서 식별한다;
● 기타의 뷰 메타데이터(324-4).
일부 실시예들에서, 뷰 계층구조 내의 제1 능동적 참여 뷰는 그 제1 능동적 참여 뷰와 연관된 이벤트 인식기들로의 각각의 서브-이벤트의 전달을 방지하도록 구성될 수도 있다. 이러한 행동은 스킵 속성(324-2)을 구현할 수 있다. 애플리케이션 뷰에 대해 스킵 속성이 세트되면, 뷰 계층구조 내의 다른 능동적 참여 뷰들과 연관된 이벤트 인식기들에 대해 각각의 서브-이벤트의 전달은 여전히 수행된다.
대안으로서, 뷰 계층구조 내의 제1 능동적 참여 뷰는, 그 제1 능동적 참여 뷰가 히트 뷰가 아니라면 제1 능동적 참여 뷰와 연관된 이벤트 인식기들로의 각각의 서브-이벤트의 전달을 방지하도록 구성될 수도 있다. 이러한 행동은 노히트 스킵 속성(324-3)을 구현할 수 있다.
일부 실시예들에서, 뷰 계층구조 내의 제2 능동적 참여 뷰는, 그 제2 능동적 참여 뷰와 연관된 이벤트 인식기와 그 제2 능동적 참여 뷰의 조상들과 연관된 이벤트 인식기들로의 각각의 서브-이벤트의 전달을 방지하도록 구성된다. 이러한 행동은 정지 속성(324-1)을 구현할 수 있다.
터치 감응 디스플레이 상의 사용자 터치의 이벤트 처리에 관한 앞선 논의는, 모두가 터치 스크린 상에서 개시되는 것은 아닌 입력 장치들을 갖는 전자 장치(102 또는 104)를 작동하기 위해 다른 형태의 사용자 입력, 예를 들어, 단일의 또는 다수의 키보드 누름이나 유지를 동반하거나 동반하지 않는 마우스 이동 및 마우스 버튼 누름의 조정, 터치 패드 상에서의 탭, 드래그, 스크롤 등과 같은 사용자 움직임, 펜 스타일러스 입력, 장치의 움직임(예를 들어, 회전), 구두 명령, 검출된 안구 움직임, 생체인증 입력 및/또는 이들의 임의의 조합에도 적용될 수 있으며, 이들은 인식될 제스쳐를 정의하는 이벤트 및/또는 서브-이벤트에 대응하는 입력으로서 이용될 수도 있다는 점을 이해해야 한다.
도 3c는 일부 실시예들에 따른 제스쳐 인식기(예를 들어, 이벤트 처리 컴포넌트(390))의 예시적 클래스와 인스턴스를 나타내는 블록도이다.
소프트웨어 애플리케이션(예를 들어, 애플리케이션(132-1))은 하나 이상의 이벤트 인식기(340)를 가진다. 일부 실시예들에서, 각각의 이벤트 인식기(예를 들어, 340-2)는 이벤트 인식기 클래스이다. 각각의 이벤트 인식기(예를 들어, 340-2)는 이벤트 인식기 특유 코드(341)(예를 들어, 이벤트 인식기의 동작을 정의하는 한 세트의 명령어) 및 상태 머신(342)을 포함한다.
일부 실시예들에서, 소프트웨어 애플리케이션(예를 들어, 애플리케이션(132-1))의 애플리케이션 상태(317)는 이벤트 인식기의 인스턴스를 포함한다. 이벤트 인식기의 각각의 인스턴스는 상태(예를 들어, 이벤트 인식기 상태(336))를 갖는 객체이다. 각각의 이벤트 인식기 인스턴스의 "실행"은, 대응하는 이벤트 인식기 특유의 코드(예를 들어, 341)를 실행하고 이벤트 인식기 인스턴스(343)의 상태(336)를 갱신하거나 유지함으로써 구현된다. 이벤트 인식기 인스턴스(343)의 상태(336)는 이벤트 인식기 인스턴스의 상태 머신(342)의 상태(338)를 포함한다.
일부 실시예들에서, 애플리케이션 상태(317)는 복수의 이벤트 인식기 인스턴스(343)를 포함하고, 각각은 애플리케이션의 뷰에 결속된("부착된"이라고도 함) 이벤트 인식기에 대응한다. 일부 실시예들에서, 애플리케이션 상태(317)는 각각의 이벤트 인식기(예를 들어, 340-2)의 복수의 인스턴스(예를 들어, 343-1 내지 343-L)를 포함한다. 일부 실시예들에서, 애플리케이션 상태(317)는 복수의 이벤트 인식기(예를 들어, 340-1 내지 340-R)의 인스턴스(343)를 포함한다.
일부 실시예들에서, 제스쳐 인식기의 각각의 인스턴스(343-2)는 이벤트 인식기 상태(336)를 포함한다. 앞서 논의된 바와 같이, 이벤트 인식기 상태(336)는 인식기 메타데이터 및 속성(337-1)과 이벤트/터치 메타데이터(337-2)를 포함한다. 이벤트 인식기 상태(336)는 또한, 제스쳐 인식기의 각각의 인스턴스(343-2)가 어느 뷰에 부착되는지를 가리키는, 뷰 계층구조 참조(들)(337-3)을 포함한다.
일부 실시예들에서, 인식기 메타데이터 및 속성(337-1)은, 하기의 것들, 또는 그 서브세트가나 수퍼셋을 포함한다:
● 배타성 플래그(exclusivity flag; 339): 이벤트 인식기에 대해 세트될 때, 이벤트 인식기에 의한 제스쳐의 인식시에, 이벤트 전달 시스템이 (예외 리스트(353)에 나열된 기타 임의의 이벤트 인식기를 제외한) 능동적 참여 뷰들의 기타 임의의 이벤트 인식기들로의 이벤트 및/또는 서브-이벤트의 전달을 중단해야 하는지를 나타냄; 이벤트 또는 서브-이벤트의 수신이, 그 대응하는 배타성 플래그(339)에 의해 표시된 바와 같이, 특정한 이벤트 인식기로 하여금 배타적 상태로 진입하게끔 하면, 후속하는 이벤트 및/또는 서브-이벤트들은 (예외 리스트(353)에 열거된 기타 임의의 이벤트 인식기들 뿐만 아니라) 배타적 상태의 이벤트 인식기에만 전달된다;
● 배타성 예외 리스트(exclusivity exception list; 353): 각각의 이벤트 인식기에 대한 이벤트 인식기 상태(336)에 포함될 때, 만약 있다면, 이 리스트(353)는 각각의 이벤트 인식기가 배타적 상태에 진입한 이후에도 계속 이벤트 및/또는 서브-이벤트를 수신해야 하는 이벤트 인식기 세트를 나타낸다; 예를 들어, 만일 단일 탭 이벤트에 대한 이벤트 인식기가 배타적 상태에 진입하고, 현재 관여된 뷰들이 더블 탭 이벤트에 대한 이벤트 인식기를 포함한다면, 리스트(353)는 더블 탭 이벤트 인식기를 나열하여 단일 탭 이벤트가 검출된 후에도 더블 탭 이벤트가 인식될 수 있게 한다. 따라서, 배타성 예외 리스트(353)는 이벤트 인식기들이 공통된 이벤트 및/또는 서브-이벤트의 시퀀스를 공유하는 상이한 제스쳐를 인식하도록 허용한다. 예를 들어, 단일 탭 제스쳐 인식은 다른 이벤트 인식기들에 의한 더블 탭이나 트리플 탭 제스쳐의 후속 인식을 못하게 하지 않는다.
● 대기 리스트(wait-for list; 351): 각각의 이벤트 인식기에 대한 이벤트 인식기 상태(336)에 포함될 때, 만약 있다면, 이 리스트(351)는, 각각의 이벤트 인식기가 각각의 이벤트를 인식할 수 있기 이전에 이벤트 실패 또는 이벤트 취소 상태로 진입해야 하는 이벤트 인식기 세트를 나타낸다; 사실상, 나열된 이벤트 인식기들은 대기 리스트(351)를 갖는 이벤트 인식기보다 이벤트 인식에 대한 더 높은 우선권을 가진다;
● 지연 터치 개시 플래그(delay touch began flag; 352): 이벤트 인식기에 대해 세트될 때, 이벤트 인식기로 하여금, 이벤트 및/또는 서브-이벤트들의 시퀀스가 이 이벤트 인식기의 제스쳐 타입에 대응하지 않는다고 판정된 후까지, 이벤트 인식기의 각 히트 뷰로의 이벤트 및/또는 서브-이벤트(터치 개시 또는 핑거 다운 서브 이벤트, 및 후속 이벤트 포함)의 전송을 지연하게 한다; 이 플래그는 제스쳐가 인식되는 경우 히트 뷰가 이벤트 및/또는 서브-이벤트들 중 임의의 것을 보는 것을 방지하는데 이용될 수 있다; 이벤트가 인식기가 제스쳐를 인식하는데 실패하면, 터치 개시 서브-이벤트(및 후속하는 터치 종료 서브-이벤트)가 히트 뷰에 전달될 수 있다; 한 예에서, 히트 뷰로의 이러한 서브-이벤트들의 전달은 사용자 인터페이스로 하여금, 객체와 연관된 액션의 호출 없이, 객체를 간단히 하이라이트하게끔 한다;
● 지연 터치 종료 플래그(delay touch end flag; 363): 이벤트 인식기에 대해 세트될 때, 이벤트 인식기로 하여금, 서브-이벤트들의 시퀀스가 이 이벤트 인식기의 이벤트 타입에 대응하지 않는다고 판정될 때까지 이벤트 인식기의 각각의 히트 뷰 또는 레벨로의 서브-이벤트(예를 들어, 터치 종료 서브-이벤트)의 전송을 지연하게끔 한다; 이것은 제스쳐가 늦게 인식되는 경우, 히트 뷰가 터치 종료 서브-이벤트에 작용하는 것을 방지하는데 이용될 수 있다; 터치 종료 서브-이벤트가 전송되지 않는 한, 히트 뷰나 레벨에 터치 취소가 전송될 수 있다; 만일 이벤트가 인식된다면, 애플리케이션에 의한 대응하는 액션이 수행되고, 터치 종료 서브-이벤트가 히트 뷰나 레벨에 전달된다; 및
● 터치 취소 플래그(touch cancellation flag; 364): 이벤트 인식기에 대해 세트될 때, 이벤트 인식기로 하여금, 이벤트 및/또는 서브-이벤트들의 시퀀스가 이 이벤트 인식기의 제스쳐 타입에 대응하지 않는다고 판정될 때 이벤트 인식기의 각각의 히트 뷰에 터치 또는 입력 취소를 전송하게끔 한다; 히트 뷰에 전송된 터치나 입력 취소는, 이전 이벤트 및/또는 서브-이벤트(예를 들어, 터치 개시 서브-이벤트)가 취소되었음을 나타낸다; 터치나 입력 취소는 이벤트 인식기의 상태가 이벤트 취소 상태(418)(도 4b)로 진입하게끔 한다.
일부 실시예들에서, 하나 이상의 이벤트 인식기는, 그 이벤트 인식기가 이벤트를 인식한 후까지 서브-이벤트들의 시퀀스들 중 하나 이상의 서브-이벤트들의 전달을 지연하도록 적합화(adapted)될 수도 있다. 이러한 행동은 지연된 이벤트를 반영한다. 예를 들어, 다중 탭 제스쳐가 가능한 뷰에서 단일 탭 제스쳐를 고려해 보자. 그 경우, 탭 이벤트는 "탭 + 지연" 인식기가 된다. 본질적으로, 이벤트 인식기가 이러한 행동을 구현하면, 이벤트 인식기는, 서브-이벤트들의 시퀀스가 사실상 그 이벤트 정의에 대응한다는 것이 확실할 때까지 이벤트 인식을 지연할 것이다. 이러한 행동은, 수신자 뷰(recipient view)가 취소된 이벤트에 적절히 응답할 수 없을 때 적절할 수도 있다. 일부 실시예들에서, 이벤트 인식기는, 서브-이벤트들의 시퀀스가 그 이벤트 정의에 대응하지 않는다는 것을 이벤트 인식기가 확신할 때까지 그 각각의 능동적 참여 뷰에 대한 이벤트 인식 상태의 갱신을 지연할 것이다. 지연 터치 개시 플래그(352), 지연 터치 종료 플래그(363) 및 터치 취소 플래그(364)는, 이벤트 인식기 및 뷰 상태 정보 갱신 뿐만 아니라 서브-이벤트 전달 기술을 특정한 요구에 맞추기 위해 제공된다.
일부 실시예들에서, 인식기 메타데이터 및 속성(337-1)은, 하기의 것들, 또는 그 서브세트가나 수퍼셋을 포함한다:
● 상태 머신 상태/페이즈(state machine state/phase; 338): 각각의 이벤트 인식기 인스턴스(예를 들어, 343-2)에 대한 상태 머신(예를 들어, 342)의 상태를 나타낸다; 상태 머신 상태/페이즈(338)는 후술되는 바와 같이 "이벤트 가능", "이벤트 인식", "이벤트 실패" 등과 같은 다양한 상태값을 가질 수 있다; 대안으로서 또는 추가적으로, 상태 머신 상태/페이즈(338)는 터치 데이터 구조가 이전 터치 데이터 구조에 의해 참조되지 않았던 새로운 터치를 정의한다는 것을 나타낼 수 있는 "터치 페이즈 개시"와 같은 다양한 페이즈값을 가질 수 있다; "터치 페이즈 이동(touch phase moved)" 값은, 정의된 터치가 이전 위치로부터 이동했음을 나타낼 수 있다; "터치 페이즈 정지"값은 터치가 동일한 위치에 머물렀음을 나타낼 수 있다; "터치 페이즈 종료" 값은 터치가 종료했다(예를 들어, 사용자가 멀티터치 디스플레이의 표면으로부터 자신의 손가락을 들어올렸다)는 것을 나타낼 수 있다; "터치 페이즈 취소 값"은 터치가 장치에 의해 취소되었다는 것을 나타낼 수 있다; 취소된 터치는 반드시 사용자에 의해 종료된 것이 아니라, 장치가 무시하기로 결정한 터치일 수 있다; 예를 들어, 장치는 터치가 부주의로 발생되었다고 판정하고(즉, 휴대형 멀티터치 가능형 장치를 포켓에 둔 결과), 그 이유로 터치를 무시할 수 있다; 상태 머신 상태/페이즈(338)의 각각의 값은 정수(여기서는 "제스쳐 인식기 상태 값")일 수 있다;
● 액션-타겟 쌍(들)(action-target pair(s); 345) : 각각의 쌍은, 이벤트나 터치를 제스쳐나 제스쳐의 일부로서 인식하는 것에 응답하여 각각의 이벤트 인식기 인스턴스가 식별된 액션 메시지를 전송하는 타겟을 식별한다.
● 델리게이트(delegate; 346): 각각의 이벤트 인식기 인스턴스에 델리게이트가 할당될 때 대응하는 델리게이트에 대한 참조이다; 델리게이트가 각각의 이벤트 인식기 인스턴스에 할당되지 않으면, 델리게이트(346)는 널(null) 값을 포함한다;
● 인에이블된 속성(enabled property; 347) : 각각의 이벤트 인식기 인스턴스가 인에이블되어 있는지의 여부를 나타냄; 일부 실시예들에서, 각각의 이벤트 인식기 인스턴스가 인에이블되어 있지 않을 때(예를 들어, 디스에이블), 각각의 이벤트 인식기 인스턴스는 이벤트나 터치를 처리하지 않는다.
일부 실시예들에서, 예외 리스트(353)는 또한 비배타적 이벤트 인식기들에 의해서도 사용될 수 있다. 특히, 비배타적 이벤트 인식기가 이벤트나 서브-이벤트를 인식할 때, 후속하는 이벤트 및/또는 서브-이벤트는, 그 이벤트나 서브-이벤트를 인식한 이벤트 인식기의 예외 리스트(353)에 나열된 배타적 이벤트 인식기들을 제외하고, 현재 활성인 뷰들과 연관된 배타적 이벤트 인식기들에 전달되지 않는다.
일부 실시예들에서, 이벤트 인식기들은, 원치 않는 이벤트 및/또는 서브-이벤트들이 히트 뷰에 전달되는 것을 방지하기 위해 지연 터치 종료 플래그(363)와 연계하여 터치 취소 플래그(364)를 이용하도록 구성될 수도 있다. 예를 들어, 단일 탭 제스쳐의 정의와 더블 탭 제스쳐의 처음 반쪽의 정의는 동일하다. 일단 단일 탭 이벤트 인식기가 단일 탭을 성공적으로 인식하고 나면, 원치 않는 액션이 발생할 수 있다. 만일 지연 터치 종료 플래그가 세트되면, 단일 탭 이벤트 인식기는 단일 탭 이벤트가 인식될 때까지 히트 뷰에 서브-이벤트들을 전송하는 것이 방지된다. 또한, 단일 탭 이벤트 인식기의 대기 리스트는 더블 탭 이벤트 인식기를 식별할 수도 있고, 그렇게 하여, 더블 탭 이벤트 인식기가 이벤트 불가능 상태에 진입할 때까지 단일 탭 이벤트 인식기가 단일 탭을 인식하는 것을 방지할 수 있다. 대기 리스트의 이용은 더블 탭 제스쳐가 수행될 때 단일 탭과 연관된 액션의 실행을 피한다. 대신에, 더블 탭 이벤트의 인식에 응답하여, 더블 탭과 연관된 액션만이 실행될 것이다.
특히 터치-감응면 상의 사용자 터치의 형태로 되돌아가면, 앞서 언급한 바와 같이, 터치와 사용자 제스쳐는 즉각적일 필요가 없는 동작을 포함할 수도 있다, 예를 들어, 터치는 소정 시간 동안 손가락을 디스플레이에 맞대어 이동시키거나 쥐고 있는 동작을 포함할 수 있다. 그러나, 터치 데이터 구조는, 특정한 시간에서 터치의 상태(또는, 더 일반적으로는, 임의의 입력 소스의 상태)를 정의한다. 따라서, 터치 데이터 구조에 저장된 값들은 단일 터치 과정에 걸쳐 변할 수 있으므로, 상이한 시점에서의 단일 터치의 상태가 애플리케이션에 전달되는 것을 가능케한다.
각각의 터치 데이터 구조는 다양한 엔트리를 포함할 수 있다. 일부 실시예들에서, 터치 데이터 구조는 하기의 것, 또는 그 서브세트가나 수퍼셋과 같은, 적어도 터치-특유의 엔트리들에 대응하는 데이터를 이벤트/터치 메타데이터(337-2)에 포함할 수도 있다:
● "뷰에 대한 제1 터치" 엔트리(first touch for view entry; 348): 터치 데이터 구조가 특정한 뷰에 대한 제1 터치를 정의하는지 여부를 나타낸다(뷰가 예시화되었기 때문).
● "터치별 정보" 엔트리(per touch info entry, 349): 터치 데이터 구조가 관련되어 있는 특정한 시간(예를 들어, 터치 시간)을 가리키는 "타임 스탬프" 정보를 포함한다; 선택적으로, "터치별 정보" 엔트리(349)는 대응하는 터치의 위치와 같은 다른 정보를 포함한다; 및
● 선택적 "탭 카운트" 엔트리(tap count entry, 350): 초기 터치의 위치에서 얼마나 많은 탭들이 순차적으로 수행되었는지를 나타낸다; 탭은, 특정한 위치에서 터치 감응 패널에 맞대어 손가락을 신속히 눌렀다가 들어 올리는 것으로서 정의될 수 있다; 만일 패널의 동일한 위치에서 빨리 연속하여 다시 한번 손가락을 눌렀다 떼면, 다중 순차 탭이 발생할 수 있다; 이벤트 전달 시스템(130)은 탭을 카운트하여, "탭 카운트" 엔트리(350)를 통해 이 정보를 애플리케이션에게 중계할 수 있다; 동일한 위치에서의 다수의 탭들은 종종 터치 가능형 인터페이스에 대한 명령을 기억하기에 유용하고 용이한 것으로 여겨진다; 따라서, 탭을 카운팅함으로써, 이벤트 전달 시스템(130)은 다시 한번 애플리케이션으로부터 소정의 데이터 처리를 경감할 수 있다.
따라서, 각각의 터치 데이터 구조는, (위치와 같은) 터치와 연관된 기타의 정보뿐만 아니라, 특정한 시간에서 각각의 터치(또는 기타의 입력 소스)와 함께 무엇이 발생하고 있는지(예를 들어, 터치가 정지 상태인지 이동중인지 등)를 정의할 수 있다. 따라서, 각각의 터치 데이터 구조는 특정한 시점에서 특정한 터치의 상태를 정의할 수 있다. 동일한 시간을 참조하는 하나 이상의 터치 데이터 구조가, 소정 시점에서 특정 뷰가 수신하고 있는 모든 터치의 상태를 정의할 수 있는 터치 이벤트 데이터 구조에 추가될 수 있다(앞서 언급한 바와 같이, 일부 터치 데이터 구조는, 또한 종료하여 더 이상 수신되고 있지 않은 터치를 참조할 수도 있다). 뷰에서 발생하고 있는 터치들을 기술하는 연속 정보를 소프트웨어에 제공하기 위하여, 시간의 경과에 따라 뷰를 구현하는 소프트웨어에 다수의 터치 이벤트 데이터 구조가 전송될 수 있다.
선택적으로 멀티터치 제스쳐를 포함한 복잡한 터치 기반의 제스쳐를 처리하는 능력은, 다양한 소프트웨어 애플리케이션에 복잡성을 추가할 수 있다. 일부 경우에는 진보되고 바람직한 인터페이스 특징을 구현하기 위해 이러한 추가적인 복잡성이 필요할 수 있다. 예를 들어, 게임은 상이한 뷰들에서 발생하는 복수의 동시 터치를 처리하는 능력을 요구할 수도 있는데, 이것은 게임은 종종, 동시에 다수 버튼의 누름의 처리나, 가속도계 데이터와 터치 감응면 상의 터치의 결합을 요구하기 때문이다. 그러나, 일부 더 단순한 애플리케이션 및/또는 뷰는 진보된 인터페이스 특징을 요구할 필요가 없다. 예를 들어, 단순한 소프트 버튼(즉, 터치 감응 디스플레이 상에 표시된 버튼)은 멀티터치 기능보다는 단일 터치에서 만족스럽게 동작할 수 있다. 이들 경우에, 기저 OS는 단일 터치(예를 들어, 소프트 버튼 상의 단일 터치 또는 탭)에 의해서만 동작가능하도록 의도된 뷰와 연관된 소프트웨어 컴포넌트에 불필요하거나 과도한 터치 데이터(예를 들어, 멀티터치 데이터)를 전송할 수도 있다. 소프트웨어 컴포넌트는 이 데이터를 처리할 필요가 있을 수도 있기 때문에, 단일 터치만이 관련되어 있는 뷰와 연관되어 있더라도, 다중 터치를 처리하는 소프트웨어 애플리케이션의 모든 복잡성을 특징으로 할 필요가 있을 수도 있다. 전통적으로 마우스 인터페이스 환경(즉, 다양한 버튼 등)에서 프로그램하기에 용이한 소프트웨어 컴포넌트들은 멀티터치 환경에서는 훨씬 더 복잡하기 때문에, 이것은 장치에 대한 소프트웨어의 개발 비용을 증가시킬 수 있다.
복잡한 터치 기반의 제스쳐를 인식하는데 있어서 복잡성을 줄이기 위해, 일부 실시예들에 따라 이벤트 인식기들의 행동을 제어하기 위해 델리게이트가 사용될 수 있다. 후술되는 바와 같이, 델리게이트는, 예를 들어, 대응하는 이벤트 인식기(또는 제스쳐 인식기)가 이벤트(예를 들어, 터치) 정보를 수신할 수 있는지; 대응하는 이벤트 인식기(또는 제스쳐 인식기)가 상태 머신의 초기 상태(예를 들어, 이벤트 가능 상태)로부터 또 다른 상태로 천이할 수 있는지; 및/또는 대응하는 이벤트 인식기(또는 제스쳐 인식기)가, 다른 이벤트 인식기(들)(또는 제스쳐 인식기(들))이 이벤트를 인식하는 것을 차단하지 않거나 다른 이벤트 인식기(들)(또는 제스쳐 인식기(들))에 의해 이벤트 인식을 차단당하지 않고도, 이벤트(예를 들어, 터치)를 대응하는 제스쳐로서 동시에 인식할 수 있는지를 결정할 수 있다.
그러나, 터치 감응면 상의 사용자 터치들의 평가와 처리의 복잡성에 관한 앞선 논의는 또한, 전자 장치(102 또는 104)를 작동시키기 위한 터치 스크린 상에서 모두가 개시되는 것은 아닌 모든 형태의 사용자 입력들, 예를 들어, 이벤트 및/또는 인식될 이벤트를 정의하는 서브-이벤트들에 대응하는 입력으로서 이용될 수도 있는, 단일의 또는 다수의 키보드 누름이나 유지를 동반하거나 동반하지 않는 마우스 이동 및 마우스 버튼 누름의 조정, 장치의 회전이나 기타의 움직임, 터치 패드 상의 탭, 드래그, 스크롤 등과 같은 사용자 움직임, 펜 스타일러스 입력, 구두 명령, 검출된 안구 움직임, 생체인증 입력, 사용자의 검출된 생리적 변화, 및/또는 이들의 임의의 조합에도 역시 적용된다는 점을 이해하여야 한다.
도 4a 내지 도 4d는 일부 실시예들에 따른, 예시적 상태 머신(state machine)에 대한 플로차트이다. 제스쳐 인식기는 이산 제스쳐 인신기와 연속 제스쳐 인식기를 포함할 수도 있다. 이산 제스쳐 인식기는 통상 미리정의된 기간 내에 발생하는 간단한 제스쳐(예를 들어, 탭이나 스와이프 제스쳐)를 인식하는데 유용하지만, 더욱 근본적으로는 제스쳐의 인식시에 단 하나의 액션 메시지나 한 세트의 액션 메시지가 애플리케이션에 전달될 필요가 있는 제스쳐를 인식하기 위한 것이다. 연속 제스쳐 인식기는 터치의 이동을 포함하는(그에 따라 터치 위치의 추적을 요구하는) 제스쳐의 인식(예를 들어, 팬, 핀치, 또는 회전 제스쳐)에 유용하며, 더욱 근본적으로는, 제스쳐의 과정에 걸쳐 액션 메시지의 시퀀스가 애플리케이션에 전달될 필요가 있는 제스쳐를 인식하기 위한 것이다. 일부 실시예들에서는, 이산 이벤트 인식기 상태 머신(400) 및 연속 이벤트 인식기 상태 머신(402)은 상이한 상태를 가진다.
도 4a는 일부 실시예들에 따른 3개 상태를 포함하는 이산 이벤트 인식기 상태 머신(400)을 나타낸다. 수신된 이벤트 및/또는 서브-이벤트에 기초하여 이벤트 인식기 상태 머신(342)의 상태 천이를 관리함으로써, 이벤트 인식기는 이벤트 정의를 효과적으로 표현한다. 예를 들어, 탭 제스쳐는 2개, 또는 선택적으로, 3개의 서브-이벤트들에 의해 효과적으로 정의될 수도 있다. 첫 번째, 터치가 검출되어야 하고, 이것이 서브-이벤트 1이 될 것이다. 예를 들어, 터치 서브-이벤트는, 이벤트 인식기 상태 머신(342)을 갖는 이벤트 인식기를 포함하는 뷰에서 사용자의 손가락이 터치 감응면을 터치하는 것일 수도 있다. 두 번째, 터치가 임의의 주어진 방향으로 실질적으로 움직이지 않고(예를 들어, 터치 위치의 임의의 이동이, 디스플레이 상에서 거리(예를 들어, 5 mm)로서 또는 픽셀 수(예를 들어, 5 픽셀)로서 측정될 수 있는 미리정의된 임계값보다 작고) 지연이 충분히 짧은 경우, 선택적 측정된 지연은 서브-이벤트 2로서 역할할 것이다. 마지막으로, 터치의 종료(예를 들어, 터치 감응면으로부터의 사용자의 손가락의 들어올림)는 서브-이벤트 3으로서 역할할 것이다. 이들 서브-이벤트들의 수신에 기초하여 상태들 간에 천이하도록 이벤트 인식기 상태 머신(342)을 코딩함으로써, 이벤트 인식기 상태 머신(342)은 탭 제스쳐 이벤트 정의를 효과적으로 표현한다. 이산 이벤트 인식기 상태 머신(400)은, 전술된, 탭 제스쳐를 인식하도록 구성된 이벤트 인식기 상태 머신(342)의 예시적 구현이다.
이벤트 타입에 관계없이, (이산 이벤트 인식기 상태 머신(400)으로서 구현된 이벤트 인식기 상태 머신을 포함한) 이벤트 인식기 상태 머신(342)은, 이벤트 인식기 상태 머신의 초기 상태를 나타내는 이벤트 가능 상태(410)에서 시작한다. 이벤트 인식기 상태 머신(342)은, 어떤 이벤트 및/또는 서브-이벤트가 수신되는지에 따라 임의의 남아 있는 상태들로 진행할 수도 있다.
이벤트 가능 상태(410)로부터 시작하여, 만일 제스쳐 정의에서 제1 이벤트 또는 서브-이벤트가 아닌 이벤트 또는 서브-이벤트가 수신된다면, 이산 이벤트 인식기 상태 머신(400)은 이벤트 실패 상태(430)로 천이할 것이다.
이벤트 가능 상태(410)로부터 시작하여, 만일 제스쳐에 대한 제스쳐 정의를 단독으로 포함하는 이벤트 또는 서브-이벤트가 수신된다면, 이산 이벤트 인식기 상태 머신(400)은 이벤트 인식 상태(420)로 천이할 것이다. 그러나, 수신된 이벤트 또는 서브-이벤트가 제스쳐에 대한 제스쳐 정의를 포함하더라도, 이산 이벤트 인식기 상태 머신(400)은 그럼에도 불구하고 대응하는 이벤트 인식기의 메타데이터(예를 들어, 속성), 대응하는 델리게이트에 의해 결정된 하나 이상의 값, 및/또는 애플리케이션 상태에 따라, 이벤트 실패 상태(430)로 천이할 수도 있다.
일부 실시예들에서, 이벤트 인식 상태(420)로의 천이 후에, 대응하는 이벤트 인식기는 지연 플래그(예를 들어, 지연 터치 종료 플래그(363))를 검사(441)한다. 만일 지연 플래그가 오르면(441-예), 대응하는 이벤트 인식기는 지연 플래그가 내릴 때까지 이벤트 정보의 전달을 지연한다(442).
일부 실시예들에서, 대응하는 이벤트 인식기는 대기 리스트(351)를 포함하고, 대응하는 이벤트 인식기는 소정 상태에 도달하기 위해 대기 리스트(351)에 나열된 이벤트 인식기들을 기다린다. 예를 들어, 뷰가 단일 탭 제스쳐 인식기와 더블 탭 제스쳐 인식기를 포함할 때, 단일 탭 제스쳐 인식기는 더블 탭 제스쳐 인식기가 실패하기를 기다리도록 구성될 수 있다. 사실상, 이벤트 인식 상태(420)로의 단일 탭 제스쳐 인식기의 천이는 더블 탭 제스쳐 인식기의 이벤트 인식 실패를 요구한다(요건으로 한다). 그 결과, 탭 이벤트가 있을 때, 그 탭 이벤트가 멀티탭 제스쳐의 일부가 아닌 한, 단일 탭 제스쳐 인식기는 그 탭 이벤트를 인식한다.
지연 및 대기(442) 후에, 만약 있다면, 대응하는 제스쳐 인식기는 애플리케이션에 이벤트를 전달한다(443). 일부 실시예들에서, 이벤트는 액션 메시지의 형태로 전달된다. 일부 실시예들에서, 액션 메시지는 액션-타겟 쌍(들)(345)에 따라 전달된다. 일부 실시예들에서, 대응하는 제스쳐 인식기는 액션-타겟 쌍(들)(345)을 활성화한다.
도 4b는 일부 실시예들에 따른 6개 상태를 포함하는 연속 이벤트 인식기 상태 머신(402)을 나타낸다.
앞서 논의된 바와 같이, 연속 이벤트 인식기 상태 머신(402)은 이벤트 가능 상태(410)로부터 시작한다.
이벤트 가능 상태(410)로부터 시작하여, 만일 제스쳐 정의에서 이벤트(들) 및/또는 서브-이벤트(들)의 시작 시퀀스의 일부가 아닌 이벤트 또는 서브-이벤트가 수신된다면, 이산 이벤트 인식기 상태 머신(400)은 이벤트 실패 상태(430)로 천이할 것이다.
이벤트 가능 상태(410)로부터 시작하여, 만일 주어진 제스쳐 정의에서 이벤트(들) 및/또는 서브-이벤트(들)의 시작 시퀀스의 일부인 이벤트 또는 서브-이벤트가 수신된다면, 연속 이벤트 인식기 상태 머신(402)은 이벤트 개시 상태(412)로 천이할 것이다. 이산 제스쳐 인식기(400)와 유사하게, 만일 수신된 이벤트 또는 서브-이벤트가 제스쳐 정의에서 이벤트(들) 및/또는 서브-이벤트(들)의 시작 시퀀스의 일부를 포함하더라도, 연속 이벤트 인식기 상태 머신(402)은 대응하는 이벤트 인식기의 메타데이터(예를 들어, 속성), 대응하는 델리게이트에 의해 결정된 하나 이상의 값, 및/또는 애플리케이션 상태에 따라 이벤트 실패 상태(430)로 천이할 수도 있다.
이벤트 개시 상태(412)로부터, 만일 다음 이벤트 또는 서브-이벤트가 주어진 제스쳐 정의에서 중간 이벤트 또는 서브-이벤트이지만, 최종 이벤트 또는 서브-이벤트가 아니라면, 연속 이벤트 인식기 상태 머신(402)은 이벤트 변경 상태(414)로 천이하여 머무를 것이다. 연속 이벤트 인식기 상태 머신(402)은, 수신된 이벤트 및/또는 서브-이벤트의 시퀀스가 계속해서 제스쳐 정의의 일부인 한, 이벤트 변경 상태(414)에 머무를 수 있다. 만일, 연속 이벤트 인식기 상태 머신(402)이 이벤트 변경 상태(414)에 있는 임의의 시간에서, 연속 이벤트 인식기 상태 머신(402)이 제스쳐 정의의 일부가 아닌 이벤트 또는 서브-이벤트를 수신한다면, 연속 이벤트 인식기 상태 머신(402)은 이벤트 실패 상태(430)로 천이함으로써, (만약 있다면) 현재의 이벤트가 이 이벤트 인식기(즉, 연속 이벤트 인식기 상태 머신(402)에 대응하는 이벤트 인식기)에 대응하는 이벤트의 유형이 아니라고 판정하게 된다. 반면, 만일, 연속 이벤트 인식기 상태 머신(402)이 이벤트 개시 상태(412) 또는 이벤트 변경 상태(414)에 있고, 연속 이벤트 인식기 상태 머신(402)이 제스쳐 정의에서 마지막 이벤트 또는 서브-이벤트를 수신한다면, 연속 이벤트 인식기 상태 머신(402)은 이벤트 종료 상태(416)로 천이함으로써, 성공적인 이벤트 인식을 완료하게 된다.
일부 실시예들에서, 각각의 제스쳐 인식기 상태는 제스쳐 인식기 상태값을 가진다. 일부 실시예들에서, (이산 이벤트 인식기 상태 머신(400)에 대한) 이벤트 인식 상태(420) 및 (연속 이벤트 인식기 상태 머신(402)에 대한) 이벤트 종료 상태(416)는, 한 타입의 제스쳐 인식기에 의한 제스쳐의 인식에 응답하도록 구성된 소프트웨어 컴포넌트가 다른 타입의 제스쳐 인식기에도 응답할 수 있도록, 동일한 제스쳐 인식기 상태값을 가진다.
이벤트 개시 상태(412) 또는 이벤트 변경 상태(414)에서, 미리정의된 중단(interruption) 이벤트(예를 들어, 운영 체제(118) 또는 제어 애플리케이션(124)에서 미리정의된, 착신 전화 통화 등)이 발생하면, 연속 이벤트 인식기 상태 머신(402)은 이벤트 취소 상태(418)로 천이한다.
제스쳐 인식기 타입에 관계없이, 각각의 제스쳐 인식기(예를 들어, 343)는, 대응하는 이벤트 인식기 상태 머신(예를 들어, 342)이 이벤트 가능 상태(410)로 되돌아가도록 리셋될 수 있다.
도 4c 및 도 4d는 일부 실시예들에 따른 상태 천이에서의 델리게이트의 역할을 도시한다. 도 4c 및 도 4d에서, 하나 이상의 델리게이트에 의한 액션(또는 결정)은 음영진 박스(예를 들어, 450-456)에 의해 표시된다.
도 4c는 일부 실시예에 따른 이산 이벤트 인식기 상태 머신(400)에 대한 상태 천이에서 델리게이트의 역할을 도시한다. 이하에서 논의되는 예들에서, 상태 머신(400)은 대응하는 델리게이트를 갖는 특정의 이산 이벤트 인식기에 대응한다.
이벤트 가능 상태(410)로부터 시작하여, 만일 이벤트 또는 서브-이벤트가 검출되면, 이벤트 인식기에 대응하는 델리게이트는 이벤트 인식기가 이벤트 또는 서브-이벤트를 수신해야 할지를 결정한다(450). 만일 델리게이트가, 대응하는 이벤트 인식기가 이벤트 또는 서브-이벤트를 수신하지 못하게 하는 값을 반환한다면, 대응하는 이벤트 인식기는 이벤트 또는 서브-이벤트를 수신하지 않는다(또는, 이벤트 또는 서브-이벤트를 무시한다). 그 결과, 대응하는 이벤트 인식기는 이벤트 가능 상태(410)에 머무른다. 만일 대응하는 이벤트 인식기가 이벤트 또는 서브-이벤트를 수신하지 못하게 하는 델리게이트가 없다면, 대응하는 이벤트 인식기에 대한 디폴트 동작은 이벤트 또는 서브-이벤트를 수신하는 것이다.
한 세트의 이벤트 인식기들의 델리게이트들에 의한 "수신해야 하는가" 동작(450)은 어떤 이벤트 인식기가 터치 감응 디스플레이 또는 감응면 상의 어떤 터치를 수신할 것인지를 결정하는데 이용될 수 있다는 점에 유의한다. 예를 들어, 사용자가 2개의 터치를 이용하여 2개의 객체를 개별적으로 또는 동시에 재위치설정하거나 2개의 상이한 객체를 선택하는 것을 허용하는 뷰에서, 2개의 이벤트 인식기들의 델리게이트는, 하나의 이벤트 인식기는 2개의 터치 중 첫번째 터치만을 수신하는 것을 허용하고, 두번째 이벤트 인식기는 2개의 터치 중 두번째 것만을 수신하는 것을 허용하도록 구성될 수 있다. 따라서 2개의 터치들 각각에 대한 모든 정보는, 그 대응하는 델리게이트에 의해, 그 터치를 수신하도록 허용된 이벤트 인식기로만 향한다. 다수의 이벤트 인식기와 어느 터치가 어느 이벤트 인식기에 의해 처리되는지를 결정하는 대응하는 델리게이트의 이용에 의해, 훨씬 더 복잡한 멀티터치 입력이 인식되고 처리될 수 있다.
만일 이벤트 인식기가 이벤트 또는 서브-이벤트를 수신하는 것이 허용되면, 이벤트 인식기(또는 제어 애플리케이션(124) 또는 운영 체제(118))에 대응하는 델리게이트는, 이벤트 인식기에 의한 이벤트 또는 서브-이벤트의 인식이 그 이벤트를 이미 인식한 또 다른 이벤트 인식기에 의해 차단될지를 결정한다(451). 이러한 초기 레벨의 차단은 디폴트 배타성 룰에 기초하며, 델리게이트에 의해 무효화될 수 있다. 만일 이벤트 또는 서브-이벤트의 인식이 차단된다면, 대응하는 델리게이트(또는 운영 체제(118) 또는 제어 애플리케이션(124))는 또한, 델리게이트에 의해 결정된 하나 이상의 값에 따라 이벤트 인식기에 의한 이벤트의 동시 인식이 허용될지를 결정한다(452). 예를 들어, 만일 이벤트 인식기가 처음에 그 이벤트를 인식했던 이벤트 인식기의 배타성 예외 리스트(353)에 있다면, 델리게이트는 양쪽 이벤트 인식기들에 의한 동시 인식을 허용한다. 또 다른 예에서, 만일 이벤트 인식기의 배타성 플래그(339)가 세트되어 있지 않다면, 델리게이트는 양쪽 이벤트 인식기들에 의한 동시 인식을 허용한다. 만일 동시 인식이 허용되지 않으면, 이벤트 인식기는 이벤트 실패 상태(430)로 천이한다.
만일 대응하는 이벤트 인식기가 이벤트 또는 서브-이벤트를 인식하는 것으로부터 차단되지 않거나(451-아니오), 동시 인식이 허용된다면(452-예), 대응하는 이벤트 인식기는 이벤트 또는 서브-이벤트가 대응하는 제스쳐 정의와 정합하는지를 결정한다(453). 만일 이벤트 또는 서브-이벤트가 대응하는 제스쳐 정의와 정합하지 않는다면(453-아니오), 대응하는 제스쳐 인식기는 이벤트 실패 상태(430)로 천이한다.
만일 이벤트 또는 서브-이벤트가 대응하는 제스쳐 정의와 정합한다면(453-예), 대응하는 델리게이트(또는 운영 체제(118) 또는 제어 애플리케이션(124))는 델리게이트에 의해 결정된 하나 이상의 값에 따라 이벤트 가능 상태(410) 바깥으로 천이할 수 있는지("시작해야 하는가"(454))를 결정한다. 만일 이벤트 인식기가 델리게이트에 의해 이벤트 가능 상태(410) 바깥으로 천이하는 것이 허용되지 않는다면(454-아니오), 대응하는 이벤트 인식기는 이벤트 실패 상태(430)에 놓인다. 만일 이벤트 인식기가 이벤트 가능 상태(410) 바깥으로 천이하는 것이 허용된다면(454-예), 대응하는 이벤트 인식기는 이벤트 인식 상태(420)로 천이한다.
대응하는 이벤트 인식기가 이벤트 인식 상태(420)로 천이하면, 대응하는 이벤트 인식기(또는 운영 체제(118) 또는 제어 애플리케이션(124))은 또한 다른 이벤트 인식기들에 의한 이벤트 또는 서브-이벤트의 인식을 허용할지를 결정한다(455). 일부 실시예들에서, 적어도 하나의 이벤트 인식기의 델리게이트(또는 애플리케이션)가 동시 인식을 허용하는 속성을 설정하지 않는 한, 다른 모든 이벤트 인식기들이 동일한 이벤트를 인식하는 것을 방지하는 것이 디폴트이다. 만일 이벤트 또는 서브-이벤트를 인식했던 이벤트 인식기에 대응하는 델리게이트가 다른 이벤트 인식기들이 이벤트 또는 서브-이벤트를 인식하는 것을 허용할 것이라고 결정하면(455-예), 델리게이트(또는 운영 체제(118)나 제어 애플리케이션(124))는 이들이 이벤트 또는 서브-이벤트를 동시에 인식할 수 있도록 다른 이벤트 인식기의 속성을 설정한다(456). 만일 델리게이트가 다른 이벤트 인식기들이 이벤트 또는 서브-이벤트를 인식하는 것을 허용하지 않는다면, 다른 이벤트 인식기들은 이벤트 또는 서브-이벤트를 인식하는 것이 방지된다.
일부 실시예들에서, 각각의 이벤트 인식기가 이벤트 또는 서브-이벤트를 인식하는 것을 방지하기에 앞서, 이벤트 인식기의 델리게이트도 호출되어 이벤트 또는 서브-이벤트의 동시 인식을 허용할 것인지를 알아본다(452 참조). 이들 실시예들에서, 동시 인식은 그 이벤트를 인식하는 제1 이벤트 인식기의 델리게이트 또는 제2 이벤트 인식기의 델리게이트에 의해 인에이블될 수 있다. 도 4c의 452 및 455에 의해 도시된 바와 같이, 이들 실시예들에서 동시 인식을 허용할지에 대한 결정은, 이벤트가 적어도 하나의 이벤트 인식기의 이벤트 정의와 정합할 때에만 이루어진다.
전술된 델리게이트 동작은, 애플리케이션 뷰(또는 동시에 표시된 뷰 세트)에 의해 사용되는 한 세트의 이벤트 인식기에 대한 델리게이트에서 구현될 때, 이벤트 인식기들의 상호작용을 맞춤화하는데 이용될 수 있다. 델리게이트는, 단 하나의 이벤트 인식기만이 동일한 수신된 이벤트(들)에 기초하여 제스쳐를 인식하는 것을 허용하는, 디폴트 배타성 룰에 대한 예외를 구현할 수 있다. 디폴트 배타성 룰에 대한 예외를 구현함으로써 호환 이벤트 인식기들에 의한 동시 이벤트 인식을 허용하는 델리게이트의 이용은, 소프트웨어 애플리케이션에서 많은 유용한 기능의 구현을 용이하게 한다. 이벤트 인식기들의 행동을 수정하고 제어하는 델리게이트의 이용은, 상호 배타적 세트의 상호 호환형 제스쳐들과 같은, 복잡한 관계의 컴팩트한 표현과 구현을 허용한다.
도 4d는 일부 실시예들에 따른 연속 이벤트 인식기 상태 머신(402)에 대한 상태 천이에서 델리게이트의 역할을 도시한다. 이하에서 논의되는 예들에서, 상태 머신(402)은 대응하는 델리게이트를 갖는 특정의 연속 이벤트 인식기에 대응한다. 도 4c에 도시되고 도 4c를 참조하여 앞서 논의된 모든 델리게이트 동작은 대응하는 델리게이트를 갖는 연속 이벤트 인식기에 동등하게 적용가능하므로, 도 4d에 도시된 델리게이트 동작은 도 4c와 동일한 참조 번호를 가진다. 유일한 차이점은, 상태 머신에서 한 상태의 명칭이 상태 머신(400)의 "이벤트 인식"(420)으로부터 상태 머신(402)의 "이벤트 개시"(412)로 변했다는 것이다.
이벤트 개시 상태(412)로부터, 대응하는 이벤트 인식기는 전술된 다른 상태들로 천이한다. 간략하게 말하면, 이벤트 변경 상태(414)로부터 이벤트 실패 상태(416)로의 천이는 도시되어 있지 않다.
이하의 테이블은, 전술된 이벤트 인식기들의 상태에 관련된 예시적 서브-이벤트 시퀀스(예를 들어, 단일 탭)의 처리를 표 형태로 제공하고 있다. 이 예에서, 서브-이벤트 시퀀스는 단일 탭을 포함하고, 뷰는 2개의 탭 제스쳐 인식기: 단일 탭 제스쳐 인식기 및 더블 탭 제스쳐 인식기를 포함한다. 이 예에서도, 양쪽 제스쳐 인식기는 서브-이벤트 시퀀스를 동시에 수신하고 인식하도록 구성된다. 동시 인식은 단일 탭 제스쳐 인식기에 할당된 델리게이트 또는 제2 탭 제스쳐 인식기에 할당된 델리게이트에 의해 허용될 수 있다.
Figure 112012068267275-pct00001
서브-이벤트 정보의 전달이 개시되기 이전에(시퀀스 #0), 양쪽 제스쳐 인식기들은 이벤트 가능 상태(410)에 있다. 손가락 내림 서브-이벤트를 검출하고(시퀀스 #1) 지연을 측정한(시퀀스 #2) 후에도, 양쪽 제스쳐 인식기는 이벤트 가능 상태(410)에 머물러 있다. 손가락 들어올림의 검출(시퀀스 #3)에 응답하여, 단일 탭 제스쳐 인식기는 이벤트 인식 상태(420)로 천이한다. 추가 지연의 검출 후에, 단일 탭 제스쳐 인식기는, 리셋될 때까지 이벤트 인식 상태(420)에 머무르며, 리셋의 경우, 단일 탭 제스쳐 인식기는 이벤트 가능 상태(410)로 복귀한다. 반면, 더블 탭 제스쳐 인식기는, 측정된 추가 지연이 미리정의된 지속기간(예를 들어, 더블 탭 제스쳐 인식기가 제2 손가락 내림 서브-이벤트를 예상하는 동안)을 초과할 때 이벤트 실패 상태(430)로 천이한다.
이하의 테이블은, 하나의 제스쳐 인식기의 행동이 수정될 때 예시적 서브-이벤트 시퀀스의 처리를 표 형태로 나타낸다. 이 예에서, 서브-이벤트 시퀀스는 단일 탭을 포함하고, 뷰는 2개의 탭 제스쳐 인식기: 단일 탭 제스쳐 인식기 및 더블 탭 제스쳐 인식기를 가진다. 이 예에서도, 단일 탭 제스쳐 인식기는 그 델리게이트에 의해 서브-이벤트를 수신하는 것이 허용되지 않는다.
Figure 112012068267275-pct00002
단일 탭 제스쳐 인식기는 그 델리게이트에 의해 서브-이벤트를 수신하는 것이 허용되지 않기 때문에, 단일 탭 제스쳐 인식기는 이벤트 가능 상태(410)에 머무른다. 더블 탭 제스쳐 인식기는, 측정된 제2 지연이 미리정의된 임계치를 초과할 때(시퀀스 #4) 이벤트 실패 상태(430)로 천이한다.
이하의 테이블은, 하나의 제스쳐 인식기의 행동이 수정될 때 예시적 서브-이벤트 시퀀스의 처리를 표 형태로 나타낸다. 이 예에서, 서브-이벤트 시퀀스는 단일 탭을 포함하고, 뷰는 2개의 탭 제스쳐 인식기: 단일 탭 제스쳐 인식기 및 더블 탭 제스쳐 인식기를 가진다. 이 예에서도, 양쪽 모두의 제스쳐 인식기들은 서브-이벤트 시퀀스를 동시에 인식하는 것이 허용되지 않는다.
Figure 112012068267275-pct00003
전술된 것과 유사하게, 손가락 들어올림을 검출(시퀀스 #3)한 후에, 단일 탭 제스쳐 인식기는 이벤트 가능 상태(410)로부터 이벤트 인식 상태(420)로 천이한다. 일반적으로, 서브-이벤트 시퀀스를 인식하는 제1 제스쳐 인식기는 그 서브-이벤트 시퀀스를 아직 인식하지 않은 다른 제스쳐 인식기들이 그 서브-이벤트 시퀀스를 인식하는 것을 차단한다. 동시 인식이 허용되지 않는다면, 차단된 제스쳐 인식기는 이벤트 실패 상태(430)로 천이한다. 이 경우, 동시 인식이 허용되지 않기 때문에, 단일 탭 제스쳐 인식기가 서브-이벤트 시퀀스를 인식하면(시퀀스 #3에서), 더블 탭 제스쳐 인식기는 리셋될 때까지 이벤트 실패 상태(430)로 천이하여 머무른다.
이하의 테이블은, 하나의 제스쳐 인식기의 행동이 그 델리게이트에 의해 수정되고, 한쪽 또는 양쪽 인식기들의 델리게이트(들)에 의해 취해진 액션에 따라 2개의 제스쳐 인식기들의 동작이 조율될 때, 예시적 서브-이벤트 시퀀스의 처리를 표 형식으로 제공한다. 이 예에서, 서브-이벤트 시퀀스는 단일 탭을 포함하고, 뷰는 2개의 탭 제스쳐 인식기: 단일 탭 제스쳐 인식기 및 더블 탭 제스쳐 인식기를 가진다. 이 예에서도, 단일 탭 제스쳐 인식기는 개시(또는 이벤트 가능 상태(410) 바깥으로의 천이)가 허용되지 않는다.
Figure 112012068267275-pct00004
손가락 들어올림을 검출(시퀀스 #3)한 후에, 단일 탭 제스쳐 인식기는 이벤트 가능 상태(410)로부터 이벤트 인식 상태(420)로의 천이를 시도한다. 그러나, 단일 탭 제스쳐 인식기에 할당된 델리게이트는 이벤트 인식 상태(420)로의 상태 천이를 허용하지 않고, 그 결과, 단일 탭 제스쳐 인식기는 이벤트 실패 상태(430)로 천이한다. 더블 탭 제스쳐 인식기는, 측정된 지연이 미리정의된 임계치를 초과할 때(시퀀스 #4) 이벤트 실패 상태(430)로 천이한다.
이하의 테이블은, 하나의 제스쳐 인식기의 행동이 수정되고, 한쪽 또는 양쪽 인식기들의 델리게이트(들)에 의해 취해진 액션에 따라 2개의 제스쳐 인식기들의 동작이 조율될 때, 예시적 서브-이벤트 시퀀스의 처리를 표 형식으로 제공한다. 이 예에서, 서브-이벤트 시퀀스는 단일 탭을 포함하고, 뷰는 2개의 탭 제스쳐 인식기: 단일 탭 제스쳐 인식기 및 더블 탭 제스쳐 인식기를 가진다. 이 예에서도, 단일 탭 제스쳐 인식기는 더블 탭 제스쳐 인식기의 실패를 기다린다(또는 요구한다).
Figure 112012068267275-pct00005
손가락 들어올림을 검출(시퀀스 #3)한 후에, 단일 탭 제스쳐 인식기는 이벤트 가능 상태(410)로부터 이벤트 인식 상태(420)로의 천이를 시도한다. 그러나, "대기" 요건이나 (더블 탭 제스쳐 인식기가 실패하는) 실패 요건으로 인해, 단일 탭 제스쳐 인식기는 이벤트 인식 상태(420)로의 천이를 지연한다. 측정된 제2 지연이 미리정의된 임계치를 초과하여(시퀀스 #4) 더블 탭 제스쳐 인식기가 실패하면, 단일 탭 제스쳐 인식기는 이벤트 인식 상태(420)로 천이한다. "대기" 요건 및/또는 실패 요건은 델리게이트를 이용하여 구현되거나 제스쳐 인식기에서 구현될 수도 있다.
이하의 테이블은 예시적 서브-이벤트 시퀀스의 처리를 표 형식으로 나타낸다. 이 예에서, 서브-이벤트 시퀀스는 다수의 중간 서브-이벤트를 내포하는 팬 제스쳐를 포함하며, 뷰는 2개의 제스쳐 인식기: 단일 탭 제스쳐 인식기 및 팬 제스쳐 인식기를 가진다. 이 예에서도, 양쪽 제스쳐 인식기는 서브-이벤트 시퀀스를 동시에 인식하도록 허용된다.
Figure 112012068267275-pct00006
서브-이벤트 정보의 전달이 개시되기 이전에(시퀀스 #0), 양쪽 제스쳐 인식기들은 이벤트 가능 상태(410)에 있다. 손가락 내림 서브-이벤트를 검출하고(시퀀스 #1) 지연을 측정한(시퀀스 #2) 후에도, 단일 탭 제스쳐 인식기는 이벤트 가능 상태(410)에 머무르는 반면, 팬 제스쳐 인식기는 이벤트 개시 상태(412)로 천이한다. 손가락 움직임의 검출(시퀀스 #3)에 응답하여, 단일 탭 제스쳐 인식기는, 서브-이벤트가 단일 탭에 대한 제스쳐 정의와 정합하지 않기 때문에 이벤트 실패 상태(430)로 천이한다. 단일 탭 제스쳐 인식기는, 이후에 리셋될 때까지 이벤트 실패 상태(430)에 머무른다. 그러나, 팬 제스쳐 인식기는 손가락 움직임의 검출(시퀀스 #4)에 응답하여 이벤트 변경 상태(414)로 천이하고, 일부 실시예들에서는, 손가락 접촉의 새로운 위치를 포함한 액션 메시지(들)을 전송한다. 추가적인 손가락 움직임의 검출(시퀀스 #4 및 시퀀스 #5) 후에, 팬 제스쳐 인식기는 이벤트 변경 상태(414)에 머무르면서, 손가락 움직임이 검출될 때마다 액션 메시지(들)을 전송한다. 손가락 들어올림이 검출되면(시퀀스 #6), 팬 제스쳐 인식기는 이벤트 종료 상태(416)로 천이한다.
이벤트 인식기들 사이의 상호작용과 이벤트 정보의 흐름으로 되돌아가면, 도 5a는 일부 실시예들에 따른 이벤트 정보의 흐름을 나타내는 블록도이다. (예를 들어, 운영 체제(118) 또는 제어 애플리케이션(124) 내의) 이벤트 디스패처 모듈(315)은 이벤트 정보를 수신하고, 그 이벤트 정보를 애플리케이션(예를 들어, 132-1)에 전송한다. 일부 실시예들에서, 애플리케이션(132-1)은, 뷰 계층구조(506)에서 복수의 뷰들(예를 들어, 뷰(316)에 대응하는 508, 510, 및 512)과 복수의 뷰들에서 복수의 제스쳐 인식기(516-1 내지 516-6)을 포함한다. 애플리케이션(132-1)은 또한, 타겟-액션 쌍(예를 들어, 522-1. 522-2, 및 522-3)에서 타겟 값들에 대응하는 하나 이상의 이벤트 처리기(520)를 포함한다. 이벤트 디스패처 모듈(315)은 히트 뷰 결정 모듈(313)로부터 히트 뷰 정보를 수신하고 히트 뷰(예를 들어, 512) 또는 히트 뷰(예를 들어, 512)에 부착된 이벤트 인식기(들)에 이벤트 정보를 전송한다. 일부 실시예들에서, 히트 뷰에 부착된 제스쳐 인식기들의 서브세트만이 이벤트 정보(또는 터치 정보)를 수신하는 것(또는 수신하도록 구성되는 것)이 허용된다. 이벤트 정보를 수신하는 것이 허용된 이들 제스쳐 인식기들은 여기서는 "수신 제스쳐 인식기"라 불린다. 도 5a에서, 제스쳐 인식기(516-1 및 516-2)는 한 세트의 수신 제스쳐 인식기(514) 세트 내에 있다. 그 결과, 이벤트 디스패처 모듈(315)은 수신 제스쳐 인식기 세트 내의 제스쳐 인식기(516-1 및 516-2) 양쪽 모두에 이벤트 정보를 전송한다.
일부 실시예들에서, 제스쳐 인식기들은 서로가 이벤트 또는 서브-이벤트를 대응하는 제스쳐로서 인식하는 것을 차단하거나 방지할 수도 있다. 이 예에서, 제스쳐 인식기 1(516-1)은 제스쳐 인식기 2(516-2)가 이벤트 또는 서브-이벤트를 대응하는 제스쳐로서 인식하는 것을 방지한다. 그 결과, 이 예에서는, 제스쳐 인식기 1(516-1)만이 대응하는 타겟-액션 쌍(예를 들어, 타겟:액션 1(522-1))에 액션 메시지(518)를 전송한다.
도 5b 및 도 5c는 일부 실시예들에 따른, 제스쳐 인식 방법을 나타내는 플로차트이다. 도 5b는 제스쳐 인식기가 대응하는 델리게이트를 호출하는 플로차트를 나타내고, 도 5c는 소프트웨어 애플리케이션이 각각의 제스쳐 인식기에 대응하는 델리게이트를 호출하는 플로차트를 나타낸다. 도 5b 및 도 5c에서, 각각의 컬럼은 각각의 엔티티 또는 컴포넌트(예를 들어, 소프트웨어 애플리케이션, 제스쳐 인식기, 또는 델리게이트)에서 수행되는 프로세스들을 나타낸다.
도 5b에서, 소프트웨어 애플리케이션(예를 들어, 애플리케이션(132-1))은 복수의 뷰들(예를 들어, 506, 508, 510) 중의 하나 이상의 뷰들을 디스플레이한다(530). 복수의 뷰들은 복수의 제스쳐 인식기들(예를 들어, 516-1 내지 516-6)을 포함한다. 소프트웨어 애플리케이션(예를 들어, 애플리케이션(132-1))은 복수의 제스쳐 인식기들의 적어도 서브세트에 별개의 델리게이트를 할당한다(532). 일부 실시예들에서, 각각의 제스쳐 인식기는 대응하는 델리게이트에 할당된다(533-1). 일부 실시예들에서, 각각의 델리게이트는 대응하는 제스쳐 인식기에 할당된다(533-2). 대안으로서, 델리게이트와 제스쳐 인식기 사이의 대응관계는 런타임 이전에 확립될 수도 있다. 이하의 논의를 통틀어, 할당된 델리게이트에 대한 각각의 참조는 또한 대응하는 델리게이트를 의미할 수도 있고, 델리게이트가 할당된 제스쳐 인식기에 대한 각각의 참조는 또한 특정한 델리게이트에 대응하는 제스쳐 인식기를 의미할 수도 있다.
소프트웨어 애플리케이션(예를 들어, 애플리케이션(132-1))은 하나 이상의 이벤트를 검출하고(534), 하나 이상의 제스쳐 인식기(예를 들어, 320)를 이용하여 각각의 이벤트를 처리한다(536).
각각의 이벤트는 (하나 이상의 제스쳐 인식기들(예를 들어, 320) 중의) 각각의 제스쳐 인식기에서 처리된다(538). 델리게이트의 동작을 설명하기 위해, 이벤트를 처리하는 각각의 제스쳐 인식기는 대응하는 델리게이트를 갖는 것으로 가정한다. 각각의 제스쳐 인식기는 할당된 델리게이트를 호출하고, 애플리케이션 상태에 따라 하나 이상의 값을 결정하기 위해 할당된 델리게이트가 실행된다(540). 응답하여, 각각의 제스쳐 인식기는, 할당된 델리게이트에 의해 결정된 하나 이상의 값에 따라 각각의 이벤트에 대응하는 정보를 소프트웨어 애플리케이션에게 조건부로 전송한다(542).
하나 이상의 이벤트에 대응하는 하나 이상의 제스쳐 인식기로부터 수신된 정보에 따라 소프트웨어 애플리케이션이 실행된다(544).
즉, 이들 실시예들에서, 각각의 제스쳐 인식기는 제스쳐 인식기의 행동을 결정하는 하나 이상의 값을 얻기 위해 할당된 델리게이트를 호출한다. 전술된 바와 같이, 그 대응하는 델리게이트에 의해 수정된 제스쳐 인식기의 행동은 터치/이벤트 정보를 수신할지의 여부, 이벤트 가능 상태를 벗어나 천이할지의 여부, 및/또는 동시 인식을 허용할지의 여부를 포함한다. (때때로 다른 제스쳐 인식기들의 델리게이트의 조율된 액션과 더불어) 델리게이트에 의한 동작은 또한, 어느 제스쳐 인식기가 어느 터치를 수신할지를 제어하고, 어느 제스쳐 인식기가 "이벤트 인식" 또는 "이벤트 개시" 상태로의 천이가 허용되는지를 결정하며, 동시 인식을 허용 또는 디스에이블함으로써, 2개 이상의 제스쳐 인식기들의 동작을 조율한다.
도 5c에서, 소프트웨어 애플리케이션(예를 들어, 애플리케이션(132-1))은 복수의 뷰들(예를 들어, 506, 508, 510) 중의 하나 이상의 뷰들을 디스플레이한다(530). 복수의 뷰들은 복수의 제스쳐 인식기들(예를 들어, 516-1 내지 516-6)을 포함한다. 소프트웨어 애플리케이션(예를 들어, 애플리케이션(132-1))은 복수의 제스쳐 인식기들의 적어도 서브세트에 별개의 델리게이트를 할당한다(532). 일부 실시예들에서, 각각의 제스쳐 인식기는 대응하는 델리게이트에 할당된다(533-1). 일부 실시예들에서, 각각의 델리게이트는 대응하는 제스쳐 인식기에 할당된다(533-2). 대안으로서, 델리게이트와 제스쳐 인식기 사이의 대응관계는 런타임 이전에 확립될 수도 있다.
소프트웨어 애플리케이션(예를 들어, 애플리케이션(132-1))은 하나 이상의 터치를 검출하고(535), 하나 이상의 제스쳐 인식기를 이용하여 하나 이상의 터치들 각각을 처리한다(546). 하나 이상의 터치들 각각을 처리하는데 있어서, 소프트웨어 애플리케이션은 복수의 제스쳐 인식기들 중 한 세트의 후보 제스쳐 인식기를 식별한다(548). 일부 실시예들에서, 후보 제스쳐 인식기들은 히트 뷰에 부착된 제스쳐 인식기들(예를 들어, 도 5a의 제스쳐 인식기(516-1, 516-2, 및 516-3))이다.
애플리케이션 상태에 따라 "수신 터치값"을 얻기 위해 각각의 후보 제스쳐 인식기에 할당된 델리게이트가 실행된다(550). "수신 터치값"은 각각의 후보 제스쳐 인식기가 이벤트/터치 정보를 수신할 수 있는지(예를 들어, 도 4c-4d의 "수신해야 하는가" 단계(450))를 결정하는데 이용된다.
각각의 델리게이트로부터 얻어진 수신 터치값에 기초하여, 한 세트의 수신 제스쳐 인식기들이 식별된다(552). 수신 제스쳐 인식기 세트는 후보 제스쳐 인식기들의 서브세트를 포함한다(552). 일부 실시예들에서, 수신 제스쳐 인식기 세트는 각각의 할당된 델리게이트를 갖지 않는 모든 후보 제스쳐 인식기들을 포함한다. 하나 보다 많은 후보 제스쳐 인식기들이 대응하는 델리게이트를 가진다면, 후보 제스쳐 인식기가 이벤트/터치 정보를 수신할 수 있는지를 결정하기 위해 이러한 후보 제스쳐 인식기 각각의 델리게이트가 실행된다. 후보 제스쳐 인식기들에 대응하는 델리게이트들로부터 얻어진 "수신 터치값들"은 수신 제스쳐 인식기 세트를 식별하는데 이용된다.
수신 제스쳐 인식기 세트에서 각각의 터치가 처리된다(554). 만일 각각의 제스쳐 인식기에 의한 각각의 터치의 처리가 결과적으로 이벤트나 터치의 인식으로 이어진다면(도 4c 및 도 4d의 "정의와 정합"(453) 참조), 각각의 제스쳐 인식기에 대응하는 (만약 있다면) 델리게이가 호출되어 이벤트나 제스쳐의 인식이 허용되지를 결정한다. 이것은 도 4c 및 도 4d를 참조하여 전술된 "시작해야 하는가" 동작(454)에 대응한다. 델리게이트는 상태 천이가 허용될 것인지의 여부를 가리키는 하나 이상의 값을 반환한다. 각각의 제스쳐 인식기는, 할당된 델리게이트에 의해 결정된 하나 이상의 값에 따라, 각각의 이벤트에 대응하는 정보를 소프트웨어 애플리케이션에게 조건부로 전송한다(542). 각각의 터치에 대응하는 하나 이상의 제스쳐 인식기로부터 수신된 정보에 따라 소프트웨어 애플리케이션이 실행된다(545).
즉, 이들 실시예들에서, 소프트웨어 애플리케이션(또는 운영 체제(118) 또는 제어 애플리케이션(124))은, 각각의 후보 제스쳐 인식기들 중 (만약 있다면) 어느 것이 각각의 터치를 처리해야 하는지를 가리키는 값을 얻기 위해 각각의 후보 제스쳐 인식기들에 대응하는 델리게이트들을 호출한다. 또한, 제스쳐 인식기들의 행동의 다른 양태들은 할당된 델리게이트에 의해 더욱 수정될 수 있다.
도 6a 및 도 6b는 일부 실시예들에 따른, 델리게이트로부터 얻어진 정보에 따라 각각의 이벤트를 처리하는 예시적 방법을 나타내는 플로차트이다.
복수의 뷰들(예를 들어, 애플리케이션 뷰(316)과 소프트웨어 애플리케이션의 애플리케이션 상태(예를 들어, (317))를 포함하는 소프트웨어 애플리케이션(예를 들어, 132)을 실행하도록 구성되고 하나 이상의 이벤트 센서(예를 들어, 130)를 갖는 전자 장치(예를 들어, 장치(102 또는 104))에서 방법(600)이 수행된다(602).
장치는 복수의 뷰들 중에서 하나 이상의 뷰를 디스플레이한다(604). 하나 이상의 디스플레이된 뷰의 각각의 뷰는 하나 이상의 각각의 제스쳐 인식기(예를 들어, 이벤트 인식기(320-1))를 포함한다. 일부 실시예들에서, 하나 이상의 디스플레이된 뷰들의 적어도 서브세트는 하나 이상의 제스쳐 인식기를 포함하고, 하나 이상의 디스플레이된 뷰들의 나머지는 제스쳐 인식기를 포함하지 않는다.
하나 이상의 제스쳐 인식기들의 각각의 제스쳐 인식기는 대응하는 델리게이트를 가진다. 일부 실시예들에서, 모든 제스쳐 인식기들이 대응하는 델리게이트를 갖는 것은 아니다(즉, 일부 실시예들에서, 일부 제스쳐 인식기들은 대응하는 델리게이트를 갖지 않는다). 일부 실시예들에서, 각각의 제스쳐 인식기는 2개 이상의 델리게이트에 대응하고, 여기서, 각각의 델리게이트는 별개의 조건들에 대해 대응하는 제스쳐 인식기에 대한 별개의 값을 결정한다(예를 들어, 제1 델리게이트는 "수신해야 하는가"(450)를 결정하고, 제2 델리게이트는 "인식 차단"(451)을 결정하는 등등). 일부 실시예들에서, 2개 이상의 제스쳐 인식기들은 동일한 델리게이트에 대응(예를 들어, 이용)한다.
일부 실시예들에서, 장치는 각각의 델리게이트(예를 들어, 델리게이트(321-1))를 각각의 제스쳐 인식기(예를 들어, 320-1)(예를 들어, 도 5b의 단계(532)의 설명 참조)에 할당한다(606). 대안으로서, 각각의 제스쳐 인식기는 대응하는 델리게이트를 가지므로, 델리게이트는 런타임시에 할당될 필요가 없다. 이벤트/제스쳐 인식기의 할당된 델리게이트에 대한 여기서의 모든 참조는 이벤트/제스쳐 인식기의 대응하는 델리게이트에 동등하게 적용가능한 것으로 이해되어야 하며, 대응하는 델리게이트에 대한 모든 참조는 할당된 델리게이트에 동등하게 적용가능한 것으로 이해되어야 한다.
일부 실시예들에서, 하나 이상의 디스플레이된 뷰들은 복수의 제스쳐 인식기들을 포함하고, 장치는 복수의 제스쳐 인식기들의 적어도 서브세트에 별개의 델리게이트를 할당한다(608). 즉, 일부 제스쳐 인식기들은 델리게이트를 할당받지 않을 수도 있기 때문에, 장치는 제스쳐 인식기의 수보다 적은 수의 델리게이트를 가질 수도 있다.
장치는 하나 이상의 이벤트를 검출한다(610). 일부 실시예들에서, 장치는 센서(130), 입력 장치(128), 및/또는 터치 감응 디스플레이(156)를 이용하여 하나 이상의 이벤트를 검출한다.
장치는 각각의 제스쳐 인식기를 이용하여 하나 이상의 이벤트들의 각각의 이벤트를 처리한다(612). 각각의 이벤트의 처리는, 각각의 제스쳐 인식기에 대응하는 각각의 제스쳐 정의에 따라 각각의 제스쳐 인식기에서 각각의 이벤트를 처리하는 것(예를 들어, 이벤트 비교기(332)를 이용하여 이벤트와 제스쳐 정의(333)를 비교하는 것), 애플리케이션 상태에 따라 하나 이상의 값을 결정하기 위해 대응하는 델리게이트를 실행하는 것(예를 들어, 도 5b의 540), 및 각각의 제스쳐 인식기에 의한 각각의 이벤트의 처리의 결과에 따라 그리고 대응하는 델리게이트에 의해 결정된 하나 이상의 값에 따라, 각각의 이벤트에 대응하는 정보(예를 들어, 제스쳐 인식기가 "탭 제스쳐" 또는 "스와이프 제스쳐"와 같은 이벤트를 인식할지의 여부, 이벤트의 위치 및 타임 스탬프와 같은 관련된 이벤트 정보, 및/또는 기타의 추가 정보)를 소프트웨어 애플리케이션에 조건부로 전송하는 것을 포함한다.
일부 실시예들에서, 델리게이트는 ("시작해야 하는가", "수신해야 하는가", 및 "동시 인식"과 같은) 이벤트 인식기 속성을 결정하고, 실행시에, 하나 이상의 대응하는 값을 반환하기 위한 명령어를 가진다. 일부 실시예들에서, 이벤트 인식기 속성에 대한 값은 애플리케이션 상태에 따라 소프트웨어 애플리케이션에 의해 설정될 수 있다. 일부 실시예들에서, 속성에 대한 값은 개발자에 의해 미리정의된다. 일부 실시예들에서, 각각의 이벤트/제스쳐 인식기의 내부 속성은 이벤트/제스쳐 인식기에 대응하는 델리게이트에 의해 무효화될 수 있는 디폴트 값을 가진다.
예를 들어, 제스쳐 인식기가 (예를 들어, 제스쳐 인식기의 대응하는 델리게이트에 의해 결정된, 제스쳐 인식기가 이벤트 가능 상태(410)를 벗어나 이벤트 인식 상태(420) 또는 이벤트 개시 상태(412)로 천이할 수 있는지의 여부, 또는 제스쳐 인식기가 차단 제스쳐 인식기의 존재에도 불구하고 이벤트를 동시에 인식할 수 있는지의 여부를 가리키는 하나 이상의 값에 기초하여) 이벤트를 인식하도록 허용될 때, 장치는 각각의 이벤트에 대응하는 정보를 전송한다. 일부 실시예들에서, 장치는, 이벤트가 대응하는 제스쳐 정보 또는 그 일부와 정합할 때에만, 각각의 이벤트에 대응하는 정보를 전송한다. 또한, 애플리케이션 상태 또는 기타의 조건은 각각의 제스쳐 인식기가 각각의 이벤트에 대응하는 정보를 전송하는 것을 방지할 수도 있다.
장치는, 각각의 제스쳐 인식기로부터 수신되고 각각의 이벤트에 대응하는 정보에 따라, 소프트웨어 애플리케이션(예를 들어, 132-1)을 실행한다(614). 예를 들어, 소프트웨어 애플리케이션(예를 들어, 132-1)은 복수의 이벤트 처리기(322)를 포함하고, 하나 이상의 이벤트 처리기(322)는 각각의 제스쳐 인식기로부터 수신된 정보에 따라 활성화된다(예를 들어, 액션-타겟 쌍(345)에 나열된 이벤트 처리기(322)가 활성화된다).
일부 실시예들에서, 하나 이상의 이벤트 센서(예를 들어, 130)는 하나 이상의 터치를 검출하도록 구성된 터치 감응면(예를 들어, 156 또는 별개의 센서 감응면)을 포함하고, 하나 이상의 이벤트는 하나 이상의 터치를 포함하며, 각각의 이벤트를 처리하는 것은 각각의 터치를 처리하는 것을 포함한다(616). 일부 실시예들에서, 하나 이상의 이벤트 센서(예를 들어, 130)는 가속도계를 포함하고, 하나 이상의 이벤트는 또한 전자 장치의 회전이나 기타의 움직임을 포함한다.
일부 실시예들에서, 장치는 할당된 델리게이트에 의해 결정된 하나 이상의 값에 따라 각각의 제스쳐 인식기에서 각각의 터치를 조건부로 수신한다(618). 예를 들어, 각각의 제스쳐 인식기는, 대응하는 델리게이트에 의해 결정된 하나 이상의 값(예를 들어, "수신 터치값")이 각각의 제스쳐 인식기가 각각의 터치를 수신하는 것을 허용할 때에만(예를 들어, 도 4c-4d의 "수신해야 하는가"(450)), 각각의 터치를 수신한다.
일부 실시예들에서, 각각의 터치를 처리하는 것은, 대응하는 델리게이트에 의해 결정된 하나 이상의 값이 미리정의된 터치 무시 기준과 정합할 때 각각의 제스쳐 인식기가 터치를 무시하는 것을 포함한다(620). 이들 실시예들에서, 단계(618)에 기술된 바와 같이 각각의 터치를 조건부로 수신하는 것 대신에, 각각의 제스쳐 인식기는 각각의 터치를 무시한다.
일부 실시예들에서, 각각의 터치를 처리하는 것은, 대응하는 델리게이트에 의해 결정된 하나 이상의 값이 미리정의된 터치 무시 기준과 정합할 때 각각의 제스쳐 인식기가 각각의 터치를 수신하는 것을 차단하는 것을 포함한다(622). 이들 실시예들에서, 각각의 터치는 차단되고 그에 따라 각각의 제스쳐 인식기에 도달하지 않기 때문에, 제스쳐 인식기는 각각의 터치를 조건부로 수신하거나 무시할 필요성을 갖지 않는다. 일부 실시예들에서, 각각의 제스쳐 인식기가 각각의 터치를 수신하는 것을 차단하는 것은, 이벤트 디스패처 모듈(315)이 대응하는 제스쳐 인식기에 이벤트 정보를 전송하지 않도록 명령하는 것을 포함한다.
일부 실시예들에서, 각각의 제스쳐 인식기에서 각각의 터치를 처리하는 것은, 검출된 터치가 각각의 제스쳐 정의와 일치할 때(예를 들어, 각각의 터치가 제스쳐 정의 또는 그 일부와 정합할 때), 대응하는 델리게이트에 의해 상태 천이가 인에이블되면(예를 들어, 도 4c-4d에서 "시작해야 하는가"(454)) 각각의 제스쳐 인식기에서의 대응하는 상태 천이를 인에이블하는 것을 포함한다(624). 일부 실시예들에서, 상태 천이는, 상태 천이 인에이블 값(예를 들어, "시작해야 하는가" 값)이 대응하는 델리게이트에 의해 상태 천이 기준을 만족한다고 판정될 때 인에이블된다.
일부 실시예들에서, 각각의 제스쳐 인식기에서 각각의 터치를 처리하는 것은, 검출된 터치가 각각의 제스쳐 정의와 일치할 때, 대응하는 델리게이트에 의해 상태 천이가 인에이블되면 각각의 제스쳐 인식기에서의 대응하는 상태 천이를 조건부로 인에이블하는 것을 포함한다(626). 즉, 상태 천이는, 대응하는 델리게이트가 천이를 인에이블하더라도(예를 들어, 차단하지 않더라도) 조건부로 인에이블된다. 예를 들어, 상태 천이에 대한 조건은: 각각의 터치/이벤트가 제스쳐 정의 또는 그 일부와 정합하는지의 여부, 각각의 제스쳐 인식기가 각각의 터치/이벤트를 수신하는 것이 허용되어 있는지의 여부, 및/또는 각각의 터치/이벤트의 인식이 차단되어 있는지의 여부를 포함한다.
일부 실시예들에서, 각각의 제스쳐 인식기에서 각각의 터치를 처리하는 것은, 검출된 터치가 각각의 제스쳐 정의와 일치할 때, 제스쳐를 인식한 또 다른 제스쳐 인식기에 의해 상태 천이가 방지/디스에이블되면 각각의 제스쳐 인식기에서의 대응하는 상태 천이를 (조건부로) 디스에이블하는 것을 포함한다. 특히, 제스쳐 인식기들은 쌍을 이루어(또는 그룹화되어) 하나의 제스쳐 인식기가 다른 제스쳐 인식기(들)이 이벤트 인식 상태(420) 또는 이벤트 개시 상태(412)로 천이하지 못하게 할 수 있다(예를 들어, 제1 제스쳐 인식기가 제2 제스쳐 인식기를 방지하도록 구성되면, 이벤트/터치 인식시에, 제2 제스쳐 인식기에 대응하는 델리게이트에 의해 반환된 값에 관계없이, 제1 제스쳐 인식기는 제2 제스쳐 인식기가 이벤트/터치를 인식하지 못하게 한다).
일부 실시예들에서, 복수의 제스쳐 인식기들이 우선순위(예를 들어, 코드의 시퀀스, 인스턴스화의 시퀀스, 각각의 제스쳐 인식기에 대응하는 뷰 계층구조, 또는 개발자나 소프트웨어 애플리케이션에 의해 할당된 우선순위)에 기초하여 나열된다. 2개 이상의 제스쳐 인식기가 각각의 터치를 동시에 인식할 때, 가장 높은 우선순위의 제스쳐 인식기는 다른 모든 제스쳐 인식기들이 각각의 터치를 인식하는 것을 차단한다.
일부 실시예들에서, 각각의 제스쳐 인식기에서 각각의 터치를 처리하는 것은, 제2 제스쳐 인식기에 대응하는 델리게이트에 의해 결정된 하나 이상의 값에 따라 제2 제스쳐 인식기에서 각각의 터치를 동시에 처리하는 것을 포함한다(628). 예를 들어, 제2 제스쳐 인식기에 대응하는 델리게이트는, 또 다른 제스쳐 인식기가 이벤트의 인식을 차단하더라도, 제2 제스쳐 인식기가 제2 제스쳐 인식기에서 제스쳐를 처리하는 것을 허용할 수도 있다(예를 들어, 도 4c-4d에서 단계(452)).
일부 실시예들에서, 각각의 제스쳐 인식기에서 각각의 터치를 처리하는 것은, 각각의 제스쳐 인식기에 대응하는 델리게이트에 의해 결정된 하나 이상의 값에 따라 제2 제스쳐 인식기에서 각각의 터치를 동시에 처리하는 것을 포함한다(630). 예를 들어, 제스쳐 인식기에 대응하는 델리게이트는, 또 다른 제스쳐 인식기가 이벤트의 인식을 차단하더라도, 제2 제스쳐 인식기가 제2 제스쳐 인식기에서 제스쳐를 처리하는 것을 허용할 수도 있다(예를 들어, 도 4c-4d에서 단계 455 및 456).
일부 실시예들에서, 각각의 제스쳐 인식기에서 각각의 터치를 처리하는 것은, 제1 및 제2 제스쳐 인식기에 각각 대응하는 델리게이트에 의해 결정된 값에 따라 제2 제스쳐 인식기에서 각각의 터치를 동시에 처리하는 것을 포함한다.
도 7a 및 도 7b는 일부 실시예들에 따른, 델리게이트로부터 얻어진 수신 터치값에 따라 각각의 터치를 처리하는 예시적 방법을 나타내는 플로차트이다.
복수의 뷰들(예를 들어, 316)과 소프트웨어 애플리케이션의 애플리케이션 상태(예를 들어, 317)를 포함하는 소프트웨어 애플리케이션을 실행하도록 구성되고 터치 감응면(예를 들어, 156)을 갖는 전자 장치(예를 들어, 장치(104))에서 방법(700)이 수행된다(702).
장치는 복수의 뷰들(예를 들어, 316) 중에서 하나 이상의 뷰를 디스플레이한다(704). 하나 이상의 디스플레이된 뷰의 각각의 뷰는 하나 이상의 제스쳐 인식기(예를 들어, 320-1, 또는 343-2)를 포함하고, 하나 이상의 제스쳐 인식기들의 각각의 제스쳐 인식기는 대응하는 델리게이트(예를 들어, 321-1 또는 346)를 가진다.
장치는 터치 감응면(예를 들어, 156 또는 130) 상의 하나 이상의 터치를 검출한다(706). 하나 이상의 터치들 각각은 하나 이상의 디스플레이된 뷰들 내에 떨어지는 터치 위치를 가진다.
장치는 하나 이상의 터치의 각각의 터치를 처리한다(708)(예를 들어, 이벤트 비교기(332)를 이용하여 각각의 터치가 제스쳐 정의(333)와 정합하는지의 여부를 판정(453)하는 것). 각각의 터치를 처리하는 것은, 애플리케이션 상태에 따라 수신 터치값을 얻기 위해 각각의 제스쳐 인식기에 대응하는 델리게이트를 실행하는 것(710)(예를 들어, 도 5c의 550); 수신 터치값이 미리정의된 기준(예를 들어, 일부 실시예에서 미리정의된 기준은 각각의 제스쳐 인식기가 수신 제스쳐 인식기인 것임(552))을 만족하면, 각각의 제스쳐 인식기에서 각각의 터치를 처리하는 것(예를 들어, 554); 및 각각의 터치에 대응하는 정보를 소프트웨어 애플리케이션에 조건부로 전송하는 것(예를 들어, 542)을 포함한다.
일부 실시예들에서, 복수의 뷰들은 복수의 제스쳐 인식기(예를 들어, 도 3b의 애플리케이션 뷰(316) 및 인식기(320); 도 5a의 뷰(508, 510, 및 512) 및 제스쳐 인식기(516))를 포함한다(712). 별개의 델리게이트들은 복수의 제스쳐 인식기들의 적어도 서브세트에 대응한다. 선택적으로, 장치는 별개의 델리게이트(예를 들어, 321)를 복수의 제스쳐 인식기(예를 들어, 320)의 적어도 서브세트에 할당한다. 하나 이상의 터치의 각각의 터치를 처리하는 것은: 복수의 제스쳐 인식기들 중 한 세트의 후보 제스쳐 인식기를 식별하는 것(예를 들어, 548); 대응하는 델리게이트를 갖는 각각의 후보 제스쳐 인식기에 대해, 애플리케이션 상태에 따라 수신 터치값을 얻기 위해 대응하는 델리게이트를 실행하는 것(예를 들어, 550); 얻어진 수신 터치값에 따라 후보 제스쳐 인식기들의 서브세트를 포함하는 하나 이상의 수신 제스쳐 인식기들을 식별하는 것(예를 들어, 552); 및 하나 이상의 수신 제스쳐 인식기의 각 제스쳐 인식기에서 각각의 터치를 처리하는 것(예를 들어, 554)을 포함한다.
일부 실시예들에서, 복수의 제스쳐 인식기들 중 후보 제스쳐 인식기 세트를 식별하는 것은, 히트 뷰에 부착된 한 세트의 제스쳐 인식기를 식별하는 것을 포함한다. 선택적으로, 복수의 제스쳐 인식기들 중 후보 제스쳐 인식기 세트를 식별하는 것은, 각각의 터치에 대응하는 제스쳐 정의를 포함하는 한 세트의 제스쳐 인식기를 식별하는 것을 포함한다. 또한, 일부 실시예들에서 수신 제스쳐 인식기 세트를 식별하는 것은, 대응하는 델리게이트가 수신 터치 기준을 만족하는 각각의 수신 터치 값을 제공하는 후보 제스쳐 인식기 서브세트를 식별하는 것을 포함한다(예를 들어, 수신 터치값은 대응하는 제스쳐 인식기가 각각의 터치를 수신할 수 있다는 것을 가리킨다).
일부 실시예들에서, 하나 이상의 수신 제스쳐 인식기의 각각의 제스쳐 인식기에서 각각의 터치를 처리하는 것은, 각각의 제스쳐 인식기에 대응하는 각각의 제스쳐 정의에 따라 대응하는 델리게이트를 갖는 각각의 수신 제스쳐 인식기에서 각각의 터치를 처리하고, 애플리케이션 상태에 따라 하나 이상의 값을 결정하기 위해 델리게이트를 실행하며, 각각의 제스쳐 인식기에 의한 각각의 터치의 처리의 결과에 따라, 및 델리게이트에 의해 결정된 하나 이상의 값에 따라, 각각의 터치에 대응하는 정보를 소프트웨어 애플리케이션에 조건부로 전송하는 것을 포함한다(718). 장치는, 하나 이상의 터치에 대응하고 하나 이상의 제스쳐 인식기로부터 수신된 정보에 따라 소프트웨어 애플리케이션을 실행한다.
일부 실시예들에서, 각각의 수신 제스쳐 인식기에서 각각의 터치를 처리하는 것은, 검출된 터치가 각각의 제스쳐 정의와 일치할 때(예를 들어, 각각의 터치가 제스쳐 정의 또는 그 일부와 정합할 때), 대응하는 델리게이트에 의해 상태 천이가 인에이블되면(예를 들어, 도 4c-4d에서 "시작해야 하는가"(454)) 각각의 제스쳐 인식기에서의 대응하는 상태 천이를 인에이블하는 것을 포함한다(720).
일부 실시예들에서, 각각의 수신 제스쳐 인식기에서 각각의 터치를 처리하는 것은, 검출된 터치가 각각의 제스쳐 정의와 일치할 때, 대응하는 델리게이트에 의해 상태 천이가 인에이블되면 각각의 제스쳐 인식기에서의 대응하는 상태 천이를 조건부로 인에이블하는 것을 포함한다(722). 예를 들어, 상태 천이에 대한 조건은, 각각의 터치/이벤트가 제스쳐 정의 또는 그 일부와 정합하는지의 여부, 각각의 제스쳐 인식기가 각각의 터치/이벤트를 수신하는 것이 허용되어 있는지의 여부, 각각의 터치/이벤트의 인식이 차단되어 있는지의 여부, 및/또는 시스템 레벨 명령어(예를 들어, 셧다운 프로세스 또는 애플리케이션보다 높은 우선권을 갖는 기타의 프로세스)가 상태 천이를 방지하는지의 여부를 포함한다.
일부 실시예들에서, 각각의 수신 제스쳐 인식기에서 각각의 터치를 처리하는 것은, 제2 제스쳐 인식기에 대응하는 델리게이트에 의해 결정된 하나 이상의 값에 따라 제2 제스쳐 인식기에서 각각의 터치를 동시에 처리하는 것을 포함한다(724). 예를 들어, 제2 제스쳐 인식기에 대응하는 델리게이트는, 제2 제스쳐 인식기가 제2 제스쳐 인식기에서 제스쳐를 처리하는 것을 허용할 수도 있다(예를 들어, 도 4c-4d에서 단계(452)).
일부 실시예들에서, 각각의 수신 제스쳐 인식기에서 각각의 터치를 처리하는 것은, 각각의 제스쳐 인식기에 대응하는 델리게이트에 의해 결정된 하나 이상의 값에 따라 제2 제스쳐 인식기에서 각각의 터치를 동시에 처리하는 것(예를 들어, 도 4c-4d의 단계들(455 및 456))을 포함한다(726).
장치는, 각각의 제스쳐 인식기로부터 수신되고 각각의 터치에 대응하는 정보에 따라, 소프트웨어 애플리케이션을 실행한다(716)(예를 들어, 545). 예를 들어, 소프트웨어 애플리케이션(예를 들어, 132-1)은 복수의 이벤트 처리기(322)를 포함하고, 하나 이상의 이벤트 처리기(322)는 각각의 제스쳐 인식기로부터 수신된 정보에 따라 활성화된다(예를 들어, 액션-타겟 쌍(345)에 나열된 이벤트 처리기(322)가 활성화된다).
도 8a 및 도 8b는 일부 실시예들에 따른, 이산 제스쳐 인식기와 연속 제스쳐 인식기를 포함하는 소프트웨어 애플리케이션에서 각각의 터치를 처리하는 예시적 방법을 나타내는 플로차트이다.
소프트웨어 애플리케이션을 실행하도록 구성되고 터치 감응면을 갖는 전자 장치(예를 들어, 장치(104))에서 방법(800)이 수행된다(802).
디스플레이는 소프트웨어 애플리케이션(예를 들어, 132-1)의 하나 이상의 뷰들(예를 들어, 316)을 디스플레이한다(804). 하나 이상의 디스플레이된 뷰는 복수의 제스쳐 인식기(예를 들어, 320)를 포함한다. 복수의 제스쳐 인식기는 적어도 하나의 이산 제스쳐 인식기(예를 들어, 도 4a 및 도 4c)와 적어도 하나의 연속 제스쳐 인식기(예를 들어, 도 4b 및 도 4d)를 포함한다.
일부 실시예들에서, 이산 제스쳐 인식기는 각각의 제스쳐에 응답하여 단일의 액션 메시지를 전송하도록 구성되고, 연속 제스쳐 인식기는 각각의 인식된 제스쳐의 연속 인식된 서브-이벤트들에서 액션 메시지를 전송하도록 구성된다.
일부 실시예들에서, 이산 제스쳐 인식기는 각각의 제스쳐에 응답하여 단일 세트의 액션 메시지를 전송하도록 구성된다. 복수의 타겟-액션 쌍이 각각의 이산 제스쳐 인식기에 할당될 때, 단일 세트의 액션 메시지는 복수의 액션 메시지를 포함한다. 단일 타겟-액션 쌍이 각각의 이산 제스쳐 인식기에 할당될 때, 단일 세트의 액션 메시지는 단일 액션 메시지를 포함한다.
일부 실시예들에서, 각각의 제스쳐 인식기는 한 세트의 제스쳐 인식기 상태(예를 들어, 도 4a-4d)를 가진다(822).
일부 실시예들에서, 이산 제스쳐 인식기는 하기의 상태들을 포함하는 제1 세트의 제스쳐 인식기 상태를 가진다(824):
● 제스쳐 가능 상태(410), 이산 제스쳐 인식기의 초기 상태에 대응;
● 제스쳐 인식 상태(420), 각각의 제스쳐의 인식에 대응; 및
● 제스쳐 실패 상태(430), 하나 이상의 터치를 각각의 제스쳐로서 인식하는 이산 제스쳐 인식기의 실패에 대응.
일부 실시예들에서, 연속 제스쳐 인식기는 하기 상태들을 포함하는 제2 세트의 제스쳐 인식기 상태를 가진다:
● 제스쳐 가능 상태(410), 연속 제스쳐 인식기의 초기 상태에 대응;
● 제스쳐 개시 상태(412), 각각의 제스쳐의 초기 인식에 대응;
● 제스쳐 변경 상태(414), 각각의 터치의 위치에서의 각각의 변화에 대응;
● 제스쳐 종료 상태(416), 각각의 인식된 제스쳐의 완료에 대응;
● 제스쳐 취소 상태(418), 각각의 제스쳐의 인식의 중단에 대응; 및
● 제스쳐 실패 상태(430), 하나 이상의 터치를 각각의 제스쳐로서 인식하는 연속 제스쳐 인식기의 실패에 대응.
일부 실시예들에서, 제스쳐 인식기 상태는 할당된 값(예를 들어, 제스쳐 인식기 상태값))을 가진다. 일부 실시예들에서, 제스쳐 인식 상태 및 제스쳐 종료 상태는 동일한 제스쳐 인식기 상태값을 가진다(826).
일부 실시예들에서, 적어도 하나의 이산 제스쳐 인식기는, 하나 이상의 탭 제스쳐 인식기, 및 스와이프 제스쳐 인식기를 포함하고, 적어도 하나의 연속 제스쳐 인식기는, 하나 이상의 길게 누름 제스쳐 인식기, 핀치 제스쳐 인식기, 팬 제스쳐 인식기, 회전 제스쳐 인식기, 및 변형 제스쳐 인식기를 포함한다(828).
일부 실시예들에서, 적어도 하나의 이산 제스쳐 인식기는, 탭 제스쳐 인식기, 및 스와이프 제스쳐 인식기를 포함하고, 적어도 하나의 연속 제스쳐 인식기는, 길게 누름 제스쳐 인식기, 핀치 제스쳐 인식기, 팬 제스쳐 인식기, 회전 제스쳐 인식기, 및 변형 제스쳐 인식기를 포함한다(830).
탭 제스쳐 인식기는 탭 제스쳐를 인식하도록 구성되고; 스와이프 제스쳐 인식기는 스와이프 제스쳐(예를 들어, 터치 감응면 상의 터치의 플리커)를 인식하도록 구성되며; 길게 누름 제스쳐 인식기는 길게 누름 제스쳐(예를 들어, 터치의 누름과 유지)를 인식하도록 구성되고, 핀치 제스쳐 인식기는 핀치 제스쳐(예를 들어, 2개 이상의 터치의 접촉 및 상태적 이동)를 인식하도록 구성되고, 팬 제스쳐 인식기는 팬 제스쳐(예를 들어, 하나 이상의 터치의 터치 및 코히어런트 움직임)를 인식하도록 구성되고, 회전 제스쳐 인식기는 회전(예를 들어, 2개 이상의 터치의 접촉과 회전 이동)을 인식하도록 구성되고; 변형 제스쳐 인식기는 변형 제스쳐(예를 들어, 팬, 회전, 및 핀치를 나타내는 2개 이상의 터치의 동시 움직임)를 인식하도록 구성된다.
일부 실시예들에서, 적어도 하나의 이산 제스쳐 인식기(예를 들어, 하나 이상의 앞서 언급한 이산 제스쳐 인식기)와 적어도 하나의 연속 제스쳐 인식기(예를 들어, 하나 이상의 앞서 언급한 연속 제스쳐 인식기)는, 소프트웨어 라이브러리로 배포되어, 소프트웨어 개발자들이 그 소프트웨어 라이브러리를 이용하여 이들을 임의의 서드 파티 소프트웨어에 통합할 수 있게 한다. 비교하여, 뷰들은 뷰 스타일(예를 들어, 사용자 인터페이스 객체 및 프레임의 색상, 크기, 및 형상)을 가진다. 일부 실시예들에서, 미리정의된 뷰 스타일은, UI 인터페이스 API(예를 들어, 도 2의 204)의 일부로서 배포되어, 소프트웨어 개발자들이 소프트웨어 라이브러리(또는 템플릿)를 이용함으로써 미리정의된 뷰 스타일을 갖는 소프트웨어 애플리케이션을 개발할 수 있게 한다.
장치는 하나 이상의 터치를 검출한다(도 8a의 808). 일부 실시예들에서, 장치는, 센서(130), 입력 장치(128), 및/또는 터치 감응 디스플레이(156)를 이용하여 하나 이상의 이벤트를 검출한다.
장치는 하나 이상의 제스쳐 인식기를 이용하여 터치들 각각을 처리한다(810). 각각의 터치의 처리는, 각각의 제스쳐 인식기에 대응하는 각각의 제스쳐 정의에 따라 각각의 제스쳐 인식기에서 각각의 터치를 처리하는 것(예를 들어, 이벤트 비교기(332)를 이용하여 이벤트와 제스쳐 정의(333)를 비교하고, 이벤트가 제스쳐 정의(333) 또는 그 일부와 정합하는지를 결정하는 것), 및 각각의 제스쳐 인식기에서의 각각의 터치의 처리 결과에 따라 소프트웨어 애플리케이션에 하나 이상의 각각의 액션 메시지를 조건부로 전송하는 것(예를 들어, 각각의 터치가 제스쳐 정의와 정합할 때 액션 메시지를 전송하는 것)을 포함한다(812).
일부 실시예들에서, 소프트웨어 애플리케이션은 애플리케이션 상태를 가진다(814). 하나 이상의 각각의 액션 메시지를 조건부로 전송하는 것은, 추가로 소프트웨어 애플리케이션의 애플리케이션 상태에 따라 하나 이상의 각각의 액션 메시지를 조건부로 전송하는 것을 포함한다. 예를 들어, 소프트웨어 애플리케이션의 애플리케이션 상태는 하나 이상의 각각의 액션 메시지의 전송을 지연하거나 방지할 수도 있다(예를 들어, 시스템 자원이 과도이용될 때, 더 높은 우선순위의 프로세스가 처리될 필요가 있을 때 등).
장치는, 하나 이상의 터치에 대응하는 하나 이상의 제스쳐 인식기로부터 수신된 하나 이상의 액션 메시지에 따라 소프트웨어 애플리케이션을 실행한다(816). 예를 들어, 소프트웨어 애플리케이션(예를 들어, 132-1)은 복수의 이벤트 처리기(322)를 포함하고, 하나 이상의 이벤트 처리기(322)는 하나 이상의 제스쳐 인식기로부터 수신된 액션 메시지에 따라 활성화된다.
일부 실시예들에서, 장치는 각각의 제스쳐 인식기로부터 추가의 정보를 요청한다(818). 소프트웨어 애플리케이션을 실행하는 것은, 추가로 추가 정보에 따라 소프트웨어 애플리케이션을 실행하는 것을 포함한다. 예를 들어, 각각의 제스쳐 인식기는 추가 정보(예를 들어, 각각의 서브-이벤트에 대한 타임 스탬프, 지터의 양, 속도, 방향, 지속기간, 스케일 팩터, 각도 등과 같은 상세 정보)를 제공할 수 있다.
일부 실시예들에서, 추가 정보는 각각의 제스쳐 인식기에서 처리되는 각각의 터치의 수와 위치를 포함한다(820).
일부 실시예들에 따라, 도 9는 전술된 본 발명의 원리에 따라 구성된 전자 장치(900)의 기능 블록도를 도시한다. 장치의 기능 블록들은, 본 발명의 원리를 실행하기 위해 하드웨어, 소프트웨어, 또는 하드웨어와 소프트웨어의 조합에 의해 구현될 수도 있다. 당업자라면, 도 9에 기술된 기능 블록들은 전술된 본 발명의 원리를 구현하기 위해 결합되거나 서브-블록들로 분리될 수도 있다는 것을 이해할 것이다. 따라서, 여기서의 설명은 여기서 설명된 기능 블록들의 임의의 가능한 조합 또는 분리 또는 추가의 정의를 지원할 수도 있다.
도 9에 도시된 바와 같이, 전자 장치(900)는 하나 이상의 이벤트를 감지하도록 구성된 하나 이상의 이벤트 감지 유닛(902)과, 하나 이상의 이벤트 감지 유닛(902)에 결합된 처리 유닛(906)을 포함한다. 일부 실시예들에서, 전자 장치는 또한 처리 유닛(906)에 결합된 디스플레이 유닛(904)을 포함한다. 일부 실시예들에서, 처리 유닛(906)은, 실행 유닛(908), 디스플레이 인에이블 유닛(910), 검출 유닛(912), 이벤트 처리 유닛(914), 전송 유닛(916), 인식기 인에이블 유닛(918), 차단 유닛(920), 및 할당 유닛(922)을 포함한다.
처리 유닛(906)은, 복수의 뷰와 소프트웨어 애플리케이션의 애플리케이션 상태를 포함하는 소프트웨어 애플리케이션을 (예를 들어, 실행 유닛(908)에 의해) 실행하고, 복수의 뷰들 중 하나 이상의 뷰의 디스플레이를 (예를 들어, 디스플레이 유닛(904) 상의 디스플레이 인에이블 유닛(910)에 의해) 인에이블하도록 구성된다. 하나 이상의 디스플레이된 뷰들의 각각의 뷰는 각각의 제스쳐 인식기를 포함하며, 각각의 제스쳐 인식기는 대응하는 델리게이트를 가진다. 처리 유닛은(906), 하나 이상의 이벤트 감지 유닛(902)에 의해 감지된 하나 이상의 이벤트를 (예를 들어, 검출 유닛(912)에 의해) 검출하고, 각각의 제스쳐 인식기에 대응하는 각각의 제스쳐 정의에 따라 각각의 제스쳐 인식기에서 각각의 이벤트를 (예를 들어, 이벤트 처리 유닛(914)에 의해) 처리하고, 애플리케이션 상태에 따라 하나 이상의 값을 결정하기 위해 대응하는 델리게이트를 (예를 들어, 실행 유닛(908에 의해) 실행하며, 각각의 제스쳐 인식기에 의한 각각의 이벤트의 처리의 결과에 따라 그리고 대응하는 델리게이트에 의해 결정된 하나 이상의 값에 따라, 각각의 이벤트에 대응하는 정보를 (예를 들어, 전송 유닛(916)에 의해) 소프트웨어 애플리케이션에 조건부로 전송함으로써, 각각의 제스쳐 인식기를 이용하여 하나 이상의 이벤트의 각각의 이벤트를 (예를 들어, 이벤트 처리 유닛(914)에 의해) 처리한다. 처리 유닛은(906), 각각의 이벤트에 대응하는, 각각의 제스쳐 인식기로부터 수신된 정보에 따라 소프트웨어 애플리케이션을 (예를 들어, 실행 유닛(908)에 의해) 실행하도록 구성된다.
일부 실시예들에서, 하나 이상의 이벤트 감지 유닛(908)은 하나 이상의 터치를 검출하도록 구성된 터치 감응면 유닛(예를 들어, 도 10의 터치 감응면 유닛(1002))을 포함하고, 하나 이상의 이벤트는 하나 이상의 터치를 포함하며, 처리 유닛(906)은 각각의 터치를 (예를 들어, 이벤트 처리 유닛(914)에 의해) 처리하도록 구성된다.
일부 실시예들에서, 처리 유닛(906)은, 각각의 제스쳐 인식기가, 대응하는 델리게이트에 의해 결정된 하나 이상의 값에 따라 각각의 터치를 조건부로 수신하는 것을 (예를 들어, 인식기 인에이블 유닛(918)에 의해) 인에이블하도록 구성된다.
일부 실시예들에서, 처리 유닛(906)은, (예를 들어, 이벤트 처리 유닛(914) 및/또는 인식기 인에이블 유닛(918)에 의해) 대응하는 델리게이트에 의해 결정된 하나 이상의 값이 미리정의된 터치 무시 기준과 정합할 때 각각의 제스쳐 인식기가 각각의 터치를 무시하는 것을 인에이블함으로써 각각의 터치를 처리하도록 구성된다.
일부 실시예들에서, 처리 유닛(906)은, (예를 들어, 이벤트 처리 유닛(914) 및/또는 차단 유닛(920)에 의해) 대응하는 델리게이트에 의해 결정된 하나 이상의 값이 미리정의된 터치 무시 기준과 정합할 때 각각의 제스쳐 인식기가 각각의 터치를 수신하는 것을 차단함으로써 각각의 터치를 처리하도록 구성된다.
일부 실시예들에서, 처리 유닛(906)은, (예를 들어, 이벤트 처리 유닛(914) 및/또는 이벤트 인에이블 유닛(918)에 의해) 검출된 터치가 각각의 제스쳐 정의와 일치할 때, 대응하는 델리게이트에 의해 상태 천이가 인에이블된 경우 각각의 제스쳐 인식기에서의 대응하는 상태 천이를 인에이블함으로써 각각의 제스쳐 인식기에서 각각의 터치를 처리하도록 구성된다.
일부 실시예들에서, 처리 유닛(906)은, (예를 들어, 이벤트 처리 유닛(914) 및/또는 이벤트 인에이블 유닛(918)에 의해) 검출된 터치가 각각의 제스쳐 정의와 일치할 때, 대응하는 델리게이트에 의해 상태 천이가 인에이블되면 각각의 제스쳐 인식기에서의 대응하는 상태 천이를 조건부로 인에이블함으로써, 각각의 제스쳐 인식기에서 각각의 터치를 처리하도록 구성된다.
일부 실시예들에서, 처리 유닛(906)은, (예를 들어, 이벤트 처리 유닛(914)에 의해), 제2 제스쳐 인식기에 대응하는 델리게이트에 의해 결정된 하나 이상의 값에 따라 제2 제스쳐 인식기에서 각각의 터치를 동시에 처리함으로써, 각각의 제스쳐 인식기에서 각각의 터치를 처리하도록 구성된다.
일부 실시예들에서, 처리 유닛(906)은, (예를 들어, 이벤트 처리 유닛(914)에 의해), 각각의 제스쳐 인식기에 대응하는 델리게이트에 의해 결정된 하나 이상의 값에 따라 제2 제스쳐 인식기에서 각각의 터치를 동시에 처리함으로써 각각의 제스쳐 인식기에서 각각의 터치를 처리하도록 구성된다.
일부 실시예들에서, 하나 이상의 디스플레이된 뷰들은 복수의 제스쳐 인식기들을 포함하고, 처리 유닛(906)은, (예를 들어, 할당 유닛(922)에 의해) 복수의 제스쳐 인식기들의 적어도 서브세트에 별개의 델리게이트를 할당하도록 구성된다.
일부 실시예들에 따라, 도 10은 전술된 본 발명의 원리에 따라 구성된 전자 장치(1000)의 기능 블록도를 도시한다. 장치의 기능 블록들은, 본 발명의 원리를 실행하기 위해 하드웨어, 소프트웨어, 또는 하드웨어와 소프트웨어의 조합에 의해 구현될 수도 있다. 당업자라면, 도 10에 기술된 기능 블록들은 전술된 본 발명의 원리를 구현하기 위해 결합되거나 서브-블록들로 분리될 수도 있다는 것을 이해할 것이다. 따라서, 여기서의 설명은 여기서 설명된 기능 블록들의 임의의 가능한 조합 또는 분리 또는 추가의 정의를 지원할 수도 있다.
도 10에 도시된 바와 같이, 전자 장치(1000)는 하나 이상의 터치를 수신하도록 구성된 터치 감응면 유닛(1002)과, 터치 감응면 유닛(1002)에 결합된 처리 유닛(1006)을 포함한다. 일부 실시예들에서, 전자 장치(1000)는 또한 처리 유닛(1006)에 결합된 디스플레이 유닛(1004)을 포함한다. 일부 실시예들에서, 처리 유닛(1006)은, 실행 유닛(1008), 디스플레이 인에이블 유닛(1010), 검출 유닛(1012), 터치 처리 유닛(1014), 전송 유닛(1016), 할당 유닛(1018), 식별 유닛(1020), 및 인식기 인에이블 유닛(1022)을 포함한다.
처리 유닛(1006)은, 복수의 뷰와 소프트웨어 애플리케이션의 애플리케이션 상태를 포함하는 소프트웨어 애플리케이션을 (예를 들어, 실행 유닛(1008)에 의해) 실행하고, 복수의 뷰들 중 하나 이상의 뷰의 디스플레이를 (예를 들어, 디스플레이 유닛(1004) 상의 디스플레이 인에이블 유닛(1010)에 의해) 인에이블하도록 구성된다. 하나 이상의 디스플레이된 뷰의 각각의 뷰는 하나 이상의 각각의 제스쳐 인식기를 포함하며, 각각의 제스쳐 인식기는 대응하는 델리게이트를 가진다. 처리 유닛(1006)은, (예를 들어, 검출 유닛(1012)에 의해) 터치 감응면 유닛(1002) 상에서 수신된 하나 이상의 터치를 검출하도록 구성된다. 각각의 터치는 하나 이상의 디스플레이된 뷰들 내에 떨어지는 터치 위치를 가진다. 처리 유닛(1006)은, (예를 들어, 실행 유닛(1008)에 의해) 애플리케이션 상태에 따라 수신 터치값을 얻기 위해 각각의 제스쳐 인식기에 대응하는 델리게이트를 실행하고, 수신 터치값이 미리정의된 기준을 만족하면, (예를 들어, 터치 처리 유닛(1014)에 의해) 각각의 제스쳐 인식기에서 각각의 터치를 처리하며, (예를 들어, 전송 유닛(1016)에 의해) 각각의 터치에 대응하는 정보를 소프트웨어 애플리케이션에 조건부로 전송함으로써 하나 이상의 터치의 각각의 터치를 처리하도록 구성된다. 처리 유닛(1006)은, (예를 들어, 실행 유닛(1008)에 의해) 각각의 터치에 대응하는, 각각의 제스쳐 인식기로부터 수신된 정보에 따라 소프트웨어 애플리케이션을 실행하도록 구성된다.
일부 실시예들에서, 복수의 뷰들은 복수의 제스쳐 인식기들을 포함한다. 처리 유닛(1006)은, (예를 들어, 할당 유닛(1018)에 의해) 복수의 제스쳐 인식기들 중 적어도 서브세트에 별개의 델리게이트를 할당하고, (예를 들어, 식별 유닛(1020)에 의해) 복수의 제스쳐 인식기들 중 한 세트의 후보 제스쳐 인식기를 식별하고; 할당된 델리게이트를 갖는 각각의 후보 제스쳐 인식기에 대해, (예를 들어, 실행 유닛(1008)에 의해) 애플리케이션 상태에 따라 수신 터치값을 얻기 위해 할당된 델리게이트를 실행하고; (예를 들어, 식별 유닛(1020)에 의해) 얻어진 수신 터치값에 따라 후보 제스쳐 인식기들의 서브세트를 포함하는 하나 이상의 수신 제스쳐 인식기들을 식별하며; (예를 들어, 터치 처리 유닛(1014)에 의해) 하나 이상의 수신 제스쳐 인식기의 각 제스쳐 인식기에서 각각의 터치를 처리함으로써, 하나 이상의 터치들의 각각의 터치를 처리하도록 구성된다.
일부 실시예들에서, 처리 유닛(1006)은, (예를 들어, 터치 처리 유닛(1014)에 의해) 각각의 제스쳐 인식기에 대응하는 각각의 제스쳐 정의에 따라 델리게이트가 할당된 각각의 수신 제스쳐 인식기에서 각각의 터치를 처리하고, (예를 들어, 실행 유닛(1008)에 의해) 애플리케이션 상태에 따라 하나 이상의 값을 결정하기 위해 할당된 델리게이트를 실행하고, (예를 들어, 전송 유닛(1016)에 의해) 각각의 제스쳐 인식기에 의한 각각의 터치의 처리 결과에 따라, 및 할당된 델리게이트에 의해 결정된 하나 이상의 값에 따라, 각각의 터치에 대응하는 정보를 소프트웨어 애플리케이션에 조건부로 전송하고, (예를 들어, 실행 유닛(1008)에 의해) 하나 이상의 터치에 대응하는, 하나 이상의 수신 제스쳐 인식기들로부터 수신된 정보에 따라 소프트웨어 애플리케이션을 실행함으로써, 하나 이상의 수신 제스쳐 인식기의 각각의 제스쳐 인식기에서 각각의 터치를 처리하도록 구성된다.
일부 실시예들에서, 처리 유닛(1006)은, 검출된 터치가 각각의 제스쳐 정의와 일치할 때, (예를 들어, 인식기 인에이블 유닛(1022)에 의해) 할당된 델리게이트에 의해 상태 천이가 인에이블되면 각각의 제스쳐 인식기에서의 대응하는 상태 천이를 인에이블함으로써, 각각의 수신 제스쳐 인식기에서의 각각의 터치를 처리하도록 구성된다.
일부 실시예들에서, 처리 유닛(1006)은, 검출된 터치가 각각의 제스쳐 정의와 일치할 때, (예를 들어, 인식기 인에이블 유닛(1022)에 의해) 할당된 델리게이트에 의해 상태 천이가 인에이블되면 각각의 제스쳐 인식기에서의 대응하는 상태 천이를 조건부로 인에이블함으로써, 각각의 수신 제스쳐 인식기에서 각각의 터치를 처리하도록 구성된다.
일부 실시예들에서, 처리 유닛(1006)은, (예를 들어, 터치 처리 유닛(1014)에 의해) 제2 제스쳐 인식기에 할당된 델리게이트에 의해 결정된 하나 이상의 값에 따라 제2 제스쳐 인식기에서 각각의 터치를 동시에 처리함으로써, 각각의 수신 제스쳐 인식기에서 각각의 터치를 처리하도록 구성된다.
일부 실시예들에서, 처리 유닛(1006)은, (예를 들어, 터치 처리 유닛(1014)에 의해), 각각의 제스쳐 인식기에 할당된 델리게이트에 의해 결정된 하나 이상의 값에 따라 제2 제스쳐 인식기에서 각각의 터치를 동시에 처리함으로써 각각의 수신 제스쳐 인식기에서 각각의 터치를 처리하도록 구성된다.
일부 실시예들에 따라, 도 11은 전술된 본 발명의 원리에 따라 구성된 전자 장치(1100)의 기능 블록도를 도시한다. 장치의 기능 블록들은, 본 발명의 원리를 실행하기 위해 하드웨어, 소프트웨어, 또는 하드웨어와 소프트웨어의 조합에 의해 구현될 수도 있다. 당업자라면, 도 11에 기술된 기능 블록들은 전술된 본 발명의 원리를 구현하기 위해 결합되거나 서브-블록들로 분리될 수도 있다는 것을 이해할 것이다. 따라서, 여기서의 설명은 여기서 설명된 기능 블록들의 임의의 가능한 조합 또는 분리 또는 추가의 정의를 지원할 수도 있다.
도 11에 도시된 바와 같이, 전자 장치(1100)는 하나 이상의 터치를 수신하도록 구성된 터치 감응면 유닛(1102)과, 터치 감응면 유닛(1102)에 결합된 처리 유닛(1106)을 포함한다. 일부 실시예들에서, 전자 장치(1100)는 또한 처리 유닛(1106)에 결합된 디스플레이 유닛(1104)을 포함한다. 일부 실시예들에서, 처리 유닛(1106)은, 실행 유닛(1108), 디스플레이 인에이블 유닛(1110), 검출 유닛(1112), 터치 처리 유닛(1114), 전송 유닛(1116), 및 요청 유닛(1118)을 포함한다.
처리 유닛(1106)은, (예를 들어, 실행 유닛(1108)에 의해) 소프트웨어 애플리케이션을 실행하고, (예를 들어, 디스플레이 유닛(1104) 상의 디스플레이 인에이블 유닛(1110)에 의해) 소프트웨어 애플리케이션의 하나 이상의 뷰의 디스플레이를 인에이블하도록 구성된다. 하나 이상의 디스플레이된 뷰는 복수의 제스쳐 인식기를 포함하고, 복수의 제스쳐 인식기는 적어도 하나의 이산 제스쳐 인식기와 적어도 하나의 연속 제스쳐 인식기를 포함한다. 이산 제스쳐 인식기는 각각의 제스쳐에 응답하여 단일의 액션 메시지를 전송하도록 구성되고, 연속 제스쳐 인식기는 각각의 인식된 제스쳐의 연속 인식된 서브-이벤트들에서 액션 메시지를 전송하도록 구성된다. 처리 유닛(1106)은, (예를 들어, 검출 유닛(1112)에 의해) 터치 감응면 유닛(1102) 상에서 수신된 하나 이상의 터치를 검출하고, (예를 들어, 터치 처리 유닛(1114)에 의해) 하나 이상의 제스쳐 인식기를 이용하여 각각의 터치를 처리하도록 구성된다. 처리 유닛(1106)은, (예를 들어, 터치 처리 유닛(1114)에 의해) 각각의 제스쳐 인식기에 대응하는 각각의 제스쳐 정의에 따라 각각의 제스쳐 인식기에서 각각의 터치를 처리하고, (예를 들어, 전송 유닛(1116)에 의해) 각각의 제스쳐 인식기에서의 각각의 터치의 처리의 결과에 따라 하나 이상의 각각의 액션 메시지를 소프트웨어 애플리케이션에 조건부로 전송함으로써, 각각의 터치를 처리하도록 구성된다. 처리 유닛(1106)은, (예를 들어, 실행 유닛(1108)에 의해) 하나 이상의 터치에 대응하는 하나 이상의 제스쳐 인식기로부터 수신된 하나 이상의 액션 메시지에 따라 소프트웨어 애플리케이션을 실행하도록 구성된다.
일부 실시예들에서, 각각의 제스쳐 인식기는 한 세트의 제스쳐 인식기 상태를 가진다.
일부 실시예들에서, 이산 제스쳐 인식기는, 이산 제스쳐 인식기의 초기 상태에 대응하는 제스쳐 가능 상태; 각각의 제스쳐의 인식에 대응하는 제스쳐 인식 상태; 및 하나 이상의 터치를 각각의 제스쳐로서 인식하는 이산 제스쳐 인식기의 실패에 대응하는 제스쳐 실패 상태를 포함하는 제1 세트의 제스쳐 인식기 상태를 가진다. 연속 제스쳐 인식기는, 제스쳐 가능 상태; 각각의 제스쳐의 초기 인식에 대응하는 제스쳐 개시 상태; 각각의 터치의 위치에서의 각각의 변화에 대응하는 제스쳐 변경 상태; 각각의 인식된 제스쳐의 완료에 대응하는 제스쳐 종료 상태; 각각의 제스쳐의 인식의 중단에 대응하는 제스쳐 취소 상태; 및 하나 이상의 터치를 각각의 제스쳐로서 인식하는 연속 제스쳐 인식기의 실패에 대응하는 제스쳐 실패 상태를 포함하는 제2 세트의 제스쳐 인식기 상태를 가진다.
일부 실시예들에서, 제스쳐 인식 상태 및 제스쳐 종료 상태는 동일한 제스쳐 인식기 상태값을 가진다.
일부 실시예들에서, 소프트웨어 애플리케이션은 애플리케이션 상태를 가지고; 처리 유닛(1106)은, (예를 들어, 전송 유닛(1116)에 의해) 추가로 소프트웨어 애플리케이션의 애플리케이션 상태에 따라 하나 이상의 각각의 액션 메시지를 조건부로 전송하도록 구성된다.
일부 실시예들에서, 처리 유닛(1106)은, (예를 들어, 요청 유닛(1118)에 의해) 각각의 제스쳐 인식기로부터 추가 정보를 요청하고, (예를 들어, 실행 유닛(1108)에 의해) 추가로 추가 정보에 따라 소프트웨어 애플리케이션을 실행하도록 구성된다.
일부 실시예들에서, 추가 정보는 각각의 제스쳐 인식기에서 처리되는 각각의 터치의 수와 위치를 포함한다.
일부 실시예들에서, 적어도 하나의 이산 제스쳐 인식기는, 하나 이상의 탭 제스쳐 인식기, 및 스와이프 제스쳐 인식기를 포함하고, 적어도 하나의 연속 제스쳐 인식기는, 하나 이상의 길게 누름 제스쳐 인식기, 핀치 제스쳐 인식기, 팬 제스쳐 인식기, 회전 제스쳐 인식기, 및 변형 제스쳐 인식기를 포함한다.
일부 실시예들에서, 적어도 하나의 이산 제스쳐 인식기는, 탭 제스쳐 인식기, 및 스와이프 제스쳐 인식기를 포함하고, 적어도 하나의 연속 제스쳐 인식기는, 길게 누름 제스쳐 인식기, 핀치 제스쳐 인식기, 팬 제스쳐 인식기, 회전 제스쳐 인식기, 및 변형 제스쳐 인식기를 포함한다.
전술된 설명은, 설명을 위해, 구체적인 실시예들을 참조하여 기술되었다. 그러나, 상기의 예시적 논의는, 철저히 남김없이 드러내거나 본 발명을 정확히 개시된 형태로 제한하기 위한 것이 아니다. 상기의 교시에 비추어 많은 수정과 변형이 가능하다. 본 발명의 원리와 그 실제적 적용을 최상으로 설명함으로써 당업자가 본 발명 및 고려중인 특정한 이용에 적합한 다양한 수정을 가한 다양한 실시예들을 최상으로 이용할 수 있도록, 실시예들이 선택되고 설명되었다.

Claims (61)

  1. 터치 감응면을 가지며 소프트웨어 애플리케이션을 실행하도록 구성된 전자 장치 - 상기 소프트웨어 애플리케이션은 복수의 뷰들과 상기 소프트웨어 애플리케이션의 애플리케이션 상태를 포함함 - 에서:
    상기 복수의 뷰들 중 하나 이상의 뷰들을 디스플레이하는 단계 ― 상기 하나 이상의 디스플레이된 뷰들의 각각의 뷰는 하나 이상의 각각의 제스쳐 인식기를 포함하며, 각각의 제스쳐 인식기는 대응하는 델리게이트(delegate)를 가짐 ―;
    상기 터치 감응면 상에서 하나 이상의 터치들을 검출하는 단계 ― 각각의 터치는 상기 디스플레이된 뷰들 중 하나 이상 내에 속하는 터치 위치를 가짐 ―;
    상기 하나 이상의 터치들의 각각의 터치를 처리하는 단계 ― 상기 처리 단계는, 상기 하나 이상의 터치들을 검출한 이후에 상기 각각의 제스쳐 인식기에 대응하는 델리게이트를 실행함으로써 상기 애플리케이션 상태에 기초한 수신 터치값을 얻는 단계와, 상기 수신 터치값이 미리정의된 기준을 만족하면, 상기 각각의 제스쳐 인식기에서 상기 각각의 터치를 처리하는 단계와, 상기 각각의 제스쳐 인식기에 의한 상기 각각의 터치의 처리의 결과에 따라 그리고 할당된 델리게이트에 의해 결정된 하나 이상의 값들에 따라, 상기 각각의 터치에 대응하는 정보를 상기 소프트웨어 애플리케이션에 조건부로 전송하는 단계를 포함함 ― ; 및
    상기 각각의 제스쳐 인식기로부터 수신되고 상기 각각의 터치에 대응하는 정보에 따라 상기 소프트웨어 애플리케이션을 실행하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 복수의 뷰들은 제1 복수의 제스쳐 인식기들을 포함하고;
    상기 방법은 상기 제1 복수의 제스쳐 인식기들의 적어도 한 서브세트에 별개의 델리게이트를 할당하는 단계 - 상기 서브세트는 제2 복수의 제스쳐 인식기들을 포함함 - 를 포함하며;
    상기 하나 이상의 터치들의 각각의 터치를 처리하는 단계는,
    상기 제1 복수의 제스쳐 인식기들 중 한 세트의 후보 제스쳐 인식기를 식별하는 단계와,
    할당된 델리게이트를 갖는 각각의 후보 제스쳐 인식기에 대해, 상기 애플리케이션 상태에 따라 수신 터치값을 얻기 위해 상기 할당된 델리게이트를 실행하는 단계와,
    상기 얻어진 수신 터치값들에 따라, 상기 후보 제스쳐 인식기들의 한 서브세트를 포함하는 하나 이상의 수신 제스쳐 인식기들을 식별하는 단계와,
    상기 수신 제스쳐 인식기들 중 하나 이상의 수신 제스쳐 인식기들의 각각의 제스쳐 인식기에서 상기 각각의 터치를 처리하는 단계
    를 포함하는 방법.
  3. 제2항에 있어서, 상기 하나 이상의 수신 제스쳐 인식기들의 각각의 제스쳐 인식기에서 각각의 터치를 처리하는 단계는,
    상기 각각의 수신 제스쳐 인식기에 대응하는 각각의 제스쳐 정의에 따라 델리게이트가 할당된 각각의 수신 제스쳐 인식기에서 상기 각각의 터치를 처리하는 단계와,
    상기 할당된 델리게이트를 실행함으로써 상기 애플리케이션 상태에 따라 하나 이상의 값들을 얻는 단계와,
    상기 각각의 수신 제스쳐 인식기에 의한 상기 각각의 터치의 처리의 결과에 따라 그리고 상기 할당된 델리게이트를 실행하여 얻어진 하나 이상의 값들에 따라, 상기 각각의 터치에 대응하는 정보를 상기 소프트웨어 애플리케이션에 조건부로 전송하는 단계
    를 포함하고,
    상기 방법은, 상기 수신 제스쳐 인식기들 중 하나 이상의 수신 제스쳐 인식기로부터 수신되고 상기 터치들 중 하나 이상의 터치에 대응하는 정보에 따라 상기 소프트웨어 애플리케이션을 실행하는 단계를 포함하는 방법.
  4. 제3항에 있어서, 상기 각각의 수신 제스쳐 인식기에서 각각의 터치를 처리하는 단계는, 검출된 터치가 상기 각각의 제스쳐 정의와 일치할 때, 상기 할당된 델리게이트에 의해 상태 천이가 인에이블되면 상기 각각의 수신 제스쳐 인식기에서의 대응하는 상태 천이를 조건부로 인에이블하는 단계를 포함하는 방법.
  5. 제3항 또는 제4항에 있어서, 상기 각각의 수신 제스쳐 인식기와는 상이한 제2 제스쳐 인식기에서, 상기 제2 제스쳐 인식기에 할당된 델리게이트에 의해 결정된 하나 이상의 값들에 따라, 상기 각각의 터치를 동시에 처리하는 단계를 더 포함하는 방법.
  6. 제3항 또는 제4항에 있어서, 상기 각각의 수신 제스쳐 인식기와는 상이한 제2 제스쳐 인식기에서, 상기 각각의 수신 제스쳐 인식기에 할당된 델리게이트에 의해 결정된 하나 이상의 값들에 따라, 상기 각각의 터치를 동시에 처리하는 단계를 더 포함하는 방법.
  7. 제3항 또는 제4항에 있어서,
    상기 각각의 수신 제스쳐 인식기에서 각각의 터치를 처리하는 단계는, 상기 각각의 수신 제스쳐 인식기와는 상이한 제2 제스쳐 인식기에 할당된 델리게이트에 의해 결정된 하나 이상의 값에 따라 상기 각각의 터치를 처리하는 단계를 포함하는 방법.
  8. 제3항 또는 제4항에 있어서,
    상기 할당된 델리게이트와는 상이한 제2 델리게이트는 상기 각각의 수신 제스쳐 인식기에 할당되고,
    상기 방법은,
    상기 각각의 수신 제스쳐 인식기와는 상이한 제2 제스쳐 인식기에서, 상기 각각의 제스쳐 인식기에 할당된 상기 제2 델리게이트에 의해 결정된 하나 이상의 값들에 따라, 상기 각각의 터치를 동시에 처리하는 단계를 더 포함하는 방법.
  9. 전자 장치로서,
    터치 감응면;
    하나 이상의 프로세서들;
    메모리; 및
    상기 메모리에 저장되고 상기 하나 이상의 프로세서들에 의해 실행되도록 구성된 하나 이상의 프로그램
    을 포함하며,
    상기 하나 이상의 프로그램들은 소프트웨어 애플리케이션을 포함하며, 상기 애플리케이션은 복수의 뷰들과 상기 소프트웨어 애플리케이션의 애플리케이션 상태를 포함하며,
    상기 소프트웨어 애플리케이션은,
    상기 복수의 뷰들 중 하나 이상의 뷰들을 디스플레이하고 ― 상기 하나 이상의 디스플레이된 뷰들의 각각의 뷰는 하나 이상의 각각의 제스쳐 인식기들을 포함하고, 각각의 제스쳐 인식기는 대응하는 델리게이트를 가짐 ―;
    상기 터치 감응면 상에서 하나 이상의 터치들을 검출하고 ― 각각의 터치는 상기 디스플레이된 뷰들 중 하나 이상 내에 속하는 터치 위치를 가짐 ―;
    상기 하나 이상의 터치들의 각각의 터치를 처리하고 ― 이러한 처리는, 상기 하나 이상의 터치들을 검출한 이후에 상기 각각의 제스쳐 인식기에 대응하는 델리게이트를 실행함으로써 상기 애플리케이션 상태에 기초한 수신 터치값을 얻고, 상기 수신 터치값이 미리정의된 기준을 만족하면, 상기 각각의 제스쳐 인식기에서 상기 각각의 터치를 처리하고, 상기 각각의 제스쳐 인식기에 의한 상기 각각의 터치의 처리의 결과에 따라 그리고 할당된 델리게이트에 의해 결정된 하나 이상의 값들에 따라, 상기 각각의 터치에 대응하는 정보를 상기 소프트웨어 애플리케이션에 조건부로 전송하는 것을 포함함 ― ; 그리고
    상기 각각의 제스쳐 인식기로부터 수신되고 상기 각각의 터치에 대응하는 정보에 따라 상기 소프트웨어 애플리케이션을 실행하기 위한
    명령어들을 포함하는 전자 장치.
  10. 제9항에 있어서,
    상기 복수의 뷰들은 제1 복수의 제스쳐 인식기들을 포함하고,
    상기 소프트웨어 애플리케이션은,
    상기 제1 복수의 제스쳐 인식기들의 적어도 한 서브세트에 별개의 델리게이트들을 할당하기 위한 명령어들 - 상기 서브세트는 제2 복수의 제스쳐 인식기들을 포함함 - ; 및
    상기 하나 이상의 터치들의 각각의 터치를 처리하기 위한 명령어들
    을 포함하고,
    상기 하나 이상의 터치들의 각각의 터치를 처리하기 위한 명령어들은,
    상기 제1 복수의 제스쳐 인식기들 중 한 세트의 후보 제스쳐 인식기를 식별하고; 할당된 델리게이트를 갖는 각각의 후보 제스쳐 인식기에 대해, 상기 애플리케이션 상태에 따라 수신 터치값을 얻기 위해 상기 할당된 델리게이트를 실행하며; 상기 얻어진 수신 터치값들에 따라 상기 후보 제스쳐 인식기들의 서브세트를 포함하는 하나 이상의 수신 제스쳐 인식기들을 식별하고, 상기 수신 제스쳐 인식기들 중 하나 이상의 수신 제스쳐 인식기들의 각각의 제스쳐 인식기에서 상기 각각의 터치를 처리하기 위한 명령어들을 포함하는, 전자 장치.
  11. 제10항에 있어서,
    상기 하나 이상의 수신 제스쳐 인식기들의 각각의 제스쳐 인식기에서 상기 각각의 터치를 처리하기 위한 명령어들은,
    상기 각각의 수신 제스쳐 인식기에 대응하는 각각의 제스쳐 정의에 따라 델리게이트가 할당된 각각의 수신 제스쳐 인식기에서 상기 각각의 터치를 처리하고; 상기 할당된 델리게이트를 실행함으로써 상기 애플리케이션 상태에 따라 하나 이상의 값들을 얻으며; 상기 각각의 수신 제스쳐 인식기에 의한 각각의 터치의 처리의 결과에 따라 그리고 상기 할당된 델리게이트를 실행하여 얻어진 하나 이상의 값들에 따라, 상기 각각의 터치에 대응하는 정보를 상기 소프트웨어 애플리케이션에 조건부로 전송하기 위한 명령어들을 포함하고,
    상기 소프트웨어 애플리케이션은 상기 수신 제스쳐 인식기들 중 하나 이상으로부터 수신되고 상기 터치들 중 하나 이상에 대응하는 정보에 따라 실행되도록 구성된 전자 장치.
  12. 제11항에 있어서, 상기 각각의 수신 제스쳐 인식기에서 상기 각각의 터치를 처리하기 위한 명령어들은,
    검출된 터치가 상기 각각의 제스쳐 정의와 일치할 때, 상기 할당된 델리게이트에 의해 상태 천이가 인에이블되면 상기 각각의 수신 제스쳐 인식기에서의 대응하는 상태 천이를 조건부로 인에이블하기 위한 명령어들을 포함하는 전자 장치.
  13. 제11항 또는 제12항에 있어서, 상기 소프트웨어 애플리케이션은,
    상기 각각의 수신 제스쳐 인식기와는 상이한 제2 제스쳐 인식기에서, 상기 제2 제스쳐 인식기에 할당된 델리게이트에 의해 결정된 하나 이상의 값들에 따라, 상기 각각의 터치를 동시에 처리하기 위한 명령어들을 포함하는 전자 장치.
  14. 제11항 또는 제12항에 있어서, 상기 소프트웨어 애플리케이션은,
    상기 각각의 수신 제스쳐 인식기와는 상이한 제2 제스쳐 인식기에서, 상기 각각의 수신 제스쳐 인식기에 할당된 델리게이트에 의해 결정된 하나 이상의 값들에 따라, 상기 각각의 터치를 동시에 처리하기 위한 명령어들을 포함하는 전자 장치.
  15. 터치 감응면을 갖는 전자 장치에 의한 실행을 위한 하나 이상의 프로그램들을 저장하는 컴퓨터 판독가능한 저장 매체로서,
    상기 하나 이상의 프로그램들은 소프트웨어 애플리케이션을 포함하며, 상기 애플리케이션은 복수의 뷰들과 상기 소프트웨어 애플리케이션의 애플리케이션 상태를 포함하며,
    상기 소프트웨어 애플리케이션은,
    상기 복수의 뷰들 중 하나 이상의 뷰들을 디스플레이하고 ― 상기 하나 이상의 디스플레이된 뷰들의 각각의 뷰는 하나 이상의 각각의 제스쳐 인식기들을 포함하고, 각각의 제스쳐 인식기는 대응하는 델리게이트를 가짐 ―;
    상기 터치 감응면 상에서 하나 이상의 터치들을 검출하고 ― 각각의 터치는 상기 디스플레이된 뷰들 중 하나 이상 내에 속하는 터치 위치를 가짐 ―;
    상기 하나 이상의 터치들의 각각의 터치를 처리하고 ― 이러한 처리는, 상기 하나 이상의 터치들을 검출한 이후에 상기 각각의 제스쳐 인식기에 대응하는 델리게이트를 실행함으로써 상기 애플리케이션 상태에 기초한 수신 터치값을 얻고, 상기 수신 터치값이 미리정의된 기준을 만족하면, 상기 각각의 제스쳐 인식기에서 상기 각각의 터치를 처리하고, 상기 각각의 제스쳐 인식기에 의한 상기 각각의 터치의 처리의 결과에 따라 그리고 할당된 델리게이트에 의해 결정된 하나 이상의 값들에 따라, 상기 각각의 터치에 대응하는 정보를 상기 소프트웨어 애플리케이션에 조건부로 전송하는 것을 포함함 ― ; 그리고
    상기 각각의 제스쳐 인식기로부터 수신되고 상기 각각의 터치에 대응하는 정보에 따라 상기 소프트웨어 애플리케이션을 실행하기 위한
    명령어들을 포함하는 컴퓨터 판독가능한 저장 매체.
  16. 제15항에 있어서,
    상기 복수의 뷰들은 제1 복수의 제스쳐 인식기들을 포함하고,
    상기 소프트웨어 애플리케이션은,
    상기 제1 복수의 제스쳐 인식기들의 적어도 한 서브세트에 별개의 델리게이트들을 할당하기 위한 명령어들 - 상기 서브세트는 제2 복수의 제스쳐 인식기들을 포함함 - ; 및
    상기 하나 이상의 터치들의 각각의 터치를 처리하기 위한 명령어들
    을 포함하고,
    상기 하나 이상의 터치들의 각각의 터치를 처리하기 위한 명령어들은,
    상기 제1 복수의 제스쳐 인식기들 중 한 세트의 후보 제스쳐 인식기를 식별하고; 할당된 델리게이트를 갖는 각각의 후보 제스쳐 인식기에 대해, 상기 애플리케이션 상태에 따라 수신 터치값을 얻기 위해 상기 할당된 델리게이트를 실행하며; 상기 얻어진 수신 터치값들에 따라 상기 후보 제스쳐 인식기들의 서브세트를 포함하는 하나 이상의 수신 제스쳐 인식기들을 식별하고, 상기 수신 제스쳐 인식기들 중 하나 이상의 수신 제스쳐 인식기들의 각각의 제스쳐 인식기에서 상기 각각의 터치를 처리하기 위한 명령어들을 포함하는 컴퓨터 판독가능한 저장 매체.
  17. 제16항에 있어서,
    상기 하나 이상의 수신 제스쳐 인식기들의 각각의 제스쳐 인식기에서 상기 각각의 터치를 처리하기 위한 명령어들은,
    상기 각각의 수신 제스쳐 인식기에 대응하는 각각의 제스쳐 정의에 따라 델리게이트가 할당된 각각의 수신 제스쳐 인식기에서 상기 각각의 터치를 처리하고; 상기 할당된 델리게이트를 실행함으로써 상기 애플리케이션 상태에 따라 하나 이상의 값들을 얻으며; 상기 각각의 수신 제스쳐 인식기에 의한 각각의 터치의 처리의 결과에 따라 그리고 상기 할당된 델리게이트를 실행하여 얻어진 하나 이상의 값들에 따라, 상기 각각의 터치에 대응하는 정보를 상기 소프트웨어 애플리케이션에 조건부로 전송함으로써, 상기 하나 이상의 수신 제스쳐 인식기들의 각각의 제스쳐 인식기에서 상기 각각의 터치를 처리하기 위한 명령어들을 포함하고,
    상기 소프트웨어 애플리케이션은 상기 수신 제스쳐 인식기들 중 하나 이상으로부터 수신되고 상기 터치들 중 하나 이상에 대응하는 정보에 따라 실행되도록 구성되는 컴퓨터 판독가능한 저장 매체.
  18. 제17항에 있어서, 상기 각각의 수신 제스쳐 인식기에서 상기 각각의 터치를 처리하기 위한 명령어들은,
    검출된 터치가 상기 각각의 제스쳐 정의와 일치할 때, 상기 할당된 델리게이트에 의해 상태 천이가 인에이블되면 상기 각각의 수신 제스쳐 인식기에서의 대응하는 상태 천이를 조건부로 인에이블함으로써, 상기 각각의 수신 제스쳐 인식기에서 상기 각각의 터치를 처리하기 위한 명령어들을 포함하는 컴퓨터 판독가능한 저장 매체.
  19. 제16항 또는 제17항에 있어서, 상기 소프트웨어 애플리케이션은,
    상기 각각의 수신 제스쳐 인식기와는 상이한 제2 제스쳐 인식기에서, 상기 제2 제스쳐 인식기에 할당된 델리게이트에 의해 결정된 하나 이상의 값들에 따라, 상기 각각의 터치를 동시에 처리하기 위한 명령어들을 포함하는 컴퓨터 판독가능한 저장 매체.
  20. 제16항 또는 제17항에 있어서, 상기 소프트웨어 애플리케이션은,
    상기 각각의 수신 제스쳐 인식기에 할당된 델리게이트에 의해 결정된 하나 이상의 값들에 따라, 상기 각각의 수신 제스쳐 인식기와는 상이한 제2 제스쳐 인식기에서 상기 각각의 터치를 동시에 처리하기 위한 명령어들을 포함하는 컴퓨터 판독가능한 저장 매체.
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
  38. 삭제
  39. 삭제
  40. 삭제
  41. 삭제
  42. 삭제
  43. 삭제
  44. 삭제
  45. 삭제
  46. 삭제
  47. 삭제
  48. 삭제
  49. 삭제
  50. 삭제
  51. 삭제
  52. 삭제
  53. 삭제
  54. 삭제
  55. 삭제
  56. 삭제
  57. 삭제
  58. 삭제
  59. 삭제
  60. 삭제
  61. 삭제
KR1020127022239A 2010-01-26 2011-01-26 제스쳐 인식을 제어하고 수정하기 위한 델리게이트를 갖는 제스쳐 인식기 KR101519194B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US29853110P 2010-01-26 2010-01-26
US61/298,531 2010-01-26
US12/789,695 US9684521B2 (en) 2010-01-26 2010-05-28 Systems having discrete and continuous gesture recognizers
US12/789,695 2010-05-28
PCT/US2011/022516 WO2011094267A1 (en) 2010-01-26 2011-01-26 Gesture recognizers with delegates for controlling and modifying gesture recognition

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020147030745A Division KR101645839B1 (ko) 2010-01-26 2011-01-26 제스쳐 인식을 제어하고 수정하기 위한 델리게이트를 갖는 제스쳐 인식기

Publications (2)

Publication Number Publication Date
KR20120123476A KR20120123476A (ko) 2012-11-08
KR101519194B1 true KR101519194B1 (ko) 2015-05-11

Family

ID=43825308

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020167020780A KR101695606B1 (ko) 2010-01-26 2011-01-26 제스쳐 인식을 제어하고 수정하기 위한 델리게이트를 갖는 제스쳐 인식기
KR1020127022239A KR101519194B1 (ko) 2010-01-26 2011-01-26 제스쳐 인식을 제어하고 수정하기 위한 델리게이트를 갖는 제스쳐 인식기
KR1020147030745A KR101645839B1 (ko) 2010-01-26 2011-01-26 제스쳐 인식을 제어하고 수정하기 위한 델리게이트를 갖는 제스쳐 인식기

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020167020780A KR101695606B1 (ko) 2010-01-26 2011-01-26 제스쳐 인식을 제어하고 수정하기 위한 델리게이트를 갖는 제스쳐 인식기

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020147030745A KR101645839B1 (ko) 2010-01-26 2011-01-26 제스쳐 인식을 제어하고 수정하기 위한 델리게이트를 갖는 제스쳐 인식기

Country Status (7)

Country Link
US (3) US9684521B2 (ko)
EP (2) EP2354930B1 (ko)
JP (3) JP5497920B2 (ko)
KR (3) KR101695606B1 (ko)
CN (4) CN103955341B (ko)
AU (3) AU2011209720B2 (ko)
WO (1) WO2011094267A1 (ko)

Families Citing this family (114)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7844915B2 (en) 2007-01-07 2010-11-30 Apple Inc. Application programming interfaces for scrolling operations
US20080168478A1 (en) 2007-01-07 2008-07-10 Andrew Platzer Application Programming Interfaces for Scrolling
US20080168402A1 (en) 2007-01-07 2008-07-10 Christopher Blumenberg Application Programming Interfaces for Gesture Operations
US8717305B2 (en) 2008-03-04 2014-05-06 Apple Inc. Touch event model for web pages
US8416196B2 (en) 2008-03-04 2013-04-09 Apple Inc. Touch event model programming interface
US8645827B2 (en) * 2008-03-04 2014-02-04 Apple Inc. Touch event model
US8375336B2 (en) * 2008-05-23 2013-02-12 Microsoft Corporation Panning content utilizing a drag operation
US8285499B2 (en) 2009-03-16 2012-10-09 Apple Inc. Event recognition
US8566045B2 (en) 2009-03-16 2013-10-22 Apple Inc. Event recognition
US9311112B2 (en) 2009-03-16 2016-04-12 Apple Inc. Event recognition
US8566044B2 (en) 2009-03-16 2013-10-22 Apple Inc. Event recognition
US9684521B2 (en) 2010-01-26 2017-06-20 Apple Inc. Systems having discrete and continuous gesture recognizers
US8570286B2 (en) * 2010-02-12 2013-10-29 Honeywell International Inc. Gestures on a touch-sensitive display
US20110199386A1 (en) * 2010-02-12 2011-08-18 Honeywell International Inc. Overlay feature to provide user assistance in a multi-touch interactive display environment
US8638371B2 (en) * 2010-02-12 2014-01-28 Honeywell International Inc. Method of manipulating assets shown on a touch-sensitive display
US8756522B2 (en) * 2010-03-19 2014-06-17 Blackberry Limited Portable electronic device and method of controlling same
US8552999B2 (en) 2010-06-14 2013-10-08 Apple Inc. Control selection approximation
US8972467B2 (en) 2010-08-31 2015-03-03 Sovanta Ag Method for selecting a data set from a plurality of data sets by means of an input device
US8767019B2 (en) * 2010-08-31 2014-07-01 Sovanta Ag Computer-implemented method for specifying a processing operation
US9870141B2 (en) * 2010-11-19 2018-01-16 Microsoft Technology Licensing, Llc Gesture recognition
US20120131513A1 (en) * 2010-11-19 2012-05-24 Microsoft Corporation Gesture Recognition Training
US20120133579A1 (en) * 2010-11-30 2012-05-31 Microsoft Corporation Gesture recognition management
US8589950B2 (en) 2011-01-05 2013-11-19 Blackberry Limited Processing user input events in a web browser
US9423878B2 (en) 2011-01-06 2016-08-23 Blackberry Limited Electronic device and method of displaying information in response to a gesture
US9766718B2 (en) 2011-02-28 2017-09-19 Blackberry Limited Electronic device and method of displaying information in response to input
US9471145B2 (en) 2011-01-06 2016-10-18 Blackberry Limited Electronic device and method of displaying information in response to a gesture
US9015641B2 (en) 2011-01-06 2015-04-21 Blackberry Limited Electronic device and method of providing visual notification of a received communication
US9465440B2 (en) * 2011-01-06 2016-10-11 Blackberry Limited Electronic device and method of displaying information in response to a gesture
US9477311B2 (en) 2011-01-06 2016-10-25 Blackberry Limited Electronic device and method of displaying information in response to a gesture
US8978047B2 (en) * 2011-02-03 2015-03-10 Sony Corporation Method and system for invoking an application in response to a trigger event
US8836802B2 (en) 2011-03-21 2014-09-16 Honeywell International Inc. Method of defining camera scan movements using gestures
US9298363B2 (en) 2011-04-11 2016-03-29 Apple Inc. Region activation for touch sensitive surface
US9417754B2 (en) 2011-08-05 2016-08-16 P4tents1, LLC User interface system, method, and computer program product
US20130055164A1 (en) * 2011-08-24 2013-02-28 Sony Ericsson Mobile Communications Ab System and Method for Selecting Objects on a Touch-Sensitive Display of a Mobile Communications Device
US9360940B2 (en) * 2011-11-14 2016-06-07 Google Inc. Multi-pane interface
KR101354234B1 (ko) * 2011-12-05 2014-01-22 (주)이스트소프트 터치 입력 장치에서의 애플리케이션 제공 방법
US9323379B2 (en) * 2011-12-09 2016-04-26 Microchip Technology Germany Gmbh Electronic device with a user interface that has more than two degrees of freedom, the user interface comprising a touch-sensitive surface and contact-free detection means
CN102541603B (zh) * 2011-12-28 2015-12-02 华为终端有限公司 一种应用程序启动方法、系统及终端设备
EP2812784A4 (en) * 2012-02-07 2015-11-11 Blackberry Ltd METHODS AND DEVICES FOR MERGING CONTACT RECORDINGS
US9575652B2 (en) 2012-03-31 2017-02-21 Microsoft Technology Licensing, Llc Instantiable gesture objects
EP2847658B1 (en) 2012-05-09 2017-06-21 Apple Inc. Device, method, and graphical user interface for providing tactile feedback for operations performed in a user interface
JP6273263B2 (ja) 2012-05-09 2018-01-31 アップル インコーポレイテッド ユーザ接触に応答して追加情報を表示するための、デバイス、方法、及びグラフィカルユーザインタフェース
EP2847662B1 (en) 2012-05-09 2020-02-19 Apple Inc. Device, method, and graphical user interface for providing feedback for changing activation states of a user interface object
JP6002836B2 (ja) 2012-05-09 2016-10-05 アップル インコーポレイテッド ジェスチャに応答して表示状態間を遷移するためのデバイス、方法、及びグラフィカルユーザインタフェース
US8875060B2 (en) * 2012-06-04 2014-10-28 Sap Ag Contextual gestures manager
JP5852928B2 (ja) * 2012-06-27 2016-02-03 株式会社オプティム 所作入力装置、所作入力方法及びプログラム
CN102841804B (zh) * 2012-06-27 2014-12-10 北京三星通信技术研究有限公司 同屏多前台任务处理方法及装置
CN103529976B (zh) * 2012-07-02 2017-09-12 英特尔公司 手势识别系统中的干扰消除
US8874969B2 (en) 2012-07-09 2014-10-28 Microsoft Corporation Independent hit testing
US9021437B2 (en) * 2012-07-13 2015-04-28 Microsoft Technology Licensing, Llc Declarative style rules for default touch behaviors
EP2872980B1 (en) * 2012-07-15 2018-10-17 Apple Inc. Disambiguation of multitouch gesture recognition for 3d interaction
US9507513B2 (en) 2012-08-17 2016-11-29 Google Inc. Displaced double tap gesture
US8782549B2 (en) * 2012-10-05 2014-07-15 Google Inc. Incremental feature-based gesture-keyboard decoding
JP5700020B2 (ja) * 2012-10-10 2015-04-15 コニカミノルタ株式会社 画像処理装置、プログラム及び操作イベント判別方法
US9569107B2 (en) * 2012-10-16 2017-02-14 Google Inc. Gesture keyboard with gesture cancellation
US8843845B2 (en) 2012-10-16 2014-09-23 Google Inc. Multi-gesture text input prediction
US8850350B2 (en) 2012-10-16 2014-09-30 Google Inc. Partial gesture text entry
US8701032B1 (en) 2012-10-16 2014-04-15 Google Inc. Incremental multi-word recognition
US8819574B2 (en) 2012-10-22 2014-08-26 Google Inc. Space prediction for text input
WO2014072798A2 (en) 2012-11-08 2014-05-15 Rondish Co., Ltd Bed monitoring pad
US20140141889A1 (en) 2012-11-19 2014-05-22 2343127 Ontario Inc. Systems and Methods for Capture and Use of Local Elements in Gameplay
US20140149916A1 (en) * 2012-11-28 2014-05-29 SoMo Audience Corp. Content manipulation using swipe gesture recognition technology
JP6158947B2 (ja) 2012-12-29 2017-07-05 アップル インコーポレイテッド タッチ入力からディスプレイ出力への関係間を遷移するためのデバイス、方法及びグラフィカルユーザインタフェース
US8832589B2 (en) 2013-01-15 2014-09-09 Google Inc. Touch keyboard using language and spatial models
US9703477B2 (en) 2013-02-19 2017-07-11 Facebook, Inc. Handling overloaded gestures
JP5862587B2 (ja) * 2013-03-25 2016-02-16 コニカミノルタ株式会社 ジェスチャ判別装置、ジェスチャ判別方法、およびコンピュータプログラム
US9207849B2 (en) 2013-03-29 2015-12-08 Microsoft Technology Licensing, Llc Start and application navigation
US9063576B1 (en) 2013-04-04 2015-06-23 Amazon Technologies, Inc. Managing gesture input information
US9081500B2 (en) 2013-05-03 2015-07-14 Google Inc. Alternative hypothesis error correction for gesture typing
US9733716B2 (en) * 2013-06-09 2017-08-15 Apple Inc. Proxy gesture recognizer
US20140372923A1 (en) * 2013-06-14 2014-12-18 Microsoft Corporation High Performance Touch Drag and Drop
US20140372935A1 (en) * 2013-06-14 2014-12-18 Microsoft Corporation Input Processing based on Input Context
US20140372903A1 (en) * 2013-06-14 2014-12-18 Microsoft Corporation Independent Hit Testing for Touchpad Manipulations and Double-Tap Zooming
WO2015015287A1 (en) * 2013-08-01 2015-02-05 Rondish Co. Ltd Intelligent reset system and method for patient monitoring pad
US9766855B2 (en) 2013-09-10 2017-09-19 Avigilon Corporation Method and apparatus for controlling surveillance system with gesture and/or audio commands
US9582737B2 (en) * 2013-09-13 2017-02-28 Qualcomm Incorporated Context-sensitive gesture classification
DE102014004675A1 (de) * 2014-03-31 2015-10-01 Audi Ag Gestenbewertungssystem, Verfahren zur Gestenbewertung und Fahrzeug
US9430142B2 (en) * 2014-07-17 2016-08-30 Facebook, Inc. Touch-based gesture recognition and application navigation
KR20160029525A (ko) * 2014-09-05 2016-03-15 삼성전자주식회사 사용자 인터페이스를 제어하는 방법 및 이를 제공하는 전자 장치
KR102238535B1 (ko) * 2014-10-01 2021-04-09 엘지전자 주식회사 이동 단말기 및 그 제어 방법
US20160117080A1 (en) * 2014-10-22 2016-04-28 Microsoft Corporation Hit-test to determine enablement of direct manipulations in response to user actions
US10095396B2 (en) 2015-03-08 2018-10-09 Apple Inc. Devices, methods, and graphical user interfaces for interacting with a control object while dragging another object
US9639184B2 (en) 2015-03-19 2017-05-02 Apple Inc. Touch input cursor manipulation
US9891811B2 (en) 2015-06-07 2018-02-13 Apple Inc. Devices and methods for navigating between user interfaces
US9860451B2 (en) 2015-06-07 2018-01-02 Apple Inc. Devices and methods for capturing and interacting with enhanced digital images
US10235035B2 (en) 2015-08-10 2019-03-19 Apple Inc. Devices, methods, and graphical user interfaces for content navigation and manipulation
US9880735B2 (en) 2015-08-10 2018-01-30 Apple Inc. Devices, methods, and graphical user interfaces for manipulating user interface objects with visual and/or haptic feedback
KR102468120B1 (ko) * 2016-01-27 2022-11-22 삼성전자 주식회사 뷰 계층(뷰 레이어)들을 이용하여 입력을 처리하는 방법 및 전자장치
JP2017149225A (ja) 2016-02-23 2017-08-31 京セラ株式会社 車両用コントロールユニット
CN110651242B (zh) * 2017-05-16 2023-07-11 苹果公司 用于触摸输入处理的设备、方法和图形用户界面
DK179979B1 (en) * 2017-05-16 2019-11-27 Apple Inc. DEVICES, METHODS, AND GRAPHICAL USER INTERFACES FOR TOUCH INPUT PROCESSING
IT201700088977A1 (it) 2017-08-02 2019-02-02 St Microelectronics Srl Procedimento per il riconoscimento di gesti, circuito, dispositivo e prodotto informatico corrispondenti
CN107861683B (zh) * 2017-11-07 2020-08-21 苏州九号电子科技有限公司 无人机无按钮操作方法及装置
CN108379843B (zh) * 2018-03-16 2022-05-31 网易(杭州)网络有限公司 虚拟对象控制方法与装置
CN108833982B (zh) * 2018-05-10 2021-06-11 北京酷我科技有限公司 一种视频滑动快进和页面滚动兼容的方法
US10921975B2 (en) 2018-06-03 2021-02-16 Apple Inc. Devices, methods, and user interfaces for conveying proximity-based and contact-based input events
CN109144392B (zh) * 2018-08-22 2021-04-16 北京奇艺世纪科技有限公司 一种处理手势冲突的方法、装置及电子设备
WO2020263250A1 (en) 2019-06-26 2020-12-30 Google Llc Radar-based authentication status feedback
CN110362264B (zh) * 2019-06-28 2022-06-10 武汉海微科技有限公司 一种基于触摸板的动态手势识别方法、装置和系统
CN112181265B (zh) 2019-07-04 2022-04-15 北京小米移动软件有限公司 一种触控信号处理方法、装置及介质
CN110490062A (zh) * 2019-07-11 2019-11-22 武汉科技大学 一种基于多视图的双手手势识别方法
US11868537B2 (en) 2019-07-26 2024-01-09 Google Llc Robust radar-based gesture-recognition by user equipment
US11385722B2 (en) * 2019-07-26 2022-07-12 Google Llc Robust radar-based gesture-recognition by user equipment
EP4004686A1 (en) 2019-07-26 2022-06-01 Google LLC Authentication management through imu and radar
EP3966662B1 (en) 2019-07-26 2024-01-10 Google LLC Reducing a state based on imu and radar
KR102661485B1 (ko) 2019-08-30 2024-04-29 구글 엘엘씨 일시정지된 레이더 제스처에 대한 시각적 표시자
CN112753005B (zh) 2019-08-30 2024-03-01 谷歌有限责任公司 移动设备的输入方法
US11467672B2 (en) 2019-08-30 2022-10-11 Google Llc Context-sensitive control of radar-based gesture-recognition
CN110995919B (zh) * 2019-11-08 2021-07-20 维沃移动通信有限公司 一种消息处理方法和电子设备
CN110989888B (zh) * 2019-12-13 2021-03-02 广州方硅信息技术有限公司 一种触摸事件分发方法及设备
CN114327109B (zh) 2020-09-30 2023-12-19 明基智能科技(上海)有限公司 触控操作方法及触控操作系统
CN112286417B (zh) * 2020-11-03 2022-01-18 珠海格力电器股份有限公司 一种终端操控方法、装置、设备和计算机可读存储介质
CN114546145B (zh) 2020-11-24 2024-03-01 明基智能科技(上海)有限公司 游标控制方法及应用其的触控显示装置
CN116166143B (zh) * 2023-04-25 2023-07-04 麒麟软件有限公司 全局触摸手势识别方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080165132A1 (en) 2007-01-05 2008-07-10 Microsoft Corporation Recognizing multiple input point gestures
US20090228901A1 (en) 2008-03-04 2009-09-10 Apple Inc. Touch event model

Family Cites Families (571)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1517521A (en) 1975-09-01 1978-07-12 Tilgate Pallets Ltd Pallets
US4455452A (en) * 1982-09-13 1984-06-19 Touch Activated Switch Arrays, Inc. Touch activated controller for generating X-Y output information
US4674066A (en) 1983-02-18 1987-06-16 Houghton Mifflin Company Textual database system using skeletonization and phonetic replacement to retrieve words matching or similar to query words
EP0141576B1 (en) 1983-10-21 1989-10-18 Dijet Industrial Co., Ltd. Cutter blade
JPH02140822A (ja) 1988-11-22 1990-05-30 Nec Corp マルチウインドディスプレイ方式
US5252951A (en) 1989-04-28 1993-10-12 International Business Machines Corporation Graphical user interface with gesture recognition in a multiapplication environment
JP2862626B2 (ja) 1990-03-22 1999-03-03 株式会社東芝 電子辞書及び情報検索方法
US5046434A (en) 1990-05-02 1991-09-10 Penda Corporation Plastic reinforced thermoformed pallet
JP3145735B2 (ja) 1991-07-17 2001-03-12 富士通株式会社 入力制御方式
JPH05197573A (ja) 1991-08-26 1993-08-06 Hewlett Packard Co <Hp> タスク指向パラダイムによるタスク管理システム
JP2827612B2 (ja) 1991-10-07 1998-11-25 富士通株式会社 タッチパネル装置およびタッチパネル装置におけるオブジェクトの表示方法。
US5233547A (en) 1991-11-12 1993-08-03 Ncr Corporation Electronic checking account apparatus and method having a digitizer to receive information as a check is being written
JP2787523B2 (ja) 1992-04-15 1998-08-20 沖電気工業株式会社 キーボード
US5880411A (en) 1992-06-08 1999-03-09 Synaptics, Incorporated Object position detector with edge motion feature and gesture recognition
US5488204A (en) 1992-06-08 1996-01-30 Synaptics, Incorporated Paintbrush stylus for capacitive touch sensor pad
US7084859B1 (en) 1992-09-18 2006-08-01 Pryor Timothy R Programmable tactile touch screen displays and man-machine interfaces for improved vehicle instrumentation and telematics
US5583543A (en) 1992-11-05 1996-12-10 Sharp Kabushiki Kaisha Pen input processing apparatus
JP2999335B2 (ja) 1992-11-05 2000-01-17 シャープ株式会社 ジェスチャー処理装置およびジェスチャー処理方法
US5612719A (en) 1992-12-03 1997-03-18 Apple Computer, Inc. Gesture sensitive buttons for graphical user interfaces
US5463725A (en) 1992-12-31 1995-10-31 International Business Machines Corp. Data processing system graphical user interface which emulates printed material
US5513309A (en) * 1993-01-05 1996-04-30 Apple Computer, Inc. Graphic editor user interface for a pointer-based computer system
JP3147572B2 (ja) 1993-03-22 2001-03-19 株式会社日立製作所 プログラム生成方法
DE4406668C2 (de) * 1993-04-27 1996-09-12 Hewlett Packard Co Verfahren und Vorrichtung zum Betreiben eines berührungsempfindlichen Anzeigegeräts
JP2986047B2 (ja) 1993-04-29 1999-12-06 インターナショナル・ビジネス・マシーンズ・コーポレイション ディジタル入力用表示装置並びに入力処理装置および方法
DE69432199T2 (de) 1993-05-24 2004-01-08 Sun Microsystems, Inc., Mountain View Graphische Benutzerschnittstelle mit Verfahren zur Schnittstellebildung mit fernsteuernden Einrichtungen
US6035343A (en) * 1993-06-11 2000-03-07 Fujitsu Limited Method for executing software formed of software components and a system for executing such software
CA2124505C (en) 1993-07-21 2000-01-04 William A. S. Buxton User interface having simultaneously movable tools and cursor
US5818455A (en) * 1993-07-21 1998-10-06 Xerox Corporation Method and apparatus for operating on the model data structure of an image to produce human perceptible output using a viewing operation region having explicit multiple regions
US5581670A (en) 1993-07-21 1996-12-03 Xerox Corporation User interface having movable sheet with click-through tools
US5627959A (en) * 1993-09-20 1997-05-06 Oracle Corporation Method for manipulating graphic objects
US5564112A (en) 1993-10-14 1996-10-08 Xerox Corporation System and method for generating place holders to temporarily suspend execution of a selected command
US5454960A (en) 1993-11-10 1995-10-03 Advanced Building Technologies, Inc. Oil change and recycling system
US5534893A (en) 1993-12-15 1996-07-09 Apple Computer, Inc. Method and apparatus for using stylus-tablet input in a computer system
US5588072A (en) 1993-12-22 1996-12-24 Canon Kabushiki Kaisha Method and apparatus for selecting blocks of image data from image data having both horizontally- and vertically-oriented blocks
US5686940A (en) * 1993-12-24 1997-11-11 Rohm Co., Ltd. Display apparatus
US5566337A (en) * 1994-05-13 1996-10-15 Apple Computer, Inc. Method and apparatus for distributing events in an operating system
JP2939119B2 (ja) 1994-05-16 1999-08-25 シャープ株式会社 手書き文字入力表示装置および方法
US5570113A (en) 1994-06-29 1996-10-29 International Business Machines Corporation Computer based pen system and method for automatically cancelling unwanted gestures and preventing anomalous signals as inputs to such system
US5510061A (en) 1994-07-26 1996-04-23 Norton Chemical Process Products Corp. Non-welded support plate member
DE69521575T2 (de) 1994-09-12 2002-05-16 Adobe Systems Inc Verfahren und Anordnung zur Darstellung elektronischer Dokumente
DE69408995T2 (de) 1994-11-15 1998-08-06 Uop Inc Verfahren zur adsorptiven Abtrennung von meta-Xylol von aromatischen Kohlenwasserstoffen
US5495566A (en) 1994-11-22 1996-02-27 Microsoft Corporation Scrolling contents of a window
JP2944439B2 (ja) * 1994-12-27 1999-09-06 シャープ株式会社 手書き文字入力装置および方法
JPH08307954A (ja) 1995-05-12 1996-11-22 Sony Corp 座標入力装置および方法、並びに情報処理装置
US5708460A (en) * 1995-06-02 1998-01-13 Avi Systems, Inc. Touch screen
US6496182B1 (en) 1995-06-07 2002-12-17 Microsoft Corporation Method and system for providing touch-sensitive screens for the visually impaired
JPH0944285A (ja) 1995-07-28 1997-02-14 Hitachi Ltd 情報処理装置
JPH0969037A (ja) 1995-08-31 1997-03-11 Sharp Corp データ処理装置
US5655094A (en) 1995-09-29 1997-08-05 International Business Machines Corporation Pop up scroll bar
JP3636792B2 (ja) 1995-10-18 2005-04-06 株式会社リコー ペン先座標入力装置
US5676064A (en) 1996-04-22 1997-10-14 Shuert; Lyle H. Pallet and pallet package
JP3839877B2 (ja) 1996-07-05 2006-11-01 キヤノン株式会社 手書きパターン処理装置及び手書きパターン処理方法
US5745116A (en) 1996-09-09 1998-04-28 Motorola, Inc. Intuitive gesture-based graphical user interface
US5903902A (en) 1996-09-09 1999-05-11 Design Intelligence, Inc. Design engine with tree and component structure
US5995083A (en) 1996-11-20 1999-11-30 Alps Electric Co., Ltd. Coordinates input apparatus
JP3889466B2 (ja) 1996-11-25 2007-03-07 ソニー株式会社 文章入力装置及び方法
US5917477A (en) 1997-02-28 1999-06-29 Samsung Electronics Co., Ltd. Touch screen input apparatus for chip mounter, chip mounter including the same and method for controlling the chip mounter
US6141018A (en) 1997-03-12 2000-10-31 Microsoft Corporation Method and system for displaying hypertext documents with visual effects
US5999176A (en) 1997-04-04 1999-12-07 International Business Machines Corporation Method to provide a single scrolling control for a multi-window interface
JPH1185354A (ja) * 1997-09-04 1999-03-30 Internatl Business Mach Corp <Ibm> キーボード組込み型座標指示装置、キーボード・ユニット、及び情報処理機器
US9098297B2 (en) 1997-05-08 2015-08-04 Nvidia Corporation Hardware accelerator for an object-oriented programming language
US6049326A (en) 1997-05-12 2000-04-11 Siemens Information And Communication Networks, Inc. System and method for dual browser modes
US5983190A (en) * 1997-05-19 1999-11-09 Microsoft Corporation Client server animation system for managing interactive user interface characters
FI115689B (fi) 1997-05-21 2005-06-15 Nokia Corp Menetelmä ja järjestely matkaviestimen näytöllä esitettävän tiedon vierittämiseksi
US6028602A (en) 1997-05-30 2000-02-22 Telefonaktiebolaget Lm Ericsson Method for managing contents of a hierarchical data model
JP3968477B2 (ja) 1997-07-07 2007-08-29 ソニー株式会社 情報入力装置及び情報入力方法
US6034688A (en) 1997-09-15 2000-03-07 Sony Corporation Scrolling navigational display system
US6377965B1 (en) 1997-11-07 2002-04-23 Microsoft Corporation Automatic word completion system for partially entered data
CA2311743A1 (en) 1997-12-01 1999-06-10 Cedara Software Corp. Architecture for an application framework
WO1999031571A1 (en) 1997-12-16 1999-06-24 Microsoft Corporation Soft input panel system and method
US7840912B2 (en) 2006-01-30 2010-11-23 Apple Inc. Multi-touch gesture dictionary
US7663607B2 (en) 2004-05-06 2010-02-16 Apple Inc. Multipoint touchscreen
US8479122B2 (en) * 2004-07-30 2013-07-02 Apple Inc. Gestures for touch sensitive input devices
US7614008B2 (en) 2004-07-30 2009-11-03 Apple Inc. Operation of a computer with touch screen interface
US7834855B2 (en) 2004-08-25 2010-11-16 Apple Inc. Wide touchpad on a portable computer
US7844914B2 (en) * 2004-07-30 2010-11-30 Apple Inc. Activating virtual keys of a touch-screen virtual keyboard
US20070177804A1 (en) 2006-01-30 2007-08-02 Apple Computer, Inc. Multi-touch gesture dictionary
KR100595925B1 (ko) * 1998-01-26 2006-07-05 웨인 웨스터만 수동 입력 통합 방법 및 장치
US9292111B2 (en) 1998-01-26 2016-03-22 Apple Inc. Gesturing with a multipoint sensing device
US20040080541A1 (en) 1998-03-20 2004-04-29 Hisashi Saiga Data displaying device
US7346850B2 (en) 1998-06-12 2008-03-18 Cygnus Systems, Inc. System and method for iconic software environment management
US6429846B2 (en) 1998-06-23 2002-08-06 Immersion Corporation Haptic feedback for touchpads and other touch controls
US6061063A (en) 1998-06-30 2000-05-09 Sun Microsystems, Inc. Method and apparatus for providing feedback while scrolling
US6570594B1 (en) * 1998-06-30 2003-05-27 Sun Microsystems, Inc. User interface with non-intrusive display element
US6188391B1 (en) 1998-07-09 2001-02-13 Synaptics, Inc. Two-layer capacitive touchpad and method of making same
US7559039B2 (en) 1998-07-14 2009-07-07 Brad Ridgley Method and device for finding, collecting and acting upon units of information
CA2244431C (en) 1998-07-30 2002-02-19 Ibm Canada Limited-Ibm Canada Limitee Touchscreen keyboard support for multi-byte character languages
US7036094B1 (en) 1998-08-10 2006-04-25 Cybernet Systems Corporation Behavior recognition system
US6068124A (en) 1998-08-27 2000-05-30 Nanya Plastics Plastic pallet and separator for packaging yarn spools
US6628835B1 (en) 1998-08-31 2003-09-30 Texas Instruments Incorporated Method and system for defining and recognizing complex events in a video sequence
US20020018051A1 (en) 1998-09-15 2002-02-14 Mona Singh Apparatus and method for moving objects on a touchscreen display
US6985178B1 (en) * 1998-09-30 2006-01-10 Canon Kabushiki Kaisha Camera control system, image pick-up server, client, control method and storage medium therefor
JP4159674B2 (ja) 1998-10-22 2008-10-01 富士通株式会社 オブジェクト指向業務システムおよび方法
JP2000163443A (ja) 1998-11-25 2000-06-16 Seiko Epson Corp 携帯情報機器及び情報記憶媒体
JP4542637B2 (ja) 1998-11-25 2010-09-15 セイコーエプソン株式会社 携帯情報機器及び情報記憶媒体
US8938688B2 (en) 1998-12-04 2015-01-20 Nuance Communications, Inc. Contextual prediction of user words and user actions
CA2352166A1 (en) 1998-12-11 2000-06-15 Paratek Microwave, Inc. Electrically tunable filters with dielectric varactors
US6963937B1 (en) * 1998-12-17 2005-11-08 International Business Machines Corporation Method and apparatus for providing configurability and customization of adaptive user-input filtration
US6259436B1 (en) 1998-12-22 2001-07-10 Ericsson Inc. Apparatus and method for determining selection of touchable items on a computer touchscreen by an imprecise touch
US6643824B1 (en) 1999-01-15 2003-11-04 International Business Machines Corporation Touch screen region assist for hypertext links
US7469381B2 (en) 2007-01-07 2008-12-23 Apple Inc. List scrolling and document translation, scaling, and rotation on a touch-screen display
JP2000222130A (ja) 1999-02-02 2000-08-11 Toshiba Corp 入力装置および方法および記憶媒体
US20060061551A1 (en) 1999-02-12 2006-03-23 Vega Vista, Inc. Motion detection and tracking system to control navigation and display of portable displays including on-chip gesture detection
US6486896B1 (en) 1999-04-07 2002-11-26 Apple Computer, Inc. Scalable scroll controller
GB2363157A (en) 1999-04-21 2001-12-12 Barrie Weatherall Stabiliser for ladders
JP4939682B2 (ja) 1999-04-27 2012-05-30 エーユー オプトロニクス コーポレイション 表示装置
US7164413B2 (en) 1999-05-19 2007-01-16 Digimarc Corporation Enhanced input peripheral
AUPQ439299A0 (en) 1999-12-01 1999-12-23 Silverbrook Research Pty Ltd Interface system
US6714936B1 (en) * 1999-05-25 2004-03-30 Nevin, Iii Rocky Harry W. Method and apparatus for displaying data stored in linked nodes
US7030863B2 (en) 2000-05-26 2006-04-18 America Online, Incorporated Virtual keyboard system with automatic correction
US7286115B2 (en) 2000-05-26 2007-10-23 Tegic Communications, Inc. Directional input system with automatic correction
US6631501B1 (en) 1999-06-30 2003-10-07 Microsoft Corporation Method and system for automatic type and replace of characters in a sequence of characters
US6639584B1 (en) 1999-07-06 2003-10-28 Chuang Li Methods and apparatus for controlling a portable electronic device using a touchpad
JP2001027924A (ja) 1999-07-14 2001-01-30 Sharp Corp 表示画面を用いる入力装置
US6335725B1 (en) 1999-07-14 2002-01-01 Hewlett-Packard Company Method of partitioning a touch screen for data input
US6636242B2 (en) * 1999-08-31 2003-10-21 Accenture Llp View configurer in a presentation services patterns environment
US6448986B1 (en) 1999-09-07 2002-09-10 Spotware Technologies Llc Method and system for displaying graphical objects on a display screen
EP1094383A3 (en) 1999-10-18 2005-11-02 Honeywell International, Inc. Methods and apparatus for cursor control
JP2003512676A (ja) 1999-10-20 2003-04-02 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 画像コレクションをブラウズする装置及び方法
JP2001134382A (ja) 1999-11-04 2001-05-18 Sony Corp 図形処理装置
JP2001167227A (ja) 1999-12-07 2001-06-22 Hitachi Ltd 情報端末装置
US6778992B1 (en) * 1999-12-21 2004-08-17 Lockstream Corporation Flexible and hierarchical user interfaces defined using a data definition language
US6664991B1 (en) 2000-01-06 2003-12-16 Microsoft Corporation Method and apparatus for providing context menus on a pen-based device
US6809724B1 (en) 2000-01-18 2004-10-26 Seiko Epson Corporation Display apparatus and portable information processing apparatus
US6820237B1 (en) 2000-01-21 2004-11-16 Amikanow! Corporation Apparatus and method for context-based highlighting of an electronic document
US6757068B2 (en) 2000-01-28 2004-06-29 Intersense, Inc. Self-referenced tracking
US6856326B1 (en) 2000-01-28 2005-02-15 International Business Machines Corporation Smooth scrolling system and method
US7138983B2 (en) 2000-01-31 2006-11-21 Canon Kabushiki Kaisha Method and apparatus for detecting and interpreting path of designated position
JP4803883B2 (ja) 2000-01-31 2011-10-26 キヤノン株式会社 位置情報処理装置及びその方法及びそのプログラム。
US6590595B1 (en) * 2000-02-08 2003-07-08 Sun Microsystems, Inc. Mechanism for providing intuitive scrolling feedback
US6922810B1 (en) 2000-03-07 2005-07-26 Microsoft Corporation Grammar-based automatic data completion and suggestion for user input
WO2001069367A2 (en) * 2000-03-17 2001-09-20 Vizible.Com Inc. A three dimensional spatial user interface
US7142205B2 (en) 2000-03-29 2006-11-28 Autodesk, Inc. Single gesture map navigation graphical user interface for a personal digital assistant
EP1273154A2 (en) 2000-03-30 2003-01-08 QUALCOMM Incorporated Method and apparatus for notifying a mobile station application of specified events
JP4124402B2 (ja) 2000-03-31 2008-07-23 株式会社リコー 画像入力装置
AU2001251202A1 (en) 2000-04-07 2001-10-23 Rsa Security, Inc. System and method for authenticating a user
US6765557B1 (en) 2000-04-10 2004-07-20 Interlink Electronics, Inc. Remote control having touch pad to screen mapping
US7009626B2 (en) 2000-04-14 2006-03-07 Picsel Technologies Limited Systems and methods for generating visual representations of graphical data and digital document processing
WO2001082309A1 (en) 2000-04-19 2001-11-01 Analogic Corporation Backlash-resistant drive assembly for collimator in a ct scanner
JP2001299733A (ja) 2000-04-27 2001-10-30 Konica Corp Pci放射線画像処理装置、pci放射線画像検出処理装置、pci放射線画像出力装置及びpci画像診断支援装置
US6559869B1 (en) 2000-05-04 2003-05-06 Microsoft Corporation Adaptive auto-scrolling merge for hand written input
US7818691B2 (en) 2000-05-11 2010-10-19 Nes Stewart Irvine Zeroclick
US6446083B1 (en) * 2000-05-12 2002-09-03 Vastvideo, Inc. System and method for classifying media items
US6912694B1 (en) 2000-06-28 2005-06-28 Intel Corporation Providing a scrolling function for a multiple frame web page
US6677965B1 (en) 2000-07-13 2004-01-13 International Business Machines Corporation Rubber band graphical user interface control
GB0017793D0 (en) 2000-07-21 2000-09-06 Secr Defence Human computer interface
JP2002041242A (ja) 2000-07-27 2002-02-08 Nec Corp 描画フェードアウト機能付き入力装置と方法
US6714221B1 (en) 2000-08-03 2004-03-30 Apple Computer, Inc. Depicting and setting scroll amount
US6704024B2 (en) 2000-08-07 2004-03-09 Zframe, Inc. Visual content browsing using rasterized representations
US20020015064A1 (en) 2000-08-07 2002-02-07 Robotham John S. Gesture-based user interface to multi-level and multi-modal sets of bit-maps
JP2002062983A (ja) 2000-08-21 2002-02-28 Hitachi Ltd ポインティングデバイス
US6791530B2 (en) 2000-08-29 2004-09-14 Mitsubishi Electric Research Laboratories, Inc. Circular graphical user interfaces
EP1184414A3 (en) 2000-08-30 2003-08-06 JSR Corporation Conjugated diene-based rubber and method of producing the same, oil extended rubber and rubber composition containing the same
US6912462B2 (en) 2000-08-31 2005-06-28 Sony Corporation Information processing apparatus, information processing method and program storage media
US20020138617A1 (en) 2000-09-06 2002-09-26 Jacob Christfort Providing content from multiple services
US6757673B2 (en) 2000-10-09 2004-06-29 Town Compass Llc Displaying hierarchial relationship of data accessed via subject index
US7761541B1 (en) 2000-10-25 2010-07-20 Nortel Networks Limited Service enabling technology
US6735583B1 (en) * 2000-11-01 2004-05-11 Getty Images, Inc. Method and system for classifying and locating media content
US7072501B2 (en) 2000-11-22 2006-07-04 R2 Technology, Inc. Graphical user interface for display of anatomical information
US7184796B2 (en) 2000-12-04 2007-02-27 International Business Machines Corporation Personal communication device having a built in projection display
US7240291B2 (en) 2000-12-21 2007-07-03 Xerox Corporation Methods, systems, and computer program products for display of information relating to a virtual three-dimensional book
US6976172B2 (en) 2000-12-28 2005-12-13 Intel Corporation System and method for protected messaging
US6839721B2 (en) 2001-01-12 2005-01-04 Hewlett-Packard Development Company, L.P. Integration of a database into file management software for protecting, tracking, and retrieving data
US6677932B1 (en) 2001-01-28 2004-01-13 Finger Works, Inc. System and method for recognizing touch typing under limited tactile feedback conditions
US7030861B1 (en) * 2001-02-10 2006-04-18 Wayne Carl Westerman System and method for packing multi-touch gestures onto a hand
US6570557B1 (en) 2001-02-10 2003-05-27 Finger Works, Inc. Multi-touch system and method for emulating modifier keys via fingertip chords
JP3881179B2 (ja) 2001-02-14 2007-02-14 三菱電機株式会社 ユーザインタフェース設計装置
US20040027398A1 (en) * 2001-02-15 2004-02-12 Denny Jaeger Intuitive graphic user interface with universal tools
US6972776B2 (en) 2001-03-20 2005-12-06 Agilent Technologies, Inc. Scrolling method using screen pointing device
GB2373778B (en) 2001-03-30 2003-08-06 Robin Lewis Corner elements for packaging
US6741996B1 (en) 2001-04-18 2004-05-25 Microsoft Corporation Managing user clips
JP2005501310A (ja) 2001-05-02 2005-01-13 ビットストリーム インコーポレーティッド スケーリング方法及び/又は特定方向で情報媒体を表示する方法及びシステム
US20020194589A1 (en) 2001-05-08 2002-12-19 Cristofalo Michael Technique for optimizing the delivery of advertisements and other programming segments by making bandwidth tradeoffs
US20020171675A1 (en) 2001-05-15 2002-11-21 International Business Machines Corporation Method and system for graphical user interface (GUI) widget having user-selectable mass
US7730401B2 (en) 2001-05-16 2010-06-01 Synaptics Incorporated Touch screen with user interface enhancement
US20050024341A1 (en) * 2001-05-16 2005-02-03 Synaptics, Inc. Touch screen with user interface enhancement
US6498590B1 (en) 2001-05-24 2002-12-24 Mitsubishi Electric Research Laboratories, Inc. Multi-user touch surface
TW521205B (en) 2001-06-05 2003-02-21 Compal Electronics Inc Touch screen capable of controlling amplification with pressure
US6868383B1 (en) 2001-07-12 2005-03-15 At&T Corp. Systems and methods for extracting meaning from multimodal inputs using finite-state devices
US6985137B2 (en) * 2001-08-13 2006-01-10 Nokia Mobile Phones Ltd. Method for preventing unintended touch pad input due to accidental touching
US6661409B2 (en) 2001-08-22 2003-12-09 Motorola, Inc. Automatically scrolling handwritten input user interface for personal digital assistants and the like
US6690365B2 (en) 2001-08-29 2004-02-10 Microsoft Corporation Automatic scrolling
US6972749B2 (en) * 2001-08-29 2005-12-06 Microsoft Corporation Touch-sensitive device for scrolling a document on a display
US6907575B2 (en) 2001-09-06 2005-06-14 Danger, Inc. Method of scrolling a display window
JP2003173237A (ja) 2001-09-28 2003-06-20 Ricoh Co Ltd 情報入出力システム、プログラム及び記憶媒体
US7254775B2 (en) 2001-10-03 2007-08-07 3M Innovative Properties Company Touch panel system and method for distinguishing multiple touch inputs
US20030071850A1 (en) * 2001-10-12 2003-04-17 Microsoft Corporation In-place adaptive handwriting input method and system
US7046230B2 (en) 2001-10-22 2006-05-16 Apple Computer, Inc. Touch pad handheld device
US7345671B2 (en) 2001-10-22 2008-03-18 Apple Inc. Method and apparatus for use of rotational user inputs
TW528981B (en) * 2001-10-25 2003-04-21 Compal Electronics Inc Portable computer and related method for preventing input interruption by write-tracking input region
US7009599B2 (en) 2001-11-20 2006-03-07 Nokia Corporation Form factor for portable device
CA2366183A1 (en) 2001-12-21 2003-06-21 Ibm Canada Limited-Ibm Canada Limitee Dynamic status tree facility
US6690387B2 (en) 2001-12-28 2004-02-10 Koninklijke Philips Electronics N.V. Touch-screen image scrolling system and method
US7414616B2 (en) 2002-01-03 2008-08-19 Mahesh Jayachandra User-friendly Brahmi-derived Hindi keyboard
US6957392B2 (en) 2002-01-16 2005-10-18 Laszlo Systems, Inc. Interface engine providing a continuous user interface
GB0201074D0 (en) 2002-01-18 2002-03-06 3G Lab Ltd Graphic user interface for data processing device
US7603627B2 (en) 2002-02-05 2009-10-13 Microsoft Corporation Systems and methods for creating and managing graphical user interface lists
JP3951727B2 (ja) 2002-02-06 2007-08-01 松下電器産業株式会社 情報処理装置
US7075512B1 (en) 2002-02-07 2006-07-11 Palmsource, Inc. Method and system for navigating a display screen for locating a desired item of information
AU2003220400A1 (en) 2002-03-19 2003-10-08 America Online, Inc. Controlling content display
US20030184525A1 (en) 2002-03-29 2003-10-02 Mitac International Corp. Method and apparatus for image processing
JP2003296024A (ja) 2002-04-01 2003-10-17 Nec Engineering Ltd タッチパネル制御方式
US7466307B2 (en) 2002-04-11 2008-12-16 Synaptics Incorporated Closed-loop sensor on a solid-state object position detector
US20030197689A1 (en) 2002-04-23 2003-10-23 May Gregory J. Input device that allows multiple touch key input
TWI238348B (en) 2002-05-13 2005-08-21 Kyocera Corp Portable information terminal, display control device, display control method, and recording media
US7203911B2 (en) 2002-05-13 2007-04-10 Microsoft Corporation Altering a display on a viewing device based upon a user proximity to the viewing device
US20030214553A1 (en) 2002-05-14 2003-11-20 Microsoft Corporation Ink regions in an overlay control
US8166388B2 (en) 2002-05-14 2012-04-24 Microsoft Corporation Overlaying electronic ink
US20030214531A1 (en) 2002-05-14 2003-11-20 Microsoft Corporation Ink input mechanisms
US7158675B2 (en) 2002-05-14 2007-01-02 Microsoft Corporation Interfacing with ink
EP2254025A3 (en) 2002-05-16 2016-03-30 Sony Corporation Input method and input apparatus
US7519918B2 (en) 2002-05-30 2009-04-14 Intel Corporation Mobile virtual desktop
FI20021655A (fi) 2002-06-19 2003-12-20 Nokia Corp Menetelmä lukituksen avaamiseksi ja kannettava elektroninen laite
US7023427B2 (en) 2002-06-28 2006-04-04 Microsoft Corporation Method and system for detecting multiple touches on a touch-sensitive screen
US7062090B2 (en) * 2002-06-28 2006-06-13 Microsoft Corporation Writing guide for a free-form document editor
US11275405B2 (en) 2005-03-04 2022-03-15 Apple Inc. Multi-functional hand-held device
JP4338364B2 (ja) 2002-07-02 2009-10-07 ソニー株式会社 携帯情報通信端末、プログラムおよび該プログラムを記録した記録媒体
TW591488B (en) 2002-08-01 2004-06-11 Tatung Co Window scrolling method and device thereof
EP1394692A1 (en) 2002-08-05 2004-03-03 Alcatel Method, terminal, browser application, and mark-up language for multimodal interaction between a user and a terminal
US20040021698A1 (en) 2002-08-05 2004-02-05 Baldwin Amanda K. Intuitive touchscreen interface for a multifunction device and method therefor
US7263721B2 (en) 2002-08-09 2007-08-28 International Business Machines Corporation Password protection
JP2004084111A (ja) 2002-08-26 2004-03-18 Tsudakoma Corp 織機の情報表示装置
US7739604B1 (en) 2002-09-25 2010-06-15 Apple Inc. Method and apparatus for managing windows
US7002560B2 (en) 2002-10-04 2006-02-21 Human Interface Technologies Inc. Method of combining data entry of handwritten symbols with displayed character data
GB0223883D0 (en) 2002-10-15 2002-11-20 Seamless Display Ltd Visual display screen arrangement
US7281248B2 (en) * 2002-11-19 2007-10-09 Microsoft Corporation Virtualized and realized user interface controls
DE60212976T2 (de) 2002-11-20 2006-11-16 Nokia Corp. Verfahren und Benutzerschnittstelle zur Zeicheneingabe
CA2414047A1 (en) 2002-12-09 2004-06-09 Corel Corporation System and method of extending scalable vector graphics capabilities
US6903927B2 (en) 2002-12-17 2005-06-07 Nokia Corporation Convertible mobile computing device
US20040125136A1 (en) 2002-12-30 2004-07-01 Jukka Wallenius Provision of services through a display system
US20040135817A1 (en) * 2003-01-14 2004-07-15 Daughtery Joey L. Interface for selecting and performing operations on objects
US7117453B2 (en) 2003-01-21 2006-10-03 Microsoft Corporation Media frame object visualization system
US20040225965A1 (en) 2003-05-06 2004-11-11 Microsoft Corporation Insertion location tracking for controlling a user interface
US7490296B2 (en) 2003-01-31 2009-02-10 Microsoft Corporation Utility object for specialized data entry
US20040155888A1 (en) 2003-02-11 2004-08-12 Padgitt David Gary Method for displaying the contents of a collection of media objects
US20040160419A1 (en) 2003-02-11 2004-08-19 Terradigital Systems Llc. Method for entering alphanumeric characters into a graphical user interface
US7894177B2 (en) 2005-12-29 2011-02-22 Apple Inc. Light activated hold switch
US7088374B2 (en) 2003-03-27 2006-08-08 Microsoft Corporation System and method for managing visual structure, timing, and animation in a graphics processing system
US7187801B2 (en) 2003-03-31 2007-03-06 Microsoft Corporation Multiple handwriting recognition engine selection
KR100465969B1 (ko) 2003-04-11 2005-01-13 (주)모비솔 손가락 표면을 이용한 소형 포인팅 장치
US7098776B2 (en) 2003-04-16 2006-08-29 Massachusetts Institute Of Technology Methods and apparatus for vibrotactile communication
US8484576B2 (en) * 2003-04-17 2013-07-09 Supersonic Aerospace International, Llc System and method for customizing multiple windows of information on a display
US7102626B2 (en) 2003-04-25 2006-09-05 Hewlett-Packard Development Company, L.P. Multi-function pointing device
US7627343B2 (en) 2003-04-25 2009-12-01 Apple Inc. Media player system
GB2401272B (en) * 2003-04-30 2007-11-21 Hewlett Packard Development Co Method and apparatus for enhancing user interest in static digital images
US8555165B2 (en) * 2003-05-08 2013-10-08 Hillcrest Laboratories, Inc. Methods and systems for generating a zoomable graphical user interface
US7173623B2 (en) 2003-05-09 2007-02-06 Microsoft Corporation System supporting animation of graphical display elements through animation object instances
KR20070012570A (ko) 2003-05-21 2007-01-25 가부시키가이샤 히다치 하이테크놀로지즈 지문센서내장 휴대 단말장치
JP2006527439A (ja) * 2003-06-13 2006-11-30 ユニヴァーシティ オブ ランカスター ユーザインタフェース
US7567239B2 (en) 2003-06-26 2009-07-28 Motorola, Inc. Method and system for message and note composition on small screen devices
WO2005008444A2 (en) 2003-07-14 2005-01-27 Matt Pallakoff System and method for a portbale multimedia client
US20050027666A1 (en) 2003-07-15 2005-02-03 Vente, Inc Interactive online research system and method
KR100522940B1 (ko) * 2003-07-25 2005-10-24 삼성전자주식회사 활성영역을 설정 가능한 터치스크린 시스템 및 그 제어방법
JP2005056286A (ja) 2003-08-07 2005-03-03 Nec Engineering Ltd ウェブブラウザにおける拡大表示方法および拡大表示プログラム
EP1656660A4 (en) 2003-08-21 2006-09-13 Microsoft Corp FOCUSING MANAGEMENT USING POINTS IN THE EMPTY
US9024884B2 (en) 2003-09-02 2015-05-05 Apple Inc. Touch-sensitive electronic apparatus for media applications, and methods therefor
JP4360871B2 (ja) 2003-09-10 2009-11-11 富士通テン株式会社 情報端末における入力装置
US20050052427A1 (en) 2003-09-10 2005-03-10 Wu Michael Chi Hung Hand gesture interaction with touch surface
US7411575B2 (en) 2003-09-16 2008-08-12 Smart Technologies Ulc Gesture recognition method and touch system incorporating the same
JP2005092476A (ja) 2003-09-17 2005-04-07 Elo Touchsystems Inc マルチユーザー/マルチポインチングデバイスグラフィカルユーザーインターフェースシステム
CN1860429A (zh) 2003-09-30 2006-11-08 皇家飞利浦电子股份有限公司 定义内容窗口在显示器上的位置、尺寸和/或内容的姿势
US7034834B2 (en) 2003-10-24 2006-04-25 Microsoft Corporation Communication protocol for synchronizing animation systems
US20050183035A1 (en) * 2003-11-20 2005-08-18 Ringel Meredith J. Conflict resolution for graphic multi-user interface
US7962862B2 (en) 2003-11-24 2011-06-14 International Business Machines Corporation Method and data processing system for providing an improved graphics design tool
US7298367B2 (en) 2003-11-25 2007-11-20 3M Innovative Properties Company Light emitting stylus and user input device using same
US7814419B2 (en) 2003-11-26 2010-10-12 Nokia Corporation Changing an orientation of a user interface via a course of motion
JP3962718B2 (ja) 2003-12-01 2007-08-22 キヤノン株式会社 情報処理装置及びその制御方法、プログラム
US7337412B2 (en) 2003-12-15 2008-02-26 International Business Machines Corporation Methods, systems and computer program products for providing multi-dimensional tree diagram graphical user interfaces
US20050162402A1 (en) 2004-01-27 2005-07-28 Watanachote Susornpol J. Methods of interacting with a computer using a finger(s) touch sensing input device with visual feedback
US7366995B2 (en) 2004-02-03 2008-04-29 Roland Wescott Montague Combination tool that zooms in, zooms out, pans, rotates, draws, or manipulates during a drag
FI117308B (fi) * 2004-02-06 2006-08-31 Nokia Corp Eleohjausjärjestelmä
US7319457B2 (en) 2004-02-12 2008-01-15 Sentelic Corporation Method of scrolling window screen by means of controlling electronic device
US7358965B2 (en) * 2004-02-18 2008-04-15 Microsoft Corporation Tapping to create writing
US20050193015A1 (en) 2004-02-19 2005-09-01 Sandraic Logic, Llc A California Limited Liability Company Method and apparatus for organizing, sorting and navigating multimedia content
GB2411331A (en) 2004-02-19 2005-08-24 Trigenix Ltd Rendering user interface using actor attributes
FR2866726B1 (fr) * 2004-02-23 2006-05-26 Jazzmutant Controleur par manipulation d'objets virtuels sur un ecran tactile multi-contact
US7406696B2 (en) 2004-02-24 2008-07-29 Dialogic Corporation System and method for providing user input information to multiple independent, concurrent applications
JP4438448B2 (ja) 2004-02-26 2010-03-24 セイコーエプソン株式会社 構造化文書表示処理装置、構造化文書表示方法、構造化文書表示プログラム
US7327349B2 (en) 2004-03-02 2008-02-05 Microsoft Corporation Advanced navigation techniques for portable devices
US7301529B2 (en) 2004-03-23 2007-11-27 Fujitsu Limited Context dependent gesture response
JP2005275652A (ja) 2004-03-24 2005-10-06 Canon Inc 入力軌跡処理装置および入力軌跡処理方法
CN100407223C (zh) 2004-04-02 2008-07-30 诺基亚公司 一种用于手写识别的设备和方法
US7623119B2 (en) 2004-04-21 2009-11-24 Nokia Corporation Graphical functions by gestures
KR20070037559A (ko) 2004-04-30 2007-04-05 마이크로소프트 코포레이션 규칙들을 사용한 최종 사용자 응용 프로그램 맞춤화
JP4387242B2 (ja) 2004-05-10 2009-12-16 株式会社バンダイナムコゲームス プログラム、情報記憶媒体及びゲーム装置
US7624355B2 (en) 2004-05-27 2009-11-24 Baneth Robin C System and method for controlling a user interface
JP4855654B2 (ja) 2004-05-31 2012-01-18 ソニー株式会社 車載装置、車載装置の情報提供方法、車載装置の情報提供方法のプログラム及び車載装置の情報提供方法のプログラムを記録した記録媒体
US7358962B2 (en) 2004-06-15 2008-04-15 Microsoft Corporation Manipulating association of data with a physical object
US7773950B2 (en) 2004-06-16 2010-08-10 Telefonaktiebolaget Lm Ericsson (Publ) Benign interference suppression for received signal quality estimation
JP5172334B2 (ja) 2004-06-17 2013-03-27 アドレア エルエルシー タッチスクリーン上の2本指入力の使用
US7519223B2 (en) * 2004-06-28 2009-04-14 Microsoft Corporation Recognizing gestures and using gestures for interacting with software applications
US7786980B2 (en) 2004-06-29 2010-08-31 Koninklijke Philips Electronics N.V. Method and device for preventing staining of a display device
EP1763732A2 (en) 2004-06-29 2007-03-21 Koninklijke Philips Electronics N.V. Discontinuous zoom
JP4210936B2 (ja) 2004-07-08 2009-01-21 ソニー株式会社 情報処理装置及びこれに用いるプログラム
US20060012580A1 (en) * 2004-07-15 2006-01-19 N-Trig Ltd. Automatic switching for a dual mode digitizer
JP4903371B2 (ja) 2004-07-29 2012-03-28 任天堂株式会社 タッチパネルを用いたゲーム装置およびゲームプログラム
WO2006020305A2 (en) 2004-07-30 2006-02-23 Apple Computer, Inc. Gestures for touch sensitive input devices
US7506799B2 (en) * 2004-07-30 2009-03-24 Nokia Corporation Method for the monitoring of system security in electronic devices
US7653883B2 (en) * 2004-07-30 2010-01-26 Apple Inc. Proximity detector in handheld device
EP1774427A2 (en) 2004-07-30 2007-04-18 Apple Computer, Inc. Mode-based graphical user interfaces for touch sensitive input devices
US20070046643A1 (en) * 2004-08-06 2007-03-01 Hillis W Daniel State-Based Approach to Gesture Identification
US7728821B2 (en) * 2004-08-06 2010-06-01 Touchtable, Inc. Touch detecting interactive display
US7724242B2 (en) * 2004-08-06 2010-05-25 Touchtable, Inc. Touch driven method and apparatus to integrate and display multiple image layers forming alternate depictions of same subject matter
US7719523B2 (en) 2004-08-06 2010-05-18 Touchtable, Inc. Bounding box gesture recognition on a touch detecting interactive display
US7721197B2 (en) 2004-08-12 2010-05-18 Microsoft Corporation System and method of displaying content on small screen computing devices
US7181373B2 (en) 2004-08-13 2007-02-20 Agilent Technologies, Inc. System and methods for navigating and visualizing multi-dimensional biological data
US7434173B2 (en) 2004-08-30 2008-10-07 Microsoft Corporation Scrolling web pages using direct interaction
US7761814B2 (en) 2004-09-13 2010-07-20 Microsoft Corporation Flick gesture
US20060055669A1 (en) 2004-09-13 2006-03-16 Mita Das Fluent user interface for text entry on touch-sensitive display
JP4366695B2 (ja) 2004-09-13 2009-11-18 日本ビクター株式会社 メニュー画像表示方法及び電子情報機器
JP4355639B2 (ja) 2004-09-15 2009-11-04 キヤノン株式会社 画像処理装置およびその制御方法
US7728823B2 (en) * 2004-09-24 2010-06-01 Apple Inc. System and method for processing raw data of track pad device
JP3786669B2 (ja) 2004-10-06 2006-06-14 株式会社バンダイナムコゲームス ゲームシステム、プログラム及び情報記憶媒体
US20060077183A1 (en) 2004-10-08 2006-04-13 Studt Peter C Methods and systems for converting touchscreen events into application formatted data
WO2006045530A2 (en) 2004-10-22 2006-05-04 Novo Nordisk A/S An apparatus and a method of providing information to a user
JP3770499B1 (ja) 2004-11-02 2006-04-26 任天堂株式会社 ゲーム装置及びゲームプログラム
US7925996B2 (en) 2004-11-18 2011-04-12 Microsoft Corporation Method and system for providing multiple input connecting user interface
US7665031B2 (en) 2004-12-08 2010-02-16 Microsoft Corporation Method and system of taskbar button interfaces
US20060136833A1 (en) 2004-12-15 2006-06-22 International Business Machines Corporation Apparatus and method for chaining objects in a pointer drag path
WO2006067711A2 (en) 2004-12-21 2006-06-29 Koninklijke Philips Electronics N.V. Method and device for displaying animated buttons
CN100377055C (zh) 2004-12-22 2008-03-26 盛群半导体股份有限公司 触控感应装置的判读方法
EP1851609A4 (en) 2005-01-05 2012-01-25 Jaewoo Ahn METHOD AND DEVICE FOR ENTERING CHARACTERS BY A SHOWING DEVICE
US20060176403A1 (en) 2005-01-05 2006-08-10 Hillcrest Laboratories, Inc. Distributed software construction for user interfaces
US20060156249A1 (en) 2005-01-12 2006-07-13 Blythe Michael M Rotate a user interface
US20070185876A1 (en) 2005-02-07 2007-08-09 Mendis Venura C Data handling system
GB0503253D0 (en) 2005-02-17 2005-03-23 Univ Northumbria Newcastle User control of a hand-held device
US8819569B2 (en) 2005-02-18 2014-08-26 Zumobi, Inc Single-handed approach for navigation of application tiles using panning and zooming
JP4613078B2 (ja) 2005-03-01 2011-01-12 学校法人 名城大学 半導体基板の製造方法
KR101690164B1 (ko) 2005-03-04 2016-12-27 애플 인크. 다기능 휴대용 장치
CN1841284A (zh) 2005-03-28 2006-10-04 上海桐港信息科技有限公司 触摸屏式移动设备微浏览器页面显示漂移方法
US20060221061A1 (en) 2005-03-31 2006-10-05 Tyco Electronic Corporation Touch sensor and control with random pulse spacing
US7750893B2 (en) * 2005-04-06 2010-07-06 Nintendo Co., Ltd. Storage medium storing input position processing program, and input position processing device
CN1845046A (zh) 2005-04-07 2006-10-11 技嘉科技股份有限公司 具有触控式功能键的键盘和鼠标
US7355595B2 (en) 2005-04-15 2008-04-08 Microsoft Corporation Tactile device for scrolling
US7673255B2 (en) 2005-04-22 2010-03-02 Microsoft Corporation Interface and system for manipulating thumbnails of live windows in a window manager
US7692637B2 (en) 2005-04-26 2010-04-06 Nokia Corporation User input device for electronic device
US7499027B2 (en) 2005-04-29 2009-03-03 Microsoft Corporation Using a light pointer for input on an interactive display surface
JP4490326B2 (ja) 2005-05-09 2010-06-23 株式会社土井製作所 地中埋設ケーブル等に対する地盤変動時の保護方法及びその保護装置
WO2006124248A2 (en) 2005-05-16 2006-11-23 General Motors Global Technology Operations, Inc. Catalyst for fuel cell electrode
US8117540B2 (en) 2005-05-18 2012-02-14 Neuer Wall Treuhand Gmbh Method and device incorporating improved text input mechanism
US20060262104A1 (en) 2005-05-19 2006-11-23 Sullivan Darius M Systems and methods for distinguishing contact-induced plate vibrations from acoustic noise-induced plate vibrations
US9785329B2 (en) 2005-05-23 2017-10-10 Nokia Technologies Oy Pocket computer and associated methods
US20070024646A1 (en) 2005-05-23 2007-02-01 Kalle Saarinen Portable electronic apparatus and associated method
US7487447B1 (en) * 2005-05-25 2009-02-03 Google Inc. Web page zoom feature
US20060271520A1 (en) 2005-05-27 2006-11-30 Ragan Gene Z Content-based implicit search query
US7561159B2 (en) 2005-05-31 2009-07-14 Magnifi Group Inc. Control of animation timeline
WO2006128248A1 (en) 2005-06-02 2006-12-07 National Ict Australia Limited Multimodal computer navigation
US7710397B2 (en) 2005-06-03 2010-05-04 Apple Inc. Mouse with improved input mechanisms using touch sensors
US9019209B2 (en) 2005-06-08 2015-04-28 3M Innovative Properties Company Touch location determination involving multiple touch location processes
JP4849300B2 (ja) 2005-06-14 2012-01-11 ソニー株式会社 表示信号処理装置および方法、記録媒体、並びにプログラム
KR20060133389A (ko) 2005-06-20 2006-12-26 엘지전자 주식회사 이동 단말기의 데이터 처리 장치 및 그 방법
TW200701082A (en) 2005-06-23 2007-01-01 Elan Microelectronics Corp Scroll control method used in the touch panel
US20070006078A1 (en) 2005-07-01 2007-01-04 Microsoft Corporation Declaratively responding to state changes in an interactive multimedia environment
US7463263B2 (en) 2005-07-15 2008-12-09 Sap Portals Israel Ltd. Declarative specification of model visualizations
BRPI0615536A2 (pt) 2005-07-22 2011-05-17 Matt Pallakoff dispositivo manual que tem um mostrador da tela de toque com capacidade de implementar uma interface do usuário de teclado virtual para inserir toques no teclado por um usuário, sistema de interface do usuário (ui) baseada em tela de toque em um dispositivo manual, sistema de interface do usuário (ui) baseado em tela de toque otimizado pelo polegar em um dispositivo manual, sistema de interface do usuário (ui) virtual acionado a polegar para a busca de informações, sistema de interface do usuário virtual acionado pelo polegar, para selecionar itens selecionáveis virtuais em uma página da web exibida em um mostrador de tela de toque de um dispositivo portátil, dispositivo manual que tem um mostrador de tela de toque com capacidade de executar um teclado virtual para inserir toques no teclado por um usuário, método para implementar a seleção de entrda por um usúario dos itens exibidos em um tela de toque de um dispositivo manual e método para que uma interface virtual do usuário do teclado interaja com páginas da web em um dispositivo de visualização manual que tem um mostrador de tela de toque
US7808478B2 (en) 2005-08-22 2010-10-05 Samsung Electronics Co., Ltd. Autonomous handheld device having a drawing tool
EP1758345B1 (en) 2005-08-26 2016-12-28 Microsoft Technology Licensing, LLC Mobile telecommunication handset having touch pad
US7568035B2 (en) * 2005-08-30 2009-07-28 Microsoft Corporation Command binding determination and implementation
US20070061126A1 (en) * 2005-09-01 2007-03-15 Anthony Russo System for and method of emulating electronic input devices
JP2009523267A (ja) 2005-09-15 2009-06-18 アップル インコーポレイテッド トラックパッドデバイスの未加工データを処理するシステム及び方法
US7694231B2 (en) 2006-01-05 2010-04-06 Apple Inc. Keyboards for portable electronic devices
US20070152980A1 (en) 2006-01-05 2007-07-05 Kenneth Kocienda Touch Screen Keyboards for Portable Electronic Devices
US20070064004A1 (en) * 2005-09-21 2007-03-22 Hewlett-Packard Development Company, L.P. Moving a graphic element
US7633076B2 (en) 2005-09-30 2009-12-15 Apple Inc. Automated response to and sensing of user activity in portable devices
CN1949161B (zh) 2005-10-14 2010-05-26 鸿富锦精密工业(深圳)有限公司 多层次菜单显示装置及显示控制方法
KR100717047B1 (ko) 2005-10-20 2007-05-10 삼성전자주식회사 간편하게 웹 페이지를 표시하는 방법 및 장치
US20070109275A1 (en) 2005-11-16 2007-05-17 Chen-Ting Chuang Method for controlling a touch screen user interface and device thereof
JP2007148927A (ja) 2005-11-29 2007-06-14 Alps Electric Co Ltd 入力装置及びこれを用いたスクロール制御方法
US9069877B2 (en) 2005-12-07 2015-06-30 Ziilabs Inc., Ltd. User interface with variable sized icons
US20070132789A1 (en) * 2005-12-08 2007-06-14 Bas Ording List scrolling in response to moving contact over list of index symbols
EP2543971B8 (en) 2005-12-08 2019-02-27 Conversant Wireless Licensing S.à r.l. A method for an electronic device
US7650137B2 (en) 2005-12-23 2010-01-19 Apple Inc. Account information display for portable communication device
US7480870B2 (en) 2005-12-23 2009-01-20 Apple Inc. Indication of progress towards satisfaction of a user input condition
US7657849B2 (en) 2005-12-23 2010-02-02 Apple Inc. Unlocking a device by performing gestures on an unlock image
US7786975B2 (en) 2005-12-23 2010-08-31 Apple Inc. Continuous scrolling list with acceleration
US7812826B2 (en) 2005-12-30 2010-10-12 Apple Inc. Portable electronic device with multi-touch input
US20070152983A1 (en) 2005-12-30 2007-07-05 Apple Computer, Inc. Touch pad with symbols based on mode
US7509588B2 (en) 2005-12-30 2009-03-24 Apple Inc. Portable electronic device with interface reconfiguration mode
US8018440B2 (en) * 2005-12-30 2011-09-13 Microsoft Corporation Unintentional touch rejection
US7574672B2 (en) 2006-01-05 2009-08-11 Apple Inc. Text entry interface for a portable communication device
US7860536B2 (en) 2006-01-05 2010-12-28 Apple Inc. Telephone interface for a portable communication device
WO2007084852A2 (en) 2006-01-18 2007-07-26 Roxse, Llc Systems and methods for providing sorted search results
US20070176903A1 (en) 2006-01-31 2007-08-02 Dahlin Jeffrey J Capacitive touch sensor button activation
US9910497B2 (en) 2006-02-08 2018-03-06 Oblong Industries, Inc. Gestural control of autonomous and semi-autonomous systems
US8312479B2 (en) * 2006-03-08 2012-11-13 Navisense Application programming interface (API) for sensory events
US20070214436A1 (en) 2006-03-13 2007-09-13 Myers Raymond L Jr Positional navigation graphic link system
US7620901B2 (en) 2006-03-21 2009-11-17 Microsoft Corporation Simultaneous input across multiple applications
US8866750B2 (en) 2006-04-10 2014-10-21 Microsoft Corporation Universal user interface device
US8587526B2 (en) * 2006-04-12 2013-11-19 N-Trig Ltd. Gesture recognition feedback for a dual mode digitizer
US20070242607A1 (en) 2006-04-13 2007-10-18 Tellabs Operations, Inc. Method and system for controlling distribution of network topology information
KR20070113025A (ko) 2006-05-24 2007-11-28 엘지전자 주식회사 터치스크린 장치 및 이의 작동방법
US8077153B2 (en) * 2006-04-19 2011-12-13 Microsoft Corporation Precise selection techniques for multi-touch screens
TWI328185B (en) 2006-04-19 2010-08-01 Lg Electronics Inc Touch screen device for potable terminal and method of displaying and selecting menus thereon
US9063647B2 (en) * 2006-05-12 2015-06-23 Microsoft Technology Licensing, Llc Multi-touch uses, gestures, and implementation
US8775820B1 (en) 2006-06-02 2014-07-08 Sprint Communications Company L.P. System and method of enterprise administrative password generation and control
US7844661B2 (en) 2006-06-15 2010-11-30 Microsoft Corporation Composition of local media playback with remotely generated user interface
KR101277256B1 (ko) 2006-06-16 2013-07-05 삼성전자주식회사 사용자 인터페이스를 위한 장치 및 방법
US8169421B2 (en) 2006-06-19 2012-05-01 Cypress Semiconductor Corporation Apparatus and method for detecting a touch-sensor pad gesture
KR100748469B1 (ko) 2006-06-26 2007-08-10 삼성전자주식회사 키패드 터치에 의한 사용자 인터페이스 방법 및 그 휴대단말기
GB0612624D0 (en) 2006-06-26 2006-08-02 Symbian Software Ltd Speed of gesture
US8269725B2 (en) * 2006-06-28 2012-09-18 Microsoft Corporation Input simulation system for touch based devices
US8086971B2 (en) 2006-06-28 2011-12-27 Nokia Corporation Apparatus, methods and computer program products providing finger-based and hand-based gesture commands for portable electronic device applications
WO2008005952A2 (en) 2006-06-30 2008-01-10 Tele Atlas North America, Inc. Method and system for collecting user update requests regarding geographic data to support automated analysis, processing and geographic data updates
US9069417B2 (en) * 2006-07-12 2015-06-30 N-Trig Ltd. Hover and touch detection for digitizer
JP4762070B2 (ja) 2006-07-19 2011-08-31 富士通株式会社 手書き入力装置、手書き入力方法、及びコンピュータプログラム
JP4280759B2 (ja) * 2006-07-27 2009-06-17 キヤノン株式会社 情報処理装置およびユーザインタフェース制御方法
JP4514830B2 (ja) 2006-08-15 2010-07-28 エヌ−トリグ リミテッド デジタイザのためのジェスチャ検出
US20080043020A1 (en) * 2006-08-18 2008-02-21 Microsoft Corporation User interface for viewing street side imagery
US8253695B2 (en) 2006-09-06 2012-08-28 Apple Inc. Email client for a portable multifunction device
US7843427B2 (en) 2006-09-06 2010-11-30 Apple Inc. Methods for determining a cursor position from a finger contact with a touch screen display
US8106856B2 (en) 2006-09-06 2012-01-31 Apple Inc. Portable electronic device for photo management
US7864163B2 (en) 2006-09-06 2011-01-04 Apple Inc. Portable electronic device, method, and graphical user interface for displaying structured electronic documents
US7941760B2 (en) 2006-09-06 2011-05-10 Apple Inc. Soft keyboard display for a portable multifunction device
CN101356493A (zh) 2006-09-06 2009-01-28 苹果公司 用于照片管理的便携式电子装置
US20080084400A1 (en) 2006-10-10 2008-04-10 Outland Research, Llc Touch-gesture control of video media play on handheld media players
US8056007B2 (en) 2006-11-15 2011-11-08 Yahoo! Inc. System and method for recognizing and storing information and associated context
US20080114614A1 (en) * 2006-11-15 2008-05-15 General Electric Company Methods and systems for healthcare application interaction using gesture-based interaction enhanced with pressure sensitivity
US7694240B2 (en) * 2006-11-22 2010-04-06 General Electric Company Methods and systems for creation of hanging protocols using graffiti-enabled devices
JP5191119B2 (ja) 2006-12-06 2013-04-24 株式会社ジャパンディスプレイウェスト 表示装置、表示装置の制御方法、及びプログラム
CN101206659B (zh) 2006-12-15 2013-09-18 谷歌股份有限公司 自动搜索查询校正
TW200828089A (en) * 2006-12-29 2008-07-01 Inventec Appliances Corp Method for zooming image
US8489783B2 (en) * 2007-01-03 2013-07-16 Apple Inc. Multi buffer asynchronous scheme for processing incoming information
US7777732B2 (en) 2007-01-03 2010-08-17 Apple Inc. Multi-event input system
US8656295B2 (en) 2007-01-05 2014-02-18 Apple Inc. Selecting and manipulating web content
US7956847B2 (en) 2007-01-05 2011-06-07 Apple Inc. Gestures for controlling, manipulating, and editing of media files using touch sensitive devices
US8214768B2 (en) 2007-01-05 2012-07-03 Apple Inc. Method, system, and graphical user interface for viewing multiple application windows
US7924271B2 (en) 2007-01-05 2011-04-12 Apple Inc. Detecting gestures on multi-event sensitive devices
US20080168402A1 (en) * 2007-01-07 2008-07-10 Christopher Blumenberg Application Programming Interfaces for Gesture Operations
US7903115B2 (en) * 2007-01-07 2011-03-08 Apple Inc. Animations
US20080168478A1 (en) 2007-01-07 2008-07-10 Andrew Platzer Application Programming Interfaces for Scrolling
US7966578B2 (en) 2007-01-07 2011-06-21 Apple Inc. Portable multifunction device, method, and graphical user interface for translating displayed content
US7671756B2 (en) 2007-01-07 2010-03-02 Apple Inc. Portable electronic device with alert silencing
US8656311B1 (en) * 2007-01-07 2014-02-18 Apple Inc. Method and apparatus for compositing various types of content
US7844915B2 (en) 2007-01-07 2010-11-30 Apple Inc. Application programming interfaces for scrolling operations
US8665225B2 (en) * 2007-01-07 2014-03-04 Apple Inc. Portable multifunction device, method, and graphical user interface for interpreting a finger gesture
US20080168395A1 (en) 2007-01-07 2008-07-10 Bas Ording Positioning a Slider Icon on a Portable Multifunction Device
US8519963B2 (en) 2007-01-07 2013-08-27 Apple Inc. Portable multifunction device, method, and graphical user interface for interpreting a finger gesture on a touch screen display
US7872652B2 (en) 2007-01-07 2011-01-18 Apple Inc. Application programming interfaces for synchronization
US8091045B2 (en) 2007-01-07 2012-01-03 Apple Inc. System and method for managing lists
US7912700B2 (en) 2007-02-08 2011-03-22 Microsoft Corporation Context based word prediction
JP4866262B2 (ja) 2007-02-16 2012-02-01 ソフトバンクモバイル株式会社 操作入力処理方法及び携帯型情報処理装置
JP4793287B2 (ja) 2007-02-28 2011-10-12 ブラザー工業株式会社 通信装置および通信システム
KR101383709B1 (ko) 2007-03-07 2014-04-09 삼성디스플레이 주식회사 표시 장치 및 그의 구동 방법
EP1970799B1 (en) 2007-03-15 2017-08-16 LG Electronics Inc. Electronic device and method of controlling mode thereof and mobile communication terminal
US8436815B2 (en) 2007-05-25 2013-05-07 Microsoft Corporation Selective enabling of multi-input controls
JP5117121B2 (ja) 2007-06-18 2013-01-09 パイオニア株式会社 Av機器の操作制御システム
US8350815B2 (en) 2007-06-20 2013-01-08 Sony Mobile Communications Portable communication device including touch input with scrolling function
US8171432B2 (en) 2008-01-06 2012-05-01 Apple Inc. Touch screen device, method, and graphical user interface for displaying and selecting application options
US8059101B2 (en) 2007-06-22 2011-11-15 Apple Inc. Swipe gestures for touch screen keyboards
JP4836885B2 (ja) * 2007-07-04 2011-12-14 シャープ株式会社 携帯通信端末用の非接触型入力装置、携帯通信端末及びメール作成システム
WO2009018314A2 (en) 2007-07-30 2009-02-05 Perceptive Pixel, Inc. Graphical user interface for large-scale, multi-user, multi-touch systems
WO2009016607A2 (en) 2007-08-01 2009-02-05 Nokia Corporation Apparatus, methods, and computer program products providing context-dependent gesture recognition
US8471823B2 (en) 2007-08-16 2013-06-25 Sony Corporation Systems and methods for providing a user interface
US20090051671A1 (en) * 2007-08-22 2009-02-26 Jason Antony Konstas Recognizing the motion of two or more touches on a touch-sensing surface
US7949516B2 (en) 2007-08-31 2011-05-24 Research In Motion Limited Handheld electronic device and method employing logical proximity of characters in spell checking
KR101348721B1 (ko) 2007-09-03 2014-01-08 엘지전자 주식회사 휴대 단말기 및 그 휴대 단말기의 터치 인식 방법
KR20090024541A (ko) 2007-09-04 2009-03-09 삼성전자주식회사 하이퍼링크 선택 방법 및 이를 이용하는 이동통신 단말기
US20090058820A1 (en) 2007-09-04 2009-03-05 Microsoft Corporation Flick-based in situ search from ink, text, or an empty selection region
US8667412B2 (en) 2007-09-06 2014-03-04 Google Inc. Dynamic virtual input device configuration
US20110047459A1 (en) 2007-10-08 2011-02-24 Willem Morkel Van Der Westhuizen User interface
US7917584B2 (en) * 2007-10-22 2011-03-29 Xcerion Aktiebolag Gesture-based collaboration
JP2009110286A (ja) 2007-10-30 2009-05-21 Toshiba Corp 情報処理装置、ランチャー起動制御プログラムおよびランチャー起動制御方法
AU2008323700B2 (en) 2007-11-09 2014-01-16 Wms Gaming, Inc. Interface for wagering game environments
JP2009169825A (ja) 2008-01-18 2009-07-30 Kyocera Mita Corp 表示入力装置、電子機器及び表示入力制御プログラム
US20090207140A1 (en) 2008-02-19 2009-08-20 Sony Ericsson Mobile Communications Ab Identifying and responding to multiple time-overlapping touches on a touch panel
TWI352924B (en) 2008-02-21 2011-11-21 Wintek Corp Touch panel and driving method of touch panel
US8289283B2 (en) 2008-03-04 2012-10-16 Apple Inc. Language input interface on a device
US8717305B2 (en) 2008-03-04 2014-05-06 Apple Inc. Touch event model for web pages
US8174502B2 (en) 2008-03-04 2012-05-08 Apple Inc. Touch event processing for web pages
US8416196B2 (en) 2008-03-04 2013-04-09 Apple Inc. Touch event model programming interface
US8352877B2 (en) 2008-03-06 2013-01-08 Microsoft Corporation Adjustment of range of content displayed on graphical user interface
US20090231281A1 (en) 2008-03-11 2009-09-17 Microsoft Corporation Multi-touch virtual keyboard
US8289289B2 (en) 2008-04-03 2012-10-16 N-trig, Ltd. Multi-touch and single touch detection
KR101513024B1 (ko) 2008-04-22 2015-04-17 엘지전자 주식회사 단말기 및 이것의 이미지 인식 방법
US8261190B2 (en) 2008-04-24 2012-09-04 Burlington Education Ltd. Displaying help sensitive areas of a computer application
JP2010044180A (ja) 2008-08-12 2010-02-25 Victor Co Of Japan Ltd 液晶表示装置及びこれに用いる映像信号処理方法
US8526767B2 (en) * 2008-05-01 2013-09-03 Atmel Corporation Gesture recognition
US20100177053A2 (en) * 2008-05-09 2010-07-15 Taizo Yasutake Method and apparatus for control of multiple degrees of freedom of a display
US20090282332A1 (en) 2008-05-12 2009-11-12 Nokia Corporation Apparatus, method and computer program product for selecting multiple items using multi-touch
US9268483B2 (en) * 2008-05-16 2016-02-23 Microsoft Technology Licensing, Llc Multi-touch input platform
US8584048B2 (en) * 2008-05-29 2013-11-12 Telcordia Technologies, Inc. Method and system for multi-touch-based browsing of media summarizations on a handheld device
US20090309847A1 (en) 2008-06-12 2009-12-17 You I Labs, Inc. Apparatus and method for providing multi-touch interface capability
US7864037B2 (en) * 2008-06-16 2011-01-04 International Business Machines Corporation Pattern-driven communication architecture
US20090322699A1 (en) 2008-06-25 2009-12-31 Sony Ericsson Mobile Communications Ab Multiple input detection for resistive touch panel
US8754855B2 (en) * 2008-06-27 2014-06-17 Microsoft Corporation Virtual touchpad
US20090322700A1 (en) 2008-06-30 2009-12-31 Tyco Electronics Corporation Method and apparatus for detecting two simultaneous touches and gestures on a resistive touchscreen
JP2010015238A (ja) 2008-07-01 2010-01-21 Sony Corp 情報処理装置、及び補助情報の表示方法
US8154428B2 (en) * 2008-07-15 2012-04-10 International Business Machines Corporation Gesture recognition control of electronic devices using a multi-touch device
US8237807B2 (en) 2008-07-24 2012-08-07 Apple Inc. Image capturing device with touch screen for adjusting camera settings
US8390577B2 (en) * 2008-07-25 2013-03-05 Intuilab Continuous recognition of multi-touch gestures
KR101482120B1 (ko) * 2008-08-01 2015-01-21 엘지전자 주식회사 스케줄 관리가 가능한 휴대 단말기 및 그 제어방법
CN101339453B (zh) 2008-08-15 2012-05-23 广东威创视讯科技股份有限公司 基于交互式输入设备的模拟鼠标输入方法
US8135171B2 (en) 2008-08-19 2012-03-13 Au Optronics Corp. Multipoint tracking method and related device
CN101661361A (zh) 2008-08-27 2010-03-03 比亚迪股份有限公司 多点触摸检测系统
US8279241B2 (en) 2008-09-09 2012-10-02 Microsoft Corporation Zooming graphical user interface
US20100088628A1 (en) 2008-10-07 2010-04-08 Sony Ericsson Mobile Communications Ab Live preview of open windows
US20100107116A1 (en) * 2008-10-27 2010-04-29 Nokia Corporation Input on touch user interfaces
JP4853507B2 (ja) 2008-10-30 2012-01-11 ソニー株式会社 情報処理装置、情報処理方法およびプログラム
US8732576B2 (en) 2008-12-04 2014-05-20 Nvidia Corporation Operating system providing multi-touch support for applications in a mobile device
TW201023018A (en) 2008-12-12 2010-06-16 Asustek Comp Inc Touch panel with multi-touch function and multi-touch detecting method thereof
CN102246126B (zh) 2008-12-15 2015-11-25 惠普开发有限公司 基于手势的编辑模式
US8217909B2 (en) * 2008-12-19 2012-07-10 Cypress Semiconductor Corporation Multi-finger sub-gesture reporting for a user interface device
US8869070B2 (en) 2008-12-30 2014-10-21 T-Mobile Usa, Inc. Handwriting manipulation for conducting a search over multiple databases
KR101521932B1 (ko) * 2009-01-19 2015-05-20 엘지전자 주식회사 단말기 및 그 제어 방법
US8319736B2 (en) 2009-01-19 2012-11-27 Microsoft Corporation Touch sensitive computing device and method
US8704767B2 (en) 2009-01-29 2014-04-22 Microsoft Corporation Environmental gesture recognition
CN102317949A (zh) 2009-02-10 2012-01-11 夏普株式会社 认证设备、认证方法以及用于使计算机执行认证方法的程序
US20100235745A1 (en) 2009-03-10 2010-09-16 Sony Corporation Accessibility system for consumer devices
US9684521B2 (en) 2010-01-26 2017-06-20 Apple Inc. Systems having discrete and continuous gesture recognizers
US9311112B2 (en) 2009-03-16 2016-04-12 Apple Inc. Event recognition
US8285499B2 (en) 2009-03-16 2012-10-09 Apple Inc. Event recognition
US8566045B2 (en) 2009-03-16 2013-10-22 Apple Inc. Event recognition
US8566044B2 (en) 2009-03-16 2013-10-22 Apple Inc. Event recognition
KR101510484B1 (ko) 2009-03-31 2015-04-08 엘지전자 주식회사 이동 단말기 및 이동 단말기의 제어 방법
US20100281435A1 (en) * 2009-04-30 2010-11-04 At&T Intellectual Property I, L.P. System and method for multimodal interaction using robust gesture processing
US8427440B2 (en) * 2009-05-05 2013-04-23 Microsoft Corporation Contact grouping and gesture recognition for surface computing
US8375295B2 (en) 2009-05-21 2013-02-12 Sony Computer Entertainment Inc. Customization of GUI layout based on history of use
US8493344B2 (en) 2009-06-07 2013-07-23 Apple Inc. Devices, methods, and graphical user interfaces for accessibility using a touch-sensitive surface
DE102009024656A1 (de) 2009-06-12 2011-03-24 Volkswagen Ag Verfahren zum Steuern einer grafischen Benutzerschnittstelle und Bedienvorrichtung für eine grafische Benutzerschnittstelle
US20110069021A1 (en) 2009-06-12 2011-03-24 Hill Jared C Reducing false touchpad data by ignoring input when area gesture does not behave as predicted
KR101608532B1 (ko) * 2009-08-11 2016-04-01 엘지전자 주식회사 이동 통신 단말기에서의 데이터 표시방법 및 이를 적용한 이동 통신 단말기
US8310459B2 (en) 2009-09-23 2012-11-13 Nokia Corporation Touch detection
US9223590B2 (en) 2010-01-06 2015-12-29 Apple Inc. System and method for issuing commands to applications based on contextual information
TWI400638B (zh) 2009-10-20 2013-07-01 Acer Inc 觸控顯示裝置、觸控顯示系統及其調整觸控區域之方法
KR20110047349A (ko) 2009-10-30 2011-05-09 주식회사 팬택 휴대용 단말기에서 터치와 가압을 이용하는 사용자 인터페이스 장치 및 방법
US8957918B2 (en) * 2009-11-03 2015-02-17 Qualcomm Incorporated Methods for implementing multi-touch gestures on a single-touch touch surface
KR101639383B1 (ko) * 2009-11-12 2016-07-22 삼성전자주식회사 근접 터치 동작 감지 장치 및 방법
US8390600B2 (en) 2009-11-13 2013-03-05 Microsoft Corporation Interactive display system with contact geometry interface
US8436821B1 (en) * 2009-11-20 2013-05-07 Adobe Systems Incorporated System and method for developing and classifying touch gestures
US20100085323A1 (en) 2009-12-04 2010-04-08 Adam Bogue Segmenting a Multi-Touch Input Region by User
US8432368B2 (en) * 2010-01-06 2013-04-30 Qualcomm Incorporated User interface methods and systems for providing force-sensitive input
US8140570B2 (en) 2010-03-11 2012-03-20 Apple Inc. Automatic discovery of metadata
US8296332B2 (en) 2010-04-01 2012-10-23 Apple Inc. Visual manipulation of database schema
KR20110110940A (ko) 2010-04-02 2011-10-10 삼성전자주식회사 휴대용 단말기의 터치 입력 장치 및 방법
US8291344B2 (en) 2010-04-07 2012-10-16 Apple Inc. Device, method, and graphical user interface for managing concurrently open software applications
US20110252364A1 (en) 2010-04-07 2011-10-13 Freddy Allen Anzures Device, Method, and Graphical User Interface for Navigation of Multiple Applications
US8131898B2 (en) * 2010-05-27 2012-03-06 Adobe Systems Incorporated Event handling in an integrated execution environment
EP2390766B1 (en) 2010-05-28 2013-09-25 BlackBerry Limited Electronic device including touch-sensitive display and method of controlling same
US20130120280A1 (en) * 2010-05-28 2013-05-16 Tim Kukulski System and Method for Evaluating Interoperability of Gesture Recognizers
US8669946B2 (en) 2010-05-28 2014-03-11 Blackberry Limited Electronic device including touch-sensitive display and method of controlling same
CN102262890A (zh) 2010-05-31 2011-11-30 鸿富锦精密工业(深圳)有限公司 电子装置及其标记方法
CN101853105A (zh) 2010-06-02 2010-10-06 友达光电股份有限公司 一种具有触控屏幕的计算机及其操作方法
US8749499B2 (en) * 2010-06-08 2014-06-10 Sap Ag Touch screen for bridging multi and/or single touch points to applications
US8836643B2 (en) * 2010-06-10 2014-09-16 Qualcomm Incorporated Auto-morphing adaptive user interface device and methods
US8552999B2 (en) 2010-06-14 2013-10-08 Apple Inc. Control selection approximation
JP5663980B2 (ja) 2010-06-29 2015-02-04 ブラザー工業株式会社 画像処理装置
TWI407346B (zh) 2010-07-30 2013-09-01 Ind Tech Res Inst 觸控輸入裝置之軌跡補償方法與系統,及其電腦程式產品
KR20120024247A (ko) 2010-09-06 2012-03-14 삼성전자주식회사 사용자의 제스처를 인식하여 이동 장치를 동작하는 방법 및 그 이동 장치
US20120092286A1 (en) * 2010-10-19 2012-04-19 Microsoft Corporation Synthetic Gesture Trace Generator
US20120133579A1 (en) 2010-11-30 2012-05-31 Microsoft Corporation Gesture recognition management
CN106095418B (zh) 2010-12-20 2019-09-13 苹果公司 事件识别
US8438473B2 (en) * 2011-01-05 2013-05-07 Research In Motion Limited Handling of touch events in a browser environment
US20120242584A1 (en) * 2011-03-22 2012-09-27 Nokia Corporation Method and apparatus for providing sight independent activity reports responsive to a touch gesture
US9298363B2 (en) 2011-04-11 2016-03-29 Apple Inc. Region activation for touch sensitive surface
AU2011202182B1 (en) 2011-05-11 2011-10-13 Frequency Ip Holdings, Llc Creation and presentation of selective digital content feeds
TWI467463B (zh) * 2011-05-27 2015-01-01 Asustek Comp Inc 具觸控式螢幕的電腦系統及其手勢的處理方法
US9658766B2 (en) 2011-05-27 2017-05-23 Microsoft Technology Licensing, Llc Edge gesture
US9389679B2 (en) * 2011-11-30 2016-07-12 Microsoft Technology Licensing, Llc Application programming interface for a multi-pointer indirect touch input device
US9071970B2 (en) 2011-12-05 2015-06-30 Sony Corporation Terminal device
US10983625B2 (en) * 2011-12-22 2021-04-20 Adobe Inc. Systems and methods for measurement of unsupported user interface actions
US8411060B1 (en) 2012-01-13 2013-04-02 Google Inc. Swipe gesture classification
US9046958B2 (en) 2012-03-15 2015-06-02 Nokia Technologies Oy Method, apparatus and computer program product for user input interpretation and input error mitigation
US9626100B2 (en) 2013-04-15 2017-04-18 Microsoft Technology Licensing, Llc Dynamic management of edge inputs by users on a touch device
US9733716B2 (en) 2013-06-09 2017-08-15 Apple Inc. Proxy gesture recognizer
WO2014203459A1 (ja) * 2013-06-18 2014-12-24 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 入力装置及び動作要求を入力する方法
US9430142B2 (en) * 2014-07-17 2016-08-30 Facebook, Inc. Touch-based gesture recognition and application navigation
US9886190B2 (en) * 2014-09-26 2018-02-06 The Florida International University Board Of Trustees Gesture discernment and processing system
KR102374160B1 (ko) * 2014-11-14 2022-03-14 삼성디스플레이 주식회사 스케일링을 사용하여 디스플레이 지연을 감소시키는 방법 및 장치
US9952676B2 (en) * 2015-06-25 2018-04-24 Intel Corporation Wearable device with gesture recognition mechanism
US11029836B2 (en) * 2016-03-25 2021-06-08 Microsoft Technology Licensing, Llc Cross-platform interactivity architecture
US11755146B2 (en) * 2021-06-03 2023-09-12 Apple Inc. Devices and methods for processing touch inputs

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080165132A1 (en) 2007-01-05 2008-07-10 Microsoft Corporation Recognizing multiple input point gestures
US20090228901A1 (en) 2008-03-04 2009-09-10 Apple Inc. Touch event model

Also Published As

Publication number Publication date
CN103558984B (zh) 2017-12-05
EP2354930B1 (en) 2020-08-26
WO2011094267A1 (en) 2011-08-04
JP2013518349A (ja) 2013-05-20
JP2016177828A (ja) 2016-10-06
AU2011209720B2 (en) 2014-05-15
AU2014213525B2 (en) 2016-04-28
AU2016204905B2 (en) 2018-07-05
CN103955341A (zh) 2014-07-30
EP2354930A1 (en) 2011-08-10
KR20120123476A (ko) 2012-11-08
US20200387389A1 (en) 2020-12-10
US10732997B2 (en) 2020-08-04
KR101695606B1 (ko) 2017-01-11
JP5938429B2 (ja) 2016-06-22
US20110181526A1 (en) 2011-07-28
CN102135858A (zh) 2011-07-27
CN103558984A (zh) 2014-02-05
JP2014139816A (ja) 2014-07-31
AU2014213525A1 (en) 2014-09-04
US9684521B2 (en) 2017-06-20
AU2016204905A1 (en) 2016-08-04
KR20140134719A (ko) 2014-11-24
CN103558983B (zh) 2016-08-31
EP3660670B1 (en) 2023-07-05
JP5497920B2 (ja) 2014-05-21
CN103558983A (zh) 2014-02-05
CN103955341B (zh) 2018-10-30
US20170286131A1 (en) 2017-10-05
EP3660670A1 (en) 2020-06-03
CN102135858B (zh) 2014-06-11
KR101645839B1 (ko) 2016-08-04
AU2011209720A1 (en) 2012-08-23
KR20160095189A (ko) 2016-08-10
JP6201003B2 (ja) 2017-09-20

Similar Documents

Publication Publication Date Title
KR101519194B1 (ko) 제스쳐 인식을 제어하고 수정하기 위한 델리게이트를 갖는 제스쳐 인식기
JP6408085B2 (ja) イベント認識
KR101523866B1 (ko) 이벤트 인식

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
A107 Divisional application of patent
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20180417

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190417

Year of fee payment: 5