KR20120007042A - 학습 능력들을 갖춘 가상 키패드 생성기 - Google Patents

학습 능력들을 갖춘 가상 키패드 생성기 Download PDF

Info

Publication number
KR20120007042A
KR20120007042A KR1020117026854A KR20117026854A KR20120007042A KR 20120007042 A KR20120007042 A KR 20120007042A KR 1020117026854 A KR1020117026854 A KR 1020117026854A KR 20117026854 A KR20117026854 A KR 20117026854A KR 20120007042 A KR20120007042 A KR 20120007042A
Authority
KR
South Korea
Prior art keywords
keypad
user
keys
coordinates
layout data
Prior art date
Application number
KR1020117026854A
Other languages
English (en)
Other versions
KR101359090B1 (ko
Inventor
바박 포루탄푸어
커트 더블유 에이브라햄슨
Original Assignee
퀄컴 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20120007042A publication Critical patent/KR20120007042A/ko
Application granted granted Critical
Publication of KR101359090B1 publication Critical patent/KR101359090B1/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
    • G06F3/04886Interaction 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 by partitioning the display area of the touch-screen or the surface of the digitising tablet into independently controllable areas, e.g. virtual keyboards or menus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • G06F21/36User authentication by graphic or iconic representation
    • 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/0202Constructional details or processes of manufacture of the input device
    • G06F3/0216Arrangements for ergonomically adjusting the disposition of keys of a keyboard
    • 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
    • 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/0233Character input methods
    • G06F3/0236Character input methods using selection techniques to select from displayed items
    • 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/0233Character input methods
    • G06F3/0237Character input methods using prediction or retrieval techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/02Input arrangements using manually operated switches, e.g. using keyboards or dials
    • G06F3/023Arrangements for converting discrete items of information into a coded form, e.g. arrangements for interpreting keyboard generated codes as alphanumeric codes, operand codes or instruction codes
    • G06F3/0238Programmable keyboards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/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

Abstract

터치스크린과 같은, 터치 감지면상에서 맞춤형 가상 키보드들을 정의하는 것을 가능하게 해주는 방법 및 시스템이 제공된다. 학습 알고리즘들을 이용하여, 컴퓨팅 디바이스는 사용자의 타이핑 패턴들을 학습할 수 있고, 가상 키보드의 키들을 사용자에게 편안하고 타이핑 에러를 감소시킬 수 있는 위치들, 크기들, 및 배향들로 "모핑 (morph)" 할 수 있다. 사용자는 터치 감지면에 대한 일련의 키 스트로크들을 수행함으로써 맞춤형 키패드 레이아웃을 생성할 수 있다. 컴퓨팅 디바이스는 터치 위치들을 특정 키들에 상관시킬 수 있고, 가상 키보드를 디스플레이하고 터치 감지면에 대한 처리들을 해석하는데 이용될 수 있는 키패드 레이아웃 데이터를 생성할 수 있다. 컴퓨팅 디바이스는 사용자 타이핑 활동을 모니터링하고, 검출되거나 수정된 타이핑 에러들에 기초하여 키패드 레이아웃 데이터를 개량할 수 있다. 사용자들이 각자의 가상 키보드들을 다른 디바이스들을 통해 취할 수 있도록 해주기 위해 키패드 레이아웃 데이터는 다른 디바이스들에게 내보내질 수 있다.

Description

학습 능력들을 갖춘 가상 키패드 생성기{A VIRTUAL KEYPAD GENERATOR WITH LEARNING CAPABILITIES}
본 발명은 일반적으로 컴퓨터 사용자 입력 디바이스들에 관한 것이며, 보다 구체적으로는 학습 데이터 입력 디바이스에 관한 것이다.
파워풀하되 휴대가능하고, 소형이되 완전히 특징을 갖춘 컴퓨팅 디바이스에 대한 수요가 끊임없이 증가하고 있다. 이러한 경향은 특히 현재 전화기, 비디오 및 오디오 캡쳐 디바이스, 비디오 및 오디오 플레이어, 웹 액세스 단말, 및 컴퓨터로서 기능을 하는, 셀룰라 전화기와 같은 모바일 전자 디바이스들 (모바일 디바이스들) 의 진화에서 분명해졌다.
모바일 디바이스들이 점점 정교해짐에 따라, 애플리케이션 소프트웨어의 다양성 및 정교함이 증가해가고 있으며, 이로써 모바일 디바이스들을 다목적용 생산성 툴로서 전환시키고 있다. 하지만, 모바일 디바이스들 및 이들의 애플리케이션들의 이용성은 사용자 인터페이스를 위해 이용가능한 작은 영역에 의해 제한된다. 예컨대, 통상적인 셀룰라 전화기들은 고정된 구성의 단순한 키패드를 포함한다. 최근에, 소형 QWERTY 키보드들, 터지 감지형 스크린 인터페이스들, 및 재구성가능 키들을 특징으로 하는 모바일 디바이스들이 공개되어 왔다.
통상적으로, 키패드들은 키의 누름을 모바일 디바이스와 그 애플리케이션 소프트웨어에 의해 해석될 수 있는 전기 신호로 변환시킴으로써 기능을 한다. 도 1 은 키 누름 이벤트들이 애플리케이션 소프트웨어에 전달될 수도 있는 하나의 방법을 보여주는 전형적인 모바일 디바이스의 하드웨어/소프트웨어 아키텍처를 도시한다. 통상적인 고정형 키패드 (5) 상의 키의 누름은 회로를 폐쇄하거나 또는 캐패시턴스 또는 저항을 변화시켜서 그 결과로 하드웨어 드라이버 (4) 에 의해 프로세싱될 수 있는 전기 신호를 야기시킨다. 하드웨어 드라이버 (4) 는 특정한 모바일 디바이스에 따라 회로, 소프트웨어 또는 하드웨어 및 소프트웨어의 혼합체일 수도 있다. 하드웨어 드라이버 (4) 는 키패드 (5) 로부터 수신된 전기 신호를 모바일 디바이스상에서 구동하는 소프트웨어 애플리케이션에 의해 해석될 수 있는 포맷으로 변환시킨다. 이 신호는 애플리케이션 소프트웨어에 의해 액세스가능한 메모리 테이블에서 인터럽트 또는 저장된 값의 형태로 존재할 수 있다. 이와 같은 메모리에서의 인터럽트 또는 저장된 값은 런타임 환경 소프트웨어 레이어 (3) 에 의해 수신될 수도 있다. 런타임 환경 소프트웨어 레이어 (3) 의 목적은 애플리케이션 소프트웨어 및 모바일 디바이스간에 공통 인터페이스를 제공하는 것이다. 따라서, 키 누름 이벤트 신호들은 키 누름 이벤트 메시지의 형태로 애플리케이션 레이어 (2) 에게 전달된다. 애플리케이션 소프트웨어는 키 누름 이벤트의 의미를 이해할 수 있어야만 하고, 이에 따라 기본적인 하드웨어 드라이버 (4) 및 키패드 하드웨어 (5) 를 수용하도록 기입되어야 한다. 키 누름 이벤트들은 또한 특정한 키와 연관된 값을 디스플레이하는 것과 같이 사용자 인터페이스 레이어 (1) 에게 전달될 수도 있다.
대부분의 키패드들의 레이아웃은 "하나의 크기로 모두가 사용(one-size fits all)" 접근법을 이용하여 확립된다. 즉, 키패드는 물리적 구조들에 의해 정의되거나 또는 디스플레이의 크기에 끼워맞도록 제약된다. 표준화된 키패드는 모든 사용자들 또는 모든 컴퓨팅 디바이스들에 대해 이상적이지 않을 수도 있다.
다양한 양태에서 시스템들 및 방법들은 사용자의 입력들로부터 사용자의 타이핑 패턴들을 학습함으로써 특정 사용자들을 위한 키패드를 자동적으로 조정하는 터치 감지면상의 가상 키패드들을 제공한다.
일 양태에서 터치 감지면상에 키패드를 정의하는 방법은 터치 감지면에 대한 일련의 사용자 터치들의 일련의 좌표들을 수신하는 단계, 수신된 일련의 좌표들과 복수의 키들을 상관시키는 단계, 복수의 키들 각각과 상관된 수신된 좌표들의 평균을 결정하는 단계, 키패드 레이아웃 데이터에서 복수의 키들 각각에 대한 결정된 평균 좌표들을 저장하는 단계, 및 키패드 레이아웃 데이터를 이용하여 가상 키패드의 이미지를 생성하는 단계를 포함한다. 본 방법은 복수의 키들을 일련의 수신된 좌표들과 상관시키는 것이 프롬프트된 일련의 키스트로크들을 수신된 좌표들과 상관시키는 것을 포함할 때의 사용자로 하여금 일련의 키스트로크들을 입력할 것을 프롬프트하는 단계를 더 포함할 수도 있다. 본 방법은 복수의 키들 각각에 대한 수신된 좌표들에 기초하여 통계적 엔벨로프를 결정하는 단계, 및 키패드 레이아웃 데이터에서 복수의 키들 각각에 대한 통계적 엔벨로프를 저장하는 단계를 더 포함할 수도 있다. 키패드 레이아웃 데이터를 이용하여 가상 키패드의 이미지를 생성하는 단계는 키패드 레이아웃 데이터에 저장된 복수의 키들 각각의 평균 좌표들에 기초한 위치들에서 가상 키패드에서의 키들의 이미지를 생성하는 단계를 더 포함할 수도 있다. 키패드 레이아웃 데이터를 이용하여 가상 키패드의 이미지를 생성하는 단계는 각각의 키 이미지의 크기가 키패드 레이아웃 데이터에서의 복수의 키들 각각에 대한 통계적 엔벨로프에 기초하는 가상 키패드에서 키들의 이미지를 생성하는 단계를 더 포함할 수도 있다. 본 방법은 터치 감지면상에서의 가상 키패드상의 타이핑을 모니터링하는 단계, 인접 키 타이핑 에러를 식별하는 단계, 인접 키 타이핑 에러와 연관된 올바른 키를 결정하는 단계, 타이핑한 키스트로크에 대한 수신된 좌표들에 기초하여 올바른 키에 대한 평균 좌표를 업데이트하는 단계, 및 키패드 레이아웃 데이터에서 올바른 키와 함께 업데이트된 평균 좌표를 저장하는 단계를 더 포함할 수도 있다. 인접 키 타이핑 에러를 식별하는 단계는 철자오기난 단어를 인식하는 단계, 및 철자오기가 가상 키보드에서 서로 인접한 두 개의 키들의 뒤바뀜을 수반하는지 여부를 결정하는 단계를 포함할 수도 있다. 인접 키 타이핑 에러를 식별하는 단계는 키와 연관된 글자의 사용자 수정을 인식하는 단계, 및 사용자 수정이 가상 키보드에서 서로 인접한 두 개의 키들의 뒤바뀜을 수반하는지 여부를 결정하는 단계를 포함할 수도 있다. 키패드 레이아웃 데이터는 네트워크 액세스가능한 데이터베이스에 저장될 수도 있고, 본 방법은 키패드 레이아웃 데이터를 이용하여 가상 키패드의 이미지를 생성하는 단계가 컴퓨팅 디바이스에 결합된 터치 감지면상에 가상 키패드의 이미지를 생성하는 단계를 포함할 때, 키패드 레이아웃 데이터를 네트워크를 통해 컴퓨팅 디바이스에 송신하는 단계를 더 포함할 수도 있다. 본 방법은 컴퓨팅 디바이스에 결합된 터치 감지면에 대한 사용자 터치를 수신하는 단계, 및 터치 감지면에 대한 수신된 사용자 터치에 기초하여 가상 키패드의 디스플레이를 위한 터치 감지면상의 위치를 결정하는 단계를 더 포함할 수도 있으며, 키패드 레이아웃 데이터를 이용하여 가상 키패드의 이미지를 생성하는 단계는 디스플레이를 위한 터치 감지면상의 결정된 위치에서 이미지를 생성하는 단계를 포함한다.
또 다른 양태에서, 컴퓨팅 디바이스는, 프로세서, 프로세서에 결합된 메모리, 및 터치 감지면상의 일련의 사용자 터치들의 일련의 좌표들을 수신하는 단계, 수신된 일련의 좌표들과 복수의 키들을 상관시키는 단계, 복수의 키들 각각과 상관된 수신된 좌표들의 평균을 결정하는 단계, 키패드 레이아웃 데이터에서 복수의 키들 각각에 대한 결정된 평균 좌표들을 저장하는 단계, 및 키패드 레이아웃 데이터를 이용하여 가상 키패드의 이미지를 생성하는 단계를 포함한 프로세스들을 수행하기 위한 프로세서 실행가능 명령들을 갖추도록 구성된 프로세서에 결합된 터치 감지면을 포함한다. 컴퓨팅 디바이스 프로세서는 사용자로 하여금 일련의 키스트로크들을 입력할 것을 프롬프트하는 단계를 더 포함한 프로세스들을 수행하도록 구성될 수도 있고, 복수의 키들을 일련의 수신된 좌표들과 상관시키는 것은 프롬프트된 일련의 키스트로크들을 수신된 좌표들과 상관시키는 것을 포함할 수도 있다. 컴퓨팅 디바이스 프로세서는 복수의 키들 각각에 대한 수신된 좌표들에 기초하여 통계적 엔벨로프를 결정하는 단계, 및 키패드 레이아웃 데이터에서 복수의 키들 각각에 대한 통계적 엔벨로프를 저장하는 단계를 더 포함한 프로세스들을 수행하도록 구성될 수도 있다.
컴퓨팅 디바이스 프로세서는, 키패드 레이아웃 데이터를 이용하여 가상 키패드의 이미지를 생성하는 단계가 키패드 레이아웃 데이터에 저장된 복수의 키들 각각의 평균 좌표들에 기초한 위치들에서 가상 키패드에서의 키들의 이미지를 생성하도록 하는 프로세서 실행가능한 명령들로 구성될 수도 있다. 컴퓨팅 디바이스 프로세서는, 키패드 레이아웃 데이터를 이용하여 가상 키패드의 이미지를 생성하는 단계가, 각각의 키 이미지의 크기가 키패드 레이아웃 데이터에서의 복수의 키들 각각에 대한 통계적 엔벨로프에 기초하는 가상 키패드에서 복수의 키들의 이미지를 생성하는 단계를 더 포함하도록 하는 프로세서 실행가능한 명령들로 구성될 수도 있다. 컴퓨팅 디바이스 프로세서는 터치 감지면상에서의 가상 키패드상의 타이핑을 모니터링하는 단계, 인접 키 타이핑 에러를 식별하는 단계, 인접 키 타이핑 에러와 연관된 올바른 키를 결정하는 단계, 타이핑한 키스트로크에 대한 수신된 좌표들에 기초하여 올바른 키에 대한 평균 좌표를 업데이트하는 단계, 및 키패드 레이아웃 데이터에서 올바른 키와 함께 업데이트된 평균 좌표를 저장하는 단계를 더 포함하는 프로세스들을 수행하도록 구성될 수도 있다. 컴퓨팅 디바이스 프로세서는, 인접 키 타이핑 에러를 식별하는 단계가 철자오기난 단어를 인식하는 단계, 및 철자오기가 가상 키보드에서 서로 인접한 두 개의 키들의 뒤바뀜을 수반하는지 여부를 결정하도록 하는 프로세서 실행가능한 명령들로 구성될 수도 있다. 컴퓨팅 디바이스 프로세서는, 인접 키 타이핑 에러를 식별하는 단계가 키와 연관된 글자의 사용자 수정을 인식하는 단계와, 사용자 수정이 가상 키보드에서 서로 인접한 두 개의 키들의 뒤바뀜을 수반하는지 여부를 결정하도록 하는 프로세서 실행가능한 명령들로 구성될 수도 있다. 키패드 레이아웃 데이터는 네트워크 액세스가능한 데이터베이스에 저장될 수도 있으며, 컴퓨팅 디바이스 프로세서는 네트워크를 통해 네트워크 액세스가능한 데이터베이스로부터 키패드 레이아웃 데이터를 수신하는 것을 포함한 프로세스들을 더 수행하기 위한 프로세서 실행가능한 명령들로 구성될 수도 있다. 컴퓨팅 디바이스 프로세서는, 컴퓨팅 디바이스에 결합된 터치 감지면에 대한 사용자 터치를 수신하는 단계, 터치 감지면에 대한 수신된 사용자 터치에 기초하여 가상 키패드의 디스플레이를 위한 터치 감지면상의 위치를 결정하는 단계, 및 디스플레이를 위한 터치 감지면상의 결정된 위치에서 키패드 레이아웃 데이터를 이용하여 가상 키패드의 이미지를 생성하는 단계를 포함한 프로세스들을 더 수행하기 위한 프로세서 실행가능한 명령들로 구성될 수 있다.
또 다른 양태에서, 터치 감지면에 결합된 컴퓨팅 디바이스는, 터치 감지면에 대한 일련의 사용자 터치들의 일련의 좌표들을 수신하는 수단, 수신된 일련의 좌표들과 복수의 키들을 상관시키는 수단, 복수의 키들 각각과 상관된 수신된 좌표들의 평균을 결정하는 수단, 키패드 레이아웃 데이터에서 복수의 키들 각각에 대한 결정된 평균 좌표들을 저장하는 수단, 및 키패드 레이아웃 데이터를 이용하여 가상 키패드의 이미지를 생성하는 수단을 포함할 수도 있다.
컴퓨팅 디바이스는 사용자로 하여금 일련의 키스트로크들을 입력할 것을 프롬프트하는 수단을 더 포함할 수도 있으며, 복수의 키들을 일련의 수신된 좌표들과 상관시키는 수단은 프롬프트된 일련의 키스트로크들을 수신된 좌표들과 상관시키는 수단을 포함한다. 컴퓨팅 디바이스는 복수의 키들 각각에 대한 수신된 좌표들에 기초하여 통계적 엔벨로프를 결정하는 수단, 및 키패드 레이아웃 데이터에서 복수의 키들 각각에 대한 통계적 엔벨로프를 저장하는 수단을 더 포함할 수도 있다. 키패드 레이아웃 데이터를 이용하여 가상 키패드의 이미지를 생성하는 수단은 키패드 레이아웃 데이터에 저장된 복수의 키들 각각의 평균 좌표들에 기초한 위치들에서 가상 키패드에서의 키들의 이미지를 생성하는 수단을 더 포함할 수도 있다. 키패드 레이아웃 데이터를 이용하여 가상 키패드의 이미지를 생성하는 수단은 각각의 키 이미지의 크기가 키패드 레이아웃 데이터에서의 복수의 키들 각각에 대한 통계적 엔벨로프에 기초하는 가상 키패드에서의 복수의 키들의 이미지를 생성하는 수단을 더 포함할 수도 있다. 컴퓨팅 디바이스는 터치 감지면상에서의 가상 키패드상의 타이핑을 모니터링하는 수단, 인접 키 타이핑 에러를 식별하는 수단, 인접 키 타이핑 에러와 연관된 올바른 키를 결정하는 수단, 타이핑한 키스트로크에 대한 수신된 좌표들에 기초하여 올바른 키에 대한 평균 좌표를 업데이트하는 수단, 및 키패드 레이아웃 데이터에서 올바른 키와 함께 업데이트된 평균 좌표를 저장하는 수단을 더 포함할 수도 있다. 인접 키 타이핑 에러를 식별하는 수단은 철자오기난 단어를 인식하는 수단, 및 철자오기가 가상 키보드에서 서로 인접한 두 개의 키들의 뒤바뀜을 수반하는지 여부를 결정하는 수단을 포함할 수도 있다. 인접 키 타이핑 에러를 식별하는 수단은 키와 연관된 글자의 사용자 수정을 인식하는 수단, 및 사용자 수정이 가상 키보드에서 서로 인접한 두 개의 키들의 뒤바뀜을 수반하는지 여부를 결정하는 수단을 포함할 수도 있다. 키패드 레이아웃 데이터는 네트워크 액세스가능한 데이터베이스에 저장될 수도 있고, 본 컴퓨팅 디바이스는 키패드 레이아웃 데이터를 네트워크를 통해 컴퓨팅 디바이스에 송신하는 수단을 더 포함할 수도 있으며, 키패드 레이아웃 데이터를 이용하여 가상 키패드의 이미지를 생성하는 수단은 컴퓨팅 디바이스에 결합된 터치 감지면상에 가상 키패드의 이미지를 생성하는 수단을 포함할 수도 있다. 컴퓨팅 디바이스는 컴퓨팅 디바이스에 결합된 터치 감지면상의 사용자 터치를 수신하는 수단, 터치 감지면상의 수신된 사용자 터치에 기초하여 가상 키패드의 디스플레이를 위한 터치 감지면상의 위치를 결정하는 수단을 더 포함할 수도 있으며, 키패드 레이아웃 데이터를 이용하여 가상 키패드의 이미지를 생성하는 수단은 디스플레이를 위한 터치 감지면상의 결정된 위치에서 이미지를 생성하는 수단을 포함할 수도 있다.
또 다른 양태에서, 컴퓨터 프로그램 제품은, 터치 감지면에 대한 일련의 사용자 터치들의 일련의 좌표들을 수신하기 위한 적어도 하나의 명령, 수신된 일련의 좌표들과 복수의 키들을 상관시키기 위한 적어도 하나의 명령, 복수의 키들 각각과 상관된 수신된 좌표들의 평균을 결정하기 위한 적어도 하나의 명령, 키패드 레이아웃 데이터에서 복수의 키들 각각에 대한 결정된 평균 좌표들을 저장하기 위한 적어도 하나의 명령, 및 키패드 레이아웃 데이터를 이용하여 가상 키패드의 이미지를 생성하기 위한 적어도 하나의 명령을 포함한 컴퓨터 판독가능한 매체를 포함할 수도 있다. 컴퓨터 판독가능한 매체는 사용자로 하여금 일련의 키스트로크들을 입력할 것을 프롬프트하기 위한 적어도 하나의 명령을 더 포함할 수도 있으며, 복수의 키들을 일련의 수신된 좌표들과 상관시키기 위한 적어도 하나의 명령은 프롬프트된 일련의 키스트로크들을 수신된 좌표들과 상관시키기 위한 적어도 하나의 명령을 포함한다. 컴퓨터 판독가능한 매체는 복수의 키들 각각에 대한 수신된 좌표들에 기초하여 통계적 엔벨로프를 결정하기 위한 적어도 하나의 명령, 및 키패드 레이아웃 데이터에서 복수의 키들 각각에 대한 통계적 엔벨로프를 저장하기 위한 적어도 하나의 명령을 더 포함할 수도 있다. 키패드 레이아웃 데이터를 이용하여 가상 키패드의 이미지를 생성하기 위한 적어도 하나의 명령은 키패드 레이아웃 데이터에 저장된 복수의 키들 각각의 평균 좌표들에 기초한 위치들에서 가상 키패드에서의 키들의 이미지들을 생성하기 위한 적어도 하나의 명령을 포함할 수도 있다. 키패드 레이아웃 데이터를 이용하여 가상 키패드의 이미지를 생성하기 위한 적어도 하나의 명령은 각각의 키 이미지의 크기가 키패드 레이아웃 데이터에서의 복수의 키들 각각에 대한 통계적 엔벨로프에 기초하는 가상 키패드에서의 복수의 키들의 이미지들을 생성하기 위한 적어도 하나의 명령을 더 포함할 수도 있다. 컴퓨터 판독가능한 매체는 터치 감지면상에서의 가상 키패드상의 타이핑을 모니터링하기 위한 적어도 하나의 명령, 인접 키 타이핑 에러를 식별하기 위한 적어도 하나의 명령, 인접 키 타이핑 에러와 연관된 올바른 키를 결정하기 위한 적어도 하나의 명령, 타이핑한 키스트로크에 대한 수신된 좌표들에 기초하여 올바른 키에 대한 평균 좌표를 위한 적어도 하나의 명령, 및 키패드 레이아웃 데이터에서 올바른 키와 함께 업데이트된 평균 좌표들을 저장하기 위한 적어도 하나의 명령을 더 포함할 수도 있다. 인접 키 타이핑 에러를 식별하기 위한 적어도 하나의 명령은 철자오기난 단어를 인식하기 위한 적어도 하나의 명령, 및 철자오기가 가상 키보드에서 서로 인접한 두 개의 키들의 뒤바뀜을 수반하는지 여부를 결정하기 위한 적어도 하나의 명령을 포함할 수도 있다. 인접 키 타이핑 에러를 식별하기 위한 적어도 하나의 명령은 키와 연관된 글자의 사용자 수정을 인식하기 위한 적어도 하나의 명령, 및 사용자 수정이 가상 키보드에서 서로 인접한 두 개의 키들의 뒤바뀜을 수반하는지 여부를 결정하기 위한 적어도 하나의 명령을 포함할 수도 있다. 키패드 레이아웃 데이터는 네트워크 액세스가능한 데이터베이스에 저장될 수도 있고, 컴퓨터 판독가능한 매체는 키패드 레이아웃 데이터를 네트워크를 통해 컴퓨팅 디바이스에 송신하기 위한 적어도 하나의 명령을 더 포함할 수도 있으며, 키패드 레이아웃 데이터를 이용하여 가상 키패드의 이미지를 생성하기 위한 적어도 하나의 명령은 컴퓨팅 디바이스에 결합된 터치 감지면상에 가상 키패드의 이미지를 생성하기 위한 적어도 하나의 명령을 포함한다. 컴퓨터 판독가능한 매체는 컴퓨팅 디바이스에 결합된 터치 감지면에 대한 사용자 터치를 수신하기 위한 적어도 하나의 명령, 및 터치 감지면에 대한 수신된 사용자 터치에 기초하여 가상 키패드의 디스플레이를 위한 터치 감지면상의 위치를 결정하기 위한 적어도 하나의 명령을 더 포함할 수도 있으며, 키패드 레이아웃 데이터를 이용하여 가상 키패드의 이미지를 생성하기 위한 적어도 하나의 명령은 디스플레이를 위한 터치 감지면상의 결정된 위치에서 이미지를 생성하기 위한 적어도 하나의 명령을 포함한다.
추가적인 양태에서, 사용자의 손에 대해 디폴트 키패드를 맞춤화하기 위한 방법은 터치 감지면에 대한 사용자 터치들의 복수의 좌표들을 수신하는 단계, 사용자 터치들의 수신된 복수의 좌표들의 적어도 일부에 기초하여 사용자의 손의 치수를 측정하는 단계, 사용자의 손의 측정된 치수에 기초하여 디폴트 키패드 레이아웃의 레이아웃 치수들을 조정하는 단계, 및 디폴트 키패드 레이아웃의 조정된 레이아웃 치수들을 이용하여 가상 키패드의 이미지를 생성하는 단계를 포함할 수 있다.
추가적인 양태에서, 컴퓨팅 디바이스는 프로세서, 프로세서에 결합된 메모리, 및 프로세서에 결합된 터치 감지면을 포함하며, 프로세서는, 터치 감지면에 대한 사용자 터치들의 복수의 좌표들을 수신하는 단계, 사용자 터치들의 수신된 복수의 좌표들의 적어도 일부에 기초하여 사용자의 손의 치수를 측정하는 단계, 사용자의 손의 측정된 치수에 기초하여 디폴트 키패드 레이아웃의 레이아웃 치수들을 조정하는 단계, 및 디폴트 키패드 레이아웃의 조정된 레이아웃 치수들을 이용하여 가상 키패드의 이미지를 생성하는 단계를 포함한 프로세스들을 수행하기 위한 프로세서 실행가능한 명령들로 구성된다.
추가적인 양태에서, 컴퓨팅 디바이스는, 터치 감지면에 대한 사용자 터치들의 복수의 좌표들을 수신하기 위한 수단, 사용자 터치들의 수신된 복수의 좌표들의 적어도 일부에 기초하여 사용자의 손의 치수를 측정하기 위한 수단, 사용자의 손의 측정된 치수에 기초하여 디폴트 키패드 레이아웃의 레이아웃 치수들을 조정하기 위한 수단, 및 디폴트 키패드 레이아웃의 조정된 레이아웃 치수들을 이용하여 가상 키패드의 이미지를 생성하기 위한 수단을 포함한다.
추가적인 양태에서, 컴퓨터 프로그램 제품은, 터치 감지면에 대한 사용자 터치들의 복수의 좌표들을 수신하기 위한 적어도 하나의 명령, 사용자 터치들의 수신된 복수의 좌표들의 적어도 일부에 기초하여 사용자의 손의 치수를 측정하기 위한 적어도 하나의 명령, 사용자의 손의 측정된 치수에 기초하여 디폴트 키패드 레이아웃의 레이아웃 치수들을 조정하기 위한 적어도 하나의 명령, 및 디폴트 키패드 레이아웃의 조정된 레이아웃 치수들을 이용하여 가상 키패드의 이미지를 생성하기 위한 적어도 하나의 명령을 포함한 컴퓨터 판독가능한 매체를 포함한다.
여기에 병합되어 있고 본 명세서의 일부를 구성하는 첨부 도면들은 본 발명의 예시적인 양태들을 도시하며, 위에서 주어진 개략적인 설명 및 아래에서 주어지는 상세한 설명과 함께, 본 발명의 특징들을 설명하는 역할을 한다.
도 1 은 종래기술의 모바일 디바이스의 하드웨어/소프트웨어 아키텍쳐도이다.
도 2 는 다양한 양태들에 의해 인에이블된 모바일 디바이스의 시스템 컴포넌트도이다.
도 3 은 다양한 양태들에 의해 인에이블된 학습 모듈의 시스템 컴포넌트도이다.
도 4 는 터치 감지 스크린상에 가상 키패드를 생성하기 위한 교습 루틴을 도시하는 프로세스 흐름도이다.
도 5 는 일 양태에서 사용하기에 적합한 명령 테이블의 데이터 구조이다.
도 6a 는 공지된 텍스트의 사용자 타이핑을 분석함으로써 가상 키패드 레이아웃을 최적화하기 위한 예시적인 학습 루틴을 도시하는 프로세스 흐름도이다.
도 6b 는 비공지된 텍스트의 사용자 타이핑을 분석함으로써 가상 키패드 레이아웃을 최적화하기 위한 예시적인 학습 루틴을 도시하는 프로세스 흐름도이다.
도 7 은 사용자에 의해 행해진 타이핑 수정에 기초하여 가상 키패드 레이아웃을 최적화하기 위한 예시적인 학습 루틴을 도시하는 프로세스 흐름도이다.
도 8 은 일 양태에서 사용하기에 적합한 디폴트 가상 키보드 레이아웃의 도면이다.
도 9 는 다양한 양태들에 따른 맞춤화 이후의 예시적인 가상 키보드 레이아웃의 도면이다.
도 10 은 키 중심점들을 둘러싼 통계적 엔벨로프들을 보여주는 가상 키보드의 키들의 도면이다.
도 11 은 일 양태에 따른 네트워크 아키텍쳐를 도시하는 통신 네트워크 블럭도이다.
도 12a 는 사용자에 의한 터치들에 응답하여 선택된 터치 감지면상의 맞춤형 가상 키보드를 위치설정하기 위한 예시적인 방법의 프로세스 흐름도이다.
도 12b 는 사용자의 손의 치수들을 측정하는 것에 응답하여 크기조정된 터치 감지면상의 디폴트 가상 키보드를 위치설정하기 위한 예시적인 방법의 프로세스 흐름도이다.
도 13 은 다양한 양태들에서 이용하는데 적합한 모바일 디바이스의 예시적인 컴포넌트들을 도시하는 컴포넌트 블럭도이다.
도 14 는 다양한 양태들에서 이용하는데 적합한 컴퓨터의 예시적인 컴포넌트들을 도시하는 컴포넌트 블럭도이다.
도 15 는 다양한 양태들에서 이용하는데 적합한 서버의 예시적인 컴포넌트들을 도시하는 컴포넌트 블럭도이다.
다양한 양태들이 첨부 도면들을 참조하여 상세하게 설명될 것이다. 가능하다면, 동일하거나 유사한 부분들을 가리키기 위해 동일한 참조 번호들이 도면들에 걸쳐서 이용될 것이다. 특정한 예시들에 대한 언급들 및 구현들은 설명을 위한 것들이며, 본 발명의 범위 또는 청구항들을 제한시키려고 의도된 것은 아니다.
여기서 이용될 때, 용어들 "모바일 핸드셋들" 및 "모바일 디바이스들"은 상호교환적으로 이용되며, 다양한 셀룰라 전화기들, 개인 보조 단말기들 (PDAs), 팜 탑 컴퓨터들, 랩탑 컴퓨터들, 무선 전자 메일 수신기들 (예컨대, Blackberry® 및 Treo® 디바이스들), 멀티미디어 인터넷 인에이블드 셀룰라 전화기들 (예컨대, Blackberry Storm®), 및 유사한 개인 전자 디바이스들 중 임의의 것을 가리킨다. 모바일 디바이스는 도 13 을 참조하여 아래에서 보다 완전하게 설명되는 프로그래밍가능한 프로세서 및 메모리를 포함할 수도 있다. 용어 "컴퓨팅 디바이스"는 여기서 모바일 디바이스들, 데스크탑 컴퓨터들, 워크스테이션들, 메인프레임 컴퓨터들, 및 임베디드 컴퓨터 시스템들을 포함한, 프로그래밍가능한 프로세서 및 메모리를 포함한 임의의 디바이스를 가리킨다.
여기서 이용될 때, 용어들 "키패드" 및 "키보드"는 QWERTY (또는 다른) 키보드, 숫자 패드, 게임 제어기, 및 뮤지컬 키보드와 같은, 컴퓨팅 디바이스에게 입력 데이터를 전송하는데 이용된 사용자 입력 디바이스들의 다양한 구성들 중 임의의 하나를 일반적으로 가리키도록 상호교환적으로 이용된다. 다양한 양태들은 "키들"이 디스플레이되거나, 투사되거나 또는 비가시적일 수도 있는 "가상" 사용자 입력 디바이스들을 수반하기 때문에, 용어들 "키패드" 및 "키보드"는 눌러질 수 있는 물리적 키들을 필요로 하지 않도록 의도되며, 이보다는 사용자 손가락에 의한 터치 (또는 누름) 을 감지할 수 있고 이러한 터치를 컴퓨팅 디바이스에 대한 입력으로서 해석할 수 있는 임의의 사용자 입력 디바이스를 가리킨다.
여기서 이용될 때, 용어 "터치 감지면"은 사용자 손가락에 의해 터치 (또는 누름) 를 검출하거나 또는 감지하고, 이러한 터치를 컴퓨팅 디바이스에 대한 입력으로서 해석하도록 구성된 임의의 표면을 포함한다. 특히, 터치 감지면은 사용자의 손가락 끝의 터치의 위치를 결정할 수 있다. 표면상의 손가락 끝의 터치 및 위치는 다양한 공지된 기술들 중 임의의 기술을 이용하여 달성될 수 있다. 예를 들어, 터치 감지면들은 사용자의 터치를 즉시 검출하는 누름 감지면들, 캐패시턴스 감지면들, 및 유도성 감지면들을 포함할 수 있다. 추가적인 예시로서, 터치 감지면들은 손가락 끝이 감지면과 접촉할 때를 인지할 수 있는 광학 센서들에 의해 사용자 터치들을 검출할 수도 있다. 광학 센서들의 예시들은 사용자의 손가락이 투사된 이미지, 및 적외선 광과 상호작용할 때를 (예컨대, 카메라 또는 포토센서에 의해) 검출할 수 있는 투사 시스템들 및 사용자의 손가락 끝들을 이미지화할 수 있고 손가락 끝의 위치를 결정할 수 있는 카메라 센서들을 포함한다. 제 3 예시적인 터치 센서는, 커버 유리를 통해 진행하는 초음파의 영향에 기초하여 터치를 검출할 수 있는 초음파 센서, 또는 커버 유리에 대한 터치로부터 수신된 진동 또는 소리의 삼각측량에 기초하여 터치의 위치를 결정할 수 있는 소리 또는 진동 센서들과 같은, 사용자 터치의 위치를 검출하고 결정하기 위한 소리 또는 진동 측정들을 이용할 수 있다.
터치 감지면은 다양한 표면들 중 임의의 것을 통해 이용될 수 있고, 이에 따라 특정한 유형의 디바이스 또는 형태로 제한되는 것으로 의도되지 않는다. 예를 들어, 평평하든지 또는 곡선형인지에 상관없이, 벽, 테이블, 거울, 또는 자동차 윈도우 또는 임의의 표면이 터치 감지면으로서 구성될 수도 있다. 여기서 이용될 때, "터치 감지 스크린" 또는 "터치스크린"은 디스플레이와 조합된 터치 감지면이다. 디스플레이는 (Blackberry Storm®에서와 같은) 액정 디스플레이와 같은, 물리적 디스플레이일 수도 있다. 여기서 이용될 때, "투사된 키보드 디스플레이"는 표면상으로 키보드의 이미지를 투사할 수 있는 프로젝터를 가리킨다. 투사된 키보드 디스플레이는 터치 감지면상으로 키보드 이미지를 투사하거나, 또는 광학 센서들과 같은, 다른 기술들에 의해 손가락 터치를 감지함으로써 터치를 감지할 수도 있다.
여기서 이용될 때, 용어들 "가상 키패드" 및 "가상 키보드" 는 터치스크린과 같이, 터치 감지면상에서 디스플레이되거나 또는 투사되는 키패드 이미지를 가리키거나, 또는 광학 센서와 같은, 또 다른 터치 센서 기술과 관련하여 표면상에 투사되는 키패드 이미지를 가리킨다. 몇몇 양태들에서, 가상 키패드의 "키들" 은 디스플레이 스크린 또는 프로젝션상에서 디스플레이될 수 있지만, 몇몇 양태들은 임의의 이미지들을 제공하지 않을 수도 있다. 따라서, "가상 키패드" 는 또한 비가시적인 키패드일 수 있다. 가상 키패드는 반드시 숫자들 또는 글자들로 제한될 필요는 없으며, 여기서 이용될 때에 키 또는 버튼의 사용자 활성화를 수반하는 임의의 사용자 인터페이스를 망라한다. 비숫자 및 비글자 가상 키패드들의 예시들은 터치 감지면을 포함한 게임 제어기들, 디바이스 제어기들 (예컨대, TV 리모트), 애플리케이션 인터페이스들, 및 조이스틱들을 포함한다. 예를 들어, 가상 키패드는 MP3 또는 비디오 플레이어 애플리케이션을 위한 사용자 인터페이스로서 구현될 수도 있다.
여기서 이용될 때, 용어 "키패드 레이아웃 데이터" 는 가상 키패드에서의 키들의 위치, 크기, 형상, 및 배향에 관한 정보, 특히 가상 키패드의 이미지를 생성하는데 이용될 수 있는 정보를 총체적으로 가리킨다.
여기서 이용될 때, "엔벨로프 (envelope)" 는 터치 감지면에 대한 사용자에 의한 키 스트라이크들 (key-strikes) 에서의 내재적 가변성 (inherent variability) 을 설명하는 가상 키 치수의 수용가능한 범위를 가리킨다. 파라미터는, 예컨대 X 축 상대 위치, Y 축 상대 위치, 및 디스플레이 픽셀 매트릭스 위치 범위일 수 있다.
예시적인 컴퓨팅 디바이스 키패드의 하드웨어/소프트웨어 인터페이스가 도 1에서 도시된다. 키패드 (5) 상에서의 키의 누름은 하드웨어 드라이버 (4) 에 의해 프로세싱될 수 있는 전기 신호를 야기시킨다. 하드웨어 드라이버 (4) 는 특정한 컴퓨팅 디바이스 (예컨대, 모바일 디바이스) 에 따라 회로, 소프트웨어 또는 하드웨어 및 소프트웨어의 혼합체일 수도 있다. 하드웨어 드라이버 (4) 는 키패드 (5) 로부터 수신된 전기 신호를 컴퓨팅 디바이스상에서 구동하는 소프트웨어 애플리케이션 (2) 에 의해 해석될 수 있는 포맷으로 변환시킨다. 이 신호는 애플리케이션 (2) 에 의해 액세스가능한 메모리 테이블에서 인터럽트 또는 저장된 값의 형태로 존재할 수 있다. 이와 같은 메모리에서의 인터럽트 또는 저장된 값은 런타임 환경 또는 오퍼레이팅 시스템의 일부일 수도 있는 키패드 인터페이스 (3) 에 의해 수신될 수도 있다. 키패드 인터페이스 (3) 의 목적은 애플리케이션 소프트웨어 (2) 와 컴퓨팅 디바이스 키패드 (5) 간에 공통 인터페이스를 제공하는 것이다. 따라서, 키 누름 이벤트 신호들은 애플리케이션 레이어 (2) 가 해석할 수 있는 키 누름 이벤트 신호들 또는 메시지들의 형태 (예컨대, ASCI 문자 값들) 로 애플리케이션 레이어 (2) 에게 전달될 수도 있다.
도 1 에서 도시된 바와 같이 이전에 공지된 시스템/하드웨어 아키텍처들을 이용하여, 애플리케이션 개발자들은 "표준" 키패드 레이아웃 (예컨대, QWERTY 키보드 또는 숫자 패드) 또는 애플리케이션이 로딩될 수도 있는 모바일 디바이스의 각 유형에 고유한 키패드 레이아웃으로 동작하도록 각자의 소프트웨어를 적응시켜야만 했다. 특정한 키 세트 (예컨대 게임 또는 디바이스 원격 제어) 를 필요로 하는 애플리케이션은 고정된 키패드 레이아웃을 갖는 디바이스들상에서 동작되지 않을 수도 있거나 또는 제한된 또는 사용자 친화적 방식으로 동작가능할 수도 있다. 애플리케이션 소프트웨어와 키패드들간의 표준 인터페이스로서 키패드 프로토콜을 제공하기 위한 시스템들 및 방법들, 및 다른 사용자 인터페이스들은 공동 소유된 "Standardized Method and Systems for Providing Configurable Keypads" 라는 명칭으로 2008년 6월 16일에 출원된 미국 특허 출원 12/139,823 에서 최근에 개시되었다. 미국 특허 출원 12/139,823 의 전체 내용들은 여기서 모든 목적을 위해 참조로서 병합된다.
본 발명의 다양한 양태들은 특정한 사용자에 맞춤화된 키패드 레이아웃을 정의하기 위한 방법들 및 시스템들을 제공한다. 학습 알고리즘들을 이용하여, 다양한 양태들을 구현하는 컴퓨팅 디바이스는 사용자의 타이핑 패턴들, 키 간격, 및 키 크기를 학습할 수 있고, 가상 키보드의 키들을 사용자에게 편안하고 사용자 타이핑 에러를 감소시키는 위치들, 크기들, 및 배향들로 "모핑 (morph)" 할 수 있다. 일 양태에 따르면, 사용자는 컴퓨팅 디바이스에 의해 제공된 교습 루틴을 따름으로써 맞춤형 키패드 레이아웃을 생성할 수 있다. 예를 들어, 컴퓨팅 디바이스는 디스플레이상에 디폴트 키패드 레이아웃을 제공할 수도 있고 사용자로 하여금 일련의 키 스트로크들을 수행할 것을 프롬프트할 수도 있다. 사용자가 이와 같은 명령들을 따르고 각각의 키들을 두드릴 때, 컴퓨팅 디바이스는 각 키에 대응하는 터치 위치를 결정하고 이 정보를 이용하여 사용자의 손에 매칭되는 키들의 위치, 크기, 형상, 및 배향과 함께 키패드 레이아웃의 적절한 엔벨로프들을 발견할 수 있다. 이러한 교습 루틴의 결과들은 컴퓨팅 디바이스가 가상 키패드 (예컨대, 터치스크린상 또는 투사된 키보드) 에서의 키들의 디스플레이를 생성하는데 이용하는 키패드 레이아웃 데이터로서 저장될 수도 있다.
키패드 레이아웃 데이터 (및 이에 따른 가상 키패드의 레이아웃) 는 사용자가 컴퓨팅 디바이스에 알려진 텍스트를 타이핑하고 (예컨대, 컴퓨팅 디바이스의 디스플레이상에 제공된 단락을 타이핑함) 사용자의 손가락들에 의한 키 히트들 (key hits) 에서의 가변성을 기록하도록 입력된 키스트로크들이 프로세싱되는 트레이닝 시퀀스에 의해 추가로 최적화될 수도 있다. 사용자의 타이핑 가변성의 분석들은 키들을 추가로 형상화하고, 위치결정하거나 정의하는데 이용될 수 있고 자동 수정 알고리즘들을 적용하는데 이용될 수 있는 각각의 키들에 대한 엔벨로프를 정의하는데 이용될 수 있다.
학습 알고리즘들은 키패드 레이아웃 데이터에서 기록된 키 엔벨로프들 및 위치들을 개량하기 위해 손가락 터치들을 가상 키 위치들에 상관시키고 오기 에러들을 인식하도록 시간에 걸쳐 사용자의 타이핑을 모니터링하도록 추가로 구현될 수도 있다. 사용자의 타이핑 패턴들을 분석함으로써 가상 키패드 레이아웃을 개량시키는 것은 사용자 타이핑 에러들을 감소시키는데 도움을 주는 가상 키보드를 컴퓨팅 디바이스가 제공할 수 있게 한다. 사용자 키 스트로크 에러들은, 타이핑된 글자들 또는 숫자들의 사용자 수정을 주목하고, 철자 체크 또는 자동 완성 기능을 갖는 텍스트 기술들을 통해 부정확한 키스트로크들을 인식함으로써 인식될 수도 있다. 이와 같은 학습 알고리즘들의 출력은 메모리에 저장될 수도 있고 사용자와 연관될 수도 있는 개량된 키패드 레이아웃 데이터일 수도 있다.
키패드 레이아웃 데이터는 컴퓨팅 디바이스의 메모리 내, 또는 유형적 매체상에 저장될 수 있고, 통신 링크를 통해 송신될 수 있는 하나 이상의 데이터 테이블들의 형태로 존재할 수 있다. 키패드 레이아웃 데이터를 또 다른 컴퓨팅 디바이스에 송신하는 것은 사용자의 맞춤형 키보드가 다른 컴퓨팅 디바이스들상에서 구현될 수 있도록 해줄 수도 있다. 사용자의 손 크기, 리치 (reach), 능숙도, 및 타이핑 패턴에 맞춤화된 휴대형 가상 키보드들을 사용자들이 생성할 수 있도록 해줌으로써, 다양한 양태들은 사용자의 생리학적 변동들과 데이터 입력에 이용된 기술 변동들 모두에 적응할 수 있는 방식으로 효율적인 데이터 입력을 용이하게 해준다.
도 2 를 참조하여 아래에서 보다 완전히 설명하는 바와 같이, 다양한 양태들과 연관된 학습 알고리즘들은 학습 모듈에서의 컴퓨팅 디바이스 내에서 구현될 수도 있으며, 이 학습 모듈은 컴퓨팅 디바이스의 프로세서상에서 동작하는 프로세서 실행가능한 명령들의 모듈일 수도 있다. 비제한적인 예로서, 학습 모듈은 트레이닝 루틴을 이용할 수도 있고 시간에 걸쳐 사용자 타이핑을 추적하여 특정한 사용자에 대해 맞춤화된 QWERTY 키보드의 키패드 레이아웃을 정의할 수도 있다.
다양한 양태들이 터치 감지면, 터치스크린, 및 투사된 키보드 디스플레이와 같은 임의의 다양한 가상 키보드들을 이용하는 컴퓨팅 디바이스들상에서 구현될 수도 있다.
아래에서는 학습 모듈 및 트레이닝 루틴들을 QWERTY 키보드 레이아웃의 환경에서 설명하지만, 상이한 키 레이아웃들을 갖는 영숫자 키패드들 및 숫자 키패드들과 같은, 다른 유형의 키패드들을 정의하도록 다양한 양태들이 적용될 수도 있다. 예를 들어, 다양한 양태들은 또한, 캐나다 다중어 표준, 캐나다 프랑스어, 체코어, 덴마크어, 독일어, 페로어, 아일랜드어, 이탈리아어, 노르웨이어, 폴란드어, 포르투갈어(포르투갈), 포르투갈어(브라질), 루마니아어(루마니아 및 몰도바), 슬로바키아어, 스페인어(스페인), 스페인어(라틴 아메리카), 스웨덴어/핀란드어, 영국, 범영국, 및 US 인터네셔널용으로 정의된 것과 같은, QWERTY 키보드 레이아웃들의 변형 형태들에 적용될 수도 있다. 다양한 양태들은 동일하게 예컨대, (체코어, 헝가리어, 독일어, 및 오스트리아어, 슬로바키아어, 보스니아어, 크로아티아어, 세르비아어 (라틴어), 및 슬로베니아어, 세르비안어 (키릴어), 스위스 독일어, 스위스 프랑스어, 스위스 이탈리아어, 리히텐슈타인어, 및 룩셈부르크어용으로 정의된 것을 포함한) QWERTZ, (프랑스어 및 벨기에어용으로 정의된 것과 같은 것을 포함한) AZERTY, QZERTY, 드보락 키보드, 콜맥 키보드, 터키어, 및 코어드 키보드를 포함한 다른 유형들의 키보드 레이아웃들에도 적용된다. 또한, 다양한 양태들이 예컨대, 아라비아어, 아르메니아어, 그리스어, 헤브라이어, 러시아어, 우크라이나어, 불가리아어, 데바나가리어, 타이어, 크르메어, 티베트 문자, 티베트어(중국), 종카어(부탄), 중국어, 일본어, 한글(한국어), 두벌식, 세벌식 390, 세벌식 최종, 및 세벌식 순아래를 포함한, 비 라틴 알파벳 및 비 알파벳 문자에 최적화된 키보드들에 적용될 수도 있다. 또한, 다양한 양태들이 피아노 키보드와 같은, 뮤지컬 키보드들에 적용될 수 있다.
맞춤형 가상 키보드를 생성하도록 사용자가 컴퓨팅 디바이스를 트레이닝하기 전에, 컴퓨팅 디바이스는 터치 감지면 (예컨대, 터치스크린) 의 치수에 일치하는 표준화 크기의 QWERTY 키보드와 같은, 디폴트 레이아웃에 기초한 키보드를 디스플레이할 수도 있다. 후술하는 이러한 디폴트 키보드와 사용자가 인터페이싱함으로써, 학습 모듈은 키들을 재배치하여 이러한 트레이닝의 끝에서 사용자의 가상 키보드 레이아웃은 디폴트 레이아웃과는 상이할 수 있다.
대안적으로, 컴퓨팅 디바이스는 사용자들이 각자의 선호에 따라 키보드들을 위치시키고 배향시킬 수 있게 하도록 구성될 수도 있다. 사용자의 손의 생리상태에 관해 학습하기 위해, 컴퓨팅 디바이스는, 스피커 또는 디스플레이된 텍스트와 같은 것을 통해서, 사용자가 키보드를 위치시키기를 원하는 곳에 사용자 자신의 손을 터치 감지면상에 위치시키라는 명령들을 사용자에게 발행할 수도 있다. 예를 들어, 사용자가 “ASDF” 키들이 위치되기를 선호하는 곳을 좌측손의 손가락들이 터치하고, 사용자가 “JKL;” 키들이 위치되기를 선호하는 곳을 우측손의 손가락들이 터치하며, 사용자가 스페이스 키(들)이 위치되기를 선호하는 곳을 엄지손가락들이 터치하도록 사용자는 자신의 손들을 터치 감지면상에 올려놓도록 명령받을 수도 있다. 컴퓨팅 디바이스는 각각의 손가락의 터치 위치들을 결정하고, 이 터치 정보를 이용하여 사용자의 손가락 터치들에 매칭되도록 크기조정되고 배향된 가상 키보드를 생성 및 디스플레이한다.
사용자가 가상 키패드의 위치 및 크기를 정의할 수 있도록 하는 것의 일부로서, 손가락들을 키보드상에 보다 가깝게 위치시킬 수록 보다 빨리 타이핑할 수 있다는 것을 연구들이 보여왔다는 것을 컴퓨팅 디바이스는 사용자에게 상기시킬 수도 있다. 추가적으로, 손바닥들을 감지면에 올려 놓는 것이 보다 편안하다면 그렇게 하라는 것을 사용자는 프롬프트받을 수도 있다.
손가락들의 위치는 터치 감지면에 의해 캡쳐될 수도 있고 좌표 시스템에 따라 컴퓨팅 디바이스에 의해 기록될 수도 있다. 예를 들어, "A" 키와 ";" 키의 위치는 디스플레이 매트릭스 또는 “X-Y” 좌표 시스템과 관련하여 결정될 수도 있으며, 좌표들은 키패드 레이아웃 데이터에 저장된다. 손가락 끝 위치 데이터는 컴퓨팅 디바이스에서 구현된 학습 모듈에 의해 프로세싱될 수도 있다. 키들은 사용자의 손가락 터치의 중심점 및 키의 크기 및 형상을 정의하는 엔벨로프의 관점에서 정의될 수도 있다. 보다 자세하게 후술할 바와 같이, 엔벨로프는 사용자가 타이핑하는 동안의 특정 키 터치들의 위치의 통계적 분석들에 기초하여 크기조정될 수도 있고, 이로써 엔벨로프는 사용자 터치들 대부분을 망라할 수도 있다. 중심점 좌표상에 중심이 있는 이미지를 갖는 이미지를 생성하는데 엔벨로프가 이용될 수도 있다. 엔벨로프 정보는 또한 컴퓨팅 디바이스 (또는 키패드 드라이버) 가 키 이미지들사이에 위치하는 키스트로크를 명확화하기 위해 이용할 수 있는 정보를 제공하는 것과 같이 키 이미지를 넘어서 확장할 수도 있다.
교습 프로세스에서, 컴퓨팅 디바이스는 특정한 가상 키보드의 다른 키들의 적절한 위치들을 학습할 수도 있다. 적절한 키 위치들은 X 및 Y 좌표들과 같은, 터치 감지면의 좌표 구조에 따라 정의될 수도 있거나, 또는 각각의 키들이 각각의 인접 키로부터 설정된 거리 및 각도 떨어져서 위치되는 상대적 오프셋들에 따라 정의될 수도 있다. 좌표 시스템에서, 키들은 사용자 터치들의 중심에 대응하는 중심점에 위치되고 사용자 터치 위치들의 가변성에 의해 정의될 수도 있는 엔벨로프에 기초하여 크기조정될 수도 있다. 상대적 위치 시스템에서, 모든 키들은 두 개 이상의 앵커 키들의 정의된 위치들에 기초하여 위치될 수도 있다. 좌표 시스템 가상 키보드의 키들의 좌표들과 크기들 및 상대적 시스템의 키들간의 상대적 오프셋들은 키패드 레이아웃 데이터로서 저장될 수도 있다.
또 다른 양태에서, 트레이닝 루틴은 사용자의 키 스트라이크 정확성을 계속해서 개선시킬 수도 있다. 사용자는 다수의 싸이클들에 걸쳐 지정 문구 또는 단락을 타이핑할 것을 요청받을 수도 있다. 예를 들어, 사용자는 타이핑할 단락이나 또는 사용자가 타이핑해야 하는 현재 단어 및 앞선 두 개 단어들을 보여주는 프롬프트를 제공받을 수도 있다. 제 1 싸이클에서, 컴퓨팅 디바이스가 사용자로 하여금 각 글자를 칠 것을 프롬프트할 때, 키는 사용자의 손가락이 터치하는 곳으로 이동할 수도 있다. 학습 모듈은 올바른 키의 중심의 위치로부터 문턱값 거리만큼 떨어진 키 스트라이크들로서 정의된 타이핑 에러들을 무시하도록 구성될 수도 있다. 제 2 싸이클에서, 중심점 (즉, 키의 중심의 위치) 은 사용자의 키 스트라이크들의 위치들의 평균으로서 결정될 수도 있다. 후속하는 싸이클들에서, 이전의 중심점들의 생성은 사용자가 키패드 레이아웃에 점점 더 편안해질 수록 매번마다 덜 스케일링될 수도 있다. 사용자의 키 스트라이크 속도 및 에러 레이트가 안정화 상태에 이를 때, 트레이닝 루틴은 종결될 수도 있다.
도 2 는 다양한 양태들을 가능하게 해주는 컴퓨팅 디바이스의 시스템 컴포넌트도이다. 컴퓨팅 디바이스는 가상 키보드 (12) 가 디스플레이되는 터치 감지면 (14) 을 포함할 수도 있다. 터치 감지면 (14) 은 감지면에 대한 터치들과 연관된 신호들을 수신하고, 이러한 신호들을, 키패드 인터페이스 (3) 와 같은, 컴퓨팅 디바이스 오퍼레이팅 시스템에 의해 해석될 수 있는 좌표 신호들 및 터치 이벤트로 변환시키는 하드웨어 드라이버 (4) 에 결합될 수도 있다. 설명의 용이를 위해, 키패드 인터페이스 (3) 는 프로세스 모듈로서 도시되지만, 이것은 컴퓨팅 디바이스 오퍼레이팅 시스템의 기능의 일부일 수도 있거나 또는 컴퓨팅 디바이스의 펌웨어 또는 하드웨어 컴포넌트일 수도 있다. 예시적인 구현에서, 키패드 인터페이스 (3) 기능은 오퍼레이팅 시스템의 환경 내에서 동작하는 애플리케이션 (2) 에게 터치 이벤트 신호들을 애플리케이션들 (2) 에 의해 해석될 수 있는 포맷으로 전달한다. 하드웨어 및 컴퓨팅 디바이스 구현에 따라, 키패드 인터페이스 (3) 와 결합하여 터치 감지면 (14) 을 위한 하드웨어 드라이버 (4) 는 가상 키보드 (12) 디스플레이를 생성할 수도 있다. 또한, 하드웨어 드라이버 (4) 및/또는 키패드 인터페이스 (3) 는 터치들의 위치 좌표들에 기초하여 터치 감지면 (14) 상의 터치들을 특정 키들상의 터치들로서 해석할 수도 있다. 그 후 키패드 인터페이스 (3) 는 눌러진 키를 물리적 키보드로부터 초래된 것처럼 식별하는 키 누름 이벤트를 애플리케이션 (2) 에 전달할 수도 있다.
일 양태에서, 키패드 인터페이스 (3) 는 사용자의 키스트로크들로부터 적절한 키 위치들을 학습하도록 구성된 학습 모듈 (10) 과 협력할 수도 있다. 상술한 바와 같이, 학습 모듈 (10) 은 키패드 인터페이스 (3) 또는 하드웨어 드라이버 (4) 로부터 터치 감지면 (14) 에 대한 손가락 터치들의 위치들에 관한 정보를 수신하고 이 좌표 정보를 예상된 키스트로크들과 상관시켜서 메모리에 저장되어 있는 키패드 레이아웃 데이터 (8) 를 생성하거나 또는 개량시킬 수 있다. 그 후 학습 모듈 (10) 에 의해 생성된 키패드 레이아웃 데이터 (8) 는 하드웨어 드라이버 (4) (또는 몇몇 구현들에서 키패드 인터페이스 (3)) 에 의해 액세스되고 이용되어 터치 감지 디바이스 (14) 상에서 디스플레이된 가상 키패드 (12) 를 생성시킬 수도 있다. 키패드 인터페이스 (3) 또는 하드웨어 드라이버 (4) 는 또한 터치 감지면 (14) 으로부터 수신된 터치 좌표들을 애플리케이션 (2) 에 전달될 수 있는 키 터치 이벤트들로 변환시키기 위해 키패드 레이아웃 데이터 (8) 를 이용할 수도 있다. 이러한 방식으로 구성되면, 학습 모듈 (10) 은 컴퓨팅 디바이스상에서 구동되는 애플리케이션 (2) 에 대한 키 터치 이벤트들의 느린 전달 또는 이에 대한 방해 없이 키패드 레이아웃 데이터 (8) 를 개량시킬 수도 있다.
일 양태에서, 학습 모듈 (10) 은 타이핑 에러들을 감소시키고 사용자의 타이핑 숙달도를 증가시키기 위해 가상 키패드 (12) 상의 사용자 키스트로크들을 해석하고 가상 키들의 배치, 배향, 및 크기를 명시하는 키패드 레이아웃 데이터 (8) 를 개량시키는 프로세서 실행가능한 프로세스들일 수 있다. 학습 모듈 (10) 은 애플리케이션 (2) 으로서, 컴퓨팅 디바이스 오퍼레이팅 시스템의 일부로서, 또는 하드웨어 드라이버 (4) 의 일부로서 구현될 수도 있다. 학습 모듈 (10) 은 또한 트레이닝 애플리케이션, (워드 프로세싱 애플리케이션 내에서 구현될 수도 있는 것과 같은) 철자 체크 애플리케이션들, 및 학습 모듈 (10) 에게 의도되거나 또는 예상된 키스트로크들을 통지할 수 있는 자동 수정 애플리케이션들과 같은, 다른 애플리케이션들로부터 정보를 수신할 수도 있다. 특정 키들에게 터치 감지면 (14) 의 기하학적 구조를 링크시키기 위해, 학습 알고리즘들, 인공 지능, 또는 다른 추론 프로세스들을 이용하여, 학습 모듈 (10) 은 각각의 키스트로크들을 희망하거나 또는 적절한 키에 상관시킬 수도 있다. 가상 키패드 (12) 의 키들에 대한 터치 감지면 (14) 의 기하학적 구조의 이와 같은 링크는 사용자의 키스트로크 배치에서의 불가피한 가변성을 설명하는 통계적 분석들을 수반할 수도 있다. 학습 모듈 (10) 의 키패드 레이아웃 데이터 (8) 출력은 키패드 드라이버 (4), 키패드 인터페이스 (3) 또는 컴퓨팅 디바이스 오퍼레이팅 시스템의 다른 엘리먼트가 가상 키패드상의 터치 이벤트를 적절한 문자 (예컨대, ASCII 문자 값) 로 변환하기 위해 이용할 수 있는 메모리에 저장된 상관 매트릭스의 형태로 존재할 수도 있다. 학습 모듈 (10) 이 사용자 키스트로크들을 프로세싱하고 키패드 레이아웃 데이터 (8) 상관 매트릭스를 업데이트할 때, 가상 키보드의 각각의 키들의 크기, 위치, 형상, 및 배향은 학습 모듈 (10) 에 의해 인식된 패턴들과 일치하도록 변경될 수 있다.
도 3 은 학습 모듈 (10) 에 포함될 수도 있는 예시적인 기능의 시스템 컴포넌트도이다. 학습 모듈 (10) 은 추론 엔진 (100), 디폴트 키패드 데이터 테이블 (102), 및 명령 데이터베이스 (106) 를 포함할 수도 있다. 추론 엔진 (100) 은 컴퓨팅 디바이스 프로세서상에서 실행되는 프로세스들 및 규칙들의 형태로 존재할 수 있다. 컴퓨팅 디바이스의 메모리에 저장될 수도 있는, 디폴트 키패드 데이터 테이블 (102) 은 학습 루틴들이 완료되어 키패드 레이아웃 데이터 (8) 를 생성하기 전에 디폴트 가상 키보드를 디스플레이하고 키스트로크들을 해석하는데 이용될 수도 있는 미리프로그래밍된 키패드 레이아웃 데이터일 수도 있다. 학습 모듈 (10) 은 또한 초기 트레이닝 루틴들 동안에 사용자에게 제공될 수도 있는 트레이닝 텍스트 샘플들 및 트레이닝 커맨드들을 포함하는 메모리에 저장될 수도 있는 명령 데이터베이스 (106) 를 포함할 수도 있다.
도 4 는 일 양태에 따른 터치 감지면상에 가상 키패드를 생성하기 위한 예시적인 교습 프로세스 (200) 를 도시하는 프로세스 흐름도이다. 도 4 를 참조하면, 프로세스 (200) 에서의 블럭 (202) 에서, 학습 모듈은 키 위치 데이터를 위해 디폴트 키패드 레이아웃 테이블에 질의하여 디폴트 키패드 데이터를 생성할 수도 있으며, 이 데이터는 블럭 (204) 에서 수신된다. 일 양태에서, 디폴트 키패드 데이터는 터치 감지면에 상관된 "X-Y" 좌표 시스템에서의 키 위치 데이터를 포함할 수도 있다. 또 다른 양태에서, 디폴트 키패드 데이터는 컴퓨팅 디바이스에 연결된 터치 스크린의 픽셀 위치들을 정의하는 로우-컬럼 (row-column) 매트릭스 포맷의 키 위치 데이터를 포함할 수도 있다. 또 다른 양태에서, 디폴트 키패드 데이터는 디폴트 키패드 레이아웃의 각각의 키들의 중심점들간의 평균 거리들을 포함할 수도 있다.
프로세스 (200) 에서의 블럭 (212) 에서, 컴퓨팅 디바이스 내의 학습 모듈 (10) 은 디폴트 키패드 레이아웃 데이터가 터치 감지면 하드웨어 드라이버 (4), 키패드 인터페이스 (3), 및 택일적인 사항으로서, 가상 키보드의 이미지를 생성하기 위한 디스플레이 드라이버에 대해 이용가능해지도록 할 수도 있다. 예를 들어, 학습 모듈은 디폴트 키패드 레이아웃 정보를 키패드 레이아웃 데이터 (8) 에 로딩하여 블럭 (214) 에서 터치 감지면 디바이스 드라이버 (4) (또는 컴퓨팅 디바이스 또는 오퍼레이팅 시스템의 다른 컴포넌트) 가 레이아웃 데이터에 액세스할 수도 있고, 블럭 (216) 에서 가상 키패드의 디스플레이를 생성하기 위해 이 데이터를 이용할 수도 있다.
프로세스 (200) 에서의 블럭 (208) 에서, 학습 모듈은 또한 트레이닝 루틴의 일부로서 사용자에게 제공하기 위한 다음 명령을 획득하기 위해 명령 데이터베이스에 액세스할 수도 있다. 도 5 를 참조하여 아래에서 보다 완전히 설명하는 바와 같이, 일련의 트레이닝 명령들은 학습 모듈이 순차적으로 액세스할 수 있고 사용자에게 제공될 수 있는 데이터베이스에 저장될 수도 있다. 블럭 (218) 에서, 선택된 구성은 사용자에게 디스플레이되거나 또는 청각적으로 제공될 수도 있다. 블럭 (220) 에서, 디스플레이된 단락 또는 문장을 타이핑하는 것에 의해서와 같이, 사용자가 명령들을 따를 때, 그 동안 터치 감지면 디바이스 드라이버는 사용자의 터치들의 좌표들을 캡쳐한다. 블럭 (222) 에서, 학습 모듈 (10) 은 터치 감지면으로부터 키스트로크 위치들을 수신한다. 블럭 (223) 에서, 학습 모듈은 사용자에 대한 명령들에 기초하여 예상되었던 특정 키를 터치 좌표들과 상관시킬 수도 있다. 예를 들어, 만약 사용자가 타이핑할 문장을 제공받았다면, 예상 키는 타이핑할 문장에서 다음번째 글자이다. 터치 위치들을 예상 키들과 상관시키는데 있어서, 학습 모듈은 특정 터치 감지면 좌표들을 특정 키들과 연관시킨다. 일 양태에서, 학습 모듈은 또한 수신된 터치 위치들을 디폴트 키패드 레이아웃 데이터와 비교하여 타이핑했던 키를 추론할 수도 있다. 추가적인 양태에서, 예상 키와 디폴트 키패드 레이아웃 데이터 모두는 특정 키스트로크 좌표들과 연관되어야 하는 키를 결정하는데 이용될 수도 있다. 블럭 (224) 에서, 터치 좌표들-키 연관은 메모리에 저장된 키패드 레이아웃 데이터를 업데이트하거나 또는 생성하는데 이용될 수도 있다. 블럭 (226) 에서, 학습 모듈은 업데이트된 키패드 레이아웃 데이터가 터치 감지면 디바이스 드라이버 (또는 컴퓨팅 디바이스의 다른 컴포넌트들) 에 이용가능해지도록 하여, 블럭 (214) 와 관련하여 상술한 바와 같이, 업데이트된 키패드는 사용자에게 디스플레이될 수 있다.
프로세스 (200) 에서의 결정 블럭 (228) 에서, 학습 모듈은 특정 단계가 완료되었다라고 사용자가 시그널링하였는지 여부를 결정할 수도 있다. 모두는 아니지만, 몇몇 트레이닝 명령들은, 스페이서바를 두 번 두들기는 것에 의해서와 같이, 특정 단계가 언제 완수되었는지를 사용자가 시그널링할 것을 요청할 수도 있다. 만약 명령이 완료되지 않았다면 (즉, 결정 블럭 (228) = "아니오"), 학습 모듈은 블럭 (222) 으로 복귀하여 다음의 사용자 키스트로크 좌표들을 수신하여 다음 키를 위한 키패드 레이아웃 데이터를 업데이트할 수도 있다. 만약 특정 명령이 완료되었다면 (즉, 결정 블럭 (228) = "예"), 결정 블럭 (230) 에서 학습 모듈은 최종적인 트레이닝 명령이 도달되었는지 여부를 결정할 수도 있다. 만약 최종적인 트레이닝 명령이 도달되지 않았다면 (즉, 결정 블럭 (230) = "아니오"), 학습 모듈은 블럭 (208) 으로 복귀하여 명령 데이터베이스로부터 다음 명령에 액세스할 수도 있다. 그 후 블럭들 (218 내지 230) 과 관련하여 상술한 바와 같은 프로세스들을 반복함으로써 사용자의 트레이닝이 진행할 수도 있다. 만약 최종적인 트레이닝 명령이 도달되었다면 (즉, 결정 블럭 (230) = "예"), 제 3 학습 모듈은 트레이닝이 완성되었다라고 사용자에게 통지할 수 있고 트레이닝 프로세스는 블럭 (232) 에서 종결될 수도 있다.
도 4 는 명령들이 터치 감지 스크린상에서 디스플레이될 수도 있다는 것을 도시하지만, 명령들은 다른 수단들을 통해 사용자에게 제공될 수도 있다. 예를 들어, 명령들은 컴퓨팅 디바이스의 오디오 컴포넌트들을 통해 청각적으로 제공될 수도 있다.
대안적인 양태에서, 컴퓨팅 디바이스는 사용자가 키들을 선택하고 키들을 선호하는 위치들로 이동시킬 수 있도록 구성될 수도 있다. 이와 같은 구현에서, 가상 키보드는 터치 감지면상에 디스플레이될 수도 있고, 사용자는 키를 터치하여 홀딩한 후 터치 감지면에서 손가락을 들어 올리기 전에 키를 새로운 위치로 슬라이딩시키도록 프롬프트된다. 학습 모듈은 터치 및 슬라이딩 움직임을 인식할 수도 있고, 키보드 레이아웃 데이터를 업데이트하여 특정 키를 위한 새로운 위치를 기록할 수도 있다. 마찬가지 방식으로, 가상 키보드를 스트레칭, 크기조절, 및 재배향시키기 위해, 사용자들은 디스플레이된 가상 키보드상에 여러 개의 키들을 터치하고 나서 모든 손가락을 이동시킴으로써 전체 키보드를 크기조절하도록 허용될 수도 있다. 예를 들어, 사용자들은 가상 QWERTY 키보드상에서 A, S, D, F, J, K, L 및 ; 키들을 터치하고, 그런 후 손가락들을 서로에 대해 멀어지도록 슬라이딩시켜 가상 키보드를 확장시키거나, 또는 손가락을 모아 합쳐지도록 슬라이딩시켜 가상 키보드를 수축시키도록 프롬프트될 수도 있다. 사용자는 특정 키 시퀀스 (예를 들어, 스페이스 키를 두 번) 를 쳐서 이러한 키 재배치 프로세스의 완료를 시그널링하도록 프롬프트될 수도 있다.
상술한 바와 같이, 학습 모듈 (10) 에 의해 이용된 트레이닝 명령들은 명령 데이터베이스 (106) 에 저장될 수도 있고, 이 명령 데이터베이스 (106) 는 도 5 에서 도시된 바와 같은 데이터 테이블의 형태로 존재할 수도 있다. 이와 같은 명령 데이터베이스 데이터 테이블 (300) 은 인덱스 (302) 를 통해 학습 모듈 (10) 에 의해 참조될 수도 있고, 디스플레이 또는 사운드 청각적 명령들을 사용자에게 생성시키기 위해 이용될 수도 있는 다양한 명령들 (306) 을 포함할 수도 있다. 명령 데이터베이스 데이터 테이블 (300) 은 또한 사용자가 누를 것으로 예상되는 키스트로크 (308) 를 포함함으로써 추론 엔진 (100) 이 특정 키들에 키 터치 위치들을 상관시킬 수도 있다. 예를 들어, 명령 데이터베이스 데이터 테이블 (300) 은 터치 감지면상에 키보드를 위치시키고 (인덱스 0) 디폴트 키보드를 크기조절하기 (인덱스 1) 위한 초기 명령들과, 그 뒤에 이어서 추론 엔진 (100) 이 사용자의 타이핑 패턴들을 학습할 수 있도록 하기 위해 사용자가 타이핑할 수도 있는 트레이닝 텍스트들 (인덱스 2 및 인덱스 3) 을 포함할 수도 있다. 명령 데이터베이스 (106) 에서 트레이닝 루틴들을 조직함으로써, 전체적인 학습 모듈 (10) 을 교체하지 않고서 추론 머신 (100) 및 트레이닝 루틴들에 대한 업데이트들이 완수될 수 있다.
학습 모듈 (10) 이 사용자의 손가락 위치들에 관해 학습하고, 사용자가 다양한 키들을 재배치하도록 허용하며, 가상 키보드 레이아웃을 더 최적화하기 위해 일련의 타이핑 세션들을 관리하는 예를 통해 학습 모듈 (10) 의 동작이 도시될 수도 있다. 예를 들어, 사용자가 “ASDF” 키들이 위치되기를 선호하는 영역에서 사용자 자신의 좌측손을 터치 감지 스크린상에 위치시키고, 사용자가 “JKL;” 키들이 위치되기를 선호하는 영역에서 사용자 자신의 우측손을 터치 감지 스크린상에 위치시키며, 사용자가 스페이스 키들이 위치되기를 선호하는 곳에 각각의 엄지손가락들을 위치시키도록 (스피커 또는 디스플레이된 텍스트를 통해) 사용자는 명령받을 수도 있다. 이와 달리, 사용자는 키보드의 디폴트 레이아웃을 제공받을 수도 있고 사용자 자신의 손가락들을 특정 키들상에 위치시킬 것을 요청받을 수도 있다. 예를 들어, 도 8 은 양쪽에 터치 스크린면들을 갖춰서 오픈될 때에 사용자가 거의 풀 크기의 가상 QWERTY 키보드를 제공받도록 하는 모바일 디바이스의 터치 스크린상에서 사용자에게 제공될 수도 있는 디폴트 키패드 레이아웃 (320) 의 도면이다.
초기 가상 키보드 레이아웃이 확립되면, 학습 모듈 (10) 은 사용자로 하여금 사용자의 특정 타이핑 패턴들과 일치하는 키 인식을 향상시키기 위해 키보드 레이아웃을 개량시키도록 하는 트레이닝 루틴들에 참여할 것을 프롬프트할 수도 있다. 예를 들어, 사용자는 다양한 고정된 문구들을 한 번 이상 타이핑하도록 프롬프트될 수 있다. 예를 들어, 사용자는 “The quick brown fox jumped over the lazy dog's back” 와 같은, 문구를 타이핑하도록 하는 프롬프트를 디스플레이상에서 제공받을 수도 있다. 사용자가 각각의 글자를 칠 때, 학습 모듈 (10) 은 터치 감지면으로부터 수신된 터치 위치 정보를 예상 키와 비교한다. 그 후 터치 위치 정보는 키패드 레이아웃 데이터 (8) 에서의 예상 키에 상관될 수도 있다. 일 양태에서, 디스플레이된 가상 키보드 이미지는 각각의 키스트로크로 조정되어 키 이미지들이 사용자가 키스트로크들을 타이핑했던 곳으로 이동될 수도 있다. 학습 모듈 (10) 은 예상 키의 예상된 위치로부터 문턱값 거리만큼 떨어진 키 스트라이크들과 같은 타이핑 에러들을 무시하도록 구성될 수도 있다.
사용자가 보다 많이 타이핑할 수록, 학습 모듈은 사용자의 고유한 타이핑 패턴들에 대해 가상 키패드를 보다 잘 맞춤화할 수 있다. 디스플레이된 문구들을 타이핑하는 것을 사용자가 진행할 때, 각각의 키들의 중심점 위치들은 평균화되어 사용자에 의한 각 키들에 대한 일반적인 키 스트라이크 위치를 반영할 수도 있다. 이와 같은 트레이닝 루틴들이 진행되어 키 스트라이크 위치들의 갯수가 축적될 때, 특정 키들상의 사용자의 키 스트라이크들의 가변성에 관한 정보가 획득될 수도 있는 동안, 평균적인 터치 중심점은 점점 덜 변화될 수도 있다. 정상적인 키 스트라이크 위치 가변성을 수용하기 위해, 학습 모듈은 평균 중심점에 대한 표준 편차와 같은 키 스트라이크 위치 가변성을 반영한 통계적 파라미터들을 계산하고 이러한 가변성을 반영하기 위해 가상 키 이미지를 크기정할 수도 있다. 따라서, 사용자가 일관된 위치에서 친 키들 (예컨대, QWERTY 키보드상에서 “F” 및 “J” 키들) 은 상대적으로 작은 크기와 대칭적인 형상 (예컨대, 타원형 또는 정사각형) 을 갖고 디스플레이될 수도 있는 반면에, 비일관적으로 쳤던 키들은 상대적으로 큰 크기와 비대칭적인 형상 (예컨대, 가변성의 축을 따라 보다 긴 형상) 을 갖고 디스플레이될 수도 있다. 그 후 사용자의 타이핑 패턴들에 관한 이와 같은 학습의 결과들은 맞춤형 가상 키패드의 디스플레이를 생성하기 위해 이용되는 키패드 레이아웃 데이터에 저장된다. 키 위치들 및 형상이 이러한 방식으로 최적화된 후의 맞춤화된 가상 키보드 레이아웃의 예시가 도 9 에서 도시된다.
도 6a 는 트레이닝 루틴에서 사용자의 키스트로크들을 학습하기 위해 학습 모듈 (10) 내에서 구현될 수도 있는 예시적인 프로세스 (240) 를 도시한다. 프로세스 (240) 에서의 블럭 (242) 에서, 컴퓨팅 디바이스 내의 학습 모듈 (10) 은 사용자로 하여금 일련의 키스트로크들을 입력하거나 또는 몇몇의 정의된 텍스트를 타이핑할 것을 프롬프트할 수도 있다. 이것은 사용자가 컴퓨팅 디바이스 디스플레이상에 타이핑해야 하는 텍스트를 디스플레이하거나 또는 컴퓨팅 디바이스 오디오 회로들을 통해 오디오 화일을 재생함으로써 달성될 수도 있다. 사용자가 (예컨대, 도 8 및 도 9 에서 도시된) 가상 키보드상에서 타이핑할 때, 블럭 (242) 에서 컴퓨팅 디바이스는 터치 감지면으로부터 각각의 키스트로크의 좌표들을 수신한다. 블럭 (244) 에서, 학습 모듈 (10) 은 타이핑할 것으로 예상된 키에 기초하여 각각의 키스트로크로 터치된 특정 키를 결정할 수도 있다. 예를 들어, 학습 모듈 (10) 은 사용자가 프롬프트된 키스트로크들 또는 텍스트를 타이핑할 때 뒤를 따를 수도 있다. 블럭 (258) 에서, 학습 모듈 (10) 은 블럭 (244) 에서 결정된 키에 연관된 새로운 평균 키스트로크 좌표를 계산할 수도 있다. 예를 들어, 학습 모듈 (10) 은 특정 키에 대하여 수신된 터치 좌표들을 이전에 수신된 터치 좌표들에 추가하여 새로운 평균 좌표들을 계산할 수도 있다. 또한, 블럭 (260) 에서, 사용자의 키스트로크들의 가변성에 대응하는 통계적 파라미터를 업데이트하는 것에 의해서와 같이, 학습 모듈은 새로운 키 엔벨로프를 계산할 수도 있다. 계산된 평균 키스트로크 좌표 및 새로운 키 엔벨로프 통계치들을 이용하여, 블럭 (262) 에서, 학습 모듈 (10) 은 키패드 레이아웃 데이터 (8) 를 업데이트할 수도 있다. 결정 블럭 (264) 에서, 학습 모듈은 입력된 텍스트에 기초하여 사용자에 의해 타이핑할 글자들이 더 있는지 여부를 결정할 수도 있다. 만약 입력할 텍스트가 더 있다면 (즉, 결정 블럭 (264) = "예"), 학습 모듈은 다음 키스트로크의 좌표들을 계속해서 수신할 수도 있고, 블럭 (242) 로 복귀한다. 하지만, 만약 사용자가 제공된 텍스트 모두를 타이핑하였으며, 이로써 특정한 학습 세션이 종료되었다면 (즉, 결정 블럭 (264) = "아니오"), 블럭 (242) 에서 학습 모듈은 업데이트된 키패드 레이아웃 데이터 (8) 를 메모리에 저장할 수도 있다. 그 후 이 업데이트된 키패드 레이아웃 데이터는 가상 키보드 생성기 (즉, 터치스크린, 투사 키보드 디바이스 등) 에게 이용가능해질 수도 있다.
도 6a 는 또한 각각의 키가 위치되어야 하는 곳에서 사용자가 터치 감지면을 터치함으로써 가상 키패드에서의 각 키의 배치를 규정하도록 해주는 단순한 트레이닝 모드를 도시한다. 이 방식에서, 디폴트 키보드 레이아웃에 대한 필요성은 존재하지 않으며 사용자는 터치 감지면의 경계들 내에서 임의의 배향의 키보드를 생성할 수 있다. 프로세스 (240) 에서의 블럭 (242) 에서, 학습 모듈 (10) 은 사용자로 하여금 A 에서부터 Z 까지의 시퀀스의 각 키를 순차적으로 타이핑할 것을 (예컨대 시각적으로 또는 청각적으로) 프롬프트할 수도 있다. 그 후 사용자는 터치면을 순차적으로 터치하여 각각의 글자 키에 대한 희망하는 위치를 표시할 수도 있다. 블럭 (242) 에서, 학습 모듈 (10) 은 각 터치에 대한 좌표들을 수신한다. 사용자는 각 키 위치에 대해 감지면을 한번 터치할 것으로 예상되기 때문에, 블럭 (244) 에서 학습 모듈 (10) 은 시퀀스에서의 다음 키에 기초하여 터치 키를 결정한다. 블럭 (258) 에서, 학습 모듈은 터치된 키에 대한 키스트로크 좌표들 (즉, 키스트로크 좌표들의 단일 세트의 평균은 좌표들 자체임) 을 계산한다. 사용자는 각 키에 대해 한번만 감지면을 터치하기 때문에 사용자가 키보드 레이아웃을 정의하는 처음에는 블럭 (260) 은 불필요할 수도 있다. 블럭 (252) 에서, 학습 모듈은 터치된 위치에 대해 결정된 키를 링크시켜주는 키패드 레이아웃 데이터를 처음으로 업데이트하거나 또는 생성한다. 이 프로세스는 각 키에 대한 터치가 수신될 때 까지 (즉, 결정 블럭 (264) = "아니오") 계속되며, 각 키에 대한 터치가 수신될 때 블럭 (242) 에서 키패드 레이아웃 데이터는 메모리에 저장된다.
사용자들에게 실시할 다수의 상이한 텍스트 샘플들을 제공함으로써, 학습 모듈 (10) 은 사용자들이 각자의 가상 키보드들을 맞춤화하여 각자의 타이핑 에러들을 감소시킬 수 있도록 해줄 수 있다. 따라서, 학습 모듈 (10) 을 트레이닝하기 위한 프로세스는 사용자들이 음성 인식 시스템들을 트레이닝했던 방식과 유사할 수도 있다.
일 양태에서, 학습 모듈 (10) 은 키보드 레이아웃 데이터 (8) 를 개량시키기 위해 사용자의 타이핑을 추적하는 것을 계속함으로써 보다 최적화된 키보드 레이아웃을 제공할 수도 있다. 도 6a 는 흔한 오기 에러들을 인식함으로써 계속하여 가상 키보드를 개량시키기 위해 학습 모듈에서 구현될 수도 있는 예시적인 프로세스 (260) 를 도시한다. 프로세스 (260) 에서의 블럭 (242) 에서, 학습 모듈은 가상 키패드상에서의 사용자 타이핑을 모니터링하고 각각의 키스트로크의 좌표들을 수신할 수도 있다. 블럭 (244) 에서, 학습 모듈은 메모리에 저장된 키패드 레이아웃 데이터 (8) 를 이용하여 터치된 키를 결정할 수도 있다. 이 방식에서, 터치되었던 키의 식별은 도 3 에서 도시된 키패드 인터페이스 (3) 및/또는 디바이스 드라이버 (4) 에 의해 이용된 동일한 데이터를 이용하여 학습 모듈 (10) 에 의해 달성될 수도 있다. 이와 달리, 학습 모듈 (10) 은 디바이스 드라이버 (4) 또는 키패드 인터페이스 (3) 로부터 키 아이덴티티를 수신할 수도 있다. 철자 체크 루틴들 또는 자동 완성 기능을 갖는 텍스트 입력 루틴들을 이용하여, 결정 블럭 (246) 에서 학습 모듈 (10) 은 타이핑된 단어가 완성되었는지 여부를 결정할 수도 있다. 완성된 단어는 또한 스페이스, 콤마, 또는 마침표에 의해 인식될 수도 있다. 만약 단어가 완성되지 않았다면, 학습 모듈 (10) 은 계속해서 키스트로크들을 모니터링하고 대응하는 키 스트라이크들을 결정할 수도 있다 (블럭 242 및 블럭 244 를 반복함). 만약 단어가 완성되었다라고 학습 모듈이 결정하면 (즉, 결정 블럭 (246) = "예"), 결정 블럭 (248) 에서 학습 모듈은 입력한 단어를 철자 체크 사전과 비교할 수도 있다. 이 방식에서, 학습 모듈 (10) 은 타이핑한 단어가 정확하게 인식되었는지 여부를 결정할 수 있다. 결정 블럭 (250) 에서, 학습 모듈 (10) 은 입력한 단어가 철차가 정확한지 여부를 결정할 수 있다. 만약 입력한 단어가 철자가 정확한 것으로 결정되면 (즉, 결정 블럭 (250) = "예"), 학습 모듈 (10) 은 수신된 키스트로크 데이터를 이용하고 블럭 (256) 내지 블럭 (266) 을 실행함으로써 키패드 레이아웃 데이터를 업데이트하는 것을 진행할 수도 있다. 구체적으로, 블럭 (256) 에서, 학습 모듈은 타이핑된 단어의 첫번째 글자를 선택할 수도 있고, 블럭 (258) 에서 이 키에 대한 키스트로크의 수신된 터치 좌표들을 이용하여 선택된 키에 대한 새로운 평균 키스트로크 좌표들을 계산할 수도 있다. 블럭 (262) 에서, 학습 모듈은 선택된 키의 평균 중심점 좌표들에 관한 키스트로크들의 새로운 엔벨로프를 계산할 수도 있다. 도 10 을 참조하여 아래에서 보다 완전히 설명하는 바와 같이, 키 엔벨로프 파라미터들의 이와 같은 업데이트는 각각의 키와 연관된 터치 위치 확률 프로파일을 생성하기 위한 다양한 통계적 분석들을 수반할 수도 있다. 블럭 (264) 에서, 업데이트된 키패드 레이아웃 데이터는 업데이트되어 메모리에 저장될 수도 있다. 결정 블럭 (266) 에서, 학습 모듈은 입력 단어에서 분석될 글자들이 더 있는지 여부를 결정할 수도 있고, 만약 글자들이 더 있다면, 블럭 (256) 으로 복귀하여 단어에서의 다음 글자를 선택한다. 만약 입력된 단어에서의 모든 글자들이 분석되었다면 (즉, 결정 블럭 (266) = "아니오"), 학습 모듈 (10) 은 블럭 (242) 으로 복귀하여 사용자에 의해 타이핑된 다음 단어의 키스트로크 좌표들을 분석할 수도 있다.
프로세스 (260) 의 결정 블럭 (250) 으로 복귀하여, 만약 입력된 단어가 철자가 부정확하다 (즉, 결정 블럭 (250) = "아니오") 라고 학습 모듈 (10) 이 결정하면, 블럭 (252) 에서 학습 모듈은 철자 에러가 가상 키보드상의 인접한 글자들의 뒤바뀜에 기인한 것인지 여부를 결정할 수도 있다. 이러한 결정은 타이핑한 단어를 철자가 정확한 단어와 비교하여 키보드상의 인접 글자들의 교환이 철자 에러를 수정할 것인지 여부를 결정하는 것을 수반할 수도 있다. 만약 철자 에러가 가상 키보드상에서의 서로 인접한 글자들의 혼동 (mix up) 에 기인된 것이라면, 이것은 특정 키의 사용자의 타이핑의 가변성 또는 비최적화된 키패드 레이아웃에 기인할 수도 있는 사용자의 타이핑의 부정확한 해석을 나타낼 수도 있다. 그러므로, 만약 오기 에러가 인접 키들의 뒤바뀜에 기인되었던 것이라면 (즉, 결정 블럭 (252) = "예"), 블럭 (254) 에서, 식별된 오기 에러를 수정하기 위해 학습 모듈 (10) 은 수신된 터치 좌표들과 연관된 키 지정을 변경할 수도 있다. 학습 모듈은 또한 상술한 블럭들 (256 내지 266) 을 실행하여 수정된 키 지정에 대한 키패드 레이아웃 데이터를 분석하고 업데이트할 수도 있다. 이와 같은 흔한 타이핑 에러를 인식하고 수정하며, 수신된 터치 좌표들과의 수정된 키 지정을 이용하는 것은 사용자가 타이핑하는 동안에 학습 모듈 (10) 이 사용자의 키스트로크 가변성을 인식하고 수용할 수 있게 해준다. 이렇게 함으로써, 학습 모듈은 사용자의 타이핑 패턴들과 일치하는 가상 키보드상에서의 각 키에 대해 정의된 통계적 키스트로크 엔벨로프들을 개선시킬 수 있다.
만약 철자 에러가 두 개의 인접한 글자들간의 뒤바뀜으로부터 기인한 것이 아니라면 (즉, 결정 블럭 (252) = "아니오"), 이것은 철자 에러가 키패드 레이아웃 데이터를 개량시킴으로써 회피될 수 있는 오기 에러에 기인된 것이 아니라 진정한 철자 실수이였다라는 것을 나타낼 수도 있다. 그러므로, 사용자의 키스트로크들의 분석은 블럭들 (256 내지 266) 을 참조하여 상술한 프로세스를 실행하기 위해 진행하는 것에 의해서와 같이, 인식된 키들에 기초하여 진행할 수도 있다.
또 다른 양태에서, 학습 모듈은 이와 같은 사용자 수정들로부터 학습하기 위해 사용자가 타이핑에 대해 수정을 하는 때를 인식하도록 구성될 수도 있다. 도 7 은 사용자 타이핑 수정들로부터 학습하기 위해 학습 모듈 (10) 에서 구현될 수도 있는 예시적인 프로세스 (270) 를 도시한다. 프로세스 (270) 에서의 블럭 (272) 에서, 학습 모듈 (10) 은 사용자가 "백스페이스" 또는 "del" 키를 눌렀을 때를 나타내는 인터럽트 또는 신호를 컴퓨팅 디바이스로부터 수신할 수도 있다. 이러한 키들의 누름은 사용자가 타이핑 수정을 행할 수도 있다는 것을 나타내기 때문에, 블럭 (274) 에서 학습 모듈 (10) 은 삭제되는 특정 키를 주목할 수도 있다. 만약 사용자가 백스페이스 키를 이용하여 많은 키들을 연속하여 삭제하고 있다면, 학습 모듈 (10) 은 가장 마지막에 삭제된 키만을 주목할 수도 있다. 이 프로세스의 일부로서, 학습 모듈 (10) 은 또한 이 양태에서 스택 메모리와 같은, 메모리에 임시적으로 저장될 수도 있는, 삭제된 키에 대한 키스트로크 좌표들에 액세스할 수도 있다. 임시적 메모리에 제한된 수의 키스트로크 좌표 값들을 저장함으로써, 학습 모듈 (10) 은 사용자들이 키보드를 통해 텍스트를 입력하고 있는 동안에 일반적으로 생성하는 사용자 타이핑 수정들로부터 학습할 수 있다. 블럭 (276) 에서, 학습 모듈 (10) 은 삭제된 키를 대체하는 키스트로크의 터치 좌표들을 수신할 수 있고, 블럭 (278) 에서, 수신된 좌표들을 키패드 레이아웃 데이터에 비교하는 것에 의해서와 같이, 삭제된 키를 대체하는 키를 결정할 수도 있다. 이 점에서, 학습 모듈 (10) 은 삭제된 키와 연관된 키스트로크 좌표 데이터를 가지며, 그 특정한 키스트로크에 의해 의도되었던 대체 키를 결정한다. 사용자들은 단지 오기 에러들을 수정하기 위해 타이핑을 수정하는 것이 아니라, 많은 이유들로 인해 타이핑을 수정하기 때문에, 결정 블럭 (280) 에서, 그 두 개의 키들이 가상 키보드상에서 서로 인접하는지 여부를 결정하기 위해 학습 모듈 (10) 은 삭제된 키를 대체 키와 비교할 수도 있다. 만약 삭제된 키와 대체 키가 가상 키보드상에서 서로 인접하지 않는다면 (즉, 결정 블럭 (280) = "아니오"), 이것은 단순한 인접 키 오기 에러를 수정하는 것 이외의 이유로 수정이 행해지는 중임을 나타내며, 이에 따라 블럭 (272) 에서 백스페이스 키스트로크를 인식함으로써 시작했던 학습 모듈 프로세스는 블럭 (288) 에서 종료될 수도 있다.
만약 삭제된 키와 대체 키가 가상 키보드상에서 서로 인접한다라고 학습 모듈이 결정하면 (즉, 결정 블럭 (280) = "예"), 블럭 (282) 에서, 학습 모듈 (10) 은 원래의 키스트로크 좌표 데이터를 이용하여 대체 키에 대한 새로운 평균 키스트로크 좌표들을 계산할 수도 있다. 블럭 (284) 에서, 학습 모듈 (10) 은 또한 대체 키에 대한 새로운 통계적 엔벨로프를 계산할 수도 있다. 다시 말하면, 학습 모듈 (10) 은 특정 키의 사용자 수정에 기초하여 행해진 키스트로크 에러를 인식하고, 키패드 레이아웃 데이터를 추가적으로 최적화하기 위해 입력된 키스트로크 좌표들을 이용한다. 블럭 (286) 에서, 업데이트된 키패드 레이아웃 데이터는 메모리에 저장될 수도 있고, 그 후 블럭 (272) 에서 백스페이스 또는 삭제 키 누름을 인식함으로써 시작했던 학습 모듈 프로세스는 블럭 (288) 에서 종료될 수도 있다.
상술한 바와 같이, 학습 모듈 (10) 이 사용자로부터 트레이닝 입력들을 수신하고 사용자의 타이핑을 모니터링한 결과물은 사용자의 특정한 타이핑 패턴들을 반영하기 위해 가상 키보드상의 키들의 크기, 형상, 위치, 및 배향을 변환시키는 키패드 레이아웃 데이터일 수도 있다. 예를 들어, 프로세스는 도 9 에서 도시된 것과 같은 사용자 특정 맞춤형 가상 키보드 레이아웃으로 학습 모듈 (10) 이 변환시킨 도 8 에서 도시된 것과 같은 디폴트 키보드 포맷을 디스플레이함으로써 시작될 수도 있다. 도 8 및 도 9 에서 도시된 예시는 힌지 (322) 에서 오픈하는 모바일 디바이스의 두 개의 외면들에 걸쳐 있는 모바일 디바이스의 터치스크린 디스플레이 (320) 상의 QWERTY 키보드를 갖는다. 모바일 디바이스의 이러한 설계는 다양한 양태들이 모바일 디바이스상의 사용자의 타이핑에 가상 키보드가 적응될 수 있도록 하면서 사용자들에게 거의 풀 크기화된 키보드를 제공한다.
가상 키패드 레이아웃상의 개별적인 키 위치들은 도 10 에서 도시된 바와 같은 가상 키 중심점들 주변의 엔벨로프들 또는 통계적 엔벨로프들을 계산하는 것과 같이, 다양한 통계적 분석 방법들을 이용하여 개량될 수도 있다. 도 10 에서는, 가상 키패드 (440) 의 일부분이 도시된다. 키 위치들이, "A" 키 중심점 (402), "Q" 키 중심점 (412), 및 "S" 키 중심점 (420) 과 같은, 중심점들에 기초하여 가상 키보드상에서 규정될 수도 있다. 이와 같은 중심점들은 "X-Y" 좌표들 또는 상대적 좌표들 (예컨대, 키간 각도 및 거리 오프셋들) 을 이용하여 터치면의 기하학적 구조 내에서 위치될 수도 있다. 사용자의 타이핑 키 스트라이크 위치 가변성은 키 중심점들 주변의 통계적으로 정의된 엔벨로프들 (406-410, 414-418, 및 422-426) 에 의해 반영될 수도 있다. 예를 들어, 가장 안쪽의 엔벨로프들 (406, 414, 422) 은 키 스트라이크들로서 가치가 있는 하나의 표준 편차를 망라하기 위해 각각의 키 중심점 주변에서 정의될 수도 있다. 이와 같은 가장 안쪽의 엔벨로프는 특정 키에 대한 대부분의 키 스트라이크 위치들을 망라하도록 정의될 수도 있다. 따라서, 이러한 가장 안쪽의 엔벨로프 내에 위치하는 키 스트라이크는 대응하는 중심점을 갖는 키로서 손쉽게 해석될 수도 있다. 추가적인 예시로서, 중심점의 두 개의 표준 편차들 내의 키 스트라이크 위치들과 같은, 키 스트라이크 위치들의 보다 큰 퍼센티지를 망라하도록 두번째 엔벨로프 (408, 416, 424) 가 정의될 수도 있다. 이와 같은 엔벨로프는 중심점들 사이에 위치하는 키 스트라이크를 명확화하기 위해 이용될 수도 있다. 예를 들어, 만약 키 스트라이크가 중심점들 (402 및 412) 사이에 위치하지만 중심점 (402) 의 두 개의 표준 편차 엔벨로프 (408) 내에 있다면, 컴퓨팅 디바이스는 키 스트라이크를 중심점 (402) 에서의 "A" 키에 대응하는 것으로서 손쉽게 해석할 수도 있다. 세번째 (또는 그 이상의) 엔벨로프 (410, 418, 426) 가 또한 중심점들 사이에 위치하는 키 스트라이크를 명확화하는데 추가적으로 도움을 주기 위해 키 중심점들 주변에서 정의될 수도 있다. 예를 들어, 만약 키 스트라이크가 중심점들 (402 및 412) 사이에 위치하고, 중심점 (402) 의 제 3 표준 편차 엔벨로프 (408) 및 중심점 (412) 의 엔벨로프 (418) 내에 위치한다면, 컴퓨팅 디바이스는 본 발명분야에서 잘 알려진 철자 체크 또는 자동 완성 기능을 갖는 텍스트 알고리즘들을 이용하는 것에 의한 바와 같이, 이러한 두 개의 키들 (하지만 다른 키들은 아님) 사이를 구별하기 위해 또 다른 기술이 이용되어야 한다라고 결정할 수도 있다. 예를 들어, 불확실한 키 스트라이크 이전 및/또는 이후에 쳤던 키들은 모호한 키 스트라이크에 대해 의도되었을 듯한 글자를 결정하기 위해 공지된 작업들의 데이터베이스에 대비되어 평가될 수도 있다.
도 6a 내지 도 7 을 참조하여 상술한 바와 같이, 엔벨로프들 (406-410, 414-418, 및 422-426) 은 정상적인 타이핑 동작들뿐만이 아니라, 트레이닝 세션들 동안에 키 스트라이크 위치들을 통계적으로 분석함으로써 계산될 수도 있다. 이 프로세스는 표준 편차 계산들의 측면에서 상술되었지만, 다른 통계적 측정치들이 키 중심점들 주변의 적절한 엔벨로프들을 정의하는데 이용될 수도 있다.
계산된 키 엔벨로프들은 가상 키들의 크기, 형상, 및 배향을 정의하는데 추가적으로 이용될 수도 있다. 예를 들어, "Q" 키 중심점 (412) 주변의 통계적 엔벨로프들 (411 - 418) 은 원형이 아니며, 다른 액세스 보다는 하나의 액세스를 따른 보다 큰 가변성을 반영한다. 추가적으로, 엔벨로프들의 대칭축은 가상 키보드 (400) 의 "Y" 축에 대해 기울어져 있다. "Q" 키에 대한 사용자의 키 스트라이크들의 이러한 크기, 형상, 및 배향을 반영하여, 가상 키는, "Y" 축에 대해 기울어진 키의 장축을 가지면서, "A" 키와 "S" 키 보다 좁고 긴 형상을 갖도록 크기가 정해진다. 도 10 은 직사각형의 키 형상들을 보여주지만, 키 형상들은 사용자의 키 스트라이크 타이핑 패턴들에 의해 정의되는 바와 같이 원형, 타원형, 삼각형, 비대칭형, 또는 다른 형상들일 수도 있다.
이전에 언급한 바와 같이, 가상 키패드 레이아웃은, 메모리에 저장될 수도 있고, 터치스크린 또는 투사 키보드와 같은, 터치 감지면과의 사용을 위해 사용자에 의해 인출될 수도 있도록 사용자와 연관될 수도 있다. 이 구현은 도 11 에서 도시된 네트워크를 통해서와 같이, 사용자들이 저장된 키패드 레이아웃 데이터에 대한 액세스로 임의의 터치 감지면상의 각자의 가상 키보드들을 이용할 수 있도록 해준다. 도 11 을 참조하여, 사용자의 가상 키패드 레이아웃 데이터 (506) 를 저장하는 사용자 기록 (504) 을 포함한 중앙 데이터저장소 (500) 가 제공될 수도 있다. 예를 들어, 인터넷 액세스가능한 서버는 많은 사용자들이 각자의 가상 키패드 레이아웃 데이터 (506) 를 저장할 수 있는, 맞춤형 가상 키보드 레이아웃 데이터의 중앙 서버 데이터베이스 저장소 (여기서는 중앙 데이터저장소 (500) 로서 칭한다) 로서 기능을 할 수도 있다. 사용자 기록 (504) 은 여러가지 유형들의 사용자 인터페이스들 및 컴퓨팅 디바이스들과 같은 것에 대한 하나 보다 많은 가상 키패드 레이아웃 데이터를 포함할 수도 있다. 예를 들어, 사용자는 특정 모바일 디바이스 (512) 에 대응하는 가상 키패드 레이아웃 데이터 (506) 를 가질 수도 있다. 사용자 기록 (504) 은 인터넷과 같은, 네트워크 (510) 를 통해 모바일 디바이스 (512) 에 이용가능해질 수도 있다. 터치스크린 디스플레이 (520) 를 갖는 모바일 디바이스 (512) 를 이용하기 위해, 사용자는 인터넷 (510) 에 접속하여 중앙 데이터저장소 (500) 에 액세스하고 중앙 데이터저장소 (500) 에 대해 자신을 인증하기에 충분한 정보를 입력할 수도 있다. 중앙 데이터저장소 (500) 에 인증되면, 사용자는 사용자의 기록 (504) 으로부터 특정한 가상 키패드 레이아웃 데이터 (506) 의 다운로드를 요청할 수도 있다. 요청된 가상 키패드 레이아웃 데이터 (506) 는 인터넷 (510) 을 통해 모바일 디바이스 (512) 에 송신되고 가상 키패드 데이터저장소 (514) 에 저장될 수도 있다. 그 후 모바일 디바이스 (512) 는 수신된 가상 키패드 레이아웃 데이터를 이용하여 터치스크린 (520) 상에 가상 키보드를 생성할 수도 있다. 이 방식에서, 사용자의 가상 키패드 구성들은 휴대가능하게 되고 원격적으로 액세스될 수도 있다.
도 11 은 사용자의 가상 키보드가 모바일 디바이스 (512) 에 이식되고, 사용자의 가상 키패드 레이아웃 데이터 (506) 에 대한 액세스로 가상 키보드들이 임의의 컴퓨팅 디바이스상에 구현될 수도 있는 예시적인 구현을 보여준다. 다양한 양태들은 특정 사용자들에 맞춤화된 위치들에서 가상 키들을 배치시키기 때문에, 이와 같은 가상 키보드들을 구현하는 시스템들은 사용자에 의해 선택된 터치 감지면상의 임의의 위치에 키보드들을 배치시킬 수도 있다. 예를 들어, 데스크, 벽, 대형 스크린 디스플레이 및 화이트 보드와 같은 대형 표면들은 이와 같은 표면들의 일부분들이 연결된 컴퓨팅 디바이스들을 위한 입력 디바이스들로서 역할을 할 수 있게 하는 터치 검출 센서들을 갖추도록 구성될 수 있다. 따라서, 대형 터치 감지면에 결합된 다양한 양태들 중 임의의 양태를 구현하는 컴퓨팅 디바이스들은 사용자들이 자신들이 희망하는 임의의 위치에 각자에 맞춤화된 가상 키보드들을 배치시키는 것을 가능케 해줄 수도 있다. 예를 들어, 컴퓨팅 디바이스에 결합된 사용자의 터치를 감지하도록 구성된 대형 스크린 디스플레이는 사용자가 자신에 맞춤화된 가상 키보드가 제공되기를 희망하는 위치에서 사용자가 감지면상에 양쪽 손들을 올려놓는 것을 가능케 해줄 수도 있다. 컴퓨팅 디바이스는 네트워크 (510) 를 통해 중앙 데이터저장소 (500) 에 액세스하는 것에 의해서와 같이, 메모리로부터 사용자의 맞춤형 키보드를 위한 키패드 레이아웃 데이터를 호출할 수 있고, 사용자의 손가락 터치들과 함께 레이아웃 데이터를 이용하여 희망하는 위치에서 가상 키보드를 디스플레이할 수도 있다. 이 방식에서, 사용자의 가상 키보드는 사용자가 터치 감지면을 터치할 때를 컴퓨팅 디바이스가 감지할 수 있는 임의의 장소에서 제공될 수 있다.
도 12a 는 컴퓨팅 디바이스가 사용자 터치들에 응답하여 터치 감지면상에서 가상 키보드를 생성할 수도 있는 예시적인 프로세스 (600) 를 도시한다. 프로세스 (600) 에서의 블럭 (602) 에서, 터치 감지면은 가상 키패드 생성 프로세스를 개시시킬 수도 있는 사용자의 터치를 인식할 수도 있다. 블럭 (604) 에서, 터치 감지면에 결합된 컴퓨팅 디바이스는 특정 사용자의 아이덴티티를 결정할 수도 있다. 이것은 지문 인식, 성문 (voice print) 인식, 및 손바닥 자국 또는 장문 인식과 같은, 생체측정 방법을 포함한, 컴퓨팅 디바이스에게 개인들을 식별해주기 위한 다양한 공지된 방법들 중 임의의 방법을 이용하여 달성될 수도 있다. 사용자는 또한 제공된 디폴트 키보드에 식별자 (예컨대, 사용자 성명 및 패스워드) 를 입력함으로써 컴퓨팅 디바이스에 대해 사용자 자신을 식별시킬 수도 있다. 블럭 (606) 에서, 컴퓨팅 디바이스는 사용자의 아이덴티티를 이용하여 가상 키패드 레이아웃 데이터가 저장되어 있는 중앙 데이터베이스에 액세스할 수도 있다. 사용자의 아이덴티티를 이용하여, 컴퓨팅 디바이스는 가상 키패드 레이아웃 데이터를 호출할 수도 있다. 블럭 (608) 에서, 컴퓨팅 디바이스는 또한 터치 감지면상의 사용자의 손가락들의 터치 위치들을 인식할 수도 있다. 감지면상에 키보드에 대한 희망하는 위치를 표시시키기 위해 사용자들은 특정 방법으로 터치 감지면을 터치할 것을 요구받을 수 있다. 예를 들어, 사용자는 자신이 우측손과 좌측손 각각의 스페이스 키 및 네 개의 기본 키들을 바라보고 싶어하는 위치로 터치 감지면상에 열 개의 손가락들을 올려놓을 것을 요구받을 수도 있다. 이와 달리, 사용자는 사용자의 리치 (reach) 의 치수를 보여주기 위해 손가락들을 평평하게 활짝 펴서 양손들로 터치 감지면을 터치할 것을 요청받을 수도 있다. 블럭 (610) 에서, 컴퓨팅 디바이스는 인식된 손가락 터치 위치들을 사용자의 가상 키패드 레이아웃 데이터와 함께 이용하여 터치 감지면상의 적절한 가상 키보드 위치를 계산할 수도 있다. 이 계산은 가상 키보드를 이용가능한 표면 영역 내에 끼워맞추도록 배치시키는 것과 같은, 터치 감지면의 치수 제한들을 고려할 수도 있다. 블럭 (612) 에서, 컴퓨팅 디바이스는 가상 키패드 레이아웃 데이터를 이용하여 희망하는 위치에서 사용자의 가상 키보드의 디스플레이를 생성한다. 이 점에서, 사용자는 터치 감지면상의 희망하는 위치에서 자신에 맞춤화된 가상 키보드를 제공받으며, 그런 후 사용자는 블럭 (614) 에서, 컴퓨팅 디바이스가 수신하고 프로세싱하기를 시작할 수도 있는 타이핑 입력들을 시작할 수 있다.
일 양태에서, 디폴트 가상 키보드를 맞춤화하기 위해 터치 감지면상의 사용자의 손들의 측정들이 이용될 수도 있다. 이 프로세스는 맞춤형 키패드 레이아웃이 생성되기 전에 사용자가 제일 먼저 시스템과 상호작용하는 것을 시작할 때에 유용할 수도 있다. 이것은 또한 디폴트 키패드이지만 사용자 자신의 손에 끼워맞춰지도록 크기조정된 것을 이용하는 것을 사용자가 선호할 때에 유용할 수도 있다. 또한, 이 양태는 완전히 맞춤화된 가상 키보드를 생성하거나 다운로드하는 것을 번거롭게 하는데 충분히 긴 특정한 컴퓨팅 디바이스를 사용자가 이용중이지 않을 때에 유용할 수도 있다.
도 12b 는 디폴트 키보드를 사용자의 손 치수들에 매우 맞춤화하도록 이 양태에서 구현될 수도 있는 예시적인 프로세스 (700) 를 도시한다. 프로세스 (700) 에서의 블럭 (702) 에서, 컴퓨팅 디바이스상에서 구동중인 학습 모듈 (10) 은 터치 감지면상에서의 사용자에 의한 터치를 인식하여 프로세스를 시작할 수도 있다. 만약 이것이 컴퓨팅 디바이스와의 사용자의 상호작용의 시작이면, 블럭 (704) 에서, 학습 모듈 (10) 은 사용자로 하여금 측정을 위한 적절한 위치에 사용자 자신의 손들을 올려놓을 것을 프롬프트할 수도 있다. 예를 들어, 학습 모듈은 사용자로 하여금 손가락들을 펼친 채로 엄지손가락들을 터치 감지면에 터치하면서 양손들을 터치 감지면상에 올려놓을 것을 프롬프트할 수도 있다. 이러한 손 배치는 터치 감지면이 사용자의 손가락들의 전장 (full span) 을 측정할 수 있게 해줄 것이다. 또 다른 예로서, 학습 모듈 (10) 은 사용자로 하여금 사용자가 타이핑 중에 이용하려고 의도하는 자세를 취하면서 자신의 손들을 터치 감지면상에 위치시킬 것을 프롬프트할 수도 있다. 블럭 (706) 에서, 학습 모듈 (10) 은 터치 감지면으로부터 터치 위치 정보를 수신하고, 이 정보를 이용하여 사용자의 손들의 치수들을 측정할 수도 있다. 이와 같은 측정들은 새끼손가락과 엄지손가락간의 거리 및 손바닥과 집게 손가락 끝간의 거리 측정치와 같은 대표적인 치수들에 포커싱될 수도 있다. 블럭 (708) 에서, 학습 모듈 (10) 은 손 치수 측정치들을 이용하여 디폴트 키보드에 대한 적절한 레이아웃 치수들을 계산할 수도 있다. 이러한 프로세스는 평균적인 개인들의 인체공학적 연구들에 기초한 알고리즘들에 따라 디폴트 키보드를 스케일링하는 것을 수반할 수도 있다. 대안적으로, 이 프로세스는 디폴트 키보드 레이아웃을 정의하는데 이용된 평균 손 치수들에 대한 측정된 손 치수들의 비율에 기초하여 스케일링 인자를 계산하고, 그런 후 디폴트 키보드 레이아웃의 치수들에 스케일링 인자를 적용하는 것을 수반할 수도 있다. 블럭 (710) 에서, 학습 모듈 (10) 은 계산된 치수들을 디폴트 키보드에 적용하고, 블럭 (712) 에서, 적절하게 크기정해진 디폴트 키보드의 디스플레이를 생성할 수도 있다. 이 점에서, 사용자는 맞춤형 가상 키보드를 가지며, 이 가상 키보드로 사용자는 컴퓨팅 디바이스에 입력들을 제공하는 것을 시작할 수 있으며, 블럭 (714) 에서 입력들이 수신된다.
다양한 컴퓨팅 디바이스들상에서 이용되고 디스플레이될 수도 있는 휴대형 가상 키보드들을 인에이블시키는 양태들은 다양한 구조들 및 머신들이 이미지 투사 및 터치 감지 능력들을 병합시킬 때에 매우 유용할 수도 있다. 예를 들어, 사용자들은 언젠가 이미지 프로젝터와 광학 (또는 다른) 터치 센서 시스템을 포함한 윈드쉴드 (또는 다른 표면) 를 터치함으로써 자신의 자동차에서 컴퓨터와 상호작용할 수 있을 수도 있다. 이 예시에서, 사용자가 자동차 윈드쉴드를 터치할 때, 자동차의 컴퓨터는 이러한 터치를 감지하고, 사용자의 가상 키보드를 메모리로부터 호출하며, 가상 키보드를 사용자의 터치에 의해 표시된 위치에서 윈드쉴드상에 투사시킨다.
이와 같은 휴대형 가상 키보드들의 적용들은, 특히 도 11 에서 도시된 바와 같은, 인터넷 (510) 에 의해 액세스가능한 중앙 데이터저장소 (500) 에 가상 키보드들을 저장하는 능력과 결합될 때에 광범위해진다. 이와 같은 양태들에서, 사용자들은 맞춤형 가상 키보드 데이터베이스에 액세스될 수 있도록 해주는 인터넷으로의 액세스를 갖는 컴퓨팅 디바이스에 결합된 임의의 터치 감지면상에서 각자의 개인 가상 키보드들에 액세스할 수 있다.
전술한 바와 같이, 사용자는 모바일 디바이스들을 포함하여, 다양한 컴퓨팅 디바이스들을 이용한 터치 감지면상의 가상 키패드와 상호작용할 수도 있다. 다양한 양태들과 함께 이용하는데 적합한 일반적인 모바일 디바이스들은 도 13 에서 도시된 컴포넌트들을 공통으로 가질 것이다. 예를 들어, 예시적인 모바일 디바이스 (1300) 는 내부 메모리 (1302) 와 터치스크린 디스플레이 (1303) 에 결합된 프로세서 (1301) 를 포함할 수도 있다. 추가적으로, 모바일 디바이스 (1300) 는 프로세서 (1301) 에 결합된 무선 데이터 링크 및/또는 셀룰라 전화 트랜시버 (1305) 에 연결된 전자기 방사를 송신 및 수신하기 위한 안테나 (1304) 를 가질 수도 있다. 몇몇 구현들에서, 셀룰라 전화 통신들을 위해 이용되는 트랜시버 (1305), 프로세서 (1301) 의 일부분들 및 메모리 (1302) 는 무선 데이터 링크를 통해 데이터 인터페이스를 제공하기 때문에 이들을 에어 인터페이스라고 총칭한다. 모바일 디바이스들 (1300) 은 또한 사용자 입력들을 위한 물리적 키 패드 (1306) 또는 소형 키보드 및 메뉴 선택 버튼들 또는 로커 스위치들 (1307) 을 포함할 수도 있다.
모바일 프로세서 (1301) 는 여기서 설명된 다양한 양태들의 기능들을 포함하여, 다양한 기능들을 수행하기 위한 소프트웨어 명령들 (애플리케이션들) 에 의해 구성될 수 있는 임의의 프로그램가능 마이크로프로세서, 마이크로컴퓨터 또는 다중 프로세서 칩 또는 칩들일 수도 있다. 몇몇 모바일 디바이스들에서, 무선 통신 기능들에 전용된 하나의 프로세서와 다른 애플리케이션들을 구동하는데 전용된 하나의 프로세서와 같은, 다중 프로세서들 (1301) 이 제공될 수도 있다. 일반적으로, 소프트웨어 애플리케이션들은 프로세서 (1301) 에 액세스되고 로딩되기 전에 내부 메모리 (1302) 에 저장될 수도 있다. 몇몇 모바일 디바이스들에서, 추가적인 메모리 칩들 (예컨대, 보안 데이터 (SD) 카드) 은 모바일 디바이스 내로 플러깅되고 프로세서 (1301) 에 결합될 수도 있다. 많은 모바일 디바이스들에서, 내부 메모리 (1302) 는 플래쉬 메모리와 같은 휘발성 또는 비휘발성 메모리, 또는 이들의 혼합체일 수도 있다. 이 설명을 위해, 메모리에 대한 일반적인 언급은, 내부 메모리 (1302), 모바일 디바이스 내에 플러깅된 탈착가능한 메모리, 및 프로세서 (1301) 자체 내의 메모리를 포함하여, 프로세서 (1301) 에 의해 액세스가능한 모든 메모리를 가리킨다.
상술한 양태들은 또한 도 14 에서 도시된 개인 컴퓨터 (1460) 와 같은, 임의의 다양한 컴퓨팅 디바이스들상에서 구현될 수도 있다. 이와 같은 개인 컴퓨터 (1460) 는 일반적으로 디스크 드라이브 (1463) 와 같은, 대용량 비휘발성 메모리와 휘발성 메모리 (1462) 에 결합된 프로세서 (1461) 를 포함한다. 컴퓨터 (1460) 는 또한 프로세서 (1461) 에 결합된 컴팩트 디스크 (CD) 드라이브 (1465) 및 플로피 디스크 드라이브 (1464) 를 포함할 수도 있다. 일반적으로 컴퓨터 디바이스 (1460) 는 또한 마우스 (1467) 와 같은 포인팅 디바이스를 포함할 수 있을 것이며, 디스플레이 (1469) 는 터치스크린 (1468) 과 같은 사용자 입력 디바이스 또는 다른 터치 감지면을 포함할 수도 있다. 컴퓨터 디바이스 (1460) 는 또한 데이터 연결을 구축하거나 또는 USB 와 같은 외부 메모리 디바이스들을 수용하기 위해 프로세서 (1461) 에 결합된 복수의 커넥터 포트들, 또는 FireWire® 커넥터 소켓들 또는 프로세서 (1461) 를 네트워크에 결합시키기 위한 다른 네트워크 연결 회로들 (1466) 을 포함할 수도 있다. 노트북 구성에서, 컴퓨터 하우징은, 컴퓨터 분야에서 잘 알려진 바와 같이, 포인팅 디바이스 (1467), 터치스크린 (1468) 및 디스플레이 (1469) 를 포함한다.
상술한 복수의 양태들은 또한 도 15 에서 도시된 서버 (1500) 와 같은, 임의의 다양한 원격 서버 디바이스들과 함께 구현될 수도 있다. 이와 같은 서버 (1500) 는 일반적으로 디스크 드라이브 (1503) 와 같은, 대용량 비휘발성 메모리와 휘발성 메모리 (1502) 에 결합된 프로세서 (1501) 를 포함한다. 서버 (1500) 는 또한 프로세서 (1501) 에 결합된 컴팩트 디스크 (CD) 드라이브 (1506) 및/또는 플로피 디스크 드라이브를 포함할 수도 있다. 서버 (1500) 는 또한 네트워크 회로들 (1505) 과의 데이터 연결들을 확립하기 위해 프로세서 (1500) 에 결합된 복수의 커넥터 포트들 (1504) 을 포함할 수도 있다.
전술한 예시적인 설명들은 단일 터치 감지면을 갖고 동작하는 단일 컴퓨팅 디바이스를 수반하지만, 본 양태들 및 청구항들은 멀티 프로세서 및 다중 컴퓨터 구현들뿐만이 아니라, 다중 터치 감지면들에 결합된 컴퓨팅 디바이스들에 동일하게 적용된다. 또한, 본 양태들 및 청구항들은 하나 이상의 터치 감지면들상에서 하나 보다 많은 가상 키패드를 생성하는 구현들에 동일하게 적용된다. 추가적으로, 본 양태들 및 청구항들은 2 인 플레이어 비디오 게임에서와 같이, 두 명의 사용자들이 동시에 컴퓨팅 디바이스와 상호작용할 수 있도록 두 개의 맞춤형 가상 키패드들이 하나 이상의 터치 감지면들상에서 생성되는 구현을 망라한다. 예를 들어, 두 명의 사용자들이 터치 감지 윈도우를 터치함으로써 서로 맞서서 비디오 게임을 플레이할 수 있도록, 컴퓨팅 디바이스는 두 개의 맞춤형 가상 키패드들 (예컨대, 이 예시에서는 게임 제어기들 또는 조이스틱들) 의 디스플레이들을 프로젝터가 생성하는 터치 감지 윈도우 (예컨대, 스토어 프론트 윈도우) 와 게임 디스플레이에 결합될 수 있다. 이 예시에서, 사용자들은 중앙 데이터베이스 또는 "클라우드" 컴퓨팅으로부터 액세스된 맞춤형 가상 키패드들을 통해 컴퓨팅 디바이스와 인터페이싱할 수도 있다. 따라서, 사용자들은 버튼들이 위치되기를 선호하는 곳과 버튼들이 위치되어야 한다는 것을 각자의 이용이 나타내는 곳에 액션 버튼들을 포함하는 맞춤형 조이스틱들 또는 게임 제어기 패드들을 이용할 수도 있다.
전술한 방법 설명들 및 프로세스 흐름도들은 단순히 예시들로서 제공된 것일 뿐이며, 다양한 양태들의 단계들은 제공된 순서로 수행되어야 한다는 것을 요구하거나 또는 암시하는 것을 의도하지 않는다. 본 발명분야의 당업자에 의해 아는 바와 같이, 전술한 양태들에서의 단계들의 순서는 임의의 순서로 수행될 수도 있다. 뿐만 아니라, "이후", "그런 후", "다음으로" 등과 같은 단어들 및 단계 식별자들에 대한 언급은 단계들의 순서를 제한시키려는 의도는 없으며; 이와 같은 식별자들 및 단어들은 본 방법들의 설명을 통해 독자를 안내하는데 단순히 이용된다.
여기서 개시된 양태들과 관련지어 설명된 다양한 예시적인 논리 블록들, 모듈들, 회로들, 및 알고리즘 단계들을 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이들의 조합으로서 구현할 수도 있다. 하드웨어 및 소프트웨어의 상호교환가능성을 명확히 설명하기 위하여, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들 및 단계들을 일반적으로 각자의 기능의 관점에서 상술하였다. 그러한 기능이 하드웨어로 구현될지 소프트웨어로 구현될지는 전체 시스템에 부과된 특정한 애플리케이션 및 설계 제약들에 좌우된다. 당업자는 설명된 기능을 각각의 특정한 애플리케이션에 대하여 다양한 방식으로 구현할 수도 있지만, 그러한 구현의 결정이 본 발명의 범위를 벗어나도록 하는 것으로 해석되어서는 안된다.
여기에서 개시된 실시형태들과 관련하여 설명된 다양한 예시적인 로직들, 로직 블록들, 모듈들, 회로들은 범용 프로세서, 디지털 신호 프로세서 (DSP), 주문형 집적회로 (ASIC), 필드 프로그래머블 게이트 어레이 (FPGA), 또는 기타 프로그래머블 로직 디바이스, 별도의 게이트 또는 트랜지스터 로직, 별도의 하드웨어 컴포넌트들, 또는 여기서 설명된 기능을 수행하도록 설계된 이들의 임의의 결합으로 구현 또는 수행될 수도 있다. 범용 프로세서는 마이크로프로세서일 수도 있지만, 대안적으로, 이 프로세서는 임의의 종래 프로세서, 제어기, 마이크로제어기, 또는 상태 머신일 수도 있다. 프로세서는 또한 컴퓨팅 디바이스들의 결합, 예를 들어, DSP 와 마이크로프로세서의 결합, 복수의 마이크로프로세서들, DSP 코어와 결합된 하나 이상의 마이크로프로세서들 또는 임의의 기타 다른 구성으로 구현될 수도 있다. 대안적으로, 몇몇 단계들 또는 방법들은 주어진 기능에 특유한 회로에 의해 수행될 수도 있다.
하나 이상의 예시적인 실시형태들에서, 설명된 기능은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 만약 소프트웨어로 구현되면, 기능들은 컴퓨터 판독가능한 매체 상에서 하나 이상의 명령들 또는 코드로 저장되거나 또는 이러한 명령들 또는 코드를 통해서 송신될 수 있다. 여기서 개시된 방법 또는 알고리즘의 단계들은 컴퓨터 판독가능한 매체상에 상주할 수도 있는 실행된 프로세서 실행가능한 소프트웨어 모듈로 구현될 수도 있다. 컴퓨터 판독가능한 매체는 하나의 장소에서 다른 장소로 컴퓨터 프로그램의 전달을 용이하게 해주는 임의의 매체를 포함하는 통신 매체 및 컴퓨터 저장 매체 모두를 포함한다. 저장 매체는 컴퓨터에 의해 액세스될 수도 있는 임의의 이용가능한 매체일 수도 있다. 비제한적인 예시로서, 이와 같은 컴퓨터 판독가능한 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 저장 장치, 자기 디스크 저장 장치 또는 다른 자기 저장 디바이스, 또는 컴퓨터에 의해 액세스될 수도 있고, 명령들 또는 데이터 구조들의 형태로 원하는 프로그램 코드를 운송하거나 또는 저장하는데 이용될 수도 있는 임의의 다른 매체를 포함할 수도 있다. 또한, 어떠한 연결체라도 컴퓨터 판독가능한 매체로 적절하게 칭한다. 예를 들어, 소프트웨어가 동축 케이블, 광섬유 케이블, 트위스티드 페어, 디지털 가입자 회선 (DSL) 또는 적외선, 라디오, 및 마이크로웨이브와 같은 무선 기술들을 이용하여 웹사이트, 서버, 또는 다른 원격 소스로부터 송신된다면, 동축 케이블, 광섬유 케이블, 트위스티드 페어, DSL, 또는 적외선, 라디오, 및 마이크로웨이브와 같은 무선 기술들은 매체의 정의에 포함된다. 본 명세서에서 이용된 disk 또는 disc는 컴팩트 디스크 (CD), 레이저 디스크, 광학 디스크, DVD (digital versatile disc), 플로피 디스크, 및 블루레이 디스크를 포함하며, 여기서 disk는 통상 데이터를 자기적으로 재현시키며, disc는 레이저를 이용하여 광학적으로 데이터를 재현시킨다. 위의 조합들은 또한 컴퓨터 판독가능한 매체의 범위 내에 포함될 수 있다. 추가적으로, 방법 또는 알고리즘의 동작들은 컴퓨터 프로그램 제품 내에 병합될 수도 있는, 하나의 코드 및 명령 또는 임의의 조합 또는 세트의 코드들 및 명령들로서 머신 판독가능한 매체 및/또는 컴퓨터 판독가능한 매체상에서 상주할 수도 있다.
개시된 양태들의 이전 설명은 본 발명분야의 당업자가 본 발명개시를 실시하거나 또는 이용할 수 있도록 하기 위해 제공된 것이다. 이러한 양태들에 대한 다양한 변형들은 본 발명분야의 당업자에게 손쉽게 명백해질 것이며, 여기서 정의된 일반 원리들은 본 발명의 범위로부터 벗어나지 않고서 다른 양태들에 적용될 수도 있다. 따라서, 본 발명은 여기서 도시된 양태들로 제한되는 것을 의도하지 않으며, 여기서 개시된 신규한 특징들 및 원리들에 부합하는 최광의의 범위로 적응되어야 한다.

Claims (44)

  1. 터치 감지면상에서 키패드를 정의하기 위한 방법으로서,
    상기 터치 감지면에 대한 일련의 사용자 터치들의 일련의 좌표들을 수신하는 단계;
    복수의 키들을 상기 수신된 일련의 좌표들과 상관시키는 단계;
    상기 복수의 키들 각각과 상관된 수신된 좌표들의 평균을 결정하는 단계;
    상기 복수의 키들 각각에 대한 상기 결정된 평균 좌표들을 키패드 레이아웃 데이터에 저장하는 단계; 및
    상기 키패드 레이아웃 데이터를 이용하여 가상 키패드의 이미지를 생성하는 단계를 포함하는, 터치 감지면상에서 키패드를 정의하기 위한 방법.
  2. 제 1 항에 있어서,
    상기 사용자로 하여금 일련의 키스트로크들 (keystrokes) 을 입력할 것을 프롬프트하는 단계를 더 포함하며,
    복수의 키들을 상기 수신된 일련의 좌표들과 상관시키는 단계는 프롬프트된 상기 일련의 키스트로크들을 상기 수신된 좌표들과 상관시키는 단계를 포함하는, 터치 감지면상에서 키패드를 정의하기 위한 방법.
  3. 제 1 항에 있어서,
    상기 복수의 키들 각각에 대한 수신된 좌표들에 기초하여 통계적 엔벨로프를 결정하는 단계; 및
    상기 복수의 키들 각각에 대한 상기 통계적 엔벨로프를 상기 키패드 레이아웃 데이터에 저장하는 단계를 더 포함하는, 터치 감지면상에서 키패드를 정의하기 위한 방법.
  4. 제 1 항에 있어서,
    상기 키패드 레이아웃 데이터를 이용하여 상기 가상 키패드의 이미지를 생성하는 단계는 상기 키패드 레이아웃 데이터에 저장된 상기 복수의 키들 각각의 상기 평균 좌표들에 기초한 위치들에서 상기 가상 키패드에서의 키들의 이미지를 생성하는 단계를 더 포함하는, 터치 감지면상에서 키패드를 정의하기 위한 방법.
  5. 제 1 항에 있어서,
    상기 키패드 레이아웃 데이터를 이용하여 상기 가상 키패드의 이미지를 생성하는 단계는 각각의 키 이미지의 크기가 상기 키패드 레이아웃 데이터에서의 상기 복수의 키들 각각에 대한 통계적 엔벨로프에 기초하는 상기 가상 키패드에서의 상기 복수의 키들의 이미지들을 생성하는 단계를 더 포함하는, 터치 감지면상에서 키패드를 정의하기 위한 방법.
  6. 제 1 항에 있어서,
    상기 터치 감지면상에서의 상기 가상 키패드상의 타이핑을 모니터링하는 단계;
    인접 키 타이핑 에러를 식별하는 단계;
    상기 인접 키 타이핑 에러와 연관된 올바른 키를 결정하는 단계;
    상기 타이핑된 키스트로크에 대해 수신된 좌표들에 기초하여 상기 올바른 키에 대한 평균 좌표를 업데이트하는 단계; 및
    상기 업데이트된 평균 좌표를 상기 올바른 키와 함께 상기 키패드 레이아웃 데이터에 저장하는 단계를 더 포함하는, 터치 감지면상에서 키패드를 정의하기 위한 방법.
  7. 제 6 항에 있어서,
    상기 인접 키 타이핑 에러를 식별하는 단계는,
    철자오기난 단어를 인식하는 단계; 및
    상기 철자오기가 상기 가상 키보드에서 서로 인접한 두 개의 키들의 뒤바뀜을 수반하는지 여부를 결정하는 단계를 포함하는, 터치 감지면상에서 키패드를 정의하기 위한 방법.
  8. 제 6 항에 있어서,
    상기 인접 키 타이핑 에러를 식별하는 단계는,
    키와 연관된 글자의 사용자 수정을 인식하는 단계; 및
    상기 사용자 수정이 상기 가상 키보드에서 서로 인접한 두 개의 키들의 뒤바뀜을 수반하는지 여부를 결정하는 단계를 포함하는, 터치 감지면상에서 키패드를 정의하기 위한 방법.
  9. 제 1 항에 있어서,
    상기 키패드 레이아웃 데이터는 네트워크 액세스가능한 데이터베이스에 저장되며,
    상기 네트워크를 통해 상기 키패드 레이아웃 데이터를 컴퓨팅 디바이스에 송신하는 단계를 더 포함하며,
    상기 키패드 레이아웃 데이터를 이용하여 가상 키패드의 이미지를 생성하는 단계는 상기 컴퓨팅 디바이스에 결합된 터치 감지면상에 상기 가상 키패드의 이미지를 생성하는 단계를 포함하는, 터치 감지면상에서 키패드를 정의하기 위한 방법.
  10. 제 9 항에 있어서,
    상기 컴퓨팅 디바이스에 결합된 상기 터치 감지면에 대한 사용자 터치를 수신하는 단계; 및
    상기 터치 감지면에 대한 상기 수신된 사용자 터치에 기초하여 상기 가상 키패드의 디스플레이를 위한 상기 터치 감지면상에서의 위치를 결정하는 단계를 더 포함하며,
    상기 키패드 레이아웃 데이터를 이용하여 가상 키패드의 이미지를 생성하는 단계는 디스플레이를 위한 상기 터치 감지면상에서의 상기 결정된 위치에서 상기 이미지를 생성하는 단계를 포함하는, 터치 감지면상에서 키패드를 정의하기 위한 방법.
  11. 컴퓨팅 디바이스로서,
    프로세서;
    상기 프로세서에 결합된 메모리; 및
    상기 프로세서에 결합된 터치 감지면을 포함하며,
    상기 프로세서는,
    상기 터치 감지면에 대한 일련의 사용자 터치들의 일련의 좌표들을 수신하는 단계;
    복수의 키들을 상기 수신된 일련의 좌표들과 상관시키는 단계;
    상기 복수의 키들 각각과 상관된 수신된 좌표들의 평균을 결정하는 단계;
    상기 복수의 키들 각각에 대한 상기 결정된 평균 좌표들을 키패드 레이아웃 데이터에 저장하는 단계; 및
    상기 키패드 레이아웃 데이터를 이용하여 가상 키패드의 이미지를 생성하는 단계를 포함하는 프로세스들을 수행하기 위한 프로세서 실행가능한 명령들로 구성되는, 컴퓨팅 디바이스.
  12. 제 11 항에 있어서,
    상기 프로세서는,
    상기 사용자로 하여금 일련의 키스트로크들 (keystrokes) 을 입력할 것을 프롬프트하는 단계를 포함하는 프로세스들을 더 수행하기 위한 프로세서 실행가능한 명령들로 구성되며,
    복수의 키들을 상기 수신된 일련의 좌표들과 상관시키는 단계는 프롬프트된 상기 일련의 키스트로크들을 상기 수신된 좌표들과 상관시키는 단계를 포함하는, 컴퓨팅 디바이스.
  13. 제 11 항에 있어서,
    상기 프로세서는,
    상기 복수의 키들 각각에 대한 수신된 좌표들에 기초하여 통계적 엔벨로프를 결정하는 단계; 및
    상기 복수의 키들 각각에 대한 상기 통계적 엔벨로프를 상기 키패드 레이아웃 데이터에 저장하는 단계를 더 포함하는 프로세스들을 더 수행하기 위한 프로세서 실행가능한 명령들로 구성되는, 컴퓨팅 디바이스.
  14. 제 11 항에 있어서,
    상기 프로세서는, 상기 키패드 레이아웃 데이터를 이용하여 상기 가상 키패드의 이미지를 생성하는 단계가 상기 키패드 레이아웃 데이터에 저장된 상기 복수의 키들 각각의 평균 좌표들에 기초한 위치들에서 상기 가상 키패드에서의 키들의 이미지들을 생성하는 단계를 포함하도록 하는 프로세서 실행가능한 명령들로 구성되는, 컴퓨팅 디바이스.
  15. 제 11 항에 있어서,
    상기 프로세서는, 상기 키패드 레이아웃 데이터를 이용하여 상기 가상 키패드의 이미지를 생성하는 단계가, 상기 각각의 키 이미지의 크기가 상기 키패드 레이아웃 데이터에서의 상기 복수의 키들 각각에 대한 통계적 엔벨로프에 기초하는 상기 가상 키패드에서의 상기 복수의 키들의 이미지들을 생성하는 단계를 더 포함하도록 하는 프로세서 실행가능한 명령들로 구성되는, 컴퓨팅 디바이스.
  16. 제 11 항에 있어서,
    상기 프로세서는,
    상기 터치 감지면상에서의 상기 가상 키패드상의 타이핑을 모니터링하는 단계;
    인접 키 타이핑 에러를 식별하는 단계;
    상기 인접 키 타이핑 에러와 연관된 올바른 키를 결정하는 단계;
    상기 타이핑된 키스트로크에 대해 수신된 좌표들에 기초하여 상기 올바른 키에 대한 평균 좌표를 업데이트하는 단계; 및
    상기 업데이트된 평균 좌표를 상기 올바른 키와 함께 상기 키패드 레이아웃 데이터에 저장하는 단계를 포함하는 프로세스들을 더 수행하기 위한 프로세서 실행가능한 명령들로 구성되는, 컴퓨팅 디바이스.
  17. 제 16 항에 있어서,
    상기 프로세서는,
    상기 인접 키 타이핑 에러를 식별하는 단계가,
    철자오기난 단어를 인식하는 단계; 및
    상기 철자오기가 상기 가상 키보드에서 서로 인접한 두 개의 키들의 뒤바뀜을 수반하는지 여부를 결정하는 단계를 포함하도록 하는 프로세서 실행가능한 명령들로 구성되는, 컴퓨팅 디바이스.
  18. 제 16 항에 있어서,
    상기 프로세서는,
    상기 인접 키 타이핑 에러를 식별하는 단계가,
    키와 연관된 글자의 사용자 수정을 인식하는 단계; 및
    상기 사용자 수정이 상기 가상 키보드에서 서로 인접한 두 개의 키들의 뒤바뀜을 수반하는지 여부를 결정하는 단계를 포함하도록 하는 프로세서 실행가능한 명령들로 구성되는, 컴퓨팅 디바이스.
  19. 제 11 항에 있어서,
    상기 키패드 레이아웃 데이터는 네트워크 액세스가능한 데이터베이스에 저장되며,
    상기 프로세서는,
    상기 네트워크를 통해 상기 키패드 레이아웃 데이터를 상기 네트워크 액세스가능한 데이터베이스로부터 수신하는 단계를 포함하는 프로세스들을 더 수행하도록 하기 위한 프로세서 실행가능한 명령들로 구성되는, 컴퓨팅 디바이스.
  20. 제 19 항에 있어서,
    상기 프로세서는,
    상기 컴퓨팅 디바이스에 결합된 상기 터치 감지면에 대한 사용자 터치를 수신하는 단계; 및
    상기 터치 감지면에 대한 상기 수신된 사용자 터치에 기초하여 상기 가상 키패드의 디스플레이를 위한 상기 터치 감지면상에서의 위치를 결정하는 단계; 및
    디스플레이를 위한 상기 터치 감지면상에서의 상기 결정된 위치에서 상기 키패드 레이아웃 데이터를 이용하여 상기 가상 키패드의 이미지를 생성하는 단계를 포함하는 프로세스들을 더 수행하도록 하기 위한 프로세서 실행가능한 명령들로 구성되는, 컴퓨팅 디바이스.
  21. 터치 감지면에 결합된 컴퓨팅 디바이스로서,
    상기 터치 감지면에 대한 일련의 사용자 터치들의 일련의 좌표들을 수신하기 위한 수단;
    복수의 키들을 상기 수신된 일련의 좌표들과 상관시키기 위한 수단;
    상기 복수의 키들 각각과 상관된 수신된 좌표들의 평균을 결정하기 위한 수단;
    상기 복수의 키들 각각에 대한 상기 결정된 평균 좌표들을 키패드 레이아웃 데이터에 저장하기 위한 수단; 및
    상기 키패드 레이아웃 데이터를 이용하여 가상 키패드의 이미지를 생성하기 위한 수단을 포함하는, 컴퓨팅 디바이스.
  22. 제 21 항에 있어서,
    상기 사용자로 하여금 일련의 키스트로크들을 입력할 것을 프롬프트하기 위한 수단을 더 포함하며,
    복수의 키들을 상기 수신된 일련의 좌표들과 상관시키기 위한 수단은 프롬프트된 상기 일련의 키스트로크들을 상기 수신된 좌표들과 상관시키기 위한 수단을 포함하는, 컴퓨팅 디바이스.
  23. 제 21 항에 있어서,
    상기 복수의 키들 각각에 대한 수신된 좌표들에 기초하여 통계적 엔벨로프를 결정하기 위한 수단; 및
    상기 복수의 키들 각각에 대한 상기 통계적 엔벨로프를 상기 키패드 레이아웃 데이터에 저장하기 위한 수단을 더 포함하는, 컴퓨팅 디바이스.
  24. 제 21 항에 있어서,
    상기 키패드 레이아웃 데이터를 이용하여 상기 가상 키패드의 이미지를 생성하기 위한 수단은 상기 키패드 레이아웃 데이터에 저장된 상기 복수의 키들 각각의 상기 평균 좌표들에 기초한 위치들에서 상기 가상 키패드에서의 키들의 이미지들을 생성하기 위한 수단을 포함하는, 컴퓨팅 디바이스.
  25. 제 21 항에 있어서,
    상기 키패드 레이아웃 데이터를 이용하여 상기 가상 키패드의 이미지를 생성하기 위한 수단은 각각의 키 이미지의 크기가 상기 키패드 레이아웃 데이터에서의 상기 복수의 키들 각각에 대한 통계적 엔벨로프에 기초하는 상기 가상 키패드에서의 상기 복수의 키들의 이미지들을 생성하기 위한 수단을 더 포함하는, 컴퓨팅 디바이스.
  26. 제 21 항에 있어서,
    상기 터치 감지면상에서의 상기 가상 키패드상의 타이핑을 모니터링하기 위한 수단;
    인접 키 타이핑 에러를 식별하기 위한 수단;
    상기 인접 키 타이핑 에러와 연관된 올바른 키를 결정하기 위한 수단;
    상기 타이핑된 키스트로크에 대해 수신된 좌표들에 기초하여 상기 올바른 키에 대한 평균 좌표를 업데이트하기 위한 수단; 및
    상기 업데이트된 평균 좌표를 상기 올바른 키와 함께 상기 키패드 레이아웃 데이터에 저장하기 위한 수단을 더 포함하는, 컴퓨팅 디바이스.
  27. 제 26 항에 있어서,
    상기 인접 키 타이핑 에러를 식별하기 위한 수단은,
    철자오기난 단어를 인식하기 위한 수단; 및
    상기 철자오기가 상기 가상 키보드에서 서로 인접한 두 개의 키들의 뒤바뀜을 수반하는지 여부를 결정하기 위한 수단을 포함하는, 컴퓨팅 디바이스.
  28. 제 26 항에 있어서,
    상기 인접 키 타이핑 에러를 식별하기 위한 수단은,
    키와 연관된 글자의 사용자 수정을 인식하기 위한 수단; 및
    상기 사용자 수정이 상기 가상 키보드에서 서로 인접한 두 개의 키들의 뒤바뀜을 수반하는지 여부를 결정하기 위한 수단을 포함하는, 컴퓨팅 디바이스.
  29. 제 21 항에 있어서,
    상기 키패드 레이아웃 데이터는 네트워크 액세스가능한 데이터베이스에 저장되며, 상기 컴퓨팅 디바이스는,
    상기 네트워크를 통해 상기 키패드 레이아웃 데이터를 컴퓨팅 디바이스에 송신하기 위한 수단을 더 포함하며,
    상기 키패드 레이아웃 데이터를 이용하여 가상 키패드의 이미지를 생성하기 위한 수단은 상기 컴퓨팅 디바이스에 결합된 터치 감지면상에 상기 가상 키패드의 이미지를 생성하기 위한 수단을 포함하는, 컴퓨팅 디바이스.
  30. 제 29 항에 있어서,
    상기 컴퓨팅 디바이스에 결합된 상기 터치 감지면에 대한 사용자 터치를 수신하기 위한 수단; 및
    상기 터치 감지면에 대한 상기 수신된 사용자 터치에 기초하여 상기 가상 키패드의 디스플레이를 위한 상기 터치 감지면상에서의 위치를 결정하기 위한 수단을 더 포함하며,
    상기 키패드 레이아웃 데이터를 이용하여 가상 키패드의 이미지를 생성하기 위한 수단은 디스플레이를 위한 상기 터치 감지면상에서의 상기 결정된 위치에서 상기 이미지를 생성하기 위한 수단을 포함하는, 컴퓨팅 디바이스.
  31. 컴퓨터 프로그램 제품으로서,
    상기 터치 감지면에 대한 일련의 사용자 터치들의 일련의 좌표들을 수신하기 위한 적어도 하나의 명령;
    복수의 키들을 상기 수신된 일련의 좌표들과 상관시키기 위한 적어도 하나의 명령;
    상기 복수의 키들 각각과 상관된 수신된 좌표들의 평균을 결정하기 위한 적어도 하나의 명령;
    상기 복수의 키들 각각에 대한 상기 결정된 평균 좌표들을 키패드 레이아웃 데이터에 저장하기 위한 적어도 하나의 명령; 및
    상기 키패드 레이아웃 데이터를 이용하여 가상 키패드의 이미지를 생성하기 위한 적어도 하나의 명령을 포함한 컴퓨터 판독가능한 매체를 포함하는, 컴퓨터 프로그램 제품.
  32. 제 31 항에 있어서,
    상기 컴퓨터 판독가능한 매체는,
    상기 사용자로 하여금 일련의 키스트로크들을 입력할 것을 프롬프트하기 위한 적어도 하나의 명령을 더 포함하며,
    복수의 키들을 상기 수신된 일련의 좌표들과 상관시키기 위한 적어도 하나의 명령은 프롬프트된 상기 일련의 키스트로크들을 상기 수신된 좌표들과 상관시키기 위한 적어도 하나의 명령을 포함하는, 컴퓨터 프로그램 제품.
  33. 제 31 항에 있어서,
    상기 컴퓨터 판독가능한 매체는,
    상기 복수의 키들 각각에 대한 수신된 좌표들에 기초하여 통계적 엔벨로프를 결정하기 위한 적어도 하나의 명령; 및
    상기 복수의 키들 각각에 대한 상기 통계적 엔벨로프를 상기 키패드 레이아웃 데이터에 저장하기 위한 적어도 하나의 명령을 더 포함하는, 컴퓨터 프로그램 제품.
  34. 제 31 항에 있어서,
    상기 키패드 레이아웃 데이터를 이용하여 상기 가상 키패드의 이미지를 생성하기 위한 적어도 하나의 명령은 상기 키패드 레이아웃 데이터에 저장된 상기 복수의 키들 각각의 상기 평균 좌표들에 기초한 위치들에서 상기 가상 키패드에서의 키들의 이미지들을 생성하기 위한 적어도 하나의 명령을 포함하는, 컴퓨터 프로그램 제품.
  35. 제 31 항에 있어서,
    상기 키패드 레이아웃 데이터를 이용하여 상기 가상 키패드의 이미지를 생성하기 위한 적어도 하나의 명령은 각각의 키 이미지의 크기가 상기 키패드 레이아웃 데이터에서의 상기 복수의 키들 각각에 대한 통계적 엔벨로프에 기초하는 상기 가상 키패드에서의 상기 복수의 키들의 이미지들을 생성하기 위한 적어도 하나의 명령을 더 포함하는, 컴퓨터 프로그램 제품.
  36. 제 31 항에 있어서,
    상기 컴퓨터 판독가능한 매체는,
    상기 터치 감지면상에서의 상기 가상 키패드상의 타이핑을 모니터링하기 위한 적어도 하나의 명령;
    인접 키 타이핑 에러를 식별하기 위한 적어도 하나의 명령;
    상기 인접 키 타이핑 에러와 연관된 올바른 키를 결정하기 위한 적어도 하나의 명령;
    상기 타이핑된 키스트로크에 대해 수신된 좌표들에 기초하여 상기 올바른 키에 대한 평균 좌표를 업데이트하기 위한 적어도 하나의 명령; 및
    상기 업데이트된 평균 좌표들을 상기 올바른 키와 함께 상기 키패드 레이아웃 데이터에 저장하기 위한 적어도 하나의 명령을 더 포함하는, 컴퓨터 프로그램 제품.
  37. 제 36 항에 있어서,
    상기 인접 키 타이핑 에러를 식별하기 위한 적어도 하나의 명령은,
    철자오기난 단어를 인식하기 위한 적어도 하나의 명령; 및
    상기 철자오기가 상기 가상 키보드에서 서로 인접한 두 개의 키들의 뒤바뀜을 수반하는지 여부를 결정하기 위한 적어도 하나의 명령을 포함하는, 컴퓨터 프로그램 제품.
  38. 제 36 항에 있어서,
    상기 인접 키 타이핑 에러를 식별하기 위한 적어도 하나의 명령은,
    키와 연관된 글자의 사용자 수정을 인식하기 위한 적어도 하나의 명령; 및
    상기 사용자 수정이 상기 가상 키보드에서 서로 인접한 두 개의 키들의 뒤바뀜을 수반하는지 여부를 결정하기 위한 적어도 하나의 명령을 포함하는, 컴퓨터 프로그램 제품.
  39. 제 31 항에 있어서,
    상기 키패드 레이아웃 데이터는 네트워크 액세스가능한 데이터베이스에 저장되며, 상기 컴퓨터 판독가능한 매체는,
    상기 네트워크를 통해 상기 키패드 레이아웃 데이터를 컴퓨팅 디바이스에 송신하기 위한 적어도 하나의 명령을 더 포함하며,
    상기 키패드 레이아웃 데이터를 이용하여 가상 키패드의 이미지를 생성하기 위한 적어도 하나의 명령은 상기 컴퓨팅 디바이스에 결합된 터치 감지면상에 상기 가상 키패드의 이미지를 생성하기 위한 적어도 하나의 명령을 포함하는, 컴퓨터 프로그램 제품.
  40. 제 39 항에 있어서,
    상기 컴퓨터 판독가능한 매체는,
    상기 컴퓨팅 디바이스에 결합된 상기 터치 감지면에 대한 사용자 터치를 수신하기 위한 적어도 하나의 명령; 및
    상기 터치 감지면에 대한 상기 수신된 사용자 터치에 기초하여 상기 가상 키패드의 디스플레이를 위한 상기 터치 감지면상에서의 위치를 결정하기 위한 적어도 하나의 명령을 더 포함하며,
    상기 키패드 레이아웃 데이터를 이용하여 가상 키패드의 이미지를 생성하기 위한 적어도 하나의 명령은 디스플레이를 위한 상기 터치 감지면상에서의 상기 결정된 위치에서 상기 이미지를 생성하기 위한 적어도 하나의 명령을 포함하는, 컴퓨터 프로그램 제품.
  41. 사용자의 손들에 대해 디폴트 키패드를 맞춤화하기 위한 방법으로서,
    상기 터치 감지면에 대한 일련의 사용자 터치들의 일련의 복수의 좌표들을 수신하는 단계;
    상기 사용자 터치들의 수신된 복수의 좌표들의 적어도 일부분에 기초하여 상기 사용자의 손들의 치수를 측정하는 단계;
    상기 사용자의 손들의 상기 측정된 치수에 기초하여 디폴트 키패드 레이아웃의 레이아웃 치수들을 조정하는 단계; 및
    상기 디폴트 키패드 레이아웃의 상기 조정된 레이아웃 치수들을 이용하여 가상 키패드의 이미지를 생성하는 단계를 포함하는, 디폴트 키패드 맞춤화 방법.
  42. 컴퓨팅 디바이스로서,
    프로세서;
    상기 프로세서에 결합된 메모리; 및
    상기 프로세서에 결합된 터치 감지면을 포함하며,
    상기 프로세서는,
    상기 터치 감지면에 대한 일련의 사용자 터치들의 일련의 복수의 좌표들을 수신하는 단계;
    상기 사용자 터치들의 수신된 복수의 좌표들의 적어도 일부분에 기초하여 상기 사용자의 손들의 치수를 측정하는 단계;
    상기 사용자의 손들의 상기 측정된 치수에 기초하여 디폴트 키패드 레이아웃의 레이아웃 치수들을 조정하는 단계; 및
    상기 디폴트 키패드 레이아웃의 상기 조정된 레이아웃 치수들을 이용하여 가상 키패드의 이미지를 생성하는 단계를 포함하는 프로세스들을 수행하기 위한 프로세서 실행가능한 명령들로 구성되는, 컴퓨팅 디바이스.
  43. 컴퓨팅 디바이스로서,
    상기 터치 감지면에 대한 사용자 터치들의 복수의 좌표들을 수신하기 위한 수단;
    상기 사용자 터치들의 상기 수신된 복수의 좌표들의 적어도 일부분에 기초하여 상기 사용자의 손들의 치수를 측정하기 위한 수단;
    상기 사용자의 손들의 상기 측정된 치수에 기초하여 디폴트 키패드 레이아웃의 레이아웃 치수들을 조정하기 위한 수단; 및
    상기 디폴트 키패드 레이아웃의 상기 조정된 레이아웃 치수들을 이용하여 가상 키패드의 이미지를 생성하기 위한 수단을 포함하는, 컴퓨팅 디바이스.
  44. 컴퓨터 프로그램 제품으로서,
    상기 터치 감지면에 대한 사용자 터치들의 복수의 좌표들을 수신하기 위한 적어도 하나의 명령;
    상기 사용자 터치들의 상기 수신된 복수의 좌표들의 적어도 일부분에 기초하여 상기 사용자의 손들의 치수를 측정하기 위한 적어도 하나의 명령;
    상기 사용자의 손들의 상기 측정된 치수에 기초하여 디폴트 키패드 레이아웃의 레이아웃 치수들을 조정하기 위한 적어도 하나의 명령; 및
    상기 디폴트 키패드 레이아웃의 상기 조정된 레이아웃 치수들을 이용하여 가상 키패드의 이미지를 생성하기 위한 적어도 하나의 명령을 포함하는, 컴퓨터 프로그램 제품.
KR1020117026854A 2009-04-10 2009-05-11 학습 능력들을 갖춘 가상 키패드 생성기 KR101359090B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/422,077 2009-04-10
US12/422,077 US8300023B2 (en) 2009-04-10 2009-04-10 Virtual keypad generator with learning capabilities
PCT/US2009/043433 WO2010117374A1 (en) 2009-04-10 2009-05-11 A virtual keypad generator with learning capabilities

Publications (2)

Publication Number Publication Date
KR20120007042A true KR20120007042A (ko) 2012-01-19
KR101359090B1 KR101359090B1 (ko) 2014-02-06

Family

ID=41172324

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117026854A KR101359090B1 (ko) 2009-04-10 2009-05-11 학습 능력들을 갖춘 가상 키패드 생성기

Country Status (6)

Country Link
US (1) US8300023B2 (ko)
EP (1) EP2417509A1 (ko)
JP (1) JP5377752B2 (ko)
KR (1) KR101359090B1 (ko)
CN (1) CN102378950B (ko)
WO (1) WO2010117374A1 (ko)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101328556B1 (ko) * 2012-03-19 2013-11-13 김진수 문자 입력장치
KR20140089812A (ko) * 2013-01-07 2014-07-16 엘지전자 주식회사 전자 기기 및 전자 기기의 제어 방법
KR20170029832A (ko) * 2015-09-08 2017-03-16 엘지전자 주식회사 디지털 디바이스 및 상기 디지털 디바이스에서 데이터 처리 방법
US9965179B2 (en) 2012-11-27 2018-05-08 Thomson Licensing Adaptive virtual keyboard
US10048861B2 (en) 2012-11-27 2018-08-14 Thomson Licensing Adaptive virtual keyboard
KR20190068497A (ko) * 2019-05-29 2019-06-18 엘지전자 주식회사 가상 키보드 제어방법 및 제어장치
WO2020040355A1 (ko) * 2018-08-23 2020-02-27 유승민 키패드 표시기능을 구비한 이동 단말기
KR20200021682A (ko) * 2018-08-21 2020-03-02 김동현 압력센서를 이용한 자판 배열 커스터마이징 키보드장치 및 그 자판 생성 방법
WO2022097896A1 (ko) * 2020-11-09 2022-05-12 박지훈 터치스크린이 구비된 휴대 단말기의 키보드 설정 방법
KR20220122334A (ko) * 2021-02-26 2022-09-02 한국과학기술원 소프트 키보드를 분석 및 제공하기 위한 장치 및 그에 과한 방법

Families Citing this family (169)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA3012154A1 (en) 2003-05-30 2004-12-16 Apple Inc. An in-circuit security system and methods for controlling access to and use of sensitive data
WO2007095330A2 (en) 2006-02-15 2007-08-23 Hologic Inc Breast biopsy and needle localization using tomosynthesis systems
US10048860B2 (en) 2006-04-06 2018-08-14 Google Technology Holdings LLC Method and apparatus for user interface adaptation
WO2009042392A2 (en) 2007-09-24 2009-04-02 Apple Inc. Embedded authentication systems in an electronic device
KR101513019B1 (ko) * 2008-10-27 2015-04-17 엘지전자 주식회사 휴대 단말기 및 그 동작방법
GB201108200D0 (en) 2011-05-16 2011-06-29 Touchtype Ltd User input prediction
US20100275126A1 (en) * 2009-04-27 2010-10-28 Scott David Lincke Automatic On-Screen Keyboard
US20100271315A1 (en) * 2009-04-28 2010-10-28 Microsoft Corporation Encoding and decoding adaptive input device inputs
JP2011034476A (ja) * 2009-08-05 2011-02-17 Seiko Epson Corp 情報入力装置および情報入力方法
US9454514B2 (en) * 2009-09-02 2016-09-27 Red Hat, Inc. Local language numeral conversion in numeric computing
US8516367B2 (en) * 2009-09-29 2013-08-20 Verizon Patent And Licensing Inc. Proximity weighted predictive key entry
US8816965B2 (en) * 2009-09-30 2014-08-26 At&T Mobility Ii Llc Predictive force sensitive keypad
US20110074692A1 (en) * 2009-09-30 2011-03-31 At&T Mobility Ii Llc Devices and Methods for Conforming a Virtual Keyboard
US8810516B2 (en) 2009-09-30 2014-08-19 At&T Mobility Ii Llc Angular sensitized keypad
US8812972B2 (en) * 2009-09-30 2014-08-19 At&T Intellectual Property I, L.P. Dynamic generation of soft keyboards for mobile devices
US9128610B2 (en) * 2009-09-30 2015-09-08 At&T Mobility Ii Llc Virtual predictive keypad
US9122393B2 (en) * 2009-09-30 2015-09-01 At&T Mobility Ii Llc Predictive sensitized keypad
KR101043944B1 (ko) * 2009-09-30 2011-06-24 주식회사 팬택 가상 키보드 제공 방법 및 장치
CN102481146B (zh) 2009-10-08 2016-08-17 霍罗吉克公司 乳房的穿刺活检系统及其使用方法
US8627224B2 (en) * 2009-10-27 2014-01-07 Qualcomm Incorporated Touch screen keypad layout
US8621380B2 (en) 2010-01-06 2013-12-31 Apple Inc. Apparatus and method for conditionally enabling or disabling soft buttons
US8423897B2 (en) * 2010-01-28 2013-04-16 Randy Allan Rendahl Onscreen keyboard assistance method and system
US8782556B2 (en) 2010-02-12 2014-07-15 Microsoft Corporation User-centric soft keyboard predictive technologies
US20110260977A1 (en) * 2010-04-23 2011-10-27 Psion Teklogix Inc. Keyboard and computing device for providing a software input panel
US9891821B2 (en) * 2010-04-23 2018-02-13 Handscape Inc. Method for controlling a control region of a computerized device from a touchpad
US9740364B2 (en) * 2010-05-03 2017-08-22 Microsoft Technology Licensing, Llc Computer with graphical user interface for interaction
US8648809B2 (en) * 2010-06-16 2014-02-11 International Business Machines Corporation Reconfiguration of virtual keyboard
US8266528B1 (en) * 2010-06-24 2012-09-11 Google Inc. Spelling suggestions based on an input sequence including accidental “delete”
US20110316785A1 (en) * 2010-06-25 2011-12-29 Murray Hidary Keypad for hand-held devices with touch screens
US20120017161A1 (en) * 2010-07-19 2012-01-19 David Hirshberg System and method for user interface
KR20130129914A (ko) * 2010-08-12 2013-11-29 구글 인코포레이티드 터치스크린 상에서의 손가락 인식
JP5614173B2 (ja) * 2010-08-25 2014-10-29 ソニー株式会社 情報処理装置、情報処理方法およびプログラム
US20130275907A1 (en) * 2010-10-14 2013-10-17 University of Technology ,Sydney Virtual keyboard
KR101044320B1 (ko) * 2010-10-14 2011-06-29 주식회사 네오패드 가상 키입력수단의 배경화면 컨텐츠 제공 방법 및 시스템
JP2013518314A (ja) * 2010-11-03 2013-05-20 ファーウェイ デバイス カンパニー リミテッド ソフトキーボードレイアウトを調節する方法、及びモバイル端末
US8587547B2 (en) * 2010-11-05 2013-11-19 Apple Inc. Device, method, and graphical user interface for manipulating soft keyboards
US8648823B2 (en) 2010-11-05 2014-02-11 Apple Inc. Device, method, and graphical user interface for manipulating soft keyboards
US20120119999A1 (en) * 2010-11-11 2012-05-17 Harris Scott C Adaptive Keyboard for portable device
WO2012071429A1 (en) 2010-11-26 2012-05-31 Hologic, Inc. User interface for medical image review workstation
US8555355B2 (en) * 2010-12-07 2013-10-08 Verizon Patent And Licensing Inc. Mobile pin pad
KR101821160B1 (ko) 2010-12-10 2018-03-08 삼성전자 주식회사 휴대단말에서 사용자 키패드 제공 방법 및 장치
US20120169611A1 (en) * 2010-12-30 2012-07-05 Hanxiang Chen Smart touch screen keyboard
US9891818B2 (en) * 2010-12-30 2018-02-13 International Business Machines Corporation Adaptive touch-sensitive displays and methods
CN102541420A (zh) * 2010-12-31 2012-07-04 上海优熠电子科技有限公司 一种自适应虚拟键盘系统
US9092132B2 (en) 2011-01-24 2015-07-28 Apple Inc. Device, method, and graphical user interface with a dynamic gesture disambiguation threshold
US9436381B2 (en) 2011-01-24 2016-09-06 Apple Inc. Device, method, and graphical user interface for navigating and annotating an electronic document
JP6057922B2 (ja) 2011-03-08 2017-01-11 ホロジック, インコーポレイテッドHologic, Inc. スクリーニング、診断及び生検のための二重エネルギー及び/又は造影強化乳房撮像のためのシステム及び方法
CN102231095A (zh) * 2011-03-17 2011-11-02 罗蒙明 用于触摸屏手机判断虚拟键盘手指按键的方法
WO2012131420A1 (en) * 2011-03-31 2012-10-04 Infosys Limited System and method for utilizing a dynamic virtual keyboard
US20120249596A1 (en) * 2011-03-31 2012-10-04 Nokia Corporation Methods and apparatuses for dynamically scaling a touch display user interface
CN102736829A (zh) * 2011-04-03 2012-10-17 苏州达方电子有限公司 具有虚拟键盘的触控装置及其形成虚拟键盘的方法
US20120256860A1 (en) * 2011-04-05 2012-10-11 James Robert Justice Directional Finger Recognition Authoring
US9636582B2 (en) * 2011-04-18 2017-05-02 Microsoft Technology Licensing, Llc Text entry by training touch models
CN102750021A (zh) * 2011-04-19 2012-10-24 国际商业机器公司 用于修正用户输入位置的方法及系统
US9576122B2 (en) 2011-04-25 2017-02-21 Softlayer Technologies, Inc. System and method for secure data entry
US20120311476A1 (en) * 2011-06-02 2012-12-06 Alan Stirling Campbell System and method for providing an adaptive touch screen keyboard
US20130044063A1 (en) * 2011-08-19 2013-02-21 Apple Inc. Touch correcting keypad
JP5524153B2 (ja) * 2011-09-08 2014-06-18 日本電信電話株式会社 タッチ操作式ソフトウェアキーボードの表示システム、表示方法及びプログラム
WO2013053060A1 (en) * 2011-10-14 2013-04-18 1Line Incorporated System and method for input device layout
US8490008B2 (en) 2011-11-10 2013-07-16 Research In Motion Limited Touchscreen keyboard predictive display and generation of a set of characters
US9551572B2 (en) * 2011-11-08 2017-01-24 Sony Corporation Sensor device, analyzing device, and recording medium for detecting the position at which an object touches another object
US9715489B2 (en) 2011-11-10 2017-07-25 Blackberry Limited Displaying a prediction candidate after a typing mistake
US9122672B2 (en) 2011-11-10 2015-09-01 Blackberry Limited In-letter word prediction for virtual keyboard
US9310889B2 (en) 2011-11-10 2016-04-12 Blackberry Limited Touchscreen keyboard predictive display and generation of a set of characters
US9652448B2 (en) 2011-11-10 2017-05-16 Blackberry Limited Methods and systems for removing or replacing on-keyboard prediction candidates
JP5647968B2 (ja) * 2011-11-22 2015-01-07 株式会社ソニー・コンピュータエンタテインメント 情報処理装置および情報処理方法
JP2014534042A (ja) 2011-11-27 2014-12-18 ホロジック, インコーポレイテッドHologic, Inc. マンモグラフィーおよび/またはトモシンセシス画像データを使用して2d画像を生成するためのシステムおよび方法
CN102523324A (zh) * 2011-12-04 2012-06-27 东华大学 一种具有智能侧键的手持式智能设备
US9104528B2 (en) 2011-12-08 2015-08-11 Microsoft Technology Licensing, Llc Controlling the release of private information using static flow analysis
CH705918A2 (de) * 2011-12-19 2013-06-28 Ralf Trachte Feld-Analysen für flexible Computer-Eingabe.
KR20130071253A (ko) * 2011-12-20 2013-06-28 한국전자통신연구원 맞춤형 키보드 ui 제공 장치 및 방법
TWI453628B (zh) * 2012-01-12 2014-09-21 Amtran Technology Co Ltd 適應性調整虛擬按鍵尺寸的方法及其顯示裝置
US9557913B2 (en) 2012-01-19 2017-01-31 Blackberry Limited Virtual keyboard display having a ticker proximate to the virtual keyboard
US9152323B2 (en) 2012-01-19 2015-10-06 Blackberry Limited Virtual keyboard providing an indication of received input
WO2013112464A2 (en) * 2012-01-23 2013-08-01 Connors Robert W Compact microwave oven
US8909565B2 (en) 2012-01-30 2014-12-09 Microsoft Corporation Clustering crowdsourced data to create and apply data input models
JP6240097B2 (ja) 2012-02-13 2017-11-29 ホロジック インコーポレイティッド 合成画像データを使用してトモシンセシススタックをナビゲートする方法
WO2013123571A1 (en) 2012-02-24 2013-08-29 Research In Motion Limited Virtual keyboard with dynamically reconfigurable layout
GB2503968B (en) 2012-02-24 2021-02-17 Blackberry Ltd Touchscreen keyboard providing word predictions in partitions of the touchscreen keyboard in proximate association with candidate letters
US20130239041A1 (en) * 2012-03-06 2013-09-12 Sony Corporation Gesture control techniques for use with displayed virtual keyboards
JP5475821B2 (ja) * 2012-03-30 2014-04-16 みずほ情報総研株式会社 入力支援プログラム及び入力支援装置
KR20130111809A (ko) * 2012-04-02 2013-10-11 삼성전자주식회사 터치스크린 단말기에서 그래픽 키패드 제공 방법 및 장치
US8850349B2 (en) * 2012-04-06 2014-09-30 Google Inc. Smart user-customized graphical keyboard
CN103365548B (zh) * 2012-04-06 2016-01-06 腾讯科技(深圳)有限公司 触屏移动终端菜单按钮的显示方法和装置
US9201510B2 (en) 2012-04-16 2015-12-01 Blackberry Limited Method and device having touchscreen keyboard with visual cues
US9633186B2 (en) * 2012-04-23 2017-04-25 Apple Inc. Systems and methods for controlling output of content based on human recognition data detection
US9292192B2 (en) 2012-04-30 2016-03-22 Blackberry Limited Method and apparatus for text selection
US9354805B2 (en) 2012-04-30 2016-05-31 Blackberry Limited Method and apparatus for text selection
CA2832392A1 (en) * 2012-04-30 2013-11-07 Jerome Pasquero Touchscreen keyboard with correction of previously input text
CN102707891B (zh) * 2012-05-16 2015-08-19 华为终端有限公司 一种校准触屏输入的方法和移动终端
CN111178332A (zh) 2012-05-18 2020-05-19 苹果公司 用于操纵用户界面的设备、方法和图形用户界面
US9207860B2 (en) 2012-05-25 2015-12-08 Blackberry Limited Method and apparatus for detecting a gesture
TW201349046A (zh) * 2012-05-30 2013-12-01 Cross Multimedia Inc 觸控感應輸入系統
CN103455263B (zh) * 2012-05-31 2017-04-05 百度在线网络技术(北京)有限公司 一种用于提供虚拟输入键盘的方法与设备
US8762876B2 (en) 2012-06-21 2014-06-24 Google Inc. Secure data entry via a virtual keyboard
JP5910345B2 (ja) * 2012-06-21 2016-04-27 富士通株式会社 文字入力プログラム、情報処理装置および文字入力方法
US9116552B2 (en) 2012-06-27 2015-08-25 Blackberry Limited Touchscreen keyboard providing selection of word predictions in partitions of the touchscreen keyboard
US9041654B2 (en) * 2012-07-18 2015-05-26 Sap Se Virtual touchscreen keyboards
GB201212878D0 (en) 2012-07-20 2012-09-05 Pike Justin Authentication method and system
US8977553B2 (en) * 2012-07-30 2015-03-10 Google Inc. Dynamic adjustment of text input system components
US9305229B2 (en) 2012-07-30 2016-04-05 Bruno Delean Method and system for vision based interfacing with a computer
CN103577033B (zh) * 2012-08-07 2017-03-01 百度在线网络技术(北京)有限公司 一种输入法面板的设置方法和系统
US9548012B1 (en) * 2012-08-29 2017-01-17 Amazon Technologies, Inc. Adaptive ergonomic keyboard
US9524290B2 (en) 2012-08-31 2016-12-20 Blackberry Limited Scoring predictions based on prediction length and typing speed
US9063653B2 (en) 2012-08-31 2015-06-23 Blackberry Limited Ranking predictions based on typing speed and typing confidence
US20140062889A1 (en) * 2012-09-06 2014-03-06 Samsung Electronics Co., Ltd. Method of processing touch input for mobile device
US9600167B2 (en) * 2012-09-28 2017-03-21 Facebook, Inc. Systems and methods for a user-adaptive keyboard
US20140098141A1 (en) * 2012-10-10 2014-04-10 At&T Intellectual Property I, L.P. Method and Apparatus for Securing Input of Information via Software Keyboards
DE102012219129B4 (de) 2012-10-19 2019-07-11 Eberhard Karls Universität Tübingen Verfahren zum Betreiben einer Vorrichtung, die eine Benutzerschnittstelle mit einem Berührungssensor aufweist, sowie entsprechende Vorrichtung
CN104903836A (zh) * 2012-11-15 2015-09-09 奥利弗.舍恩勒本 用于在移动计算设备上打字的方法和设备
US20140139556A1 (en) * 2012-11-22 2014-05-22 Shanghai Powermo Information Tech. Co. Ltd. Apparatus and method for displaying software keyboards thereof
WO2014083370A1 (en) * 2012-11-27 2014-06-05 Thomson Licensing Adaptive virtual keyboard
US9411510B2 (en) * 2012-12-07 2016-08-09 Apple Inc. Techniques for preventing typographical errors on soft keyboards
CN103870201A (zh) * 2012-12-18 2014-06-18 联想(北京)有限公司 一种虚拟键盘显示方法和设备
US20140198047A1 (en) * 2013-01-14 2014-07-17 Nuance Communications, Inc. Reducing error rates for touch based keyboards
CN104049933B (zh) * 2013-03-11 2019-07-26 联想(北京)有限公司 一种信息处理的方法及电子设备
US10599328B2 (en) * 2013-03-14 2020-03-24 Valve Corporation Variable user tactile input device with display feedback system
US9535603B2 (en) 2013-03-14 2017-01-03 Carl F. Andersen Columnar fitted virtual keyboard
US10092358B2 (en) 2013-03-15 2018-10-09 Hologic, Inc. Tomosynthesis-guided biopsy apparatus and method
FR3004548B1 (fr) * 2013-04-11 2016-08-19 Bigben Interactive Sa Telecommande avec interface reconfigurable
CN104123072B (zh) * 2013-04-28 2019-03-19 百度在线网络技术(北京)有限公司 一种用于提供移动设备中的虚拟键盘的方法和设备
JP2014235612A (ja) 2013-06-03 2014-12-15 富士通株式会社 端末装置、補正方法および補正プログラム
KR101411569B1 (ko) * 2013-06-05 2014-06-27 고려대학교 산학협력단 가상 키보드를 이용한 정보 처리 장치 및 방법
CN104345944B (zh) * 2013-08-05 2019-01-18 中兴通讯股份有限公司 自适应调整触摸输入面板布局的装置、方法及移动终端
US9785257B2 (en) 2013-10-10 2017-10-10 Empire Technology Development Llc Shape changing device
CN103699882A (zh) * 2013-12-17 2014-04-02 百度在线网络技术(北京)有限公司 一种用于生成个性化输入面板的方法和装置
CN103885632B (zh) * 2014-02-22 2018-07-06 小米科技有限责任公司 输入方法和装置
EP3110332B1 (en) 2014-02-28 2018-04-11 Hologic Inc. System and method for generating and displaying tomosynthesis image slabs
US10073493B2 (en) * 2014-03-19 2018-09-11 Sony Corporation Device and method for controlling a display panel
US20150277686A1 (en) * 2014-03-25 2015-10-01 ScStan, LLC Systems and Methods for the Real-Time Modification of Videos and Images Within a Social Network Format
WO2015156824A1 (en) * 2014-04-11 2015-10-15 Empire Technology Development Llc Shape-changing keyboard
US10303295B2 (en) 2014-05-30 2019-05-28 Apple Inc. Modifying an on-screen keyboard based on asymmetric touch drift
US10025427B2 (en) * 2014-06-27 2018-07-17 Microsoft Technology Licensing, Llc Probabilistic touch sensing
CN105224069B (zh) * 2014-07-03 2019-03-19 王登高 一种增强现实虚拟键盘输入方法及使用该方法的装置
WO2016010524A1 (en) 2014-07-15 2016-01-21 Hewlett-Packard Development Company, L.P. Virtual keyboard
JP6330565B2 (ja) * 2014-08-08 2018-05-30 富士通株式会社 情報処理装置、情報処理方法及び情報処理プログラム
WO2016029399A1 (en) * 2014-08-28 2016-03-03 Qualcomm Incorporated Object selection based on region of interest fusion
US10671275B2 (en) * 2014-09-04 2020-06-02 Apple Inc. User interfaces for improving single-handed operation of devices
US20160085440A1 (en) * 2014-09-19 2016-03-24 Qualcomm Incorporated Systems and methods for providing an anatomically adaptable keyboard
CN107077221A (zh) * 2014-09-29 2017-08-18 惠普发展公司有限责任合伙企业 虚拟键盘
TWI551132B (zh) * 2014-10-21 2016-09-21 Chunghwa Telecom Co Ltd IPTV virtual screen keyboard password input method and system
WO2016081011A1 (en) * 2014-11-21 2016-05-26 Hewlett Packard Enterprise Development Lp Keyboard offset coordinates
US9746938B2 (en) 2014-12-15 2017-08-29 At&T Intellectual Property I, L.P. Exclusive view keyboard system and method
GB201520760D0 (en) 2015-05-27 2016-01-06 Mypinpad Ltd And Licentia Group Ltd Encoding methods and systems
CN104835471B (zh) * 2015-05-28 2019-04-05 南京中电熊猫液晶显示科技有限公司 一种液晶面板的源极驱动器
KR101653167B1 (ko) * 2015-06-22 2016-09-09 주식회사 노타 키 입력을 인터페이스하는 장치 및 방법
JP6153588B2 (ja) * 2015-12-21 2017-06-28 レノボ・シンガポール・プライベート・リミテッド 情報処理装置及びセンシングレイアウト更新方法並びにプログラム
US10963159B2 (en) * 2016-01-26 2021-03-30 Lenovo (Singapore) Pte. Ltd. Virtual interface offset
WO2018006129A1 (en) * 2016-07-08 2018-01-11 Blanchard Mehdi Gesture-based input command interface, method and system
EP3485414A4 (en) * 2016-10-25 2020-03-18 Hewlett-Packard Development Company, L.P. CONTROL OF USER INTERFACES FOR ELECTRONIC DEVICES
CN108008902B (zh) * 2016-10-31 2022-05-31 北京搜狗科技发展有限公司 一种虚拟键盘的调整方法、装置和一种播放方法、装置
KR101815889B1 (ko) 2017-02-08 2018-01-08 계명대학교 산학협력단 사용자의 키 입력 특성을 학습하는 가상 키패드를 이용한 사용자의 키 입력 방법 추정 방법 및 시스템
CN110621231B (zh) 2017-03-30 2024-02-23 豪洛捷公司 用于分层次多级特征图像合成和表示的系统以及方法
US11445993B2 (en) 2017-03-30 2022-09-20 Hologic, Inc. System and method for targeted object enhancement to generate synthetic breast tissue images
CN110621233B (zh) 2017-03-30 2023-12-12 豪洛捷公司 用于处理乳房组织图像数据的方法
EP3641635A4 (en) 2017-06-20 2021-04-07 Hologic, Inc. DYNAMIC SELF-LEARNING MEDICAL IMAGING PROCESS AND SYSTEM
CN108037890B (zh) * 2017-12-13 2020-10-23 北京易诚高科科技发展有限公司 触控设备单手持机app操作手指舒适度度量方法
RU2726009C1 (ru) 2017-12-27 2020-07-08 Общество С Ограниченной Ответственностью "Яндекс" Способ и система для исправления неверного набора слова вследствие ошибки ввода с клавиатуры и/или неправильной раскладки клавиатуры
CN108196695A (zh) * 2017-12-28 2018-06-22 深圳Tcl新技术有限公司 实现泰语输入的方法、装置和计算机可读存储介质
TWI689846B (zh) 2018-02-14 2020-04-01 元太科技工業股份有限公司 輸入裝置及其顯示符號之方法
CN110858120B (zh) * 2018-08-24 2023-02-17 北京搜狗科技发展有限公司 输入键盘推荐方法及装置
US11398918B1 (en) * 2018-10-22 2022-07-26 Wells Fargo Bank, N.A. Passive user authentication
US20200125235A1 (en) * 2018-10-23 2020-04-23 Microsoft Technology Licensing, Llc Adjustable Virtual User Input Devices To Accommodate User Physical Limitations
US10937244B2 (en) 2018-10-23 2021-03-02 Microsoft Technology Licensing, Llc Efficiency enhancements to construction of virtual reality environments
US10852901B2 (en) * 2019-01-21 2020-12-01 Promethean Limited Systems and methods for user interface adjustment, customization, and placement
CN109714645B (zh) * 2019-01-25 2020-12-11 山东云缦智能科技有限公司 一种基于Android机顶盒软键盘快捷操作的方法
WO2021054589A1 (en) 2019-09-18 2021-03-25 Samsung Electronics Co., Ltd. Electronic apparatus and controlling method thereof
US11216182B2 (en) * 2020-03-03 2022-01-04 Intel Corporation Dynamic configuration of a virtual keyboard
CN115079834A (zh) * 2021-03-11 2022-09-20 京东方科技集团股份有限公司 键盘

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5914481A (en) 1986-08-08 1999-06-22 Norand Corporation Portable data collection terminal with handwritten input area
US4821030A (en) 1986-12-19 1989-04-11 Tektronix, Inc. Touchscreen feedback system
DE3926460A1 (de) 1989-08-10 1991-02-14 Busch Dieter & Co Prueftech Elektronischer rechner
US5128672A (en) 1990-10-30 1992-07-07 Apple Computer, Inc. Dynamic predictive keyboard
EP0498082B1 (en) 1991-02-01 1998-05-06 Koninklijke Philips Electronics N.V. Apparatus for the interactive handling of objects
JP2813728B2 (ja) 1993-11-01 1998-10-22 インターナショナル・ビジネス・マシーンズ・コーポレイション ズーム/パン機能付パーソナル通信機
US5581484A (en) * 1994-06-27 1996-12-03 Prince; Kevin R. Finger mounted computer input device
US5996080A (en) 1995-10-04 1999-11-30 Norand Corporation Safe, virtual trigger for a portable data capture terminal
JPH09319739A (ja) * 1996-05-28 1997-12-12 Hitachi Ltd 文字入力装置
FI104928B (fi) 1997-11-27 2000-04-28 Nokia Mobile Phones Ltd Langaton viestin ja menetelmä langattoman viestimen valmistuksessa
US7844914B2 (en) * 2004-07-30 2010-11-30 Apple Inc. Activating virtual keys of a touch-screen virtual keyboard
US6011542A (en) 1998-02-13 2000-01-04 Sony Corporation Graphical text entry wheel
JP2000066817A (ja) 1998-08-20 2000-03-03 Nec Corp キーボード装置
US7030863B2 (en) 2000-05-26 2006-04-18 America Online, Incorporated Virtual keyboard system with automatic correction
US6335725B1 (en) 1999-07-14 2002-01-01 Hewlett-Packard Company Method of partitioning a touch screen for data input
US6580442B1 (en) 1999-12-01 2003-06-17 Ericsson Inc. Touch-based information processing device and method
JP2001306233A (ja) * 2000-04-26 2001-11-02 Nec Corp キーカスタマイズ方法及び携帯端末装置
US7042442B1 (en) * 2000-06-27 2006-05-09 International Business Machines Corporation Virtual invisible keyboard
US6918091B2 (en) 2000-11-09 2005-07-12 Change Tools, Inc. User definable interface system, method and computer program product
US6724370B2 (en) * 2001-04-12 2004-04-20 International Business Machines Corporation Touchscreen user interface
GB2375278B (en) 2001-05-04 2003-09-10 Motorola Inc Adapting data in a communication system
WO2003021922A1 (en) 2001-09-06 2003-03-13 Telefonaktiebolaget Lm Ericsson Electronic device comprising a touch screen with special input functionality
JP2003099200A (ja) * 2001-09-26 2003-04-04 Clarion Co Ltd 情報機器装置
GB2380583A (en) 2001-10-04 2003-04-09 Ilam Samson Touch pad/screen for electronic equipment
EP1468353A2 (de) 2001-12-21 2004-10-20 Ralf Trachte Flexible computer-eingabe
JP4828826B2 (ja) 2002-07-04 2011-11-30 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 自動的に適応可能な仮想キーボード
JP2005084764A (ja) * 2003-09-05 2005-03-31 Fuji Photo Film Co Ltd 通信端末装置
US20050162402A1 (en) 2004-01-27 2005-07-28 Watanachote Susornpol J. Methods of interacting with a computer using a finger(s) touch sensing input device with visual feedback
JP2005267424A (ja) 2004-03-19 2005-09-29 Fujitsu Ltd データ入力装置、情報処理装置、データ入力方法、データ入力プログラム
US7508324B2 (en) 2004-08-06 2009-03-24 Daniel Suraqui Finger activated reduced keyboard and a method for performing text input
US20060077179A1 (en) 2004-10-08 2006-04-13 Inventec Corporation Keyboard having automatic adjusting key intervals and a method thereof
US7484173B2 (en) * 2005-10-18 2009-01-27 International Business Machines Corporation Alternative key pad layout for enhanced security
JP2007286964A (ja) * 2006-04-18 2007-11-01 Matsushita Electric Ind Co Ltd 入力装置、キーのレイアウトを制御するためのプログラム
JP4803089B2 (ja) 2007-03-28 2011-10-26 Kddi株式会社 タッチパネルによる入力装置およびその方法
CN101382851A (zh) * 2007-09-06 2009-03-11 鸿富锦精密工业(深圳)有限公司 计算机系统

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101328556B1 (ko) * 2012-03-19 2013-11-13 김진수 문자 입력장치
US9965179B2 (en) 2012-11-27 2018-05-08 Thomson Licensing Adaptive virtual keyboard
US10048861B2 (en) 2012-11-27 2018-08-14 Thomson Licensing Adaptive virtual keyboard
KR20140089812A (ko) * 2013-01-07 2014-07-16 엘지전자 주식회사 전자 기기 및 전자 기기의 제어 방법
KR20170029832A (ko) * 2015-09-08 2017-03-16 엘지전자 주식회사 디지털 디바이스 및 상기 디지털 디바이스에서 데이터 처리 방법
KR20200021682A (ko) * 2018-08-21 2020-03-02 김동현 압력센서를 이용한 자판 배열 커스터마이징 키보드장치 및 그 자판 생성 방법
WO2020040355A1 (ko) * 2018-08-23 2020-02-27 유승민 키패드 표시기능을 구비한 이동 단말기
KR20190068497A (ko) * 2019-05-29 2019-06-18 엘지전자 주식회사 가상 키보드 제어방법 및 제어장치
US10996850B2 (en) 2019-05-29 2021-05-04 Lg Electronics Inc. Method and apparatus for controlling virtual keyboard
WO2022097896A1 (ko) * 2020-11-09 2022-05-12 박지훈 터치스크린이 구비된 휴대 단말기의 키보드 설정 방법
KR20220122334A (ko) * 2021-02-26 2022-09-02 한국과학기술원 소프트 키보드를 분석 및 제공하기 위한 장치 및 그에 과한 방법

Also Published As

Publication number Publication date
US8300023B2 (en) 2012-10-30
EP2417509A1 (en) 2012-02-15
CN102378950B (zh) 2014-09-17
US20100259561A1 (en) 2010-10-14
JP5377752B2 (ja) 2013-12-25
CN102378950A (zh) 2012-03-14
WO2010117374A1 (en) 2010-10-14
KR101359090B1 (ko) 2014-02-06
JP2012523611A (ja) 2012-10-04

Similar Documents

Publication Publication Date Title
KR101359090B1 (ko) 학습 능력들을 갖춘 가상 키패드 생성기
US10908815B2 (en) Systems and methods for distinguishing between a gesture tracing out a word and a wiping motion on a touch-sensitive keyboard
US8390583B2 (en) Pressure sensitive user interface for mobile devices
JP6208718B2 (ja) 動的配置オンスクリーンキーボード
EP3120234B1 (en) Touch keyboard calibration
US8749531B2 (en) Method for receiving input on an electronic device and outputting characters based on sound stroke patterns
Alnfiai et al. SingleTapBraille: Developing a text entry method based on braille patterns using a single tap
US9009624B2 (en) Keyboard gestures for character string replacement
KR20140136066A (ko) 스마트 사용자 커스터마이징된 가상 키보드
CN106445369B (zh) 一种输入的方法和装置
Azenkot Eyes-Free input on mobile devices
Arif Predicting and reducing the impact of errors in character-based text entry
JP2012118840A (ja) キー入力装置およびキー入力プログラム
Samanta et al. VectorEntry: Text Entry Mechanism Using Handheld Touch-Enabled Mobile Devices for People with Visual Impairments
KR101117651B1 (ko) 문자입력 시스템 및 문자입력 방법
CA2735871C (en) Method for receiving input on an electronic device and outputting characters based on sound stroke patterns
Laitinen Two one-handed tilting-based writing techniques on a smartphone

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20161229

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20171228

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee