KR20200102413A - 유니버셜 하드웨어-소프트웨어 인터페이스의 구현을 위한 방법, 장치 및 컴퓨터-판독가능 매체 - Google Patents

유니버셜 하드웨어-소프트웨어 인터페이스의 구현을 위한 방법, 장치 및 컴퓨터-판독가능 매체 Download PDF

Info

Publication number
KR20200102413A
KR20200102413A KR1020207008012A KR20207008012A KR20200102413A KR 20200102413 A KR20200102413 A KR 20200102413A KR 1020207008012 A KR1020207008012 A KR 1020207008012A KR 20207008012 A KR20207008012 A KR 20207008012A KR 20200102413 A KR20200102413 A KR 20200102413A
Authority
KR
South Korea
Prior art keywords
transparent layer
command
computing devices
operating system
identified context
Prior art date
Application number
KR1020207008012A
Other languages
English (en)
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 KR20200102413A publication Critical patent/KR20200102413A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • 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
    • 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/017Gesture based interaction, e.g. based on a set of recognized hand gestures
    • 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/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/0346Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor with detection of the device orientation or free movement in a 3D space, e.g. 3D mice, 6-DOF [six degrees of freedom] pointers using gyroscopes, accelerometers or tilt-sensors
    • 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/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/0354Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor with detection of 2D relative movements between the device, or an operating part thereof, and a plane or surface, e.g. 2D mice, trackballs, pens or pucks
    • G06F3/03545Pens or stylus
    • 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/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/038Control and interface arrangements therefor, e.g. drivers or device-embedded control circuitry
    • 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
    • G06F3/0482Interaction with lists of selectable items, e.g. menus
    • 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • 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/16Sound input; Sound output
    • G06F3/167Audio in a user interface, e.g. using voice commands for navigating, audio feedback
    • 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/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F2003/0697Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers device management, e.g. handlers, drivers, I/O schedulers
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • General Health & Medical Sciences (AREA)
  • Multimedia (AREA)
  • User Interface Of Digital Computer (AREA)
  • Position Input By Displaying (AREA)

Abstract

유니버셜 하드웨어-소프트웨어 인터페이스(Universal Hardware-Software Interface)의 구현을 위한 시스템, 방법 및 컴퓨터-판독가능 매체로서, 시스템에 통신가능하게 커플링되는(Coupled) 하나 이상의 하드웨어 디바이스에 의해서 캡쳐된 정보에 적어도 부분적으로 기반하여 가상 드라이버에 의해서 사용자 입력을 결정하는 단계; 상기 사용자 입력에 대응하는 컨텍스트 - 상기 컨텍스트는 오퍼레이팅 시스템 또는 상기 오퍼레이팅 시스템 상에서 실행되는 어플리케이션 중 하나를 포함함 - 를 식별하는 단계; 상기 식별된 컨텍스트에 적어도 부분적으로 기반하여 상기 사용자 입력을, 상기 가상 드라이버와, 오퍼레이팅 시스템 또는 상기 오퍼레이팅 시스템 상에서 실행되는 어플리케이션 중 하나 이상과의 사이에서 인터페이싱하도록 구성되는 API(Application Programming Interface)를 포함하는 투명 레이어의 하나 이상의 투명 레이어 커맨드로 변환시키는 단계; 및 상기 투명 레이어 상에서 상기 투명 레이어 커맨드를 실행하는 단계 - 상기 투명 레이어 커맨드의 실행이 상기 식별된 컨텍스트에서 네이티브 커맨드의 실행을 유발하게끔 구성됨 - 를 포함한다.

Description

