KR102033198B1 - 제스처 또는 터치를 통해 사용자 인터페이스를 제어하는 최적화 기법 - Google Patents
제스처 또는 터치를 통해 사용자 인터페이스를 제어하는 최적화 기법 Download PDFInfo
- Publication number
- KR102033198B1 KR102033198B1 KR1020147033372A KR20147033372A KR102033198B1 KR 102033198 B1 KR102033198 B1 KR 102033198B1 KR 1020147033372 A KR1020147033372 A KR 1020147033372A KR 20147033372 A KR20147033372 A KR 20147033372A KR 102033198 B1 KR102033198 B1 KR 102033198B1
- Authority
- KR
- South Korea
- Prior art keywords
- selection
- input
- event
- browser
- touch
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/14—Tree-structured documents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
- G06F3/04842—Selection of displayed objects or displayed text elements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0487—Interaction 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/0488—Interaction 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0487—Interaction 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/0488—Interaction 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/04883—Interaction 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
웹 애플리케이션은 제스처 또는 터치 스크린상에서 텍스트를 편집하기 위한 커스텀 선택을 제공한다. 이 애플리케이션은 플랫폼에 걸쳐 일관된 사용자 인터페이스 경험을 제공하기 위해 네이티브 브라우저 핸들을 선택 핸들로 교체한다. 애플리케이션은 또한 브라우저 제스처 또는 터치 이벤트의 시맨틱 해석을 위한 기법을 제공한다. 애플리케이션은 복수의 장치 및 브라우저와 호환가능한 시맨틱 이벤트들의 일관된 스트림으로 브라우저 이벤트들을 표준화한다. 애플리케이션은 또한 브라우저에 제스처 또는 터치 최적화된 사용자 인터페이스를 제공한다. 애플리케이션은 제스처 또는 터치 입력을 결정하고 입력의 유형에 따라 사용자 인터페이스를 최적화한다.
Description
제스처 또는 터치 장치상에 디스플레이되는 편집가능 텍스트는 운영 체제 유틸리티를 통해 관리된다. 이 운영 체제 유틸리티는 삽입 지점을 지정하거나 또는 드래그 핸들과 같은 콘텐츠의 선택을 행하는데 도움을 준다. 이러한 유틸리티는 브라우저 행위(browser behavior)에 따라 제한되는 사용자 관리 콘텐츠에 의존한다. 웹페이지가 풍부한 웹 애플리케이션 경험을 제공하기 위해 콘텐츠와의 사용자 상호작용에 대한 제어를 가지는 경우, 유틸리티는 오작동하거나 사용자를 방해할 수 있다.
드래그 및 클릭을 포함하는 시나리오에서, 종래의 시스템에서 브라우저는 이벤트들을 일관성없이 처리할 수 있다. 또한, 종래의 시스템은 웹 애플리케이션에 대한 새로운 입력을 복잡한 방식으로 다룰 수 있다. 종래의 시스템은 이러한 문제를, 격리된 핸들러들에 걸쳐 분산되는 클릭 및 드래그를 처리하는 로직을 통해 해결하려 한다. 종래의 시스템에 의한 다른 솔루션은 이벤트 핸들러에서 유사한 이벤트들에 대해 코드를 복제하는 것을 포함한다.
사용자는 제스처 또는 터치 모니터를 구비한 데스크탑, 슬레이트 및 랩탑을 포함하는 다양한 장치로부터 웹 애플리케이션에 액세스할 수 있다. 대부분의 장치는 마우스, 제스처, 터치 또는 그에 상응하는 입력 메카니즘을 지원한다. 마우스 기반 입력에 대해 잘 동작하는 사용자 인터페이스(UI)가 커서 및 정확한 손가락 입력이 없는 제스처 또는 터치 입력에 대해서도 반드시 잘 동작하는 것은 아니다.
본 요약은 이하 발명의 상세한 설명에서 보다 자세히 기술될 선택된 개념들을 단순화된 형식으로 소개하기 위해 제공되는 것이다. 본 요약은 청구대상의 주된 사항 또는 핵심 사항을 밝히기 위한 것이 아니며, 청구대상의 범위를 결정하는데 도움을 주려는 것도 아니다.
본 발명의 실시예들은 삽입 지점 아래에 그리고 범위 선택(range selection)의 끝에서 선택 핸들(selection handles)을 생성함으로써 소정의 선택을 다루기 위한 사용자 인터페이스를 제공하는 것에 관한 것이다. 이 선택 핸들은 브라우저 핸들을 대체할 수 있다. 선택 핸들은 제스처 또는 터치 기반 환경에서 애플리케이션 또는 운영 체제 선택 행위를 복제할 수 있다. 선택 핸들은 제스처 또는 터치 가능 및 브라우저에 걸쳐 선택 일관성을 제공할 수 있다. 선택 핸들은 콘텐츠를 소비하는 대신 콘텐츠를 편집하는 데 보다 적합한 선택 행위를 실시할 수 있다.
다른 실시예들은 브라우저 제스처 또는 터치 이벤트의 시맨틱 해석을 위한 기법을 제공하는 것에 관한 것이다. 애플리케이션의 추상화 계층(abstraction layer)은 다른 애플리케이션과 브라우저 사이의 인터페이스로서 역할을 할 수 있다. 터치 또는 제스처 가능 장치에서 검출된 브라우저 이벤트는 비-결정적일 수 있고 장치 및 브라우저에 따라 달라질 수 있다. 실시예에 따라 애플리케이션을 실행하는 시스템은 브라우저 이벤트를 수신할 수 있고, 장치 및 브라우저에 걸쳐 일관성을 제공하면서 브라우저 이벤트들을 시맨틱 이벤트들(클릭, 컨텍스트 메뉴, 드래그 등)의 일관된 스트림으로 표준화할 수 있다.
또 다른 실시예는 제스처 또는 터치 최적화된 사용자 인터페이스를 브라우저에 제공하는 것에 관한 것이다. 실시예에 따라 애플리케이션을 실행하는 시스템에서, 사용자 인터페이스는 사용자 액션에 응답하여 출현할 수 있다. 사용자 인터페이스는 터치 및 마우스와 같은 검출된 입력의 유형에 부합하도록 최적화될 수 있다. 이와 달리, 사용자 인터페이스의 특정 부분의 행위는 입력의 유형에 기초하여 변경될 수 있다. 또한, 초기화 동안 제공된 기본적인 사용자 인터페이스는 제시된 선택 기준에 따라 사용자에 의해 변경가능할 수 있다.
이들 및 다른 특징 및 장점은 후속하는 상세한 설명을 읽고 연관된 도면을 검토함으로써 분명해질 것이다. 전술한 일반적인 설명 및 후속하는 상세한 설명은 예시일 뿐이며 청구된 측면을 제한하지 않는다는 것을 이해해야 한다.
도 1은 실시예들이 구현될 수 있는 예시적인 네트워크 다이아그램을 나타낸다.
도 2는 실시예에 따라 예시적인 디폴트 및 커스텀 선택 행위 흐름을 나타낸다.
도 3은 실시예에 따라 브라우저와 애플리케이션 사이에서 이벤트들을 관리하는 예시적인 추상화 계층을 나타낸다.
도 4는 실시예에 따라 사용자 인터페이스의 최적화를 보여주는 흐름도이다.
도 5는 실시예에 따라 입력의 유형에 기초하여 테이블 제어를 위해 최적화된 사용자 인터페이스의 예를 나타낸다.
도 6은 실시예에 따라 검출된 입력의 유형에 기초하여 컬러 및 폰트 제어를 위해 최적화된 사용자 인터페이스들의 예를 나타낸다.
도 7은 실시예에 따라 검출된 입력의 유형에 기초하여 스타일 및 검색 제어 및 최적화된 사용자 인터페이스를 가능하게 하도록 제시된 선택 제어를 위해 최적화된 사용자 인터페이스들의 예를 나타낸다.
도 8은 실시예에 다른 시스템이 구현될 수 있는 네트워크 환경이다.
도 9는 실시예들이 구현될 수 있는 예시적인 컴퓨팅 동작 환경의 블록도이다.
도 10a는 삽입 지점 아래에 또한 범위 선택의 끝에서 선택 핸들을 제공하는 프로세스의 논리적 흐름도이다.
도 10b는 브라우저 제스처 또는 터치 이벤트의 시맨틱 해석을 위한 기법을 제공하는 프로세스의 논리적 흐름도이다.
도 10c는 제스처 또는 터치 최적화된 사용자 인터페이스를 브라우저에 제공하는 프로세스의 논리적 흐름도이다.
도 2는 실시예에 따라 예시적인 디폴트 및 커스텀 선택 행위 흐름을 나타낸다.
도 3은 실시예에 따라 브라우저와 애플리케이션 사이에서 이벤트들을 관리하는 예시적인 추상화 계층을 나타낸다.
도 4는 실시예에 따라 사용자 인터페이스의 최적화를 보여주는 흐름도이다.
도 5는 실시예에 따라 입력의 유형에 기초하여 테이블 제어를 위해 최적화된 사용자 인터페이스의 예를 나타낸다.
도 6은 실시예에 따라 검출된 입력의 유형에 기초하여 컬러 및 폰트 제어를 위해 최적화된 사용자 인터페이스들의 예를 나타낸다.
도 7은 실시예에 따라 검출된 입력의 유형에 기초하여 스타일 및 검색 제어 및 최적화된 사용자 인터페이스를 가능하게 하도록 제시된 선택 제어를 위해 최적화된 사용자 인터페이스들의 예를 나타낸다.
도 8은 실시예에 다른 시스템이 구현될 수 있는 네트워크 환경이다.
도 9는 실시예들이 구현될 수 있는 예시적인 컴퓨팅 동작 환경의 블록도이다.
도 10a는 삽입 지점 아래에 또한 범위 선택의 끝에서 선택 핸들을 제공하는 프로세스의 논리적 흐름도이다.
도 10b는 브라우저 제스처 또는 터치 이벤트의 시맨틱 해석을 위한 기법을 제공하는 프로세스의 논리적 흐름도이다.
도 10c는 제스처 또는 터치 최적화된 사용자 인터페이스를 브라우저에 제공하는 프로세스의 논리적 흐름도이다.
앞서 간략히 설명한 바와 같이, 삽입 지점 아래에 그리고 범위 선택의 끝에서 선택 핸들을 생성함으로써 소정의 선택을 다루기 위한 사용자 인터페이스가 제공될 수 있다. 브라우저 제스처 또는 터치 이벤트의 시맨틱 해석을 위한 기법도 제공될 수 있다. 또한, 브라우저를 위한 제스처 또는 터치 최적화된 사용자 인터페이스가 제공될 수 있다.
후속하는 상세한 설명에서, 본 명세서의 일부를 형성하고 특정 실시예 또는 예시가 예시적으로 도시되어 있는 첨부한 도면을 참조한다. 이들 양상은 결합될 수 있고, 다른 양상들이 이용될 수 있으며, 또한 본 발명의 사상 또는 범주를 벗어나지 않으면서 구조적 변경이 행해질 수 있다. 따라서, 후속하는 상세한 설명은 제한적인 의미로 받아들여져서는 안되고, 본 발명의 범주는 첨부한 청구항 및 이들의 등가물에 의해 정의된다.
실시예들은 컴퓨팅 장치의 운영 체제상에서 실행되는 애플리케이션 프로그램과 연계되어 실행되는 프로그램 모듈에 대한 일반적으로 문맥으로 설명될 것이지만, 당업자라면, 양상들은 또한 다른 프로그램 모듈과 결합하여 구현될 수 있다는 것을 알 것이다.
일반적으로, 프로그램 모듈은 특정 작업을 수행하거나 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 컴포넌트, 데이터 구조 및 그 밖의 다른 유형의 구조를 포함한다. 또한, 당업자라면, 실시예들은 핸드 헬드 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 또는 프로그램가능 소비자 전자기기, 미니컴퓨터, 메인프레임 컴퓨터 및 그에 상응하는 컴퓨팅 장치를 포함하는 그 밖의 다른 컴퓨터 시스템 구성으로 구현될 수 있음을 알 것이다. 실시예들은 또한 작업들이 통신 네트워크를 통해 링크되는 원격 처리 장치에 의해 수행되는 분산형 컴퓨팅 환경에서 실시될 수 있다. 분산형 컴퓨팅 환경에서, 프로그램 모듈들은 로컬 및 원격 메모리 저장 장치 모두에 위치할 수 있다.
실시예들은 컴퓨터 구현 프로세스(방법), 컴퓨팅 시스템, 또는 컴퓨터 프로그램 제품 또는 컴퓨터 판독가능 매체와 같은 제조 물품으로서 구현될 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 시스템에 의해 판독가능하고 컴퓨터 또는 컴퓨팅 시스템으로 하여금 예시적인 프로세스(들)를 수행하게 하는 명령어들을 포함하는 컴퓨터 프로그램을 인코딩하는 컴퓨터 저장 매체일 수 있다. 컴퓨터 판독가능 저장 매체는 컴퓨터 판독가능 메모리 장치이다. 컴퓨터 판독가능 저장 매체는 예를 들어 휘발성 컴퓨터 메모리, 비휘발성 메모리, 하드 드라이브, 플래시 드라이브, 플로피 디스크 또는 컴팩트 디스크 및 이에 상응하는 매체 중 하나 이상을 통해 구현될 수 있다.
명세서 전반에 걸쳐, "플랫폼"이라는 용어는 제스처 또는 터치 스크린 상의 콘텐츠를 편집하기 위해 커스텀 선택, 브라우저 제스처 또는 터치 이벤트의 시맨틱 해석을 위한 기법, 및 브라우저의 제스처 또는 터치 최적화된 사용자 인터페이스를 제공하는 소프트웨어 및 하드웨어 컴포넌트의 조합일 수 있다. 플랫폼의 예는 복수의 서버를 통해 실행되는 호스트형 서비스(hosted service), 단일 컴퓨팅 장치 상에서 실행되는 애플리케이션 및 이에 상응하는 시스템을 포함하나 이들에 국한되지는 않는다. "서버"라는 용어는 일반적으로 네트워크 환경에서 통상 하나 이상의 소프트웨어 프로그램을 실행하는 컴퓨팅 장치를 지칭한다. 그러나, 서버는 네트워크 상에서 서버로서 관측되는 하나 이상의 컴퓨팅 장치상에서 실행되는 가상 서버(소프트웨어 프로그램)로서 구현될 수도 있다. 이들 기술에 대한 보다 자세한 사항 및 예시적인 동작은 이하에서 제공된다.
이제 도 1을 참조하면, 다이아그램(100)은 실시예들이 구현될 수 있는 예시적인 네트워크 다이아그램을 도시한다. 다이아그램(100)에 도시되어 있는 컴포넌트들 및 환경들은 예시 목적으로 도시되어 있다. 실시예들은 여러 컴퓨팅 장치 및 시스템, 하드웨어 및 소프트웨어를 이용하는 다양한 로컬, 네트워크, 클라우드 기반 및 유사한 컴퓨팅 환경에서 구현될 수 있다.
다이아그램(100)에 도시되어 있는 예시적인 환경에서, 터치 스크린상에서 콘텐츠를 편집하기 위한 커스텀 선택은 정적 컴퓨팅 장치(데스크탑 또는 랩탑 컴퓨터) 또는 핸드헬드 컴퓨터, 태블릿(106), 스마트폰(108), 차량 장착 컴퓨터 등과 같은 이동 장치와 같은 터치 및/또는 제스처 기반 입력 메카니즘을 갖는 클라이언트 장치상의 로컬로 설치된 애플리케이션 또는 웹 애플리케이션에 의해 제공될 수 있다. 콘텐츠는 텍스트, 테이블, 이미지 등일 수 있고, 실시예에 따른 기술들을 사용하여 생성 또는 편집될 수 있다.
웹 애플리케이션의 경우, 서버(102)는 서비스(예를 들어, 스프레드시트 서비스, 워드 프로세싱 서비스, 이메일 서비스, 또는 그와 유사한 서비스들)를 제공할 수 있고 서비스는 웹 애플리케이션을 통해 하나 이상의 네트워크(104)를 거쳐 액세스될 수 있다. 일반적으로, 특정 서비스는 스프레드시트, 워드 프로세싱 문서, 프리젠테이션, 이메일, 그래픽 문서 및 이들에 상응하는 것들과 같은 다양한 종류의 문서를 보고 편집하기 위한 사용자 인터페이스를 디스플레이할 수 있는 클라이언트 장치(106,108)에 의해 액세스될 수 있다.
실시예에 따른 애플리케이션은 클라이언트 장치(106,108) 상에서 검출되는 제스처, 터치 및 마우스 이벤트를 인터셉트할 수 있다. 애플리케이션은 제스처 및 터치 이벤트가 브라우저 또는 장치 의존 선택 핸들을 활성화하는 것을 막을 수 있다. 대신, 애플리케이션은 플랫폼에 걸쳐 콘텐츠 선택에 대한 일관된 경험을 제공하기 위해 입력 최적화된 선택 핸들을 개시할 수 있다.
도 2는 실시예에 따른 예시적인 디폴트 및 커스텀 선택 행위 흐름을 나타낸다. 다이아그램(200)에서, 웹 애플리케이션과 같은 애플리케이션은 브라우저의 선택 행위 및 운영 체제(OS) 선택 핸들을 야기하는 이벤트를 인터셉트할 수 있다. 애플리케이션은 브라우저 이벤트들을 취소시킬 수 있는데, 이는 OS가 이들 이벤트를 보고 이들 이벤트에 기초하여 액션을 취하는 것을 방지할 수 있다. 애플리케이션은 브라우저 및/또는 OS 이벤트에 대응하는 선택을 판정할 수 있다. 애플리케이션은 선택에 대응하는 선택 핸들을 디스플레이할 수 있다. 애플리케이션은 범위 선택의 종료 위치를 찾을 수 있고 이 종료 위치에 따라 대응하는 선택 핸들을 렌더링할 수 있다.
디폴트 선택 행위(202)에서, 검출된 제스처 또는 터치 이벤트와 같은 브라우저 이벤트(204)는 애플리케이션, 예를 들어 브라우저 내에서 텍스트와 같은 콘텐츠의 선택을 개시할 수 있다. 검출된 브라우저 이벤트는 운영 체제와 함께 선택을 다루기 위한 브라우저 액션을 개시할 수 있다(206). 운영 체제는 선택 유틸리티를 초기화할 수 있다.
커스텀 선택 행위(208)에서, 웹 애플리케이션은 브라우저 이벤트들을 인터셉트하고 이 이벤트들을 선택 유틸리티들로 대체하는 사용자 인터페이스를 제공할 수 있다. 또한, 애플리케이션은 또한 제스처 또는 터치 이벤트와 같은 브라우저 이벤트(210)를 검출할 수 있다. 애플리케이션은 또한 브라우저 이벤트를 인터셉트하고 이벤트(212)를 취소할 수 있다. 또한, 애플리케이션은 또한 브라우저(214)에 의해 제공된 선택 유틸리티를 사용하여 선택을 행할 수 있다.
실시예에 따른 애플리케이션은 텍스트의 범위의 선택을 검출할 수 있다. 이 선택은 제스처 또는 터치 입력, 마우스 입력, 키보드 입력 등을 통해 이루어질 수 있다. 또한, 애플리케이션은 검출된 선택의 삽입 지점 아래에 선택 핸들을 생성할 수 있다. 다음으로, 애플리케이션은 네이티브 브라우저 핸들(native browser handles)을 입력 최적화된 선택 핸들로 대체할 수 있다.
또한, 애플리케이션은 선택을 관리하기 위한 사용자 인터페이스를 제공하기 위해 선택의 종료시 두 개의 추가 선택 핸들을 생성할 수 있다. 사용자 인터페이스는 선택을 행하는 사용자가 선택을 확장 또는 축소시킬 수 있게 해줄 수 있다. 애플리케이션은 또한 네이티브 브라우저 핸들의 선택의 행위를 에뮬레이트할 수 있다. 애플리케이션은 검출된 입력의 유형에 따라 기본적인 브라우저 선택 행위를 에뮬레이트할 수 있고 기본적인 행위를 재현하기 위한 적절한 핸들을 제공할 수 있다. 또한, 애플리케이션은 또 다른 선택의 행위를 제공할 수 있다. 애플리케이션은 또 다른 선택 행위와 연관된 룰을 실행할 수 있다. 일 예는 선택과 연관된 통지를 보여주는 것을 포함할 수 있다.
도 3은 실시예에 따라 브라우저와 웹 애플리케이션 간의 이벤트를 관리하는 예시적인 추상화 계층을 나타낸다. 다이아그램(300)에서, 이벤트 핸들러 관리자(EHM)(306)는 브라우저(302)로부터의 브라우저 이벤트(304)를 입력 관리자에게 전송할 수 있다. 하나 이상의 입력 관리자(308,310,312)가 있을 수 있다.
입력 관리자는 이벤트를 처리할 수 있다. 입력 관리자는 이 이벤트를 웹 애플리케이션(316)에 의해 이해가능한 시맨틱 이벤트(314)로 변환한다. 시맨틱 이벤트(314)는 이벤트 핸들러 관리자(306)에 의해 애플리케이션으로 전송될 수 있다. 예시적인 시나리오에서, 입력 관리자가 브라우저로부터 제스처 또는 터치 이벤트를 수신할 수 있는 경우, 입력 관리자는 브라우저 이벤트를 웹 애플리케이션(316)으로 전송할 수 있도록 제스처 또는 터치 클릭 이벤트로 변환할 수 있다.
실시예들에 따른 기법은 브라우저로부터 발생하는 이벤트(터치 시작, 터치 종료, 터치 이동 등)에 대한 등록 이벤트 핸들러(register event handlers)를 포함할 수 있다. 이 등록 이벤트 핸들러는 브라우저 이벤트를 수신하는 경우 이벤트를 입력 관리자로 라우팅할 수 있다. 입력 관리자는 애플리케이션에 의해 이해가능한 시맨틱 이벤트(예를 들어, "클릭")에 관한 지식을 가지고 있을 수 있다. 입력 관리자는 또한 시맨틱 이벤트를 구성하는 일련의 브라우저 이벤트(예를 들어, 터치 시작 및 이에 후속하는 터치 종료는 클릭 이벤트를 구성함)에 관한 정보를 계속 가지고 있을 수 있다. 입력 관리자는 브라우저 이벤트들을 수신할 수 있고 시맨틱 이벤트에 대한 이들의 내부 지식을 이용하여 시맨틱 이벤트의 발생을 애플리케이션에 알릴지 여부를 결정할 수 있다.
입력 관리자는 둘 이상의 입력 관리자가 브라우저 이벤트를 처리하는 경우 다른 입력 관리자와 통신하는 기능도 구비할 수 있다. 일 예는 클릭 이벤트 또는 컨텍스트 메뉴 이벤트를 개시하는 브라우저로부터의 터치 시작 이벤트를 포함할 수 있다. 그에 따라, 두 개의 상이한 입력 관리자가 브라우저 이벤트를 처리할 수 있다.
입력 관리자들은 이벤트의 문서 객체 모델(DOM) 요소에 정보의 캐시를 첨부함으로써 통신할 수 있다. 각 입력 관리자는 이벤트를 수신하는 경우 DOM 요소를 처리할 수 있고 동일한 이벤트에 대한 추가 처리를 결정하기 위해 다른 입력 관리자에게 질의할 수 있다.
이벤트 핸들러 관리자는 또한 이벤트를 입력 관리자로 라우팅하는 순서를 결정할 수 있다. 이벤트 핸들러 관리자는 우선순위 큐에 입력 관리자들을 저장함으로써 이벤트들의 라우팅의 순서를 정할 수 있다. 예시적인 시나리오에서, 우선순위가 1인 입력 관리자는 우선순위가 2인 입력 관리자 이전에 이벤트를 수신할 수 있다. 동일한 우선순위를 갖는 입력 관리자들은 무작위 순서로 이벤트를 수신할 수 있다. 또한, 입력 관리자는 클릭과 같은 시맨틱 이벤트의 발생을 확인한 경우 애플리케이션에 통지할 수 있다. 입력 관리자는 연관된 시맨틱 이벤트에 귀를 기울이는 것을 중단할 것을 다른 입력 관리자에게 통지할 수 있다.
실시예에 따른 애플리케이션에서, 이벤트 핸들러 관리자 코드는 입력 관리자로부터 브라우저 이벤트들을 수신하는 코드의 일부분, 브라우저 이벤트에 대해 동작하는 또 다른 부분, 및 브라우저 이벤트를 변환하는 또 다른 부분을 분리하는 대신, 하나의 큰 컴포넌트를 포함할 수 있다. 또한, 입력 관리자는 각 입력 관리자에 의해 처리되는 이벤트들과 연관된 DOM 요소에 정보의 캐시를 첨부하는 대신 서로에 대한 참조를 유지함으로써 서로 통신할 수 있다.
예시적인 실시예에 따르면, 드래그 이벤트들을 처리하는 입력 관리자는 마우스 및 제스처 또는 터치 이벤트를 받아드리고 이들을 애플리케이션에 의해 이해가능한 드래그 이벤트로 정규화한다. 예를 들어, 드래그 입력 관리자(DIM)는 키보드 이벤트를 처리하는 입력 관리자 및 컨텍스트 메뉴 이벤트를 처리하는 입력 관리자에 의해 이미 사용된 이벤트 핸들러 관리자를 사용함으로써 드래그 이벤트를 관리할 수 있다. EHM은 DOM에서 브라우저에 대한 이벤트 핸들러 프록시의 등록을 추적, 즉 애플리케이션의 나머지 부분이 DOM에 대해 등록하는 이벤트 핸들러를 추적할 수 있다. 또한, EHM을 사용하는 입력 관리자는 브라우저 이벤트를 수신할 수 있고, 이들을 애플리케이션에 의해 이해가능한 시맨틱 이벤트로 정규화할 수 있다. 입력 관리자는 정규화된 시맨틱 이벤트를 EHM으로 다시 전달할 수 있고, 이 EHM은 애플리케이션 내의 적절한 리스너(listener)에게 통지할 수 있다.
DIM은 마우스 다운, 마우스 업, 마우스 이동, 클릭, 터치 다운, 터치 업, 터치 이동 및 터치 취소를 포함하는 다수의 브라우저 이벤트를 EHM을 통해 등록할 수 있다. DIM은 드래그 이벤트를 결정하기 위해 마우스 다운 또는 터치 다운 이벤트에 귀를 기울인다. DIM은 마우스 이동 또는 터치 이동 이벤트를 수신하는 동안 이동 델타값을 드래그 임계값과 비교할 수 있다. 마우스 이동 또는 터치 이동 이벤트가 최초의 값으로부터 충분히 멀리 이동한 경우, DIM은 드래그 이벤트를 드래그 어댑터에 전송함으로써 드래그 이벤트를 트리거할 수 있다. 드래그 어댑터는 특정 DOM 요소에 첨부된 WAC(web application companions)에 존재하는 코드일 수 있다. DIM은 또한 마우스 이벤트 인수(mouse event argument) 또는 제스처 혹은 터치 이벤트 인수를 드래그 어댑터로 전송하여 이 어댑터가 마우스 드래그와 터치 드래그 간을 구별할 수 있게 해준다.
특정 이벤트에 대해 EHM에 등록된 입력 관리자는 우선순위 큐에 놓여질 수 있다. 브라우저 이벤트는 EHM이 브라우저 이벤트를 캐치하는 경우 입력 관리자들에게 우선순위 대로 통지할 수 있다. 그에 따라, DIM은 마우스, 제스처, 터치 또는 유사한 이벤트를 수신하여 드래그가 일어나는지를 결정하고 그와 동시에 DIM에 의해 드래그 이벤트로 해석되는 이벤트들을 추가 처리를 위해 마우스 입력 관리자(MIM) 또는 터치 입력 관리자(TIM)에 전송할 수 있다.
DIM은 EHM에서 MIM 및 TIM보다 높은 우선순위로 등록될 수 있다. DIM이 DIM에 의해 드래그 이벤트로서 해석되는 이벤트를 처리하기 시작하는 경우 DIM은 이 이벤트를 취소하여 MIM 또는 TIM이 처리하는 것을 방지할 수 있다. 예시적인 시나리오에서, DIM의 방지는 컨텍스트 메뉴가 터치 드래그 동안 런칭되지 않게 할 수 있다.
몇몇 예에서, 드래깅에 특정된 소스 코드는 MIM로부터 제거될 수 있고 DIM에 배치될 수 있다. MIM은 EHM을 통해 전송할 수 있다. EHM은 EHM 기능을 복제하는 MIM 소스 코드를 제거할 수 있다. MIM은 드래깅과 관련없는 마우스 이벤트를 수신 및 정규화하도록 최적화된 소스 코드일 수 있다.
TIM은 드래깅과 관련없는 제스처 또는 터치 이벤트를 수신하고 이 이벤트를 애플리케이션에 의해 사용되도록 정규화할 수 있다. TIM은 또한 브라우저 프록시 핸들러 및 애플리케이션 핸들러 관리를 위해 EHM을 이용할 수도 있다. TIM은 터치 다운, 터치 업, 터치 이동 및 클릭과 같은 브라우저 이벤트에 대해 EHM에 등록할 수 있다. TIM은 탭 이벤트, 터치 및 홀드 이벤트를 수신하고, 이들 이벤트를 WAC가 이해할 수 있는 이벤트로 정규화할 수 있다. TIM은 탭 이벤트를 클릭 이벤트로 정규화할 수 있다. TIM은 사용자가 모바일 브라우저를 탭핑하는 경우 터치 다운, 터치 업 및 클릭과 같은 이벤트를 수신할 수 있다.
클릭 이벤트를 검출하는 경우, TIM은 제스처 또는 터치 이벤트 인수(argument) 객체를 클릭 이벤트에 첨부한 이후 이 클릭 이벤트를 애플리케이션에 전송할 수 있다. TIM은 클릭 이벤트가 마우스 이벤트 대신에 제스처 또는 터치 이벤트로부터 비롯되었음을 애플리케이션에 알려주기 위해 제스처 또는 터치 이벤트를 첨부할 수 있다. 모바일 브라우저는 일반적으로 터치 다운 또는 터치 업 이벤트가 브라우저에 의해 검출되고 클릭 이벤트로서 해석된 후 클릭 이벤트를 생성할 수 있다. 예시적인 시나리오에서, 사용자가 탭 대신 플릭(flick) 또는 드래그를 시도하였음을 브라우저가 확인한 경우 클릭 이벤트는 검출되지 않을 수 있다. DIM은 드래그 이벤트 직후 발생하는 임의의 클릭 이벤트를 필터링할 수 있다. TIM은 연속적으로 빠른 두 번의 탭핑을 더블 클릭 이벤트로 정규화할 수 있다. 브라우저 내에서 연속적으로 빠르게 두 번 탭핑하는 사용자는 또한 터치 다운, 터치 업 및 클릭과 같은 이벤트를 발생시킬 수 있다.
TIM은 또한 클릭 이벤트를 애플리케이션으로 전송할 수 있고 두 번째 탭핑에 대해 귀를 기울이기 시작할 수 있다. TIM이 (사용자 또는 시스템이 시간 값을 규정할 수 있는) 사전결정된 기간 내에서 두 번째 클릭 이벤트를 수신할 수 있는 경우, TIM은 두 번째 클릭 이벤트를 애플리케이션으로 전송할 수 있고 그에 후속하여 애플리케이션으로의 더블 클릭 이벤트 전송이 이루어진다. 클릭 및 더블 클릭 모두는 애플리케이션에 의해 처리될 수 있다. 더블 탭핑에 의해 개시되는 더블 클릭과 마찬가지로 클릭들을 처리하게 되면 애플리케이션은 더블 탭핑 및 더블 클릭에 대해 일관성있게 동작하게 될 수 있다.
TIM은 터치 및 홀드 이벤트를 컨텍스트 메뉴 이벤트로 정규화할 수 있다. TIM은 사용자가 브라우저의 스크린 상에서 터치 및 홀드할 수 있을 때 터치 다운 이벤트를 수신할 수 있다. 터치 다운 이벤트를 수신하는 경우, TIM은 사전결정된 시간 이후 컨텍스트 메뉴를 디스플레이할 수 있는 타이머를 개시할 수 있다. 사전결정된 시간의 만료 이후, TIM은 컨텍스트 메뉴 이벤트를 애플리케이션으로 전송할 수 있다. 터치 업 이벤트가 사전결정된 시간의 만료 이전에 검출되는 경우, 타이머는 취소될 수 있고 컨텍스트 메뉴는 디스플레이되지 않을 수 있다. TIM이 컨텍스트 메뉴 이벤트를 전송한 후, 사용자가 터치 및 홀드를 종료하지 않은 경우, TIM은 컨텍스트 메뉴를 디스플레이한 후 드래그 이벤트의 처리를 방지하기 위해 브라우저를 통해 터치 업 이벤트를 시뮬레이팅할 수 있다.
애플리케이션 개발자는 제스처 또는 터치 이벤트를 등록하고 그에 응답하기 위한 커스텀 컴포넌트를 제공할 수 있다. TIM은 제스처 또는 터치 이벤트를 마우스 이벤트 또는 컨텍스트 메뉴 이벤트로 정규화함으로써 동작할 수 있기 때문에, 커스텀 컴포넌트는 MIM 또는 컨텍스트 메뉴에 대한 입력 관리자에 등록 핸들러를 통해 등록할 수 있다.
EHM은 TIM이 클릭 이벤트를 정규화하고 이 클릭 이벤트를 처리할 것을 EHM에 요청하는 경우 애플리케이션에 전송할 수 있다. 애플리케이션의 핸들러 메소드(handler methods)는 이벤트를 처리하기 위한 정보와 함께 전송하는데 사용될 수 있는 이벤트 핸들러 인수 객체를 수신할 수 있다.
스크롤가능 콘텐츠는 전형적으로 인라인 프레임으로 존재할 수 있다. 애플리케이션에서의 임의의 스크롤링은 2개의 손가락에 의해 발생되는 이벤트를 포함할 수 있다. 실시예에 따르면, 이벤트 핸들러 관리자는 태블릿 및 그와 유사한 장치에 기본적인 한 손가락 스크롤링을 제공할 수 있다. 이러한 실시예는 (1) DOM 요소에 첨부된 새로운 스크롤 드래그 어댑터를 생성하고 (2) 우선순위가 "마지막"인 DOM 요소에 대한 DIM에 어댑터를 등록시키는 동작을 수행할 수 있다. DIM은 하나의 요소에 첨부된 드래그 어댑터들의 큐(queue)를 지원할 수 있다. DIM은 스크롤링 이벤트를 순서대로 처리할 수 있고 현재 드래그 어댑터가 드래그 이벤트를 처리할 수 없는 경우 이벤트를 다음 드래그 이벤트로 전송할 수 있다. 우선순위가 "마지막"이라는 것은 드래그 어댑터가 드래그 이벤트를 처리하기 전에 임의의 다른 드래그 어댑터가 처리할 기회를 가지고 있다는 것을 의미한다.
스크롤 드래그 어댑터는 드래그 어댑터 인터페이스를 구현할 수 있는 내부 클래스일 수 있다. 인터페이스는 연관된 DOM 요소에 대한 스크롤링 이벤트를 처리할 수 있다. 온 드래그 시작 메소드(on drag start method)는 현재의 위치를 기억할 수 있다. 온 드래그 이동 메소드(on drag move method)는 새로운 위치와 이전 위치 간의 차이를 계산할 수 있다. 온 드래그 이동 메소드는 그 차이에 부합하도록 DOM 요소의 상단으로의 스크롤(scroll top) 및 좌측으로의 스크롤(scroll left)를 설정할 수 있다. 각 처리된 드래그 이동 이벤트마다 지점들 및 타임스탬프들의 리스트가 기록될 수 있다. 온 드래그 종료 메소드에서, 손가락의 가속도를 결정하고 그에 따른 페이지 애니메이션을 실행하기 위해 파라볼라 회귀분석(parabolic regression)이 계산될 수 있다.
도 4는 실시예에 따른 사용자 인터페이스의 최적화를 보여주는 흐름도를 나타낸다. 다이아그램(400)에서, 실시예에 따른 애플리케이션은 사용자 인터페이스(UI)에 의해 디스플레이되는 앵커(anchor)(402)에 대한 클릭 이벤트를 검출할 수 있다. 애플리케이션은 클릭 이벤트의 제스처 또는 터치 입력(404)에 대한 결정을 행할 수 있다. 애플리케이션이 터치 입력을 결정한 경우, 애플리케이션은 제스처 또는 터치에 최적화된 UI를 디스플레이할 수 있다(406). 애플리케이션이 입력의 유형을 제스처 또는 터치로 결정하지 않은 경우, 애플리케이션은 마우스 입력(408)에 대한 결정을 행할 수 있다. 애플리케이션이 입력의 유형이 마우스에 기반을 두고 있는 것으로 결정한 경우, 애플리케이션은 마우스 입력에 최적화된 UI를 디스플레이할 수 있다(410). 그렇지 않은 경우, 애플리케이션은 이전 상태 또는 정적 상태의 UI를 보여줄 수 있다(412).
애플리케이션은 동적 UI를 인스턴스화하는 앵커 요소를 개시할 수 있다. 예시적인 시나리오에서, 버튼 제어가 새로운 창을 개시할 수 있다. 또 다른 예시적인 시나리오에서, 편집가능한 표면 제어가 캐럿(caret)을 개시할 수 있다.
애플리케이션이 제스처 또는 터치 입력을 검출한 경우 UI는 제스처 또는 터치 기반 제어에 최적화될 수 있다. 예시적인 시나리오에서, 검출된 제스처 또는 터치 입력에 대해 UI에 의해 큰 UI 제어가 사용될 수 있다. 애플리케이션이 마우스 입력을 검출한 경우 UI는 마우스 기반 제어에 최적화될 수 있다. 예시적인 시나리오에서, UI는 UI 내에서 호버(hover)와 같은 마우스 제어 중심의 특징(mouse control centric features)을 가능하게 할 수 있다.
컨텍스트 메뉴 제어도 이와 유사하게 UI에 대한 입력의 유형에 따라 최적화될 수 있다. 마우스 이벤트에 의해 개시되는 컨텍스트 메뉴를 애플리케이션이 검출한 경우, 마우스 제어 최적화된 컨텍스트 메뉴가 UI 내에서 개시될 수 있다. 이와 달리, 컨텍스트 메뉴를 개시하는 제스처 또는 터치 이벤트가 검출된 것에 응답하여 제스처 또는 터치 제어 최적화된 컨텍스트 메뉴가 UI 내에서 개시될 수 있다.
애플리케이션은 클릭(또는 컨텍스트 메뉴) 이벤트를 등록하고, 클릭 이벤트를 검출하며, 입력의 유형에 대해 클릭 이벤트를 평가함으로써 앵커에 대해 사용된 입력의 유형을 결정할 수 있다. 브라우저가 입력의 유형을 제공하지 않는 경우, 입력의 유형은 입력 관리자 애플리케이션 프로그래밍 인터페이스(API)를 사용하여 획득될 수 있다. 입력 관리자 API의 클릭 입력 관리자(CIM) 컴포넌트는 클릭 이벤트에 대해 통지할 수 있고 클릭 이벤트의 입력의 유형을 전송할 수 있다. CIM은 입력의 유형을 결정하기 위해 다수의 이벤트에 귀를 기울일 수 있다. CIM은 온 클릭 이벤트, 및 다른 브라우저 특정 제스처 또는 터치 이벤트에 귀를 기울일 수 있다. 클릭 바로 이전에 (예를 들어, 300ms 미만으로) 터치 시작 이벤트가 발생한 경우, 애플리케이션은 클릭 이벤트가 제스처 또는 터치 입력의 결과인 것으로 결론을 내릴 수 있다. 이와 달리, 입력 관리자가 임의의 터치 이동 이벤트 없이 터치 종료 이벤트가 뒤따르는 터치 시작 이벤트를 수신할 때마다 입력 관리자는 즉각 클릭 이벤트를 개시할 것을 결정할 수 있고 제스처 또는 터치 입력을 결정할 수 있다. 클릭 이벤트 바로 직전에 제스처 또는 터치 입력을 갖는 포인터 이벤트가 발생한 경우, 애플리케이션은 제스처 또는 터치 입력으로부터 비롯되는 클릭 이벤트를 결정할 수 있다. 포인터 이벤트는 제스처 또는 터치 이벤트가 아닐 수 있다. 브라우저에 의해 구현되는 커스텀 포인터 이벤트는 제스처 또는 터치, 펜 및 마우스 입력을 포함하나 이에 국한되지 않는 브라우저에 의해 지원되는 모든 유형의 입력에 대해 개시될 수 있다. 브라우저는 커스텀 포인터를 통해 검출된 이벤트에 대한 입력의 유형을 전송할 수 있다. 이와 달리, 애플리케이션은 제스처 이벤트에 귀를 기울일 수 있고 제스처 이벤트에 대해 브라우저에 의해 제공된 정보를 사용하여 입력의 유형을 결정할 수 있다.
UI는 처음에는 마우스 입력에 최적화될 수 있다. 이후, 애플리케이션은 제스처 또는 터치 입력에 대한 크기 및 이격 파라미터를 구현하는 CSS(cascading style sheets)를 적용함으로써 제스처 또는 터치 입력 커스터마이제이션을 구현할 수 있다. CSS 클래스는 브라우저의 DOM 또는 UI 요소의 해당 부분에서 제스처 또는 터치 특정 스타일링을 활성화하는 상위 CSS 레벨에 추가될 수 있다. 이와 달리, 제스처 또는 터치 입력을 통해 앵커가 개시되는 경우 동적 UI 상에 완전히 다른 DOM 요소가 생성될 수 있다. 애플리케이션은 또한 키보드 기반 입력에 최적화된 UI를 개시할 수 있다. 또한, 애플리케이션은 펜 기반 입력에 최적화된 동적 UI를 개시할 수 있다.
UI의 행위는 검출된 입력의 유형에 기초하여 변경될 수 있다. 애플리케이션은 UI의 컴포넌트에 대해 검출된 클릭 이벤트에 따라 UI의 행위를 변경할 수 있다. 이와 달리, 애플리케이션은 손가락 탭핑에 의해 개시된 검출된 제스처 또는 터치 이벤트에 따라 UI의 행위를 변경할 수 있다. 예시적인 시나리오에서, UI는 분할 버튼 제어(split button control)를 디스플레이할 수 있다. UI는 사용자가 분할 버튼 제어의 유형을 변경할 수 있도록 해주는 드롭 다운 메뉴를 디스플레이할 수 있다. 애플리케이션은 사용자가 마우스로 버튼 제어를 클릭하는 경우 버튼 제어와 연관된 액션을 실행할 수 있다. 이와 달리, UI는 사용자 버튼 제어를 탭핑하는 경우 메뉴를 디스플레이할 수 있다. 입력 관리자는 분할 버튼 제어에 대한 사용자 동작에 따라 입력의 유형을 결정할 수 있다.
애플리케이션은 정적 또는 부팅 시간 UI를 최적화하기 위해 사용자 에이전트 스트링 및 브라우저 특정 API를 사용할 수 있다. 애플리케이션은 브라우저의 마우스, 제스처 또는 터치, 또는 결합 입력 능력을 결정하기 위해 브라우저에 대한 정보를 이용할 수 있다. 정적 UI는 마우스 입력 전용 능력을 가지는 브라우저를 검출하는 경우 마우스 입력에 최적화될 수 있다. 정적 UI의 최적화는 또한 제스처 또는 터치 입력 또는 결합 입력 시나리오에 따라서도 맞춤화될 수 있다. 또한, 버튼 제어는 제스처 또는 터치 입력과 마우스 입력 모두가 브라우저의 능력으로서 검출되는 경우 이들 입력 사이에서 정적 UI를 전환하기 위해 제공될 수 있다. 버튼 제어는 사용자 세션들 사이에서의 그의 상태를 브라우저 쿠키에서 계속 유지할 수 있다.
도 5는 실시예에 따른 입력의 유형에 기초한 테이블 제어를 위한 최적화된 사용자 인터페이스의 예를 나타낸다. 다이아그램(500)은 마우스 입력(502) 및 제스처 또는 터치 입력(512)에 따라 최적화된 예시적인 테이블 제어를 디스플레이한다.
UI를 관리하는 애플리케이션은 UI 상에서의 사용자 액션의 입력의 유형을 검출할 수 있다. 검출된 사용자 액션은 제스처 또는 터치 입력 또는 마우스 기반 입력일 수 있다. UI는 마우스 입력에 대한 테이블 제어(502)를 디스플레이하도록 최적화될 수 있다. UI는 표준 크기의 테이블 제어(504) 및 표준 크기의 테이블 크기 선택 제어(506)를 디스플레이할 수 있다. 표준 크기는 애플리케이션의 개발 동안 결정된 UI의 각 컴포넌트에 대한 시스템 설정값일 수 있다. UI는 사용자가 다른 유형의 입력과 비교했을 때 더 정확하게 마우스 포인터를 이동시킬 수 있기 때문에 표준 크기 제어를 디스플레이할 수 있다.
이와 달리, UI는 검출된 제스처 또는 터치 입력에 대해 최적화된 테이블 제어(512)를 디스플레이할 수 있다. UI는 큰 크기의 테이블 제어(514) 및 큰 크기의 테이블 크기 선택 제어(516)를 디스플레이할 수 있다. 큰 크기는 디스플레이 특성에 따라 결정된 각 UI 컴포넌트에 대한 시스템 설정값일 수 있다. UI는 사용자가 제스처 또는 터치 입력을 통해서는 UI 상에 정교한 제어를 제공하는 능력이 부족할 수 있기 때문에 큰 크기 제어를 디스플레이할 수 있다.
도 6은 실시예에 따라 검출된 입력의 유형에 기초하여 컬러 및 폰트 제어를 위해 최적화된 사용자 인터페이스를 예를 나타낸다. 다이아그램(600)은 검출된 입력의 유형에 따라 최적화된 예시적인 컬러 및 폰트 제어를 디스플레이한다.
UI를 관리하는 애플리케이션은 UI 상의 사용자 액션의 입력의 유형을 마우스 또는 제스처 또는 터치 기반의 입력의 유형으로 검출할 수 있다. 애플리케이션이 마우스 입력의 유형을 검출하는 경우, UI는 대응하는 사용자 액션과 연관된 마우스 입력 유형의 최적화된 컬러 제어(602) 또는 폰트 제어(610)를 디스플레이할 수 있다. UI는 표준 크기 컬러 선택 제어(606)를 갖는 컬러 제어(602) 또는 표준 크기 폰트 선택 제어(614)를 갖는 폰트 제어(610)를 디스플레이할 수 있다. UI는 사용자가 다른 유형의 입력과 비교했을 때 더 정확하게 마우스 포인터를 이동시킬 수 있기 때문에 표준 크기 제어를 디스플레이할 수 있다.
이와 달리, 애플리케이션이 제스처 또는 터치 유형의 입력을 검출한 경우, UI는 대응하는 사용자 액션과 연관된 제스처 또는 터치 입력 최적화된 컬러 제어(604) 또는 폰트 제어(612)를 디스플레이할 수 있다. UI는 큰 크기의 컬러 선택 제어(608)를 갖는 컬러 제어(604) 또는 큰 크기의 폰트 선택 제어(616)를 갖는 폰트 제어(612)를 디스플레이할 수 있다. UI는 사용자가 제스처 또는 터치 입력을 통해서는 UI 상에 정교한 제어를 제공하는 능력이 부족할 수 있기 때문에 큰 크기의 제어를 디스플레이할 수 있다.
도 7은 실시예에 따라 최적화된 사용자 인터페이스가 가능하도록 제시된 선택 제어 및 검출된 입력의 유형에 기초하는 스타일 및 검색 제어를 위해 최적화된 사용자 인터페이스의 예를 나타낸다. 다이아그램(700)은 검출된 입력의 유형에 따라 최적화된 예시적인 텍스트 스타일 및 검색 제어와, 입력의 유형을 선택하기 위한 드롭 다운 메뉴를 나타낸다.
애플리케이션은 UI 상의 사용자 액션의 입력의 유형을 마우스 입력 또는 제스처 또는 터치 입력으로서 검출할 수 있다. 애플리케이션이 마우스 입력을 검출하는 경우, UI는 대응하는 사용자 액션과 연관된 마우스 입력 최적화된 텍스트 스타일 제어(702) 또는 검색 제어(710)를 디스플레이할 수 있다. UI는 표준 텍스트 스타일 선택 제어(706)를 갖는 텍스트 스타일 제어(702) 또는 표준 크기 검색 박스 제어(714)를 갖는 검색 제어(710)를 디스플레이할 수 있다. UI는 사용자가 다른 유형의 입력과 비교했을 때 더 정확하게 마우스 포인터를 이동시킬 수 있기 때문에 표준 크기 제어를 디스플레이할 수 있다.
이와 달리, 애플리케이션이 제스처 또는 터치 입력을 검출한 경우, UI는 대응하는 사용자 액션과 연관된 제스처 또는 터치 입력 최적화된 폰트 스타일 제어(704) 또는 검색 제어(712)를 디스플레이할 수 있다. UI는 큰 크기의 폰트 스타일 선택 제어(708)를 갖는 폰트 스타일 제어(704) 또는 큰 크기의 검색 박스 제어(716)를 갖는 검색 제어(712)를 디스플레이할 수 있다. UI는 사용자가 제스처 또는 터치 입력을 통해서는 UI 상에서 정교한 제어를 제공하는 능력이 부족할 수 있기 때문에 큰 크기의 제어를 디스플레이할 수 있다.
애플리케이션은 또한 사용자가 드롭 다운 메뉴 제어를 통해 입력의 유형을 선택할 수 있게 해준다(720). 애플리케이션은 드롭다운 메뉴를 활성화하기 위해 UI 상의 임의의 지점을 손가락으로 탭핑할 것을 사용자에게 통지할 수 있다(726). UI는 또한 불릿 액션(bullet actions)을 위한 드롭 다운 메뉴의 제어 표면에서 클릭할 것을 사용자에게 알려주는 통지를 디스플레이할 수 있다(722). 이 불릿 액션은 예를 들어 입력의 유형의 행위를 관리하는, 입력의 유형과 연관된 추가의 제어를 제공할 수 있다. 또한, UI는 입력의 유형을 선택하기 위한 선택 제어를 활성화하기 위해 드롭 다운 메뉴의 화살표 제어를 클릭(724)할 것을 사용자에게 알려주는 통지를 디스플레이할 수 있다.
몇몇 실시예에 따르면, 터치 또는 제스처 가능 입력 장치 및 디스플레이 스크린은 사용자 인터페이스를 통해 문서를 보고/편집하며 사용자로부터 입력을 수신하는데 사용될 수 있다. 제스처 가능 입력 장치 및 디스플레이 스크린은 사용자에 의한 터치 입력 또는 광학적으로 캡처되는 제스처가 인식될 수 있게 해주는 임의의 기술을 이용할 수 있다. 예를 들어, 몇몇 기술은 열, 지압, 높은 캡처 속도의 카메라, 적외선 광, 광학 캡처, 동조된 전자기 유도, 초음파 수신기, 트랜듀서 마이크로폰, 레이저 거리계, 섀도우 캡처 등을 포함할 수 있으나, 이에 국한되지는 않는다. 터치 가능 또는 제스처 가능 장치의 사용자 인터페이스는 워드 프로세싱 애플리케이션, 프리젠테이션 애플리케이션, 스프레드시트 애플리케이션 및 웹 페이지 컨텐츠와 연관된 콘텐츠 및 문서와, 디스플레이된 콘텐츠와 상호작용하기 위한 액션들의 메뉴를 디스플레이할 수 있다. 사용자는 문서, 테이블, 스프레드시트, 차트, 리스트 및 임의의 콘텐츠(예를 들어, 오디오, 비디오 등)와 같은 콘텐츠를 액세스, 생성, 보기 및 편집하기 위해 제스처를 사용하여 사용자 인터페이스와 상호작용할 수 있다. 제스처 가능 입력 장치는 터치 또는 제스처 가능 컴퓨팅 장치에 고유한 기능들을 사용할 수 있지만, 통상의 마우스 및 키보드와 함께 동작할 수도 있다. 본 명세서에서 사용되는 탭핑 또는 스와이프 동작과 같은 제스처 또는 터치 입력 동작은 손가락, 펜, 마우스, 또는 이와 유사한 장치, 및 사전정의된 키보드 입력 조합, 안구 추적 및/또는 음성 명령을 통해 사용자에 의해 제공될 수 있다.
도 2 내지 도 7의 예시적인 시나리오 및 기법은 특정 컴포넌트, 데이터 유형 및 구성으로 도시되어 있다. 실시예들은 이들 예시적인 구성에 따른 시스템에 국한되지 않는다. 제스처 또는 터치 스크린상에서 콘텐츠를 편집하기 위한 커스텀 선택과, 브라우저 제스처 또는 터치 이벤트의 시맨틱 해석을 위한 기법과, 브라우저의 제스처 또는 터치 최적화된 사용자 인터페이스를 제공하는 것은 애플리케이션 및 사용자 인터페이스에서 보다 적은 또는 보다 많은 컴포넌트를 이용하는 구성으로 구현될 수 있다. 또한, 도 2 내지 도 7에 도시되어 있는 예시적인 기법 및 컴포넌트와 이들의 하위 컴포넌트들은 본 명세서에서 기술된 원리를 사용하여 다른 값으로 유사하게 구현될 수 있다.
도 8은 실시예에 따른 시스템이 구현될 수 있는 네트워크 환경이다. 호스팅되는 서비스와 같은 하나 이상의 서버(814) 또는 단일 서버(예를 들어, 웹 서버(816))에 의해 로컬 및 원격 리소스가 제공될 수 있다. 애플리케이션은 랩탑(811), 태블릿 장치(812) 또는 스마트폰(813)('클라이언트 장치')와 같은 개인 컴퓨팅 장치 상의 클라이언트 인터페이스와 네트워크(들)(810)를 통해 통신할 수 있다.
앞서 설명한 바와 같이, 제스처 또는 터치 스크린 상에서 콘텐츠를 편집하기 위한 커스텀 선택, 브라우저 제스처 또는 터치 이벤트의 시맨틱 해석을 위한 기법, 및 브라우저의 제스처 또는 터치 최적화된 사용자 인터페이스는 브라우저와 상호작용하는 웹 애플리케이션을 통해 제공될 수 있다. 앞서 설명한 바와 같이 클라이언트 장치(811-813)는 원격 서버((들)(예를 들어, 서버들(814) 중 하나)에서 실행되는 애플리케이션에의 액세스를 가능하게 할 수 있다. 서버(들)는 데이터 저장소(들)(819)로부터/로 관련 데이터를 직접 또는 데이터베이스 서버(818)를 통해 검색 또는 저장할 수 있다.
네트워크(들)(810)는 서버, 클라이언트, 인터넷 서비스 제공자 및 통신 매체의 임의의 토폴로지를 포함할 수 있다. 실시예에 따른 시스템은 정적 또는 동적 토폴로지를 가질 수 있다. 네트워크(들)(810)는 기업 네트워크와 같은 보안 네트워크, 무선 개방 네트워크와 같은 비보안 네트워크 또는 인터넷을 포함할 수 있다. 네트워크(들)(810)는 공중 교환 전화망(PSTN) 또는 셀룰러 네트워크와 같은 다른 네트워크를 통해 통신을 조정할 수 있다. 또한, 네트워크(들)(810)는 블루투쓰 또는 그와 유사한 것과 같은 단거리 무선 네트워크를 포함할 수 있다. 네트워크(들)(810)는 본 명세서에서 설명된 노드들 간의 통신을 제공할 수 있다. 예를 들어, 네트워크(들)(810)는 음성, RF, 적외선 및 다른 무선 매체와 같은 무선 매체를 포함할 수 있다.
컴퓨팅 장치, 애플리케이션, 데이터 소스 및 데이터 분배 시스템의 다수의 다른 구성이 채용되어, 제스처 또는 터치 스크린상에서 콘텐츠를 편집하기 위한 커스텀 선택, 브라우저 제스처 또는 터치 이벤트의 시맨틱 해석을 위한 기법, 및 브라우저의 제스처 또는 터치 최적화된 사용자 인터페이스를 제공할 수 있다. 또한, 도 8에서 설명된 네트워크 환경은 단지 설명을 위한 것이다. 실시예들은 예시적인 애플리케이션, 모듈 또는 프로세스에 국한되지 않는다.
도 9 및 연관된 설명은 실시예들이 구현될 수 있는 적절한 컴퓨팅 환경의 간략하고 일반적인 설명을 제공하려 한다. 도 9를 참조하면, 실시예에 따른 애플리케이션을 위한 예시적인 컴퓨팅 동작 환경, 예를 들어 컴퓨팅 장치(900)의 블록도가 도시되어 있다. 기본적인 구성으로, 컴퓨팅 장치(900)는 적어도 하나의 처리 장치(1602) 및 시스템 메모리(904)를 포함할 수 있다. 컴퓨팅 장치(900)는 또한 프로그램 실행시 협업하는 복수의 처리 장치를 포함할 수 있다. 컴퓨팅 장치의 정확한 구성 및 유형에 따라, 시스템 메모리(904)는 휘발성(예를 들어, RAM), 비휘발성(ROM, 플래시 메모리 등) 또는 이들 둘의 적절한 조합일 수 있다. 시스템 메모리(904)는 일반적으로 워싱턴 레드몬드 소재의 마이크로소프트사의 WINDOWS® 운영 체제와 같은, 플랫폼의 동작을 제어하는데 적절한 운영 체제(905)를 포함할 수 있다. 시스템 메모리(904)는 또한 프로그램 모듈(906), 애플리케이션(922) 및 사용자 인터페이스 모듈(924)과 같은 하나 이상의 소프트웨어 애플리케이션을 포함할 수 있다.
애플리케이션(922)은 실시예에 따라 제스처 또는 터치 스크린상에서 콘텐츠를 편집하기 위한 커스텀 선택, 브라우저 제스처 또는 터치 이벤트의 시맨틱 해석을 위한 기법, 및/또는 브라우저의 제스처 또는 터치 최적화된 사용자 인터페이스를 제공할 수 있다. 사용자 인터페이스 모듈(924)은 애플리케이션(922)을 도와 터치 및/또는 제스처 가능 장치와 연계하여 전술한 서비스를 제공할 수 있다. 이러한 기본적인 구성은 도 9에서 점선(908) 내의 컴포넌트들로 도시되어 있다.
컴퓨팅 장치(900)는 추가의 특징 또는 기능을 가질 수 있다. 예를 들어, 컴퓨팅 장치(900)는 또한 예를 들어 자기 디스크, 광학 디스크 또는 테이프와 같은 (이동식 및/또는 고정식의) 추가의 데이터 저장 장치를 포함할 수 있다. 이러한 추가 저장소는 도 9에서 이동식 저장소(909) 및 고정식 저장소(910)로 도시되어 있다. 컴퓨터 판독가능 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 그 밖의 데이터와 같은 정보를 저장하기 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 이동식 및 고정식 매체를 포함할 수 있다. 컴퓨터 판독가능 저장 매체는 컴퓨터 판독가능 메모리 장치이다. 시스템 메모리(904), 이동식 저장소(909) 및 고정식 저장소(910)는 모두 컴퓨터 저장 매체의 예이다. 컴퓨터 판독가능 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, DVD 또는 다른 광학 저장소, 자기 카세트, 자기 테이프, 자기 디스크 저장소 또는 다른 자기 저장 장치, 또는 원하는 정보를 저장하는데 사용될 수 있고 컴퓨팅 장치(900)에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있으나, 이에 국한되지 않는다. 임의의 이러한 컴퓨터 판독가능 저장 매체는 컴퓨팅 장치(900)의 일부일 수 있다. 컴퓨팅 장치(900)는 또한 키보드, 마우스, 펜, 음성 입력 장치, 제스처 또는 터치 입력 장치, 및 이들에 대응하는 입력 장치와 같은 입력 장치(들)(912)를 구비할 수 있다. 디스플레이, 스피커, 프린터 및 다른 유형의 출력 장치와 같은 출력 장치(들)(914)도 포함될 수 있다. 이들 장치는 당업계에 잘 알려져 있어 본 명세서에서는 더 이상 설명될 필요는 없다.
컴퓨팅 장치(900)는 또한 이 장치가 예를 들어 분산형 컴퓨팅 환경의 무선 네트워크, 위성 링크, 셀룰러 링크 및 이들에 대응하는 메카니즘을 통해 다른 장치(918)와 통신할 수 있도록 해주는 통신 연결부(916)를 포함할 수 있다. 다른 장치(918)는 통신 애플리케이션을 실행하는 컴퓨터 장치(들), 저장 서버 및 이들에 대응하는 장치를 포함할 수 있다. 통신 연결부(들)(916)는 통신 매체의 일 예이다. 통신 매체는 반송파 또는 다른 운반 메카니즘과 같은 변조 데이터 신호의 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 그 밖의 데이터를 그 내부에 포함할 수 있고, 임의의 정보 전달 매체를 포함할 수 있다. "변조된 데이터 신호"라는 용어는 신호 내에 정보를 인코딩하는 방식으로 설정된 또는 변경된 하나 이상의 특성을 갖는 신호를 나타낼 수 있다. 예를 들어, 통신 매체는 유선 네트워크 또는 직도선 접속과 같은 유선 매체, 및 음향, 무선 주파수(RF), 적외선 및 그 밖의 다른 무선 매체와 같은 무선 매체를 포함할 수 있다.
예시적인 실시예는 또한 방법을 포함한다. 이들 방법은 본 명세서에서 설명한 구조를 비롯하여, 다양한 방식으로 구현될 수 있다. 이러한 방식 중 하나는 본 명세서에 기술된 유형의 장치의 머신 동작에 의한 것이다.
또 다른 선택적인 방식은 방법의 개개의 동작들 중 하나 이상이 그 중 일부를 수행하는 하나 이상의 사람 조작자와 연계하여 수행되도록 하는 것이다. 이들 사람 조작자는 서로 같은 위치에 있을 필요는 없지만, 각 조작자는 다만 프로그램의 일부분을 수행하는 머신과는 있을 필요가 있다.
도 10a 내지 도 10c는 삽입 지점 아래에 그리고 범위 선택의 끝에서의 선택 핸들과, 브라우저 제스처 또는 터치 이벤트의 시맨틱 해석을 위한 기법과, 브라우저의 입력 최적화된 사용자 인터페이스를 제공하는 프로세스를 위한 논리적 흐름도를 나타낸다. 프로세스(1000, 1002, 1004)는 일부 예에서 웹 애플리케이션과 같은 애플리케이션에 의해 구현될 수 있다.
프로세스(1000)는 애플리케이션이 텍스트의 범위의 선택을 검출할 수 있는 동작(1010)으로 시작할 수 있다. 동작(1020)에서, 애플리케이션은 선택의 삽입 지점 아래에 선택 핸들을 생성할 수 있다. 애플리케이션은 브라우저에 의해 생성된 선택과 연관된 이벤트를 인터셉트하여 취소할 수 있다. 다음으로, 애플리케이션은 동작(1030)에서 네이티브 브라우저 핸들을 선택 핸들로 대체할 수 있다.
프로세스(1002)는 애플리케이션이 애플리케이션과 브라우저 사이의 추상화 계층에서 터치 및 제스처 가능 장치로부터 일련의 브라우저 이벤트를 수신할 수 있는 동작(1040)으로 시작할 수 있다. 동작(1050)에서, 애플리케이션은 수신된 브라우저 이벤트를, 복수의 장치 및 브라우저와 호환가능한 시맨틱 이벤트들의 일관적인 스트림으로 표준화할 수 있다.
프로세스(1004)는 애플리케이션이 입력을 검출할 수 있는 동작(1060)으로 시작할 수 있다. 동작(1070)에서, 애플리케이션은 검출된 입력의 유형에 기초하여 최적화된 사용자 인터페이스를 개시할 수 있다. 다음으로, 애플리케이션은 동작(1080)에서 검출된 입력의 유형에 기초하여 사용자 인터페이스의 일부분의 행위를 수정할 수 있다.
일부 실시예는 통신 모듈, 메모리 및 프로세서를 포함하는 컴퓨팅 장치에서 구현될 수 있는데, 프로세서는 메모리에 저장된 명령어들과 연계하여 전술한 바와 같은 방법 또는 이들에 대응하는 것을 실행한다. 다른 실시예는 전술한 바와 같은 방법 또는 이와 유사한 것을 실행하기 위한 명령어들이 저장되어 있는 컴퓨터 판독가능 저장 매체로서 구현될 수 있다.
프로세스(1000,1002,1004)에 포함된 동작들은 예시 목적을 위한 것이다. 실시예에 따라 제스처 또는 터치 스크린상에서 콘텐츠를 편집하기 위한 커스텀 선택과, 브라우저 제스처 또는 터치 이벤트의 시맨틱 해석을 위한 기법과, 브라우저의 제스처 또는 터치 최적화된 사용자 인터페이스를 제공하는 것은 본 명세서에서 기술한 원리들을 사용하여 보다 적은 또는 보다 많은 단계들을 갖고 다른 동작 순서를 갖는 유사한 프로세스에 의해 구현될 수 있다.
전술한 상세한 설명, 예시 및 데이터는 실시예들의 구성물의 제조 및 사용에 대한 완전한 설명을 제공한다. 본 발명은 구조적 특징 및/또는 방법론적 동작에 특정한 언어로 기술되었지만, 첨부한 청구항에 정의된 본 발명은 전술한 바와 같은 특정 특징 또는 동작들에 반드시 국한될 필요는 없다. 그 보다, 전술한 특정 특징 및 동작들은 청구 대상 및 실시예를 구현하기 위한 예시적인 형식으로 개시되어 있다.
Claims (19)
- 터치 스크린 상에서 콘텐츠를 편집하기 위한 커스텀 선택(custom selection)을 제공하기 위한, 컴퓨팅 장치에서 실행되는 방법으로서,
상기 컴퓨팅 장치의 프로세서에서, 웹 애플리케이션을 통해 액세스되는 브라우저를 통한 입력 이벤트에 의해 개시되는 콘텐츠의 범위의 선택을 검출하는 단계 - 상기 입력 이벤트는, 상기 컴퓨팅 장치 상에서 실행된 웹 애플리케이션과 웹 브라우저 사이의 이벤트를 관리하도록 구성된 추상화 계층(abstraction layer)에서의 제스처 입력, 터치 입력, 마우스 입력 또는 키보드 입력 중 하나 이상을 포함함 - 와,
상기 입력 이벤트를 처리하도록 구성된 입력 관리자에서, 상기 입력 이벤트를 복수의 장치 및 브라우저와 호환가능한 하나 이상의 시맨틱 이벤트(semantic event)로 표준화하는 단계와,
상기 프로세서에서, 상기 선택과 연관된 상기 입력 이벤트를 인터셉트하고, 상기 선택이 네이티브 브라우저 핸들(native browser handles)을 활성화하는 것을 막기 위해 상기 입력 이벤트를 취소하는 단계와,
상기 프로세서에서, 상기 선택의 종료 위치(end location)를 결정하는 단계와,
상기 프로세서에서, 네이티브 브라우저 핸들을 대체하고 웹 애플리케이션 플랫폼에 걸쳐 디스플레이된 콘텐츠에 대한 일관된 경험을 제공하기 위한 입력 최적화 선택 핸들(selection handles)을 상기 검출된 선택의 삽입 지점 아래에 생성하는 단계와,
상기 컴퓨팅 장치와 연관된 디스플레이 장치 상의 상기 선택된 콘텐츠의 상기 종료 위치에서 상기 선택 핸들을 렌더링하는 단계를 포함하는
방법.
- 제1항에 있어서,
상기 선택을 관리하기 위한 사용자 인터페이스를 제공하기 위해 상기 선택의 상기 종료 위치에 2개의 추가 선택 핸들을 생성하는 단계를 더 포함하는
방법.
- 제1항에 있어서,
상기 네이티브 브라우저 핸들의 선택 행위(selection behavior)를 에뮬레이트하는(emulating) 단계를 더 포함하는
방법.
- 제3항에 있어서,
입력의 유형을 검출하는 단계와,
상기 입력의 유형에 따라 상기 선택 행위를 재현하도록 상기 선택 핸들을 제공하는 단계를 더 포함하는
방법.
- 제1항에 있어서,
대체 선택 행위를 제공하는 단계를 더 포함하는
방법.
- 제5항에 있어서,
상기 대체 선택 행위와 연관된 규칙을 실행하는 단계와,
상기 선택과 연관된 통지를 디스플레이하는 단계를 더 포함하는
방법.
- 터치 스크린 상에서 콘텐츠를 편집하기 위한 커스텀 선택을 제공하는 컴퓨팅 장치로서,
메모리와,
상기 메모리에 결합된 프로세서를 포함하되,
상기 프로세서는 온라인 미팅 애플리케이션을 실행하며,
상기 온라인 미팅 애플리케이션은
컴퓨팅 장치 상에서 실행되는 웹 애플리케이션을 통해 액세스되는 브라우저를 통한 입력 이벤트에 의해 개시되는 콘텐츠의 범위의 선택을 검출하고 - 상기 입력 이벤트는 제스처 입력, 터치 입력, 마우스 입력 또는 키보드 입력 중 하나 이상을 포함함 - ,
검출된 입력 이벤트의 유형에 기초하여 사용자 인터페이스를 개시하며,
상기 검출된 입력 이벤트의 유형에 기초하여 사용자 인터페이스의 일부분을 수정하고,
상기 선택과 연관된 상기 입력 이벤트를 인터셉트하고, 상기 선택이 네이티브 브라우저 핸들을 활성화하는 것을 막기 위해 상기 입력 이벤트를 취소하며,
상기 선택의 종료 위치를 결정하고,
네이티브 브라우저 핸들을 대체하고 웹 애플리케이션 플랫폼에 걸쳐 디스플레이된 콘텐츠에 대한 일관된 경험을 제공하기 위한 입력 최적화 선택 핸들을 상기 검출된 선택의 삽입 지점 아래에 생성하며,
상기 컴퓨팅 장치와 연관된 디스플레이 장치 상의 상기 선택된 콘텐츠의 상기 종료 위치에서 상기 선택 핸들을 렌더링하도록 구성되는
컴퓨팅 장치.
- 제7항에 있어서,
상기 프로세서는 또한, 상기 선택을 관리하기 위한 사용자 인터페이스를 제공하기 위해 상기 선택의 상기 종료 위치에 2개의 추가 선택 핸들을 생성하도록 구성되는
컴퓨팅 장치.
- 제7항에 있어서,
상기 프로세서는 또한, 상기 네이티브 브라우저 핸들의 선택 행위를 에뮬레이트하도록 구성되는
컴퓨팅 장치.
- 제9항에 있어서,
상기 프로세서는 또한, 검출된 입력의 유형에 따라 상기 선택 행위를 재현하도록 상기 선택 핸들을 제공하도록 구성되는
컴퓨팅 장치.
- 제7항에 있어서,
상기 프로세서는 또한, 대체 선택 행위를 제공하도록 구성되는
컴퓨팅 장치.
- 제11항에 있어서,
상기 프로세서는 또한, 상기 대체 선택 행위와 연관된 규칙을 실행하고,
상기 선택과 연관된 통지를 디스플레이하도록 구성되는
컴퓨팅 장치.
- 제8항에 있어서,
상기 컴퓨팅 장치는 태블릿, 스마트폰, 랩탑 및 PDA(personal data assistant) 중 하나인
컴퓨팅 장치.
- 컴퓨팅 장치에서 실행되는 방법으로서,
이벤트 핸들러 관리자에서, 컴퓨팅 장치 상에서 실행된 웹 애플리케이션을 통해 액세스되는 브라우저를 통한 입력 이벤트에 의해 개시되는 콘텐츠의 범위의 선택을 검출하는 단계 - 상기 입력 이벤트는, 제스처 입력, 터치 입력, 마우스 입력 또는 키보드 입력 중 하나 이상을 포함함 - 와,
상기 입력 이벤트를, 상기 브라우저로부터 상기 입력 이벤트를 처리하도록 구성된 입력 관리자에게 전송하는 단계 - 상기 입력 관리자는 이벤트 정보의 캐시를 이벤트와 연관된 문서 객체 모델 요소에 둠으로써 상기 웹 애플리케이션이 이해할 수 있는 시맨틱 이벤트 및 브라우저 이벤트에 관한 내부 지식을 유지하도록 구성됨 - 와,
상기 입력 관리자에서 상기 입력 관리자의 내부 지식에 기초하여 상기 입력 이벤트를 상기 웹 애플리케이션이 이해할 수 있는 시맨틱 이벤트로 변환하는 단계와,
상기 이벤트 핸들러 관리자에서 상기 시맨틱 이벤트를 상기 웹 애플리케이션으로 전송하는 단계와,
상기 선택과 연관된 상기 입력 이벤트를 인터셉트하고, 상기 선택이 네이티브 브라우저 핸들을 활성화시키는 것을 막기 위해 상기 입력 이벤트를 취소하는 단계와,
상기 선택의 종료 위치를 결정하는 단계와,
네이티브 브라우저 핸들을 대체하고 웹 애플리케이션 플랫폼에 걸쳐 디스플레이된 콘텐츠에 대한 일관된 경험을 제공하기 위한 입력 최적화 선택 핸들을 상기 검출된 선택의 삽입 지점 아래에 생성하는 단계와,
상기 컴퓨팅 장치와 연관된 디스플레이 장치 상의 상기 선택된 콘텐츠의 상기 종료 위치에서 상기 선택 핸들을 렌더링하는 단계와,
상기 선택의 상기 종료 위치에 2개의 추가 선택 핸들을 생성하여 상기 선택을 관리하기 위한 사용자 인터페이스를 제공하는 단계를 포함하는
방법.
- 제14항에 있어서,
상기 네이티브 브라우저 핸들의 선택 행위를 에뮬레이트하는 단계를 더 포함하는
방법.
- 제15항에 있어서,
입력의 유형을 검출하는 단계와,
상기 입력의 유형에 따라 상기 선택 행위를 재현하도록 상기 선택 핸들을 제공하는 단계를 더 포함하는
방법.
- 제14항에 있어서,
대체 선택 행위를 제공하는 단계를 더 포함하는
방법.
- 제17항에 있어서,
상기 대체 선택 행위와 연관된 규칙을 실행하는 단계와,
상기 선택과 연관된 통지를 디스플레이하는 단계를 더 포함하는
방법.
- 제14항에 있어서,
상기 컴퓨팅 장치는 태블릿, 스마트폰, 랩탑 및 PDA(personal data assistant) 중 하나인
방법.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261653530P | 2012-05-31 | 2012-05-31 | |
US61/653,530 | 2012-05-31 | ||
US13/671,832 | 2012-11-08 | ||
US13/671,832 US8843858B2 (en) | 2012-05-31 | 2012-11-08 | Optimization schemes for controlling user interfaces through gesture or touch |
PCT/US2013/041483 WO2013180975A2 (en) | 2012-05-31 | 2013-05-17 | Optimization schemes for controlling user interfaces through gesture or touch |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150021925A KR20150021925A (ko) | 2015-03-03 |
KR102033198B1 true KR102033198B1 (ko) | 2019-10-16 |
Family
ID=49671896
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020147033372A KR102033198B1 (ko) | 2012-05-31 | 2013-05-17 | 제스처 또는 터치를 통해 사용자 인터페이스를 제어하는 최적화 기법 |
Country Status (5)
Country | Link |
---|---|
US (2) | US8843858B2 (ko) |
EP (2) | EP4130968A1 (ko) |
JP (1) | JP6133411B2 (ko) |
KR (1) | KR102033198B1 (ko) |
WO (1) | WO2013180975A2 (ko) |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140040070A1 (en) * | 2012-02-23 | 2014-02-06 | Arsen Pereymer | Publishing on mobile devices with app building |
KR20130097331A (ko) * | 2012-02-24 | 2013-09-03 | 삼성전자주식회사 | 터치 스크린을 구비하는 전자기기에서 객체를 선택하기 위한 장치 및 방법 |
KR101395480B1 (ko) * | 2012-06-01 | 2014-05-14 | 주식회사 팬택 | 필기 입력에 기초하여 어플리케이션을 실행하는 방법 및 그 단말 |
US8875060B2 (en) * | 2012-06-04 | 2014-10-28 | Sap Ag | Contextual gestures manager |
US20140085311A1 (en) * | 2012-09-24 | 2014-03-27 | Co-Operwrite Limited | Method and system for providing animated font for character and command input to a computer |
US10877780B2 (en) | 2012-10-15 | 2020-12-29 | Famous Industries, Inc. | Visibility detection using gesture fingerprinting |
US9501171B1 (en) | 2012-10-15 | 2016-11-22 | Famous Industries, Inc. | Gesture fingerprinting |
US9772889B2 (en) * | 2012-10-15 | 2017-09-26 | Famous Industries, Inc. | Expedited processing and handling of events |
US10908929B2 (en) | 2012-10-15 | 2021-02-02 | Famous Industries, Inc. | Human versus bot detection using gesture fingerprinting |
US11386257B2 (en) | 2012-10-15 | 2022-07-12 | Amaze Software, Inc. | Efficient manipulation of surfaces in multi-dimensional space using energy agents |
US20140118310A1 (en) * | 2012-10-26 | 2014-05-01 | Livescribe Inc. | Digital Cursor Display Linked to a Smart Pen |
US20140164916A1 (en) * | 2012-12-07 | 2014-06-12 | John Vasconcellos | Means for Transitioning Between Hierarchical Representations of Organized Thought |
US8814683B2 (en) | 2013-01-22 | 2014-08-26 | Wms Gaming Inc. | Gaming system and methods adapted to utilize recorded player gestures |
US10152135B2 (en) * | 2013-03-15 | 2018-12-11 | Intel Corporation | User interface responsive to operator position and gestures |
JP6303314B2 (ja) * | 2013-07-31 | 2018-04-04 | ブラザー工業株式会社 | プログラムおよび情報処理装置 |
US10331777B2 (en) * | 2013-12-31 | 2019-06-25 | Barnes & Noble College Booksellers, Llc | Merging annotations of paginated digital content |
JP6287435B2 (ja) * | 2014-03-26 | 2018-03-07 | 日本電気株式会社 | 情報処理装置、情報処理方法およびプログラム |
JP6274003B2 (ja) * | 2014-05-09 | 2018-02-07 | 株式会社デンソー | 表示操作システム |
US9846496B2 (en) * | 2014-09-04 | 2017-12-19 | Home Box Office, Inc. | Virtual input device system |
US20160188171A1 (en) * | 2014-12-31 | 2016-06-30 | Microsoft Technology Licensing, Llc. | Split button with access to previously used options |
US10185464B2 (en) | 2015-05-28 | 2019-01-22 | Microsoft Technology Licensing, Llc | Pausing transient user interface elements based on hover information |
US10732782B1 (en) * | 2015-07-29 | 2020-08-04 | Intuit Inc. | Context-aware component styling in user interfaces of electronic devices |
US10802660B1 (en) | 2015-07-29 | 2020-10-13 | Intuit Inc. | Metadata-driven binding of platform-agnostic content to platform-specific user-interface elements |
GB2544116B (en) * | 2015-11-09 | 2020-07-29 | Sky Cp Ltd | Television user interface |
US10255703B2 (en) | 2015-12-18 | 2019-04-09 | Ebay Inc. | Original image generation system |
US10474356B2 (en) | 2016-08-04 | 2019-11-12 | International Business Machines Corporation | Virtual keyboard improvement |
US10824293B2 (en) * | 2017-05-08 | 2020-11-03 | International Business Machines Corporation | Finger direction based holographic object interaction from a distance |
KR102474245B1 (ko) * | 2017-06-02 | 2022-12-05 | 삼성전자주식회사 | 스와이프 입력에 기초하여 입력 문자를 판단하는 시스템 및 방법 |
CN109885171B (zh) * | 2019-02-26 | 2023-05-16 | 维沃移动通信有限公司 | 文件操作方法及终端设备 |
USD992574S1 (en) * | 2021-11-05 | 2023-07-18 | Salesforce. Inc. | Display screen or portion thereof with graphical user interface |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100235785A1 (en) | 2009-03-16 | 2010-09-16 | Bas Ording | Methods and Graphical User Interfaces for Editing on a Multifunction Device with a Touch Screen Display |
US20120030566A1 (en) | 2010-07-28 | 2012-02-02 | Victor B Michael | System with touch-based selection of data items |
US20120293440A1 (en) | 2002-02-07 | 2012-11-22 | Steve Hotelling | Mode-based graphical user interfaces for touch sensitive input devices |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6891551B2 (en) | 2000-11-10 | 2005-05-10 | Microsoft Corporation | Selection handles in editing electronic documents |
US7216290B2 (en) | 2001-04-25 | 2007-05-08 | Amplify, Llc | System, method and apparatus for selecting, displaying, managing, tracking and transferring access to content of web pages and other sources |
US7111234B2 (en) | 2001-05-02 | 2006-09-19 | Microsoft Corporation | System and method for in-line editing of web-based documents |
AU2003259919A1 (en) * | 2002-08-21 | 2004-03-11 | California Institute Of Technology | Element placement method and apparatus |
US7000184B2 (en) | 2003-01-24 | 2006-02-14 | The Cobalt Group, Inc. | Remote web site editing in a standard web browser without external software |
FI20031758A (fi) | 2003-12-02 | 2005-06-03 | Nokia Corp | Merkkijonojen muokkaaminen kosketusnäytöllä |
EP1658744A4 (en) * | 2004-07-30 | 2006-09-27 | Research In Motion Ltd | METHOD AND SYSTEM FOR COORDINATING THE PARAMETERS OF A DEVICE BETWEEN A COMMUNICATIONS CLIENT AND HOST DEVICE |
WO2006010241A1 (en) * | 2004-07-30 | 2006-02-02 | Research In Motion Limited | System and method for providing a communications client on a host device |
AU2005256105B8 (en) * | 2004-07-30 | 2008-10-02 | Blackberry Limited | Method and apparatus for provisioning a communications client on a host device |
US8108787B2 (en) * | 2005-07-01 | 2012-01-31 | Microsoft Corporation | Distributing input events to multiple applications in an interactive media environment |
US9594731B2 (en) | 2007-06-29 | 2017-03-14 | Microsoft Technology Licensing, Llc | WYSIWYG, browser-based XML editor |
JP2009087224A (ja) * | 2007-10-02 | 2009-04-23 | Canon Inc | 表示装置、および表示方法 |
US8717305B2 (en) * | 2008-03-04 | 2014-05-06 | Apple Inc. | Touch event model for web pages |
US8201109B2 (en) * | 2008-03-04 | 2012-06-12 | Apple Inc. | Methods and graphical user interfaces for editing on a portable multifunction device |
US8694904B2 (en) | 2008-04-15 | 2014-04-08 | Microsoft Corporation | Cross-browser rich text editing via a hybrid client-side model |
US20090313559A1 (en) | 2008-06-13 | 2009-12-17 | Brendan Kane | Official website builder/editor community |
US8549432B2 (en) * | 2009-05-29 | 2013-10-01 | Apple Inc. | Radial menus |
US8677268B2 (en) * | 2010-01-26 | 2014-03-18 | Apple Inc. | Device, method, and graphical user interface for resizing objects |
US9146751B2 (en) * | 2010-04-07 | 2015-09-29 | Apple Inc. | Device, method, and graphical user interface for navigation of multiple applications |
US8307277B2 (en) * | 2010-09-10 | 2012-11-06 | Facebook, Inc. | Efficient event delegation in browser scripts |
US8151279B1 (en) * | 2011-03-28 | 2012-04-03 | Google Inc. | Uniform event handling across multiple computing devices |
JP2012043452A (ja) * | 2011-10-05 | 2012-03-01 | Toshiba Corp | 情報処理装置およびタッチ操作支援プログラム |
-
2012
- 2012-11-08 US US13/671,832 patent/US8843858B2/en active Active
-
2013
- 2013-05-17 KR KR1020147033372A patent/KR102033198B1/ko active IP Right Grant
- 2013-05-17 JP JP2015515032A patent/JP6133411B2/ja active Active
- 2013-05-17 WO PCT/US2013/041483 patent/WO2013180975A2/en active Application Filing
- 2013-05-17 EP EP22197379.5A patent/EP4130968A1/en active Pending
- 2013-05-17 EP EP13726070.9A patent/EP2856300B1/en active Active
-
2014
- 2014-09-24 US US14/494,591 patent/US10762277B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120293440A1 (en) | 2002-02-07 | 2012-11-22 | Steve Hotelling | Mode-based graphical user interfaces for touch sensitive input devices |
US20100235785A1 (en) | 2009-03-16 | 2010-09-16 | Bas Ording | Methods and Graphical User Interfaces for Editing on a Multifunction Device with a Touch Screen Display |
US20120030566A1 (en) | 2010-07-28 | 2012-02-02 | Victor B Michael | System with touch-based selection of data items |
Also Published As
Publication number | Publication date |
---|---|
EP4130968A1 (en) | 2023-02-08 |
JP6133411B2 (ja) | 2017-05-24 |
EP2856300A2 (en) | 2015-04-08 |
WO2013180975A2 (en) | 2013-12-05 |
EP2856300B1 (en) | 2022-10-26 |
JP2015523643A (ja) | 2015-08-13 |
KR20150021925A (ko) | 2015-03-03 |
US10762277B2 (en) | 2020-09-01 |
WO2013180975A3 (en) | 2014-01-30 |
US20150012815A1 (en) | 2015-01-08 |
US20130326430A1 (en) | 2013-12-05 |
US8843858B2 (en) | 2014-09-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102033198B1 (ko) | 제스처 또는 터치를 통해 사용자 인터페이스를 제어하는 최적화 기법 | |
EP2810150B1 (en) | Dynamic extension view with multiple levels of expansion | |
US20170024226A1 (en) | Information processing method and electronic device | |
US10409634B2 (en) | Surfacing task-related applications in a heterogeneous tab environment | |
US20160283051A1 (en) | Providing attachment control to manage attachments in conversation | |
US10417320B2 (en) | Providing insertion feature with clipboard manager application | |
US20170090705A1 (en) | Conversation and version control for objects in communications | |
EP2825947A1 (en) | Web page application controls | |
US20230297961A1 (en) | Operating system facilitation of content sharing | |
CN103412704B (zh) | 用于通过姿势或触摸控制用户界面的优化方案 | |
US11271884B2 (en) | Providing social insight in email | |
US10474428B2 (en) | Sorting parsed attachments from communications | |
US20190227678A1 (en) | Providing document feature management in relation to communication | |
US10082931B2 (en) | Transitioning command user interface between toolbar user interface and full menu user interface based on use context | |
CN116225282A (zh) | 分层内容选择 | |
US10296190B2 (en) | Spatially organizing communications | |
US10409453B2 (en) | Group selection initiated from a single item |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
N231 | Notification of change of applicant | ||
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |