KR20210045388A - 입력들을 소프트웨어 어플리케이션에 매핑하는 방법, 시스템 및 컴퓨터 프로그램 제품 - Google Patents

입력들을 소프트웨어 어플리케이션에 매핑하는 방법, 시스템 및 컴퓨터 프로그램 제품 Download PDF

Info

Publication number
KR20210045388A
KR20210045388A KR1020217001881A KR20217001881A KR20210045388A KR 20210045388 A KR20210045388 A KR 20210045388A KR 1020217001881 A KR1020217001881 A KR 1020217001881A KR 20217001881 A KR20217001881 A KR 20217001881A KR 20210045388 A KR20210045388 A KR 20210045388A
Authority
KR
South Korea
Prior art keywords
operating system
input
software application
guest operating
input events
Prior art date
Application number
KR1020217001881A
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 KR20210045388A publication Critical patent/KR20210045388A/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/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • G06F3/0488Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
    • 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/016Input arrangements with force or tactile feedback as computer generated output to the user
    • 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/0227Cooperation and interconnection of the input arrangement with other functional units of a 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/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
    • 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
    • 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)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • User Interface Of Digital Computer (AREA)
  • Input From Keyboards Or The Like (AREA)

Abstract

본 발명은 입력들을 소프트웨어 어플리케이션에 매핑을 가능하게 한다. 본 발명은 (ⅰ) 입력 장치를 통해 생성될 수 있는 입력 이벤트들의 제1 세트를, 상기 소프트웨어 어플리케이션에 의해 인식되는 입력 이벤트들의 제2 세트와 상관시키는 키맵을 수신하는 단계, (ⅱ) 상기 입력 장치들의 제1 세트 내의 입력 장치로부터, 상기 입력 이벤트들의 제1 세트 내의 제1 입력 이벤트와 연관된 제1 데이터 신호를 수신하는 단계, (ⅲ) 상기 수신된 키맵에 기초하여, 상기 입력 이벤트들의 제2 세트 내의 제2 입력 이벤트를 확인하는 단계, 이때 상기 제2 입력 이벤트는 상기 수신된 키맵에 의해 상기 제1 입력 이벤트에 매핑되고, (ⅳ) 제2 데이터 신호를 생성하는 단계, 이때 상기 제2 데이터 신호는 상기 제2 입력 이벤트에 대응하는 소프트웨어 어플리케이션에 의해 인식가능하고, 및 (ⅴ) 상기 제2 데이터 신호에 기초하여 상기 소프트웨어 어플리케이션에 있어서의 상태 변화를 구현하는 단계를 포함한다.

Description

