KR20210045388A - 입력들을 소프트웨어 어플리케이션에 매핑하는 방법, 시스템 및 컴퓨터 프로그램 제품 - Google Patents
입력들을 소프트웨어 어플리케이션에 매핑하는 방법, 시스템 및 컴퓨터 프로그램 제품 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims description 64
- 238000013507 mapping Methods 0.000 title claims description 43
- 238000004590 computer program Methods 0.000 title claims description 9
- 230000008859 change Effects 0.000 claims abstract description 23
- 230000000875 corresponding effect Effects 0.000 claims description 45
- 238000001514 detection method Methods 0.000 claims description 43
- 230000000007 visual effect Effects 0.000 claims description 35
- 230000004044 response Effects 0.000 claims description 32
- 230000001953 sensory effect Effects 0.000 claims description 5
- 230000002596 correlated effect Effects 0.000 claims description 4
- 230000001960 triggered effect Effects 0.000 claims description 4
- 230000001276 controlling effect Effects 0.000 claims 2
- 230000006870 function Effects 0.000 description 22
- 238000004891 communication Methods 0.000 description 16
- 230000003044 adaptive effect Effects 0.000 description 10
- 238000006243 chemical reaction Methods 0.000 description 7
- 241000699666 Mus <mouse, genus> Species 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 238000012790 confirmation Methods 0.000 description 3
- 238000010304 firing Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 229920001690 polydopamine Polymers 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000030808 detection of mechanical stimulus involved in sensory perception of sound Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000035484 reaction time Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0487—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
- G06F3/0488—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/016—Input arrangements with force or tactile feedback as computer generated output to the user
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/02—Input arrangements using manually operated switches, e.g. using keyboards or dials
- G06F3/0227—Cooperation and interconnection of the input arrangement with other functional units of a computer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/02—Input arrangements using manually operated switches, e.g. using keyboards or dials
- G06F3/023—Arrangements 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/0238—Programmable keyboards
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/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은 본 발명을 구현하는 데 이용될 수 있는 타입의 예시적인 컴퓨팅 시스템을 보여준다.
도 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 키맵으로의 전환을 개시하기 위해 이용될 수 있는 예시적인 상태 변화들은 그래픽 상태 / 시각적 디스플레이 상태, 오디오 상태, 디스크 상의 어플리케이션 데이터 / 게임 데이터의 상태, 네트워크를 통해 수신된 데이터의 상태, 또는 클라우드로부터 수신된 입력의 상태 중 하나 또는 그 이상에 있어서의 상태 변화들을 포함한다. 이 상태 변화들 각각은 이하에서 간단히 설명된다.
그래픽 상태 / 시각적 디스플레이 상태에 기초한 키맵 전환 - 일 실시예에 있어서, 특정 키맵/키맵 프로파일의 선택은 (ⅰ) 미리 정의된 디스플레이 스크린(들), (ⅱ) 스크린 상에 디스플레이되는 미리 정의된 그래픽 객체들 또는 (ⅲ) 정의된 조건들의 세트를 충족시키는 방식으로 디스플레이되는 미리 정의된 그래픽 객체들의 조합의 검출에 응답할 수 있다. 예를 들어, 일인칭 슈팅 게임을 포함하는 소프트웨어 어플리케이션에 있어서, 제1 키맵은 키보드 키 "d"를 캐릭터의 무기를 투하하는 것에 연관시킬 수 있는 한편, 제2 키맵은 동일한 키보드 키 "d"를 차량을 운전하는 것에 연관시킬 수 있다. 이 실시예에 있어서, 제1 키맵은 캐릭터가 무기를 소지하고 있는 것으로 디스플레이되는 한 선택되는 디폴트 키맵일 수 있지만, 캐릭터가 차량으로부터 미리 정의된 거리 내에 스크린 상에 위치될 때 시스템은 제1 키맵에서 제2 키맵으로 자동으로 전환할 수 있다.
오디오 상태에 기초한 키맵 전환 - 일 실시예에 있어서, 특정 키맵/키맵 프로파일의 선택은 사용자에게 재생하기 위해 소프트웨어 어플리케이션에 의해 오디오 컨트롤러로 또는 소프트웨어 어플리케이션으로부터 수신된 지시들의 실행의 인정 또는 확인으로서 오디오 컨트롤러로부터 다시 소프트웨어 어플리케이션으로 통신되는 미리 정의된 사운드 데이타의 검출에 응답할 수 있다. 예를 들어, 상기에서 언급된 일인칭 슈팅 게임을 포함하는 소프트웨어 어플리케이션에 있어서, 비(rain)를 나타내는 사운드 데이터의 검출은 우천 환경에서 게임플레이 동안에만 이용될 수 있는 능력들(powers) 또는 기량들(ability)의 이용을 가능하게 하는 키맵 또는 키맵 프로파일의 선택으로 귀결될 수 있다.
디스크 상의 게임 데이터의 상태에 기초한 키맵 전환 - 일 실시예에 있어서, 특정 키맵/키맵 프로파일의 선택은 디스크 상에 저장된 데이터 변수들로부터 검색되는 하나 또는 그 이상의 소프트웨어 어플리케이션 변수들의 검출에 응답할 수 있다. 예를 들어, 특정 게임 어플리케이션에 있어서, 플레이어가 이용할 수 있는 플레이어의 기량들 및 기능들은 플레이어가 진행하고 있는 게임의 레벨/단계에 따라 달라질 수 있거나, 또는 플레이어가 축적한 경험 포인트들 또는 경험 수준에 따라 달라질 수 있다. 이 정보는 게임이 플레이되고 있는 컴퓨팅 장치의 로컬 디스크로부터 검색될 수 있고, 또한 해당 레벨/단계/경험에서 플레이어가 이용할 수 있는 모든 기량들 및 기능들의 완전한 구현을 위해 필요한 키들은 구현에 따라 선택될 수 있다.
네트워크 트래픽의 상태에 기초한 키맵 전환 - 일 실시예에 있어서, 특정 키맵/키맵 프로파일의 선택은 네트워크 상으로 수신되는 데이터 변수들로부터 검색되는 하나 또는 그 이상의 소프트웨어 어플리케이션 변수들의 검출에 응답할 수 있다. 예를 들어, 특정 게임 어플리케이션에 있어서, 플레이어가 이용할 수 있는 플레이어의 기량들 및 기능들은 플레이어가 진행하고 있는 게임의 레벨/단계에 따라 달라질 수 있거나, 또는 플레이어가 축적한 경험 포인트들 또는 경험 수준에 따라 달라질 수 있다. 이 정보는 게임 플레이 장치가 네트워크 통신하고 있는 서버로부터 주기적으로 검색될 수 있고, 또한 해당 레벨/단계/경험에서 플레이어가 이용할 수 있는 모든 기량들 및 기능들의 완전한 구현을 위해 필요한 키들은 네트워크 서버로부터 검색되는 데이터 변수들에 기초하여 구현에 따라 선택될 수 있다.
클라우드로부터 수신된 입력의 상태에 기초한 키맵 전환 - 일 실시예에 있어서, 특정 키맵/키맵 프로파일의 선택은 사용자 또는 소프트웨어 어플리케이션이 참여하는 복수의 세션들에 걸쳐 수집된 세션 데이터의 분석에 기초하여 생성되고 클라우드 서버에 저장된 하나 또는 그 이상의 데이터 변수들의 수신에 응답할 수 있다. 예를 들어, 왼손잡이 플레이어를 위한 제1 키매핑 프로파일 및 오른손잡이 플레이어를 위한 제2 키매핑 프로파일을 제공하는 특정 게임 어플리케이션에 있어서, 특정 게임 또는 게임 플랫폼 또는 소프트웨어 에뮬레이션 플랫폼과 연관된 클라우드 서버는 특정 사용자가 마지막 3 개의 세션들에서 왼손잡이용 키매핑 프로파일을 선택하였음을 검출할 수 있고 - 이 정보는 동일 사용자가 참여하는 세션 로그인 이벤트의 검출에 응답하여 개시되는 게임 플레이의 다음 세션을 위해 왼손잡이용 키매핑 프로파일을 자동으로 선택하는 데 이용될 수 있다.
일부 실시예들에 있어서 적응적 키매핑은 - 구현을 위해 적응적으로 선택된 특정 키맵(또는 특정 키맵과 연관된 정보 또는 그래픽 객체들)을 디스플레이하기 위해, 적응적 시각적 중첩에 의해 수반될 수 있음이 이해되어야 한다.
또한 일부 실시예들에 있어서, 선택 또는 적응적 선택에 이용가능한 키매핑 프로파일들 중 하나 또는 그 이상은, 하나의 입력 이벤트가 실행 시 소프트웨어 어플리케이션 내 복수의 지시들 또는 이벤트들의 실행으로 귀결되도록 정의될 수 있는, 일대다 기능(즉, 매크로 기능)을 구현하는 키맵들을 포함할 수 있음이 이해되어야 한다. 예를 들어, 다수의 무기들을 가지고 플레이어가 참여하는 게임 어플리케이션에 있어서, 하나의 키프레스 이벤트는 제1 무기를 이용한 제1 발사 이벤트, 제1 무기의 제2 무기로의 대체 및 그후 제2 무기를 이용한 제2 발사 이벤트로 구성되는 발사 조합을 촉발하도록 정의될 수 있다. 이러한 일대다 기능을 정의하는 것은, 노련한 사용자가 반응시간을 줄이고 게임플레이 결과를 개선시킬 수 있도록 그 자신의 키맵들을 정의할 수 있기 때문에, 더 효율적인 게임플레이로 귀결된다.
본 발명의 다른 실시예에 있어서, 소프트웨어 어플리케이션에 연관된, 상기에서 기술된 상태에 있어서의 변화들 중 하나 또는 그 이상의 검출은 - 예를 들어, 키보드 상의 조명 상태, 키보드 마우스 또는 터치 패드 상의 진동 상태, 디스플레이 스크린의 조명 상태 또는 조명 레벨, 또는 키보드 백라이트의 조명 상태 또는 조명 레벨을 선택 또는 변경하는 것에 의해, 시각적, 청각적 또는 햅틱 피드백을 사용자에게 제공하는 데 이용될 수 있다. 특정 실시예에 있어서, 이러한 피드백은 어플리케이션 컨트롤러(3038)에 의해 생성 및/또는 제어될 수 있고 - 이것은 차례로 그래픽 컨트롤러(3030), 오디오 컨트롤러(3032), 디스플레이 컨트롤러, 입력 장치 컨트롤러, 조명 컨트롤러, 또는 햅틱 컨트롤러 중 하나 또는 그 이상에 의존할 수 있다.
본 발명의 일 실시예에 있어서, 본 발명은 도 2에 도시된 타입의 아키텍쳐를 갖는 컴퓨팅 시스템(즉, 호스트 운영 시스템 내에서 인스턴스화된 게스트 운영 시스템의 인스턴스 상에서의 실행을 위해 구성되는 어플리케이션 소프트웨어의 실행을 가능하게 하는 컴퓨터 구현 아키텍쳐) 내에서 구현될 수 있다. 다양한 이러한 실시예들에 있어서 -
그래픽 상태 또는 시각적 디스플레이 상태에 기초한 키맵 전환은 (ⅰ) 미리 정의된 디스플레이 스크린(들), (ⅱ) 스크린 상에 디스플레이되는 미리 정의된 그래픽 객체들 또는 (ⅲ) 정의된 조건들의 세트를 만족시키는 방식으로 디스플레이되는 미리 정의된 그래픽 객체들의 조합의 검출에 응답하여 특정 키맵/키맵 프로파일의 선택을 수반할 수 있고 - 이때 상기 중 하나 또는 그 이상의 검출은
가상 머신(214) 내의 어플리케이션 프로그램 층(2142) 내에서 실행되는 어플리케이션 프로그램으로부터, 가상 머신(214) 내의 게스트 운영 시스템 어플리케이션 프레임워크 층(2144), 게스트 운영 시스템 라이브러리 층(2146), 또는 게스트 운영 시스템 하드웨어 추상 층(2148) 중 어느 하나에, 또는
수신된 데이터, 요청(들) 또는 지시(들)에 기초할 수 있다.
오디오 상태에 기초한 키맵 전환은 어플리케이션 프로그램에 의해 오디오 컨트롤러 또는 오디오 장치 드라이버로 (그 역도 마찬가지) 통신되는 미리 정의된 사운드 데이터 또는 지시들 또는 요청들의 검출에 응답하여 특정 키맵/키맵 프로파일의 선택을 수반할 수 있고 - 이때 상기 중 하나 또는 그 이상의 검출은
가상 머신(214) 내의 어플리케이션 프로그램 층(2142) 내에서 실행되는 어플리케이션 프로그램으로부터, 가상 머신(214) 내의 게스트 운영 시스템 어플리케이션 프레임워크 층(2144), 게스트 운영 시스템 라이브러리 층(2146), 또는 게스트 운영 시스템 하드웨어 추상 층(2148) 중 어느 하나에, 또는
수신된 데이터, 요청(들) 또는 지시(들)에 기초할 수 있다.
디스크 상의 게임 데이터의 상태에 기초한 키맵 전환은 디스크 상에 저장된 데이터 변수들로부터 검색된 하나 또는 그 이상의 소프트웨어 어플리케이션 변수들의 검출에 응답하여 특정 키맵/키맵 프로파일의 선택을 수반할 수 있고 - 이때 상기의 소프트웨어 변수들의 검출은
가상 머신(214) 내의 어플리케이션 프로그램 층(2142) 내에서 실행되는 어플리케이션 프로그램으로부터, 가상 머신(214) 내의 게스트 운영 시스템 어플리케이션 프레임워크 층(2144), 게스트 운영 시스템 라이브러리 층(2146), 또는 게스트 운영 시스템 하드웨어 추상 층(2148) 중 어느 하나에, 또는
수신된 데이터에 기초할 수 있다.
네트워크 트래픽의 상태에 기초한 키맵 전환은 네트워크 상으로 수신되는 데이터 변수들로부터 검색되는 하나 또는 그 이상의 소프트웨어 어플리케이션 변수들의 검출에 응답하여 특정 키맵/키맵 프로파일의 선택을 수반할 수 있고 - 이때 상기의 소프트웨어 변수들의 검출은
가상 머신(214) 내의 어플리케이션 프로그램 층(2142) 내에서 실행되는 어플리케이션 프로그램으로부터, 가상 머신(214) 내의 게스트 운영 시스템 어플리케이션 프레임워크 층(2144), 게스트 운영 시스템 라이브러리 층(2146), 또는 게스트 운영 시스템 하드웨어 추상 층(2148) 중 어느 하나에, 또는
수신된 데이터에 기초할 수 있다.
클라우드로부터 수신되는 입력의 상태에 기초한 키맵 전환은 사용자 또는 소프트웨어 어플리케이션이 참여하는 복수의 세션들에 걸쳐 수집된 세션 데이터의 분석에 기초하여 생성되고 클라우드 서버에 저장된 하나 또는 그 이상의 데이터 변수들의 검출에 응답하여 특정 키맵/키맵 프로파일의 선택을 수반할 수 있고 - 이때 상기의 소프트웨어 변수들의 검출은
가상 머신(214) 내의 어플리케이션 프로그램 층(2142) 내에서 실행되는 어플리케이션 프로그램으로부터, 가상 머신(214) 내의 게스트 운영 시스템 어플리케이션 프레임워크 층(2144), 게스트 운영 시스템 라이브러리 층(2146), 또는 게스트 운영 시스템 하드웨어 추상 층(2148) 중 어느 하나에, 또는
수신된 데이터에 기초할 수 있다.
도 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의 방법의 구현에 관련된 이러한 실시예들에 있어서 -
그래픽 상태 또는 시각적 디스플레이 상태에 기초한 키맵 전환은 (ⅰ) 미리 정의된 디스플레이 스크린(들), (ⅱ) 스크린 상에 디스플레이되는 미리 정의된 그래픽 객체들 또는 (ⅲ) 정의된 조건들의 세트를 만족시키는 방식으로 디스플레이되는 미리 정의된 그래픽 객체들의 조합의 검출에 응답하여 특정 키맵/키맵 프로파일의 선택을 수반할 수 있고 - 이때 상기 중 하나 또는 그 이상의 검출은
가상 머신(214) 내의 어플리케이션 프로그램 층(2142) 내에서 실행되는 어플리케이션 프로그램으로부터, 가상 머신(214) 내의 게스트 운영 시스템 어플리케이션 프레임워크 층(2144), 게스트 운영 시스템 라이브러리 층(2146), 또는 게스트 운영 시스템 하드웨어 추상 층(2148) 중 어느 하나에, 또는
수신된 데이터, 요청(들) 또는 지시(들)에 기초할 수 있다.
오디오 상태에 기초한 키맵 전환은 어플리케이션 프로그램에 의해 오디오 컨트롤러 또는 오디오 장치 드라이버로 (그 역도 마찬가지) 통신되는 미리 정의된 사운드 데이터 또는 지시들 또는 요청들의 검출에 응답하여 특정 키맵/키맵 프로파일의 선택을 수반할 수 있고 - 이때 상기 중 하나 또는 그 이상의 검출은
가상 머신(214) 내의 어플리케이션 프로그램 층(2142) 내에서 실행되는 어플리케이션 프로그램으로부터, 가상 머신(214) 내의 게스트 운영 시스템 어플리케이션 프레임워크 층(2144), 게스트 운영 시스템 라이브러리 층(2146), 또는 게스트 운영 시스템 하드웨어 추상 층(2148) 중 어느 하나에, 또는
수신된 데이터, 요청(들) 또는 지시(들)에 기초할 수 있다.
디스크 상의 게임 데이터의 상태에 기초한 키맵 전환은 디스크 상에 저장된 데이터 변수들로부터 검색된 하나 또는 그 이상의 소프트웨어 어플리케이션 변수들의 검출에 응답하여 특정 키맵/키맵 프로파일의 선택을 수반할 수 있고 - 이때 상기의 소프트웨어 변수들의 검출은
가상 머신(214) 내의 어플리케이션 프로그램 층(2142) 내에서 실행되는 어플리케이션 프로그램으로부터, 가상 머신(214) 내의 게스트 운영 시스템 어플리케이션 프레임워크 층(2144), 게스트 운영 시스템 라이브러리 층(2146), 또는 게스트 운영 시스템 하드웨어 추상 층(2148) 중 어느 하나에, 또는
수신된 데이터에 기초할 수 있다.
네트워크 트래픽의 상태에 기초한 키맵 전환은 네트워크 상으로 수신되는 데이터 변수들로부터 검색되는 하나 또는 그 이상의 소프트웨어 어플리케이션 변수들의 검출에 응답하여 특정 키맵/키맵 프로파일의 선택을 수반할 수 있고 - 이때 상기의 소프트웨어 변수들의 검출은
가상 머신(214) 내의 어플리케이션 프로그램 층(2142) 내에서 실행되는 어플리케이션 프로그램으로부터, 가상 머신(214) 내의 게스트 운영 시스템 어플리케이션 프레임워크 층(2144), 게스트 운영 시스템 라이브러리 층(2146), 또는 게스트 운영 시스템 하드웨어 추상 층(2148) 중 어느 하나에, 또는
수신된 데이터에 기초할 수 있다.
클라우드로부터 수신되는 입력의 상태에 기초한 키맵 전환은 사용자 또는 소프트웨어 어플리케이션이 참여하는 복수의 세션들에 걸쳐 수집된 세션 데이터의 분석에 기초하여 생성되고 클라우드 서버에 저장된 하나 또는 그 이상의 데이터 변수들의 검출에 응답하여 특정 키맵/키맵 프로파일의 선택을 수반할 수 있고 - 이때 상기의 소프트웨어 변수들의 검출은
가상 머신(214) 내의 어플리케이션 프로그램 층(2142) 내에서 실행되는 어플리케이션 프로그램으로부터, 가상 머신(214) 내의 게스트 운영 시스템 어플리케이션 프레임워크 층(2144), 게스트 운영 시스템 라이브러리 층(2146), 또는 게스트 운영 시스템 하드웨어 추상 층(2148) 중 어느 하나에, 또는
수신된 데이터에 기초할 수 있다.
도 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 세트를, 상기 소프트웨어 어플리케이션에 의해 인식되는 입력 이벤트들의 제2 세트와 상관시키는 키맵을 수신하는 단계, 이때 상기 입력 이벤트들의 제2 세트는 상기 입력 이벤트들의 제1 세트 내에 포함되지 않는 하나 또는 그 이상의 입력 이벤트들을 포함하고;
상기 입력 장치들의 제1 세트 내의 입력 장치로부터, 상기 입력 이벤트들의 제1 세트 내의 제1 입력 이벤트와 연관된 제1 데이터 신호를 수신하는 단계;
상기 수신된 키맵에 기초하여, 상기 입력 이벤트들의 제2 세트 내의 제2 입력 이벤트를 확인하는 단계, 이때 상기 제2 입력 이벤트는 상기 수신된 키맵에 의해 상기 제1 입력 이벤트에 매핑되고;
제2 데이터 신호를 생성하는 단계, 이때 상기 제2 데이터 신호는 상기 제2 입력 이벤트에 대응하는 소프트웨어 어플리케이션에 의해 인식가능하고; 및
상기 제2 데이터 신호에 기초하여 상기 소프트웨어 어플리케이션에 있어서의 상태 변화를 구현하는 단계를 포함하는, 방법. - 제 1 항에 있어서, 상기 소프트웨어 어플리케이션에서 구현되는 상기 상태 변화는 상기 소프트웨어 어플리케이션에 의해 제어되는 출력 장치에 있어서의 대응하는 상태 변화를 인스턴스화하는, 방법.
- 제 2 항에 있어서, 상기 출력 장치는 디스플레이, 스피커, 헤드폰, 시각적 피드백 장치, 청각적 피드백 장치, 조명 장치, 촉각적 피드백 장치, 햅틱 피드백 장치, 또는 감각적 피드백 장치 중 어느 하나인, 방법.
- 제 1 항에 있어서, (ⅰ) 상기 입력 이벤트들의 제1 세트는 상기 소프트웨어 어플리케이션에 의해 인식되지 않거나, 또는 (ⅱ) 상기 소프트웨어 어플리케이션에 의한 상기 입력 이벤트들의 제1 세트와 연관된 소프트웨어 응답은 상기 소프트웨어 어플리케이션에 의한 상기 입력 이벤트들의 제2 세트와 연관된 소프트웨어 응답과 다른, 방법.
- 제 1 항에 있어서,
상기 소프트웨어 어플리케이션은 호스트 운영 시스템 내에 구현된 게스트 운영 시스템의 인스턴스 내에서 실행되고, 이때 상기 게스트 운영 시스템과 상기 호스트 운영 시스템은 서로 다르고;
상기 입력 이벤트들의 제1 세트는 상기 호스트 운영 시스템 내에서 실행되고 또한 이와 양립가능한 하드웨어 장치 드라이버에 의해 인식가능하고; 및
상기 입력 이벤트들의 제2 세트는 (ⅰ) 상기 게스트 운영 시스템의 인스턴스 내에서 실행되는 상기 소프트웨어 어플리케이션에 의해 인식가능하거나 또는 (ⅱ) 상기 게스트 운영 시스템의 운영 시스템 커넬 내의 하드웨어 장치 드라이버에 의해 인식되거나; 또는 (ⅲ) 상기 게스트 운영 시스템에 의해 인식되는, 방법. - 제 5 항에 있어서, 상기 제2 데이터 신호는 상기 호스트 운영 시스템 내에 구현된 상기 게스트 운영 시스템의 인스턴스를 인스턴스화하고 제어하는 호스트 운영 시스템 어플리케이션 소프트웨어로부터 상기 게스트 운영 시스템 내의 상기 소프트웨어 어플리케이션으로 전송되는, 방법.
- 제 1 항에 있어서,
상기 소프트웨어 어플리케이션에 의해 제어되는 디스플레이 상에
상기 소프트웨어 어플리케이션의 상태에 의해 정의되거나 또는 이에 기초하여 선택되는 그래픽 객체들의 제1 세트; 및
상기 그래픽 객체들의 제1 세트 내의 하나 또는 그 이상의 그래픽 객체들 상에 중첩되는 그래픽 객체들의 제2 세트를 생성하는 단계를 더 포함하고, 이때 상기 그래픽 객체들의 제2 세트 내의 하나 또는 그 이상의 그래픽 객체들은 상기 입력 이벤트들의 제1 세트 내의 하나 또는 그 이상의 입력 이벤트들을 나타내는, 방법. - 제 7 항에 있어서, 상기 그래픽 객체들의 제2 세트는
상기 수신된 키맵으로부터 검색되는 하나 또는 그 이상의 요소들의 시각적 표현; 또는
상기 입력 이벤트들 내의 입력 이벤트들을 생성하는 것을 가능하게 해주는 하나 또는 그 이상의 입력 제어들의 시각적 표현을 포함하는, 방법. - 제 8 항에 있어서,
상기 입력 이벤트들의 제2 세트 내의 하나 또는 그 이상의 입력 이벤트들은 터치스크린 인터페이스를 통해 촉발되는 터치프레스 이벤트들이고; 및
상기 그래픽 객체들의 제2 세트 내의 그래픽 객체는 터치스크린 디스플레이 상에, 상기 입력 이벤트들의 제2 세트 내의 터치프레스 이벤트를 촉발하기 위해 상기 소프트웨어 어플리케이션에 의해 정의되었던 상기 디스플레이 스크린의 영역에 대하여 정의된 위치에서, 중첩되고, 그 터치프레스 이벤트는 해당 그래픽 객체에 대응하는 상기 입력 이벤트들의 제1 세트 내의 입력 이벤트와 상기 수신된 키맵에 의해 상관되는, 방법. - 제 1 항에 있어서,
상기 수신된 키맵은 복수의 키맵들 중 선택되고;
상기 수신된 키맵의 선택은 하나 또는 그 이상의 미리 정의된 상태 변수들의 검출에 대한 응답이고,
상기 하나 또는 그 이상의 미리 정의된 상태 변수들은 하드웨어 또는 소프트웨어 상태 변수들인, 방법. - 제 10 항에 있어서, 상기 검출된 하나 또는 그 이상의 미리 정의된 상태 변수들은 시각적 디스플레이 상태 변수, 오디오 상태 변수, 메모리에 저장된 데이터에 대응하는 상태 변수, 네트워크를 통해 수신된 데이터에 대응하는 상태 변수, 하드웨어 장치로부터 수신된 입력에 대응하는 상태 변수, 또는 상기 소프트웨어 어플리케이션의 실행과 연관된 컴퓨팅 시스템 또는 컴퓨팅 시스템 환경에 대응하는 상태 변수 중 어느 하나를 포함하는, 방법.
- 제 10 항에 있어서, 상기 소프트웨어 어플리케이션은 호스트 운영 시스템 내에 구현된 게스트 운영 시스템의 인스턴스 내에서 실행되고,
상기 게스트 운영 시스템과 상기 호스트 운영 시스템은 서로 다르고;
상기 입력 이벤트들의 제1 세트는 상기 호스트 운영 시스템 내에서 실행되고 또한 이와 양립가능한 하드웨어 장치 드라이버에 의해 인식가능하고;
상기 입력 이벤트들의 제2 세트는 (ⅰ) 상기 게스트 운영 시스템의 인스턴스 내에서 실행되는 상기 소프트웨어 어플리케이션에 의해 인식가능하거나 또는 (ⅱ) 상기 게스트 운영 시스템의 운영 시스템 커넬 내의 하드웨어 장치 드라이버에 의해 인식되거나; 또는 (ⅲ) 상기 게스트 운영 시스템에 의해 인식되고; 및
상기 검출된 상태 변수들 중 하나 또는 그 이상은
상기 게스트 운영 시스템의 인스턴스 내의 어플리케이션 프레임워크 층;
상기 게스트 운영 시스템의 인스턴스 내의 라이브러리 층;
상기 게스트 운영 시스템의 인스턴스 내의 하드웨어 추상 층;
상기 게스트 운영 시스템 내의 어플리케이션 프로그램 층 내에서 실행되는 어플리케이션 프로그램;
상기 게스트 운영 시스템의 인스턴스와, 상기 호스트 운영 시스템과 함께 구현되는 게스트 운영 시스템의 인스턴스를 인스턴스화하고 제어하는 호스트 운영 시스템 어플리케이션 소프트웨어 사이에 설립되는 데이터 채널을 통한 상기 호스트 운영 시스템; 또는
호스트 운영 시스템 장치 드라이버로부터의 상기 호스트 운영 시스템 어플리케이션 소프트웨어
중 어느 하나로, 또는 이로부터 수신된 데이터, 요청 또는 지시에 기초하여 검출되는, 방법. - 입력들을 소프트웨어 어플리케이션에 매핑하는 시스템에 있어서,
입력 장치를 통해 생성될 수 있는 입력 이벤트들의 제1 세트를, 상기 소프트웨어 어플리케이션에 의해 인식되는 입력 이벤트들의 제2 세트와 상관시키는 키맵을 수신하고, 이때 상기 입력 이벤트들의 제2 세트는 상기 입력 이벤트들의 제1 세트 내에 포함되지 않는 하나 또는 그 이상의 입력 이벤트들을 포함하고;
상기 입력 장치들의 제1 세트 내의 입력 장치로부터, 상기 입력 이벤트들의 제1 세트 내의 제1 입력 이벤트와 연관된 제1 데이터 신호를 수신하고;
상기 수신된 키맵에 기초하여, 상기 입력 이벤트들의 제2 세트 내의 제2 입력 이벤트를 확인하고, 이때 상기 제2 입력 이벤트는 상기 수신된 키맵에 의해 상기 제1 입력 이벤트에 매핑되고;
제2 데이터 신호를 생성하고, 이때 상기 제2 데이터 신호는 상기 제2 입력 이벤트에 대응하는 소프트웨어 어플리케이션에 의해 인식가능하고; 및
상기 제2 데이터 신호에 기초하여 상기 소프트웨어 어플리케이션에 있어서의 상태 변화를 구현하도록 구성되는 프로세서 구현 컴퓨팅 시스템을 포함하는 시스템. - 제 12 항에 있어서, 상기 소프트웨어 어플리케이션에서 구현되는 상기 상태 변화는 상기 소프트웨어 어플리케이션에 의해 제어되는 출력 장치에 있어서의 대응하는 상태 변화를 인스턴스화하는, 시스템.
- 제 14 항에 있어서, 상기 출력 장치는 디스플레이, 스피커, 헤드폰, 시각적 피드백 장치, 청각적 피드백 장치, 조명 장치, 촉각적 피드백 장치, 햅틱 피드백 장치, 또는 감각적 피드백 장치 중 어느 하나인, 시스템.
- 제 13 항에 있어서, (ⅰ) 상기 입력 이벤트들의 제1 세트는 상기 소프트웨어 어플리케이션에 의해 인식되지 않거나, 또는 (ⅱ) 상기 소프트웨어 어플리케이션에 의한 상기 입력 이벤트들의 제1 세트와 연관된 소프트웨어 응답은 상기 소프트웨어 어플리케이션에 의해 상기 입력 이벤트들의 제2 세트와 연관된 소프트웨어 응답과 다른, 시스템.
- 제 13 항에 있어서,
상기 소프트웨어 어플리케이션은 호스트 운영 시스템 내에 구현된 게스트 운영 시스템의 인스턴스 내에서 실행되고, 이때 상기 게스트 운영 시스템과 상기 호스트 운영 시스템은 서로 다르고;
상기 입력 이벤트들의 제1 세트는 상기 호스트 운영 시스템 내에서 실행되고 또한 이와 양립가능한 하드웨어 장치 드라이버에 의해 인식가능하고; 및
상기 입력 이벤트들의 제2 세트는 (ⅰ) 상기 게스트 운영 시스템의 인스턴스 내에서 실행되는 상기 소프트웨어 어플리케이션에 의해 인식가능하거나 또는 (ⅱ) 상기 게스트 운영 시스템의 운영 시스템 커넬 내의 하드웨어 장치 드라이버에 의해 인식되거나; 또는 (ⅲ) 상기 게스트 운영 시스템에 의해 인식되는, 시스템. - 제 17 항에 있어서, 상기 제2 데이터 신호는 상기 호스트 운영 시스템 내에 구현된 상기 게스트 운영 시스템의 인스턴스를 인스턴스화하고 제어하는 호스트 운영 시스템 어플리케이션 소프트웨어로부터 상기 게스트 운영 시스템 내의 상기 소프트웨어 어플리케이션으로 전송되는, 시스템.
- 제 13 항에 있어서,
상기 소프트웨어 어플리케이션에 의해 제어되는 디스플레이 상에
상기 소프트웨어 어플리케이션의 상태에 의해 정의되거나 또는 이에 기초하여 선택되는 그래픽 객체들의 제1 세트; 및
상기 그래픽 객체들의 제1 세트 내의 하나 또는 그 이상의 그래픽 객체들 상에 중첩되는 그래픽 객체들의 제2 세트를 생성하도록 구성되고, 이때 상기 그래픽 객체들의 제2 세트 내의 하나 또는 그 이상의 그래픽 객체들은 상기 입력 이벤트들의 제1 세트 내의 하나 또는 그 이상의 입력 이벤트들을 나타내는, 시스템. - 제 19 항에 있어서, 상기 그래픽 객체들의 제2 세트는
상기 수신된 키맵으로부터 검색되는 하나 또는 그 이상의 요소들의 시각적 표현; 또는
상기 입력 이벤트들 내의 입력 이벤트들을 생성하는 것을 가능하게 해주는 하나 또는 그 이상의 입력 제어들의 시각적 표현을 포함하는, 시스템. - 제 20 항에 있어서,
상기 입력 이벤트들의 제2 세트 내의 하나 또는 그 이상의 입력 이벤트들은 터치스크린 인터페이스를 통해 촉발되는 터치프레스 이벤트들이고; 및
상기 그래픽 객체들의 제2 세트 내의 그래픽 객체는 터치스크린 디스플레이 상에, 상기 입력 이벤트들의 제2 세트 내의 터치프레스 이벤트를 촉발하기 위해 상기 소프트웨어 어플리케이션에 의해 정의되었던 상기 디스플레이 스크린의 영역에 대하여 정의된 위치에서, 중첩되고, 그 터치프레스 이벤트는 해당 그래픽 객체에 대응하는 상기 입력 이벤트들의 제1 세트 내의 입력 이벤트와 상기 수신된 키맵에 의해 상관되는, 시스템. - 제 12 항에 있어서,
상기 수신된 키맵은 복수의 키맵들 중 선택되고;
상기 수신된 키맵의 선택은 하나 또는 그 이상의 미리 정의된 상태 변수들의 검출에 대한 응답이고,
상기 하나 또는 그 이상의 미리 정의된 상태 변수들은 하드웨어 또는 소프트웨어 상태 변수들인, 시스템. - 제 22 항에 있어서, 상기 검출된 하나 또는 그 이상의 미리 정의된 상태 변수들은 시각적 디스플레이 상태 변수, 오디오 상태 변수, 메모리에 저장된 데이터에 대응하는 상태 변수, 네트워크를 통해 수신된 데이터에 대응하는 상태 변수, 하드웨어 장치로부터 수시된 입력에 대응하는 상태 변수, 또는 상기 소프트웨어 어플리케이션의 실행과 연관된 컴퓨팅 시스템 또는 컴퓨팅 시스템 환경에 대응하는 상태 변수 중 어느 하나를 포함하는, 시스템.
- 제 22 항에 있어서, 상기 소프트웨어 어플리케이션은 호스트 운영 시스템 내에 구현된 게스트 운영 시스템의 인스턴스 내에서 실행되고,
상기 게스트 운영 시스템과 상기 호스트 운영 시스템은 서로 다르고;
상기 입력 이벤트들의 제1 세트는 상기 호스트 운영 시스템 내에서 실행되고 또한 이와 양립가능한 하드웨어 장치 드라이버에 의해 인식가능하고;
상기 입력 이벤트들의 제2 세트는 (ⅰ) 상기 게스트 운영 시스템의 인스턴스 내에서 실행되는 상기 소프트웨어 어플리케이션에 의해 인식가능하거나 또는 (ⅱ) 상기 게스트 운영 시스템의 운영 시스템 커넬 내의 하드웨어 장치 드라이버에 의해 인식되거나; 또는 (ⅲ) 상기 게스트 운영 시스템에 의해 인식되고; 및
상기 검출된 상태 변수들 중 하나 또는 그 이상은
상기 게스트 운영 시스템의 인스턴스 내의 어플리케이션 프레임워크 층;
상기 게스트 운영 시스템의 인스턴스 내의 라이브러리 층;
상기 게스트 운영 시스템의 인스턴스 내의 하드웨어 추상 층;
상기 게스트 운영 시스템 내의 어플리케이션 프로그램 층 내에서 실행되는 어플리케이션 프로그램;
상기 게스트 운영 시스템의 인스턴스와, 상기 호스트 운영 시스템과 함께 구현되는 게스트 운영 시스템의 인스턴스를 인스턴스화하고 제어하는 호스트 운영 시스템 어플리케이션 소프트웨어 사이에 설립되는 데이터 채널을 통한 상기 호스트 운영 시스템; 또는
호스트 운영 시스템 장치 드라이버로부터의 상기 호스트 운영 시스템 어플리케이션 소프트웨어
중 어느 하나로, 또는 이로부터 수신된 데이터, 요청 또는 지시에 기초하여 검출되는, 시스템. - 입력들을 소프트웨어 어플리케이션에 매핑하는 컴퓨터 프로그램 제품에 있어서, 상기 컴퓨터 프로그램 제품은 그 안에 구현되어 있는 컴퓨터 판독가능 프로그램 코드를 갖는 비일시적인 컴퓨터 사용가능 매체를 포함하고, 상기 컴퓨터 판독가능 프로그램 코드는 프로세서에서 이하의 단계들을 구현하기 위한 지시들을 포함하고, 상기 단계들은
입력 장치를 통해 생성될 수 있는 입력 이벤트들의 제1 세트를, 상기 소프트웨어 어플리케이션에 의해 인식되는 입력 이벤트들의 제2 세트와 상관시키는 키맵을 수신하는 단계, 이때 상기 입력 이벤트들의 제2 세트는 상기 입력 이벤트들의 제1 세트 내에 포함되지 않는 하나 또는 그 이상의 입력 이벤트들을 포함하고;
상기 입력 장치들의 제1 세트 내의 입력 장치로부터, 상기 입력 이벤트들의 제1 세트 내의 제1 입력 이벤트와 연관된 제1 데이터 신호를 수신하는 단계;
상기 수신된 키맵에 기초하여, 상기 입력 이벤트들의 제2 세트 내의 제2 입력 이벤트를 확인하는 단계, 상기 제2 입력 이벤트는 상기 수신된 키맵에 의해 상기 제1 입력 이벤트에 매핑되고;
제2 데이터 신호를 생성하는 단계, 이때 상기 제2 데이터 신호는 상기 제2 입력 이벤트에 대응하는 소프트웨어 어플리케이션에 의해 인식가능하고; 및
상기 제2 데이터 신호에 기초하여 상기 소프트웨어 어플리케이션에 있어서의 상태 변화를 구현하는 단계를 포함하는, 컴퓨터 프로그램 제품.
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)
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)
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 |
-
2019
- 2019-06-20 KR KR1020217001881A patent/KR20210045388A/ko not_active Application Discontinuation
- 2019-06-20 SG SG11202012618QA patent/SG11202012618QA/en unknown
- 2019-06-20 WO PCT/IB2019/055196 patent/WO2019244089A2/en active Application Filing
- 2019-06-20 JP JP2020571528A patent/JP2021528763A/ja active Pending
- 2019-06-20 EP EP19821899.2A patent/EP3811188A4/en active Pending
- 2019-06-20 US US16/447,018 patent/US11169687B2/en active Active
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 |