유니버셜 하드웨어-소프트웨어 인터페이스의 구현을 위한 방법, 장치 및 컴퓨터-판독가능 매체
본 발명은 유니버셜 하드웨어-소프트웨어 인터페이스 (Universal Hardware-Software Interface)의 구현을 위한 방법, 장치 및 컴퓨터-판독가능 매체에 관한 것이다.
오퍼레이팅 시스템 및 오퍼레이팅 시스템 내에서 실행되는 어플리케이션은, 사용자가 프로그램에 입력을 제공하는 것을 허용하고 사용자에게 출력을 제공하기 위하여 빈번하게 외부 하드웨어 디바이스를 사용한다. 외부 하드웨어 디바이스의 일반적인 예는 키보드, 컴퓨터 마우스, 마이크(Microphone) 및 외부 스피커를 포함한다. 이러한 외부 하드웨어 디바이스는 드라이버의 사용을 통해서 오퍼레이팅 시스템과 인터페이싱되며, 이 드라이버는 특정 하드웨어 디바이스에 의해서 사용되는 하드웨어 커맨드(Command)와 오퍼레이팅 시스템 사이에서 인터페이싱하도록 구성되는 특별한 소프트웨어 프로그램이다.
어플리케이션은 때때로 어떤 하드웨어 디바이스와 인터페이싱되도록 설계될 것이다. 예를 들어, 음성-대-텍스트 워드 프로세싱 어플리케이션은 마이크를 포함하는 오디오 헤드세트와 인터페이싱되도록 설계될 수 있다. 이 경우에, 어플리케이션은 구체적으로 음성 커맨드를 수신하고, 음성 인식을 수행하고, 인식된 단어를 텍스트 컨텐츠로 변환하고, 텍스트 컨텐츠를 문서로 출력하도록 구성되어야 한다. 이 기능은 전형적으로 어플리케이션의 API(Application Programming Interface)에서 구체화되며, 이 API는 다양한 소프트웨어 구성요소들 사이에서 정의된 통신 방법들의 세트다. 음성 인식 어플리케이션의 예에서, API는, 하드웨어 디바이스(마이크) 자체와 인터페이싱하는 것을 담당하는 드라이버 상의 소프트웨어와, 어플리케이션 프로그램 사이의 인터페이스를 포함할 수 있다.
특화된 하드웨어 디바이스를 사용하는 기존의 소프트웨어의 하나의 문제점은 하드웨어 디바이스를 활용하기 위해서 어프리케이션 또는 오퍼레이팅 시스템 소프트웨어 자체가 맞춤형으로 그리고 특별하게 설계되어야 한다는 것이다. 이 맞춤형은 하드웨어 디바이스가 어플리케이션에 의해서 이에 대하여 정의된 범위를 넘을 수 없고, 이것이 사용되도록 설계된 특정 어플리케이션 외의 컨텍스트(Context)를 위해서 활용될 수 없다는 점을 의미한다. 예를 들어, 음성-대-텍스트 워드 프로세싱 어플리케이션의 사용자는, 오퍼레이팅 시스템 내의 다른 어플리케이션 프로그램 또는 오퍼레이팅 시스템이 마이크를 거쳐서 수신되는 음성 커맨드를 사용하도록 구체적으로 설계되지 않는 한, 음성 커맨드를 사용하여 이러한 다른 어플리케이션 프로그램 또는 다른 구성요소를 조작할 수 없었다.
도 1은 사용자 입력을 위해 커플링된 하드웨어 디바이스를 사용하는 시스템의 기존 아키텍쳐의 일 예를 도해한다. 도 1의 오퍼레이팅 시스템(100A)은 실행되는 어플리케이션(101A 및 102A)을 포함하며, 어플리케이션 각각은 이들 각자의 API(101B 및 102B)를 갖는다. 오퍼레이팅 시스템(100A)은 또한, 하드웨어 디바이스(100D, 101D 및 102D)와 인터페이싱되도록 구성되는 특화된 드라이버(100C, 101C 및 102C)뿐만 아니라 자신만의 API(100B)를 갖는다.
도 1에 도시된 바와 같이, 어플리케이션 API(101B)는, 하드웨어 디바이스(101D)와 인터페이싱되는 드라이버(101C)와, 인터페이싱되도록 구성된다. 유사하게, 어플리케이션 API(102B)는 하드웨어 디바이스(102D)와 인터페이싱되는 드라이버(102C)와 인터페이싱되도록 구성된다. 오퍼레이팅 시스템 레벨에서, 오퍼레이팅 시스템 API(100B)는, 하드웨어 디바이스(100D)와 인터페이싱되는 드라이버(100C)와, 인터페이싱되도록 구성된다.
도 1에 도시되는 시스템의 아키텍쳐(Architecture)는 어떤 어플리케이션 또는 오퍼레이팅 시스템 컨텍스트 외의 하드웨어 디바이스를 활용하는 사용자의 능력을 제한한다. 예를 들어, 사용자가 어플리케이션(102A)에 입력을 제공하기 위해 하드웨어 디바이스(101D)를 활용할 수 없었고, 어플리케이션(101A)에 또는 오퍼레이팅 시스템(100A)에 입력을 제공하기 위해 하드웨어 디바이스(102D)를 활용할 수 없었다.
본 발명은 다수의 소프트웨어 컨텍스트에서 하드웨어 디바이스를 활용을 가능하게 하는 하드웨어-소프트웨어 인터페이스를 개선하는 것을 목적으로 한다.
본 발명의 일 실시예에 따르면, 유니버셜 하드웨어-소프트웨어 인터페이스(Universal Hardware-Software Interface)의 구현을 위해 하나 이상의 컴퓨팅 디바이스(Computing Device)에 의해서 실행되는 방법으로서, 상기 하나 이상의 컴퓨팅 디바이스 중 적어도 하나에 통신 가능하게 커플링되는(Coupled) 하나 이상의 하드웨어 디바이스에 의해서 캡쳐된 정보에 적어도 부분적으로 기반하여, 상기 하나 이상의 컴퓨팅 디바이스 중 적어도 하나의 컴퓨팅 디바이스 상에서 실행되는 가상 드라이버(Virtual Driver)에 의해서, 사용자 입력을 결정하는 단계; 상기 사용자 입력에 대응하는 컨텍스트(Context)를, 상기 하나 이상의 컴퓨팅 디바이스 중 적어도 하나에 의해서, 식별하는 단계 - 상기 식별된 컨텍스트는 오퍼레이팅 시스템 또는 상기 오퍼레이팅 시스템 상에서 실행되는 어플리케이션(Application) 중 하나를 포함함 -; 상기 식별된 컨텍스트에 적어도 부분적으로 기반하여, 상기 하나 이상의 컴퓨팅 디바이스 중 적어도 하나에 의해서, 상기 사용자 입력을 하나 이상의 투명 레이어 커맨드(Transparent Layer Command)로 변환시키는 단계 - 상기 투명 레이어는, 상기 가상 드라이버와, 상기 오퍼레이팅 시스템 또는 상기 오퍼레이팅 시스템 상에서 실행되는 상기 어플리케이션 중 하나 이상과의 사이에서 인터페이싱하도록 구성되는 API(Application Programming Interface)를 포함함 -; 및 상기 하나 이상의 컴퓨팅 디바이스 중 적어도 하나에 의해서 상기 투명 레이어 상에서 상기 하나 이상의 투명 레이어 커맨드를 실행하는 단계 - 상기 하나 이상의 투명 레이어 커맨드의 실행은 상기 식별된 컨텍스트에서 하나 이상의 네이티브(Native) 커맨드의 실행을 유발하도록 구성됨 - 를 포함한다.
본 발명은 다수의 소프트웨어 컨텍스트에서 하드웨어 디바이스를 활용을 가능하게 하는 하드웨어-소프트웨어 인터페이스를 개선하는 효과가 있다.
도 1은 사용자 입력을 위해 커플링된 하드웨어 디바이스를 사용하는 시스템의 기존 아키텍쳐의 일 예를 도해한다.
도 2는 일 실시예에 따른 유니버셜 하드웨어-소프트웨어 인터페이스를 활용하는 시스템의 아키텍쳐를 도해한다.
도 3은 일 실시예에 따른 유니버셜 하드웨어-소프트웨어 인터페이스의 구현을 위한 흐름도를 도해한다.
도 4는 일 실시예에 따른 시스템에 통신가능하게 커플링된 하나 이상의 하드웨어 디바이스에 의해서 캡쳐된 정보가 하나 이상의 이미지를 포함할 때 하나 이상의 하드웨어 디바이스에 의해서 캡쳐된 정보에 적어도 부분적으로 기반하여 사용자 입력을 결정하기 위한 흐름도를 도해한다.
도 5a는 일 실시예에 따른 객체(Object) 인식의 일 예를 도해한다.
도 5b는 일 실시예에 따른 입력 위치 좌표를 결정하는 일 예를 도해한다.
도 6은 일 실시예에 따른 시스템에 통신가능하게 커플링된 하나 이상의 하드웨어 디바이스에 의해서 캡쳐된 정보가 소리 정보일 때 하나 이상의 하드웨어 디바이스에 의해서 캡쳐된 정보에 적어도 부분적으로 기반하여 사용자 입력을 결정하기 위한 흐름도를 도해한다.
도 7은 일 실시예에 따른 투명 레이어의 일부일 수 있는 툴 인터페이스를 도해한다.
도 8은 일 실시예에 따른 시스템의 일부일 수 있는 스타일러스(Stylus)의 일 예를 도해한다.
도 9는 일 실시예에 따른 사용자 입력에 대응하는 컨텍스트(Context)를 식별하기 위한 흐름도를 도해한다.
도 10은 일 실시예에 따른 컨텍스트를 결정하기 위해 입력 좌표를 사용하는 일 예를 도해한다.
도 11은 일 실시예에 따른 투명 레이어 커맨드로 사용자 입력을 변환하기 위한 흐름도를 도해한다.
도 12a는 일 실시예에 따른 선택 모드가 토글(Toggle)될 때 입력 좌표를 수신하는 일 예를 도해한다.
도 12b는 일 실시예에 따른 포인팅 모드가 토글될 때 입력 좌표를 수신하는 일 예를 도해한다.
도 12c는 일 실시예에 따른 드로잉 모드가 토글될 때 입력 좌표를 수신하는 일 예를 도해한다.
도 13은 일 실시예에 따른 입력 음성 데이터에서 식별되는 하나 이상의 단어에 기반하여 결정되는 투명 레이어 커맨드의 일 예를 도해한다.
도 14는 일 실시예에 따른 입력 음성 데이터에서 식별되는 하나 이상의 단어에 기반하여 결정되는 투명 레이어 커맨드의 다른 예를 도해한다.
도 15는 일 실시예에 따른 투명 레이어 상에서 하나 이상의 투명 레이어 커맨드를 실행하기 위한 흐름도를 도해한다.
도 16은 일 실시예에 따른 사용자 입력에 대응하여 새로운 커맨드를 추가하기 위한 일 예의 인터페이스를 도해한다.
도 17은 일 실시예에 따른 드로잉 인터페이스 및 드로우 모드의 다양한 구성요소 및 옵션을 도해한다.
도 18은, 일 실시예에 따른 터치 및 제스쳐(Gesture)를 사용하여 사용자가 입력을 제공하는 것을 허용하고 객체를 인식하기 위해서 사용되는, 비디오 카메라 하드웨어 디바이스를 위한 캘리브레이션 및 설정 인터페이스를 도해한다.
도 19는 일 실시예에 따른 사용자가 인터페이스의 다양한 양상(Aspect)을 맞춤형으로 제작하고, 입력 모드를 토글하고, 다른 변화를 만드는 것을 허용하는 일반적인 설정 인터페이스를 도해한다.
도 20은 유니버셜 하드웨어-소프트웨어 인터페이스의 구현을 위한 방법을 실행하기 위해서 사용될 수 있는 예시적인 컴퓨팅 환경을 도해한다.
방법, 장치 및 컴퓨터-판독가능 매체가 예시 및 실시형태로서 여기서 설명되나, 본 기술분야에서 숙련된 자는, 유니버셜 하드웨어-소프트웨어 인터페이스(Universal Hardware-Software Interface)의 구현을 위한 방법, 장치 및 컴퓨터-판독가능 매체가 설명된 실시형태 또는 도면에 한정되지 않음을 인식한다. 도면 및 설명이 개시되는 특정 형태에 한정되도록 의도되지 않음이 이해될 것이다. 오히려, 본 발명은 첨부된 청구항의 사상 및 범위 내에 해당되는 모든 변형물, 균등물 및 대안물을 커버하는 것이다. 여기서 사용되는 모든 헤딩(Heading)은 단지 조직화 목적만을 위한 것이고, 상세한 설명 또는 청구항의 범위를 한정하도록 의도하지 않는다. 여기서 사용될 때, 단어 "할 수 있다"는 의무적인 의미(즉, 해야한다는 의미)라기 보다는 허용적인 의미(즉, 가능성을 갖는다는 의미)로 사용된다. 비슷하게, 단어 "포함하다", "포함하는" 은 포함하나 이에 한정되지 않는다.
출원인은 하드웨어 디바이스를 위해서 사용되는 기존의 하드웨어-소프트웨어 인터페이스와 연관되는 문제를 해결하는 방법, 장치 및 컴퓨터-판독가능 매체를 발견하였다. 특히, 출원인은 다양한 소프트웨어 컨텍스트에서 통신가능하게 커플링된(Coupled) 하드웨어 디바이스를 사용자가 활용할 수 있게 허용하는 유니버셜 하드웨어-소프트웨어 인터페이스를 개발하였다. 개시된 구현은, 아래에서 더욱 상세하게 설명되는 바와 같이, 특수 가상 드라이버 및 대응하는 투명 레이어의 사용을 통해서 특정 하드웨어 디바이스와 인터페이싱하도록 맞춤 설계되는 어플리케이션 또는 오퍼레이팅 시스템에 대한 필요성을 제거한다.
도 2는 일 실시예에 따른 유니버셜 하드웨어-소프트웨어 인터페이스를 활용하는 시스템의 아키텍쳐를 도해한다. 도 2에서 도시된 바와 같이, 오퍼레이팅 시스템(200A)은 가상 드라이버(204)와 통신하는 투명 레이어(203)를 포함한다. 아래에 더욱 상세히 설명되는 바와 같이, 투명 레이어(203)는 가상 드라이버와 오퍼레이팅 시스템 및/또는 오퍼레이팅 시스템 상에서 실행되는 어플리케이션(들) 사이에서 인터페이싱하도록 구성된 API(Application Programming Interface)이다. 이 예에서, 투명 레이어(203)는 오퍼레이팅 시스템(200A)의 어플리케이션(201A)의 API(201B), 어플리케이션(202A)의 API(202B), 및 오퍼레이팅 시스템 API(200B)와 가상 드라이버(204) 사이에서 인터페이싱한다.
투명 레이어(203)는 오퍼레이팅 시스템 상에서 실행되는 소프트웨어 프로세스의 일부일 수 있고, 고유의 UI(User Interface)를 가질 수 있으며, 사용자가 상호작용할 수 있는 가시적인 UI 요소 및/또는 기본 UI(Underlying User Interface) 상에 중첩되는 투명 UI(Transparent User Interface)를 포함한다.
가상 드라이버(204)는 드라이버(205A 및 205B)를 에뮬레이트(Emulate)하도록 구성되며, 이 드라이버는 하드웨어 디바이스(206A 및 206B)와 각각 인터페이싱된다. 가상 드라이버는, 음성 커맨드, UI 상에 만들어진 선택, 및/또는 커플링된 웹 카메라 앞에서 사용자에 의해서 만들어진 제스쳐의 형태로, 가상 드라이버가 가상 드라이버 상에서 에뮬레이터하도록 지시하는 사용자 입력을 받을 수 있다. 예를 들어, 연결된 하드웨어 디바이스 각각은 "수신 대기(Listening)" 모드로 동작될 수 있고, 가상 드라이버(204) 내의 에뮬레이트된 드라이버 각각은, 특정 에뮬레이션 모드로 전환시키는 가상 드라이버에 대한 신호로서 기능하는 초기화 신호를 검출하도록 구성될 수 있다. 예를 들어, "음성 커맨드 시작"을 말하는 사용자는 새로운 음성 커맨드를 수신하도록 마이크에 대응하는 드라이버를 활성화시킬 수 있다. 유사하게, 어떤 제스쳐를 주는 사용자는 제스쳐 입력 또는 터치 입력을 받도록 웹 카메라에 대응하는 드라이버를 활성화시킬 수 있다.
가상 드라이버는 또한, 그 자체가 하드웨어 디바이스(206C)와 통신하는 네이티브 드라이버(Native Driver)(205C)와 같이, 네이티브 드라이버와 인터페이싱하도록 구성될 수 있다. 일 예에서, 하드웨어 디바이스(206C)는, 오퍼레이팅 시스템에 의해서 기본적으로(Natively) 지원되는 표준 입력 디바이스, 예를 들어 키보드 또는 마우스일 수 있다.
도 2에 도시된 시스템은, 어플리케이션 또는 오퍼레이팅 시스템이 하드웨어 디바이스와 맞춤형으로 인터페이싱하도록 요구하지 않으면서, 사용자가 다양한 컨텍스트, 예를 들어 특정 어플리케이션 또는 오퍼레이팅 시스템에서 임의의 커플링된 하드웨어 디바이스를 사용할 수 있는 유니버셜 하드웨어-소프트웨어 인터페이스의 구현을 가능하게 한다.
예를 들어, 하드웨어 디바이스(206A)는 정보를 캡쳐할 수 있으며, 이 정보는 다음으로 가상 드라이버(204)가 에뮬레이트하는 드라이버(205A)에 의해서 수신된다. 가상 드라이버(204)는 캡쳐된 정보에 기반하여 사용자 입력을 결정할 수 있다. 예를 들어, 사용자가 손을 움직이는 일련의 이미지가 정보인 경우, 가상 드라이버는 사용자가 제스쳐를 수행하였다고 결정할 수 있다.
식별된 컨텍스트(예를 들어, 특정 어플리케이션 또는 오퍼레이팅 시스템)에 기반하여, 사용자 입력은 투명 레이어 커맨드로 변환되고, 실행을 위해 투명 레이어(203)로 전송될 수 있다. 투명 레이어 커맨드는 식별된 컨텍스트에서 네이티브 커맨드를 포함할 수 있다. 예를 들어, 식별된 컨텍스트가 어플리케이션(201A)인 경우, 네이티브 커맨드는 어플리케이션(201A)의 어플리케이션 API(201B)와 양립할 수 있는 포맷일 수 있다. 투명 레이어 커맨드의 실행은 다음으로, 식별된 컨텍스트에서 하나 이상의 네이티브 커맨드의 실행을 유발하도록 구성될 수 있다. 이것은 오퍼레이팅 시스템 API(200B)뿐만 아니라 오퍼레이팅 시스템(200A) 상에서 실행되는 어플리케이션의 API 각각과 인터페이싱하는 투명 레이어(203)에 의해서 달성된다. 예를 들어, 네이티브 커맨드가 오퍼레이팅 시스템 커맨드, 예를 들어, 새로운 프로그램을 시작(Launch)하라는 커맨드인 경우에, 투명 레이어(203)는 실행을 위해 오퍼레이팅 시스템 API(200B)에 이 네이티브 커맨드를 제공할 수 있다.
도 2에 도시되는 바와 같이, 도시된 모든 구성요소 사이에 양방향 통신이 있다. 이것은, 예를 들어, 투명 레이어(203)에서 투명 레이어 커맨드의 실행이, 가상 드라이버(204)로, 그리고 연결된 하드웨어 디바이스 중 하나로, 정보를 전송하는 것을 초래할 수 있다는 점을 의미한다. 예를 들어, 음성 커맨드가, 입력으로서 인식되고, 네이티브 커맨드를 포함하는 투명 레이어 커맨드로 변환되고, 그리고 투명 레이어에 의해서 실행된 후(식별된 컨텍스트에서 네이티브 커맨드의 실행을 초래함), "커맨드 수신됨"의 소리 출력을 송신하도록 신호가 투명 레이어로부터 스피커로 (가상 드라이버를 통해서) 보내질 수 있다.
물론, 도 2에 도시된 아키텍쳐는 단지 설명을 위한 것이고, 실행되는 어플리케이션의 개수, 연결되는 하드웨어의 개수 및 타입, 드라이버의 개수 및 에뮬레이트되는 드라이버가 변경될 수 있다는 점을 이해해야 한다.
도 3은 일 실시예에 따른 유니버셜 하드웨어-소프트웨어 인터페이스의 구현을 위한 흐름도를 도해한다.
301 단계에서, 사용자 입력은 시스템에 통신가능하게 커플링된 하나 이상의 하드웨어 디바이스에 의해서 캡쳐된 정보에 적어도 부분적으로 기반하여 결정된다. 여기서 사용될 때, 시스템은 상기 방법의 단계를 실행하는 하나 이상의 컴퓨팅 디바이스, 상기 방법의 단계를 실행하는 하나 이상의 메모리 및 하나 이상의 프로세서를 포함하는 장치, 또는 임의의 다른 컴퓨팅 시스템을 가리킬 수 있다.
사용자 입력은 시스템 상에서 실행되는 가상 드라이버에 의해서 결정된다. 앞에서 논의된 바와 같이, 가상 드라이버는 에뮬레이션 모드로 동작될 수 있으며, 이 모드에서 가상 드라이버는 다른 하드웨어 드라이버를 에뮬레이트하고, 따라서 하드웨어 디바이스로부터 캡쳐된 정보를 수신하거나, 또는 특정 하드웨어 디바이스와 인터페이싱하도록 구성되는 하나 이상의 다른 하드웨어 드라이버로부터 캡쳐된 정보를 선택적으로 수신할 수 있다.
다양한 하드웨어 디바이스, 예를 들어, 카메라, 비디오 카메라, 마이크, 양방향 통신의 헤드세트, 마우스, 터치패드, 트랙패드(Trackpad), 컨트롤러, 게임 패드, 조이스틱, 터치 스크린, 가속도계 및/또는 틸트(Tilt) 센서를 포함하는 모션 캡쳐 디바이스, 리모트(Remote), 스타일러스(Stylus) 또는 이들 디바이스의 임의의 조합이 활용될 수 있다. 물론, 이러한 리스트의 하드웨어 디바이스는 단지 예로 제공되고, 음성, 이미지, 비디오 또는 터치 정보를 검출하기 위해 활용될 수 있는 임의의 하드웨어 디바이스가 활용될 수 있다.
하드웨어 디바이스와 시스템 사이의 통신가능한 커플링(Coupling)은 다양한 형태를 취할 수 있다. 예를 들어, 하드웨어 디바이스는 무선 네트워크, 블루투스 프로토콜, 라디오 주파수, 적외선 신호를 통해서 그리고/또는 USB(Universal Serial Bus) 연결과 같은 물리적 연결에 의해서 시스템과 통신할 수 있다. 통신은 또한 무선 통신 및 유선 통신 모두를 포함할 수 있다. 예를 들어, 하드웨어 디바이스는 두 개의 구성요소를 포함할 수 있으며, 이 중 하나는, 유선 연결(예를 들어, USB)을 통해서 시스템에 연결되는 제2 구성요소에 무선으로 (예를 들어, 블루투스를 거쳐서) 신호를 전송한다. 다양한 통신 기술이 여기서 설명되는 시스템에 따라 활용될 수 있고, 이러한 예는 한정되지 않는다.
하나 이상의 하드웨어 디바이스에 의해서 캡쳐되는 정보는 임의 타입의 정보, 예를 들어, 하나 이상의 이미지를 포함하는 이미지 정보, 비디오 프레임, 소리 정보, 및/또는 터치 정보일 수 있다. 캡쳐된 정보는 임의의 적합한 포맷, 예를 들어, 소리 정보를 위한 .wav 또는 .mp3 파일, 이미지를 위한, .jpeg 파일, 터치 정보를 위한 수치적 좌표 등일 수 있다.
여기서 설명되는 기술은, 디스플레이 디바이스가 터치 신호 또는 터치-기반 제스쳐를 검출하는 임의의 하드웨어를 포함하지 않는다 하더라도, 임의의 디스플레이 디바이스가 임의의 컨텍스트에서 "터치" 스크린 디바이스로서 효과적으로 기능하는 것을 허용할 수 있다. 이것은 아래에 더욱 상세히 설명되고, 카메라 또는 비디오 카메라에 의해서 캡쳐된 이미지의 분석을 통해서 달성될 수 있다.
도 4는, 시스템에 통신가능하게 커플링된 하나 이상의 하드웨어 디바이스에 의해서 캡쳐된 정보가 하나 이상의 이미지를 포함할 때 하나 이상의 하드웨어 디바이스에 의해서 캡쳐된 정보를 적어도 부분적으로 기반하여 사용자 입력을 결정하기 위한 흐름도를 도해한다.
401 단계에서, 하나 이상의 이미지가 수신된다. 이러한 이미지는 하드웨어 디바이스, 예를 들어, 카메라 또는 비디오 카메라에 의해서 캡쳐될 수 있고, 앞에서 논의된 바와 같이, 가상 드라이버에 의해서 수신될 수 있다.
402 단계에서, 하나 이상의 이미지에 있는 객체가 인식된다. 객체는, 예를 들어, 손, 손가락 또는 사용자의 다른 신체 부분일 수 있다. 객체는 또한, 스타일러스 또는 펜과 같은 특수 목적 디바이스일 수 있고, 또는, 시스템에 통신가능하게 커플링되고, 가속도계 및/또는 틸트 센서를 포함하는 모션 추적 스타일러스/리모트와 같은 특수-목적 하드웨어 디바이스일 수 있다. 객체 인식은, 예를 들어 객체를 사용하는 캘리브레이션 루틴 런(Calibration Routine Run)을 통한 조기 트레이닝(Earlier Training)에 기반하여 가상 드라이버에 의해서 수행될 수 있다.
도 5a는 일 실시예에 따른 객체(Object) 인식의 일 예를 도해한다. 도 5a에 도시되는 바와 같이, 이미지(501)는 객체(502)로서 인식된 사용자의 손을 포함한다. 인식 알고리즘은, 물론 손가락과 같은 상이한 객체를 인식하도록 구성될 수 있었다.
도 4를 다시 참조하면, 403 단계에서, 인식된 객체의 하나 이상의 방향 및 하나 이상의 위치가 결정된다. 이것은 다양한 방식으로 이루어질 수 있다. 만약 객체가 하드웨어 디바이스가 아니고 신체 일부, 예를 들어, 손 또는 손가락이면, 객체의 3차원 좌표와 X, Y 및 Z 축에 대한 다양한 각도를 결정하기 위해 기준 지점으로서 카메라의 알려진 위치를 사용하는 3차원 좌표 시스템에서 객체를 맵핑할 수 있다. 만약 객체가 하드웨어 디바이스이고 모션 추적 하드웨어, 예를 들어 가속도계 및/또는 틸트 센서를 포함하면, 이미지 정보는 객체의 위치 및 방향을 결정하기 위해서 가속도계 및/또는 틸트 센서에 의해서 표시되는 정보와 관련하여 사용될 수 있다.
404 단계에서, 사용자 입력은 인식된 객체의 하나 이상의 방향 및 하나 이상의 위치에 적어도 부분적으로 기반하여 결정된다. 이것은 하나 이상의 방향 및 하나 이상의 위치에 적어도 부분적으로 기반하여 투명 레이어의 투명 UI 상의 위치 좌표를 결정하는 단계를 포함할 수 있다. 투명 UI는 투명 레이어의 일부이고, 오퍼레이팅 시스템 상에서 실행되는 임의의 어플리케이션 및/또는 오퍼레이팅 시스템에 대응하는 기본 UI 상에 중첩된다.
도 5b는 객체가 사용자의 손가락일 때 이 단계의 예를 도해한다. 도 5b에 도시되는 바와 같이, 디스플레이 디바이스(503)는 기본 UI(506), 및 기본 UI(506) 위에 중첩되는 투명 UI(507)를 포함한다. 명확성을 위해서, 투명 UI(507)는 점 음영(Dot Shading)으로 도시되나, 실제로는 투명 UI가 사용자에게 보이지 않는 투명한 레이어이라는 점을 이해할 수 있다. 또한, 투명 UI(507)는 기본 UI(506)보다 약간 작은 것으로 도시되나, 실제로는 투명 UI가 기본 UI와 동일한 스크린 면적을 커버하는 것으로 이해된다.
도 5b에 도시되는 바와 같이, 객체(사용자의 손가락)의 위치 및 방향 정보는 디스플레이 디바이스(503)의 평면 상으로 라인을 투사하고 교차 지점(505)을 결정하기 위해서 사용된다. 카메라(504)에 의해서 캡쳐된 이미지 정보 및 카메라 아래의 디스플레이 디바이스(503)의 알려진 위치는 이 투사를 돕기 위해서 사용될 수 있다. 도 5b에 도시되는 바와 같이, 사용자 입력은 교차 지점(505)의 입력 좌표인 것으로 결정된다.
아래에서 더 논의되는 바와 같이, 이 입력에 기반하여 생성되는 실제 투명 레이어 커맨드는 사용자 설정 및/또는 식별된 컨텍스트에 기반할 수 있다. 예를 들어, 커맨드는 지점(505)의 좌표에서의 객체가 선택되고 그리고/또는 열려야 하는 것을 나타내는 터치 커맨드일 수 있다. 커맨드는 또한, 포인터(예를 들어, 마우스의 포인터)가 지점(505)의 좌표로 이동되어야 하는 것을 나타내는 포인팅 커맨드일 수 있다. 또한, 커맨드는 (인터페이스에 주석을 달거나 하나의 요소를 드로우하도록) 위치에서 그래픽 출력을 수정하는 편집 커맨드일 수 있다.
도 5b는 인식된 객체(502)가 디스플레이 디바이스(503)로부터 약각 떨어진 거리에 있는 것으로 도시하나, 터치 입력은 거리에 관계없이 검출될 수 있다. 예를 들어, 사용자가 디스플레이 디바이스(503)를 물리적으로 터치하는 경우, 위에서 설명되는 기술은 여전히 입력 좌표를 결정할 것이다. 이러한 경우에, 객체(502)와 교차 지점 사이의 투사 라인이 단지 더 짧을 것이다.
물론, 터치 입력은 캡쳐된 이미지로부터 결정될 수 있는 유일한 형태의 사용자 입력이 아니다. 인식되는 객체의 하나 이상의 방향 및 하나 이상의 위치에 적어도 부분적으로 기반하여 사용자 입력을 결정하는 단계는, 제스쳐 입력을 결정하는 단계를 포함할 수 있다. 특히, 다수의 이미지를 통해 인식되는 객체의 위치 및 방향은 대응하는 제스쳐, 예를 들어, 닦아내기 제스쳐, 집기 제스쳐 및/또는 임의의 알려진 또는 맞춤형 제스쳐를 결정하기 위해서 분석될 수 있었다. 사용자는 특정 컨텍스트 및 이러한 컨텍스트 내 커맨드에 맵핑되는 맞춤 제스쳐를 인식하도록 가상 드라이버를 캘리브레이션할 수 있다. 예를 들어, 사용자는, 오퍼레이팅 시스템 컨텍스트에 맵핑되고, 특정 어플리케이션을 시작하게 하는 네이티브 오퍼레이팅 시스템 커맨드의 실행을 초래하는 맞춤 제스쳐를 생성할 수 있다.
앞에서 논의된 바와 같이, 도 3의 301 단계에서 하나 이상의 하드웨어 디바이스에 의해서 캡쳐되는 정보는 마이크에 의해서 캡쳐되는 소리 정보를 또한 포함할 수 있다. 도 6은, 시스템에 통신가능하게 커플링된 하나 이상의 하드웨어 디바이스에 의해서 캡쳐된 정보가 소리 정보일 때 캡쳐된 정보에 적어도 부분적으로 기반하여 사용자 입력을 결정하기 위한 흐름도를 도해한다. 아래에서 논의되는 바와 같이, 음성 인식은 사용자 입력에 대응하는 하나 이상의 단어를 식별하기 위해 소리 정보에 대해서 수행된다.
601 단계에서 소리 데이터가 수신된다. 소리 데이터는, 위에서 논의된 바와 같이, 마이크와 같은 하드웨어 디바이스에 의해서 캡쳐되고, 가상 드라이버에 의해서 수신될 수 있다. 602 단계에서, 수신되는 소리 데이터는 소리 사전(Sound Dictionary)에 비교될 수 있다. 소리 사전은 하나 이상의 인식된 단어, 예를 들어 커맨드 단어 또는 커맨드 수정자(Command Modifier)의 소리 시그너쳐(Sound Signature)를 포함할 수 있다. 603 단계에서, 소리 데이터에 있는 하나 이상의 단어는 비교에 기반하여 사용자 입력으로서 식별된다. 식별된 하나 이상의 단어는 다음으로 투명 레이어 커맨드로 전환되고 투명 레이어에 전달될 수 있다.
앞에서 논의된 바와 같이, 가상 드라이버에 의해서 에뮬레이트되는 드라이버, 예상되는 형태의 사용자 입력, 및 사용자 입력에 기반하여 생성되는 커맨드는 모두 하나 이상의 설정 또는 종래 사용자 입력에 적어도 부분적으로 기반하여 결정될 수 있다.
도 7은 또한 투명 레이어의 부분일 수 있는 툴 인터페이스(701)를 도해한다. 투명 UI와 다르게, 툴 인터페이스(701)는 사용자에게 가시적이고, 가상 드라이버의 에뮬레이션 모드, 사용자 입력에 기반하여 생성되는 네이티브 커맨드를 변경하거나 추가적인 기능을 수행하는 상이한 옵션들 사이에서 선택하도록 사용될 수 있다.
버튼(701A)은, 사용자 입력이 입력 좌표(예를 들어, 사용자 손 또는 스타일러스/리모트로 스크린을 사용자가 터치하는 것에 기반하는 좌표)일 때, 사용자가 UI를 그래픽적으로 수정하기 위해서 사용되는 드로잉 툴의 타입을 사용자가 선택하는 것을 허용한다. 다양한 드로잉 툴은 상이한 브러쉬, 색깔, 펜, 하이라이터 등을 포함할 수 있다. 이러한 툴은 다양한 스타일, 두께, 색깔 등의 그래픽적 변경(Alteration)을 초래할 수 있다.
버튼(701B)은, 입력 좌표가 사용자 입력으로서 수신될 때, 선택, 포인팅 또는 드로잉 사이에서 사용자가 스위칭하는 것을 허용한다. 선택 모드에서, 입력 좌표는 "터치"로서 프로세싱될 수 있으며 입력 좌표에서의 객체의 선택 또는 열기를 초래할 수 있다. 포인팅 모드에서, 좌표는 포인터 (예를 들어, 마우스 포인터) 위치로서 프로세싱될 수 있으며, 사용자가 마우스를 에뮬레이트하는 것을 효과적으로 허용할 수 있다. 드로잉 모드에서, 좌표는 UI의 그래픽적 출력을 변경하는 위치로서 프로세싱되어 UI 상에 드로잉 또는 라이팅(Writing)이 출현(Appearance)하도록 제공할 수 있다. 버튼(701A)에 관하여 논의된 바와 같이, 변경의 특성은 선택된 드로잉 툴에 의존될 수 있다. 버튼(701B)은 또한 이미지 입력 및/또는 모션 입력을 예상하고 (만약, 모션 추적 디바이스가 사용되면) 그에 따라 적절한 드라이버를 에뮬레이션하도록 가상 드라이버에 알릴 수 있다.
버튼(701C)은 음성 커맨드를 예상하도록 가상 드라이버에 알린다. 이것은 가상 드라이버가 음성 입력을 수신하도록 커플링된 마이크에 대응하는 드라이버를 에뮬레이트하게 하고, 도 6에 관하여 설명되는 바와 같이 음성 입력을 분석하도록 할 수 있다.
버튼(701D)은, 투명 레이어의 부분일 수 있고, 오퍼레이팅 시스템 내에서 어플리케이션을 시작하기 위해서 사용될 수 있거나 어플리케이션 내에서 특정 커맨드를 시작하기 위해서 사용될 수 있는, 론처(Launcher) 어플리케이션을 열 수 있다. 론처는 또한 투명 레이어에서 옵션(예를 들어, 사용자 입력과 연관된 어플리케이션을 위한 맞춤 네이티브 커맨드, 맞춤 제스쳐, 맞춤 음성 커맨드)을 맞춤형으로 하기 위해서 그리고/또는 하드웨어 디바이스 및 사용자 입력을 캘리브레이션(예를 들어, 음성 캘리브레이션, 모션 캡쳐 디바이스 캘리브레이션, 및/또는 객체 인식 캘리브레이션)하기 위해서 사용될 수 있다.
버튼(701E)은 UI의 스크린샷을 캡쳐하기 위해서 그리고 이 스크린샷을 이미지로 내보내기 위해서 사용될 수 있다. 이것은 버튼(701B)의 드로윙 모드 및 701A의 드루잉 툴과 관련하여 사용될 수 있다. 사용자가 특정 UI를 마크한 후에, 마크된 버전을 이미지로서 내보낼 수 있다.
버튼(701F)은 또한 그래픽적 편집을 가능하게 하고, 사용자가 UI 상에 만들고 있는 드로잉의 색깔 또는 드로잉의 양상을 변경시키기 위해서 사용될 수 있다. 버튼(701B)의 드로우(Draw) 모드와 유사하게, 이 버튼은 입력 좌표에서 그래픽적 변경의 특성을 변경한다.
버튼(701G)은 UI 상의 드로잉을 취소한다. 이 버튼의 선택은 UI 상의 모든 그래픽적 마킹을 제거하고, 사용자가 드로잉을 생성하기 전의 상태로 기본 UI를 초기화할 수 있다.
버튼(701H)은, 사용자가 가상 화이트보드 상에서 드로잉을 생성하거나 드로우 모드를 사용하면서 글을 쓰는 것을 허용하는, 화이트보드 어플리케이션을 시작하기 위해서 사용될 수 있다.
버튼(701I)은 오퍼레이팅 시스템 UI 또는 어플리케이션 UI에 도시되는 객체와 같은 객체에 텍스트 노트(Textual Note)를 추가하기 위해서 사용될 수 있다. 텍스트 노트는 음성 신호로부터 해석되거나 또는 사용자가 키보드를 사용하여 타이핑할 수 있다.
버튼(701J)은 툴 인터페이스(701)를 열거나 닫기 위해서 사용될 수 있다. 툴 인터페이스는 닫혀질 때 기본 UI로부터 최소화되거나 완전히 제거될 수 있다.
앞서 논의된 바와 같이, 스타일러스 또는 리모트 하드웨어 디바이스는 본 시스템과, 다른 하드웨어 디바이스(예를 들어 카메라 또는 비디오 카메라)와 함께 사용될 수 있다. 도 8은 본 시스템과 함께 사용될 수 있는 스타일러스(801)의 일 예를 도해한다. 스타일러스(801)는 하드웨어 수신기(802)와, 예를 들어 블루투스를 거쳐서 통신할 수 있다. 하드웨어 수신기는 컴퓨터 시스템에, 예를 들어, USB(802B)를 통해서 연결될 수 있고, 스타일러스로부터 하드웨어 수신기를 통해서 컴퓨터 시스템으로 전달되는 신호는, 도 7에 도시되는 툴 인터페이스와 유사하게, 메뉴(803)와 상호작용하고 제어하기 위해서 사용될 수 있다.
도 8에 도시되는 바와 같이, 스타일러스(801)는 물리적 버튼(801A)을 포함할 수 있다. 이러한 물리적 버튼(801)은 스타일러스의 전원을 켜고, 메뉴(803)를 네비게이트(Navigate)하고, 선택하기 위해서 사용될 수 있다. 추가적으로, 스타일러스(801)는 독특한 팁(801B) - 가상 드라이버에 의해서 인식되고 카메라에 의해서 이미지로 캡쳐됨 - 을 포함할 수 있다. 이는, 드로우 모드일 때 스타일러스(801)가 드로잉 및 편집을 하기 위해서 사용되는 것을 허용할 수 있다. 또한, 스타일러스(801)는 모션 추적 하드웨어(예를 들어 가속도계 및/또는 틸트 센서)를 포함하여 스타일러스가 입력 좌표 또는 제스쳐를 제공하기 위해서 사용될 때 위치 검출에 도움을 줄 수 있다. 또한, 하드웨어 수신기(802)는 캘리브레이션 버튼(802A)을 포함할 수 있으며, 이 버튼은 눌렸을 때 UI의 캘리브레이션 유틸러티가 시작되게 할 수 있다. 이것이 스타일러스의 캘리브레이션을 가능하게 한다.
도 3을 다시 참조하면, 302 단계에서, 컨텍스트는 사용자 입력에 대응하여 식별된다. 식별된 컨텍스트는 오퍼레이팅 시스템 또는 오퍼레이팅 시스템 상에서 실행되는 어플리케이션 중 하나를 포함한다.
도 9는 일 실시예에 따른 사용자 입력에 대응하는 컨텍스트를 식별하기 위한 흐름도를 도해한다. 도 9에 도시되는 바와 같이, 오퍼레이팅 시스템 데이터(901), 어플리케이션 데이터(902), 및 사용자 입력 데이터(903)는 모두 컨텍스트를 결정(904)하기 위해서 사용될 수 있다.
오퍼레이팅 시스템 데이터(901)는, 예를 들어, 오퍼레이팅 시스템에서 활성화된 윈도우에 관한 정보를 포함할 수 있다. 예를 들어, 만약 활성화된 윈도우가 계산기 윈도우면, 컨텍스트는 계산기 어플리케이션인 것으로 결정될 수 있다. 유사하게, 만약 활성화된 윈도우가 마이크로소프트 워드(Microsoft Word) 윈도우면, 컨텍스트는 마이크로소프트 워드 어플리케이션인 것으로 결정될 수 있다. 다른 한편으로, 만약 활성 윈도우가 파일 폴더이면, 활성화된 컨텍스트는 오퍼레이팅 시스템인 것으로 결정될 수 있다. 오퍼레이팅 시스템 데이터는 또한 추가적인 정보, 예를 들어, 현재 실행되는 어플리케이션, 마지막으로 시작된 어플리케이션 및 컨텍스트를 결정하기 위해서 사용될 수 있는 임의의 다른 오퍼레이팅 시스템 정보를 포함할 수 있다.
어플리케이션 데이터(902)는, 예를 들어, 어떤 타입의 사용자 입력에 특정 어플리케이션을 맵핑하는 정보 및/또는 실행되는 하나 이상의 어플리케이션에 관한 정보를 포함할 수 있다. 예를 들어, 제1 어플리케이션은, 음성 커맨드가 수신될 때마다, 컨텍스트가 자동적으로 제1 어플리케이션인 것으로 결정되게끔 음성 입력에 맵핑될 수 있다. 다른 예에서, 특정 제스쳐는 제2 어플리케이션과 연관될 수 있어, 이 제스쳐가 입력으로서 수신될 때, 제2 어플리케이션이 시작되거나 또는 닫히거나, 제2 어플리케이션 내 어떤 동작이 수행된다.
사용자 입력(903)은 또한 다양한 방식으로 컨텍스트를 결정하기 위해서 사용될 수 있다. 위에서 논의된 바와 같이, 어떤 타입의 사용자 입력은 어떤 어플리케이션에 맵핑될 수 있다. 위 예에서, 음성 입력은 제1 어플리케이션의 컨텍스트와 연관된다. 또한, 사용자 입력의 속성은 컨텍스트를 결정하기 위해서 사용될 수 있다. 제스쳐 또는 모션은 오퍼레이팅 시스템이나 어플리케이션에 맵핑될 수 있다. 음성 커맨드에서 특정 단어도 오퍼레이팅 시스템에 또는 어플리케이션에 맵핑될 수 있다. 입력 좌표는 또한 컨텍스트를 결정하기 위해서 사용될 수 있다. 예를 들어, 입력 좌표의 위치에 있는 UI 내 윈도우는 결정될 수 있으며, 이 윈도우에 대응하는 어플리케이션이 컨텍스트로서 결정될 수 있다.
도 10은 컨텍스트를 결정하기 위해 입력 좌표를 사용하는 일 예를 도해한다. 도 10에 도시되는 바와 같이, 디스플레이 디바이스(1001)는 UI(1002)를 디스플레이하고 있다. 카메라(1004) 및 기본 UI(1003) 위로 중첩되는 투명 레이어(1003)가 또한 도시된다. 사용자는 UI(1002) 내의 위치(1005)를 가리키기 위해 스타일러스(1000)를 활용한다. 위치(1005)는 어플리케이션 1에 대응하는 어플리케이션 윈도우 내에 놓여 있기 때문에, 어플리케이션 2, 어플리케이션 3 또는 오퍼레이팅 시스템과 대조적으로 어플리케이션 1이 사용자 입력을 위한 컨텍스트인 것으로 결정될 수 있다.
다시 도 3을 참조하면, 303 단계에서, 사용자 입력은 식별된 컨텍스트에 적어도 부분적으로 기반하여 하나 이상의 투명 레이어 커맨드로 변환된다. 앞에서 논의된 바와 같이, 투명 레이어는 가상 드라이버와 오퍼레이팅 시스템 및/또는 오퍼레이팅 시스템 상에서 실행되는 어플리케이션 사이에서 인터페이싱하도록 구성되는 API(Application Programming Interface)를 포함한다.
도 11은 사용자 입력을 투명 레이어 커맨드로 전환하기 위한 흐름도를 도해한다. 도 11의 단계(1104)에 도시되는 바와 같이, 투명 레이어 커맨드는 식별된 컨텍스트(1102) 및 사용자 입력(1103)에 적어도 부분적으로 기반하여 결정될 수 있다. 투명 레이어 커맨드는 하나 이상의 대응하는 컨텍스트에서 실행되도록 구성되는 하나 이상의 네이티브 커맨드를 포함할 수 있다. 투명 레이어 커맨드는 가상 드라이버로 그리고 하드웨어 디바이스(들)에 전송되는 응답 출력을 또한 포함한다.
식별된 컨텍스트(1102)는 어떤 투명 레이어 커맨드가 사용자 입력에 맵핑되어야 하는지를 결정하기 위해서 사용될 수 있다. 예를 들어, 만약 식별된 컨텍스트가 "오퍼레이팅 시스템"이면, 닦아내기 제스쳐 입력은, (하나의 열린 윈도우를 최소화하고 다음 열린 윈도우를 최대화함으로써) 오퍼레이팅 시스템 내의 현재 열려 있는 윈도우를 통해서 스크롤링되는 UI를 야기하는 투명 레이어 커맨드에 맵핑될 수 있다. 대안적으로, 만약 식별된 컨텍스트가 "웹 브라우저 어플리케이션"이면, 동일한 닦아내기 제스쳐 입력은 웹 페이지가 스크롤되는 것을 야기하는 투명 레이어 커맨드에 맵핑될 수 있다.
사용자 입력(1103)이 하나 이상의 컨택스트 내의 어떤 네이티브 커맨드에 구체적으로 맵핑되고 이러한 네이티브 커맨드가 투명 레이어 커맨드의 일부이기 때문에, 사용자 입력(1103)은 투명 레이어 커맨드도 결정한다. 예를 들어, 음성 커맨드 "이메일 열어"는 이메일 어플리케이션 아웃룩(Outlook)을 시작하게 하는 특정 오퍼레이팅 시스템 네이티브 커맨드에 맵핑될 수 있다. 식별된 단어 "이메일 열어"를 포함하는 음성 입력이 수신될 때, 이것은 아웃룩을 시작하는 네이티브 커맨드를 포함하는 투명 레이어 커맨드가 결정되는 것을 야기한다.
도 11에 도시되는 바와 같이, 투명 레이어 커맨드는 하나 이상이 사용자 설정(1101) 및 API 라이브러리(Library)(1104)에 기반하여 결정될 수도 있다. API 라이브러리(1104)는 식별된 컨텍스트 및 특정 사용자 입력에 대응하는 네이티브 커맨드를 룩업(Lookup)하기 위해서 사용될 수 있다. 닦아내기 제스쳐 및 웹 브라우저 어플리케이션 컨텍스트의 예에서, 웹 브라우저 어플리케이션에 대응하는 API 라이브러리가 적절한 API 호출(Call)에 대해 문의하여 웹 페이지의 스크롤링을 유발할 수 있다. 대안적으로, API 라이브러리(1104)는 생략될 수 있고, 네이티브 커맨드는 특정 사용자 입력 및 식별된 컨텍스트에 지향되게 맵핑될 수 있다.
사용자 입력이 입력 좌표라고 결정되는 상황에서, 투명 레이어 커맨드는 입력 위치 좌표 및 식별된 컨텍스트에 적어도 부분적으로 기반하여 결정된다. 이 경우에, 투명 레이어 커맨드는 식별된 컨텍스트에서 적어도 하나의 네이티브 커맨드를 포함할 수 있고, 적어도 하나의 네이티브 커맨드는 기본 UI 내의 대응하는 위치 좌표에서 동작을 수행하도록 구성된다.
특정 컨텍스트 및 사용자 입력에 맵핑된 하나 이상의 가능한 동작이 있을 때, 설정(1101)은 대응하는 투명 레이어 커맨드를 결정하기 위해서 사용될 수 있다. 예를 들어, 도 7의 버튼(701B)은, 입력 좌표가 사용자 입력으로서 수신될 때 사용자가 선택, 포인팅, 또는 드로우 모드 사이에서 선택하는 것을 허용한다. 이 설정은 투명 레이어 커맨드 및 더 나아가, 어떤 네이티브 커맨드가 수행되고 어떤 동작이 수행되는지를 결정하기 위해서 사용될 수 있다. 이 경우에, 가능한 네이티브 커맨드는, 기본 UI에서 대응하는 위치 좌표와 연관되는 객체를 선택하도록 구성되는 선택 커맨드, 기본 UI에서 대응하는 위치 좌표로 포인터를 이동시키도록 구성되는 포인터 커맨드, 및 기본 UI에서 대응하는 위치 좌표에 있는 디스플레이 출력을 변경하도록 구성되는 그래픽 커맨드를 포함할 수 있다.
도 12a는 선택 모드가 토글될 때 입력 좌표를 수신하는 일 예를 도해한다. 도 12a에 도시되는 바와 같이, 사용자는 디스플레이 디바이스(1201) 상에 있는 (중첩된 투명 UI(1203)를 갖는) 오퍼레이팅 시스템 UI(1202)에 스타일러스(1200)를 지향시킨다. 이전의 예와 유사한, 카메라(1204)는 스타일러스(1200)에 대한 위치 및 방향 정보, 및 입력 좌표를 결정하기 위해서 사용될 수 있다. 선택 모드가 토글되고 스타일러스(1200)가 오퍼레이팅 시스템 UI(1202) 내의 폴더(1205)를 가리키고 있기 때문에, 결정된 투명 레이어 커맨드는 입력 좌표와 연관되는 객체(이 경우에 폴더(1205))를 선택하는 네이티브 오퍼레이팅 시스템 커맨드를 포함할 수 있다. 다른 예에서, 만약 윈도우가 입력 좌표에 위치하면, 이것은 전체 윈도우의 선택을 야기할 수 있다.
도 12b는 포인팅 모드가 토글될 때 입력 좌표를 수신하는 일 예를 도해한다. 이 경우에, 결정된 투명 레이어 커맨드는 입력 좌표의 위치로 마우스 포인터(1206)를 이동시키는 네이티브 오퍼레이팅 시스템 커맨드를 포함할 수 있다.
도 12c는, 드로잉 모드가 토글되고 사용자가 다수의 입력 좌표에 걸쳐서 스타일러스(1200)를 스위프(Sweep)할 때 입력 좌표를 수신하는 일 예를 도해한다. 이 경우에, 결정된 투명 레이어 커맨드는 입력 좌표 각각의 위치에서 디스플레이 출력을 변경하여 UI(1202) 상에 사용자가 라인(1207)을 드로잉하는 것을 야기하는 네이티브 오퍼레이팅 시스템 커맨드를 포함할 수 있다. 드로잉 모드에서 생성되는 수정된 그래픽 출력은, 투명 레이어(1203)의 일부로서, 예를 들어, 입력 좌표의 경로에 관련되는 메타데이터(Metadata)로서 저장될 수 있다. 사용자는 다음으로 변경된 디스플레이 출력을 이미지로서 내보내기하는 옵션을 선택할 수 있다.
사용자 입력이 제스쳐로서 식별되는 상황에서, 식별된 컨텍스트에 적어도 부분적으로 기반하여 사용자 입력을 하나 이상의 투명 레이어 커맨드로 변환시키는 것은, 식별된 제스쳐 및 식별된 컨텍스트에 적어도 부분적으로 기반하여 투명 레이어 커맨드를 결정하는 것을 포함할 수 있다. 투명 레이어 커맨드는 식별된 컨텍스트에서 적어도 하나의 네이티브 커맨드를 포함할 수 있고, 적어도 하나의 네이티브 커맨드는 식별된 컨텍스트에서 식별된 제스쳐와 연관된 동작을 수행하도록 구성된다. 이것의 예는 닦아내기 제스쳐 및, 웹 브라우저에서 스크롤 동작을 수행하도록 구성되는 네이티브 커맨드를 초래하는 웹 브라우저 어플리케이션 컨텍스트에 관한 것으로 위에서 논의되었다.
사용자 입력이 (예를 들어, 음성 인식을 사용함으로써) 하나 이상의 단어로서 식별되는 상황에서, 식별된 것에 적어도 부분적으로 기반하여 사용자 입력을 하나 이상의 투명 레이어 커맨드로 변환시키는 것은, 식별된 하나 이상의 단어 및 식별된 컨텍스트에 적어도 부분적으로 기반하여 투명 레이어 커맨드를 결정하는 것을 포함할 수 있다. 투명 레이어 커맨드는 식별된 컨텍스트에서 적어도 하나의 네이티브 커맨드를 포함할 수 있고, 적어도 하나의 네이티브 커맨드는 식별된 컨텍스트에서 식별된 하나 이상의 단어와 연관된 동작을 수행하도록 구성된다.
도 13은 입력 음성 데이터에서 식별되는 하나 이상의 단어에 기반하여 결정되는 투명 레이어 커맨드(1300)의 일 예를 도해한다. 식별된 단어(1301)는 어구인 "화이트보드" 또는 "블랭크 페이지" 중 하나를 포함한다. 투명 레이어 커맨드(1300)는 또한, 투명 레이어 커맨드의 실행 시 하드웨어 출력 디바이스 및 가상 드라이버로 투명 레이어에 의해서 보내지는 출력 인스트럭션인 응답 인스트럭션(Response Instruction)(1303), 및 커맨드의 디스크립션(Description)(1302)을 포함한다. 또한, 투명 레이어 커맨드(1300)는 화이트 보드 기능을 호출하기 위해서 사용되는 실제 네이티브 커맨드(1304)를 포함한다.
도 14는 일 실시예에 따른 입력 음성 데이터에서 식별되는 하나 이상의 단어에 기반하여 결정되는 투명 레이어 커맨드(1400)의 다른 예를 도해한다. 이 예에서, 하나 이상의 단어는 "이메일 열어"이다. 도 14에 도시되는 바와 같이, 투명 레이어 커맨드(1400)는, 아웃룩 어플리케이션을 실행시키는 구체적 실행가능한 파일을 런(Run)시키는 인스트럭션인 네이티브 커맨드 "outlook.exe"를 포함한다. 투명 레이어 커맨드(1400)는 또한 음성 커맨드를 수신하는 것에 대응하여 출력되는 음성 응답인 "이메일 열림"을 또한 포함할 수 있다.
도 3을 다시 참조하면, 304 단계에서 하나 이상의 투명 레이어 커맨드가 투명 레이어 상에서 실행된다. 하나 이상의 투명 레이어 커맨드의 실행은 식별된 컨텍스트에서 하나 이상의 네이티브 커맨드의 실행을 유발하도록 구성될 수 있다.
도 15는 일 실시예에 따른 투명 레이어 상에서 하나 이상의 투명 레이어 커맨드를 실행하기 위한 흐름도를 도해한다. 1501 단계에서, 투명 레이어 커맨드에서 적어도 하나의 네이티브 커맨드가 식별된다. 네이티브 커맨드는, 예를 들어 투명 레이어 커맨드의 구조 내에 네이티브 커맨드로서 지정되어, 식별이 가능하다.
1502 단계에서, 적어도 하나의 네이티브 커맨드가 식별된 컨텍스트에서 실행된다. 이 단계는, 식별된 컨텍스트에 대해서 식별된 API를 통해서 이 컨텍스트에 적어도 하나의 네이티브 커맨드를 전달, 및 식별된 컨텍스트 내의 네이티브 커맨드를 실행하는 것을 포함할 수 있다. 예를 들어, 만약 식별된 컨텍스트가 오퍼레이팅 시스템이면, 네이티브 커맨드는 실행을 위해 오퍼레이팅 시스템 API를 통해서 오퍼레이팅 시스템으로 전달될 수 있다. 추가적으로, 만약 식별된 컨텍스트가 어플리케이션이면, 네이티브 커맨드는 실행을 위해 어플리케이션 API를 통해서 어플리케이션에 전달될 수 있다.
선택적으로, 1503 단계에서, 응답은 하드웨어 디바이스(들)로 전송될 수 있다. 앞에서 논의된 바와 같이, 이 응답은 투명 레이어로부터 가상 드라이버 및 하드웨어 디바이스로 전송될 수 있다.
도 16 내지 도 19는 여기서 개시되는 시스템의 추가적인 특징을 도해한다. 도 16은 일 실시예에 따른 사용자 입력에 대응하여 새로운 커맨드를 추가하기 위한 일 예의 인터페이스를 도해한다. 인터페이스(1600) 내의 대쉬보드는 이미 추가된 어플리케이션(1601)의 아이콘을 포함하며, 미리 결정된 사용자 입력 및 하드웨어 디바이스(예를 들어, 음성 커맨드)를 사용하여 시작될 수 있다. 또한, 대쉬보드는 어플리케이션에 따라 특정(Application-specific)되고, 소정 사용자 입력에 맵핑되는 다른 커맨드를 도시한다. 추가 버튼(1602)의 선택은 추가 커맨드 메뉴(1603)를 연다. 이 메뉴는 사용자가 다음 옵션 사이에서 선택하는 것을 허용한다: 아이템 타입: 하단 바 메뉴(Bottom Bar Menu) 상에 추가되는 고정 아이템(Fixed Item) / 드래그 메뉴(Drag Menu)에 추가되는 일반 아이템(Normal Item); 아이콘: 이미지 아이콘을 선택; 백그라운드: 백그라운드 아이콘 색깔을 선택; 색깔: 아이콘 색깔을 선택; 이름: 새로운 아이템 이름을 설정; 음성 커맨드: 새로운 어플리케이션을 열도록 음성 활성 커맨드를 설정; 피드백 응답: 어플리케이션 음성 응답 피드백을 설정; 커맨드: 시작할 어플리케이션 타입 또는 맞춤 커맨드(Custom Command) 타입을 선택(예를 들어, 어플리케이션 커맨드를 시작, 어플리케이션 커맨드 내의 동작을 수행, 어플리케이션 커맨드를 닫음 등); 프로세스 시작: 만약 새로운 프로세스 또는 어플리케이션을 시작하면, 프로세스 또는 어플리케이션의 이름; 및 파라미터: 새로운 프로세스 또는 어플리케이션 안으로 전달되는 임의의 파라미터.
도 17은 일 실시예에 따른 드로잉 인터페이스(1700) 및 드로우 모드의 다양한 구성요소 및 옵션을 도해한다. 도 18은 터치 및 제스쳐를 사용하여 사용자가 입력을 제공하는 것을 허용하고 객체를 인식하기 위해서 사용되는 비디오 카메라 하드웨어 디바이스를 위한 캘리브레이션 및 설정 인터페이스(1800)를 도해한다. 도 19는, 사용자가, 인터페이스의 다양한 양태를 맞추고, 입력 모드를 토글하고, 다른 변화를 만드는 것을 허용하는, 일반적인 설정 인터페이스(1900)를 도해한다. 인터페이스(1900)에 도시되는 바와 같이, 사용자는 하드웨어 스타일러스("매직 스타일러스"라 함)에 대한 설정을 캘리브레이션하고 조정하기 위해서 설정 페이지에 접근할 수 있다.
전술된 기술 중 하나 이상은 하나 이상의 컴퓨터 시스템에서 구현될 수 있거나 또는 이를 관여시킬 수 있다. 도 20은 컴퓨팅 환경(2000)의 일 예를 도해한다. 컴퓨팅 환경(2000)은 설명되는 실시형태(들)의 사용 또는 기능의 범위에 관하여 어떠한 제한하도록 하지 않는다.
도 20을 참조하여, 컴퓨팅 환경(2000)은 적어도 하나의 프로세싱 유닛(2010) 및 메모리(2020)를 포함한다. 프로세싱 유닛(2010)은 컴퓨터-실행가능한 인스트럭션을 실행하고, 이는 실제 또는 가상 프로세서일 수 있다. 멀티-프로세싱 시스템에서, 멀티 프로세싱 유닛은 프로세싱 파워를 증가시키기 위해 컴퓨터-실행가능한 인스트럭션을 실행한다. 메모리(2020)는 휘발성 메모리(예를 들어, 레지스터, 캐시, RAM), 비-휘발성 메모리(예를 들어, ROM, EEPROM, 플래쉬 메모리 등) 또는 이 둘의 조합일 수 있다. 메모리(2020)는 설명되는 기술을 구현하는 소프트웨어(2080)를 저장할 수 있다.
컴퓨팅 환경은 추가적인 특징을 가질 수 있다. 예를 들어, 컴퓨팅 환경(2000)은 저장부(2040), 하나 이상의 입력 디바이스(2050), 하나 이상의 출력 디바이스(2060), 및 하나 이상의 통신 접속부(2090)를 포함한다. 상호접속 메커니즘(2070), 예를 들어, 버스(Bus), 콘트롤러, 또는 네트워크는 컴퓨팅 환경(2000)의 구성요소를 상호접속한다. 전형적으로, 오퍼레이팅 시스템 소프트웨어 또는 펌웨어(미도시)는 컴퓨팅 환경(2000)에서 실행되는 다른 소프트웨어에 대한 오퍼레이팅 환경을 제공하고, 컴퓨팅 환경(2000)의 구성요소의 활동을 조정한다.
저장부(2040)는 제거가능하거나 제거가능하지 않을 수 있고, 마그네틱 디스크, 마그네틱 테이프 또는 카세트, CD-ROM, CD-RW, DVD 또는, 정보를 저장하기 위해서 사용될 수 있고, 컴퓨팅 환경(2000) 내에서 액세스될 수 있는 임의의 다른 매체를 포함한다. 저장부(2040)는 소프트웨어(2080)를 위한 인스트럭션을 저장할 수 있다.
입력 디바이스(들)(2050)는 터치 입력 디바이스, 예를 들어 키보드, 마우스, 펜, 트랙볼(Trackball), 터치 스크린, 또는 게임 컨트롤러, 음성 입력 디바이스, 스캔닝 디바이스, 디지털 카메라, 리모트 컨트롤, 또는 컴퓨팅 환경(2000)에 입력을 제공하는 다른 디바이스일 수 있다. 출력 디바이스(들)(2060)는 디스플레이, 텔레비젼, 모니터, 프린터, 스피커, 또는 컴퓨팅 환경(2000)으로부터 출력을 제공하는 다른 디바이스일 수 있다.
통신 접속부(들)(2090)은 통신 매체를 통해 다른 컴퓨팅 독립체로 통신이 가능하게 한다. 통신 매체는 정보, 예를 들어, 컴퓨터-실행가능 인스트럭션, 오디오 또는 비디오 정보, 또는 다른 데이터를 변조된 데이터 신호로 전달한다. 변조된 데이터 신호는 특성 세트 중 하나 이상을 갖는 신호이거나 신호로 정보를 인코딩하는 방식으로 변화된다. 제한이 아니라 예시로서, 통신 매체는 전기적, 광학적, RF, 적외선, 음향, 또는 다른 운반파로 구현되는 유선 또는 무선 기술을 포함한다.
구현은 컴퓨터-판독가능 매체의 컨텍스트에서 설명될 수 있다. 컴퓨터-판독가능 매체는, 컴퓨팅 환경 내에서 액세스될 수 있는 임의의 이용가능한 매체이다. 제한이 아니라 예시로서, 컴퓨팅 환경(2000) 내에서 컴퓨터-판독가능한 매체는 메모리(2020), 저장부(2040), 통신 매체 및 이들의 임의의 조합을 포함한다.
물론, 도 20은 단지 식별의 용이성을 위해서 컴퓨팅 환경(2000), 디스플레이 디바이스(2060) 및 입력 디바이스(2050)를 별개의 디바이스로서 도해한다. 컴퓨팅 환경(2000), 디스플레이 디바이스(2060), 및 입력 디바이스(2050)는 별개의 디바이스(예를 들어, 모니터 및 마우스에 와이어에 의해서 접속되는 퍼스널 컴퓨터)일 수 있거나, 단일의 디바이스(예를 들어, 스마트폰 또는 테블릿과 같은 터치-디스플레이를 갖는 모바일 디바이스)로 통합될 수 있거나, 디바이스의 임의의 조합(예를 들어, 터치-스크린 디스플레이 디바이스에 작동가능하게 커플링되는 컴퓨팅 디바이스, 단일 디스플레이 디바이스 및 입력 디바이스에 부착되는 복수의 컴퓨팅 디바이스 등)일 수 있다. 컴퓨팅 환경(2000)은 셋-톱 박스, 퍼스널 컴퓨터, 또는 하나 이상의 서버, 예를 들어, 네트워크 서버의 팜(Farm), 클러스터된 서버 환경 또는 컴퓨팅 디바이스의 클라우드 네트워크일 수 있다.
설명된 실시형태를 참조하여 우리 발명의 원리를 도해하고 설명하였으나, 설명된 실시형태가 이러한 원리로부터 벗어나지 않으면서 배열 및 세부적인 사항에서 수정될 수 있다는 점이 인식될 것이다. 소프트웨어로 도시되는 설명된 실시형태의 요소는 하드웨어에서 구현될 수 있고 그 반대도 가능하다.
우리 발명의 원리가 적용될 수 있는 많은 가능한 실시형태를 고려하여, 우리는 다음 청구항 및 이에 대한 균등물의 범위 및 정신 내에 들어 올 수 있는 모든 이러한 실시형태를 우리의 발명으로서 청구한다.