입력들을 소프트웨어 어플리케이션에 매핑하는 방법, 시스템 및 컴퓨터 프로그램 제품
본 발명은 입력 매핑들에 관한 것이다. 보다 상세하게는, 본 발명은 소프트웨어 어플리케이션이 실행되는 컴퓨팅 시스템 또는 장치에 통신가능하게 결합된 하나 또는 그 이상의 컨트롤러들 또는 사용자 인터페이스들로부터 수신된 입력들을 해당 소프트웨어 어플리케이션이 인식하도록 구성된 하나 또는 그 이상의 지시들 또는 이벤트들에 매핑하는 방법 및 시스템에 관한 것이다.
소프트웨어 어플리케이션들은 이러한 소프트웨어 어플리케이션들을 구현 또는 실행하고 있는 컴퓨팅 시스템들에 결합(coupled)되거나 또는 통합(integrated)된 입력 장치들을 통해 제어된다. 이러한 입력 장치들은 사용자가 소프트웨어 어플리케이션들에 인터페이스하고 소프트웨어 어플리케이션들에 제어 또는 상태 변경 지시들을 제공할 수 있도록 해준다.
도 1은 하나 또는 그 이상의 소프트웨어 어플리케이션들의 구현을 위해 이용되는 종류의 예시적인 시스템 환경(100)을 보여준다. 시스템 환경(100)은 하나 또는 그 이상의 입력 장치들(104)(예를 들어 키보드, 터치 패드, 마우스, 게임 패드, 모션 센서/검출기, 조이스틱 또는 다른 형태의 입력 컨트롤러와 같이 통합된 또는 주변 입력 장치들)과 통신가능하게 결합되는 컴퓨팅 시스템(102)을 포함한다. 컴퓨팅 시스템(102)은 추가적으로 클라우드(106)(이 클라우드(106)는 인터넷워크, 네트워크 백엔드 또는 네트워크 백본, 예를 들어 인터넷을 포함할 수 있다)와 네트워크 통신할 수 있다.
컴퓨팅 시스템(102)은 프로세서 구현 입력 층 컨트롤러(processor implemented input layer controller, 1022)를 포함하는 입력 층, 프로세서 구현 네트워크 트래픽 층 컨트롤러(processor implemented network traffic layer controller, 1024)를 포함하는 네트워크 트래픽 층, 프로세서 구현 디스크 데이터 층 컨트롤러(processor implemented disk data layer controller, 1026)를 포함하는 디스크 데이터 층, 및 어플리케이션 컨트롤러(1028)를 포함한다.
입력 층 컨트롤러(1022)는 컴퓨팅 시스템(102)을 통해 실행되는 소프트웨어 어플리케이션으로 제어 데이터 및/또는 상태 데이터를 입력 장치(들)(104)로/부터 송수신하기 위해 하나 또는 그 이상의 입력 장치(들)과 통신하도록 구성된다. 네트워크 트래픽 층 컨트롤러(1024)는 클라우드(106)와 소프트웨어 어플리케이션 사이에서 제어 데이터 및/또는 상태 데이터를 송수신하도록 구성된다. 디스크 데이터 층 컨트롤러(1026)는 하나 또는 그 이상의 데이터베이스들로부터 제어 데이터 및/또는 상태 데이터를 검색하고 또한 이러한 데이터를 소프트웨어 어플리케이션을 실행 또는 제어하기 위해 사용하도록 구성된다.
어플리케이션 컨트롤러(1028)는 입력 층 컨트롤러(1022), 네트워크 트랙픽 층 컨트롤러(1024) 및 디스크 데이터 층 컨트롤러(1026) 중 하나 또는 그 이상과 통신가능하게 결합되고, 또한 소프트웨어 어플리케이션에 대응하는 소프트웨어 코드에 기초하여, 그리고 입력 층 컨트롤러(1022), 네트워크 트랙픽 층 컨트롤러(1024) 및 디스크 데이터 층 컨트롤러(1026) 중 하나 또는 그 이상으로부터 수신된 데이터에 기초하여, 소프트웨어 어플리케이션을 실행 및 제어하도록 구성된다.
도시된 실시예에 있어서, 어플리케이션 컨트롤러(1030)는 (ⅰ) 소프트웨어 어플리케이션에 대응하는 소프트웨어 코드 및/또는 (ⅱ) 입력 층 컨트롤러(1022), 네트워크 트랙픽 층 컨트롤러(1024) 및 디스크 데이터 층 컨트롤러(1026) 중 하나 또는 그 이상으로부터 수신된 데이터에 기초하여, 디스플레이 장치(예. 디스플레이 스크린) 상에 하나 또는 그 이상의 그래픽 객체들(graphic objects)을 렌더링하도록 구성되는 그래픽 컨트롤러(1030)를 포함한다. 도시된 어플리케이션 컨트롤러(1030)는 또한 (ⅰ) 소프트웨어 어플리케이션에 대응하는 소프트웨어 코드 및/또는 (ⅱ) 입력 층 컨트롤러(1022), 네트워크 트랙픽 층 컨트롤러(1024) 및 디스크 데이터 층 컨트롤러(1026) 중 하나 또는 그 이상으로부터 수신된 데이터에 기초하여, 하나 또는 그 이상의 오디오 장치들(예. 스피커 또는 헤드폰들)을 통해 오디오 출력을 생성 및 제어하도록 구성되는 오디오 컨트롤러(1032)를 포함한다. 어플리케이션 컨트롤러(1028), 그래픽 컨트롤러(1030) 및 오디오 컨트롤러(1032)는 소프트웨어 어플리케이션의 기능을 달성하기 위해, 디스크 데이터 층 컨트롤러(1026), 네트워크 트랙픽 층 컨트롤러(1024), 입력 층 컨트롤러(1022), 클라우드(106) 및/또는 입력 장치(들)(104) 중 하나 또는 그 이상으로부터 수신된 데이터에 기초하여, 하나 또는 그 이상으로 데이터를 송신하고 이로부터 데이터를 수신하도록 구성될 수 있다.
소프트웨어 어플리케이션들의 가용성(availability), 및 소프트웨어 어플리케이션들이 실행될 수 있는 장치들 및 플랫폼들의 가용성이 증가함에 따라, 사용자 인터페이스들 및 사용자-경험의 커스터마이징에 대한 요구가 점점 커지고 있다. 커스터마이징에 대한 요구는 이러한 입력 장치들/컨트롤러들/입력들을 이용하도록 설계되지 않은 소프트웨어 어플리케이션 프로그램들에 입력들을 제공 또는 제어하기 위해 다른 입력 장치들 및 입력 장치 컨트롤러들을 선택 및 사용할 수 있는 능력과 관련하여 특히 체감된다. 이것은 특히 게임을 제어하는 데 사용될 수 있는 장치들 및 게임 관련 소프트웨어 어플리케이션들에 의해 인식되는 지시들 또는 이벤트들을 촉발(trigger)하는 데 사용될 수 있는 사용자 입력들/사용자 입력 시퀀스들 측면 모두에 있어서 - 사용자들이 높은 수준의 제어 개인화(control personalization)를 선호하는, 게임 관련 소프트웨어 어플리케이션들의 경우이다.
(제1 운영 시스템(예를 들어 안드로이드 OS)을 위해 개발된 어플리케이션들이 호스트 운영 시스템(예를 들어, macOSTM 또는 WindowsTM 운영 시스템들)으로서 제2 운영 시스템이 운영하는 머신에서 실행될 수 있도록 해주는) 가상 머신 환경들을 통한 교차-운영 시스템 런타임이 증가함에 따라, 제1 운영 시스템용으로 기록된 프로그램을 위해 정의된 제어들은 해당 프로그램이 가상 머신 환경을 통해 제2 운영 시스템에서 실행될 때 이용불가하거나 또는 충분하지 않을 수 있음이 발견되었다.
이로써 소프트웨어 어플리케이션이 실행되는 컴퓨팅 장치에 통신가능하게 결합되는 하나 또는 그 이상의 컨트롤러들 또는 사용자 인터페이스들로부터 수신되는 입력들을, 해당 소프트웨어 어플리케이션이 인식하도록 구성된 하나 또는 그 이상의 지시들 또는 이벤트들에 매핑하는, 효과적인 해결책들에 대한 니즈가 있다.
본 발명은 소프트웨어 어플리케이션이 실행되는 컴퓨팅 시스템 또는 장치에 통신가능하게 결합된 하나 또는 그 이상의 컨트롤러들 또는 사용자 인터페이스들로부터 수신된 입력들을 해당 소프트웨어 어플리케이션이 인식하도록 구성된 하나 또는 그 이상의 지시들 또는 이벤트들에 매핑하는 방법 및 시스템을 제공한다.
일 실시예에 있어서, 본 발명은 입력들을 소프트웨어 어플리케이션에 매핑하는 방법을 포함한다. 본 발명은 하나 또는 그 이상의 프로세서들에서 구현되는, (ⅰ) 입력 장치를 통해 생성될 수 있는 입력 이벤트들의 제1 세트를, 상기 소프트웨어 어플리케이션에 의해 인식되는 입력 이벤트들의 제2 세트와 상관시키는 키맵을 수신하는 단계, 이때 상기 입력 이벤트들의 제2 세트는 상기 입력 이벤트들의 제1 세트 내에 포함되지 않는 하나 또는 그 이상의 입력 이벤트들을 포함하고, (ⅱ) 상기 입력 장치들의 제1 세트 내의 입력 장치로부터, 상기 입력 이벤트들의 제1 세트 내의 제1 입력 이벤트와 연관된 제1 데이터 신호를 수신하는 단계, (ⅲ) 상기 수신된 키맵에 기초하여, 상기 입력 이벤트들의 제2 세트 내의 제2 입력 이벤트를 확인하는 단계, 이때 상기 제2 입력 이벤트는 상기 수신된 키맵에 의해 상기 제1 입력 이벤트에 매핑되고, (ⅳ) 제2 데이터 신호를 생성하는 단계, 이때 상기 제2 데이터 신호는 상기 제2 입력 이벤트에 대응하는 소프트웨어 어플리케이션에 의해 인식가능하고, 및 (ⅴ) 상기 제2 데이터 신호에 기초하여 상기 소프트웨어 어플리케이션에 있어서의 상태 변화를 구현하는 단계를 포함한다.
본 방법의 다른 실시예에 있어서, 상기 소프트웨어 어플리케이션에서 구현되는 상기 상태 변화는 상기 소프트웨어 어플리케이션에 의해 제어되는 출력 장치에 있어서의 대응하는 상태 변화를 인스턴스화(instantiate)한다. 상기 출력 장치는 디스플레이, 스피커, 헤드폰, 시각적 피드백 장치, 청각적 피드백 장치, 조명 장치, 촉각적 피드백 장치, 햅틱 피드백 장치, 또는 감각적 피드백 장치 중 어느 하나를 포함할 수 있다.
본 방법의 실시예들에 있어서, (ⅰ) 상기 입력 이벤트들의 제1 세트는 상기 소프트웨어 어플리케이션에 의해 인식되지 않거나, 또는 (ⅱ) 상기 소프트웨어 어플리케이션에 의한 상기 입력 이벤트들의 제1 세트와 연관된 소프트웨어 응답은 상기 소프트웨어 어플리케이션에 의해 상기 입력 이벤트들의 제2 세트와 연관된 소프트웨어 응답과 다르다.
본 방법의 특정 일 실시예에 있어서, (ⅰ) 상기 소프트웨어 어플리케이션은 호스트 운영 시스템 내에 구현된 게스트 운영 시스템의 인스턴스 내에서 실행되고, 이때 상기 게스트 운영 시스템과 상기 호스트 운영 시스템은 서로 다르고, (ⅱ) 상기 입력 이벤트들의 제1 세트는 상기 호스트 운영 시스템 내에서 실행되고 또한 이와 양립가능한 하드웨어 장치 드라이버에 의해 인식가능하고, 및 (ⅲ) 상기 입력 이벤트들의 제2 세트는 (a) 상기 게스트 운영 시스템의 인스턴스 내에서 실행되는 상기 소프트웨어 어플리케이션에 의해 인식가능하거나 또는 (b) 상기 게스트 운영 시스템의 운영 시스템 커넬 내의 하드웨어 장치 드라이버에 의해 인식되거나, 또는 (c) 상기 게스트 운영 시스템에 의해 인식된다.
본 방법의 일 실시예에 있어서, 상기 제2 데이터 신호는 상기 호스트 운영 시스템 내에 구현된 상기 게스트 운영 시스템의 인스턴스를 인스턴스화하고 제어하는 호스트 운영 시스템 어플리케이션 소프트웨어로부터 상기 게스트 운영 시스템 내의 상기 소프트웨어 어플리케이션으로 전송된다.
본 방법은 상기 소프트웨어 어플리케이션에 의해 제어되는 디스플레이 상에 (a) 상기 소프트웨어 어플리케이션의 상태에 의해 정의되거나 또는 이에 기초하여 선택되는 그래픽 객체들의 제1 세트, 및 (b) 상기 그래픽 객체들의 제1 세트 내의 하나 또는 그 이상의 그래픽 객체들 상에 중첩되는 그래픽 객체들의 제2 세트를 생성하는 단계를 더 포함할 수 있고, 이때 상기 그래픽 객체들의 제2 세트 내의 하나 또는 그 이상의 그래픽 객체들은 상기 입력 이벤트들의 제1 세트 내의 하나 또는 그 이상의 입력 이벤트들을 나타낸다.
본 방법의 다른 실시예에 있어서, 상기 그래픽 객체들의 제2 세트는 (ⅰ) 상기 수신된 키맵으로부터 검색되는 하나 또는 그 이상의 데이터 요소들의 시각적 표현(visual representation); 또는 (ⅱ) 상기 입력 이벤트들 내의 입력 이벤트들을 생성하는 것을 가능하게 해주는(enabled) 하나 또는 그 이상의 입력 제어들의 시각적 표현을 포함한다.
본 방법의 실시예들에 있어서, (ⅰ) 상기 입력 이벤트들의 제2 세트 내의 하나 또는 그 이상의 입력 이벤트들은 터치스크린 인터페이스를 통해 촉발되는 터치프레스 이벤트들이고, 및 (ⅱ) 상기 그래픽 객체들의 제2 세트 내의 그래픽 객체는 터치스크린 디스플레이 상에, 상기 입력 이벤트들의 제2 세트 내의 터치프레스 이벤트를 촉발하기 위해 상기 소프트웨어 어플리케이션에 의해 정의되었던 상기 디스플레이 스크린의 영역에 대하여 정의된 위치에서, 중첩되고, 그 터치프레스 이벤트는 해당 그래픽 객체에 대응하는 상기 입력 이벤트들의 제1 세트 내의 입력 이벤트와 상기 수신된 키맵에 의해 상관된다.
다른 실시예에 있어서, 상기 수신된 키맵은 복수의 키맵들 중 선택되고 ; 이때 상기 수신된 키맵의 선택은 하나 또는 그 이상의 미리 정의된 상태 변수들의 검출에 대한 응답이고, 상기 하나 또는 그 이상의 미리 정의된 상태 변수들은 하드웨어 또는 소프트웨어 상태 변수들이다.
본 방법의 일 실시예에 있어서의 상기 검출된 하나 또는 그 이상의 미리 정의된 상태 변수들은 시각적 디스플레이 상태 변수, 오디오 상태 변수, 메모리에 저장된 데이터에 대응하는 상태 변수, 네트워크를 통해 수신된 데이터에 대응하는 상태 변수, 하드웨어 장치로부터 수신된 입력에 대응하는 상태 변수, 또는 상기 소프트웨어 어플리케이션의 실행과 연관된 컴퓨팅 시스템 또는 컴퓨팅 시스템 환경에 대응하는 상태 변수 중 어느 하나를 포함할 수 있다.
본 방법의 특정 실시예에 있어서, 상기 소프트웨어 어플리케이션은 호스트 운영 시스템 내에 구현된 게스트 운영 시스템의 인스턴스 내에서 실행되고, 이때 (ⅰ) 상기 게스트 운영 시스템과 상기 호스트 운영 시스템은 서로 다르고, (ⅱ) 상기 입력 이벤트들의 제1 세트는 상기 호스트 운영 시스템 내에서 실행되고 또한 이와 양립가능한 하드웨어 장치 드라이버에 의해 인식가능하고, (ⅲ) 상기 입력 이벤트들의 제2 세트는 (a) 상기 게스트 운영 시스템의 인스턴스 내에서 실행되는 상기 소프트웨어 어플리케이션에 의해 인식가능하거나 또는 (b) 상기 게스트 운영 시스템의 운영 시스템 커넬 내의 하드웨어 장치 드라이버에 의해 인식되거나, 또는 (ⅲ) 상기 게스트 운영 시스템에 의해 인식되고; 및 (ⅳ) 상기 검출된 상태 변수들 중 하나 또는 그 이상은 (c) 상기 게스트 운영 시스템의 인스턴스 내의 어플리케이션 프레임워크 층, (d) 상기 게스트 운영 시스템의 인스턴스 내의 라이브러리 층, (c) 상기 게스트 운영 시스템의 인스턴스 내의 하드웨어 추상 층, (d) 상기 게스트 운영 시스템 내의 어플리케이션 프로그램 층 내에서 실행되는 어플리케이션 프로그램, (e) 상기 게스트 운영 시스템의 인스턴스와, 상기 호스트 운영 시스템과 함께 구현되는 게스트 운영 시스템의 인스턴스를 인스턴스화하고 제어하는 호스트 운영 시스템 어플리케이션 소프트웨어 사이에 설립되는 데이터 채널을 통한 상기 호스트 운영 시스템, 또는 (f) 호스트 운영 시스템 장치 드라이버로부터의 상기 호스트 운영 시스템 어플리케이션 소프트웨어 중 어느 하나로, 또는 이로부터 수신된 데이터, 요청 또는 지시에 기초하여 검출된다.
다른 실시예에 있어서, 본 발명은 입력들을 소프트웨어 어플리케이션에 매핑하는 시스템을 제공한다. 본 시스템은 (ⅰ) 입력 장치를 통해 생성될 수 있는 입력 이벤트들의 제1 세트를, 상기 소프트웨어 어플리케이션에 의해 인식되는 입력 이벤트들의 제2 세트와 상관시키는 키맵을 수신하고, 이때 상기 입력 이벤트들의 제2 세트는 상기 입력 이벤트들의 제1 세트 내에 포함되지 않는 하나 또는 그 이상의 입력 이벤트들을 포함하고, (ⅱ) 상기 입력 장치들의 제1 세트 내의 입력 장치로부터, 상기 입력 이벤트들의 제1 세트 내의 제1 입력 이벤트와 연관된 제1 데이터 신호를 수신하고, (ⅲ) 상기 수신된 키맵에 기초하여, 상기 입력 이벤트들의 제2 세트 내의 제2 입력 이벤트를 확인하고, 이때 상기 제2 입력 이벤트는 상기 수신된 키맵에 의해 상기 제1 입력 이벤트에 매핑되고, (ⅳ) 제2 데이터 신호를 생성하고, 이때 상기 제2 데이터 신호는 상기 제2 입력 이벤트에 대응하는 소프트웨어 어플리케이션에 의해 인식가능하고, 및 (ⅴ) 상기 제2 데이터 신호에 기초하여 상기 소프트웨어 어플리케이션에 있어서의 상태 변화를 구현하도록 구성되는 프로세서 구현 컴퓨팅 시스템을 포함한다.
본 시스템의 일 실시예에 있어서, 상기 소프트웨어 어플리케이션에서 구현되는 상기 상태 변화는 상기 소프트웨어 어플리케이션에 의해 제어되는 출력 장치에 있어서의 대응하는 상태 변화를 인스턴스화한다.
상기 출력 장치는 디스플레이, 스피커, 헤드폰, 시각적 피드백 장치, 청각적 피드백 장치, 조명 장치, 촉각적 피드백 장치, 햅틱 피드백 장치, 또는 감각적 피드백 장치 중 어느 하나를 포함할 수 있다.
본 시스템의 다른 실시예들에 있어서, (ⅰ) 상기 입력 이벤트들의 제1 세트는 상기 소프트웨어 어플리케이션에 의해 인식되지 않거나, 또는 (ⅱ) 상기 소프트웨어 어플리케이션에 의한 상기 입력 이벤트들의 제1 세트와 연관된 소프트웨어 응답은 상기 소프트웨어 어플리케이션에 의해 상기 입력 이벤트들의 제2 세트와 연관된 소프트웨어 응답과 다르다.
상기 소프트웨어 어플리케이션은 호스트 운영 시스템 내에 구현된 게스트 운영 시스템의 인스턴스 내에서 실행되고, 이때 (ⅰ) 상기 게스트 운영 시스템과 상기 호스트 운영 시스템은 서로 다르고, (ⅱ) 상기 입력 이벤트들의 제1 세트는 상기 호스트 운영 시스템 내에서 실행되고 또한 이와 양립가능한 하드웨어 장치 드라이버에 의해 인식가능하고, 및 (ⅲ) 상기 입력 이벤트들의 제2 세트는 (a) 상기 게스트 운영 시스템의 인스턴스 내에서 실행되는 상기 소프트웨어 어플리케이션에 의해 인식가능하거나 또는 (b) 상기 게스트 운영 시스템의 운영 시스템 커넬 내의 하드웨어 장치 드라이버에 의해 인식되거나, 또는 (c) 상기 게스트 운영 시스템에 의해 인식된다.
본 시스템의 일 실시예에 있어서, 상기 제2 데이터 신호는 상기 호스트 운영 시스템 내에 구현된 상기 게스트 운영 시스템의 인스턴스를 인스턴스화하고 제어하는 호스트 운영 시스템 어플리케이션 소프트웨어로부터 상기 게스트 운영 시스템 내의 상기 소프트웨어 어플리케이션으로 전송된다.
상기 시스템은 상기 소프트웨어 어플리케이션에 의해 제어되는 디스플레이 상에 (a) 상기 소프트웨어 어플리케이션의 상태에 의해 정의되거나 또는 이에 기초하여 선택되는 그래픽 객체들의 제1 세트, 및 (b) 상기 그래픽 객체들의 제1 세트 내의 하나 또는 그 이상의 그래픽 객체들 상에 중첩되는 그래픽 객체들의 제2 세트를 생성하도록 구성될 수 있고, 이때 상기 그래픽 객체들의 제2 세트 내의 하나 또는 그 이상의 그래픽 객체들은 상기 입력 이벤트들의 제1 세트 내의 하나 또는 그 이상의 입력 이벤트들을 나타낸다.
본 시스템의 일 실시예에 있어서, 상기 그래픽 객체들의 제2 세트는 (ⅰ) 상기 수신된 키맵으로부터 검색되는 하나 또는 그 이상의 데이터 요소들의 시각적 표현; 또는 (ⅱ) 상기 입력 이벤트들 내의 입력 이벤트들을 생성하는 것을 가능하게 해주는 하나 또는 그 이상의 입력 제어들의 시각적 표현을 포함한다.
본 시스템의 다른 실시예에 있어서, (ⅰ) 상기 입력 이벤트들의 제2 세트 내의 하나 또는 그 이상의 입력 이벤트들은 터치스크린 인터페이스를 통해 촉발되는 터치프레스 이벤트들이고, 및 (ⅱ) 상기 그래픽 객체들의 제2 세트 내의 그래픽 객체는 터치스크린 디스플레이 상에, 상기 입력 이벤트들의 제2 세트 내의 터치프레스 이벤트를 촉발하기 위해 상기 소프트웨어 어플리케이션에 의해 정의되었던 상기 디스플레이 스크린의 영역에 대하여 정의된 위치에서, 중첩되고, 그 터치프레스 이벤트는 해당 그래픽 객체에 대응하는 상기 입력 이벤트들의 제1 세트 내의 입력 이벤트와 상기 수신된 키맵에 의해 상관된다.
본 발명의 다른 실시예에 있어서, 상기 수신된 키맵은 복수의 키맵들 중 선택되고, 이때 상기 수신된 키맵의 선택은 하나 또는 그 이상의 미리 정의된 상태 변수들의 검출에 대한 응답이고, 상기 하나 또는 그 이상의 미리 정의된 상태 변수들은 하드웨어 또는 소프트웨어 상태 변수들이다.
상기 검출된 하나 또는 그 이상의 미리 정의된 상태 변수들은 시각적 디스플레이 상태 변수, 오디오 상태 변수, 메모리에 저장된 데이터에 대응하는 상태 변수, 네트워크를 통해 수신된 데이터에 대응하는 상태 변수, 하드웨어 장치로부터 수신된 입력에 대응하는 상태 변수, 또는 상기 소프트웨어 어플리케이션의 실행과 연관된 컴퓨팅 시스템 또는 컴퓨팅 시스템 환경에 대응하는 상태 변수 중 어느 하나를 포함할 수 있다.
본 시스템은 상기 소프트웨어 어플리케이션은 호스트 운영 시스템 내에 구현된 게스트 운영 시스템의 인스턴스 내에서 실행되고, 이때 (ⅰ) 상기 게스트 운영 시스템과 상기 호스트 운영 시스템은 서로 다르고, (ⅱ) 상기 입력 이벤트들의 제1 세트는 상기 호스트 운영 시스템 내에서 실행되고 또한 이와 양립가능한 하드웨어 장치 드라이버에 의해 인식가능하고, (ⅲ) 상기 입력 이벤트들의 제2 세트는 (a) 상기 게스트 운영 시스템의 인스턴스 내에서 실행되는 상기 소프트웨어 어플리케이션에 의해 인식가능하거나 또는 (b) 상기 게스트 운영 시스템의 운영 시스템 커넬 내의 하드웨어 장치 드라이버에 의해 인식되거나; 또는 (c) 상기 게스트 운영 시스템에 의해 인식되고, 및 (ⅳ) 상기 검출된 상태 변수들 중 하나 또는 그 이상은 (a) 상기 게스트 운영 시스템의 인스턴스 내의 어플리케이션 프레임워크 층, (b) 상기 게스트 운영 시스템의 인스턴스 내의 라이브러리 층, (c) 상기 게스트 운영 시스템의 인스턴스 내의 하드웨어 추상 층, (d) 상기 게스트 운영 시스템 내의 어플리케이션 프로그램 층 내에서 실행되는 어플리케이션 프로그램, (e) 상기 게스트 운영 시스템의 인스턴스와, 상기 호스트 운영 시스템과 함께 구현되는 게스트 운영 시스템의 인스턴스를 인스턴스화하고 제어하는 호스트 운영 시스템 어플리케이션 소프트웨어 사이에 설립되는 데이터 채널을 통한 상기 호스트 운영 시스템, 또는 (f) 호스트 운영 시스템 장치 드라이버로부터의 상기 호스트 운영 시스템 어플리케이션 소프트웨어 중 어느 하나로, 또는 이로부터 수신된 데이터, 요청 또는 지시에 기초하여 검출된다.
본 발명은 또한 입력들을 소프트웨어 어플리케이션에 매핑하는 컴퓨터 프로그램 제품을 제공한다. 상기 컴퓨터 프로그램 제품은 그 안에 구현되어 있는 컴퓨터 판독가능 프로그램 코드를 갖는 비일시적인(non-transitory) 컴퓨터 사용가능 매체를 포함하고, 상기 컴퓨터 판독가능 프로그램 코드는 프로세서에서 이하의 단계들을 구현하기 위한 지시들(instructions)을 포함하고, 상기 단계들은 (ⅰ) 입력 장치를 통해 생성될 수 있는 입력 이벤트들의 제1 세트를, 상기 소프트웨어 어플리케이션에 의해 인식되는 입력 이벤트들의 제2 세트와 상관시키는 키맵을 수신하는 단계, 이때 상기 입력 이벤트들의 제2 세트는 상기 입력 이벤트들의 제1 세트 내에 포함되지 않는 하나 또는 그 이상의 입력 이벤트들을 포함하고, (ⅱ) 상기 입력 장치들의 제1 세트 내의 입력 장치로부터, 상기 입력 이벤트들의 제1 세트 내의 제1 입력 이벤트와 연관된 제1 데이터 신호를 수신하는 단계, (ⅲ) 상기 수신된 키맵에 기초하여, 상기 입력 이벤트들의 제2 세트 내의 제2 입력 이벤트를 확인하는 단계, 상기 제2 입력 이벤트는 상기 수신된 키맵에 의해 상기 제1 입력 이벤트에 매핑되고, (ⅳ) 제2 데이터 신호를 생성하는 단계, 이때 상기 제2 데이터 신호는 상기 제2 입력 이벤트에 대응하는 소프트웨어 어플리케이션에 의해 인식가능하고, 및 (ⅴ) 상기 제2 데이터 신호에 기초하여 상기 소프트웨어 어플리케이션에 있어서의 상태 변화를 구현하는 단계를 포함한다.
도 1은 소프트웨어 어플리케이션을 실행하기 위한 예시적인 시스템 환경을 보여준다.
도 2는 호스트 운영 시스템 내부의 게스트 운영 시스템 내에서 런타임 실행을 위해 기록되거나 또는 컴파일된 어플리케이션 소프트웨어의 실행을 위해 구성된 컴퓨터 구현 아키텍쳐를 위한 예시적인 시스템을 보여준다.
도 3 및 도 4는 본 발명을 구현하도록 구성되는 컴퓨팅 시스템 내에서 소프트웨어 어플리케이션을 실행하기 위한 예시적인 시스템 환경들을 보여준다.
도 5 및 도 7은 본 발명의 교시에 따른 입력 키매핑 방법을 보여준다.
도 6은 본 발명의 교시에 따른 입력 키맵 중첩 방법을 보여준다.
도 8은 본 발명을 구현하는 데 이용될 수 있는 타입의 예시적인 컴퓨팅 시스템을 보여준다.
본 발명은 소프트웨어 어플리케이션이 실행되는 컴퓨팅 시스템 또는 장치에 통신가능하게 결합된 하나 또는 그 이상의 컨트롤러들 또는 사용자 인터페이스들로부터 수신된 입력들을 해당 소프트웨어 어플리케이션이 인식하도록 구성된 하나 또는 그 이상의 지시들 또는 이벤트들에 매핑하는 것을 가능하게 해준다.
본 발명은 (상기에서 간단하게 언급된) 도 1에 도시된 타입의 컴퓨팅 시스템을 통해 구현될 수 있다.
보다 상세한 일 실시예에 있어서, 본 발명의 교시에 따라 소프트웨어 어플리케이션을 구현 또는 실행하는 데 이용되는 컴퓨팅 시스템은 컴퓨터 시스템 아키텍쳐 상에서 실행되는 호스트 운영 시스템 내에서 게스트 운영 시스템의 가상 인스턴스의 실행을 위해 구성되고, 또한 호스트 운영 시스템 내 해당 게스트 운영 시스템의 가상 인스턴스 내에서, 게스트 운영 시스템을 위해 기록된 소프트웨어 프로그램의 런타임 실행을 가능하도록 더 구성되는 컴퓨터 시스템 아키텍쳐를 포함할 수 있다. 도 2는 게스트 운영 시스템 아키텍쳐(예를 들어, 안드로이드 아키텍쳐) 및 호스트 운영 시스템 아키텍쳐(예를 들어, 윈도우즈/맥OS 아키텍쳐)를 포함하는 컴퓨터 시스템 아키텍쳐(200)의 예시적인 일 실시예를 보여준다.
도 2에 도시된 바와 같이, 컴퓨터 시스템 아키텍쳐(200)는 메모리(202), 하나 또는 그 이상의 하드웨어 장치들(204), 및 서로 통신가능하게 결합되는 하나 또는 그 이상의 프로세서들(206)을 포함한다. 메모리(202)는 그 내부에 호스트 운영 시스템(208)을 로딩하거나 또는 저장하고 있다. 컴퓨터 시스템 아키텍쳐(200) 내에 구현되는 게스트 운영 시스템은 게스트 운영 시스템을 구현할 수 있는 하드웨어 아키텍쳐를 에뮬레이션하도록 구성되는 호스트 운영 시스템 소프트웨어 어플리케이션(210)을 실행하는 것에 의해 론칭되는 운영 시스템의 가상 인스턴스이고 - 이 호스트 운영 시스템 소프트웨어 어플리케이션(210)은 대안적으로, 가상 소프트웨어 또는 하이퍼바이저(hypervisor)로서 지칭된다. 하이퍼바이저를 실행하면 게스트 운영 시스템이 최종 사용자에게 투명한(transparent) 방식으로 실행될 수 있는 가상 머신의 인스턴스(214)를 생성한다.
게스트 운영 시스템의 생성된 인스턴스(214)는 어플리케이션 프로그램 층(2142), 어플리케이션 프레임워크 층(2144), 라이브러리 층(2146), 하드웨어 추상 층(hardware abstraction layer, HAL)(2148), 및 커넬 층(215) 중 하나 또는 그 이상을 포함하는 소프트웨어 스택을 포함할 수 있다. 어플리케이션 프로그램 층(2142)은 다양한 소프트웨어 어플리케이션들을 포함한다. 어플리케이션 프레임워크 층(2144)은 프레임워크 어플리케이션 프로그래밍 인터페이스들(APIs)에 접근하고 또한 리소스 할당, 프로세스들 또는 프로그램들 사이의 스위칭, 폰 어플리케이션들, 및 컴퓨팅 시스템(예. 실행 폰/랩탑/태블릿)의 물리적 위치의 추적 유지와 같은, 게스트 운영 시스템이 실행되는 모바일 장치, 랩탑, 또는 태블릿의 기본 기능들을 관리하기 위해 개발자들에 의해 이용된다. 어플리케이션 프레임워크 층(2144)은, 활동 관리자, 윈도우 관리자, 컨텐츠 제공자 관리자, 뷰 시스템 관리자, 패키지 관리자, 통화 관리자, 리소스 관리자, 위치 관리자, 및 알림 관리자를 포함하는, 다양한 관리자들(managers)을 포함할 수 있다.
라이브러리 층(2146)은 예를 들어, C, C++, 등으로 기록된, 라이브러리들을 포함하고 다양한 시스템들에 의해 이용된다. 라이브러리들은 장치에게 다양한 종류의 데이터를 어떻게 취급할지에 대해서 게스트 운영 시스템에게 지시하고 또한 어플리케이션 프레임워크를 통해 개발자들에게 노출된다. 게스트 운영 시스템이 안드로이드인, 예시적인 일 실시예에 있어서, 라이브러리들은, 예를 들어 서피스 관리자, 미디어 프레임워크 라이브러리, SQLite 라이브러리, Open GL/ES 라이브러리, 프리 타입 라이브러리, 웹키트 라이브러리, SGL 라이브러리, SSL 라이브러리, 및 libc 라이브러리(surface manager, media framework library, SQLite library, Open GL/ES library, Free Type library, WebKit library, SGL library, SSL library, libc library)를 포함할 수 있다.
하드웨어 추상 층(2148)은 게스트 운영 시스템 플랫폼 스택과 근본적인 하드웨어 사이에서 소프트웨어 훅들(함수 호출 또는 메시지 또는 이벤트를 가로채는 것에 의해 운영 시스템, 어플리케이션, 또는 다른 소프트웨어 컴포넌트들의 행동을 변경하거나 또는 확장시키는 데 사용되는 코드)을 생성하는 표준 방식을 제공한다. 하드웨어 추상 층(2148)은 또한 하드웨어와 나머지 소프트웨어 스택 사이에서 추상 층으로서 행동한다.
게스트 운영 시스템 커넬 층(2150)은 게스트 운영 시스템 메모리 관리 프로그램, 보안 설정, 전력 관리 소프트웨어 및 하드웨어, 파일 시스템 접근, 네트워킹, 및 프로세스 간 통신을 위한 장치 드라이버와 같은, 수 개의 드라이버들을 포함한다. 도시된 실시예에 있어서, 게스트 운영 시스템 커넬 층(2150)은 적어도 게스트 운영 시스템 하드웨어 장치 드라이버들(2152)을 포함한다.
통상적으로 작동 시, 게스트 운영 시스템과 같은 운영 시스템은 컴퓨팅 시스템 상의 호스트 운영 시스템으로서 직접 실행되고, 게스트 운영 시스템 소프트웨어 어플리케이션으로부터 하드웨어 장치(204)(예를 들어 오디오 또는 디스플레이 장치)로의 지시는 대응하는 게스트 운영 시스템 커넬 층(2150) 내의 하드웨어 장치 드라이버(2152)로 라우팅될 것이고 - 이 드라이버는 이후에 수신된 지시에 기초하여 하드웨어 장치(204)의 작동을 제어할 것이다. 하지만, 도 2에 도시된 도면에 있어서, 게스트 운영 시스템의 가상 인스턴스(214)는 호스트 운영 시스템(208) 내에서 이로부터 론칭되기 때문에, 게스트 운영 시스템의 가상 인스턴스(214)는 프로세스 또는 복수의 프로세스들로서 호스트 운영 시스템(208) 내에서 실행될 것이다. 게스트 운영 시스템 커넬(2150) 내의 장치 드라이버들(2152)을 통해 하드웨어에 접근하기 위해, 게스트 운영 시스템의 가상 인스턴스(214)의 어플리케이션 프로그램 층(2142) 내에서 실행되는 어플리케이션 프로그램에 의해 생성되는 지시는, 이러한 접근은 호스트 운영 시스템(218)의 범위를 벗어나기 때문에, 호스트 운영 시스템(208)에서는 작동불가/무의미할 것이다. 그러므로, 게스트 운영 시스템의 가상 인스턴스(214) 내에서 실행되는 어플리케이션 프로그램으로부터의 지시 또는 데이터에 대한 요청은, 게스트 운영 시스템 커넬의 하드웨어 장치 드라이버들(2152)이 요청 또는 지시를 충족시키는 데 사용될 수 없기 때문에 - 이것은 차례로 하드웨어의 의도치 않은 상태 또는 하드웨어의 오작동으로 귀결되는데, (도 2의 삭제표시된 통신 링크에 의해 도시된 바와 같이) 하드웨어 추상 층들(2148)로부터 게스트 운영 시스템 커넬 층(2150)으로 보내지지 않을 것이다.
대신, 이러한 요청 또는 지시는 어플리케이션 프레임워크 층(2144), 라이브러리 층(2146), 하드웨어 추상 층(2148) 및 하드웨어 추상 층(2148)과 호스트 운영 시스템 어플리케이션 소프트웨어(210) 사이의 데이터 채널 중 하나 또는 그 이상을 통해 게스트 운영 시스템의 가상 인스턴스(214) 내 하드웨어 추상 층(2152)으로부터 호스트 운영 시스템 어플리케이션 소프트웨어(210)로 라우팅될 것이다 - 이 데이터 채널은 게스트 운영 시스템의 가상 인스턴스(214) 내에서 실행되는 어플리케이션 프로그램으로부터의 요청 또는 지시가 호스트 운영 시스템 어플리케이션 소프트웨어(210)로 릴레이되는 것이 가능하도록 구성된다.
호스트 운영 시스템 어플리케이션 소프트웨어(210)는 호스트 운영 시스템(208)과 연관된 어플리케이션인데, 이것은 호스트 운영 시스템(208)을 통해 호스트 운영 시스템 프로세서에 의해 실행된다. 호스트 운영 시스템 어플리케이션 소프트웨어를 통해, 게스트 운영 시스템의 어플리케이션들은 호스트 운영 시스템을 통해 제어되고 또한 호스트 운영 시스템 프로세서에 결합된 하드웨어 장치들(204)을 포함하여, 호스트 운영 시스템(208)의 하드웨어 및 시스템 데이터에 접근할 수 있다.
데이터 채널을 통해 수신된 요청 또는 지시는 호스트 운영 시스템 어플리케이션 소프트웨어(210)로부터 호스트 운영 시스템(208)에 의해 제어되는 하드웨어 드라이버(212)로 포워딩된다. 하드웨어 드라이버(212)는, 차례로 호스트 운영 시스템의 하드웨어 추상 층을 통해 관련 하드웨어 장치(204)에 접근한다(미도시). 하드웨어 장치 데이터 또는 제어 지시의 하드웨어 장치 인정(acknowledgement) 또는 제어 지시의 실행에 관련된 하드웨어 장치 확인(confirmation)은, 읽힌 후 호스트 운영 시스템에 의해 제어되는 하드웨어 드라이버(212)를 통해 호스트 운영 시스템 어플리케이션 소프트웨어(210)로 다시 보내진다 - 이 하드웨어 장치 데이터 / 제어 지시의 인정 / 제어 지시의 실행에 관련된 확인은, 차례로 데이터를 요청하거나 또는 제어 지시를 개시한 게스트 운영 시스템의 가상 인스턴스(214) 내에서 실행되는 어플리케이션 프로그램으로 라우팅될 수 있다. 데이터/인정/확인이 게스트 운영 시스템의 하드웨어 추상 층(2148)에서 이용가능하게 되면, 가상 머신 내 라이브러리 층(2146) 및 어플리케이션 프레임워크 층(2144)을 포함하여, 해당 게스트 운영 시스템의 다른 상위 층들은 예상대로 작동할 것이다.
도 3은 도 1과 관련하여 보다 일반적으로 설명되고 - 본 발명을 구현하도록 상세하게 구성된 타입의 시스템 환경(300)의 일 실시예를 보여준다. 시스템 환경(300)은 하나 또는 그 이상의 입력 장치들(304)(예를 들어 키보드, 터치 패드, 마우스 게임 패드, 모션 센서/검출기, 조이스틱 또는 다른 형태의 입력 컨트롤러와 같은 통합된 또는 주변 입력 장치들)과 통신가능하게 결합된 컴퓨팅 시스템(302)을 포함한다. 컴퓨팅 시스템(302)은 추가적으로 클라우드(306)(이 클라우드(306)는 인터넷워크, 네트워크 백엔드 또는 네트워크 백본, 예를 들어 인터넷을 포함할 수 있다)와 네트워크 통신할 수 있다.
컴퓨팅 시스템(302)은 원하는 소프트웨어 어플리케이션 - 예를 들어 게임 소프트웨어 어플리케이션을 구현 또는 실행하도록 구성된다. 도시된 실시예에 있어서, 컴퓨팅 시스템(302)은 (ⅰ) 하나 또는 그 이상의 입력 장치들(304)에 인터페이스하고 또한 사용자 입력들을 수신하도록 구성된 입력 층 컨트롤러(3022), (ⅱ) 컴퓨팅 시스템과 네트워크(예를 들어 인터넷) 사이의 인터페이스로서 기능하고 또한 컴퓨팅 시스템에 및 이로부터 네트워크 통신들의 수신 및 송신을 가능하도록 구성된 네트워크 트래픽 층 컨트롤러(3024), (ⅲ) 컴퓨팅 시스템과 연관된 디스크 상에 (또는 다른 비일시적인 저장소) 상에 저장된 데이터를 다루도록 구성된 디스크 데이터 층 컨트롤러(3026), 및 (ⅳ) 소프트웨어 어플리케이션에 대응하는 소프트웨어 코드에 기초하여, 및/또는 입력 층 컨트롤러(3022), 네트워크 트래픽 층 컨트롤러(3024) 및 디스크 데이터 층 컨트롤러(3026) 중 하나 또는 그 이상으로부터 수신된 데이터에 기초하여 소프트웨어 어플리케이션을 실행 및 제어하도록 구성된 어플리케이션 컨트롤러(3028)를 포함하고 - 또한 이 어플리케이션 컨트롤러(3028)는 (a) 소프트웨어 어플리케이션 프로그램 지시들을 컴퓨팅 시스템(302)에 결합된 디스플레이 컨트롤러에 의해 해석 및 구현될 수 있는 기계 수준 지시들(machine level instructions)로 번역하도록 구성된 그래픽 컨트롤러(3030), 및 (b) 소프트웨어 어플리케이션 프로그램 지시들을 컴퓨팅 시스템(302)에 결합된 오디오 컨트롤러에 의해 해석 및 구현될 수 있는 기계 수준 지시들로 번역하도록 구성된 오디오 컨트롤러(3032)를 더 포함한다.
컴퓨팅 시스템(302)은 하나 또는 그 이상의 입력 장치들 / 입력 컨트롤러들(304)에 통신가능하게 결합될 수 있는데, 이것은 키보드, 마우스, 또는 게임 패드, 패들, 조이스틱, 트랙볼, 조절판(throttle quadrant), 방향 컨트롤러(directional controller), 터치 패드, 방향 패드 또는 모션 센서에 기반한 컨트롤러에 한정되지 않지만 이를 포함하는 다른 입력 장치 또는 게임 컨트롤러 중 하나 또는 그 이상을 다양하게 포함할 수 있다.
상기에 더하여, 시스템 환경(300)의 컴퓨팅 시스템(302)은 (ⅰ) 일 측 상의 어플리케이션 컨트롤러(3028), 또는 그래픽 컨트롤러(3030), 또는 오디오 컨트롤러(3032)와 (ⅱ) 다른 일 측 상의 입력 장치(들)(304), 입력 층 컨트롤러(3022), 네트워크 트래픽 층 컨트롤러(3024), 디스크 데이터 층 컨트롤러(3026) 및 클라우드(306) 중 하나 또는 그 이상 사이에 통신가능하게 삽입되는 통신 중개 층(communication intermediate layer)으로서 또는 게이트웨어 층으로서 구성될 수 있는 키매핑 층(keymapping layer, 3034)을 포함함에 유의해야 한다.
키매핑 층(3034)은 키매핑 컨트롤러(3036) 및 가상 중첩 컨트롤러(3038) 중 하나 또는 모두를 포함하는데 - 그 각각의 기능은 이하에서 보다 상세하게 설명된다.
이 기술된 상세한 설명을 위해, 용어들 "키맵(keymap)" 또는 "키매핑(keymapping)"은 "입력 맵" 또는 "입력 매핑"과 각각 상호교체가능하고, 키(들)의 매핑에 대한 참조들은 키보드로부터 수신되는 입력들에 한정하고자 하는 것이 아니고 - 이보다는 사용자 입력들을 컴퓨팅 장치에 제공하는 데 이용되고 또한 이에 결합될 수 있는 입력 장치로부터 수신되는 어떠한 입력 이벤트라도 포함하고자 하는 것으로 이해되어야 한다.
키매핑 층(3034) 내의 키매핑 컨트롤러(3036)는, 일 실시예에 있어서, 하나 또는 그 이상의 입력 장치들(304)로부터 수신된 입력들을 컴퓨팅 시스템(302) 상에서 실행되는 소프트웨어 어플리케이션 / 게임 어플리케이션에 의해 검출 및 해석될 수 있는 지시들 또는 이벤트들로 번역하도록 구성된다. 예를 들어, 컴퓨팅 시스템에서 실행되는 게임 어플리케이션에 있어서, 키매핑 컨트롤러(3036)는 키보드 상의 키프레스 이벤트들을 통해 수신되는 입력들을 터치 패드 또는 터치 스크린을 통한 입력을 필요로 하는 터치 행위들(예를 들어, 달리기(running), 쏘기(shooting) 등) 또는 그 안에 제공된 가속계(accelerometer)를 갖는 장치를 통한 입력을 필요로 하는 틸트에 기반한 행위들(예를 들어, 돌기(turning), 기울기(banking) 등)으로 번역하도록 구성될 수 있다.
상기에서 기술된 키매핑 이벤트들은 단지 예시적인 것에 불과할 뿐, 총망라하고자 하는 것은 아니고 - 본 발명에 의해 고려되는 키매핑은 입력 제어들의 다른 세트로 입력 제어들의 제1 세트의 대체, 소프트웨어 어플리케이션이 이로부터 입력을 수신하기 위해 코딩되지 않은 하나 또는 그 이상의 입력 장치들로부터 해석가능한 입력들을 수신하도록 소프트웨어 어플리케이션의 인에이블링(enabling), 또는 실행 하의 소프트웨어 어플리케이션 내 하나의 입력 이벤트가 복수의 지시들 또는 이벤트들을 실행하는 것을 가능하게 해주는 매크로(macro)의 정의를 포함하여, 다양한 다른 목적들을 다룰 수 있음이 이해되어야 한다.
본 발명의 일 실시예에 있어서, 키매핑 컨트롤러는 하나 또는 그 이상의 입력 장치들(304)로부터 수신된 입력들을 하나 또는 그 이상의 룩업 테이블들, 또는 하나 또는 그 이상의 대체 테이블들에 기초하여, 또는 하나 또는 그 이상의 입력 장치들(304)로부터 수신되는 입력들과 컴퓨팅 시스템(302) 상에서 실행되는 소프트웨어 어플리케이션 / 게임 어플리케이션에 의해 검출 및 해석될 수 있는 지시들 또는 이벤트들과의 상관관계(correlation)를 가능하게 하는 다른 데이터 레코드들에 기초하여 컴퓨팅 시스템(302) 상에서 실행되는 소프트웨어 어플리케이션 / 게임 어플리케이션에 의해 검출 및 해석될 수 있는 지시들 또는 이벤트들로 번역하도록 구성될 수 있다.
시각적 중첩 컨트롤러(3038)는 소프트웨어 어플리케이션 / 게임 어플리케이션에 의해 생성되는 하나 또는 그 이상의 디스플레이 스크린들 상에, 현재 키맵 또는 키매핑 컨트롤러(3036)를 통해 특정 어플리케이션 관련 기능과 연관된 키들 또는 입력 제어들과 관련된 다른 시각적 지표(들)(visual indication(s))을 중첩(overlay)하도록 구성된다. 예를 들어, 어플리케이션 코드가 터치 스크린의 정의된 영역에서 (터치 스크린 또는 터치 패드 상의) 터치 이벤트의 검출을 특정 방향으로 움직이라는 플레이어의 아바타에 대한 지시로서 해석하고, 또한 키매핑 컨트롤러(3036)는 특정 키보드 키를 동일한 터치 이벤트에 매핑하는 게임 어플리케이션에 있어서, 시각적 중첩 컨트롤러(3038)는 터치 이벤트를 개시하기 위한 어플리케이션 코드에 의해 정의된 디스플레이 스크린의 영역에, 또는 그 주변에, 또는 이에 대하여 정의된 위치에, 특정 키보드 키에 대응하는 문자(character)를 중첩하도록 구성될 수 있다.
상기에서 설명된 종류의 시각적 중첩들을 제공하기 위해 시각적 중첩 컨트롤러를 구성함으로써, 사용자가 제어하는 소프트웨어 어플리케이션은 키매핑 컨트롤러(3036)에 의해 활성화되는 키들/제어들에 대한 시각적 맵을 수신하고 이 키들은 특정 소프트웨어 어플리케이션 이벤트들 또는 제어 지시들을 개시(initiate)하는 데 이용될 수 있다.
도 4에 도시된 본 발명의 일 실시예에 있어서, 키매핑 층(3034)은 상태 검출기(state detector, 3040)를 추가적으로 포함하고 - 키매핑 컨트롤러(3036)는 적응적 키매핑(adaptive keymapping)을 위해, 즉 복수의 키맵들/키매핑 프로파일들 중 이벤트 또는 변수에 기반한 특정 키맵/키매핑 프로파일의 선택을 위해 구성될 수 있다. 다시 말하면, 키매핑 컨트롤러(3036)는 제1 상태의 검출, 또는 제1 변수 또는 변수들의 제1 세트의 검출에 응답하여 제1 키맵(즉, 사용자 입력들과 소프트웨어 어플리케이션 지시들/이벤트들) 사이의 키매핑 연관들의 제1 세트)을 구현하고, 또한 제2 상태의 검출, 또는 제2 변수 또는 변수들의 제2 세트의 검출에 응답하여 제2 키맵(즉, 사용자 입력들과 소프트웨어 어플리케이션 지시들/이벤트들) 사이의 키매핑 연관들의 제2 세트)를 구현하도록 구성될 수 있다. 적응적 키매핑을 구현하기 위해 키매핑 컨트롤러(3036)에 의해 선택되고 구현되는 키맵들의 결정적인 인자인 상태들 또는 변수(들)은 키매핑 층(3034) 내 상태 검출기(3040)에 의해 검출될 수 있다.
본 발명의 다른 실시예에 있어서, 시각적 중첩 컨트롤러(3038)는 키매핑 컨트롤러(3036)에 의한 이벤트 또는 변수에 기반한 특정 키맵의 선택에 응답하여 키맵들의 적응적 중첩을 위해 구성될 수 있다.
일 실시예에 있어서, 키매핑 컨트롤러(3036)는 상태 검출기(3040)에 의한 하나 또는 그 이상의 미리 정의된 상태들 또는 상태 변화들의 검출에 기초하여 제1 키맵 또는 키맵 프로파일로부터 제2 키맵 또는 키맵 프로파일로 전환한다. 제1 키맵으로부터 제2 키맵으로의 전환을 개시하기 위해 이용될 수 있는 예시적인 상태 변화들은 그래픽 상태 / 시각적 디스플레이 상태, 오디오 상태, 디스크 상의 어플리케이션 데이터 / 게임 데이터의 상태, 네트워크를 통해 수신된 데이터의 상태, 또는 클라우드로부터 수신된 입력의 상태 중 하나 또는 그 이상에 있어서의 상태 변화들을 포함한다. 이 상태 변화들 각각은 이하에서 간단히 설명된다.
Figure pct00001
그래픽 상태 / 시각적 디스플레이 상태에 기초한 키맵 전환 - 일 실시예에 있어서, 특정 키맵/키맵 프로파일의 선택은 (ⅰ) 미리 정의된 디스플레이 스크린(들), (ⅱ) 스크린 상에 디스플레이되는 미리 정의된 그래픽 객체들 또는 (ⅲ) 정의된 조건들의 세트를 충족시키는 방식으로 디스플레이되는 미리 정의된 그래픽 객체들의 조합의 검출에 응답할 수 있다. 예를 들어, 일인칭 슈팅 게임을 포함하는 소프트웨어 어플리케이션에 있어서, 제1 키맵은 키보드 키 "d"를 캐릭터의 무기를 투하하는 것에 연관시킬 수 있는 한편, 제2 키맵은 동일한 키보드 키 "d"를 차량을 운전하는 것에 연관시킬 수 있다. 이 실시예에 있어서, 제1 키맵은 캐릭터가 무기를 소지하고 있는 것으로 디스플레이되는 한 선택되는 디폴트 키맵일 수 있지만, 캐릭터가 차량으로부터 미리 정의된 거리 내에 스크린 상에 위치될 때 시스템은 제1 키맵에서 제2 키맵으로 자동으로 전환할 수 있다.
Figure pct00002
오디오 상태에 기초한 키맵 전환 - 일 실시예에 있어서, 특정 키맵/키맵 프로파일의 선택은 사용자에게 재생하기 위해 소프트웨어 어플리케이션에 의해 오디오 컨트롤러로 또는 소프트웨어 어플리케이션으로부터 수신된 지시들의 실행의 인정 또는 확인으로서 오디오 컨트롤러로부터 다시 소프트웨어 어플리케이션으로 통신되는 미리 정의된 사운드 데이타의 검출에 응답할 수 있다. 예를 들어, 상기에서 언급된 일인칭 슈팅 게임을 포함하는 소프트웨어 어플리케이션에 있어서, 비(rain)를 나타내는 사운드 데이터의 검출은 우천 환경에서 게임플레이 동안에만 이용될 수 있는 능력들(powers) 또는 기량들(ability)의 이용을 가능하게 하는 키맵 또는 키맵 프로파일의 선택으로 귀결될 수 있다.
Figure pct00003
디스크 상의 게임 데이터의 상태에 기초한 키맵 전환 - 일 실시예에 있어서, 특정 키맵/키맵 프로파일의 선택은 디스크 상에 저장된 데이터 변수들로부터 검색되는 하나 또는 그 이상의 소프트웨어 어플리케이션 변수들의 검출에 응답할 수 있다. 예를 들어, 특정 게임 어플리케이션에 있어서, 플레이어가 이용할 수 있는 플레이어의 기량들 및 기능들은 플레이어가 진행하고 있는 게임의 레벨/단계에 따라 달라질 수 있거나, 또는 플레이어가 축적한 경험 포인트들 또는 경험 수준에 따라 달라질 수 있다. 이 정보는 게임이 플레이되고 있는 컴퓨팅 장치의 로컬 디스크로부터 검색될 수 있고, 또한 해당 레벨/단계/경험에서 플레이어가 이용할 수 있는 모든 기량들 및 기능들의 완전한 구현을 위해 필요한 키들은 구현에 따라 선택될 수 있다.
Figure pct00004
네트워크 트래픽의 상태에 기초한 키맵 전환 - 일 실시예에 있어서, 특정 키맵/키맵 프로파일의 선택은 네트워크 상으로 수신되는 데이터 변수들로부터 검색되는 하나 또는 그 이상의 소프트웨어 어플리케이션 변수들의 검출에 응답할 수 있다. 예를 들어, 특정 게임 어플리케이션에 있어서, 플레이어가 이용할 수 있는 플레이어의 기량들 및 기능들은 플레이어가 진행하고 있는 게임의 레벨/단계에 따라 달라질 수 있거나, 또는 플레이어가 축적한 경험 포인트들 또는 경험 수준에 따라 달라질 수 있다. 이 정보는 게임 플레이 장치가 네트워크 통신하고 있는 서버로부터 주기적으로 검색될 수 있고, 또한 해당 레벨/단계/경험에서 플레이어가 이용할 수 있는 모든 기량들 및 기능들의 완전한 구현을 위해 필요한 키들은 네트워크 서버로부터 검색되는 데이터 변수들에 기초하여 구현에 따라 선택될 수 있다.
Figure pct00005
클라우드로부터 수신된 입력의 상태에 기초한 키맵 전환 - 일 실시예에 있어서, 특정 키맵/키맵 프로파일의 선택은 사용자 또는 소프트웨어 어플리케이션이 참여하는 복수의 세션들에 걸쳐 수집된 세션 데이터의 분석에 기초하여 생성되고 클라우드 서버에 저장된 하나 또는 그 이상의 데이터 변수들의 수신에 응답할 수 있다. 예를 들어, 왼손잡이 플레이어를 위한 제1 키매핑 프로파일 및 오른손잡이 플레이어를 위한 제2 키매핑 프로파일을 제공하는 특정 게임 어플리케이션에 있어서, 특정 게임 또는 게임 플랫폼 또는 소프트웨어 에뮬레이션 플랫폼과 연관된 클라우드 서버는 특정 사용자가 마지막 3 개의 세션들에서 왼손잡이용 키매핑 프로파일을 선택하였음을 검출할 수 있고 - 이 정보는 동일 사용자가 참여하는 세션 로그인 이벤트의 검출에 응답하여 개시되는 게임 플레이의 다음 세션을 위해 왼손잡이용 키매핑 프로파일을 자동으로 선택하는 데 이용될 수 있다.
일부 실시예들에 있어서 적응적 키매핑은 - 구현을 위해 적응적으로 선택된 특정 키맵(또는 특정 키맵과 연관된 정보 또는 그래픽 객체들)을 디스플레이하기 위해, 적응적 시각적 중첩에 의해 수반될 수 있음이 이해되어야 한다.
또한 일부 실시예들에 있어서, 선택 또는 적응적 선택에 이용가능한 키매핑 프로파일들 중 하나 또는 그 이상은, 하나의 입력 이벤트가 실행 시 소프트웨어 어플리케이션 내 복수의 지시들 또는 이벤트들의 실행으로 귀결되도록 정의될 수 있는, 일대다 기능(즉, 매크로 기능)을 구현하는 키맵들을 포함할 수 있음이 이해되어야 한다. 예를 들어, 다수의 무기들을 가지고 플레이어가 참여하는 게임 어플리케이션에 있어서, 하나의 키프레스 이벤트는 제1 무기를 이용한 제1 발사 이벤트, 제1 무기의 제2 무기로의 대체 및 그후 제2 무기를 이용한 제2 발사 이벤트로 구성되는 발사 조합을 촉발하도록 정의될 수 있다. 이러한 일대다 기능을 정의하는 것은, 노련한 사용자가 반응시간을 줄이고 게임플레이 결과를 개선시킬 수 있도록 그 자신의 키맵들을 정의할 수 있기 때문에, 더 효율적인 게임플레이로 귀결된다.
본 발명의 다른 실시예에 있어서, 소프트웨어 어플리케이션에 연관된, 상기에서 기술된 상태에 있어서의 변화들 중 하나 또는 그 이상의 검출은 - 예를 들어, 키보드 상의 조명 상태, 키보드 마우스 또는 터치 패드 상의 진동 상태, 디스플레이 스크린의 조명 상태 또는 조명 레벨, 또는 키보드 백라이트의 조명 상태 또는 조명 레벨을 선택 또는 변경하는 것에 의해, 시각적, 청각적 또는 햅틱 피드백을 사용자에게 제공하는 데 이용될 수 있다. 특정 실시예에 있어서, 이러한 피드백은 어플리케이션 컨트롤러(3038)에 의해 생성 및/또는 제어될 수 있고 - 이것은 차례로 그래픽 컨트롤러(3030), 오디오 컨트롤러(3032), 디스플레이 컨트롤러, 입력 장치 컨트롤러, 조명 컨트롤러, 또는 햅틱 컨트롤러 중 하나 또는 그 이상에 의존할 수 있다.
본 발명의 일 실시예에 있어서, 본 발명은 도 2에 도시된 타입의 아키텍쳐를 갖는 컴퓨팅 시스템(즉, 호스트 운영 시스템 내에서 인스턴스화된 게스트 운영 시스템의 인스턴스 상에서의 실행을 위해 구성되는 어플리케이션 소프트웨어의 실행을 가능하게 하는 컴퓨터 구현 아키텍쳐) 내에서 구현될 수 있다. 다양한 이러한 실시예들에 있어서 -
Figure pct00006
그래픽 상태 또는 시각적 디스플레이 상태에 기초한 키맵 전환은 (ⅰ) 미리 정의된 디스플레이 스크린(들), (ⅱ) 스크린 상에 디스플레이되는 미리 정의된 그래픽 객체들 또는 (ⅲ) 정의된 조건들의 세트를 만족시키는 방식으로 디스플레이되는 미리 정의된 그래픽 객체들의 조합의 검출에 응답하여 특정 키맵/키맵 프로파일의 선택을 수반할 수 있고 - 이때 상기 중 하나 또는 그 이상의 검출은
Figure pct00007
가상 머신(214) 내의 어플리케이션 프로그램 층(2142) 내에서 실행되는 어플리케이션 프로그램으로부터, 가상 머신(214) 내의 게스트 운영 시스템 어플리케이션 프레임워크 층(2144), 게스트 운영 시스템 라이브러리 층(2146), 또는 게스트 운영 시스템 하드웨어 추상 층(2148) 중 어느 하나에, 또는
Figure pct00008
가상 머신(214)과 호스트 운영 시스템 어플리케이션 소프트웨어(210) 사이에 설립되는 데이터 채널을 통해 호스트 운영 시스템(208)에, 또는
Figure pct00009
호스트 운영 시스템 하드웨어 장치 드라이버(212)로부터 호스트 운영 시스템 어플리케이션 소프트웨어(210)에
수신된 데이터, 요청(들) 또는 지시(들)에 기초할 수 있다.
Figure pct00010
오디오 상태에 기초한 키맵 전환은 어플리케이션 프로그램에 의해 오디오 컨트롤러 또는 오디오 장치 드라이버로 (그 역도 마찬가지) 통신되는 미리 정의된 사운드 데이터 또는 지시들 또는 요청들의 검출에 응답하여 특정 키맵/키맵 프로파일의 선택을 수반할 수 있고 - 이때 상기 중 하나 또는 그 이상의 검출은
Figure pct00011
가상 머신(214) 내의 어플리케이션 프로그램 층(2142) 내에서 실행되는 어플리케이션 프로그램으로부터, 가상 머신(214) 내의 게스트 운영 시스템 어플리케이션 프레임워크 층(2144), 게스트 운영 시스템 라이브러리 층(2146), 또는 게스트 운영 시스템 하드웨어 추상 층(2148) 중 어느 하나에, 또는
Figure pct00012
가상 머신(214)과 호스트 운영 시스템 어플리케이션 소프트웨어(210) 사이에 설립되는 데이터 채널을 통해 호스트 운영 시스템(208)에, 또는
Figure pct00013
호스트 운영 시스템 하드웨어 장치 드라이버(212)로부터 호스트 운영 시스템 어플리케이션 소프트웨어(210)에
수신된 데이터, 요청(들) 또는 지시(들)에 기초할 수 있다.
Figure pct00014
디스크 상의 게임 데이터의 상태에 기초한 키맵 전환은 디스크 상에 저장된 데이터 변수들로부터 검색된 하나 또는 그 이상의 소프트웨어 어플리케이션 변수들의 검출에 응답하여 특정 키맵/키맵 프로파일의 선택을 수반할 수 있고 - 이때 상기의 소프트웨어 변수들의 검출은
Figure pct00015
가상 머신(214) 내의 어플리케이션 프로그램 층(2142) 내에서 실행되는 어플리케이션 프로그램으로부터, 가상 머신(214) 내의 게스트 운영 시스템 어플리케이션 프레임워크 층(2144), 게스트 운영 시스템 라이브러리 층(2146), 또는 게스트 운영 시스템 하드웨어 추상 층(2148) 중 어느 하나에, 또는
Figure pct00016
가상 머신(214)과 호스트 운영 시스템 어플리케이션 소프트웨어(210) 사이에 설립되는 데이터 채널을 통해 호스트 운영 시스템(208)에
수신된 데이터에 기초할 수 있다.
Figure pct00017
네트워크 트래픽의 상태에 기초한 키맵 전환은 네트워크 상으로 수신되는 데이터 변수들로부터 검색되는 하나 또는 그 이상의 소프트웨어 어플리케이션 변수들의 검출에 응답하여 특정 키맵/키맵 프로파일의 선택을 수반할 수 있고 - 이때 상기의 소프트웨어 변수들의 검출은
Figure pct00018
가상 머신(214) 내의 어플리케이션 프로그램 층(2142) 내에서 실행되는 어플리케이션 프로그램으로부터, 가상 머신(214) 내의 게스트 운영 시스템 어플리케이션 프레임워크 층(2144), 게스트 운영 시스템 라이브러리 층(2146), 또는 게스트 운영 시스템 하드웨어 추상 층(2148) 중 어느 하나에, 또는
Figure pct00019
가상 머신(214)과 호스트 운영 시스템 어플리케이션 소프트웨어(210) 사이에 설립되는 데이터 채널을 통해 호스트 운영 시스템(208)에
수신된 데이터에 기초할 수 있다.
Figure pct00020
클라우드로부터 수신되는 입력의 상태에 기초한 키맵 전환은 사용자 또는 소프트웨어 어플리케이션이 참여하는 복수의 세션들에 걸쳐 수집된 세션 데이터의 분석에 기초하여 생성되고 클라우드 서버에 저장된 하나 또는 그 이상의 데이터 변수들의 검출에 응답하여 특정 키맵/키맵 프로파일의 선택을 수반할 수 있고 - 이때 상기의 소프트웨어 변수들의 검출은
Figure pct00021
가상 머신(214) 내의 어플리케이션 프로그램 층(2142) 내에서 실행되는 어플리케이션 프로그램으로부터, 가상 머신(214) 내의 게스트 운영 시스템 어플리케이션 프레임워크 층(2144), 게스트 운영 시스템 라이브러리 층(2146), 또는 게스트 운영 시스템 하드웨어 추상 층(2148) 중 어느 하나에, 또는
Figure pct00022
가상 머신(214)과 호스트 운영 시스템 어플리케이션 소프트웨어(210) 사이에 설립되는 데이터 채널을 통해 호스트 운영 시스템(208)에
수신된 데이터에 기초할 수 있다.
도 5 내지 도 7은 본 발명의 교시에 따른 입력 키매핑 방법을 보여준다.
도 5는 하나 또는 그 이상의 입력 장치들(304)로부터 수신된 입력들을 컴퓨팅 시스템(302) 상에서 실행되는 소프트웨어 어플리케이션 또는 게임 어플리케이션에 의해 검출 및 해석될 수 있는 지시들 또는 이벤트들로 번역(translate)하기 위한 - 본 발명의 방법에 따른 키매핑 방법을 보여준다. 다양한 실시예들에 있어서, 이하에서 설명되는 방법 단계들 중 하나 또는 그 이상은 도 3 및 도 4와 관련하여 상기에서 설명한 바와 같이, 컴퓨팅 시스템(302) 내의 키매핑 층(3034) 내에 또는 어플리케이션 컨트롤러(3028) 내에 부분적으로 또는 전체적으로 구현될 수 있다.
502 단계는 하나 또는 그 이상의 입력 장치들을 통해 생성될 수 있는 입력 이벤트들의 제1 세트와, 소프트웨어 어플리케이션에 의해 인식되는 입력 이벤트들의 제2 세트를 상관시키는 키맵을 검색하는 것을 포함한다. 502 단계의 일 실시예에 있어서, (ⅰ) 입력 이벤트들의 제1 세트는 소프트웨어 어플리케이션에 의해 인식되지 않거나, 또는 (ⅱ) (소프트웨어 어플리케이션에 대응하는 소프트웨어 코드에 의한) 입력 이벤트들의 제1 세트와 연관된 기능 또는 소프트웨어 응답은 (소프트웨어 어플리케이션에 대응하는 소프트웨어 코드에 의한) 입력 이벤트들의 제2 세트와 연관된 기능 또는 소프트웨어 응답이 다르다. 일 실시예에 있어서, 502 단계에서 키맵은, 키매핑 층(3034) 내의 키매핑 컨트롤러(3036)에 의해, 키맵 데이터베이스로부터 검색된다.
504 단계는 입력 장치들의 제1 세트 내의 입력 장치로부터, 입력 이벤트들의 제1 세트 내의 제1 입력 이벤트를 정의하거나 또는 이와 관련된 제1 데이터 신호 또는 통신을 수신하는 것을 포함한다. 일 실시예에 있어서, 504 단계의 데이터 신호는 키매핑 층(3034) 내의 키매핑 컨트롤러(3036)에 수신된다.
506 단계는 검색된 키맵에 기초하여, 제1 입력 이벤트에 매핑되는 입력 이벤트들의 제2 세트 내의 제2 입력 이벤트를 확인하는 것을 포함한다. 506 단계에서 매핑은 키매핑 층(3034) 내의 키매핑 컨트롤러(3036)에 구현될 수 있다.
508 단계는 제2 입력 이벤트를 확인하거나 또는 이에 관련된 제2 데이터 신호를 생성 및 전송하는 것을 포함한다. 일 실시예에 있어서, 생성된 제2 데이터 신호는 키매핑 컨트롤러(3036)로부터 및/또는 어플리케이션 컨트롤러(3028)로 - 또는 보다 상세하게는 그래픽 컨트롤러(3030) 또는 오디오 컨트롤러(3032) 또는 어플리케이션 컨트롤러(3028) 내의 다른 상태 컨트롤러로 전송될 수 있다. 특정 실시예에 있어서, 생성된 제2 데이터 신호는 제2 입력 이벤트에 대응하여 소프트웨어 어플리케이션에 의해(또는 소프트웨어 어플리케이션에 대응하는 소프트웨어 코드에 의해) 인식가능하다.
510 단계는 그후 제2 데이터 신호에 기초하여, 소프트웨어 어플리케이션에 있어서의 또는 소프트웨어 어플리케이션에 연관되거나 제어되는 다른 장치(예를 들어, 디스플레이, 스피커, 헤드폰, 시각적 피드백 장치, 청각적 피드백 장치, 조명 장치, 촉각적(tactile) 피드백 장치, 햅틱(haptic) 피드백 장치, 후각적(olfactory) 피드백 장치 또는 다른 감각적(sensory) 피드백 장치)에 있어서의 상태 변화를 구현하는 것을 포함한다. 소프트웨어 어플리케이션 또는 장치에 있어서의 상태 변화는 어플리케이션 컨트롤러(3028)를 통해 또는 그래픽 컨트롤러(3030), 오디오 컨트롤러(3032) 또는 그 안의 다른 상태 컨트롤러를 통해 구현될 수 있다.
특정 실시예에 있어서, 도 5의 방법은 도 2에 도시된 타입의 아키텍쳐를 갖는 컴퓨팅 시스템(즉, 호스트 운영 시스템 내에서 가상 머신으로서 실행되는 게스트 운영 시스템 상에서의 실행을 위해 구성되는 어플리케이션 소프트웨어의 실행을 가능하게 하는 컴퓨터 구현 아키텍쳐) 내에서 구현된다. 이러한 일 실시예에 있어서, 502 단계에서 검색된 키맵은 (ⅰ) 호스트 운영 시스템의 하드웨어 장치 드라이버(들)에 의해 인식될 수 있는 입력 이벤트들의 제1 세트와, 호스트 운영 시스템 내에서 인스턴스화된 게스트 운영 시스템의 가상 인스턴스 내에서 실행되는 소프트웨어 어플리케이션에 의해 인식되는 입력 이벤트들의 제2 세트를 상관시키거나, 또는 (ⅱ) 호스트 운영 시스템의 하드웨어 장치 드라이버(들)에 의해 인식될 수 있는 입력 이벤트들의 제1 세트와, 호스트 운영 시스템 내에서 인스턴스화된 게스트 운영 시스템의 가상 인스턴스의 게스트 운영 시스템 커넬 내의 하드웨어 장치 드라이버(들)에 의해 인식되는 입력 이벤트들의 제2 세트를 상관시키거나, 또는 (ⅲ) 호스트 운영 시스템의 하드웨어 장치 드라이버(들)에 의해 인식될 수 있는 입력 이벤트들의 제1 세트와, 게스트 운영 시스템에 의해 인식되는 입력 이벤트들의 제2 세트를 상관시킨다. 나아가 일부 실시예들에 있어서, 입력 이벤트들의 제1 세트는 게스트 운영 시스템의 가상 인스턴스 내에서 실행되는 소프트웨어, 게스트 운영 시스템 커넬 내의 하드웨어 장치 드라이버(들), 또는 게스트 운영 시스템 중 하나 또는 그 이상에 의해 인식되지 않음이 이해되어야 한다.
도 6은 입력 키맵 중첩을 생성하여 소프트웨어 어플리케이션 / 게임 어플리케이션에 의해 생성되는 하나 또는 그 이상의 디스플레이 스크린들 상에, 도 5와 관련하여 기술된 방법을 통해 현재 키맵 또는 특정 어플리케이션 관련 기능에 연관된 키들 또는 입력 제어들에 관한 하나 또는 그 이상의 시각적 지표들을 중첩시키는 방법을 보여준다.
다양한 실시예들에 있어서, 이하에서 설명되는 방법 단계들 중 하나 또는 그 이상은 도 3 및 도 4와 관련하여 상기에서 설명된 바와 같이, 컴퓨팅 시스템(302) 내의 키매핑 층(3034) 내에, 또는 시각적 중첩 컨트롤러(3038) 내에, 또는 어플리케이션 컨트롤러(3028) 내에 부분적으로 또는 전체적으로 구현될 수 있다.
602 단계는 하나 또는 그 이상의 입력 장치들을 통해 생성될 수 있는 입력 이벤트들의 제1 세트와, 소프트웨어 어플리케이션에 의해 인식되는 입력 이벤트들의 제2 세트를 상관시키는 키맵을 검색하는 것을 포함한다. 602 단계의 일 실시예에 있어서 (ⅰ) 입력 이벤트들의 제1 세트는 소프트웨어 어플리케이션에 의해 인식되지 않거나, 또는 (ⅱ) 소프트웨어 어플리케이션에 대응하는 소프트웨어 코드에 의한 입력 이벤트들의 제1 세트와 연관된 기능 또는 소프트웨어 어플리케이션 응답은 소프트웨어 어플리케이션에 대응하는 소프트웨어 코드에 의한 입력 이벤트들의 제2 세트와 연관된 기능 또는 소프트웨어 어플리케이션 응답과 다르다. 일 실시예에 있어서, 602 단계에서 키맵은 키매핑 층(3034) 내의 키매핑 컨트롤러(3036)에 의해 검색된다.
604 단계는 소프트웨어 어플리케이션에 의해(또는 소프트웨어 어플리케이션과 연관된 소프트웨어 코드에 의해) 제어되는 디스플레이 스크린 상에 (ⅰ) 소프트웨어 어플리케이션의 상태에 기초하여 선택되거나 또는 정의되는 그래픽 객체들의 제1 세트, 및 (ⅱ) 그래픽 객체들의 제1 세트 내의 하나 또는 그 이상의 그래픽 객체들 상에 중첩되는 그래픽 객체들의 제2 세트를 포함하는 디스플레이를 생성하는 것을 포함하고, 이때 그래픽 객체들의 제2 세트 내의 하나 또는 그 이상의 그래픽 객체들은 입력 이벤트들의 제1 세트 내의 하나 또는 그 이상의 입력 이벤트들에 대응한다.
604 단계의 일 실시예에 있어서, 그래픽 객체들의 제2 세트는 현재 키맵 또는 입력 이벤트들의 제1 세트 내의 입력 이벤트들을 생성하는 것이 가능한 키들 또는 입력 제어들의 하나 또는 그 이상의 시각적 지표(들) 또는 표현(들)(representation(s))을 포함한다(그리고 이것들은 602 단계에서 검색된 키맵을 통해 소프트웨어 어플리케이션 기능과 연관된다). 이전에 설명된 예와 같이, 어플리케이션 코드가 특정 방향으로 플레이어의 아바타를 움직이기 위한 지시로서 터치 스크린의 정의된 위치에서 (터치 스크린 또는 터치 패드 상의) 터치 이벤트의 검출을 해석하고, 또한 602 단계에서 검색된 키맵이 특정 키보드 키를 동일한 터치 이벤트에 매핑하는, 게임 어플리케이션에 있어서, 604 단계는 터치 이벤트를 개시하기 위해 어플리케이션 코드에 의해 정의된 디스플레이 스크린의 영역에, 또는 그 주변에, 또는 이에 대하여 정의된 위치에, - 바람직하게는 게임 기능의 일부로서 디스플레이 스크린 상에 게이밍 어플리케이션에 의해 렌더링되는 하나 또는 그 이상의 그래픽 객체들의 상단에, 특정된 키보드 키에 대응하는 문자의 중첩으로 귀결될 것이다.
이러한 중첩들을 제공하기 위해 도 6의 방법을 구현하는 것에 의해, 사용자가 제어하는 소프트웨어 어플리케이션은 602 단계에서 검색된 키맵에 기초하여 활성화된 키들/제어들에 대한 시각적 맵을 수신하고, 이 키들은 특정 소프트웨어 어플리케이션 이벤트들 또는 제어 지시들을 개시하는 데 이용될 수 있다.
특정 실시예에 있어서, 도 6의 방법은 도 2에 도시된 타입의 아키텍쳐를 갖는 컴퓨팅 시스템(즉, 호스트 운영 시스템 내에서 가상 머신으로서 실행되는 게스트 운영 시스템 상에서의 실행을 위해 구성되는 어플리케이션 소프트웨어의 실행을 가능하게 하는 컴퓨터 구현 아키텍쳐) 내에서 구현된다. 이러한 일 실시예에 있어서, 602 단계에서 검색된 키맵은 (ⅰ) 호스트 운영 시스템의 하드웨어 장치 드라이버(들)에 의해 인식될 수 있는 입력 이벤트들의 제1 세트와, 호스트 운영 시스템 내에서 인스턴스화된 게스트 운영 시스템의 가상 인스턴스 내에서 실행되는 소프트웨어 어플리케이션에 의해 인식되는 입력 이벤트들의 제2 세트를 상관시키거나, 또는 (ⅱ) 호스트 운영 시스템의 하드웨어 장치 드라이버(들)에 의해 인식될 수 있는 입력 이벤트들의 제1 세트와, 호스트 운영 시스템 내에서 인스턴스화된 게스트 운영 시스템의 가상 인스턴스의 게스트 운영 시스템 커넬 내의 하드웨어 장치 드라이버(들)에 의해 인식되는 입력 이벤트들의 제2 세트를 상관시키거나, 또는 (ⅲ) 호스트 운영 시스템의 하드웨어 장치 드라이버(들)에 의해 인식될 수 있는 입력 이벤트들의 제1 세트와, 게스트 운영 시스템에 의해 인식되는 입력 이벤트들의 제2 세트를 상관시킨다. 나아가 일부 실시예들에 있어서, 입력 이벤트들의 제1 세트는 게스트 운영 시스템의 가상 인스턴스 내에서 실행되는 소프트웨어, 호스트 운영 시스템 내에 인스턴스화된 게스트 운영 시스템의 가상 인스턴스의 게스트 운영 시스템 커넬 내의 하드웨어 장치 드라이버(들), 또는 게스트 운영 시스템 중 하나 또는 그 이상에 의해 인식되지 않음이 이해되어야 한다.
도 7은 본 발명의 교시에 따른 적응적 키매핑 방법을 보여주는데 - 이때 이 방법은 상기에서 보다 상세하게 기술된 키맵 구현 및/또는 키맵 중첩을 목적으로 복수의 키맵들/키매핑 프로파일들 중에서 이벤트 또는 변수에 기초한 특정 키맵 또는 키매핑 프로파일의 선택을 구현한다.
702 단계는 하드웨어 또는 소프트웨어 변수 상태 또는 소프트웨어 어플리케이션과, 또는 소프트웨어 어플리케이션이 실행되는 컴퓨팅 시스템 또는 시스템 환경과 연관된 하드웨어 또는 소프트웨어 변수 상태 변화를 검출하는 것을 포함한다. 일 실시예에 있어서, 변수 상태 또는 변수 상태 변화는 도 4의 키매핑 층(3034) 내의 상태 검출기(3040)에 의해 검출될 수 있다. 702 단계에서 검출되는 변수 상태들 또는 상태 변화들은 키맵을 선택하고(select), 키맵을 버리고(discard), 또는 키맵을 변경(change)하기에 적합하도록 미리 정의된 식별가능하거나 또는 검출가능한 어떠한 상태 또는 상태 변화를 포함할 수 있음이 이해되어야 한다. 제1 키맵으로부터 제2 키맵으로의 전환을 개시하는 데 사용될 수 있는 예시적인 상태 변화들은 그래픽 상태 / 시각적 디스플레이 상태, 오디오 상태, 일시적 또는 비일시적 메모리 상에(예. RAM 상에 또는 영구 저장소 상에) 저장된 데이터의 상태, 네트워크 상으로 수신된 데이터의 상태, 하드웨어 장치로부터 또는 클라우드로부터 수신된 입력의 상태, 또는 소프트웨어 어플리케이션의 실행과 연관된 컴퓨팅 시스템 또는 시스템 환경의 상태 중 하나 또는 그 이상에 있어서의 검출된 변화들을 포함한다.
704 단계는 이후 키맵들의 세트 중에서, 입력 장치에서 검출된 입력 이벤트들을 소프트웨어 어플리케이션에 의해 인식가능한 입력 이벤트들로 번역하도록 구성된 키맵을 선택하는 것을 포함하고 - 이때 이 선택은 검출된 변수 상태 또는 변수 상태 변화에 기초한다. 한편으로는 변수 상태 또는 변수 상태 변화들과 이러한 변수 상태 또는 변수 상태 변화들의 검출에 응답하여 선택되는 키맵들 사이의 상관관계(들)은, 미리 정의되거나 또는 규칙에 기초할 수 있음이 이해되어야 한다. 선택된 키맵은 이후에 도 5의 방법 단계들에 따른 키매핑을 위해 구현될 수 있다.
도 7의 방법은 제1 상태 또는 제1 상태 변화의 검출, 또는 제1 변수 또는 변수들의 제1 세트의 검출에 응답하여 제1 키맵(즉, 사용자 입력들과 소프트웨어 어플리케이션 지시들/이벤트들 사이의 키매핑 연관관계들의 제1 세트)을 구현하고, 또한 제2 상태, 또는 제2 상태 변화의 검출, 또는 제2 변수 또는 변수들의 제2 세트의 검출에 응답하여 제2 키맵(즉, 사용자 입력들과 소프트웨어 어플리케이션 지시들/이벤트들 사이의 키매핑 연관관계들의 제2 세트)을 구현하는 것을 가능하게 함이 이해되어야 한다.
일부 실시예들에 있어서, 도 7의 방법에 따른 적응적 키매핑은 - 구현을 위해 적응적으로 선택된 특정 키맵을 디스플레이 또는 나타내기 위해 도 6의 방법에 따른 적응적 시각적 중첩에 동반될 수 있다. 특정 실시예들에 있어서, 선택 또는 적응적 선택에 이용가능한 키매핑 프로파일들 중 하나 또는 그 이상은 하나의 입력 이벤트가 실행 하의 소프트웨어 어플리케이션 내의 복수의 지시들 또는 이벤트들의 실행으로 귀결되도록 정의될 수 있는 일대다 기능(즉, 매크로 기능)을 구현하는 키맵들을 포함할 수 있다.
도 7의 방법의 일 실시예에 있어서, 본 발명은 도 2에 도시된 타입의 아키텍쳐를 갖는 컴퓨팅 시스템(즉, 호스트 운영 시스템 내에서, 게스트 운영 시스템 상에서 실행을 위해 구성되는 어플리케이션 소프트웨어의 실행을 가능하게 해주는 컴퓨터 구현 아키텍쳐) 상에서 구현될 수 있다. 도 7의 방법의 구현에 관련된 이러한 실시예들에 있어서 -
Figure pct00023
그래픽 상태 또는 시각적 디스플레이 상태에 기초한 키맵 전환은 (ⅰ) 미리 정의된 디스플레이 스크린(들), (ⅱ) 스크린 상에 디스플레이되는 미리 정의된 그래픽 객체들 또는 (ⅲ) 정의된 조건들의 세트를 만족시키는 방식으로 디스플레이되는 미리 정의된 그래픽 객체들의 조합의 검출에 응답하여 특정 키맵/키맵 프로파일의 선택을 수반할 수 있고 - 이때 상기 중 하나 또는 그 이상의 검출은
Figure pct00024
가상 머신(214) 내의 어플리케이션 프로그램 층(2142) 내에서 실행되는 어플리케이션 프로그램으로부터, 가상 머신(214) 내의 게스트 운영 시스템 어플리케이션 프레임워크 층(2144), 게스트 운영 시스템 라이브러리 층(2146), 또는 게스트 운영 시스템 하드웨어 추상 층(2148) 중 어느 하나에, 또는
Figure pct00025
가상 머신(214)과 호스트 운영 시스템 어플리케이션 소프트웨어(210) 사이에 설립되는 데이터 채널을 통해 호스트 운영 시스템(208)에, 또는
Figure pct00026
호스트 운영 시스템 하드웨어 장치 드라이버(212)로부터 호스트 운영 시스템 어플리케이션 소프트웨어(210)에
수신된 데이터, 요청(들) 또는 지시(들)에 기초할 수 있다.
Figure pct00027
오디오 상태에 기초한 키맵 전환은 어플리케이션 프로그램에 의해 오디오 컨트롤러 또는 오디오 장치 드라이버로 (그 역도 마찬가지) 통신되는 미리 정의된 사운드 데이터 또는 지시들 또는 요청들의 검출에 응답하여 특정 키맵/키맵 프로파일의 선택을 수반할 수 있고 - 이때 상기 중 하나 또는 그 이상의 검출은
Figure pct00028
가상 머신(214) 내의 어플리케이션 프로그램 층(2142) 내에서 실행되는 어플리케이션 프로그램으로부터, 가상 머신(214) 내의 게스트 운영 시스템 어플리케이션 프레임워크 층(2144), 게스트 운영 시스템 라이브러리 층(2146), 또는 게스트 운영 시스템 하드웨어 추상 층(2148) 중 어느 하나에, 또는
Figure pct00029
가상 머신(214)과 호스트 운영 시스템 어플리케이션 소프트웨어(210) 사이에 설립되는 데이터 채널을 통해 호스트 운영 시스템(208)에, 또는
Figure pct00030
호스트 운영 시스템 하드웨어 장치 드라이버(212)로부터 호스트 운영 시스템 어플리케이션 소프트웨어(210)에
수신된 데이터, 요청(들) 또는 지시(들)에 기초할 수 있다.
Figure pct00031
디스크 상의 게임 데이터의 상태에 기초한 키맵 전환은 디스크 상에 저장된 데이터 변수들로부터 검색된 하나 또는 그 이상의 소프트웨어 어플리케이션 변수들의 검출에 응답하여 특정 키맵/키맵 프로파일의 선택을 수반할 수 있고 - 이때 상기의 소프트웨어 변수들의 검출은
Figure pct00032
가상 머신(214) 내의 어플리케이션 프로그램 층(2142) 내에서 실행되는 어플리케이션 프로그램으로부터, 가상 머신(214) 내의 게스트 운영 시스템 어플리케이션 프레임워크 층(2144), 게스트 운영 시스템 라이브러리 층(2146), 또는 게스트 운영 시스템 하드웨어 추상 층(2148) 중 어느 하나에, 또는
Figure pct00033
가상 머신(214)과 호스트 운영 시스템 어플리케이션 소프트웨어(210) 사이에 설립되는 데이터 채널을 통해 호스트 운영 시스템(208)에
수신된 데이터에 기초할 수 있다.
Figure pct00034
네트워크 트래픽의 상태에 기초한 키맵 전환은 네트워크 상으로 수신되는 데이터 변수들로부터 검색되는 하나 또는 그 이상의 소프트웨어 어플리케이션 변수들의 검출에 응답하여 특정 키맵/키맵 프로파일의 선택을 수반할 수 있고 - 이때 상기의 소프트웨어 변수들의 검출은
Figure pct00035
가상 머신(214) 내의 어플리케이션 프로그램 층(2142) 내에서 실행되는 어플리케이션 프로그램으로부터, 가상 머신(214) 내의 게스트 운영 시스템 어플리케이션 프레임워크 층(2144), 게스트 운영 시스템 라이브러리 층(2146), 또는 게스트 운영 시스템 하드웨어 추상 층(2148) 중 어느 하나에, 또는
Figure pct00036
가상 머신(214)과 호스트 운영 시스템 어플리케이션 소프트웨어(210) 사이에 설립되는 데이터 채널을 통해 호스트 운영 시스템(208)에
수신된 데이터에 기초할 수 있다.
Figure pct00037
클라우드로부터 수신되는 입력의 상태에 기초한 키맵 전환은 사용자 또는 소프트웨어 어플리케이션이 참여하는 복수의 세션들에 걸쳐 수집된 세션 데이터의 분석에 기초하여 생성되고 클라우드 서버에 저장된 하나 또는 그 이상의 데이터 변수들의 검출에 응답하여 특정 키맵/키맵 프로파일의 선택을 수반할 수 있고 - 이때 상기의 소프트웨어 변수들의 검출은
Figure pct00038
가상 머신(214) 내의 어플리케이션 프로그램 층(2142) 내에서 실행되는 어플리케이션 프로그램으로부터, 가상 머신(214) 내의 게스트 운영 시스템 어플리케이션 프레임워크 층(2144), 게스트 운영 시스템 라이브러리 층(2146), 또는 게스트 운영 시스템 하드웨어 추상 층(2148) 중 어느 하나에, 또는
Figure pct00039
가상 머신(214)과 호스트 운영 시스템 어플리케이션 소프트웨어(210) 사이에 설립되는 데이터 채널을 통해 호스트 운영 시스템(208)에
수신된 데이터에 기초할 수 있다.
도 8은 본 발명을 구현하기 위한 예시적인 컴퓨터 시스템(802)을 보여준다.
도시된 시스템은 차례로 하나 또는 그 이상의 프로세서들(804) 및 적어도 하나의 메모리(806)를 포함하는 컴퓨터 시스템(802)을 포함한다. 프로세서(804)는 프로그램 지시들을 실행하도록 구성되고 - 실재(real) 프로세스 또는 가상(virtual) 프로세서일 수 있다. 컴퓨터 시스템(802)은 설명되는 실시예들의 용도 또는 기능의 범위에 대하여 어떠한 제한도 제시하지 않음이 이해되어야 한다. 컴퓨터 시스템(802)은, 이에 한정되지는 않지만, 범용 컴퓨터, 프로그램된 마이크로프로세서, 마이크로-컨트롤러, 집적 회로, 및 본 발명의 방법을 구성하는 단계들을 구현할 수 있는 다른 장치들 또는 장치들의 배치들 중 하나 또는 그 이상을 포함할 수 있다. 본 발명에 따른 컴퓨터 시스템(802)의 예시적인 실시예들은 하나 또는 그 이상의 서버들, 데스크탑들, 랩탑들, 태블릿들, 스마트 폰들, 모바일 폰들, 모바일 통신 장치들, 태블릿들, 패블릿들 및 PDA(personal digital assistant)들을 포함할 수 있다. 본 발명의 일 실시예에 있어서, 메모리(806)는 본 발명의 다양한 실시예들을 구현하기 위한 소프트웨어를 저장할 수 있다. 컴퓨터 시스템(802)은 추가적인 컴포넌트들을 가질 수 있다. 예를 들어, 컴퓨터 시스템(802)은 하나 또는 그 이상의 통신 채널들(808), 하나 또는 그 이상의 입력 장치들(810), 하나 또는 그 이상의 출력 장치들(812), 및 저장소(814)를 포함할 수 있다. 버스, 컨트롤러, 또는 네트워크와 같은 상호연결 메카니즘(미도시)은 컴퓨터 시스템(802)의 컴포넌트들을 상호연결한다. 본 발명의 다양한 실시예들에 있어서, 운영 시스템 소프트웨어(미도시)는 프로세서(804)를 이용해 컴퓨터 시스템(802)에서 실행되는 다양한 소프트웨어들을 위한 운영 환경을 제공하고, 또한 컴퓨터 시스템(802)의 컴포넌트들의 다른 기능들을 관리한다.
통신 채널(들)(808)은 통신 매체 상의 통신을 다양한 다른 컴퓨팅 엔터티들에게 허용한다. 통신 매체는 프로그램 지시들, 또는 통신 매체 내의 다른 데이터와 같은 정보를 제공한다. 통신 매체는, 이에 한정되지는 않지만, 전기적, 광학적, RF, 적외선, 음향, 마이크로파, 블루투스 또는 다른 전송 매체로 구현되는 유선 또는 무선 방법론들을 포함한다.
입력 장치(들)(810)은 이에 한정되지는 않지만, 터치 스크린, 키보드, 마우스, 펜, 조이스틱, 트랙볼, 보이스 장치, 스캐닝 장치, 또는 컴퓨터 시스템(802)으로 입력을 제공할 수 있는 다른 장치를 포함할 수 있다. 본 발명의 일 실시예에 있어서, 입력 장치(들)(810)은 사운드 카드 또는 오디오 입력을 아날로그 또는 디지털 형태로 받는 유사한 장치일 수 있다. 출력 장치(들)(812)은 이에 한정되지는 않지만, CRT, LCD, LED 디스플레이, 또는 또는 서버들, 데스크탑들, 랩탑들, 태블릿들, 스마트 폰들, 모바일 폰들, 모바일 통신 장치들, 태블릿들, 패블릿들 및 PDA들와 연관된 다른 디스플레이 상의 사용자 인터페이스, 프린터, 스피커, CD/DVD 기록기, 또는 컴퓨터 시스템(802)으로부터 출력을 제공하는 다른 장치를 포함할 수 있다.
저장소(814)는 이에 한정되지는 않지만, 자기 디스크들, 자기 테이프들, CD-ROM들, CD-RW들, DVD들, 컴퓨터 메모리 종류들, 자기 스트립들, 스마트 카드들, 인쇄된 바코드들 또는 정보를 저장하는 데 사용될 수 있고 컴퓨터 시스템(802)에 의해 접근가능한 다른 일시적 또는 비일시적 매체를 포함할 수 있다. 본 발명의 다양한 실시예들에 있어서, 저장소(814)는 상술된 실시예들 중 어느 하나를 구현하기 위한 프로그램 지시들을 포함할 수 있다.
본 발명의 일 실시예에 있어서, 컴퓨터 시스템(802)은 분산 네트워크의 일부 또는 이용가능한 클라우드 리소스들의 세트 중 일부이다.
본 발명은 컴퓨터 판독가능 저장 매체 또는 프로그래밍 지시들이 원격 위치로부터 통신되는 컴퓨터 네트워크와 같은 시스템, 방법, 또는 컴퓨터 프로그램 제품을 포함하는 다양한 방법들로 구현될 수 있다.
본 발명은 컴퓨터 시스템(802)을 이용해 이용되기 위한 컴퓨터 프로그램 제품으로 적절하게 구현될 수 있다. 여기서 기술되는 방법은 통상적으로 컴퓨터 시스템(802) 또는 다른 유사한 장치에 의해 실행되는 프로그램 지시들의 세트를 포함하는, 컴퓨터 프로그램 제품으로 구현된다. 프로그램 지시들의 세트는 예를 들어, 디스켓, CD-ROM, ROM, 플래쉬 드라이브들 또는 하드 디스크와 같은, 컴퓨터 판독가능 저장 매체(저장소(814))와 같이, 유형의 매체 상에 저장되거나, 또는 모뎀 또는 다른 인터페이스 장치를 통해, 이에 한정되지는 않지만 광학적 또는 아날로그 통신 채널(들)(808)을 포함하는 실재 매체 상으로, 컴퓨터 시스템(802)에 전송가능한, 일련의 컴퓨터 판독가능 코드들일 수 있다. 컴퓨터 프로그램 제품으로서의 본 발명의 구현은, 이에 한정되지 않지만 극초단파, 적외선, 블루투스 또는 다른 전송 기술들을 포함하는, 무선 기술들을 이용하는 무형의 형태일 수 있다. 이 지시들은 시스템에 미리 로딩되거나 또는 CD-ROM과 같은 저장 매체 상에 기록되거나, 또는 인터넷 또는 이동 전화 네트워크과 같은 네트워크 상에서 다운로딩될 수 있다. 일련의 컴퓨터 판독가능 지시들은 여기서 이전에 설명된 기능의 전부 또는 일부를 포함할 수 있다.
이에 따라 본 발명은 소프트웨어 어플리케이션이 실행되는 컴퓨팅 장치에 통신가능하게 결합된 하나 또는 그 이상의 컨트롤러들 또는 사용자 인터페이스들로부터 수신된 입력들을, 해당 소프트웨어 어플리케이션이 인식하도록 구성된 하나 또는 그 이상의 지시들 또는 이벤트들에 매핑하는 효과적인 솔루션들을 제공한다.
본 발명의 예시적인 실시예들이 여기서 도시되고 설명되었지만, 이는 단지 설명하기 위한 것임이 이해될 것이다. 당업자라면 형태 및 상세에 있어서 다양한 변형들이 첨부된 청구항들에 의해 정의되는 본 발명의 사상 및 범위를 벗어나거나 이에 위배되지 않으면서 수행될 수 있음을 이해할 것이다. 추가적으로, 여기에 예시적으로 개시된 본 발명은 여기서 상세하게 개시되지 않은 요소 없이 적절하게 실행될 수 있고 - 상세하게 고찰된 특정 실시예에 있어서, 여기서 상세하게 개시되지 않은 요소 없이 실행하고자 의도된 것이다.

