KR101741293B1 - 동적 입력 장치의 맥락 제어 기법 - Google Patents

동적 입력 장치의 맥락 제어 기법 Download PDF

Info

Publication number
KR101741293B1
KR101741293B1 KR1020127032966A KR20127032966A KR101741293B1 KR 101741293 B1 KR101741293 B1 KR 101741293B1 KR 1020127032966 A KR1020127032966 A KR 1020127032966A KR 20127032966 A KR20127032966 A KR 20127032966A KR 101741293 B1 KR101741293 B1 KR 101741293B1
Authority
KR
South Korea
Prior art keywords
input device
user interface
application
device user
runtime
Prior art date
Application number
KR1020127032966A
Other languages
English (en)
Other versions
KR20130121692A (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 KR20130121692A publication Critical patent/KR20130121692A/ko
Application granted granted Critical
Publication of KR101741293B1 publication Critical patent/KR101741293B1/ko

Links

Images

Classifications

    • 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/02Input arrangements using manually operated switches, e.g. using keyboards or dials
    • G06F3/023Arrangements for converting discrete items of information into a coded form, e.g. arrangements for interpreting keyboard generated codes as alphanumeric codes, operand codes or instruction codes
    • G06F3/0238Programmable keyboards
    • 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/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • 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
    • 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/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • 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
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/545Gui

Landscapes

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

Abstract

컴퓨팅 시스템은 동적 입력 장치에 이미지를 동적으로 표시하기 위한 하나 이상의 입력 장치 사용자 인터페이스 런타임 애플리케이션을 포함한다. 하나 이상의 입력 장치 사용자 인터페이스 런타임 애플리케이션이 현재 활성인 데스크톱에서 실해행된다. 컴퓨팅 시스템은 현재 활성인 데스크톱에서 실행되도록 구성된 주 애플리케이션을 또한 포함한다. 주 애플리케이션은 주 애플리케이션의 현재 맥락에 대응하는 입력 장치 사용자 인터페이스 런타임 애플리케이션을 특정하도록 구성된다. 특정된 입력 장치 사용자 인터페이스 런타임 애플리케이션은 동적 입력 장치 상에 가상 컨트롤을 동적으로 표시하도록 구성된다. 특정된 입력 장치 사용자 인터페이스 런타임 애플리케이션은 또한 주 애플리케이션에 가상 컨트롤의 활성화를 보고하도록 구성된다.

Description

동적 입력 장치의 맥락 제어 기법{CONTEXTUAL CONTROL OF DYNAMIC INPUT DEVICE}
많은 컴퓨팅 시스템은 시스템 범위의(system-wide) 활성 포커스를 갖는 단일 애플리케이션과 함께 동작한다. 이러한 시스템에서, 입력은 현재 시스템 범위의 활성 포커스를 갖는 애플리케이션으로 자동으로 라우팅된다. 예를 들어, 워드 프로세싱 애플리케이션이 시스템 범위의 활성 포커스를 가지면, 예를 들어, 문서에서 문장을 쓰기 위하여, 키보드 입력은 자동으로 워드 프로세싱 애플리케이션으로 라우팅될 것이다. 시스템 범위의 활성 포커스는 하나의 애플리케이션에서 다른 애플리케이션으로 변경될 수 있지만, 2개의 상이한 애플리케이션이 동시에 시스템 범위의 활성 포커스를 갖지는 않을 것이다. 예를 들어, 시스템 범위의 활성 포커스는 워드 프로세싱 애플리케이션에서 브라우저 애플리케이션으로 변경될 수 있다. 그러한 변화 후에, 키보드 입력은, 예를 들어, 주소 바에 URL을 기록하기 위하여, 브라우저 애플리케이션으로 자동으로 라우팅될 수 있다.
시스템 범위의 활성 포커스를 강화하는 많은 시스템에서, 키보드 입력 및 기타 유형의 입력을 시스템 범위의 활성 포커스를 갖는 애플리케이션 외의 애플리케이션으로 전환하기 위한 매커니즘이 존재하지 않는다.
본 개시의 일 태양에 따른 컴퓨팅 시스템은 동적 입력 장치 상에 이미지를 동적으로 표시하기 위해 하나 이상의 입력 장치 사용자 인터페이스 런타임 애플리케이션을 포함한다. 하나 이상의 입력 장치 사용자 인터페이스 런타임 애플리케이션은 현재 활성인 데스크톱에서 실행된다. 컴퓨팅 시스템은 또한 현재 활성인 데스크톱에서 실행되도록 구성되는 주 애플리케이션을 포함한다. 주 애플리케이션은 주 애플리케이션의 현재 맥락에 대응하는 입력 장치 사용자 인터페이스 런타임 애플리케이션을 특정하도록 구성된다. 특정된 입력 장치 사용자 인터페이스 런타임 애플리케이션은 동적 입력 장치 상의 가상 제어를 동적으로 표시하도록 구성된다. 특정된 입력 장치 사용자 인터페이스 런타임 애플리케이션은 가상 제어의 활성화를 주 애플리케이션에 보고하도록 또한 구성된다.
본 개요는 아래 상세한 설명에서 더 설명될 개념 중 선택된 것을 단순화된 형태로 소개하기 위해 제공된다. 이 개요는 청구된 주제의 중요 특성 또는 핵심 특성을 식별하는 것이 아니고 청구된 주제의 범위를 제한하는데 사용하려는 것도 아니다. 또한, 청구된 주제는 본 개시의 여하한 부분에서 언급된 문제 중 여하한 것 또는 전부를 해결하는 구현으로 제한되지 않는다.
도 1은 키보드 어셈블리의 키와 관련하여 볼 수 있는 출력을 표시하는 기능을 제공하는 동적 입력 장치를 포함하는 예시적인 컴퓨팅 시스템을 도시한다.
도 2는 도 1에 도시된 동적 입력 장치의 분해도이고, 동적 입력 장치의 키보드 어셈블리 아래에 있는 디스플레이 장치에 의해 제공되는 볼 수 있는 디스플레이 출력을 도시한다.
도 3은 본 개시의 일 실시형태에 따른 예시적인 컴퓨팅 시스템을 도시한다.
도 4는 도 3의 컴퓨팅 시스템을 구현하기 위한 예시적인 아키텍처를 도시한다.
도 5는 도 3의 컴퓨팅 시스템을 구현하기 위한 다른 예시적 아키텍처를 도시한다.
도 6은 본 개시의 일 실시형태에 따른 사용자 입력의 시퀀스와 동적 입력 장치 출력을 도시한다.
도 7은 동적 입력 장치로부터의 입력을 관리하기 위한 윈도우리스(widowless) 런타임 환경을 이용하는 예시적인 방법을 도시한다.
도 8은 주 애플리케이션이 동적 입력 장치와의 보조 경험을 구현하는 예시적인 방법을 도시한다.
시스템 범위의 활성 포커스를 갖는 애플리케이션 외의 애플리케이션으로 키보드 및 기타 유형의 입력을 전달하기 위한 시스템 및 방법이 개시된다. 후술하는 바와 같이, 동적 입력 장치로부터의 터치 입력 및 기타 유형의 입력은 윈도우리스(windowless) 런타임 환경을 호스팅하는 컨테이너 모듈에 의해 핸들링될 수 있고, 윈도우리스 런타임 환경 내에서 입력 장치 사용자 인터페이스 런타임 애플리케이션(UI 런타임 앱) 형태의 보조 경험이 호스팅될 수 있다. 아래에서 더 상세히 설명하는 바와 같이, 동적 입력 장치는 상이한 키 또는 기타 입력 위치에 상이한 이미지를 표시하도록 구성될 수 있다. UI 런타임 애플리케이션은 상이한 키 또는 기타 입력 위치에 어떤 이미지가 표시되는지를 제어할 수 있다. 사용자가 입력 위치에 표시된 가상 버튼을 누르면, 가상 버튼으로부터의 결과적인 입력 메시지가 핸들링을 위해, 현재 시스템 범위의 활성 포커스를 갖는 애플리케이션과 별도로, 본 명세서에 개시된 컨테이너 모듈로 라우팅될 수 있다. 일부 실시형태에서, 선택적으로, 물리적 키 누름으로부터 초래되는 입력 메시지가 본 명세서에 개시된 컨테이너 모듈로 라우팅될 수 있다. 이러한 방식으로, 사용자에게 풍부한 사용자 경험을 제공하기 위해, 보조 경험, 또는 UI 런타임 애플리케이션이 시스템 범위의 활성 포커스를 갖는 데스크톱 애플리케이션과 협업할 수 있다.
도 1은 디스플레이 모니터(22), 컴포넌트 인클로저(24)(예를 들어, 프로세서, 하드 드라이브 등을 포함) 및 동적 입력 장치(26)를 포함하는 예시적인 컴퓨팅 시스템(20)을 도시한다. 입력 장치가 상이한 이미지들을 표시함으로써 동적으로 적응할 수 있기 때문에 동적 입력 장치(26)가 적응형 입력 장치라고 지칭될 수도 있다. 도 2는 동적 입력 장치(26)와 그 구성에 사용될 수 있는 예시적인 컴포넌트의 추가적인 도면을 제공한다. 다양한 예에서 설명되는 바와 같이, 동적 입력 장치(26)는 키보드 유형 입력 기능에 추가하여 표시가능한 출력을 제공하도록 구성될 수 있다. 여러가지 중에서도, 컴퓨터 주변기기는 이미지의 키보드 위(on-keyboard) 및/또는 키보드를 통한(through-keyboard) 보기를 용이하게 하는 키를 포함할 수 있다. 다른 실시형태에서, 동적 입력 장치는 키를 포함하지 않고, 터치 활성화를 인식할 수 있는 하나 이상의 표시 영역을 포함할 수 있다.
키(28) 상의 "Q", "W", "E", "R", "T", "Y" 등으로 표시된 바와 같이(도 1 및 2), 동적 입력 장치(26)가 종래의 문자숫자 입력 기능을 제공하도록 구성되는 것이 종종 바람직할 것이다. 설명을 단순화하기 위해, 도 1 및 2의 많은 키들은 인덱스 없이 도시되지만, 각각의 키에 레이블 또는 이미지가 종종 표시될 것임을 인식할 것이다. 또한, "QWERTY" 형식에 추가하여 또는 이를 대신하여, 키보드의 키(28)는 다른 기능을 제공하기 위해 동적으로 변경될 수 있다. 키는, 예를 들어, 다양한 언어 및 알파벳을 위한 기능을 제공하도록 및/또는 컴퓨팅 시스템(20)을 제어하기 위한 다른 입력 명령을 활성화하도록 할당될 수 있다. 일부 구현에서, 키 기능은 맥락에 기초하여, 예를 들어 컴퓨팅 시스템(20)에서 실행되고 있는 소프트웨어 하나의 변화하는 동작 맥락에 응답하여, 변화할 수 있다. 예를 들어, "ALT" 키를 누르면, 그렇지 않았으면 문자 "F"를 입력하는데 사용되는 키가, 그 대신에 소프트웨어 애플리케이션에서 "파일" 메뉴의 활성화를 가져올 수 있다. 일반적으로, 본 예에서 키는 컴퓨터를 제어하기 위한 여하한 유형의 입력 신호를 산출하도록 선택적으로 눌러질 수 있음을 인식하여야 한다.
동적 입력 장치(26)는 연산 경험을 강화하거나 달리 보강하기 위하여 다양한 종류의 표시가능한 출력을 제공할 수 있다. 일부 예에서, 컴퓨터 주변장치는 개별 키(28) 위 또는 근처에서의 볼 수 있는 출력의 표시를 유발하여 키 기능을 표시한다. 이는 도 1 및 2에서 볼 수 있는데, 여기서 키캡 표면에 문자가 페인트되거나 인쇄된 키 대신에, 디스플레이 메커니즘 (예를 들어, 키 아래 배치된 LCD(액정 디스플레이) 장치)이 "Q," "W," 등 키의 기능을 나타내는데 사용된다. 이 동적이고 프로그램 가능한 디스플레이 기능은 다양한 서로 다른 방식의 동적 입력 장치(26)의 잠재적 사용을 용이하게 한다. 예를 들어, 상술한 영어 기반 키보드는 종래의 "QWERTY" 형식 대신에 알파벳 순서로 문제를 제공하도록 매핑될 수 있고, 그러면 각각의 키에 대한 디스플레이는 다른 키 할당을 반영하도록 쉽게 변경될 수 있다.
본 명세서에서 고려되는 디스플레이 기능은 컴퓨팅 시스템(20)의 사용자에게 여하한 유형의 볼 수 있는 출력을 제공하는데 사용될 수 있고, 알파벳, 문자, 숫자, 기호 등으로 제한되지 않는다. 상술한 예의 대안으로서, 이미지는 개별 키와 공간적인 방식으로 연관될 필요가 없는 방식으로 표시될 수 있다. 위의 예의 대안으로서, 개별 키와 공간적인 방식으로 연관되어야 하는 것은 아닌 방법으로 이미지가 표시될 수 있다. 이미지는, 예를 들어, 다수의 키에 걸쳐있는 키보드의 영역에 표시될 수 있다. 제공되는 이미지는 키보드의 입력 기능과 연관되어야 하는 것은 아니다. 이미지는, 예를 들어, 사용자 경험을 개인화하거나 출력의 다른 유형을 제공하기 위해 미학적인 목적으로 제공될 수 있다. 실제로, 본 개시는 여하한 목적을 위한 디스플레이 출력을 포괄한다. 또한, 키(28)의 위 또는 근처에 제공되는 디스플레이에 추가하여, 디스플레이 기능은 다른 영역, 예를 들어 키(28) 위에 위치한 영역(32)에 제공될 수 있다. 또한, 영역(32) 또는 동적 입력 장치(26)의 기타 부분에는 키(28)에 의해 제공되는 키보드 유형 입력에 추가하여 터치 또는 제스처 기반 양방향성(interactivity)이 제공될 수 있다. 예를 들어, 영역(32)은, 용량(capacitance) 기반 기술, 저항 기반 기술 또는 기타 적당한 방법을 통해 인터랙티브 터치 스크린으로서 구현될 수 있다. 또한, 일부 실시형태에서, 동적 컴퓨터 주변기기는 누를 수 있는 키 없이 터치 영역만 포함할 수 있다.
도 2는 동적 입력 장치(26)의 구성의 비제한적 예를 도시한다. 제공된 예는 전혀 제한적인 것이 아니고, 본 개시는 여하한 동적 입력 장치와 호환가능함을 인식할 것이다. 도시된 바와 같이, 동적 입력 장치(26)는 디스플레이 장치(40)와 디스플레이 장치 상에 배치되고 이와 결합된 키보드 어셈블리(42)를 포함할 수 있다. 키보드 어셈블리(42)는 적어도 부분적으로 투명할 수 있어서, 사용자가 디스플레이 장치에 의해 생성된 이미지를 키보드 어셈블리를 통해 볼 수 있도록 한다. 일 실시형태에서, 예를 들어, 각각의 키(28)는 사용자가 키보드 어셈블리(42) 아래에 배치된 LCD 패널 또는 기타 디스플레이 장치에 의해 생성된 이미지를 볼 수 있도록 하는 중앙 투명부를 갖는다. 일부 경우에, 실질적으로 키의 전부가 투명할 것이다. 다른 예에서, 키의 주변 부분은, 예를 들어, 키캡의 위아래 움직임을 용이하게 하는 구조를 감추기 위해 불투명할 수 있다. 일부 실시형태에서, 키캡은 이미지가 후면 조사(rear projected)될 수 있는 렌티큘러(lenticular) 스크린 또는 기타 광 산란 스크린을 포함할 수 있다.
디스플레이 장치의 다양한 유형이 채용될 수 있다. 위에서 간략히 나타나는 바와 같이, 적당한 디스플레이 장치 중 하나의 유형은 LCD 장치이다. 그러나, 키보드 어셈블리는 프로젝션 디스플레이 및 웨지 프로젝션 디스플레이를 포함하여 다른 디스플레이 유형과 결합될 수 있음을 인식하여야 한다.
위에서 소개된 바와 같이, 키보드 및 기타 컴퓨터 주변기기로부터의 입력은 통상 현재 시스템 범위의 활성 포커스를 갖는 애플리케이션으로 자동으로 라우팅된다. 그러면 현재 시스템 범위의 활성 포커스를 갖는 애플리케이션은 이러한 방식으로 수신된 입력을 직접 처리한다. 많은 상황에서, 이러한 프레임워크는 사용자에게 예측가능한 연산 경험을 제공한다. 그러나, 일부 시나리오에서, 현재 시스템 범위 활성 포커스를 갖는 애플리케이션 외의 다른 것이 키보드 및 기타 컴퓨터 주변기기로부터의 입력을 처리하는 것이 바람직할 수 있다. 예를 들어, 동적 입력 장치의 맥락에서, UI 런타임 애플리케이션의 형태의 보조 경험이 동적 입력 장치로부터 입력을 수신하고 이러한 입력의 일부 또는 전부를 처리하는 것이 바람직할 수 있다. 이러한 패러다임은 UI 런타임 애플리케이션이 동적 입력 장치에 의해 표시되는 이미지를 제어할 수 있도록 한다. 이러한 패러다임은 UI 런타임 애플리케이션이 동적 입력 장치 상에서의 키 또는 기타 입력 영역 활성화의 궁극적 영향을 제어할 수 있도록 한다.
UI 런타임 애플리케이션으로써 입력과 출력 제어를 중앙화(centralizing)하는 것은 데스크톱 애플리케이션과 기타 프로그램이 모든 장치 입력과 장치 디스플레이 출력을 핸들링하도록 설계될 필요 없이 동적 입력 장치를 이용할 수 있도록 한다. 달리 말하면, 표준 키보드로 사용하기 위해 작성된 데스크톱 애플리케이션이 동적 입력 장치와 함께 사용될 수 있고, UI 런타임 애플리케이션의 형태의 보조 경험이 동적 입력 장치와 데스크톱 애플리케이션 사이에서 기능적으로 동작하기 위해 사용될 수 있다. UI 런타임 애플리케이션은 동적 입력 장치에 의해 어떤 이미지가 표시되는지와 어떤 이미지가 표시되는지에 따라 사용자 활성화가 어떻게 해석될 것인지를 제어할 수 있다. 이러한 유형의 제어를 허용하기 위해, UI 런타임 애플리케이션은 시스템 범위의 활성 포커스를 갖는 애플리케이션 대신에 적어도 일부의 입력 메시지를 처리하도록 허용될 수 있다.
이러한 유연성을 제공하기 위해, UI 런타임 애플리케이션은 시스템 범위 활성 포커스의 규칙(convention)을 고수하는 종래의 데스크톱 애플리케이션이 아닐 수 있다. 아래에서 더 설명하는 바와 같이, 대신에 UI 런타임 애플리케이션이 윈도우리스 런타임 환경이 내에서 데스크톱 애플리케이션으로 보조 경험으로서 동작할 수 있다.
도 3은 터치 입력, 키보드 입력 및/또는 기타 유형의 입력을 시스템 범위 활성 포커스를 갖는 애플리케이션 외의 애플리케이션으로 전달할 수 있는 컴퓨팅 시스템(50)의 예시적인 실시형태를 개략적으로 도시한다. 특히, 도 3은 위에서 소개된 바와 같이, UI 런타임 애플리케이션으로 입력 메시지를 전달하는 동적 입력 장치를 포함하는 컴퓨팅 시스템을 도시한다.
컴퓨팅 시스템(50)은 키보드의 형태로 직접 입력 장치(52)를 선택적으로 포함할 수 있다. 컴퓨팅 시스템(50)은 또한, 상이한 이미지가 표시될 수 있는 복수의 키(56)를 포함하는 적응형 키보드의 형태로 동적 입력 장치(54)를 포함한다. 동적 입력 장치(54)는 또한 키가 없는 터치 영역(58)을 포함한다. 터치 영역은 사용자에 의해 활성화 될 수 있는 하나 이상의 가상 버튼 또는 기타 가상 제어를 표시하는데 사용될 수 있다. 이 예에서 도시되지 않았지만, 동적 입력 장치는 상이한 배역 또는 키와 터치 영역의 조합을 포함할 수 있고, 일부 동적 입력 장치는 터치 영역이 없는 키 또는 키가 없는 터치 영역을 포함할 수 있다.
동적 입력 장치는 사용자에게 복수의 입력 이미지를 동적으로 표시하도록 구성될 수 있고, 복수의 입력 이미지 중 여하한 특정한 하나로 지향되는 사용자 입력을 인정(acknowledge)하도록 구성될 수 있다. 일 예로서, 상이한 입력 이미지는 복수의 키(56)에서 표시될 수 있고, 동적 입력 장치(54)는 특정 키로 지향된 사용자 입력에 응답하는 그 특정 키의 표시를 포함하는 동적 입력 메시지를 출력할 수 있다. 다른 예로서, 상이한 입력 이미지가 터치 영역(58)의 상이한 위치에 가상 컨트롤로서 표시될 수 있고, 동적 입력 장치(54)는 특정 가상 컨트롤로 지향된 사용자 입력에 응답하는 그 특정 가상 컨트롤의 표시를 포함하는 동적 입력 메시지를 출력할 수 있다.
컴퓨팅 시스템(50)은 하나 이상의 네이티브 애플리케이션을 실행하기 위한 운영체제(60)를 포함할 수 있다. 운영 체제(60)는 실행되는 애플리케이션 사이에서 리소스 공유 및 할당을 관리하고 조정할 수 있다. 운영 체제(60)는 컴퓨팅 시스템(50)의 적어도 일부의 I/O 기능을 제어할 수도 있다. 적어도 일부의 프레임워크에서, 운영 체제(60)는 현재 실행되고 있는 하나 이상의 네이티브 애플리케이션 중 단일 애플리케이션이 시스템 범위의 활성 포커스를 가질 수 있게 하도록 구성된다. 이러한 프레임워크에서, 운영 체제(60)는 하나 이상의 직접 입력 장치로부터의 모든 직접 입력 메시지를 시스템 범위의 활성 포커스를 갖는 네이티브 애플리케이션으로 지향시킨다. 운영 체제의 제한되지 않는 예는 마이크로소프트 윈도우즈(MICROSOFT® WINDOWS®), 애플 맥 OS(APPLE® MAC OS®) 및 리눅스(LINUX®)를 포함한다.
일부 실시형태에서, 운영 체제는 키보드 메시지(예를 들어, 키보드 키가 눌려서 발생되는 메시지)를 시스템 범위의 활성 포커스를 갖는 애플리케이션으로 라우팅할 수 있다. 이러한 경우에, 운영 체제 후크(hook)는 키보드 메시지를 엿보는데(peek) 사용될 수 있다. 이들 메시지는 또한 UI 런타임 애플리케이션으로 전송될 수 있어서, UI 런타임 애플리케이션이 어떤 키보드 메시지를 관찰하는지에 기초하여 UI 런타임 애플리케이션이 응답할 수 있게 한다. 반면, 터치 입력 메시지(예를 들어, 터치 영역(58) 상의 사용자 터치로부터 발생하는 메시지)는 런타임 환경으로 직접 라우팅되고 UI 런타임 애플리케이션이 이해할 수 있는 메시지로 변환될 수 있다. 터치 입력 메시지는 시스템 범위의 활성 포커스를 갖는 애플리케이션으로 라우팅되지 않고 런타임 환경으로 라우팅될 수 있다.
동적 입력 장치는, 운영 체제가 동적 입력 장치를 이뉴머레이트(enumerate)하고 동적 입력 장치를 표준 디스플레이 모니터 및/또는 키보드로 취급하도록 하지 않는 인터페이스를 포함할 수 있다. 그러나, 일부 실시형태에서, 운영 체제는 동적 입력 장치의 키를 표준 키보드로서 이뉴머레이트하지만, 동적 입력 장치 상의 터치가 메인 디스플레이 모니터 상의 터치로 해석되는 것을 피하기 위해 터치 영역을 표준 디지타이저로 이뉴머레이트하지 않을 수 있다. 아래에서 더 자세히 설명하는 바와 같이, 컨테이너 모듈(62), 가상 런타임 환경(64) 및 UI 런타임 애플리케이션(66)은 다른 소프트웨어가 동적 입력 장치로부터의 입력(예를 들어, 터치 입력, 키 누름 등)을 수신하고 동적 입력 장치로 이미지 출력을 보내기 위해 호출할 수 있는 기능을 제공할 수 있다.
컴퓨팅 시스템(50)은 컨테이너 모듈(62)을 포함한다. 컨테이너 모듈은 하나 이상의 상이한 컨트롤이 실행될 수 있는 환경을 공급할 수 있다. 비제한적인 예로서, 컨테이너 모듈(62)은 마이크로소프트 액티브액스(MICROSOFT® ACTIVEX®) 컨트롤이 실행될 수 있는 환경을 제공하도록 구성된 마이크로소프트 액티브액스 컨테이너일 수 있다. 컨테이너 모듈(62)은 컨테이너 모듈에 의해 호스팅되는 모든 컨트롤을 조작하고, 관리하며 그에게 서비스를 제공할 수 있다. 예를 들어, 컨테이너 모듈(62)은 이벤트 핸들러로써 컨트롤을 제공할 수 있다. 일부 실시형태에서, 컨테이너 모듈은 데스크톱 애플리케이션의 일부로서 구현될 수 있다.
컨테이너 모듈(62)은 현재 활성인 데스크톱의 맥락에서 실행되는 런타임 환경(64)의 형태로 컨트롤을 호스팅하도록 구성될 수 있다. 본 개시가 여하한 개수의 상이한 적당한 런타임 환경과도 호환가능하지만, 여기서 마이크포소프트 실버라이트(MICROSOFT® SILVERLIGHT™) 런타임 환경이 비제한적인 예로서 제공된다. 이 예를 이용하여, 마이크로소프트 액티브액스 컨테이너 형태의 컨테이너 모듈(62)이 마이크로소프트 실버라이트 플러그인 형태로 런타임 환경을 호스팅할 수 있다. 그러나, 다른 컨테이너 모듈 및/또는 런타임 환경이 본 개시의 범위를 벗어남이 없이 사용될 수 있음을 인식할 것이다. 비제한적인 예로서, 런타임 환경은 어도비 플래시(Adobe® Flash®) 런타임 환경으로서 구현될 수 있다.
일부 실시형태에서, 런타임 환경(64)은 현재 활성인 데스크톱의 맥락에서 실행되는 윈도우리스 런타임 환경일 수 있다. 달리 말하면, 런타임 환경(64)은, 대부분의 네이티브 데스크톱 애플리케이션과 기타 런타임 환경에 의해 이루어지는 것어럼 전용 GUI 렌더링 윈도우를 인스턴스화(instantiate)하지 않을 수 있다.
일부 실시형태에서, 컨테이너 모듈과 윈도우리스 런타임 환경은 개발자가 다른 목적으로 애플리케이션을 개발하는데 사용하는 것과 동일한 프레임워크를 이용할 수 있다. 일예로서, 윈도우리스 런타임 환경은 네이티브 브라우저 애플리케이션과 호환가능할 수 있다. 이와 같이, 네이티브 브라우저 애플리케이션과의 호환을 위해 개발된 애플리케이션은 컨테이너 모듈 및 윈도우리스 런타임 환경과 호환가능하다. 달리 말하면, 개발자는 윈도우리스 런타임 환경을 위한 애플리케이션을 개발하기 위해, 개발자가 네이티브 브라우저 애플리케이션을 위한 애프리케이션을 개발하는데 사용하는 것과 동일한 툴 및 규약(convention)을 사용할 수 있다. 이와 같이, 윈도우리스 런타임 환경을 위해 개발하는 것은 상대적으로 쉽다. 위와 동일한 예를 사용하면, 마이크로소프트 실버라이트 애플리케이션을 개발하는데 익숙한 여하한 개발자는 동적 입력 장치와 함께 사용하기 위한 애플리케이션을 개발할 수 있다. 다른 예로서, 런타임 환경이 어도비 플래시 런타임 환경으로서 구현되면, 어도비 플래시 애플리케이션 개발에 익숙한 여하한 개발자는 동적 입력 장치와 함께 사용하기 위한 애플리케이션을 개발할 수 있을 것이다.
컴퓨팅 시스템(50)은 윈도우리스 런타임 환경 내에서 실행되는 하나 이상의 입력 장치 사용자 인터페이스 런타임 애플리케이션(예를 들어, UI 런타임 애플리케이션(66))을 더 포함한다. 이러한 시나리오에서, 컨테이너 모듈(62) 밖에서 실행되는 다른 애플리케이션(예를 들어, 데스크톱 애플리케이션(68))이 시스템 범위의 활성 포커스를 가질 수 있다. 이와 같이 데스크톱 애플리케이션(68)은 표준 직접 입력 장치(예를 들어, 일부 실시형태에서 동적 키보드의 키)로서 이뉴머레이트되는 동적 입력 장치의 일부로부터의 입력 및/또는 직접 입력 장치(52)로부터의 입력과 같은 종래의 입력을 수신할 것이다. 그러나, UI 런타임 애플리케이션(66)은 동적 입력 장치(54)로부터의 동적 입력 메시지를 수신하도록 구성될 수 있다. 이 점에서, 데스크톱 애플리케이션(68)이 하나 이상의 직접 입력 장치로부터 모든 직접 입력 메시지를 수신하더라도 UI 런타임 애플리케이션은 동적 입력 장치로부터 적어도 일부의 입력을 수신한다.
데스크톱 애플리케이션 또는 기타 주(dominant) 애플리케이션은 동적 입력 장치 상에서 표시가능한 출력을 제어할 수 있는 하나 이상의 보조 경험을 등록 및/또는 특정할 수 있다. 이러한 보조 경험은, 예를 들어, 윈도우리스 런타임 환경에서 실행되는 UI 런타임 애플리케이션의 형태를 취할 수 있다. 비제한적인 예로서, 보조 경험은 하나 이상의 마이크로소프트 실버라이트 XAP 파일로 캡슐화(encapsulated)될 수 있다. 이들 보조 경험은 클라이언트 애플리케이션 프로그래밍 인터페이스(API)를 통해 등록될 수 있다.
주 애플리케이션 당 하나 이상의 경험이 등록될 수 있고, 주 애플리케이션은 주 애플리케이션의 현재 맥락에 기초하여 등록된 경험 중 어떤 것이 활성인지 동적으로 특정할 수 있다. 각각의 XAP 파일 또는 기타 보조 경험의 구현은 주 애플리케이션의 특정 맥락과 연관될 수 있다. 일부 구현에서, 이러한 맥락은 주 애플리케이션을 통해 수행될 수 있는 상이한 사용자 태스크(예를 들어, 새로운 이메일 생성, 주소록 찾기, 새로운 모임 스케줄, 태스크 리뷰 등)에 대응할 수 있다. 각각의 맥락 또는 태스크는, 동적 입력 장치를 현재 활성인 맥락 또는 태스크를 수행하는데 사용자를 돕도록 설계된 이미지, 가상 컨트롤 및 업데이트된 키로 동적으로 동적 입력 장치를 업데이트함으로써 용이하게 될 수 있다. 특정 맥락에 대응되는 보조 경험은 동적 입력 장치 상에서 가상 컨트롤의 제1 세트를 동적으로 표시하고 주 애플리케이션에 가상 컨트롤의 제1 세트의 활성화를 보고하도록 구성될 수 있다.
클라이언트 API는 보조 경험으로 메시지를 보내고 그로부터 메시지를 수신하기 위해 주 애플리케이션을 위한 채널을 제공하도록 구성될 수 있다. 비제한적인 예로서, 애플리케이션 프로그래밍 인터페이스는 주 애플리케이션의 현재 맥락에 기초하여 보조 경험을 특정하기 위한 주 애플리케이션에 대한 호출(call), 및 보조 경험을 통해 표시되는 가상 컨트롤의 활성화를 주 애플리케이션으로 다시 보고하기 위한 특정된 보조 경험에 대한 호출을 포함할 수 있다.
일부 실시형태에서, 운영 체제는 시스템 범위의 활성 포커스를 갖는 애플리케이션으로 직접 입력 및 동적 입력을 라우팅하도록 구성될 수 있다. 예를 들어, 운영 체제는 데스크톱 애플리케이션으로 직접 입력 및 동적 입력을 라우팅할 수 있다. 이러한 실시형태에서, 데스크톱 애플리케이션은 특정 입력이 동적인지 직접인지를 결정하도록 구성될 수 있다. 동적인 것으로 결정된 입력은 처리를 위해 UI 런타임 애플리케이션(66)으로 라우팅될 수 있다. 이러한 실시형태에서, 데스크톱 애플리케이션 및 UI 런타임 애플리케이션은 여하한 적당한 메시지 전달 방법(예를 들어, 메시지 전달 API)을 통하여 협업하고 정보를 공유하도록 구성될 수 있다.
다른 실시형태에서, 운영 체제는 특정 입력이 동적인지 또는 직접인지를 결정하도록 구성될 수 있다. 이러한 실시형태에서, UI 런타임 애플리케이션으로 동적 입력이 라우팅되는 반면, 운영 체제는 시스템 범위의 활성 포커스를 갖는 애플리케이션으로 직접 입력을 라우팅하도록 구성될 수 있다.
ACL(액세스 컨트롤 계층)은 등록된 애플리케이션 내의 주입된 후크로부터의 입력뿐만 아니라 운영 체제 액세서빌리티(accessibility) 시스템으로부터의 입력을 이용하여 동적 입력 장치에서 최종 렌더링된 경험이 무엇이 되어야 할지에 대한 결정을 내릴 수 있다.
일 실시형태에서, ACL이 어떤 애플리케이션이 포커스를 갖는지를 알기 위해 ACL은 운영 체제 내 모든 포커스 변화를 감시한다. 각각의 포커스 변화에 대해, ACL은 포커스를 잃는 애플리케이션과 연관된 여하한 보조 경험을 제거할 수 있다. 다음, ACL은 포커스를 얻는 애플리케이션이 여하한 등록된 보조 경험을 갖는지를 찾을 수 있다. 포커스를 얻는 애플리케이션이 등록된 보조 경험을 가지면, 현재 "활성"인 보조 경험이 로딩되고, 초기화되며, 렌더링에 대비된다. 포커스를 얻는 애플리케이션이 등록된 보조 경험을 갖지 않으면, ACML이 디폴트 보조 경험을 로딩하고, 초기화하며 대비시킨다. 올바른 보조 경험이 식별되고 대비되면, 이는 선택적으로, 시스템에 의해 제공되는 임의의 "디폴트" 경험(예를 들어, 키보드 키 위에 표시된 표준 키보드 이미지)으로 합성될 수 있다.
위에서 소개된 바와 같이, 일부 실시형태에서, 렌더링 시스템은 사적으로(privately) 호스팅되는 마이크로소프트 실버라이트 컨트롤일 수 있다. 그러나,다른 런타임 환경은 본 개시의 범위를 벗어남이 없이 렌더링 시스템을 호스팅할 수 있다. 이 예에서, 마이크로소프트 실버라이트 컨트롤 내의 활성 컨텐츠가 ACL 및/또는 지원 제어 모듈에 의해 관리될 수 있다. 마이크로소프트 실버라이트와 같은 윈도우리스 런타임 컨트롤은 동적 입력 장치를 위한 유일한 렌더러(renderer)로서 사용될 수 있다. 예를 이용하면, 윈도우리스 런타임 컨트롤은 독립적인 포커스 시스템을 갖는 호스팅가능한 XAML 렌더러이다. 독립적인 포커스 시스템은 적당한 컨트롤 피드백이 운영 체제의 포커스 상태에 영향을 주지 않고 보조 경험 내에 보여질 수 있도록 한다.
마우스 메시지가 동적 입력 장치로부터 수신된 원(raw) 터치 데이터에 기초하여 윈도우리스 런타임 컨트롤로 주입될 수 있고, 따라서 동적 입력 장치로부터의 터치 입력이 보조 경험과 직접 상호작용할 수 있도록 한다. 키보드 상에서 어떤 키가 눌리는지에 관한 보조 경험 통지를 주기 위해 QWERTY 매니저가 사용될 수 있다. 이 QWERTY 매니저는 QWERTY XAML 레이아웃과 결합하여 동적 입력 장치 상의 각 키 탑에 대한 동적이고, 적당한 렌더링을 제공한다. 이 QWERTY 매니저는 운영 체제로부터 독립적인 모든 키스트로크 보고를 모니터링하는 매커니즘을 제공한다. 또한, QWERTY 매니저는 런타임 환경에서 디폴트 지원을 갖지 않을 수 있는 키 누름을 포함하여 모든 키 누름을 보고하도록 구성된다.
UI 런타임 애플리케이션(66)은 장치 메시지로부터 도출된 시스템 메시지를 시스템 범위의 포커스를 갖는 애플리케이션으로 출력하도록 구성될 수 있다. 이는 데스크톱 애플리케이션과 UI 런타임 애플리케이션 사이의 통신 채널을 통해 달성될 수 있다. 시스템 메시지는 시스템 범위의 활성 포커스를 갖는 애플리케이션이 동적 입력 장치를 통해 사용자 입력에 응답할 수 있도록 한다. UI 런타임 애플리케이션(66)은 가상 컨트롤 또는 키에 대응하는 시스템 범위의 활성 포커스를 갖는 애플리케이션에, 가상 컨트롤 또는 키에서 표시되는 이미지에 의해 표시될 수 있는 바와 같이, 가상 컨트롤 또는 키의 가변 기능을 고려하여 사용자가 활성화한다는 시스템 메시지를 전송할 수 있다. 이러한 방식으로, 동적 입력 장치(54)는 시스템 범위의 활성 포커스를 갖는 애플리케이션을 제어하는데 사용될 수 있다. 또한, 여하한 특정 키 또는 여하한 특정 가상 컨트롤을 활성화하는 것과 연관되는 기능이 동적으로 변화할 수 있고, 시스템 범위의 활성 포커스를 갖는 애플리케이션은 그 특정 키 또는 가상 컨트롤의 현재 기능에 따라 UI 런타임 애플리케이션(66)을 통해 변환된 입력을 수신할 수 있다.
위에서 제공된 예를 이용하면, 마이크로소프트 액티브액스 컨테이너가 동적 입력 장치(54)로부터 터치 입력 정보를 수신하면, 마이크로소프트 액티브액스 컨테이너는 이 정보를 마이크로소프트 윈도우 마우스 메시지와 같은 정보로 변환하고, 마이크로소프트 실버라이트 플러그인으로 입력을 주입하기 위한 방법(method), 이 경우 IOlelnPlaceObjectWindowless::OnWindowMessage(...)를 호출한다.
전술한 바와 같이, UI 런타임 애플리케이션(66)은 동적 입력 장치(54)로 디스플레이 출력 메시지를 출력하도록 더 구성될 수 있다. 디스플레이 출력 메시지는 동적 입력 장치에 의해 표시될 하나 이상의 이미지를 특정하는데 사용될 수 있다. 이러한 이미지는 특정 키 또는 가상 컨트롤과 동적으로 연관된 기능을 사용자에게 신호하는 비주얼 큐(visual cue)로서 사용될 수 있다. 상술한 바와 같이, UI 런타임 애플리케이션(66)은 사용자 입력이 지향되고 검출되는 위치에서 표시되는 이미지(예를 들어, 키 또는 가상 컨트롤)에 대응하는 시스템 메시지를 출력할 수 있다.
전술한 예를 이용하면, 마우스 메시지를 처리함에 있어, 마이크로소프트 실버라이트 플러그인은 동적 입력 장치의 시각적 외관을 변경할 수 있다. 플러그인은 컨테이너 모듈(62)에, 예를 들어, IOlelnPlaceSiteWindowless::InvalidateRect(...)를 통해 더티 렉트(dirty rect)(즉, 변경된 픽셀의 집합)을 통지할 수 있다.
컨테이너 모듈(62)은 예를 들어, IViewObject::Draw(...)를 통해 비트맵으로 무효 영역을 그릴 것을 플러그인에 요청하기 위해 더티 렉트를 이용할 수 있다. 그러면 컨테이너 모듈(62)은, 적당한 호출을 통해 새로운 이미지 데이터로 동적 입력 장치의 무효부분만을 업데이트하기 위해 비트맵으로부터의 비트와 더티 렉트를 이용할 수 있다.
런타임 환경(64)은 입력 모듈(70) 및/또는 출력 모듈(72)을 선택적으로 포함할 수 있다. 포함되는 경우에, 입력 모듈(70) 및 출력 모듈(72)은 동적 입력 장치(54)와 컴퓨팅 시스템(50) 사이의 통신을 핸들링하는데 사용될 수 있다. 일부 실시형태에서, UI 런타임 애플리케이션(66), 컨테이너 모듈(62), 및/또는 운영 체제(60)가 입력 장치(54)와 컴퓨팅 시스템(50) 사이의 통신을 핸들링하는데 사용될 수 있다. 일부 실시형태에서, 데스크톱 애플리케이션 및/또는 시스템 범위의 활성 포커스를 가질 수 있는 기타 애플리케이션 또는 모듈은 동적 입력 장치(54)와 컴퓨팅 시스템(50) 사이의 통신을 핸들링하는 것을 조력하도록 구성될 수 있다. 여기서 소개된 API가 그러한 통신을 용이하게 하는데 사용될 수 있다.
컴퓨팅 시스템(50)은 선택저으로 보안 통신 모듈(74)을 포함할 수 있다. 보안 통신 모듈은 UI 런타임 애플리케이션(66), 런타임 환경(64) 및/또는 컨테이터 모듈(62)과 컴퓨팅 시스템의 다른 측면 사이의 보안 통신을 용이하게 하는데 사용될 수 있다. 하나의 비제한적 예로서, UI 런타임 애플리케이션(66), 런타임 환경(64) 및/또는 컨테이터 모듈(62)은 모든 메시지를 인증하는데 사용될 수 있는 서명된 전자 인증서를 가질 수 있어서, 컴퓨팅 시스템의 다른 측면이 메시지가 신뢰되는 소스로부터 오는 것임을 확인하기 위해 인증서를 검증할 수 있다.
컴퓨팅 시스템(50)은 메시지 통신을 포함하는 시스템 기능에 액세스하기 위해 다양한 시스템 컴포넌트에 의해 사용될 수 있는 하나 이상의 시스템 API(76)도 포함할 수 있다. 도 3에 도시되지 않았으나, 일부 실시형태에서 동적 입력 장치는 API(76)를 이용할 수 있다.
도 3으로 돌아가면, 일부 실시형태에서, 컴퓨팅 시스템(50)은 로직 서브시스템(78)과 데이터 홀딩(data-holding) 서브시스템(80)을 포함한다. 로직 서브시스템(78)은 하나 이상의 명령을 실행하도록 구성되는 하나 이상의 물리적 장치를 포함할 수 있다. 예를 들어, 로직 서브시스템은 하나 이상의 프로그램, 루틴, 객체, 컴포넌트, 데이터 구조 또는 기타 논리적 컨스트럭트(construct)의 일부인 하나 이상의 명령을 실행하도록 구성될 수 있다. 이러한 명령은 태스크를 수행하거나, 데이터 유형을 구현하거나, 하나 이상의 장치의 상태를 변환하거나, 기타 희망 결과에 도달하도록 구현될 수 있다. 로직 서브시스템은 소프트웨어 명령을 실행하도록 구성되는 하나 이상의 프로세서를 포함할 수 있다. 추가적으로 또는 대안으로서, 로직 서브시스템은 하드웨어 또는 펌웨어 명령을 실행하도록 구성된 하나 이상의 하드웨어 또는 펌웨어 로직 머신을 포함할 수 있다. 로직 서브시스템은 2 이상의 장치에 걸처 분산되는 개별 컴포넌트를 선택적으로 포함할 수 있는데, 이는 일부 실시형태에서 원격지에 위치될 수 있다.
데이터 홀딩 서브시스템(80)은 여기에 설명된 방법 및 프로세스를 구현하기 위해 로직 서브시스템에 의해 실행될 수 있는 데이터 및/또는 명령을 유지하도록 구성된 하나 이상의 물리적인, 비-일시적(non-transitory) 장치를 포함할 수 있다. 비제한적 예로서, 데이터 홀딩 서브시스템(80)은 운영 체제(60), 컨테이너 모듈(62), 런타임 환경(64), UI 런타임 애플리케이션(66) 및 데스크톱 애플리케이션(68)을 실행하는데 사용되는 명령을 유지하는데 사용될 수 있다. 이러한 방법 및 프로세스가 구현되는 때에, 데이터 홀딩 서브시스템(80)의 상태가 (예를 들어, 다른 데이터를 유지하도록) 변환될 수 있다. 데이터 홀딩 서브시스템(80)은 제거가능한(removable) 매체 및/또는 빌트인 장치를 포함할 수 있다. 데이터 홀딩 서브시스템(80)은 여러 가지 중에서도, 광학 메모리 장치, 반도체 메모리 장치 및/또는 자기 메모리 장치를 포함할 수 있다. 데이터 홀딩 서브시스템(80)은 다음의 특성 중 하나 이상을 갖는 장치를 포함할 수 있다: 휘발성, 비휘발성, 동적, 정적, 판독/기록, 판독 전용, 랜덤 액세스, 시퀀셜 액세스, 위치 어드레스가능(location addressable), 파일 어드레스가능(file addressable), 및 내용 어드레스가능(content addressable). 일부 실시형태에서, 로직 서브시스템(78) 및 데이터 홀딩 서브시스템(80)은 ASIC(application specific integrated circuit) 또는 SoC(system on a chip)와 같은 하나 이상의 공통 장치로 통합될 수 있다.
"모듈" 및 "엔진"이라는 용어는 하나 이상의 특정 기능을 수행하도록 구현된 컴퓨팅 시스템(50)의 측면을 설명하는데 사용될 수 있다. 어떤 경우에, 이러한 모듈 또는 엔진은 데이터 홀딩 서브시스템(80)에 의해 유지되는 명령을 실행하는 로직 서브시스템(78)을 통해 인스턴스화될 수 있다. 상이한 모듈 및/또는 엔진이 동일한 애플리케이션, 코드 블록, 객체, 루틴 및/또는 함수로부터 인스턴스화될 수 있음을 이해할 것이다. 유사하게, 어떤 경우에, 동일한 모듈 및/또는 엔진이 상이한 애플리케이션, 코드 블록, 객체, 루틴 및/또는 함수에 의해 인스턴스화될 수 있다.
전술한 바와 같이, 데스크톱 애플리케이션 및 보조 경험(예를 들어, UI 런타임 애플리케이션)은 사용자에게 풍부한 양방향(interactive) 입력 경험을 제공하기 위해 협업할 수 있다. 다양한 상이한 아키텍처 및 프로토콜이 도 3을 참조하여 설명된 패러다임을 구현하기 위해 사용될 수 있다. 도 4 및 5는 2개의 상이한 예시적인 아키텍처를 도시한다.
도 4 및 5의 예시적인 아키텍처에서, 동적 입력 장치는 레스터라이징(rasterizing) 장치로 다루어진다. 그러므로, 소프트웨어 스택은 동적 입력 장치에서 복잡한 GPU를 지원할 필요가 없고, 오히려 모든 복잡한 조직(compositing)과 렌더링이 호스트 연산 장치상에서 완료될 수 있다. 이와 같이, 레스터 이미지(비트맵) 만이 동적 입력 장치로 전달된다. 동적 입력 장치가 단순한 레스터라이저가 아니고 더 강력한 CPU 및/또는 GPU를 갖는 장치인 실시형태에서, 아키텍처는 런타임 환경이 동적 입력 장치 자체에서 호스팅되도록 확장될 수 있다.
동적 입력 장치의 모든 적응형 특징(예를 들어, 동적 입력 장치가 키보드를 포함하는가, 동적 입력 장치가 터치 센서를 포함하는가, 터치 센서의 크기가 어떻게 되는가 등)을 이뉴머레이트하기 위해 장치 추상화(device abstraction)가 사용될 수 있다. 장치 추상화는 동적 입력 장치 상에서 무엇이 렌더링되는지를 제어하는데 사용될 수도 있다. 장치 추상화 인터페이스는 윈도우리스 런타임 컨트롤에서 완전히 렌더링된 비트맵을 얻고 완전히 렌더링된 비트맵을 표시를 위해 동적 입력 장치로 라우팅하기 위해 사용될 수도 있다. 장치 추상화 인터페이스는 터치 데이터뿐만 아니라 동적 입력 장치와의 여하한 기타 사용자 상호작용을 보고하기 위한 동적 입력 장치를 위한 설비를 제공할 수도 있다. 이 터치 데이터 및 기타 정보는 윈도우리스 런타임 컨트롤에서 현재 실행되는 시각적 트리에서의 표현을 위해 다시 라우팅될 수 있다. 추상화는 버스(예를 들어, USB, 이더넷 등)를 알지 못한다(agnostic).
도 4는 2 이상의 상이한 주 애플리케이션에 의해 특정되는 입력 장치 사용자 인터페이스 런타임 애플리케이션을 실행하도록 구성되는 공유 윈도우리스 런타임 환경(92)을 이용하는 예시적인 아키텍처(90)를 도시한다. 구체적으로, 예시적인 아키텍처는 단일한 마이크로소프트 실버라이트 컨트롤로 모든 애플리케이션으로부터의 모든 등록된 컨텐츠를 관리하도록 구성된 액세스 제어 계층(ACL)(94)과 함께 그 단일의 마이크로소프트 실버라이트 컨트롤을 이용한다. 전술한 바와 같이, 다른 런타임 환경이 본 개시의 범위를 벗어나지 않고 사용될 수 있다. 이 아키텍처는 단일의 컨트롤을 이용하고 따라서 프로세스 경계를 넘는 데이터의 인스턴스를 더 적게 사용한다. 그러나, 여하한 등록된 보조 경험에서의 잘못된 코드가 모든 다른 경험에 영향을 줄 수 있다.
도 5는 주 애플리케이션(100)에 의해 호스팅되고 그 주 애플리케이션에 의해서만 특정되는 입력 장치 사용자 인터페이스 런타임 애플리케이션을 실행하도록 구성되는 로컬 윈도우리스 런타임(98) 환경을 이용하는 예시적인 아키텍처(96)를 도시한다. 구체적으로, 마이크로소프트 실버라이트 컨트롤은 보조 경험을 등록/활성화하는 각각의 주 애플리케이션의 프로세스 내에서 생성된다. 다른 마이크로소프트 실버라이트 컨트롤(102)은 액세스 제어 계층(104)의 규율에 의해 제어되는 최종 조직(composition)을 위해 사용되는 별도의 런타임에서 생성된다. 포커스 변화를 추적하는 것에 추가하여, ACL은 각각의 관련 애플리케이션/경험으로부터의 현재 비트맵을 추적하도록 강화된다. 이 아키텍처는 모든 애플리케이션 경험을 별개로 유지하고, 주어진 경험에서의 악성 코드는 그 악성 코드를 공급하는 애플리케이션에만 영향을 준다. 또한, 여하한 보안 이슈도 애플리케이션 그 자체에 포함된다. 이 아키텍처는 주 애플리케이션과 연관된 호스팅되는 경험 사이의 고충실(higher fidelity) 통신 채널을 가능하게 할 수 있는데, 주 애플리케이션과 경험이 모두 동일한 프로세스에 있기 때문이다. 이 아키텍처는 프로세스간 데이터 공유를 위해 더 높은 대역폭을 이용할 수 있다.
도 4 및 5에 도시되고 위에서 설명한 예시적인 아키텍처는 제한적인 것이 아니다. 다른 아키텍처가 본 개시의 범위를 벗어나지 않고 사용될 수 있다.
도 6은 동적 입력 장치(112)를 통해 사용자 입력이 수행되는 시퀀스(110)를 조금 개략적으로 도시하는데, 동적 입력 장치(112)는 디스플레이(114)를 이용하는 연산 장치(예를 들어, 도 3의 컴퓨팅 시스템(50), 미도시)에 대해 주변기기로서 기능할 수 있다. 도시된 예에서, 이메일 애플리케이션(116)은 현재 연산 장치의 시스템 범위의 활성 포커스를 갖고, 이메일 애플리케이션은 UI 런타임 애플리케이션 형태의 보조 경험과 협업하고 있다. 시퀀스(110)은 상술한 시스템과 방법의 예시적인 구현을 나타내는데, 이는 연산 장치가 동적 입력 장치(112)와 디스플레이(114) 모두에 그래픽을 나타낼 수 있도록 한다. 도시된 시퀀스(110)는 시간 t1에서 시간 t4까지 시간적으로 진행하는 타임라인을 통해 설명된다.
t1에서, 입력 시퀀스는 동적 입력 장치(112) 상에서 사용자가 키 입력을 수행함으로써 시작된다. 도시된 예에서, 키 입력은 사용자가 t 키를 누른 후 r 키를 누르는 키 다운 입력이다. 동적 입력 장치(112)는 각 키에 이미지(예를 들어, t 키에는 "t"의 이미지, r 키에는 "r"의 이미지)를 표시할 수 있음을 유의하여야 한다. 그러나, 이해의 단순화를 위해, 도 6은 본 예와 관련있는 키 상의 키 이미지만을 도시한다.
상술한 바와 같이, 동적 입력 장치에 포함되는 입력 감지 서브시스템은 키 입력을 검출할 수 있고 연산 장치로 키 입력 신호를 전송할 수 있다. 여하한 적당한 유형의 메시지 및/또는 인코딩이 키 입력을 보고하는데 사용될 수 있다. 연산 장치는 상술한 바와 같이 입력 신호를 처리할 수 있다.
그러면 디스플레이는 연산 장치로부터의 신호를 수신하고 디스플레이 상에 제시되는 활성 컨텐츠를 변경할 수 있다. 이 예에서, 키에 대응하는 문자가 대응하는 키가 활성화되는 때에 텍스트 박스(118)에 표시된다. 이메일 애플리케이션이 또한 입력을 분석하고 사용자가 이메일을 보내려고 하는 컨텐츠를 예측할 수 있다.
t2에서, 동적 입력 장치는 연산 장치로부터 신호를 수신하고 복수의 가상 버튼(즉, 연락처 컨트롤 버튼 120a, 연락처 컨트롤 버튼 120b, 연락처 컨트롤 버튼 120c)을 동적 입력 장치의 터치 디스플레이(121) 상에 나타낸다. 가상 버튼은 이메일 애플리케이션이 가장 가능성 있는 이메일 수신자라고 판정한 연락처에 대응한다. 가상 버튼은 사용자가 터치하여 활성화할 수 있는 터치 스크린 상의 컨트롤로서 기능할 수 있음을 인식할 것이다. 가상 버튼은 보조 경험을 이메일 애플리케이션에 제공하고 있는 UI 런타임 애플리케이션을 통해 동적 입력 장치에 제공될 수 있다. 상술한 바와 같이, UI 런타임 애플리케이션은 윈도우리스 컨트롤일 수 있다.
t3에서, 사용자는 동적 입력 장치에 의해 표시되는 가상 버튼 중 하나(즉, 연락처 컨트롤 버튼 120a)에 지향되는 터치 입력을 수행한다. 감시 서브시스템은 터치 입력을 검출하고 연산 장치에 메시지를 전송한다. 상술한 바와 같이, 이메일 애플리케이션이 시스텀 범위의 활성 포커스를 갖고 있음에도, 이 메시지는 UI 런타임 애플리케이션에 의해 처리될 수 있다. 메시지를 수신하면, UI 런타임 애플리케이션은 이메일 애플리케이션과 통신하여, 사용자가 연락처 컨트롤 버튼 120a에 대응하는 연락처를 선택하였음을 나타낼 수 있다.
t4에서, 터치 입력에 응답하여, 그리고 UI 런타임 애플리케이션으로부터의 통신을 수신하면, 이메일 애플리케이션은 자동으로 연락처 컨트롤 버튼 120a에 대응하는 연락처의 이메일 주소(122)를 채워넣고 표시한다.
위의 예에 의해 인식될 수 있는 바와 같이, 여기에 설명된 시스템 및 방법은 동적 입력 장치가 사용자에게 정보를 사용자에 의해 활성화될 수 있는 가상 컨트롤 및/또는 동적 키의 형태로 표시할 수 있도록 한다. 또한, 여기에 설명된 시스템 및 방법은 가상 컨트롤, 그리고 일부 실시형태에서는 동적 키의 활성화가 시스템 범위의 활성 포커스의 보통의 제한 없이 기능할 수 있도록 한다.
도 7은 동적 입력 장치로부터의 입력을 관리하기 위해 윈도우리스 런타임 환경을 사용하는 예시적인 방법(130)을 도시한다. 132에서, 방법(130)은 윈도우리스 런타임 환경을 포함하는 하나 이상의 런타임 환경을 호스팅하는 것을 포함한다. 134에서, 방법(130)은, 윈도우리스 런타임 환경 밖에서 실행되는 다른 애플리케이션이 시스템 범위의 활성 포커스를 갖는 동안, 동적 입력 장치로부터 동적 입력 메시지를 수신하는 것을 포함한다.
도 8은 동적 입력 장치로 보조 경험을 구현하기 위한 주 애플리케이션을 대한 예시적인 방법(140)을 도시한다. 142에서, 방법(140)은 주 애플리케이션의 제1 맥락을 결정하는 것을 포함한다. 예를 들어, 주 애플리케이션은 스스로 주 애플리케이션이 특정 맥락에 있음(예를 들어, 새로운 이메일을 생성, 연락처를 찾음, 새로운 모임을 스케줄, 태스크를 리뷰 등)을 결정할 수 있다. 애플리케이션은 다양한 상이한 맥락을 가질 수 있는데, 이들 각각은 상이한 보조 경험에 대응할 수 있다.
144에서, 방법(140)은 제1 보조 경험을 특정하는 것을 포함한다. 특정된 보조 경험은 주 애플리케이션과는 별개이고 주 애플리케이션의 제1 맥락에 대응한다. 전술한 바와 같이, 특정된 보조 경험은 동적 입력 장치 상에 가상 컨트롤의 제1 세트를 동적으로 표시하고 주 애플리케이션에 가상 컨트롤의 제1 세트의 활성화를 보고하도록 구성될 수 있다.
146에서, 방법(140)은 주 애플리케이션의 제1 맥락과는 다른, 주 애플리케이션의 제2 맥락을 결정하는 것을 포함한다. 예를 들어, 주 애플리케이션은 주 애플리케이션이 제1 맥락에서 제2 맥락으로 변경(예를 들어, 이메일 생성 맥락에서 약속 스캐줄 맥락으로 변경)하였다고 스스로 결정할 수 있다. 다른 맥락은 동적 입력 장치를 통해 표시될 다른 보조 경험에 대응할 수 있다.
148에서, 방법(140)은 주 애플리케이션과 별개이고 제1 보조 경험과 다른 제2 보조 경험을 특정하는 것을 포함한다. 제2 보조 경험은 주 애플리케이션의 제2 맥락에 대응하고 동적 입력 장치 상에 가상 컨트롤의 제2 세트를 동적으로 표시하고 주 애플리케이션에 가상 컨트롤의 제2 세트의 활성화를 보고하도록 구성된다.
여기 설명된 구성 및/또는 방식은, 수많은 변경이 가능하기 때문에, 근본적으로 예시적인 것이고 이들 구체적인 실시형태 또는 예는 제한적인 것으로 생각되어서는 안되다는 점을 인식하여야 한다. 여기에 설명된 구체적인 루틴 또는 방법은 임의의 개수의 처리 전략(processing strategy) 중 하나 이상을 나타낼 수 있다. 이와 같이, 설명된 다양한 동작은 설명된 순서로, 다른 순서로, 병렬로, 또는 어떤 경우에는 생략된 채로 수행될 수 있다. 유사하게, 상술한 프로세스의 순서가 변경될 수 있다.
본 개시의 주제는 여기에 개시된 다양한 프로세스, 시스템 및 구성, 그리고 기타 특징, 기능, 동작 및/또는 속성뿐만 아니라 그의 임의의 모든 균등물의 신규하고 자명하지 않은 모든 조합 및 하위조합(subcombination)을 포함한다.

Claims (20)

  1. 시스템 범위의 활성 포커스(system-wide active focus)를 갖지 않으며 동적 입력 장치 상에 이미지를 동적으로 표시하기 위한 둘 이상의 별개의 입력 장치 사용자 인터페이스 런타임 애플리케이션(input-device user-interface runtime application) -상기 둘 이상의 입력 장치 사용자 인터페이스 런타임 애플리케이션은 현재 활성인 데스크톱에서 실행되도록 구성된 윈도우리스(windowless) 런타임 환경 내에서 독립적으로 실행되도록 구성됨- 과,
    상기 현재 활성인 데스크톱 내 상기 윈도우리스 런타임 환경 밖에서 실행되도록 구성되며 시스템 범위의 활성 포커스를 갖는 주 데스크톱 애플리케이션(dominant desktop application) -상기 주 데스크톱 애플리케이션은, 상기 둘 이상의 별개의 입력 장치 사용자 인터페이스 런타임 애플리케이션을 선택적으로 이용하고 상기 둘 이상의 별개의 입력 장치 사용자 인터페이스 런타임 애플리케이션으로부터 상기 주 데스크톱 애플리케이션의 현재 맥락(current context)에 대응하는 입력 장치 사용자 인터페이스 런타임 애플리케이션을 특정하도록 구성되고, 상기 특정된 입력 장치 사용자 인터페이스 런타임 애플리케이션은, 상기 동적 입력 장치 상에 가상 컨트롤을 동적으로 표시하고 상기 주 데스크톱 애플리케이션에 상기 가상 컨트롤의 활성화를 보고하도록 구성되지만, 상기 특정된 입력 장치 사용자 인터페이스 런타임 애플리케이션은 시스템 범위의 활성 포커스를 갖지 않음-
    을 포함하는 컴퓨팅 시스템.
  2. 제 1 항에 있어서,
    상기 윈도우리스 런타임 환경은 둘 이상의 상이한 주 데스크톱 애플리케이션에 의해 특정된 입력 장치 사용자 인터페이스 런타임 애플리케이션을 실행하도록 구성된 공유 윈도우리스 런타임 환경(shared windowless runtime environment)인
    컴퓨팅 시스템.
  3. 제 1 항에 있어서,
    상기 윈도우리스 런타임 환경은, 상기 주 데스크톱 애플리케이션에 의해 호스팅되고 상기 주 데스크톱 애플리케이션에 의해 특정된 입력 장치 사용자 인터페이스 런타임 애플리케이션을 실행하도록 구성된 로컬 윈도우리스 런타임 환경인
    컴퓨팅 시스템.
  4. 제 1 항에 있어서,
    상기 윈도우리스 런타임 환경은 마이크로소프트 액티브엑스(Microsoft® ActiveX®) 컨트롤인
    컴퓨팅 시스템.
  5. 제 4 항에 있어서,
    상기 마이크로소프트 액티브엑스 컨트롤은 마이크로소프트 실버라이트(Microsoft® Silverlight™) 플러그인인
    컴퓨팅 시스템.
  6. 제 4 항에 있어서,
    상기 마이크로소프트 액티브엑스 컨트롤은 어도비 플래시(Adobe® Flash®) 플러그인인
    컴퓨팅 시스템.
  7. 제 1 항에 있어서,
    상기 둘 이상의 입력 장치 사용자 인터페이스 런타임 애플리케이션은 마이크로소프트 실버라이트 애플리케이션인
    컴퓨팅 시스템.
  8. 제 1 항에 있어서,
    상기 둘 이상의 입력 장치 사용자 인터페이스 런타임 애플리케이션은 둘 이상의 마이크로소프트 실버라이트 XAP 파일로서 캡슐화되는
    컴퓨팅 시스템.
  9. 제 1 항에 있어서,
    상기 입력 장치 사용자 인터페이스 런타임 애플리케이션을 특정하기 위한 상기 주 데스크톱 애플리케이션에 대한 제1 호출(call), 및 상기 가상 컨트롤의 활성화를 상기 주 데스크톱 애플리케이션에게 보고하기 위한 상기 특정된 입력 장치 사용자 인터페이스 런타임 애플리케이션에 대한 제2 호출을 포함하는 애플리케이션 프로그래밍 인터페이스를 더 포함하는
    컴퓨팅 시스템.
  10. 제 9 항에 있어서,
    상기 동적 입력 장치에 동적으로 표시되는 상기 가상 컨트롤이 상기 주 데스크톱 애플리케이션의 현재 맥락에 대응하도록, 상기 애플리케이션 프로그래밍 인터페이스는, 상기 주 데스크톱 애플리케이션의 상기 현재 맥락이 변경됨에 따라, 상기 주 데스크톱 애플리케이션이 상기 윈도우리스 런타임 환경 내에서 실행되는 상기 둘 이상의 입력 장치 사용자 인터페이스 런타임 애플리케이션을 변경하는 것을 허용하도록 구성되는
    컴퓨팅 시스템.
  11. 시스템 범위의 활성 포커스를 갖는 주 데스크톱 애플리케이션이 동적 입력 장치 상에서 입력 장치 사용자 인터페이스를 구현하기 위한 방법으로서,
    상기 주 데스크톱 애플리케이션의 제1 맥락을 결정하는 단계와,
    상기 주 데스크톱 애플리케이션에 의해 제공되는 데스크톱 사용자 인터페이스와는 별개이고 상기 주 데스크톱 애플리케이션의 상기 제1 맥락에 대응하는 제1 입력 장치 사용자 인터페이스를 특정하는 단계 -상기 제1 입력 장치 사용자 인터페이스는, 상기 동적 입력 장치 상에서 가상 컨트롤의 제1 세트를 동적으로 표시하고 윈도우리스 런타임 환경 내에서 시스템 범위의 활성 포커스 없이 실행되는 제1 입력 장치 사용자 인터페이스 런타임 애플리케이션을 통해 상기 주 데스크톱 애플리케이션에 상기 가상 컨트롤의 제1 세트의 활성화를 보고하도록 구성됨- 와,
    상기 주 데스크톱 애플리케이션의 상기 제1 맥락과는 다른, 상기 주 데스크톱 애플리케이션의 제2 맥락을 결정하는 단계와,
    상기 주 데스크톱 애플리케이션에 의해 제공된 상기 데스크톱 사용자 인터페이스와 별개이고 상기 제1 입력 장치 사용자 인터페이스와 다른 제2 입력 장치 사용자 인터페이스를 특정하는 단계 -상기 제2 입력 장치 사용자 인터페이스는 상기 주 데스크톱 애플리케이션의 상기 제2 맥락에 대응하고, 상기 동적 입력 장치 상에 가상 컨트롤의 제2 세트를 동적으로 표시하고 윈도우리스 런타임 환경 내에서 시스템 범위의 활성 포커스 없이 실행되는 제2 입력 장치 사용자 인터페이스 런타임 애플리케이션을 통해 상기 주 데스크톱 애플리케이션에 상기 가상 컨트롤의 제2 세트의 활성화를 보고하도록 구성됨-
    를 포함하는 입력 장치 사용자 인터페이스 구현 방법.
  12. 제 11 항에 있어서,
    상기 제1 입력 장치 사용자 인터페이스를 특정하는 단계는, 상기 제1 입력 장치 사용자 인터페이스를 둘 이상의 상이한 주 데스크톱 애플리케이션에 의해 특정되는 입력 장치 사용자 인터페이스를 실행하도록 구성된 공유 윈도우리스 런타임 환경에 전달하는 단계를 포함하는
    입력 장치 사용자 인터페이스 구현 방법.
  13. 제 11 항에 있어서,
    상기 제1 입력 장치 사용자 인터페이스를 특정하는 단계는, 상기 제1 입력 장치 사용자 인터페이스를 상기 주 데스크톱 애플리케이션에 의해 호스팅되고 상기 주 데스크톱 애플리케이션에 의해 특정되는 입력 장치 사용자 인터페이스를 실행하도록 구성된 로컬 윈도우리스 런타임 환경에 전달하는 단계를 포함하는
    입력 장치 사용자 인터페이스 구현 방법.
  14. 제 11 항에 있어서,
    상기 제1 입력 장치 사용자 인터페이스는 애플리케이션 프로그래밍 인터페이스를 통해 윈도우리스 런타임 환경에 전달되는
    입력 장치 사용자 인터페이스 구현 방법.
  15. 제 14 항에 있어서,
    상기 제1 입력 장치 사용자 인터페이스가 상기 윈도우리스 런타임 환경에서 실행될 경우, 상기 애플리케이션 프로그래밍 인터페이스가 상기 주 데스크톱 애플리케이션과 상기 제1 입력 장치 사용자 인터페이스 사이의 통신 채널을 제공하는
    입력 장치 사용자 인터페이스 구현 방법.
  16. 제 11 항에 있어서,
    상기 제1 입력 장치 사용자 인터페이스는 마이크로소프트 실버라이트(Microsoft® Silverlight™) 애플리케이션인
    입력 장치 사용자 인터페이스 구현 방법.
  17. 동적 입력 장치 상에 이미지를 동적으로 표시하기 위한 둘 이상의 별개의 입력 장치 사용자 인터페이스 런타임 애플리케이션 -상기 둘 이상의 입력 장치 사용자 인터페이스 런타임 애플리케이션은 현재 활성인 데스크톱에서 시스템 범위의 활성 포커스 없이 독립적으로 실행되도록 구성됨- 과,
    상기 현재 활성인 데스크톱에서 상기 시스템 범위의 활성 포커스를 가지고 실행되도록 구성된 주 데스크톱 애플리케이션 -상기 주 데스크톱 애플리케이션은, 상기 주 데스크톱 애플리케이션의 현재 맥락에 대응하는 하나의 입력 장치 사용자 인터페이스 런타임 애플리케이션을 특정하여 상기 주 데스크톱 애플리케이션에 의해 선택적으로 사용가능한 상기 둘 이상의 별개의 입력 장치 사용자 인터페이스 런타임 애플리케이션 중 다른 입력 장치 사용자 인터페이스 런타임 애플리케이션과는 독립적으로 선택적으로 실행되게 하도록 구성되고, 상기 특정된 입력 장치 사용자 인터페이스 런타임 애플리케이션은, 상기 동적 입력 장치 상에 가상 컨트롤을 동적으로 표시하고 상기 주 데스크톱 애플리케이션에 상기 가상 컨트롤의 활성화를 보고하도록 구성됨-
    을 포함하는 컴퓨팅 시스템.
  18. 제 17 항에 있어서,
    상기 둘 이상의 입력 장치 사용자 인터페이스 런타임 애플리케이션은 현재 활성 데스크톱에서 실행된 윈도우리스 런타임 환경 내에서 실행되는
    컴퓨팅 시스템.
  19. 제 18 항에 있어서,
    상기 윈도우리스 런타임 환경은 둘 이상의 상이한 주 데스크톱 애플리케이션에 의해 특정된 입력 장치 사용자 인터페이스 런타임 애플리케이션을 실행하도록 구성된 공유 윈도우리스 런타임 환경인
    컴퓨팅 시스템.
  20. 제 18 항에 있어서,
    상기 윈도우리스 런타임 환경은, 상기 주 데스크톱 애플리케이션에 의해 호스팅되고 상기 주 데스크톱 애플리케이션에 의해 특정된 입력 장치 사용자 인터페이스 런타임 애플리케이션을 실행하도록 구성된 로컬 윈도우리스 런타임 환경인
    컴퓨팅 시스템.
KR1020127032966A 2010-06-18 2011-06-06 동적 입력 장치의 맥락 제어 기법 KR101741293B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/818,809 2010-06-18
US12/818,809 US8248373B2 (en) 2010-06-18 2010-06-18 Contextual control of dynamic input device
PCT/US2011/039321 WO2011159519A2 (en) 2010-06-18 2011-06-06 Contextual control of dynamic input device

Publications (2)

Publication Number Publication Date
KR20130121692A KR20130121692A (ko) 2013-11-06
KR101741293B1 true KR101741293B1 (ko) 2017-05-29

Family

ID=45329804

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127032966A KR101741293B1 (ko) 2010-06-18 2011-06-06 동적 입력 장치의 맥락 제어 기법

Country Status (7)

Country Link
US (1) US8248373B2 (ko)
EP (1) EP2583154B1 (ko)
JP (1) JP5798623B2 (ko)
KR (1) KR101741293B1 (ko)
CN (1) CN102934052B (ko)
HK (1) HK1178988A1 (ko)
WO (1) WO2011159519A2 (ko)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2350779A4 (en) 2008-11-25 2018-01-10 Jeffrey R. Spetalnick Methods and systems for improved data input, compression, recognition, correction, and translation through frequency-based language analysis
WO2012037200A2 (en) * 2010-09-15 2012-03-22 Spetalnick Jeffrey R Methods of and systems for reducing keyboard data entry errors
US9507519B2 (en) * 2011-12-08 2016-11-29 Intel Corporation Methods and apparatus for dynamically adapting a virtual keyboard
US10776103B2 (en) 2011-12-19 2020-09-15 Majen Tech, LLC System, method, and computer program product for coordination among multiple devices
TW201335794A (zh) * 2012-02-17 2013-09-01 Primax Electronics Ltd 鍵盤裝置
US9817442B2 (en) * 2012-02-28 2017-11-14 Razer (Asia-Pacific) Pte. Ltd. Systems and methods for presenting visual interface content
CN103294207A (zh) * 2012-02-29 2013-09-11 致伸科技股份有限公司 键盘装置
US10367859B2 (en) * 2013-09-12 2019-07-30 International Business Machines Corporation Organizing a synchronous communication session according to context
US11914419B2 (en) 2014-01-23 2024-02-27 Apple Inc. Systems and methods for prompting a log-in to an electronic device based on biometric information received from a user
EP3130999B1 (en) * 2014-01-23 2019-01-23 Apple Inc. Systems, devices, and methods for dynamically providing user interface controls at a touch screen display
US10656719B2 (en) 2014-09-30 2020-05-19 Apple Inc. Dynamic input surface for electronic devices
TWI649686B (zh) 2015-09-30 2019-02-01 美商蘋果公司 具有適應性輸入列之鍵盤
US10409412B1 (en) 2015-09-30 2019-09-10 Apple Inc. Multi-input element for electronic device
US10191621B2 (en) * 2016-04-29 2019-01-29 Microsoft Technology Licensing, Llc Exposing populated lists of personalized strings
AU2017100879B4 (en) 2016-07-29 2017-09-28 Apple Inc. Systems, devices, and methods for dynamically providing user interface controls at touch-sensitive secondary display
US10318065B2 (en) 2016-08-03 2019-06-11 Apple Inc. Input device having a dimensionally configurable input area
US10871860B1 (en) 2016-09-19 2020-12-22 Apple Inc. Flexible sensor configured to detect user inputs
WO2018067167A1 (en) * 2016-10-07 2018-04-12 Hewlett-Packard Development Company, L.P. Keyboard with secondary display device
JP7232759B2 (ja) * 2016-11-25 2023-03-03 ホロジック, インコーポレイテッド 保健医療情報の操作および可視化コントローラ
US10732743B2 (en) 2017-07-18 2020-08-04 Apple Inc. Concealable input region for an electronic device having microperforations
US10732676B2 (en) 2017-09-06 2020-08-04 Apple Inc. Illuminated device enclosure with dynamic trackpad
US10635134B2 (en) * 2018-05-11 2020-04-28 Apple Inc. Systems and methods for customizing display modes for a touch-sensitive secondary display
US20230137876A1 (en) * 2021-11-04 2023-05-04 Oracle International Corporation System and method for providing on-demand localization in a microservice application environment

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6677933B1 (en) 1999-11-15 2004-01-13 Espial Group Inc. Method and apparatus for operating a virtual keyboard
US20060152496A1 (en) 2005-01-13 2006-07-13 602531 British Columbia Ltd. Method, system, apparatus and computer-readable media for directing input associated with keyboard-type device
US7277915B2 (en) 2002-11-11 2007-10-02 Openwave Systems Inc. Application-based protocol and proxy selection by a mobile device in a multi-protocol network environment
US20080320410A1 (en) 2007-06-19 2008-12-25 Microsoft Corporation Virtual keyboard text replication

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09222952A (ja) * 1996-02-19 1997-08-26 Toshiba Corp 文字入力方法およびメッセージ送信方法
US6401138B1 (en) 1996-10-28 2002-06-04 Koninklijke Philips Electronics N.V. Interface for patient context sharing and application switching
US5818361A (en) 1996-11-07 1998-10-06 Acevedo; Elkin Display keyboard
EP1016066A4 (en) * 1997-03-31 2001-06-13 G & R Associates Inc COMPUTER / TELEPHONE INTEGRATION WITH INTELLIGENT KEYBOARD, AND ASSOCIATED METHOD
US6968405B1 (en) 1998-07-24 2005-11-22 Aristocrat Leisure Industries Pty Limited Input/Output Interface and device abstraction
US7577915B2 (en) 2002-03-08 2009-08-18 4Homemedia, Inc. Dynamic reconfiguration of inputs based on contextual focus
US20040036632A1 (en) * 2002-08-21 2004-02-26 Intel Corporation Universal display keyboard, system, and methods
US7069206B2 (en) 2003-04-24 2006-06-27 International Business Machines Corporation Method and apparatus for abstraction of physical hardware implementation to logical software drivers
US8689135B2 (en) 2005-08-11 2014-04-01 Koninklijke Philips N.V. Method of driving an interactive system and user interface system
US20080092087A1 (en) * 2005-09-19 2008-04-17 Ronald Brown Method and Display Data Entry Unit
US8650345B2 (en) * 2006-10-30 2014-02-11 Microsoft Corporation Web configurable human input devices
US20090033628A1 (en) * 2007-07-16 2009-02-05 Srivastava Aditya Narain Method and systems for revealing function assignments on fixed keypads
US20090027346A1 (en) * 2007-07-16 2009-01-29 Srivastava Aditya Narain Methods and systems for personalizing and branding mobile device keypads
US20090073126A1 (en) * 2007-07-16 2009-03-19 Srivastava Aditya Narain Standardized method and systems for providing configurable keypads
US9442584B2 (en) * 2007-07-30 2016-09-13 Qualcomm Incorporated Electronic device with reconfigurable keypad
US20090079702A1 (en) 2007-09-25 2009-03-26 Nokia Corporation Method, Apparatus and Computer Program Product for Providing an Adaptive Keypad on Touch Display Devices
US20090174663A1 (en) 2008-01-03 2009-07-09 Electronic Data Systems Corporation Dynamically configurable keyboard for computer
US20090215512A1 (en) * 2008-02-25 2009-08-27 Tc Websites Llc Systems and methods for a gaming platform
US8040233B2 (en) * 2008-06-16 2011-10-18 Qualcomm Incorporated Methods and systems for configuring mobile devices using sensors
KR20110013482A (ko) * 2008-06-16 2011-02-09 퀄컴 인코포레이티드 모바일 텔레비전 및 멀티미디어 플레이어 키 제공 방법
US9081590B2 (en) 2008-06-24 2015-07-14 Microsoft Technology Licensing, Llc Multimodal input using scratchpad graphical user interface to edit speech text input with keyboard input
US20100042682A1 (en) * 2008-08-15 2010-02-18 Evan John Kaye Digital Rights Management for Music Video Soundtracks
US20100259482A1 (en) * 2009-04-10 2010-10-14 Microsoft Corporation Keyboard gesturing

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6677933B1 (en) 1999-11-15 2004-01-13 Espial Group Inc. Method and apparatus for operating a virtual keyboard
US7277915B2 (en) 2002-11-11 2007-10-02 Openwave Systems Inc. Application-based protocol and proxy selection by a mobile device in a multi-protocol network environment
US20060152496A1 (en) 2005-01-13 2006-07-13 602531 British Columbia Ltd. Method, system, apparatus and computer-readable media for directing input associated with keyboard-type device
US20080320410A1 (en) 2007-06-19 2008-12-25 Microsoft Corporation Virtual keyboard text replication

Also Published As

Publication number Publication date
WO2011159519A3 (en) 2012-04-05
JP2013532334A (ja) 2013-08-15
JP5798623B2 (ja) 2015-10-21
EP2583154A2 (en) 2013-04-24
US8248373B2 (en) 2012-08-21
CN102934052A (zh) 2013-02-13
WO2011159519A2 (en) 2011-12-22
US20110314405A1 (en) 2011-12-22
EP2583154B1 (en) 2019-04-10
KR20130121692A (ko) 2013-11-06
CN102934052B (zh) 2016-03-16
EP2583154A4 (en) 2016-04-06
HK1178988A1 (zh) 2013-09-19

Similar Documents

Publication Publication Date Title
KR101741293B1 (ko) 동적 입력 장치의 맥락 제어 기법
US9354900B2 (en) Method and apparatus for presenting a window in a system having two operating system environments
US10503344B2 (en) Dynamic cross-environment application configuration/orientation
EP3161628B1 (en) Intelligent gpu scheduling in a virtualization environment
EP3207458B1 (en) Input signal emulation
US9417793B2 (en) Global keyboard shortcuts management for web applications
US10970129B2 (en) Intelligent GPU scheduling in a virtualization environment
CN104704448A (zh) 本地和远程计算环境之间的反向无缝集成
US20120278747A1 (en) Method and apparatus for user interface in a system having two operating system environments
KR20140147095A (ko) 인스턴스화가능한 제스처 객체
US20150339005A1 (en) Methods for handling applications running in the extend mode and tablet computers using the same
TW201617839A (zh) 光解離管理器
US11734032B1 (en) Virtual desktop switching and communications
US20110314399A1 (en) Windowless runtime control of dynamic input device
US11054915B2 (en) Locally implemented terminal latency mitigation
US10637827B2 (en) Security network system and data processing method therefor
US9990193B2 (en) Agile software development process and results
US20230266976A1 (en) Syncing settings across incompatible operating systems
US20230018279A1 (en) Per-window digital watermark for desktop applications
EP3866007B1 (en) Intelligent gpu scheduling in a virtualization environment
Knight Case Study: Porting Qt to Windows Runtime
Garofalo et al. Building Windows 8.1 Apps from the Ground Up

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