Claims (36)

  1. 유니버셜 하드웨어-소프트웨어 인터페이스(Universal Hardware-Software Interface)의 구현을 위해 하나 이상의 컴퓨팅 디바이스(Computing Device)에 의해서 실행되는 방법으로서,
    상기 하나 이상의 컴퓨팅 디바이스 중 적어도 하나에 통신 가능하게 커플링되는(Coupled) 하나 이상의 하드웨어 디바이스에 의해서 캡쳐된 정보에 적어도 부분적으로 기반하여, 상기 하나 이상의 컴퓨팅 디바이스 중 적어도 하나의 컴퓨팅 디바이스 상에서 실행되는 가상 드라이버(Virtual Driver)에 의해서, 사용자 입력을 결정하는 단계;
    상기 사용자 입력에 대응하는 컨텍스트(Context)를, 상기 하나 이상의 컴퓨팅 디바이스 중 적어도 하나에 의해서, 식별하는 단계 - 상기 식별된 컨텍스트는 오퍼레이팅 시스템 또는 상기 오퍼레이팅 시스템 상에서 실행되는 어플리케이션(Application) 중 하나를 포함함 -;
    상기 식별된 컨텍스트에 적어도 부분적으로 기반하여, 상기 하나 이상의 컴퓨팅 디바이스 중 적어도 하나에 의해서, 상기 사용자 입력을 하나 이상의 투명 레이어 커맨드(Transparent Layer Command)로 변환시키는 단계 - 상기 투명 레이어는, 상기 가상 드라이버와, 상기 오퍼레이팅 시스템 또는 상기 오퍼레이팅 시스템 상에서 실행되는 상기 어플리케이션 중 하나 이상과의 사이에서 인터페이싱하도록 구성되는 API(Application Programming Interface)를 포함함 -; 및
    상기 하나 이상의 컴퓨팅 디바이스 중 적어도 하나에 의해서 상기 투명 레이어 상에서 상기 하나 이상의 투명 레이어 커맨드를 실행하는 단계 - 상기 하나 이상의 투명 레이어 커맨드의 실행은 상기 식별된 컨텍스트에서 하나 이상의 네이티브(Native) 커맨드의 실행을 유발하도록 구성됨 -
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 하나 이상의 하드웨어 디바이스에 의해서 캡쳐된 상기 정보는 하나 이상의 이미지를 포함하고,
    상기 하나 이상의 컴퓨팅 디바이스 중 적어도 하나에 통신 가능하게 커플링된 상기 하나 이상의 하드웨어 디바이스에 의해서 캡쳐된 정보에 적어도 부분적으로 기반하여 사용자 입력을 결정하는 단계는,
    상기 하나 이상의 이미지에서 객체(Object)를 인식하는 단계;
    상기 하나 이상의 이미지에서 상기 인식된 객체의 하나 이상의 방향(Orientation) 및 하나 이상의 위치를 결정하는 단계; 및
    상기 인식된 객체의 상기 하나 이상의 방향 및 상기 하나 이상의 위치에 적어도 부분적으로 기반하여 상기 사용자 입력을 결정하는 단계
    를 포함하는 방법.
  3. 제2항에 있어서,
    상기 인식된 객체의 상기 하나 이상의 방향 및 상기 하나 이상의 위치에 적어도 부분적으로 기반하여 상기 사용자 입력을 결정하는 단계는,
    상기 하나 이상의 방향 및 상기 하나 이상의 위치에 적어도 부분적으로 기반하여 상기 투명 레이어의 투명 UI(Transparent User Interface) 상의 위치 좌표를 결정하는 단계를 포함하며,
    상기 투명 UI는 상기 오퍼레이팅 시스템 또는 상기 오퍼레이팅 시스템 상에서 실행되는 상기 어플리케이션 중 하나 이상에 대응하는 기본 UI(Underlying User Interface) 상에 중첩되는 방법.
  4. 제3항에 있어서,
    상기 식별된 컨텍스트에 적어도 부분적으로 기반하여 상기 사용자 입력을 하나 이상의 투명 레이어 커맨드로 변환시키는 단계는,
    상기 위치 좌표 및 상기 식별된 컨텍스트에 적어도 부분적으로 기반하여 투명 레이어 커맨드를 결정하는 단계를 포함하며,
    상기 투명 레이어 커맨드는 상기 식별된 컨텍스트에서 적어도 하나의 네이티브 커맨드를 포함하고, 상기 적어도 하나의 네이티브 커맨드는 상기 기본 UI 내의 상기 대응하는 위치 좌표에서 동작을 수행하도록 구성되는 방법.
  5. 제4항에 있어서,
    상기 적어도 하나의 네이티브 커맨드는,
    상기 기본 UI에서 상기 대응하는 위치 좌표와 연관되는 객체를 선택하도록 구성되는 선택 커맨드; 또는
    상기 기본 UI에서 상기 대응하는 위치 좌표로 포인터를 이동시키도록 구성되는 포인터 커맨드 중 하나 이상을 포함하는 방법.
  6. 제4항에 있어서,
    상기 적어도 하나의 네이티브 커맨드는, 상기 기본 UI에서 상기 대응하는 위치 좌표에서의 상기 디스플레이 출력을 변경하도록 구성되는 그래픽 커맨드(Graphical Command)를 포함하고,
    상기 방법은 상기 변경된 디스플레이 출력을, 상기 하나 이상의 컴퓨팅 디바이스 중 적어도 하나에 의해서 이미지로서 내보내는 단계를 더 포함하는 방법.
  7. 제2항에 있어서,
    상기 인식된 객체의 상기 하나 이상의 방향 및 상기 하나 이상의 위치에 적어도 부분적으로 기반하여 상기 사용자 입력을 결정하는 단계는,
    상기 하나 이상의 방향 및 상기 하나 이상의 위치에 적어도 부분적으로 기반하여 제스쳐를 식별하는 단계를 포함하는 방법.
  8. 제7항에 있어서,
    상기 식별된 컨텍스트에 적어도 부분적으로 기반하여 상기 사용자 입력을 하나 이상의 투명 레이어 커맨드로 변환시키는 단계는,
    상기 식별된 제스쳐 및 상기 식별된 컨텍스트에 적어도 부분적으로 기반하여 투명 레이어 커맨드를 결정하는 단계를 포함하며,
    상기 투명 레이어 커맨드는 상기 식별된 컨텍스트에서 적어도 하나의 네이티브 커맨드를 포함하고, 상기 적어도 하나의 네이티브 커맨드는 상기 식별된 컨텍스트에서 상기 식별된 제스쳐와 연관된 동작을 수행하도록 구성되는 방법.
  9. 제1항에 있어서,
    상기 하나 이상의 하드웨어 디바이스에 의해서 캡쳐된 상기 정보는 소리 정보를 포함하되,
    상기 하나 이상의 컴퓨팅 디바이스 중 적어도 하나에 통신가능하게 커플링된 상기 하나 이상의 하드웨어 디바이스에 의해서 캡쳐된 정보에 적어도 부분적으로 기반하여 사용자 입력을 결정하는 단계는,
    하나 이상의 단어를 식별하기 위해 상기 소리 정보에 대해 음성 인식을 수행하는 단계를 포함하는 방법.
  10. 제9항에 있어서,
    상기 식별된 컨텍스트에 적어도 부분적으로 기반하여 상기 사용자 입력을 하나 이상의 투명 레이어 커맨드로 변환시키는 단계는,
    상기 식별된 하나 이상의 단어 및 상기 식별된 컨텍스트에 적어도 부분적으로 기반하여 투명 레이어 커맨드를 결정하는 단계를 포함하며,
    상기 투명 레이어 커맨드는 상기 식별된 컨텍스트에서 적어도 하나의 네이티브 커맨드를 포함하고, 상기 적어도 하나의 네이티브 커맨드는 상기 식별된 컨텍스트에서 상기 식별된 하나 이상의 단어와 연관된 동작을 수행하도록 구성되는 방법.
  11. 제1항에 있어서,
    상기 투명 레이어 상에서 상기 하나 이상의 투명 레이어 커맨드를 실행하는 단계는, 상기 하나 이상의 투명 레이어 커맨드에서 각각의 투명 레이어 커맨드에 대해,
    상기 투명 레이어 커맨드에서 적어도 하나의 네이티브 커맨드를 식별하는 단계; 및
    상기 식별된 컨텍스트에서 상기 적어도 하나의 네이티브 커맨드를 실행하는 단계를 포함하는 방법.
  12. 제11항에 있어서,
    상기 식별된 컨텍스트에서 상기 적어도 하나의 네이티브 커맨드를 실행하는 단계는,
    상기 식별된 컨텍스트가 상기 오퍼레이팅 시스템을 포함할 때, 상기 적어도 하나의 네이티브 커맨드를 입력으로서 오퍼레이팅 시스템 API를 거쳐서 상기 오퍼레이팅 시스템에 전달하는 단계; 또는
    상기 식별된 컨텍스트가 상기 오퍼레이팅 시스템 상에서 실행되는 상기 어플리케이션을 포함할 때, 상기 적어도 하나의 네이티브 커맨드를 입력으로서 어플리케이션 API를 거쳐서 상기 어플리케이션에 전달하는 단계를 포함하는 방법.
  13. 유니버셜 하드웨어-소프트웨어 인터페이스(Universal Hardware-Software Interface)의 구현을 위한 장치로서,
    하나 이상의 프로세서; 및
    상기 하나 이상의 프로세서 중 적어도 하나에 작동가능하게 커플링되고, 거기에 저장된 인스트럭션(Instruction)을 갖는 하나 이상의 메모리를 포함하되,
    상기 인스트럭션은, 상기 하나 이상의 프로세서 중 적어도 하나에 의해서 실행될 때, 상기 하나 이상의 프로세서 중 적어도 하나가,
    상기 장치 상에서 실행되는 가상 드라이버(Virtual Driver)를 사용하여, 상기 장치에 통신가능하게 커플링된 하나 이상의 하드웨어 디바이스에 의해서 캡쳐된 정보에 적어도 부분적으로 기반하여 사용자 입력을 결정하고;
    오퍼레이팅 시스템 또는 상기 오퍼레이팅 시스템 상에서 실행되는 어플리케이션 중 하나를 포함하고, 상기 사용자 입력에 대응하는, 컨텍스트를 식별하고;
    상기 식별된 컨텍스트에 적어도 부분적으로 기반하여, 상기 사용자 입력을 하나 이상의 투명 레이어 커맨드로 변환시키고 - 상기 투명 레이어는, 상기 가상 드라이버와, 상기 오퍼레이팅 시스템 또는 상기 오퍼레이팅 시스템 상에서 실행되는 상기 어플리케이션 중 하나 이상과의 사이에서 인터페이싱하도록 구성되는 API(Application Programming Interface)를 포함함 - ;
    상기 투명 레이어 상에서 상기 하나 이상의 투명 레이어 커맨드를 실행하게 하는 - 상기 하나 이상의 투명 레이어 커맨드의 실행이 상기 식별된 컨텍스트에서 하나 이상의 네이티브 커맨드의 실행을 유발하게끔 구성됨 -
    장치.
  14. 제13항에 있어서,
    상기 하나 이상의 하드웨어 디바이스에 의해서 캡쳐된 상기 정보는 하나 이상의 이미지를 포함하고,
    상기 하나 이상의 프로세서 중 적어도 하나에 의해서 실행될 때, 상기 하나 이상의 프로세서 중 적어도 하나가 상기 장치에 통신가능하게 커플링된 상기 하나 이상의 하드웨어 디바이스에 의해서 캡쳐된 정보에 적어도 부분적으로 기반하여 사용자 입력을 결정하게 하는 상기 인스트럭션은, 상기 하나 이상의 프로세서 중 적어도 하나가 또한,
    상기 하나 이상의 이미지에서 객체를 인식하고;
    상기 하나 이상의 이미지에서 상기 인식된 객체의 하나 이상의 방향 및 하나 이상의 위치를 결정하고;
    상기 인식된 객체의 상기 하나 이상의 방향 및 상기 하나 이상의 위치에 적어도 부분적으로 기반하여 상기 사용자 입력을 결정하게 하는 장치.
  15. 제14항에 있어서,
    상기 하나 이상의 프로세서 중 적어도 하나에 의해서 실행될 때, 상기 하나 이상의 프로세서 중 적어도 하나가 상기 인식된 객체의 상기 하나 이상의 방향 및 상기 하나 이상의 위치에 적어도 부분적으로 기반하여 상기 사용자 입력을 결정하게 하는 상기 인스트럭션은, 상기 하나 이상의 프로세서 중 적어도 하나가 또한,
    상기 하나 이상의 방향 및 상기 하나 이상의 위치에 적어도 부분적으로 기반하여 상기 투명 레이어의 투명 UI(Transparent User Interface) 상의 위치 좌표를 결정하게 하며,
    상기 투명 UI는 상기 오퍼레이팅 시스템 또는 상기 오퍼레이팅 시스템 상에서 실행되는 상기 어플리케이션 중 하나 이상에 대응하는 기본 UI(Underlying User Interface) 상에 중첩되는 장치.
  16. 제15항에 있어서,
    상기 하나 이상의 프로세서 중 적어도 하나에 의해서 실행될 때, 상기 하나 이상의 프로세서 중 적어도 하나가 상기 식별된 컨텍스트에 적어도 부분적으로 기반하여 상기 사용자 입력을 하나 이상의 투명 레이어 커맨드로 변환시키게 하는 상기 인스트럭션은, 상기 하나 이상의 프로세서 중 적어도 하나가 또한,
    상기 위치 좌표 및 상기 식별된 컨텍스트에 적어도 부분적으로 기반하여 투명 레이어 커맨드를 결정하게 하되,
    상기 투명 레이어 커맨드는 상기 식별된 컨텍스트에서 적어도 하나의 네이티브 커맨드를 포함하고, 상기 적어도 하나의 네이티브 커맨드는 상기 기본 UI 내의 대응하는 위치 좌표에서 동작을 수행하도록 구성되는 장치.
  17. 제16항에 있어서,
    상기 적어도 하나의 네이티브 커맨드는,
    상기 기본 UI에서 상기 대응하는 위치 좌표와 연관되는 객체를 선택하도록 구성되는 선택 커맨드; 또는
    상기 기본 UI에서 상기 대응하는 위치 좌표로 포인터를 이동시키도록 구성되는 포인터 커맨드 중 하나 이상을 포함하는, 장치.
  18. 제16항에 있어서,
    상기 적어도 하나의 네이티브 커맨드는 상기 기본 UI에서 상기 대응하는 위치 좌표에서의 상기 디스플레이 출력을 변경하도록 구성되는 그래픽 커맨드(Graphical Command)를 포함하고,
    상기 하나 이상의 메모리 중 적어도 하나는 저장된 인스트럭션을 더 가지며, 이 인스트럭션은, 상기 하나 이상의 프로세서 중 적어도 하나에 의해서 실행될 때, 상기 하나 이상의 프로세서 중 적어도 하나가,
    상기 변경된 디스플레이 출력을 이미지로서 내보내게 하는 장치.
  19. 제14항에 있어서,
    상기 하나 이상의 프로세서 중 적어도 하나에 의해서 실행될 때, 상기 하나 이상의 프로세서 중 적어도 하나가 상기 인식된 객체의 상기 하나 이상의 방향 및 상기 하나 이상의 위치에 적어도 부분적으로 기반하여 상기 사용자 입력을 결정하게 하는 상기 인스트럭션은, 상기 하나 이상의 프로세서 중 적어도 하나가 또한,
    상기 하나 이상의 방향 및 상기 하나 이상의 위치에 적어도 부분적으로 기반하여 제스쳐를 식별하게 하는 장치.
  20. 제19항에 있어서,
    상기 하나 이상의 프로세서 중 적어도 하나에 의해서 실행될 때, 상기 하나 이상의 프로세서 중 적어도 하나가 상기 식별된 컨텍스트에 적어도 부분적으로 기반하여 상기 사용자 입력을 하나 이상의 투명 레이어 커맨드로 변환시키게 하는 상기 인스트럭션은, 상기 하나 이상의 프로세서 중 적어도 하나가 또한,
    상기 식별된 제스쳐 및 상기 식별된 컨텍스트에 적어도 부분적으로 기반하여 투명 레이어 커맨드를 결정하게 하되,
    상기 투명 레이어 커맨드는 상기 식별된 컨텍스트에서 적어도 하나의 네이티브 커맨드를 포함하고, 상기 적어도 하나의 네이티브 커맨드는 상기 식별된 컨텍스트에서 상기 식별된 제스쳐와 연관된 동작을 수행하도록 구성되는 장치.
  21. 제13항에 있어서,
    상기 하나 이상의 하드웨어 디바이스에 의해서 캡쳐된 상기 정보는 소리 정보를 포함하되,
    상기 하나 이상의 프로세서 중 적어도 하나에 의해서 실행될 때, 상기 하나 이상의 프로세서 중 적어도 하나가 상기 장치에 통신가능하게 커플링된 상기 하나 이상의 하드웨어 디바이스에 의해서 캡쳐된 정보에 적어도 부분적으로 기반하여 사용자 입력을 결정하게 하는 상기 인스트럭션은, 상기 하나 이상의 프로세서 중 적어도 하나가 또한,
    하나 이상의 단어를 식별하기 위해 상기 소리 정보에 대해 음성 인식을 수행하게 하는 장치.
  22. 제21항에 있어서,
    상기 하나 이상의 프로세서 중 적어도 하나에 의해서 실행될 때, 상기 하나 이상의 프로세서 중 적어도 하나가 상기 식별된 컨텍스트에 적어도 부분적으로 기반하여 상기 사용자 입력을 하나 이상의 투명 레이어 커맨드로 변환시키게 하는 상기 인스트럭션은, 상기 하나 이상의 프로세서 중 적어도 하나가 또한,
    상기 식별된 하나 이상의 단어 및 상기 식별된 컨텍스트에 적어도 부분적으로 기반하여 투명 레이어 커맨드를 결정하게 하되,
    상기 투명 레이어 커맨드는 상기 식별된 컨텍스트에서 적어도 하나의 네이티브 커맨드를 포함하고, 상기 적어도 하나의 네이티브 커맨드는 상기 식별된 컨텍스트에서 상기 식별된 하나 이상의 단어와 연관된 동작을 수행하도록 구성되는 장치.
  23. 제13항에 있어서,
    상기 하나 이상의 프로세서 중 적어도 하나에 의해서 실행될 때, 상기 하나 이상의 프로세서 중 적어도 하나가 상기 투명 레이어 상에서 상기 하나 이상의 투명 레이어 커맨드를 실행하게 하는 상기 인스트럭션은, 상기 하나 이상의 프로세서 중 적어도 하나가 상기 하나 이상의 투명 레이어 커맨드에서 각각의 투명 레이어 커맨드에 대해서, 또한,
    상기 투명 레이어 커맨드에서 적어도 하나의 네이티브 커맨드를 식별하고;
    상기 식별된 컨텍스트에서 상기 적어도 하나의 네이티브 커맨드를 실행하게 하는 장치.
  24. 제23항에 있어서,
    상기 하나 이상의 프로세서 중 적어도 하나에 의해서 실행될 때, 상기 하나 이상의 프로세서 중 적어도 하나가 상기 식별된 컨텍스트에서 상기 적어도 하나의 네이티브 커맨드를 실행하게 하는 상기 인스트럭션은, 상기 하나 이상의 프로세서 중 적어도 하나가 또한,
    상기 식별된 컨텍스트가 상기 오퍼레이팅 시스템을 포함할 때, 상기 적어도 하나의 네이티브 커맨드를 입력으로서 오퍼레이팅 시스템 API를 거쳐서 상기 오퍼레이팅 시스템에 전달하게 하거나; 또는
    상기 식별된 컨텍스트가 상기 오퍼레이팅 시스템 상에서 실행되는 상기 어플리케이션을 포함할 때, 상기 적어도 하나의 네이티브 커맨드를 입력으로서 어플리케이션 API를 거쳐서 상기 어플리케이션에 전달하게 하는 장치.
  25. 컴퓨터-판독가능 인스트럭션(Instruction)을 저장하는 적어도 하나의 비일시적(Non-transitory) 컴퓨터-판독가능 매체로서,
    상기 인스트럭션은, 하나 이상의 컴퓨팅 디바이스에 의해서 실행될 때, 상기 하나 이상의 컴퓨팅 디바이스 중 적어도 하나가,
    상기 하나 이상의 컴퓨팅 디바이스 중 적어도 하나에 통신가능하게 커플링되는 하나 이상의 하드웨어 디바이스에 의해서 캡쳐된 정보에 적어도 부분적으로 기반하여, 상기 하나 이상의 컴퓨팅 디바이스 중 적어도 하나의 컴퓨팅 디바이스 상에서 실행되는 가상 드라이버(Virtual Driver)를 사용하여, 사용자 입력을 결정하고;
    오퍼레이팅 시스템 또는 상기 오퍼레이팅 시스템 상에서 실행되는 어플리케이션 중 하나를 포함하고, 상기 사용자 입력에 대응하는, 컨텍스트를 식별하고;
    상기 식별된 컨텍스트에 적어도 부분적으로 기반하여 상기 사용자 입력을, 상기 가상 드라이버와, 상기 오퍼레이팅 시스템 또는 상기 오퍼레이팅 시스템 상에서 실행되는 상기 어플리케이션 중 하나 이상과의 사이에서 인터페이싱하도록 구성되는 API(Application Programming Interface)를 포함하는 투명 레이어의 하나 이상의 투명 레이어 커맨드로 변환시키고;
    상기 투명 레이어 상에서 상기 하나 이상의 투명 레이어 커맨드를 실행하게 하는 상기 매체이며, 상기 하나 이상의 투명 레이어 커맨드의 실행이 상기 식별된 컨텍스트에서 하나 이상의 네이티브 커맨드의 실행을 유발하게끔 구성되는,
    적어도 하나의 비일시적 컴퓨터-판독가능 매체.
  26. 제25항에 있어서,
    상기 하나 이상의 하드웨어 디바이스에 의해서 캡쳐된 상기 정보는 하나 이상의 이미지를 포함하고,
    상기 하나 이상의 컴퓨팅 디바이스 중 적어도 하나에 의해서 실행될 때, 상기 하나 이상의 컴퓨팅 디바이스 중 적어도 하나가 상기 하나 이상의 컴퓨팅 디바이스 중 적어도 하나에 통신가능하게 커플링된 상기 하나 이상의 하드웨어 디바이스에 의해서 캡쳐된 정보에 적어도 부분적으로 기반하여 사용자 입력을 결정하게 하는 상기 인스트럭션은, 상기 하나 이상의 컴퓨팅 디바이스 중 적어도 하나가 또한,
    상기 하나 이상의 이미지에서 객체를 인식하고;
    상기 하나 이상의 이미지에서 상기 인식된 객체의 하나 이상의 방향 및 하나 이상의 위치를 결정하고;
    상기 인식된 객체의 상기 하나 이상의 방향 및 상기 하나 이상의 위치에 적어도 부분적으로 기반하여 상기 사용자 입력을 결정하게 하는, 적어도 하나의 비일시적 컴퓨터-판독가능 매체.
  27. 제26항에 있어서,
    상기 하나 이상의 컴퓨팅 디바이스 중 적어도 하나에 의해서 실행될 때, 상기 하나 이상의 컴퓨팅 디바이스 중 적어도 하나가 상기 인식된 객체의 상기 하나 이상의 방향 및 상기 하나 이상의 위치에 적어도 부분적으로 기반하여 상기 사용자 입력을 결정하게 하는 상기 인스트럭션은, 상기 하나 이상의 컴퓨팅 디바이스 중 적어도 하나가 또한,
    상기 하나 이상의 방향 및 상기 하나 이상의 위치에 적어도 부분적으로 기반하여 상기 투명 레이어의 투명 UI(Transparent User Interface) 상의 위치 좌표를 결정하게 하며,
    상기 투명 UI는 상기 오퍼레이팅 시스템 또는 상기 오퍼레이팅 시스템 상에서 실행되는 상기 어플리케이션 중 하나 이상에 대응하는 기본 UI(Underlying User Interface) 상에 중첩되는, 적어도 하나의 비일시적 컴퓨터-판독가능 매체.
  28. 제27항에 있어서,
    상기 하나 이상의 컴퓨팅 디바이스 중 적어도 하나에 의해서 실행될 때, 상기 하나 이상의 컴퓨팅 디바이스 중 적어도 하나가 상기 식별된 컨텍스트에 적어도 부분적으로 기반하여 상기 사용자 입력을 하나 이상의 투명 레이어 커맨드로 변환시키게 하는 상기 인스트럭션은, 상기 하나 이상의 컴퓨팅 디바이스 중 적어도 하나가 또한,
    상기 위치 좌표 및 상기 식별된 컨텍스트에 적어도 부분적으로 기반하여 투명 레이어 커맨드를 결정하게 하되,
    상기 투명 레이어 커맨드는 상기 식별된 컨텍스트에서 적어도 하나의 네이티브 커맨드를 포함할 수 있고, 상기 적어도 하나의 네이티브 커맨드는 상기 기본 UI 내의 상기 대응하는 위치 좌표에서 동작을 수행하도록 구성되는, 적어도 하나의 비일시적 컴퓨터-판독가능 매체.
  29. 제28항에 있어서,
    상기 적어도 하나의 네이티브 커맨드는,
    상기 기본 UI에서 상기 대응하는 위치 좌표와 연관되는 객체를 선택하도록 구성되는 선택 커맨드; 또는
    상기 기본 UI에서 상기 대응하는 위치 좌표로 포인터를 이동시키도록 구성되는 포인터 커맨드 중 하나 이상을 포함하는, 적어도 하나의 비일시적 컴퓨터-판독가능 매체.
  30. 제28항에 있어서,
    상기 적어도 하나의 네이티브 커맨드는 상기 기본 UI에서 상기 대응하는 위치 좌표에서의 상기 디스플레이 출력을 변경하도록 구성되는 그래픽 커맨드(Graphical Command)를 포함하고,
    상기 매체는 컴퓨터-판독가능 인스트럭션을 저장하며, 상기 인스트럭션은, 상기 하나 이상의 컴퓨팅 디바이스 중 적어도 하나에 의해서 실행될 때, 상기 하나 이상의 컴퓨팅 디바이스 중 적어도 하나가,
    상기 변경된 디스플레이 출력을 이미지로서 내보내게 하는, 적어도 하나의 비일시적 컴퓨터-판독가능 매체.
  31. 제26항에 있어서,
    상기 하나 이상의 컴퓨팅 디바이스 중 적어도 하나에 의해서 실행될 때, 상기 하나 이상의 컴퓨팅 디바이스 중 적어도 하나가 상기 인식된 객체의 상기 하나 이상의 방향 및 상기 하나 이상의 위치에 적어도 부분적으로 기반하여 상기 사용자 입력을 결정하게 하는 상기 인스트럭션은, 상기 하나 이상의 컴퓨팅 디바이스 중 적어도 하나가 또한,
    상기 하나 이상의 방향 및 상기 하나 이상의 위치에 적어도 부분적으로 기반하여 제스쳐를 식별하게 하는, 적어도 하나의 비일시적 컴퓨터-판독가능 매체.
  32. 제31항에 있어서,
    상기 하나 이상의 컴퓨팅 디바이스 중 적어도 하나에 의해서 실행될 때, 상기 하나 이상의 컴퓨팅 디바이스 중 적어도 하나가 상기 식별된 컨텍스트에 적어도 부분적으로 기반하여 상기 사용자 입력을 하나 이상의 투명 레이어 커맨드로 변환시키게 하는 상기 인스트럭션은, 상기 하나 이상의 컴퓨팅 디바이스 중 적어도 하나가 또한,
    상기 식별된 제스쳐 및 상기 식별된 컨텍스트에 적어도 부분적으로 기반하여 투명 레이어 커맨드를 결정하게 하되,
    상기 투명 레이어 커맨드는 상기 식별된 컨텍스트에서 적어도 하나의 네이티브 커맨드를 포함하고, 상기 적어도 하나의 네이티브 커맨드는 상기 식별된 컨텍스트에서 상기 식별된 제스쳐와 연관된 동작을 수행하도록 구성되는, 적어도 하나의 비일시적 컴퓨터-판독가능 매체.
  33. 제25항에 있어서,
    상기 하나 이상의 하드웨어 디바이스에 의해서 캡쳐된 상기 정보는 소리 정보를 포함하되,
    상기 하나 이상의 컴퓨팅 디바이스 중 적어도 하나에 의해서 실행될 때, 상기 하나 이상의 컴퓨팅 디바이스 중 적어도 하나가 상기 하나 이상의 컴퓨팅 디바이스 중 적어도 하나에 통신가능하게 커플링된 상기 하나 이상의 하드웨어 디바이스에 의해서 캡쳐된 정보에 적어도 부분적으로 기반하여 사용자 입력을 결정하게 하는 상기 인스트럭션은, 상기 하나 이상의 컴퓨팅 디바이스 중 적어도 하나가 또한,
    하나 이상의 단어를 식별하기 위해 상기 소리 정보에 대해 음성 인식을 수행하게 하는, 적어도 하나의 비일시적 컴퓨터-판독가능 매체.
  34. 제33항에 있어서,
    상기 하나 이상의 컴퓨팅 디바이스 중 적어도 하나에 의해서 실행될 때, 상기 하나 이상의 컴퓨팅 디바이스 중 적어도 하나가 상기 식별된 컨텍스트에 적어도 부분적으로 기반하여 상기 사용자 입력을 하나 이상의 투명 레이어 커맨드로 변환시키게 하는 상기 인스트럭션은, 상기 하나 이상의 컴퓨팅 디바이스 중 적어도 하나가 또한,
    상기 식별된 하나 이상의 단어 및 상기 식별된 컨텍스트에 적어도 부분적으로 기반하여 투명 레이어 커맨드를 결정하게 하되,
    상기 투명 레이어 커맨드는 상기 식별된 컨텍스트에서 적어도 하나의 네이티브 커맨드를 포함하고, 상기 적어도 하나의 네이티브 커맨드는 상기 식별된 컨텍스트에서 상기 식별된 하나 이상의 단어와 연관된 동작을 수행하도록 구성되는, 적어도 하나의 비일시적 컴퓨터-판독가능 매체.
  35. 제25항에 있어서,
    상기 하나 이상의 컴퓨팅 디바이스 중 적어도 하나에 의해서 실행될 때, 상기 하나 이상의 프로세서 중 적어도 하나가 상기 투명 레이어 상에서 상기 하나 이상의 투명 레이어 커맨드를 실행하게 하는 상기 인스트럭션은, 상기 하나 이상의 컴퓨팅 디바이스 중 적어도 하나가 상기 하나 이상의 투명 레이어 커맨드의 각각의 투명 레이어 커맨드에 대해서, 또한,
    상기 투명 레이어 커맨드에서 적어도 하나의 네이티브 커맨드를 식별하고;
    상기 식별된 컨텍스트에서 상기 적어도 하나의 네이티브 커맨드를 실행하게 하는, 적어도 하나의 비일시적 컴퓨터-판독가능 매체.
  36. 제35항에 있어서,
    상기 하나 이상의 컴퓨팅 디바이스 중 적어도 하나에 의해서 실행될 때, 상기 하나 이상의 컴퓨팅 디바이스 중 적어도 하나가 상기 식별된 컨텍스트에서 상기 적어도 하나의 네이티브 커맨드를 실행하게 하는 상기 인스트럭션은, 상기 하나 이상의 컴퓨팅 디바이스 중 적어도 하나가 또한,
    상기 식별된 컨텍스트가 상기 오퍼레이팅 시스템을 포함할 때, 상기 적어도 하나의 네이티브 커맨드를 입력으로서 오퍼레이팅 시스템 API를 거쳐서 상기 오퍼레이팅 시스템에 전달하게 하거나; 또는
    상기 식별된 컨텍스트가 상기 오퍼레이팅 시스템 상에서 실행되는 상기 어플리케이션을 포함할 때, 상기 적어도 하나의 네이티브 커맨드를 입력으로서 어플리케이션 API를 거쳐서 상기 어플리케이션에 전달하게 하는, 적어도 하나의 비일시적 컴퓨터-판독가능 매체.