Claims (25)

  1. 하나 또는 그 이상의 프로세서들에서 구현되는, 입력들을 소프트웨어 어플리케이션에 매핑하는 방법에 있어서,
    입력 장치를 통해 생성될 수 있는 입력 이벤트들의 제1 세트를, 상기 소프트웨어 어플리케이션에 의해 인식되는 입력 이벤트들의 제2 세트와 상관시키는 키맵을 수신하는 단계, 이때 상기 입력 이벤트들의 제2 세트는 상기 입력 이벤트들의 제1 세트 내에 포함되지 않는 하나 또는 그 이상의 입력 이벤트들을 포함하고;
    상기 입력 장치들의 제1 세트 내의 입력 장치로부터, 상기 입력 이벤트들의 제1 세트 내의 제1 입력 이벤트와 연관된 제1 데이터 신호를 수신하는 단계;
    상기 수신된 키맵에 기초하여, 상기 입력 이벤트들의 제2 세트 내의 제2 입력 이벤트를 확인하는 단계, 이때 상기 제2 입력 이벤트는 상기 수신된 키맵에 의해 상기 제1 입력 이벤트에 매핑되고;
    제2 데이터 신호를 생성하는 단계, 이때 상기 제2 데이터 신호는 상기 제2 입력 이벤트에 대응하는 소프트웨어 어플리케이션에 의해 인식가능하고; 및
    상기 제2 데이터 신호에 기초하여 상기 소프트웨어 어플리케이션에 있어서의 상태 변화를 구현하는 단계를 포함하는, 방법.
  2. 제 1 항에 있어서, 상기 소프트웨어 어플리케이션에서 구현되는 상기 상태 변화는 상기 소프트웨어 어플리케이션에 의해 제어되는 출력 장치에 있어서의 대응하는 상태 변화를 인스턴스화하는, 방법.
  3. 제 2 항에 있어서, 상기 출력 장치는 디스플레이, 스피커, 헤드폰, 시각적 피드백 장치, 청각적 피드백 장치, 조명 장치, 촉각적 피드백 장치, 햅틱 피드백 장치, 또는 감각적 피드백 장치 중 어느 하나인, 방법.
  4. 제 1 항에 있어서, (ⅰ) 상기 입력 이벤트들의 제1 세트는 상기 소프트웨어 어플리케이션에 의해 인식되지 않거나, 또는 (ⅱ) 상기 소프트웨어 어플리케이션에 의한 상기 입력 이벤트들의 제1 세트와 연관된 소프트웨어 응답은 상기 소프트웨어 어플리케이션에 의한 상기 입력 이벤트들의 제2 세트와 연관된 소프트웨어 응답과 다른, 방법.
  5. 제 1 항에 있어서,
    상기 소프트웨어 어플리케이션은 호스트 운영 시스템 내에 구현된 게스트 운영 시스템의 인스턴스 내에서 실행되고, 이때 상기 게스트 운영 시스템과 상기 호스트 운영 시스템은 서로 다르고;
    상기 입력 이벤트들의 제1 세트는 상기 호스트 운영 시스템 내에서 실행되고 또한 이와 양립가능한 하드웨어 장치 드라이버에 의해 인식가능하고; 및
    상기 입력 이벤트들의 제2 세트는 (ⅰ) 상기 게스트 운영 시스템의 인스턴스 내에서 실행되는 상기 소프트웨어 어플리케이션에 의해 인식가능하거나 또는 (ⅱ) 상기 게스트 운영 시스템의 운영 시스템 커넬 내의 하드웨어 장치 드라이버에 의해 인식되거나; 또는 (ⅲ) 상기 게스트 운영 시스템에 의해 인식되는, 방법.
  6. 제 5 항에 있어서, 상기 제2 데이터 신호는 상기 호스트 운영 시스템 내에 구현된 상기 게스트 운영 시스템의 인스턴스를 인스턴스화하고 제어하는 호스트 운영 시스템 어플리케이션 소프트웨어로부터 상기 게스트 운영 시스템 내의 상기 소프트웨어 어플리케이션으로 전송되는, 방법.
  7. 제 1 항에 있어서,
    상기 소프트웨어 어플리케이션에 의해 제어되는 디스플레이 상에
    상기 소프트웨어 어플리케이션의 상태에 의해 정의되거나 또는 이에 기초하여 선택되는 그래픽 객체들의 제1 세트; 및
    상기 그래픽 객체들의 제1 세트 내의 하나 또는 그 이상의 그래픽 객체들 상에 중첩되는 그래픽 객체들의 제2 세트를 생성하는 단계를 더 포함하고, 이때 상기 그래픽 객체들의 제2 세트 내의 하나 또는 그 이상의 그래픽 객체들은 상기 입력 이벤트들의 제1 세트 내의 하나 또는 그 이상의 입력 이벤트들을 나타내는, 방법.
  8. 제 7 항에 있어서, 상기 그래픽 객체들의 제2 세트는
    상기 수신된 키맵으로부터 검색되는 하나 또는 그 이상의 요소들의 시각적 표현; 또는
    상기 입력 이벤트들 내의 입력 이벤트들을 생성하는 것을 가능하게 해주는 하나 또는 그 이상의 입력 제어들의 시각적 표현을 포함하는, 방법.
  9. 제 8 항에 있어서,
    상기 입력 이벤트들의 제2 세트 내의 하나 또는 그 이상의 입력 이벤트들은 터치스크린 인터페이스를 통해 촉발되는 터치프레스 이벤트들이고; 및
    상기 그래픽 객체들의 제2 세트 내의 그래픽 객체는 터치스크린 디스플레이 상에, 상기 입력 이벤트들의 제2 세트 내의 터치프레스 이벤트를 촉발하기 위해 상기 소프트웨어 어플리케이션에 의해 정의되었던 상기 디스플레이 스크린의 영역에 대하여 정의된 위치에서, 중첩되고, 그 터치프레스 이벤트는 해당 그래픽 객체에 대응하는 상기 입력 이벤트들의 제1 세트 내의 입력 이벤트와 상기 수신된 키맵에 의해 상관되는, 방법.
  10. 제 1 항에 있어서,
    상기 수신된 키맵은 복수의 키맵들 중 선택되고;
    상기 수신된 키맵의 선택은 하나 또는 그 이상의 미리 정의된 상태 변수들의 검출에 대한 응답이고,
    상기 하나 또는 그 이상의 미리 정의된 상태 변수들은 하드웨어 또는 소프트웨어 상태 변수들인, 방법.
  11. 제 10 항에 있어서, 상기 검출된 하나 또는 그 이상의 미리 정의된 상태 변수들은 시각적 디스플레이 상태 변수, 오디오 상태 변수, 메모리에 저장된 데이터에 대응하는 상태 변수, 네트워크를 통해 수신된 데이터에 대응하는 상태 변수, 하드웨어 장치로부터 수신된 입력에 대응하는 상태 변수, 또는 상기 소프트웨어 어플리케이션의 실행과 연관된 컴퓨팅 시스템 또는 컴퓨팅 시스템 환경에 대응하는 상태 변수 중 어느 하나를 포함하는, 방법.
  12. 제 10 항에 있어서, 상기 소프트웨어 어플리케이션은 호스트 운영 시스템 내에 구현된 게스트 운영 시스템의 인스턴스 내에서 실행되고,
    상기 게스트 운영 시스템과 상기 호스트 운영 시스템은 서로 다르고;
    상기 입력 이벤트들의 제1 세트는 상기 호스트 운영 시스템 내에서 실행되고 또한 이와 양립가능한 하드웨어 장치 드라이버에 의해 인식가능하고;
    상기 입력 이벤트들의 제2 세트는 (ⅰ) 상기 게스트 운영 시스템의 인스턴스 내에서 실행되는 상기 소프트웨어 어플리케이션에 의해 인식가능하거나 또는 (ⅱ) 상기 게스트 운영 시스템의 운영 시스템 커넬 내의 하드웨어 장치 드라이버에 의해 인식되거나; 또는 (ⅲ) 상기 게스트 운영 시스템에 의해 인식되고; 및
    상기 검출된 상태 변수들 중 하나 또는 그 이상은
    상기 게스트 운영 시스템의 인스턴스 내의 어플리케이션 프레임워크 층;
    상기 게스트 운영 시스템의 인스턴스 내의 라이브러리 층;
    상기 게스트 운영 시스템의 인스턴스 내의 하드웨어 추상 층;
    상기 게스트 운영 시스템 내의 어플리케이션 프로그램 층 내에서 실행되는 어플리케이션 프로그램;
    상기 게스트 운영 시스템의 인스턴스와, 상기 호스트 운영 시스템과 함께 구현되는 게스트 운영 시스템의 인스턴스를 인스턴스화하고 제어하는 호스트 운영 시스템 어플리케이션 소프트웨어 사이에 설립되는 데이터 채널을 통한 상기 호스트 운영 시스템; 또는
    호스트 운영 시스템 장치 드라이버로부터의 상기 호스트 운영 시스템 어플리케이션 소프트웨어
    중 어느 하나로, 또는 이로부터 수신된 데이터, 요청 또는 지시에 기초하여 검출되는, 방법.
  13. 입력들을 소프트웨어 어플리케이션에 매핑하는 시스템에 있어서,
    입력 장치를 통해 생성될 수 있는 입력 이벤트들의 제1 세트를, 상기 소프트웨어 어플리케이션에 의해 인식되는 입력 이벤트들의 제2 세트와 상관시키는 키맵을 수신하고, 이때 상기 입력 이벤트들의 제2 세트는 상기 입력 이벤트들의 제1 세트 내에 포함되지 않는 하나 또는 그 이상의 입력 이벤트들을 포함하고;
    상기 입력 장치들의 제1 세트 내의 입력 장치로부터, 상기 입력 이벤트들의 제1 세트 내의 제1 입력 이벤트와 연관된 제1 데이터 신호를 수신하고;
    상기 수신된 키맵에 기초하여, 상기 입력 이벤트들의 제2 세트 내의 제2 입력 이벤트를 확인하고, 이때 상기 제2 입력 이벤트는 상기 수신된 키맵에 의해 상기 제1 입력 이벤트에 매핑되고;
    제2 데이터 신호를 생성하고, 이때 상기 제2 데이터 신호는 상기 제2 입력 이벤트에 대응하는 소프트웨어 어플리케이션에 의해 인식가능하고; 및
    상기 제2 데이터 신호에 기초하여 상기 소프트웨어 어플리케이션에 있어서의 상태 변화를 구현하도록 구성되는 프로세서 구현 컴퓨팅 시스템을 포함하는 시스템.
  14. 제 12 항에 있어서, 상기 소프트웨어 어플리케이션에서 구현되는 상기 상태 변화는 상기 소프트웨어 어플리케이션에 의해 제어되는 출력 장치에 있어서의 대응하는 상태 변화를 인스턴스화하는, 시스템.
  15. 제 14 항에 있어서, 상기 출력 장치는 디스플레이, 스피커, 헤드폰, 시각적 피드백 장치, 청각적 피드백 장치, 조명 장치, 촉각적 피드백 장치, 햅틱 피드백 장치, 또는 감각적 피드백 장치 중 어느 하나인, 시스템.
  16. 제 13 항에 있어서, (ⅰ) 상기 입력 이벤트들의 제1 세트는 상기 소프트웨어 어플리케이션에 의해 인식되지 않거나, 또는 (ⅱ) 상기 소프트웨어 어플리케이션에 의한 상기 입력 이벤트들의 제1 세트와 연관된 소프트웨어 응답은 상기 소프트웨어 어플리케이션에 의해 상기 입력 이벤트들의 제2 세트와 연관된 소프트웨어 응답과 다른, 시스템.
  17. 제 13 항에 있어서,
    상기 소프트웨어 어플리케이션은 호스트 운영 시스템 내에 구현된 게스트 운영 시스템의 인스턴스 내에서 실행되고, 이때 상기 게스트 운영 시스템과 상기 호스트 운영 시스템은 서로 다르고;
    상기 입력 이벤트들의 제1 세트는 상기 호스트 운영 시스템 내에서 실행되고 또한 이와 양립가능한 하드웨어 장치 드라이버에 의해 인식가능하고; 및
    상기 입력 이벤트들의 제2 세트는 (ⅰ) 상기 게스트 운영 시스템의 인스턴스 내에서 실행되는 상기 소프트웨어 어플리케이션에 의해 인식가능하거나 또는 (ⅱ) 상기 게스트 운영 시스템의 운영 시스템 커넬 내의 하드웨어 장치 드라이버에 의해 인식되거나; 또는 (ⅲ) 상기 게스트 운영 시스템에 의해 인식되는, 시스템.
  18. 제 17 항에 있어서, 상기 제2 데이터 신호는 상기 호스트 운영 시스템 내에 구현된 상기 게스트 운영 시스템의 인스턴스를 인스턴스화하고 제어하는 호스트 운영 시스템 어플리케이션 소프트웨어로부터 상기 게스트 운영 시스템 내의 상기 소프트웨어 어플리케이션으로 전송되는, 시스템.
  19. 제 13 항에 있어서,
    상기 소프트웨어 어플리케이션에 의해 제어되는 디스플레이 상에
    상기 소프트웨어 어플리케이션의 상태에 의해 정의되거나 또는 이에 기초하여 선택되는 그래픽 객체들의 제1 세트; 및
    상기 그래픽 객체들의 제1 세트 내의 하나 또는 그 이상의 그래픽 객체들 상에 중첩되는 그래픽 객체들의 제2 세트를 생성하도록 구성되고, 이때 상기 그래픽 객체들의 제2 세트 내의 하나 또는 그 이상의 그래픽 객체들은 상기 입력 이벤트들의 제1 세트 내의 하나 또는 그 이상의 입력 이벤트들을 나타내는, 시스템.
  20. 제 19 항에 있어서, 상기 그래픽 객체들의 제2 세트는
    상기 수신된 키맵으로부터 검색되는 하나 또는 그 이상의 요소들의 시각적 표현; 또는
    상기 입력 이벤트들 내의 입력 이벤트들을 생성하는 것을 가능하게 해주는 하나 또는 그 이상의 입력 제어들의 시각적 표현을 포함하는, 시스템.
  21. 제 20 항에 있어서,
    상기 입력 이벤트들의 제2 세트 내의 하나 또는 그 이상의 입력 이벤트들은 터치스크린 인터페이스를 통해 촉발되는 터치프레스 이벤트들이고; 및
    상기 그래픽 객체들의 제2 세트 내의 그래픽 객체는 터치스크린 디스플레이 상에, 상기 입력 이벤트들의 제2 세트 내의 터치프레스 이벤트를 촉발하기 위해 상기 소프트웨어 어플리케이션에 의해 정의되었던 상기 디스플레이 스크린의 영역에 대하여 정의된 위치에서, 중첩되고, 그 터치프레스 이벤트는 해당 그래픽 객체에 대응하는 상기 입력 이벤트들의 제1 세트 내의 입력 이벤트와 상기 수신된 키맵에 의해 상관되는, 시스템.
  22. 제 12 항에 있어서,
    상기 수신된 키맵은 복수의 키맵들 중 선택되고;
    상기 수신된 키맵의 선택은 하나 또는 그 이상의 미리 정의된 상태 변수들의 검출에 대한 응답이고,
    상기 하나 또는 그 이상의 미리 정의된 상태 변수들은 하드웨어 또는 소프트웨어 상태 변수들인, 시스템.
  23. 제 22 항에 있어서, 상기 검출된 하나 또는 그 이상의 미리 정의된 상태 변수들은 시각적 디스플레이 상태 변수, 오디오 상태 변수, 메모리에 저장된 데이터에 대응하는 상태 변수, 네트워크를 통해 수신된 데이터에 대응하는 상태 변수, 하드웨어 장치로부터 수시된 입력에 대응하는 상태 변수, 또는 상기 소프트웨어 어플리케이션의 실행과 연관된 컴퓨팅 시스템 또는 컴퓨팅 시스템 환경에 대응하는 상태 변수 중 어느 하나를 포함하는, 시스템.
  24. 제 22 항에 있어서, 상기 소프트웨어 어플리케이션은 호스트 운영 시스템 내에 구현된 게스트 운영 시스템의 인스턴스 내에서 실행되고,
    상기 게스트 운영 시스템과 상기 호스트 운영 시스템은 서로 다르고;
    상기 입력 이벤트들의 제1 세트는 상기 호스트 운영 시스템 내에서 실행되고 또한 이와 양립가능한 하드웨어 장치 드라이버에 의해 인식가능하고;
    상기 입력 이벤트들의 제2 세트는 (ⅰ) 상기 게스트 운영 시스템의 인스턴스 내에서 실행되는 상기 소프트웨어 어플리케이션에 의해 인식가능하거나 또는 (ⅱ) 상기 게스트 운영 시스템의 운영 시스템 커넬 내의 하드웨어 장치 드라이버에 의해 인식되거나; 또는 (ⅲ) 상기 게스트 운영 시스템에 의해 인식되고; 및
    상기 검출된 상태 변수들 중 하나 또는 그 이상은
    상기 게스트 운영 시스템의 인스턴스 내의 어플리케이션 프레임워크 층;
    상기 게스트 운영 시스템의 인스턴스 내의 라이브러리 층;
    상기 게스트 운영 시스템의 인스턴스 내의 하드웨어 추상 층;
    상기 게스트 운영 시스템 내의 어플리케이션 프로그램 층 내에서 실행되는 어플리케이션 프로그램;
    상기 게스트 운영 시스템의 인스턴스와, 상기 호스트 운영 시스템과 함께 구현되는 게스트 운영 시스템의 인스턴스를 인스턴스화하고 제어하는 호스트 운영 시스템 어플리케이션 소프트웨어 사이에 설립되는 데이터 채널을 통한 상기 호스트 운영 시스템; 또는
    호스트 운영 시스템 장치 드라이버로부터의 상기 호스트 운영 시스템 어플리케이션 소프트웨어
    중 어느 하나로, 또는 이로부터 수신된 데이터, 요청 또는 지시에 기초하여 검출되는, 시스템.
  25. 입력들을 소프트웨어 어플리케이션에 매핑하는 컴퓨터 프로그램 제품에 있어서, 상기 컴퓨터 프로그램 제품은 그 안에 구현되어 있는 컴퓨터 판독가능 프로그램 코드를 갖는 비일시적인 컴퓨터 사용가능 매체를 포함하고, 상기 컴퓨터 판독가능 프로그램 코드는 프로세서에서 이하의 단계들을 구현하기 위한 지시들을 포함하고, 상기 단계들은
    입력 장치를 통해 생성될 수 있는 입력 이벤트들의 제1 세트를, 상기 소프트웨어 어플리케이션에 의해 인식되는 입력 이벤트들의 제2 세트와 상관시키는 키맵을 수신하는 단계, 이때 상기 입력 이벤트들의 제2 세트는 상기 입력 이벤트들의 제1 세트 내에 포함되지 않는 하나 또는 그 이상의 입력 이벤트들을 포함하고;
    상기 입력 장치들의 제1 세트 내의 입력 장치로부터, 상기 입력 이벤트들의 제1 세트 내의 제1 입력 이벤트와 연관된 제1 데이터 신호를 수신하는 단계;
    상기 수신된 키맵에 기초하여, 상기 입력 이벤트들의 제2 세트 내의 제2 입력 이벤트를 확인하는 단계, 상기 제2 입력 이벤트는 상기 수신된 키맵에 의해 상기 제1 입력 이벤트에 매핑되고;
    제2 데이터 신호를 생성하는 단계, 이때 상기 제2 데이터 신호는 상기 제2 입력 이벤트에 대응하는 소프트웨어 어플리케이션에 의해 인식가능하고; 및
    상기 제2 데이터 신호에 기초하여 상기 소프트웨어 어플리케이션에 있어서의 상태 변화를 구현하는 단계를 포함하는, 컴퓨터 프로그램 제품.