KR1020207008012A 2017-08-24 2018-08-23 유니버셜 하드웨어-소프트웨어 인터페이스의 구현을 위한 방법, 장치 및 컴퓨터-판독가능 매체 KR20200102413A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/685,533 2017-08-24
US15/685,533 US10380038B2 (en) 2017-08-24 2017-08-24 Method, apparatus, and computer-readable medium for implementation of a universal hardware-software interface
PCT/EP2018/072720 WO2019038357A2 (en) 2017-08-24 2018-08-23 METHOD, APPARATUS AND COMPUTER-READABLE MEDIUM FOR IMPLEMENTING A UNIVERSAL MATERIAL-SOFTWARE INTERFACE

Publications (1)

Publication Number Publication Date
KR20200102413A true KR20200102413A (ko) 2020-08-31

Family

ID=63491577

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207008012A KR20200102413A (ko) 2017-08-24 2018-08-23 유니버셜 하드웨어-소프트웨어 인터페이스의 구현을 위한 방법, 장치 및 컴퓨터-판독가능 매체

Country Status (8)

Country Link
US (1) US10380038B2 (ko)
EP (1) EP3673359A2 (ko)
JP (1) JP2020532007A (ko)
KR (1) KR20200102413A (ko)
CN (1) CN111433735A (ko)
BR (1) BR112020003524A2 (ko)
RU (1) RU2020111212A (ko)
WO (1) WO2019038357A2 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113038068B (zh) * 2019-12-24 2024-02-06 浙江宇视科技有限公司 一种模拟相机控制方法、装置、设备及存储介质
IT202000006793A1 (it) * 2020-03-31 2021-10-01 Milano Politecnico Strumento di scrittura, sistema e metodo per il monitoraggio e l'analisi trasparente della scrittura
CN115858055A (zh) * 2023-02-06 2023-03-28 中车工业研究院(青岛)有限公司 一种软硬件间的解耦方法、系统、装置及介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7830372B2 (en) * 2004-08-30 2010-11-09 Qnx Software Systems Gmbh & Co. Kg Method and system for providing transparent access to hardware graphic layers
US7844442B2 (en) * 2005-08-16 2010-11-30 Exent Technologies, Ltd. System and method for providing a remote user interface for an application executing on a computing device
US20090073126A1 (en) * 2007-07-16 2009-03-19 Srivastava Aditya Narain Standardized method and systems for providing configurable keypads
US7984449B2 (en) * 2007-08-15 2011-07-19 International Business Machines Corporation In-band communication with virtual machines via a hypervisor message bus
US9152376B2 (en) * 2011-12-01 2015-10-06 At&T Intellectual Property I, L.P. System and method for continuous multimodal speech and gesture interaction
US20130155237A1 (en) * 2011-12-16 2013-06-20 Microsoft Corporation Interacting with a mobile device within a vehicle using gestures
US10055187B2 (en) * 2016-04-27 2018-08-21 Blackfire Research Corporation System and method for multiuser interaction with a media computing device with multiple virtual screens and personal area network capability

Also Published As

Publication number Publication date
RU2020111212A (ru) 2021-09-20
RU2020111212A3 (ko) 2022-03-31
CN111433735A (zh) 2020-07-17
EP3673359A2 (en) 2020-07-01
US10380038B2 (en) 2019-08-13
WO2019038357A3 (en) 2019-04-11
BR112020003524A2 (pt) 2020-08-25
JP2020532007A (ja) 2020-11-05
US20190065409A1 (en) 2019-02-28
WO2019038357A2 (en) 2019-02-28

Similar Documents

Publication Publication Date Title
US11483376B2 (en) Method, apparatus, and computer-readable medium for transmission of files over a web socket connection in a networked collaboration workspace
US20220382505A1 (en) Method, apparatus, and computer-readable medium for desktop sharing over a web socket connection in a networked collaboration workspace
KR102213899B1 (ko) 전자 디바이스 및 전자 디바이스의 커버와 전자 디바이스에서 기능 실행 방법
KR102003255B1 (ko) 다중 입력 처리 방법 및 장치
US9348417B2 (en) Multimodal input system
US9965039B2 (en) Device and method for displaying user interface of virtual input device based on motion recognition
US20140354553A1 (en) Automatically switching touch input modes
US20190065012A1 (en) Method, apparatus, and computer-readable medium for propagating enriched note data objects over a web socket connection in a networked collaboration workspace
KR20200102413A (ko) 유니버셜 하드웨어-소프트웨어 인터페이스의 구현을 위한 방법, 장치 및 컴퓨터-판독가능 매체
KR20140085942A (ko) 터치 기반의 도형의 조작 방법 및 장치
JP2021517302A (ja) ネットワーク化された共同ワークスペースにおけるウェブ・ソケット接続を介したファイルの送信のための方法、装置、及びコンピュータ可読媒体
US11334220B2 (en) Method, apparatus, and computer-readable medium for propagating cropped images over a web socket connection in a networked collaboration workspace
CN112204512A (zh) 用于在网络化协作工作区中通过web套接字连接进行桌面共享的方法,装置和计算机可读介质
CN112805685A (zh) 用于在网络协作工作空间中通过网络套接字连接传播丰富笔记数据对象的方法、装置和计算机可读介质
JP2021523484A (ja) ネットワーク化された共同ワークスペースにおいてウェブ・ソケット接続を通じてクロップ画像を伝えるための方法、装置、及びコンピュータ可読媒体

Legal Events

Date Code Title Description
A201 Request for examination
WITB Written withdrawal of application