KR1020217001881A 2018-06-21 2019-06-20 입력들을 소프트웨어 어플리케이션에 매핑하는 방법, 시스템 및 컴퓨터 프로그램 제품 KR20210045388A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862688001P 2018-06-21 2018-06-21
US62/688,001 2018-06-21
PCT/IB2019/055196 WO2019244089A2 (en) 2018-06-21 2019-06-20 Methods, systems and computer program products for mapping inputs to a software application

Publications (1)

Publication Number Publication Date
KR20210045388A true KR20210045388A (ko) 2021-04-26

Family

ID=68981762

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217001881A KR20210045388A (ko) 2018-06-21 2019-06-20 입력들을 소프트웨어 어플리케이션에 매핑하는 방법, 시스템 및 컴퓨터 프로그램 제품

Country Status (6)

Country Link
US (1) US11169687B2 (ko)
EP (1) EP3811188A4 (ko)
JP (1) JP2021528763A (ko)
KR (1) KR20210045388A (ko)
SG (1) SG11202012618QA (ko)
WO (1) WO2019244089A2 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USD934345S1 (en) 2019-07-30 2021-10-26 Sony Interactive Entertainment Inc. Controller add-on device
US11103774B2 (en) * 2019-07-30 2021-08-31 Sony Interactive Entertainment Inc. Method for providing customized button mapping pre-sets
US10940385B2 (en) 2019-07-30 2021-03-09 Sony Interactive Entertainment Inc. Controller add-on device with customizable presets
US10967254B2 (en) * 2019-07-30 2021-04-06 Sony Interactive Entertainment Inc. Customizable controller add-on system
CN114475710B (zh) * 2021-12-30 2023-09-08 卡斯柯信号有限公司 一种基于图形组态的设备状态显示方法、设备及存储介质
CN116974634A (zh) * 2022-04-28 2023-10-31 华为技术有限公司 外设控制方法、电子设备及系统
GB2620789A (en) * 2022-07-22 2024-01-24 Sony Interactive Entertainment Inc An entertainment system, a method and a computer program

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01209538A (ja) * 1988-02-16 1989-08-23 Nec Corp 仮想計算機システムの制御方法
US6213880B1 (en) * 1997-11-14 2001-04-10 Creative Technology, Ltd. Game pad apparatus and method for navigation on a digital video disk (DVD) system
US6429793B1 (en) 1998-12-03 2002-08-06 International Business Machines Corporation Abstraction of input mapping for keyboards
US7116310B1 (en) 1999-04-06 2006-10-03 Microsoft Corporation Application programming interface that maps input device controls to software actions
US6727884B1 (en) * 1999-04-06 2004-04-27 Microsoft Corporation System and method for mapping input device controls to software actions
US6814510B1 (en) * 2000-08-02 2004-11-09 Xerox Corporation Method and apparatus for automatic update of a printer driver configuration and status
US7631124B2 (en) * 2007-04-06 2009-12-08 Microsoft Corporation Application-specific mapping of input device elements
US7973232B2 (en) * 2007-09-11 2011-07-05 Apple Inc. Simulating several instruments using a single virtual instrument
US8313377B2 (en) * 2009-10-14 2012-11-20 Sony Computer Entertainment America Llc Playing browser based games with alternative controls and interfaces
EP2686755B1 (en) 2011-03-17 2020-10-14 Laubach, Kevin Input device enhanced interface
CA2831135A1 (en) * 2011-03-31 2012-10-04 Coral Networks, Inc. System and method for the structuring and interpretation of organic computer programs
US9445392B1 (en) * 2011-10-07 2016-09-13 BlueStack Systems, Inc. Method of providing non-native notifications and system thereof
EP2771767B1 (en) * 2011-10-28 2017-07-19 BlackBerry Limited Systems and methods of using input events on electronic devices
US9389679B2 (en) * 2011-11-30 2016-07-12 Microsoft Technology Licensing, Llc Application programming interface for a multi-pointer indirect touch input device
US10268477B1 (en) * 2018-05-30 2019-04-23 Microsoft Technology Licensing, Llc Modeling lifetime of hybrid software application using application manifest

Also Published As

Publication number Publication date
SG11202012618QA (en) 2021-01-28
WO2019244089A3 (en) 2020-04-23
JP2021528763A (ja) 2021-10-21
EP3811188A4 (en) 2022-03-16
US20190391719A1 (en) 2019-12-26
WO2019244089A2 (en) 2019-12-26
EP3811188A2 (en) 2021-04-28
US11169687B2 (en) 2021-11-09

Similar Documents

Publication Publication Date Title
KR20210045388A (ko) 입력들을 소프트웨어 어플리케이션에 매핑하는 방법, 시스템 및 컴퓨터 프로그램 제품
US11559736B2 (en) Response method, apparatus and terminal to a control
JP5951638B2 (ja) タッチディスプレイ用仮想コントローラ
US8409002B2 (en) Common controller
CA3008943C (en) Graphical user interface for a gaming system
US20110028194A1 (en) System and method for unified-context mapping of physical input device controls to application program actions
TWI536246B (zh) 呈現視覺介面內容的系統及其方法
JP6005831B1 (ja) プログラム及び情報処理方法
CN107930122A (zh) 信息处理方法、装置及存储介质
US20010045935A1 (en) Command of force sensations in a force feedback system using force effect suites
JP2012524356A (ja) コンテキストに基づく適応入力デバイスの状態変化
JP2022539288A (ja) 仮想オブジェクトの制御方法、装置、機器及びコンピュータプログラム
CN105474160A (zh) 高性能触摸拖放
US9804864B1 (en) Method of mapping inputs and system thereof
CN107899246A (zh) 信息处理方法、装置、电子设备及存储介质
CN109316745A (zh) 虚拟对象运动控制方法及装置、电子设备、存储介质
CN110673810B (zh) 显示设备及其显示方法、装置、存储介质和处理器
KR20200113834A (ko) 애플리케이션 정보 제공 장치 및 방법
KR102341393B1 (ko) 온라인 서비스 접속 제어 장치 및 방법
CN117015757A (zh) 虚拟化的物理控制器
KR102584901B1 (ko) 이벤트 정보 송신 장치 및 방법, 이벤트 정보 출력 장치 및 방법
US20220066605A1 (en) Methods, Systems and Computer Program Products for Enabling Scrolling Within a Software Application
US20240173616A1 (en) Controller state management for client-server networking
KR20190131673A (ko) 타겟 객체 선택 방법 및 이를 수행하기 위한 게이밍 디바이스
WO2024060924A1 (zh) 虚拟场景的互动处理方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal