KR20100102191A - 동적 소프트 키보드 - Google Patents

동적 소프트 키보드 Download PDF

Info

Publication number
KR20100102191A
KR20100102191A KR1020107017025A KR20107017025A KR20100102191A KR 20100102191 A KR20100102191 A KR 20100102191A KR 1020107017025 A KR1020107017025 A KR 1020107017025A KR 20107017025 A KR20107017025 A KR 20107017025A KR 20100102191 A KR20100102191 A KR 20100102191A
Authority
KR
South Korea
Prior art keywords
user
soft keyboard
information describing
current input
keys
Prior art date
Application number
KR1020107017025A
Other languages
English (en)
Other versions
KR101541271B1 (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 KR20100102191A publication Critical patent/KR20100102191A/ko
Application granted granted Critical
Publication of KR101541271B1 publication Critical patent/KR101541271B1/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
    • 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/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/041Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
    • G06F3/0412Digitisers structurally integrated in a display
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/0482Interaction with lists of selectable items, e.g. menus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • 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/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/04845Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range for image manipulation, e.g. dragging, rotation, expansion or change of colour
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/0346Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor with detection of the device orientation or free movement in a 3D space, e.g. 3D mice, 6-DOF [six degrees of freedom] pointers using gyroscopes, accelerometers or tilt-sensors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/041Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
    • G06F3/042Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means by opto-electronic means
    • G06F3/0425Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means by opto-electronic means using a single imaging device like a video camera for tracking the absolute position of a single or a plurality of objects with respect to an imaged reference surface, e.g. video camera imaging a display or a projection screen, a table or a wall surface, on which a computer generated image is displayed or projected
    • G06F3/0426Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means by opto-electronic means using a single imaging device like a video camera for tracking the absolute position of a single or a plurality of objects with respect to an imaged reference surface, e.g. video camera imaging a display or a projection screen, a table or a wall surface, on which a computer generated image is displayed or projected tracking fingers with respect to a virtual keyboard projected or printed on the surface

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Input From Keyboards Or The Like (AREA)
  • User Interface Of Digital Computer (AREA)
  • Position Input By Displaying (AREA)

Abstract

동적 소프트 키보드의 하나 이상의 측면들에 따르면, 사용자 입력이 다수의 키들을 갖는 소프트 키보드를 통해 수신된다. 소프트 키보드에 대한 현재의 입력 환경을 기술하는 정보가 획득되고, 다수의 키들 중 어느 하나 이상의 키가 사용자 입력에 의해 선택되기로 되어 있는지에 관한 결정이 행해진다. 이 결정은 현재의 입력 환경에 적어도 부분적으로 기초하여 행해진다.

Description

동적 소프트 키보드{DYNAMIC SOFT KEYBOARD}
많은 서로 다른 유형의 모바일 컴퓨팅 장치들이 현재 이용가능하며, 통상적으로 소형 패키지로 고도의 컴퓨팅 능력을 제공한다. 그렇지만, 모바일 장치들이 당면한 한가지 과제는 데이터 입력이다. 사용자들은 크고 거추장스러울 수 있는 키보드(종종 모바일 컴퓨팅 장치 자체보다도 더 큼)를 통해 데이터를 입력하는 데 익숙해져 있다. 어떤 모바일 컴퓨팅 장치들은, 모바일 장치의 디스플레이 상에 디스플레이된 키보드이며, 또 사용자가 (예를 들어, 스타일러스, 사용자의 손가락 등을 사용하여) 디스플레이되는 키들을 선택할 수 있게 해주는 키보드인 소프트 키보드(soft keyboard)를 사용하여, 이 문제점을 해결한다. 안타깝게도, 물리적으로 개별적인 키들이 없고 또 종종 소프트 키보드의 크기가 작기 때문에, 사용자가 소프트 키보드 상의 키들을 선택하는 것이 여전히 어렵다.
개요
이 개요는 상세한 설명에 더 후술되는 일련의 개념들을 간략화된 형태로 소개하기 위해 제공된 것이다. 이 개요는 청구된 발명 대상의 주요 특징들 또는 필수적인 특징들을 확인하기 위한 것이 아니며, 청구된 발명 대상의 범위를 제한하는 데 사용되기 위한 것도 아니다.
동적 소프트 키보드(dynamic soft keyboard)에 대해 본 명세서에 기술되어 있다. 하나 이상의 측면들에 따르면, 사용자 입력이 소프트 키보드를 통해 수신되고, 소프트 키보드는 다수의 키들을 포함하고 있다. 소프트 키보드에 대한 현재의 입력 환경을 기술하는 정보가 획득되고, 다수의 키들 중 어느 하나 이상의 키들이 사용자 입력에 의해 선택되도록 의도되었는지에 관한 결정이 행해진다. 이 결정은 현재의 입력 환경에 적어도 부분적으로 기초하여 행해진다.
도면 전체에 걸쳐 동일한 번호가 유사한 특징들을 참조하는데 사용된다.
도 1은 하나 이상의 실시예들에 따른 동적 소프트 키보드를 구현하는 예시적인 컴퓨팅 장치를 나타낸 블록도.
도 2는 하나 이상의 실시예들에 따른 소프트 키보드를 디스플레이하는 예시적인 디스플레이 장치를 나타낸 도면.
도 3은 하나 이상의 실시예들에 따른 동적 소프트 키보드를 구현하는 예시적인 시스템을 나타낸 도면.
도 4는 하나 이상의 실시예들에 따른 동적 소프트 키보드에 대한 예시적인 프로세스를 나타낸 플로우차트.
도 5는 하나 이상의 실시예들에 따른 동적 소프트 키보드를 구현하도록 구성될 수 있는 예시적인 컴퓨팅 장치를 나타낸 도면.
동적 소프트 키보드에 대해 본 명세서에 기술되어 있다. 소프트 키보드 사용자 인터페이스(soft keyboard user interface)가 사용자에게 디스플레이된다. 소프트 키보드 사용자 인터페이스에 대한 현재의 입력 환경을 기술하는 다양한 정보도 역시 획득된다. 현재의 입력 환경을 기술하는 이 정보는, 예를 들어, 사용자에 의해 입력되는 현재의 데이터 유형을 기술하는 정보(예를 들어, 이메일 주소, 우편 번호, 도시 등), 사용자에 의해 통상적으로 사용되는 언어를 기술하는 정보, 사용자에 의해 흔히 입력되는 데이터, 물리적 동작 환경(예를 들어, 책상 위, 걷고 있는 중, 움직이는 자동차 내부 등), 데이터 입력 필드 근방의 문자들 및/또는 단어들 등을 포함할 수 있다. 현재의 사용자 입력 환경을 기술하는 이 정보는 사용자 입력이 수신될 때 소프트 키보드의 어느 키(들)이 사용자에 의해 선택되도록 의도되었는지를 검출하는 데 사용된다. 따라서, 동적 소프트 키보드는 사용자 입력 속도 및 사용자 만족에 도움을 줄 수 있다.
도 1은 하나 이상의 실시예들에 따른 동적 소프트 키보드를 구현하는 예시적인 컴퓨팅 장치(100)를 나타낸 블록도이다. 컴퓨팅 장치(100)는 각종 상이한 장치들 중 임의의 장치일 수 있다. 예를 들어, 컴퓨팅 장치(100)는 데스크톱 컴퓨터, 이동국(mobile station), 오락 기기, 디스플레이 장치에 통신 연결된 셋톱 박스, 텔레비전, 무선 전화, 디지털 카메라, 게임 콘솔, 자동차 컴퓨터 등일 수 있다. 따라서, 컴퓨팅 장치(100)는 상당한 메모리 및 프로세서 자원을 갖는 전자원 장치(full resource device)(예를 들어, 퍼스널 컴퓨터, 게임 콘솔)로부터 제한된 메모리 및/또는 처리 자원을 갖는 저자원 장치(low-resource device)(예를 들어, 종래의 셋톱 박스, 핸드헬드 게임 콘솔)에까지 이를 수 있다.
컴퓨팅 장치(100)는 소프트 키보드 제어 모듈(soft keyboard control module)(102) 및 예측 키보드 모듈(predictive keyboard module)(104)을 포함한다. 소프트 키보드 제어 모듈(102)은 사용자에게 디스플레이하기 위한 소프트 키보드(108)를 생성한다. 소프트 키보드(108)는 디스플레이 장치 상에 디스플레이되는 사용자 인터페이스이다. 소프트 키보드(108)는 사용자에 의해 선택될 수 있는 다수의 키들을 포함하며, 이에 대해서는 이하에서 더 상세히 기술한다. 컴퓨팅 장치(100)는 (소프트 키보드(108)가 디스플레이될 수 있는) 디스플레이 컴포넌트를 포함할 수 있거나, 대안으로서, (소프트 키보드(108)가 디스플레이될 수 있는) 다른 장치 또는 컴포넌트로 신호 또는 데이터를 출력할 수 있다.
소프트 키보드(108)는, 각종 상이한 레이아웃들 중 임의의 레이아웃으로 배열될 수 있고 또 각종 상이한 영숫자 문자들, 한자 심볼들, 문자 또는 단어 그룹들(예를 들어, "http://", "www." 등), 그 밖의 심볼들 등 중 임의의 것에 대응할 수 있는 다수의 키들을 포함하고 있다. 키들에 대한 하나의 예시적인 레이아웃이 QWERTY 레이아웃이지만, 다른 레이아웃들이 대안으로 제공될 수 있다. 그에 부가하여, 소프트 키보드(108)가 동적이다. 이 동적 성질은 예측 키보드 모듈(104)의 거동이 시간에 걸쳐 변하는 것 및/또는 소프트 키보드(108)로서 디스플레이되는 사용자 인터페이스가 시간에 걸쳐 변하는 것을 말한다. 이하에서 더 상세히 기술되는 바와 같이, 이와 같이 변하는 것은 키보드의 레이아웃이 변하는 것, 키들에 대응하는 여러 가지 영숫자 문자들 또는 심볼들이 변하는 것, 소프트 키보드(108) 상의 어느 위치들이 어느 키들에 대응하는지가 변하는 것, 히트 타겟 논리(hit target logic)가 변하는 것 등을 포함할 수 있다.
소프트 키보드(108)가 디스플레이 장치 상에 디스플레이되고, 사용자 입력도 역시 이 디스플레이 장치를 통해 입력된다. 하나 이상의 실시예들에서, 소프트 키보드(108)를 디스플레이하는 디스플레이 장치가 터치 스크린 또는 터치 패드이거나 이들을 포함하며, 이들을 통해 사용자가 소프트 키보드(108)의 키들을 디스플레이하는 디스플레이 장치의 영역들을 터치하거나 그 영역들에 물리적으로 아주 근접하게 되는 것에 의해 사용자 입력이 입력될 수 있다. 이러한 터치 또는 물리적으로 아주 근접하는 것은 스타일러스, 펜, 손가락 등을 사용하여 행해질 수 있다. 다른 실시예들에서, 터치 스크린 또는 터치 패드보다는 그 밖의 포인팅 장치들이 사용된다. 마우스, 썸스틱(thumbstick), 트랙패드(trackpad), 트랙볼(trackball), 등과 같은 상대 포인팅 장치(relative pointing device)를 비롯한 각종의 기타 포인팅 장치들 중 임의의 포인팅 장치가, 포인터를 이동시키고 소프트 키보드(108)를 사용하여 입력을 입력하는 데 사용될 수 있다. 펜 태블릿(pen tablet) 등의 절대 분리 포인팅 장치(absolute disconnected pointing device)를 비롯한 그 밖의 유형의 포인팅 장치들도 사용될 수 있다. 이들 다양한 포인팅 장치는 통상적으로 소프트 키보드(108)의 특정 위치를 선택하기 위해 사용자에 의해 작동될 수 있는 하나 이상의 버튼 또는 기타 선택 메카니즘(들)을 포함하고 있다(예를 들어, 포인터가 소프트 키보드(108)의 원하는 영역 상에 위치할 때 사용자가 마우스 버튼을 누를 수 있다). 사용자 입력이 입력되는 소프트 키보드(108)에 대응하는 물리적 키들을 갖는 임의의 별도의 물리적 키보드가 필요없다.
도 2는 하나 이상의 실시예들에 따른 소프트 키보드(202)를 디스플레이하는 예시적인 디스플레이 장치(200)를 도시한다. 소프트 키보드(202)는, 예를 들어, 도 1의 소프트 키보드(108)일 수 있다. 소프트 키보드(202)의 예시적인 레이아웃 및 소프트 키보드(202)의 키들에 대응하는 예시적인 영숫자 문자들이 한 일례에 불과하고 또 각종 상이한 레이아웃들 및/또는 대응하는 문자들 또는 심볼들 중 임의의 것이 상술된 바와 같이 사용될 수 있음을 이해해야 한다. 도 2의 일례에서, 소프트 키보드(202)는 디스플레이 장치(200)의 디스플레이 영역 전부를 차지하지 않고, 장치(200)의 사용자에게 디스플레이될 그 밖의 정보를 위한 공간을 남겨 둔다. 대안으로서, 소프트 키보드(202)가 디스플레이 장치(200)의 디스플레이 영역의 전부 또는 거의 전부를 차지할 수 있다. 소프트 키보드(202)가 또한 선택적으로 기능을 숨기고 보여주는 사용자 인터페이스 메카니즘을 포함할 수 있음으로써, 키보드(202)가 어떤 때에 눈에 보이지 않게 될 수 있다.
앞서 기술한 바와 같이, 소프트 키보드(202) 상에서 입력을 입력하기 위해 각종 상이한 포인팅 장치들 중 임의의 포인팅 장치가 사용될 수 있다. 포인팅 장치의 일례로서, 도 2는 사용자가 키보드(202)의 특정 키를 터치하거나 그 특정 키 상에서 호버링(hovering)하는 데 사용할 수 있는 스타일러스(204)를 도시한다. 사용자가 (스타일러스(204) 또는 다른 포인팅 장치에 의해 제어되는 포인터로) 키보드(202)의 특정 영역을 터치하거나 스타일러스(204)(또는 그 밖의 포인터)를 키보드(202)의 특정 영역 상으로 이동시킬 때, 사용자가 스타일러스 또는 다른 포인팅 장치의 터치 또는 움직임에 의해 선택하려고 의도했던 특정 키가 자동으로 검출된다. 이러한 자동 검출이 수행되는 방식은 현재의 입력 환경에 적어도 부분적으로 기초하여 수행되며, 이에 대해서는 이하에서 더 상세히 기술한다.
하나 이상의 실시예들에서, 디스플레이 장치(200)는, 사용자가 사용자 입력을 입력할 수 있게 하기 위해, 사용자가 디스플레이 장치(200)의 서로 다른 영역들을 터치하거나 그 영역들에 가깝게 스타일러스를 이동시킬 수 있게 해주는 터치 스크린 또는 터치 패드를 포함한다. 이러한 터치 스크린 또는 터치 패드는 전자기 입력 장치, 용량성 입력 장치, 저항성 입력 장치, 표면 탄성파(surface acoustic wave) 입력 장치, 광학 촬상(optical imaging) 입력 장치 등일 수 있다. 이러한 터치 스크린 또는 터치 패드가 당업자에게 공지되어 있다. 마우스, 펜 태블릿 등과 같은 그 밖의 포인팅 장치들이 사용되는 경우, 디스플레이 장치(200)가 터치 스크린 또는 터치 패드를 포함할 필요가 없음을 이해할 것이다.
도 1로 돌아가서, 소프트 키보드 제어 모듈(102)은 또한 사용자 입력(110)도 수신한다. 사용자 입력(110)은 소프트 키보드(108)의 특정 위치(들)의 선택을 말한다. 이 선택은 상술된 바와 같이, 스타일러스, 펜, 손가락, 포인팅 장치에 의해 제어되는 포인터 등을 사용하여 행해질 수 있다. 사용자 입력(110)은 통상적으로, 모듈(102)에 의해, 사용자에 의해 선택된 소프트 키보드(108)의 위치(들)를 식별해주는 하나 이상의 좌표들의 세트(예를 들어, X-Y 좌표들, X-Y-Z 좌표들 등)로서 표현된다. 상술한 바와 같이, 이 선택은 터치 스크린 또는 터치 패드를 터치하거나 그에 아주 근접하게 이동시키는 것, 또는 그 밖의 포인팅 장치들로부터의 그 밖의 입력들을 포함할 수 있다. X 좌표 및 Y 좌표는 각각 입력 표면(input surface)(예를 들어, 터치 스크린, 터치 패드, 펜 태블릿 등의 표면)의 수평 위치 및 수직 위치를 말한다. Z 좌표는 입력 표면으로부터의 거리를 나타내며, 사용자가 입력 표면의 일부분 상에서 호버링하고 있는지 여부를 판정하는 데 사용될 수 있다.
하나 이상의 실시예들에서, 사용자 입력(110)은 데이터의 스트림(예를 들어, X-Y 좌표들의 스트림, X-Y-Z 좌표들의 스트림 등)이다. 이러한 데이터의 스트림은 들어오는 궤적(incoming trajectory), 하나 이상의 펜-다운 궤적(pen-down trajectory) 및 나가는 궤적(outgoing trajectory) 중 하나 이상을 포함한다. 들어오는 궤적은 포인팅 장치가 표면에 닿기 이전의(또는 선택 메카니즘이 사용자에 의해 작동되기 이전의) 좌표들의 스트림을 말한다. 펜-다운 궤적은 포인팅 장치가 닿는(또는 선택 메카니즘이 사용자에 의해 작동될 때 포인터가 위치하는) 표면 상의 위치를 말한다. 종종 하나의 펜-다운 궤적이 있지만, 다수의 펜-다운 궤적들이 수신될 수 있다(예를 들어, 사용자가 펜이 표면에 닿을 때 펜을 바운싱(bounce)하는 경우). 나가는 궤적은 포인팅 장치가 표면에서 떠날 때(또는 선택 메카니즘이 사용자에 의해 작동된 후의) 좌표들의 스트림을 말한다.
예측 키보드 모듈(104)은 소프트 키보드 제어 모듈(102)로부터 사용자 입력(110)을 수신한다. 예측 키보드 모듈(104)은, 사용자 입력(110) 및 소프트 키보드(108)에 대한 현재의 입력 환경을 기술하는 정보 둘 다에 기초하여, 사용자가 사용자 입력(110)으로 소프트 키보드(108) 중 어느 하나 이상의 키들을 선택하려고 의도했는지를 결정한다. 이하에서 더 상세히 기술하는 바와 같이, 이 현재의 입력 환경은 소프트 키보드(108)가, 사용자에 의해 입력되는 데이터의 현재의 유형(예를 들어, 이메일 주소, 우편 번호, 도시 등), 소프트 키보드(108)의 사용자에 의해 통상적으로 사용되는 언어, 소프트 키보드(108)의 사용자에 의해 흔히 입력되는 데이터 등과 같은, 디스플레이되는 환경의 다양한 측면들을 기술한다.
하나 이상의 실시예들에서, 예측 키보드 모듈(104)은 또한, 사용자 입력(110) 및/또는 소프트 키보드(108)에 대한 현재의 입력 환경을 기술하는 정보에 기초하여, 소프트 키보드(108)에 대해 행해지는 변경들을 결정한다. 이 변경들은 키보드의 레이아웃의 변경 및/또는 키들에 대응하는 여러 가지 영숫자 문자들 또는 심볼들의 변경일 수 있으며, 이에 대해서는 이하에서 더 상세히 기술한다.
도 3은 하나 이상의 실시예들에 따른 동적 소프트 키보드를 구현하는 예시적인 시스템을 도시한다. 시스템(300)은, 예를 들어, 도 1의 컴퓨팅 장치(100)일 수 있다. 시스템(300)은 소프트 키보드 제어 모듈(soft keyboard control module)(302)(도 1의 소프트 키보드 제어 모듈(102)일 수 있음), 및 예측 키보드 모듈(predictive keyboard module)(304)(도 1의 예측 키보드 모듈(104)일 수 있음)을 포함한다. 모듈들(302 및 304)은 동일한 장치의 일부로서 구현될 수 있거나, 대안으로서, 상이한 장치들에 의해 구현될 수 있다. 그에 부가하여, 모듈들(302 및 304) 각각은 그 자체가 단일의 장치에 의해 또는 대안으로서 다수의 장치들에 의해 구현될 수 있다.
소프트 키보드 제어 모듈(302)은 소프트 키보드(308)를 생성하고 사용자 입력(310)을 수신한다(도 1의 소프트 키보드(108) 및 사용자 입력(110)과 유사함). 사용자 입력(310)은 소프트 키보드(308)의 사용자에 의해 행해진 선택이며, 이 선택은 소프트 키보드(308)의 특정의 하나 이상의 위치들의 선택이다. 이 선택은, 손가락, 펜, 스타일러스, 기타로 디스플레이 장치를 터치하는 것, 소프트 키보드의 한 위치 상으로 포인터를 이동시키는 것, 디스플레이 장치에 가깝게 펜 또는 스타일러스를 이동시키는 것 등과 같은 여러 가지 방식으로 행해질 수 있다. 이 선택은 상술된 바와 같이, 들어오는 궤적, 하나 이상의 펜-다운 궤적들, 및 나가는 궤적 중 하나 이상을 포함한다. 소프트 키보드 제어 모듈(302)은 각종 상이한 방식들 중 임의의 방식으로 사용자 입력(310)을 표현할 수 있다.
하나 이상의 실시예들에서, 사용자 입력(310)은 일련의 하나 이상의 X-Y 좌표들로서 표현된다. 일련의 X-Y 좌표들은 2차원 공간에서 소프트 키보드(308)의 특정의 위치를 식별한다. 소프트 키보드(308)의 특정의 위치가 (예를 들어, 소프트 키보드(308)의 좌측-하부 코너, 소프트 키보드(308)의 중심 등의) 원점으로 결정되고, X-Y 값들이 원점에 대한 X축 및 Y축을 따른 위치들을 나타낸다.
그에 부가하여, 하나 이상의 실시예들에서, 소프트 키보드(308)가 디스플레이되는 디스플레이 장치가 Z축을 지원한다. 이 Z축은 X-Y 좌표들의 2차원 공간에 수직이다. 이러한 디스플레이 장치들은, 예를 들어, 디스플레이 장치에 가깝게 위치하지만 디스플레이 장치를 터치하지는 않는 스타일러스를 검출할 수 있다. 스타일러스와 디스플레이 장치 사이의 거리가 Z 값으로서 기록된다. 따라서, 이러한 디스플레이 장치들에서 사용될 때, 사용자 입력(310)은 일련의 하나 이상의 X-Y-Z 좌표들로서 표현된다.
그에 부가하여, 하나 이상의 실시예들에서, 사용자 입력에 대해 부가의 시간값 T가 기록된다. 시간값 T는, 사용자의 스타일러스가 키보드(308)의 특정의 X-Y 위치를 터치하고 있었던 시간량, 사용자의 스타일러스가 키보드(308)의 특정의 X-Y 좌표로부터 특정의 거리 Z만큼 떨어져 유지되었던 시간량, 포인터가 키보드(308)의 특정의 X-Y 좌표 상에 유지(호버링)되었던 시간량 등과 같은, 사용자의 선택의 지속기간을 말한다. 따라서, 이러한 실시예들에서, 사용자 입력(310)은 일련의 하나 이상의 X-Y-T 좌표들로서 표현되거나, 대안으로서, X-Y-Z-T 좌표들로서 표현된다. 시간값 T는 예측 키보드 엔진(320)에의 입력이며, 이하에서 더 상세히 기술되는 바와 같이, 사용자가 원하는 텍스트 입력에 대한 더 나은 예측을 하는 데 사용될 수 있다.
게다가, 하나 이상의 실시예들에서, 키보드(308)의 다수의 위치들이 동시에 선택될 수 있다. 이러한 다수의 위치들이, 예를 들어, ("Shift" 키 + 문자 키, "Control" 키 + 문자 키 등과 같은) (예를 들어, 2개의 손가락을 사용하여) 동시에 선택된 2개 이상의 위치들일 수 있다. 이러한 다수의 위치들은 또한 한 위치로부터 다른 위치로의 이동(예를 들어, 한 위치에서 스타일러스로 키보드(308)를 터치하고, 스타일러스를 디스플레이 장치를 가로질러 슬라이딩시킨 다음에, 다른 위치에서 스타일러스를 들어올림) 등일 수 있다. 이러한 상황들에서, 사용자 입력(310)은 일련의 다수의 좌표들(예를 들어, X-Y, X-Y-Z, X-Y-T, X-Y-Z-T 등)로서 표현될 수 있다. 하나 이상의 좌표들은 또한 선택적으로 스타일러스(또는 손가락, 펜 등)가 디스플레이 장치와 접촉해 있을 때 또는 디스플레이 장치에 가깝게(예를 들어, 디스플레이 장치로부터 거리 Z만큼 떨어져) 위치되어 있을 때, 디스플레이 장치를 따라 이동되는 방향을 식별하는 궤적 파라미터(trajectory parameter)도 포함한다. 일부 실시예들에서, 현재의 하드웨어의 경우에, 사용자들은 통상적으로 수직 방향으로 나아갈 때 오류가 더 많으며 수평 방향에서 더 정확하다.
예측 키보드 모듈(304)은 소프트 키보드 제어 모듈(302)로부터 사용자 입력(310)을 수신하고, 사용자 입력(310) 및 소프트 키보드(308)에 대한 현재의 입력 환경을 기술하는 정보 둘 다에 기초하여, 사용자가 사용자 입력(310)으로 소프트 키보드(308) 중 어느 하나 이상의 키들을 선택하려고 의도했는지를 결정한다. 하나 이상의 실시예들에서, 예측 키보드 모듈(304)은 또한 현재의 입력 환경에 적어도 부분적으로 기초하여 소프트 키보드(308)에 행해질 변경들을 결정한다. 이 변경들의 표시는 소프트 키보드(308)의 디스플레이를 그에 따라 변경시키는 소프트 키보드 제어 모듈(302)로 전송된다.
예측 키보드 모듈(304)은 예측 키보드 엔진(320), 동작 모드 검출 모듈(322), 언어 사전 모듈(language dictionaries module)(324), 사용자 지정 어휘 모듈(user specific lexica module)(326), 컨텍스트 매핑 모듈(context mapping module)(328), 언어 검출 모듈(330), 그리고 단어 및 어구 n-그램 통계 모듈(word and phrase n-gram statistics module)(332)을 포함한다. 모듈들(322-332) 각각은 소프트 키보드(308)에 대한 현재의 입력 환경에 관한 다양한 정보를 예측 키보드 엔진(320)에 제공한다. 예측 키보드 엔진(320)은 차례로 현재의 입력 환경에 관한 이 정보를 사용하여 소프트 키보드(308)(예를 들어, 레이아웃 또는 특정의 키들에 대응하는 문자들이나 심볼들)를 변경시키고 또한 사용자가 사용자 입력(310)으로 소프트 키보드(308) 중 어느 하나 이상의 키들을 선택하려고 의도했는지를 결정한다.
예측 키보드 엔진(320)은 사용자가 특정의 사용자 입력으로 어느 키를 선택하려고 의도했는지의 표시(340)를 출력한다. 이 표시(340)는 통상적으로 소프트 키보드(308)의 사용자 인터페이스를 업데이트시키는 데 사용되고 또한 문자(들) 입력으로서 이용하기 위해 다른 컴포넌트(도시 생략)에도 제공될 수 있다. 이 표시(340)는 또한 현재의 입력 환경을 결정하는 데 도움을 주기 위해 모듈들(322-332) 중 하나 이상의 모듈로 반환될 수 있다. 예를 들어, 이하에서 더 상세히 기술되는 바와 같이, 사용자 지정 어휘 모듈(326)은 사용자에 의해 입력되는 단어들을 모니터링할 수 있다.
그에 부가하여, 하나 이상의 실시예들에서, 에측 키보드 엔진(340)은 또한 사용자가 입력하고 있는 특정의 단어 또는 어구의 엔진(340)에 의한 예측인 예측된 입력 문자열(360)을 출력한다. 이 예측을 출력하는 것에 의해 사용자는 단어 또는 어구의 문자들을 더 이상 입력할 필요없이 예측된 단어 또는 어구가 입력되는 "자동 완성(autocomplete)" 옵션을 선택할 수 있다. 예측된 입력 문자열(360)이 소프트 키보드 제어 모듈(302) 또는 대안으로서 시스템의 다른 컴포넌트(도시 생략)에 제공됨으로써 예측된 단어 또는 어구가 사용자에게 디스플레이될 수 있다. 사용자는 이 디스플레이된, 예측된 단어 또는 어구를 "엔터" 키를 선택하는 것, "자동 완성" 키를 선택하는 것, 에측된 단어 또는 어구에서 특정의 문자를 선택하는 것 등의 소프트 키보드(308)를 통해 여러 가지 방식으로 선택할 수 있다. 유의할 점은, 사용자가 또한 선택적으로 예측된 단어 또는 어구의 일부분만을 선택할 수 있다는 것이다.
동작 모드 검출 모듈(322)은 소프트 키보드(308)가 디스플레이되고 있는 장치의 동작 모드를 검출한다. 동작 모드는, 예를 들어, 장치의 물리적 상황(physical situation) 및/또는 지리적 위치를 포함할 수 있다. 물리적 상황은 장치가 어떻게 사용되고 있는지에 대한 물리적 기술(physical description)을 말한다. 이 물리적 기술은, 예를 들어, 장치가 정지해 있는지 움직이고 있는지, 장치가 특정의 방향으로 배향되어 있는지 여부 등을 포함할 수 있다. 물리적 상황은 장치의 사용자에 의해 지정되는 것, 장치 내의 움직임 센서들을 사용하는 것, 장치가 결합되어 있는 주변 장치들 또는 기타 컴포넌트들에 기초하여, 무선 기지국 또는 액세스 포인트와의 통신에 기초하는 등의 여러 가지 방식으로 결정될 수 있다.
지리적 위치는 장치가 위치하는 곳에 대한 지리적 기술(geographic description)을 말한다. 지리적 위치는 장치의 사용자에 의해 지정되는 것, 장치의 GPS(global positioning system)를 사용하는 것, 장치에 할당된 주소(예를 들어, IP(Internet protocol) 주소)에 기초하여 등의여러 가지 방식으로 결정될 수 있다.
동작 모드 검출 모듈(322)로부터의 장치의 동작 모드를 기술하는 정보가 예측 키보드 엔진(320)에 의해 각종 상이한 방식으로 사용될 수 있다. 예를 들어, 예측 키보드 엔진(320)은 장치가 정지해 있는 것보다는 움직이고 있을 때 특정의 키를 정확하게 식별하는 것이 더 어려운 것으로 가정할 수 있고, 따라서 엔진(320)은 장치가 정지해 있을 때보다는 장치가 움직이고 있을 때 소프트 키보드(308)의 보다 큰 영역들을 특정의 키들에 할당할 수 있다. 이러한 보다 큰 영역들은 소프트 키보드(308) 상에 디스플레이되는 보다 큰 키들, 또는 특정의 키들에 대한 보다 큰 히트 타겟들에 대응할 수 있으며, 이에 대해서는 이하에서 더 상세히 기술한다.
언어 사전 모듈(324)은 하나 이상의 언어-지정 사전들을 예측 키보드 엔진(320)이 이용할 수 있게 해준다. 예측 키보드 엔진(320)은, 사용자에 의해 입력될 가능성이 있는 다음의 문자(또는 기타 심볼)가 결정될 수 있도록, 사용자에 의해 입력되고 있는 특정의 단어들 또는 어구들을 식별하려고 자동으로 시도할 수 있다. 예를 들어, 사용자가 "uni"를 입력하는 경우, 예측 키보드 엔진(320)은 사용자가 단어 "united"를 입력하려고 시도하고 있다는 것을 자동으로 식별할 수 있으며, 따라서 사용자에 의해 입력되는 다음의 문자가 문자 "t"일 가능성이 있다. 예측 키보드 엔진(320)은 사용자에 의해 입력되고 있는 특정의 단어들 또는 어구들을 식별하려고 시도하기 위해 여러 가지 모듈들(322-332)로부터의 다양한 정보를 사용할 수 있으며, 그 정보 중 하나가 사용자에 의해 통상적으로 사용되는 특정의 언어이다. 이러한 결정을 하는 데 도움을 주기 위해 언어 사전 모듈(324)에 의해 예측 키보드 엔진(320)에 제공되는 한가지 정보는 사용자에 의해 통상적으로 사용되는 언어(들)에 대한 단어들 및/또는 어구들의 사전이다.
사용자에 의해 통상적으로 사용되는 언어(들)는 여러 가지 방식으로 식별될 수 있다. 예를 들어, 언어(들)가 사용자에 의해 지정될 수 있고, 시스템(300)이 판매되는 위치에 기초한 기본 언어일 수 있으며(예를 들어, 시스템(300)이 프랑스에서 판매된 경우, 기본 언어는 프랑스어임), 사용자에 의한 이전의 입력들에 기초할 수 있고(예를 들어, 이전의 입력들 대부분이 영어로 되어 있는 경우, 언어는 영어임), 다른 모듈(이하에서 더 상세히 기술되는 언어 검출 모듈(330) 등)로부터 획득될 수 있는 등일 수 있다.
사용자 지정 어휘 모듈(326)은 사용자에 의해 흔히 입력되는 단어들(또는 숫자들, 심볼들 등의 다른 데이터)에 관한 정보를 수집하고 유지한다. 이 정보는 각종 상이한 방식으로 수집되고 유지될 수 있다. 하나 이상의 실시예들에서, 사용자에 의해 입력되는 단어들 및 그 단어들이 얼마나 자주 입력되는지를 나타내는 대응하는 빈도수(frequency)가 유지된다. 이 빈도수는, 예를 들어, 단어가 입력될 때마다 증분되는 단어 카운트(word count), 단어가 모듈(326)에 의해 유지되는 다른 단어들에 비해 얼마나 자주 나오는지를 나타내는 비율 등일 수 있다. 그에 부가하여, 사용자 또는 관리자(예를 들어, 사용자가 근무하고 있는 회사의 관리자)는 선택적으로 새로운 커스텀 사전(custom dictionary)을 설치하여, 사용자에 의해 단어들이 입력될 때 그 단어들을 추가할 수 있다(및/또는 이 커스텀 사전이 선택적으로 사용자에 대한 기본 단어들 및 빈도수들을 포함할 수 있음).
게다가, 모듈(326)에 의해 추적되거나 유지되는 단어들이 시간의 경과에 따라 에이징(aging)될 수 있으며, 따라서 동일한 빈도수로 사용되지만 더 오래 전에 사용된 단어들이 보다 최근에 입력된 단어들보다 사용자에 의해 덜 사용되는 것으로 식별된다. 이러한 에이징(aging)은, 특정의 단어가 얼마나 오래 전에 사용되었는지의 기록(예를 들어, 단위: 분, 시간, 일등)을 유지하는 것, 적어도 임계 시간량 동안 사용되지 않은 단어에 대응하는 빈도수를 수정하는 것(예를 들어, 감소시키는 것) 등과 같은, 여러 가지 방식으로 수행될 수 있다.
상술한 바와 같이, 예측 키보드 엔진(320)은 사용자에 의해 입력되는 특정의 단어들 또는 어구들을 자동으로 식별하려고 시도할 수 있다. 사용자 지정 어휘 모듈(326)에 의해 예측 키보드 엔진(320)에 제공되는 한가지 정보는 사용자에 의해 흔히 입력되는 단어들(또는 그 밖의 데이터)에 관한 정보이다.
컨텍스트 매핑 모듈(328)은 사용자가 데이터를 입력할 수 있는 특정의 필드들을 각각의 특정의 필드에 유효한 데이터 유형들로 매핑하는 것을 유지한다. 예를 들어, 필드가 우편 번호 필드인 경우, 유효한 데이터는 문자들이 아니라 숫자들일 수 있다. 다른 일례로서, 필드가 이메일 주소 필드인 경우, 유효한 데이터는 문자들, 숫자들 및 어떤 심볼들("@" 등)일 수 있지만, 다른 심볼들("!" 또는 "#" 등)은 유효한 데이터가 될 수 없다.
컨텍스트 매핑 모듈(328)은 각종 상이한 방식들 중 임의의 방식으로 소프트 키보드(308)와 함께 사용자에게 디스플레이되는 특정의 필드들을 식별할 수 있다. 예를 들어, 스크린 상에 디스플레이되는 데이터가 분석될 수 있고, 임의의 필드들(예를 들어, "우편" 또는 "우편 번호"라는 라벨을 갖는 필드, "이메일" 또는 "이메일 주소"라는 라벨을 갖는 필드 등)이 식별될 수 있다. 다른 일례로서, 다양한 태그들 또는 식별자들이 소프트 키보드(308)와 함께 디스플레이되는 데이터에 포함될 수 있으며, 이들 태그 또는 식별자는 디스플레이되는 특정의 필드들을 컨텍스트 매핑 모듈(328)에 알려준다. 다른 일례로서, 입력 필드들이, 시스템(300) 상의 운영 체제 API(application programming interface)를 통해, 그들의 존재는 물론 그들의 "유형" 또는 법적 입력 제한(legal input restriction)도 명시적으로 선언할 수 있다.
특정의 필드들에 유효한 데이터 유형들이 여러 가지 방식으로 식별될 수 있다. 하나 이상의 실시예들에서, 특정의 필드들에 유효한 데이터 유형들이 컨텍스트 매핑 모듈(328)에 미리 프로그램되어 있거나 다른 방식으로 알려지게 된다. 예를 들어, 소프트 키보드와 함께 디스플레이되는 데이터에 대응하는 다양한 태그, 식별자 또는 기타 메타데이터가 특정의 필드들에 유효한 데이터 유형들을 식별해 줄 수 있거나, 특정의 필드들에 유효한 데이터 유형들을 획득하기 위해 기타 원격 장치들이 액세스될 수 있다. 다른 일례로서, 특정의 필드들에 유효한 데이터 유형들을 획득하기 위해 시스템(300) 상의 운영 체제 API가 호출될 수 있다. 다른 실시예들에서, 특정의 필드들에 유효한 하나 이상의 데이터 유형들이 컨텍스트 매핑 모듈(328)에 의해 자동으로 식별될 수 있다. 예를 들어, 사용자가 특정의 유형의 데이터를 입력하려고 시도하고 입력을 처리하는 프로그램 또는 기타 컴포넌트에 의해 사용자에게 오류가 반환되는 경우, 컨텍스트 매핑 모듈(328)은 그 특정의 데이터 유형이 특정의 필드에 유효하지 않다는 것을 알 수 있다.
컨텍스트 매핑 모듈(328)로부터의 컨텍스트 매핑 정보가 예측 키보드 엔진(320)에 의해 각종 상이한 방식들 중 임의의 방식으로 사용될 수 있다. 하나 이상의 실시예들에서, 예측 키보드 엔진(320)은 특정의 필드에 유효하지 않은 특정의 데이터 유형들이 사용자 입력(310)에 의해 선택되도록 의도되어 있지 않은 것으로 판정한다. 예를 들어, 특정의 필드가 숫자들만을 받는 경우, 예측 키보드 엔진(302)은 사용자가 선택하려고 의도했던 키가 사용자 입력(310)에 가장 가까운 소프트 키보드(308) 상의 숫자 키인 것으로 판정할 수 있다. 다른 일례로서, 특정의 필드가 숫자들만을 받는 경우, 예측 키보드 엔진(320)은 소프트 키보드(308)가 숫자들만을 포함하고 문자들을 포함하지 않아야 한다는 것을 소프트 키보드 제어 모듈(302)에 알려줄 수 있다.
대안으로서, 예측 키보드 엔진(320)은 유효한 특정의 데이터 유형들이 다른 데이터 유형들보다 사용자가 선택하기 더 쉬워야 하는 것으로 판정할 수 있다. 예를 들어, 심볼 "@"는 특정의 필드에 유효하지만 심볼 "!" 및 "#"는 그 필드에 유효한 심볼이 아닌 경우, 예측 키보드 엔진(320)에 의해 구현되는 히트 타겟 논리(hit target logic)는 "@" 심볼이 선택될 가능성을 증가시킬 수 있다. 이 가능성은 "@" 심볼에 대한 히트 타겟을 "!" 및 "#" 심볼들보다 더 크게 만드는 등의 여러 가지 방식으로 증가될 수 있다. 특정의 키에 대한 소프트 키보드(308) 상의 히트 타겟은 그 특정의 키에 대응하는 소프트 키보드(308)의 위치들을 말한다. "!" 및 "#" 심볼들이 많은 키보드들에서 "@" 심볼의 양측에 있기 때문에, 히트 타겟 크기를 수정함으로써 사용자가 "@" 심볼 상에서 또는 "@" 심볼 가까이에서 소프트 키보드(308)를 터치함으로써 "@" 심볼을 선택하는 것이 더 쉽게 된다. 히트 타겟의 사용 및 예측 키보드 엔진(320)에 의해 구현되는 히트 타겟 논리에 대해 이하에서 더 상세히 기술한다.
언어 검출 모듈(330)은 시스템(300)의 사용자에 의해 사용되는 언어를 식별한다. 언어는 사용자가 언어를 지정하는 것 또는 모듈(330)이 언어를 자동으로 식별하는 것 등의 여러 가지 방식으로 식별될 수 있다. 모듈(330)은, 예를 들어, 시스템(300)에 대한 기본 언어(예를 들어, 운영 체제에 의해 기록됨)에 액세스하는 것, 데이터 유형들 및 그들의 대응하는 언어를 식별하기 위해 컨텍스트 매핑 모듈(328)에 액세스하는 것(예를 들어, 한자 심볼이 유효한 데이터 유형인 경우, 언어가 일본어로서 자동으로 식별될 수 있음) 등에 의해 언어를 자동으로 식별할 수 있다.
언어 검출 모듈(330)에 의해 식별되는 언어는 시스템(300)의 사용자에 의해 통상적으로 사용되는 언어일 수 있거나, 대안으로서 사용자에 의해 행해지는 특정의 입력을 수행하기 위해 시스템(300)의 사용자에 의해 사용되는 언어일 수 있다. 예를 들어, 사용자가 부분 단어(partial word)(예를 들어, "uni")를 입력한 경우, 언어 검출 모듈(330)은 사용자에 의해 입력되는 언어를 자동으로 검출할 수 있다. 이것은 독립적인 검출(stand-alone detection)일 수 있거나(예를 들어, 부분 단어에만 기초함), 대안으로서 다른 정보(예를 들어, 시스템(300)의 사용자에 의해 통상적으로 사용되는 언어(들))와 관련할 수 있다.
단어 및 어구 n-그램 통계 모듈(332)은 부분 입력에 기초하여 그 외의 것들보다 더 가능성 있는 단어들 또는 어구들을 식별한다. 이것은, 예를 들어, 부분 단어 입력에 기초한 단어의 식별 및 하나의(또는 다수의) 단어 입력에 기초한 어구의 식별을 포함할 수 있다. 하나 이상의 실시예들에서, 이 식별은 (예를 들어, 언어 사전 모듈(324)에 의해 제공되는 사전으로부터의) 실제의 단어들에 기초한다. 예를 들어, 단어 "united"가 입력되는 경우, 모듈(332)은 단어 "states"가 단어 "run"보다 더 가능성이 있음을 나타낼 수 있다.
다른 실시예들에서, 모듈(332)에 의한 이러한 식별은 문법 규칙들 또는 기타 규칙들에 기초한다. 예를 들어, 2개의 동사가 통상적으로 서로 인접하지 않으며, 따라서 동사가 제1 단어로서 입력되는 경우, 모듈(332)은 어구에서의 그 다음 단어가 동사는 아닐 것 같다는 것을 나타낼 수 있다. 다른 일례로서, 모듈(332)은 어구 "United States of America"가 시스템(300)의 사용자에 의해 종종 입력되는 것으로 판정할 수 있고, 따라서 모듈(332)은 사용자에 의해 "United States"가 입력된 경우, "of America"가 그 밖의 단어 조합들보다 어구에서 그 다음에 더 가능성 있는 것으로 판정할 수 있다.
단어 및 어구 n-그램 통계 모듈(332)로부터의 가능성이 있는 단어들 또는 어구들을 식별해주는 정보가 예측 키보드 엔진(320)에 의해 각종 상이한 방식들 중 임의의 방식으로 사용될 수 있다. 컨텍스트 매핑 모듈(328)에 관한 이상의 설명과 마찬가지로, 가능성이 있는 단어들 또는 어구들을 식별해주는 정보는 특정의 단어들, 문자들 또는 그 밖의 심볼들이 사용자 입력(310)에 의해 선택되도록 의도되지 않은 것으로 판정하는 데 사용될 수 있고, 따라서 이러한 단어들, 문자들 또는 그 밖의 심볼들의 입력을 허용하지 않거나, 대안으로서, 히트 타겟을 수정하여 사용자가 특정의 단어들, 문자들 또는 그 밖의 심볼들을 선택하기 더 쉽게 만들어 줄 수 있다.
예측 키보드 엔진(320)은 다양한 모듈들(322-332)로부터 현재의 입력 환경을 기술하는 정보를 수신하며, 이에 대해서는 이상에서 기술하였다. 예측 키보드 엔진(320)은 현재의 입력 환경을 기술하는 이 정보를 사용하여 소프트 키보드(308)의 레이아웃 및/또는 소프트 키보드(308)의 키들에 대응하는 영숫자 문자들 또는 심볼들을 변경하고 및/또는 사용자가 특정의 사용자 입력으로 어느 키를 선택하려고 의도했는지를 결정한다. 예측 키보드 엔진(320)은, 사용자에 의해 키(들)의 각각의 선택이 행해진 후에, 이러한 변경 및/또는 결정을 반복한다. 사용자에 의한 키(들)의 매번의 선택 이후에 현재의 입력 환경이 변할 수 있고, 사용자에 의한 키(들)의 매번의 선택 이후에 새로운 현재의 입력 환경이 예측 키보드 엔진(320)에 의해 고려될 수 있다.
앞서 기술한 바와 같이, 현재의 입력 환경을 기술하는 정보는 어떤 입력들이 다른 입력들보다 더 적합한지를 나타낼 수 있다. 하나 이상의 실시예들에서, 이 정보는 소프트 키보드(308)의 레이아웃을 변경하는 데 사용된다. 예를 들어, 이 정보는 소프트 키보드(308)의 레이아웃을 QWERTY 레이아웃으로부터 숫자 패드 레이아웃으로 변경시키는 데, QWERTY 레이아웃 중의 어떤 키들만을 포함시키는 데 등에 사용될 수 있다.
다른 실시예들에서, 현재의 입력 환경을 기술하는 정보는 어느 영숫자 문자들 또는 그 밖의 심볼들이 소프트 키보드(308)의 키들에 대응하는지를 변경시키는 데 사용된다. 이러한 변경에 응답하여, 소프트 키보드(308)는 이전에 디스플레이된 문자들 또는 심볼들보다는 그 키들에 대한 새로운 대응하는 문자들 또는 심볼들을 디스플레이하고, 그 키들 중 하나의 키의 선택에 의해 디스플레이된 대응하는 문자 또는 심볼의 사용자 입력이 있게 된다. 예를 들어, 소프트 키보드(308)의 일렬의 키들이 숫자들에 대응하는 것으로부터 심볼들에 대응하는 것으로 변경될 수 있다. 다른 일례로서, 어떤 키들이 어떤 언어-지정 문자들 및/또는 심볼들에 대응하도록 변경될 수 있다.
다른 실시예들에서, 현재의 입력 환경을 기술하는 정보가 소프트 키보드(308)의 키들의 앞면(face)을 변경하는 데 사용된다. 이러한 변경에 응답하여, 소프트 키보드(308)는 키들에 대한 다른 앞면들을 디스플레이한다. 예를 들어, 입력되고 있는 단어들의 적합한 및/또는 앞으로 나올 가능성이 있는 문자들인 키들이 하이라이트될 수 있다. 다른 일례로서, 시각적 타겟팅(visual targeting)에 도움을 주고 사용자의 수고를 줄이기 위해 (이미 입력된 문자들에 기초하여) 단어에 나오지 않을 문자들에 대한 키들이 흐릿하게 될 수 있다.
다른 실시예들에서, 현재의 입력 환경을 기술하는 정보는 사용자가 특정의 사용자 입력으로 어느 키를 선택하려고 의도했는지를 결정하는 데 사용된다. 히트 타겟 논리를 포함하는 예측 키보드 엔진(320)은 사용자 입력(310)과 함께 현재의 입력 환경을 사용하여, 사용자가 소프트 키보드(308) 상의 어느 특정의 키를 선택하려고 의도했는지를 식별한다.
예측 키보드 엔진이 현재의 입력 환경 및 사용자 입력(310)을 사용할 수 있는 한가지 방식은 특정의 키들에 대한 히트 타겟들의 크기를 수정하는 것이다. 이상에서 기술한 바와 같이, 소프트 키보드(308) 상의 각각의 키는 대응하는 히트 타겟을 가질 수 있으며, 예측 키보드 엔진(320)은 그 히트 타겟을 각각의 키에 할당할 수 있다. 특정의 키에 대한 이 히트 타겟은 그 특정의 키에 대응하는 소프트 키보드(308) 상의 위치들을 말한다. 특정의 키에 대한 히트 타겟이 수정될 수 있다, 즉 소프트 키보드(308) 상의 더 많은 위치들이 그 특정 키에 대응하도록 예측 키보드 엔진(320)에 의해 히트 타겟의 크기가 증가될 수 있거나, 소프트 키보드(308) 상의 더 적은 위치들이 그 특정의 키에 대응하도록 에측 키보드 엔진(320)에 의해 히트 타겟의 크기가 감소될 수 있다. 따라서, 키에 대한 히트 타겟을 증가시키는 것에 의해 통상적으로 사용자가 그 키를 선택하는 것이 더 쉬워지는 반면, 키에 대한 히트 타겟을 감소시키는 것에 의해 통상적으로 사용자가 그 키를 선택하는 것이 더 어려워진다.
유의할 점은, 이로 인해 하나의 키에 대한 히트 타겟이 인접 키보다 더 크게 되고 실제로 인접 키를 디스플레이하는 부분 상으로 확장되는 상황이 일어날 수 있다는 것이다. 예를 들어, 예측 키보드 엔진(320)이 문자 "d"가 사용자에 의해 입력되는 그 다음 문자일 것 같다고 판정하는 것으로 가정하자. 문자 "d"에 대한 히트 타겟은 증가될 수 있는 반면, 인접 문자 "f"에 대한 히트 타겟은 감소될 수 있다. 문자 "d"에 대한 히트 타겟은 문자 "f"에 대한 키가 소프트 키보드(308) 상에서 실제로 디스플레이되는 위치들을 포함할 수 있다. 따라서, 이 일례에서, 사용자가 문자 "f"에 대한 키의 가장자리에 있는 위치를 누르는 경우, 예측 키보드 엔진(320)은 문자 "d"가 사용자가 선택하려고 의도했던 키라고 판정한다. 이러한 상황은 사용자가 걸으면서 입력을 하는 경우 등(이 경우에 사용자가 원하는 키를 정확하게 누르는 것이 더 어려움)의 각종 상이한 이유들로 일어날 수 있다.
그에 부가하여, 예측 키보드 엔진(320)은 소프트 키보드(308) 상의 어떤 키들을 유효하지 않게 만들 수 있다. 따라서, 예측 키보드 엔진(320)은, 특정의 사용자 입력이 무엇인지에 상관없이, 유효하지 않은 키가 그 특정의 사용자 입력에 의해 선택되도록 의도되었다는 것을 나타내지 않는다. 예를 들어, "!" 심볼이 유효하지 않은 것으로 판정되는 경우, 예측 키보드 엔진(320)은, 특정의 사용자 입력이 무엇인지에 상관없이, "!" 심볼이 그 특정의 사용자 입력에 의해 선택되도록 의도되었다는 것을 나타내지 않는다.
예측 키보드 엔진(320)은, 각종 상이한 방식으로, 소프트 키보드(308)의 레이아웃 및/또는 소프트 키보드(308)의 키들에 대응하는 영숫자 문자들 또는 심볼들을 어떻게 변경시킬지를 결정할 수 있고 및/또는 사용자가 특정의 사용자 입력으로 어느 키를 선택하려고 의도했는지를 결정할 수 있다. 하나 이상의 실시예들에서, 예측 키보드 엔진(320)은 다양한 입력들(사용자 입력(310) 및 현재의 입력 환경을 기술하는 다양한 서로 다른 정보의 조합들)로 훈련되는 학습 시스템(learning system)이다. 이러한 훈련은, 엔진(320)이 다양한 입력들에 응답하여 어느 답변들이 제공되어야 하는지를 학습할 수 있도록, 엔진(320)에 다양한 입력들 및 올바른 답변을 제공하는 것을 포함한다. 초기의 훈련은 통상적으로 예측 키보드 엔진(320)의 설계자들에 의해 수행되며, 부가적인 훈련은 시스템(300)의 운영 동안에 수행될 수 있다. 이 부가적인 훈련은, 예를 들어, 특정의 출력(340)이 올바른 출력인지 여부를 나타내는, 엔진(320)에 주어지는 피드백에 기초하여 수행될 수 있다. 인공 지능 시스템 및 다른 통계-기반 시스템을 비롯한 각종 상이한 학습 시스템들 중 임의의 학습 시스템이 사용될 수 있다. 예를 들어, 이러한 학습 시스템은 인공 신경망(artificial neural network), 베이지안 추론 시스템(Bayesian inference system), k-최근접 이웃 알고리즘(k-nearest neighbor algorithm) 등을 포함할 수 있다.
대안으로서, 예측 키보드 시스템(320)은 다른 시스템들로서 구현될 수 있다. 예를 들어, 엔진(320)은 사용자 입력(310) 및 현재의 입력 환경을 기술하는 다양한 서로 다른 정보를 평가하기 위해 각종의 통계 분석 시스템들 중 임의의 통계 분석 시스템을 사용하여 구현될 수 있다. 다른 일례로서, 엔진(320)은 사용자 입력(310) 및 현재의 입력 환경을 기술하는 다양한 서로 다른 정보에 적용되는 다양한 다른 규칙들, 기준들, 또는 가중치들을 사용하여 구현될 수 있다.
따라서, 소프트 키보드(308)가 동적이라는 것을 알 수 있다. 하나 이상의 실시예들에서, 소프트 키보드(308)는 레이아웃들 및/또는 키들에 대응하는 영숫자 문자들이나 심볼들을 변경하며, 그 결과 동적 소프트 키보드가 얻어진다. 그에 부가하여, 하나 이상의 실시예들에서, 사용자가 특정의 사용자 입력으로 어느 키를 선택하려고 의도했는지가 변할 수 있으며, 그 결과 동적 소프트 키보드가 얻어진다. 사용자가 특정의 사용자 입력으로 어느 키를 선택하려고 의도했는지에 관한 이러한 변경이 사용자에게 이러한 변경의 표시를 디스플레이하거나 또는 디스플레이하지 않고 행해질 수 있다.
도 4는 하나 이상의 실시예들에 따른 동적 소프트 키보드에 대한 예시적인 프로세스(400)를 나타낸 플로우차트이다. 프로세스(400)는 도 3의 시스템(300) 등의 시스템에 의해 수행되고, 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 조합으로 구현될 수 있다. 프로세스(400)는 하나 이상의 장치들에 의해 수행되는 동작들을 나타내는 일련의 단계들로 나타내어져 있으며, 각자의 단계들에 의한 동작들을 수행하는 도시된 순서로 꼭 제한될 필요는 없다. 프로세스(400)는 동적 소프트 키보드에 대한 예시적인 프로세스이며, 다른 도면들을 참조한 동적 소프트 키보드에 대한 부가적인 설명이 본 명세서에 포함되어 있다.
먼저, 사용자 입력이 소프트 키보드를 통해 수신된다(단계 402). 이 사용자 입력은 소프트 키보드의 특정의 하나 이상의 위치들이며, 이에 대해서는 이상에서 기술하였다. 그에 부가하여, 현재의 입력 환경을 기술하는 정보가 획득된다(단계 404). 이 정보는 도 3의 모듈들(322-332)을 참조하여 이상에서 기술한 정보 등의 각종 상이한 유형의 정보 중 임의의 정보일 수 있다.
사용자 입력에 의해 선택되도록 의도되었던 특정의 하나 이상의 키들이 단계(404)에서 획득된 정보에 적어도 부분적으로 기초하여 결정된다(단계 406). 사용자에 의해 선택된 것으로 결정된 하나 이상의 키들의 표시가 출력된다(단계 408). 예측된 입력 문자열의 표시가 또한 선택적으로 출력된다(단계 410). 그에 부가하여, 하나 이상의 실시예들에서, 소프트 키보드가 단계(404)에서 획득된 정보에 적어도 부분적으로 기초하여 수정된다(단계 412). 이러한 수정은, 예를 들어, 소프트 키보드의 레이아웃을 변경하는 것 및/또는 소프트 키보드의 키들에 대응하는 영숫자 문자들 또는 심볼들을 변경하는 것일 수 있으며, 이에 대해서는 이상에서 기술하였다.
도 5는 하나 이상의 실시예들에 따른 동적 소프트 키보드(dynamic soft keyboard)를 구현하도록 구성될 수 있는 예시적인 컴퓨팅 장치(500)를 나타낸 것이다. 컴퓨팅 장치(500)는, 예를 들어, 도 1의 컴퓨팅 장치(100)일 수 있다.
컴퓨팅 장치(500)는 하나 이상의 프로세서들 또는 처리 장치들(502), 하나 이상의 메모리 및/또는 저장 컴포넌트들(506)을 포함할 수 있는 하나 이상의 컴퓨터-판독가능 매체(504), 도 1의 사용자 입력(110)(또는 도 3의 사용자 입력(310))이 수신되는 하나 이상의 입/출력(I/O) 장치들(508), 및 다양한 컴포넌트들 및 장치들이 서로 통신할 수 있게 해주는 버스(510)를 포함한다. 컴퓨터-판독가능 매체(504) 및/또는 I/O 장치(들)(508)는 컴퓨팅 장치(500)의 일부로서 포함될 수 있거나, 대안으로서 컴퓨팅 장치(500)에 결합되어 있을 수 있다. 버스(510)는 메모리 버스 또는 메모리 제어기, 주변 장치 버스, AGP(accelerated graphics port), 및 각종의 버스 아키텍처들 중 임의의 것을 사용하는 프로세서 또는 로컬 버스를 비롯한 몇가지 유형의 버스 구조들 중 하나 이상을 나타낸다. 버스(510)는 유선 버스 및/또는 무선 버스를 포함할 수 있다.
메모리/저장 컴포넌트(506)는 하나 이상의 컴퓨터 저장 매체를 나타낸다. 컴포넌트(506)는 RAM(random access memory) 등의 휘발성 매체 및/또는 ROM(read only memory), 플래쉬 메모리, 광 디스크, 자기 디스크 등의 비휘발성 매체를 포함할 수 있다. 컴포넌트(506)는 고정식 매체(fixed media)(예를 들어, RAM, ROM, 고정식 하드 드라이브 등)는 물론 이동식 매체(예를 들어, 플래쉬 메모리 드라이브, 이동식 하드 드라이브, 광 디스크 등)도 포함할 수 있다.
본 명세서에 기술된 기법들이 소프트웨어로 구현될 수 있고, 명령어들이 처리 장치(들)(502)에 의해 실행된다. 서로 다른 명령어들이 컴퓨팅 장치(500)의 서로 다른 컴포넌트들에(처리 장치(502)에, 처리 장치(502)의 다양한 캐쉬 메모리들에, 장치(500)의 다른 캐쉬 메모리들(도시 생략)에, 그 밖의 컴퓨터-판독가능 매체 상 등에) 저장될 수 있다는 것을 잘 알 것이다. 그에 부가하여, 컴퓨팅 장치(500)에서 명령어들이 저장되는 위치가 시간에 따라 변할 수 있다는 것을 잘 알 것이다.
하나 이상의 입/출력 장치들(508)에 의해 사용자는 컴퓨팅 장치(500)에 명령 및 정보를 입력할 수 있고 또한 정보가 사용자 및/또는 그 밖의 컴포넌트들 또는 장치들에 제시될 수 있다. 사용자에게 제시되는 이 정보는 도 1의 소프트 키보드(108) 또는 도 3의 소프트 키보드(308)를 포함할 수 있다. 입력 장치들의 일례로는 키보드, 커서 또는 포인터 제어 장치(예를 들어, 마우스, 트랙패드, 썸스틱, 펜 태블릿 등), 마이크, 스캐너, 터치 스크린, 터치 패드 등이 있다. 출력 장치들의 일례로는 디스플레이 장치(예를 들어, 모니터 또는 프로젝터), 스피커, 프린터, 네트워크 카드 등이 있다.
다양한 기법들이 일반적으로 소프트웨어 또는 프로그램 모듈들과 관련하여 본 명세서에 기술되어 있을 수 있다. 일반적으로, 소프트웨어는 특정의 태스크들을 수행하거나 특정의 추상 데이터 유형들을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 이 모듈들 및 기법들의 구현은 어떤 형태의 컴퓨터-판독가능 매체 상에 저장되거나 그 매체를 통해 전송될 수 있다. 컴퓨터-판독가능 매체는 컴퓨팅 장치에 의해 액세스될 수 있는 이용가능한 매체 또는 매체들이라면 어느 것이라도 될 수 있다. 제한이 아닌 예로서, 컴퓨터-판독가능 매체는 "컴퓨터 저장 매체" 및 "통신 매체"를 포함할 수 있다.
"컴퓨터 저장 매체"는 컴퓨터-판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 그 밖의 데이터 등의 정보를 저장하는 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 이동식 및 비이동식 매체를 포함한다. 컴퓨터 저장 매체로는 RAM, ROM, EEPROM, 플래쉬 메모리 또는 그 밖의 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 그 밖의 광 디스크 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 그 밖의 자기 저장 장치, 또는 원하는 정보를 저장하는 데 사용될 수 있고 또 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체가 있지만, 이들로 제한되지 않는다.
"통신 매체"는 통상적으로 컴퓨터-판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 그 밖의 데이터를 반송파 또는 그 밖의 전송 메카니즘 등의 피변조 데이터 신호에 구현한다. 통신 매체는 또한 모든 정보 전달 매체를 포함한다. "피변조 데이터 신호"라는 용어는 신호의 특성들 중 하나 이상이 정보를 그 신호에 인코딩하는 방식으로 설정 또는 변경된 신호를 의미한다. 제한이 아닌 예로서, 통신 매체는 유선 네트워크 또는 직접 배선 연결(direct-wired connection) 등의 유선 매체와, 음향, RF, 적외선 및 그 밖의 무선 매체 등의 무선 매체를 포함한다. 상기한 것들의 임의의 것의 조합도 역시 컴퓨터-판독가능 매체의 범위 내에 포함된다.
일반적으로, 본 명세서에 기술되는 기능들 또는 기법들 중 어느 것이라도 소프트웨어, 펌웨어, 하드웨어(예를 들어, 고정 논리 회로), 수동 처리, 또는 이 구현들의 조합을 사용하여 구현될 수 있다. "모듈", "기능", 및 "논리"라는 용어는, 본 명세서에서 사용되는 바와 같이, 일반적으로 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 조합을 나타낸다. 소프트웨어 구현의 경우에, 모듈, 기능, 논리는 프로세서(예를 들어, CPU 또는 CPU들) 상에서 실행될 때 지정된 태스크들을 수행하는 프로그램 코드를 나타낸다. 프로그램 코드는 하나 이상의 컴퓨터-판독가능 메모리 장치들에 저장될 수 있으며, 이들에 대한 추가적인 설명은 도 5와 관련하여 찾아볼 수 있다. 본 명세서에 기술된 동적 소프트 키보드 기법들의 특징들이 플랫폼-독립적(platform-independent)이며, 이는 그 기법들이 각종의 프로세서들을 갖는 각종의 상용 컴퓨팅 플랫폼들에서 구현될 수 있다는 것을 의미한다.
발명 대상이 구조적 특징들 및/또는 방법적 단계들과 관련하여 기술되어 있지만, 첨부된 청구항들에 정의된 발명 대상이 이상에서 기술한 특정의 특징들 또는 단계들로 반드시 제한되는 것은 아니라는 것을 잘 알 것이다. 오히려, 이상에서 기술한 특정의 특징들 및 단계들은 청구항들을 구현하는 예시적인 형태로서 개시되어 있다.

Claims (20)

  1. 장치의 하나 이상의 프로세서들에 의해 실행될 때, 상기 하나 이상의 프로세서들로 하여금 단계들을 수행하게 하는 다수의 명령어들이 저장되어 있는 하나 이상의 컴퓨터 저장 매체로서,
    상기 단계들은,
    다수의 키들을 포함하는 소프트 키보드를 통해 사용자 입력을 수신하는 단계(402);
    상기 소프트 키보드에 대한 현재의 입력 환경을 기술하는 정보를 획득하는 단계(404); 및
    상기 현재의 입력 환경에 적어도 부분적으로 기초하여, 상기 다수의 키들 중 어느 하나 이상의 키들이 상기 사용자 입력에 의해 선택되도록 의도되었는지를 결정하는 단계(406)를 포함하는 하나 이상의 컴퓨터 저장 매체.
  2. 제1항에 있어서,
    상기 사용자 입력이 사용자에 의해 선택된 상기 소프트 키보드의 하나 이상의 위치들을 나타내는 하나 이상의 좌표들의 세트에 의해 표현되는 것인 하나 이상의 컴퓨터 저장 매체.
  3. 제1항에 있어서,
    상기 현재의 입력 환경을 기술하는 정보는 상기 장치의 동작 모드를 기술하는 정보를 포함하는 하나 이상의 컴퓨터 저장 매체.
  4. 제3항에 있어서,
    상기 장치의 동작 모드를 기술하는 정보는 상기 장치의 지리적 위치(geographical location)를 포함하는 하나 이상의 컴퓨터 저장 매체.
  5. 제1항에 있어서,
    상기 현재의 입력 환경을 기술하는 정보는 언어-지정 사전(language-specific dictionary)을 포함하는 하나 이상의 컴퓨터 저장 매체.
  6. 제1항에 있어서,
    상기 현재의 입력 환경을 기술하는 정보는 상기 장치의 사용자에 의해 흔히 입력되는 단어들에 관한 정보를 포함하는 하나 이상의 컴퓨터 저장 매체.
  7. 제1항에 있어서,
    상기 현재의 입력 환경을 기술하는 정보는, 사용자가 데이터를 입력할 수 있는 하나 이상의 필드들 각각에 대해, 상기 필드를 상기 필드에 유효한 데이터 유형들로 매핑하는 정보를 포함하는 하나 이상의 컴퓨터 저장 매체.
  8. 제1항에 있어서,
    상기 현재의 입력 환경을 기술하는 정보는 상기 장치의 사용자에 의해 사용되는 언어를 기술하는 정보를 포함하는 하나 이상의 컴퓨터 저장 매체.
  9. 제1항에 있어서,
    상기 현재의 입력 환경을 기술하는 정보는 부분 입력들(partial inputs)에 기초하여 그 외의 단어들 또는 어구들보다 더 가능성 있는 특정의 단어들 또는 어구들을 기술하는 정보를 포함하는 하나 이상의 컴퓨터 저장 매체.
  10. 제1항에 있어서,
    상기 현재의 입력 환경을 기술하는 정보는,
    상기 장치의 동작 모드를 기술하는 정보;
    언어-지정 사전;
    상기 장치의 사용자에 의해 흔히 입력되는 단어들에 관한 정보;
    상기 사용자가 데이터를 입력할 수 있는 하나 이상의 필드들 각각에 대해, 상기 필드를 상기 필드에 유효한 데이터 유형들로 매핑하는 정보;
    상기 사용자에 의해 사용되는 언어를 기술하는 정보; 및
    부분 입력들에 기초하여 그 외의 단어들 또는 어구들보다 더 가능성 있는 특정의 단어들 또는 어구들을 기술하는 정보를 포함하는 하나 이상의 컴퓨터 저장 매체.
  11. 제1항에 있어서,
    상기 명령어들은 또한 상기 하나 이상의 프로세서들로 하여금, 상기 현재의 입력 환경을 기술하는 정보에 적어도 부분적으로 기초하여, 상기 소프트 키보드를 수정하게 하는 것인 하나 이상의 컴퓨터 저장 매체.
  12. 제1항에 있어서,
    상기 명령어들은 또한 상기 하나 이상의 프로세서들로 하여금 상기 다수의 키들 중 하나 이상의 키들에 대한 히트 타겟(hit target)을 수정하게 하는 하나 이상의 컴퓨터 저장 매체.
  13. 시스템으로서,
    예측 키보드 엔진(320), 및
    상기 예측 키보드 엔진에 결합되어, 소프트 키보드에 대한 현재의 입력 환경을 기술하는 정보를 제공하는 하나 이상의 모듈들(322, 324, 326, 328, 330, 332)
    을 포함하고,
    상기 예측 키보드 엔진(320)은, 상기 현재의 입력 환경을 기술하는 정보에 적어도 부분적으로 기초하여,
    상기 다수의 키들 중 하나 이상의 키들의 히트 타겟을 수정하고,
    상기 수정된 히트 타겟을 사용하여, 상기 시스템의 사용자에 의해 상기 소프트 키보드의 다수의 키들 중 어느 하나 이상의 키들이 선택되었는지를 결정하도록 구성되어 있는 시스템.
  14. 제13항에 있어서,
    상기 예측 키보드 엔진은 인공 지능 시스템(artificial intelligence system)을 포함하는 시스템.
  15. 제13항에 있어서,
    상기 예측 키보드 엔진은, 상기 현재의 입력 환경을 기술하는 정보에 적어도 부분적으로 기초하여, 상기 소프트 키보드의 레이아웃을 어떻게 변경할지를 결정하도록 더 구성되어 있는 시스템.
  16. 제13항에 있어서,
    상기 하나 이상의 모듈들은,
    상기 시스템의 동작 모드를 기술하는 정보를 제공하는 동작 모드 검출 모듈(operation mode detection module); 및
    상기 시스템의 사용자에 의해 흔히 입력되는 단어들에 관한 정보를 제공하는 사용자 지정 어휘 모듈(user specific lexica module)을 포함하는 시스템.
  17. 장치에서 구현되는 방법으로서,
    상기 장치의 사용자에 의해 선택된 소프트 키보드의 하나 이상의 위치들을 나타내는 하나 이상의 좌표들의 세트를 수신하는 단계(402) - 상기 소프트 키보드는 다수의 키들을 갖고 상기 다수의 키들 각각은 대응하는 히트 타겟을 가짐 -; 및
    상기 소프트 키보드에 대한 현재의 입력 환경을 사용하는 히트 타겟 논리(hit target logic) 및 상기 하나 이상의 좌표들의 세트 둘 다에 적어도 부분적으로 기초하여, 상기 사용자에 의해 상기 다수의 키들 중 어느 하나 이상의 키들이 선택되었는지를 결정하는 단계(406)
    를 포함하는 방법.
  18. 제17항에 있어서,
    상기 현재의 입력 환경에 적어도 부분적으로 기초하여, 어느 문자들, 숫자들, 또는 심볼들이 상기 다수의 키들 중 어느 키들에 대응하는지를 변경하는 단계를 더 포함하는 방법.
  19. 제17항에 있어서,
    상기 현재의 입력 환경이, 상기 장치의 사용자에 의해 흔히 입력되는 단어들에 관한 정보, 및 상기 사용자가 데이터를 입력할 수 있는 하나 이상의 필드들 각각에 대해, 상기 필드를 상기 필드에 유효한 데이터 유형들로 매핑하는 정보를 포함하는 방법.
  20. 제17항에 있어서,
    상기 현재의 입력 환경이, 상기 사용자에 의해 사용되는 언어를 기술하는 정보, 및 부분 입력들에 기초하여 그 외의 단어들 또는 어구들보다 더 가능성 있는 특정의 단어들 또는 어구들을 기술하는 정보를 포함하는 방법.
KR1020107017025A 2008-02-04 2009-01-09 동적 소프트 키보드 KR101541271B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/025,721 US9552155B2 (en) 2008-02-04 2008-02-04 Dynamic soft keyboard
US12/025,721 2008-02-04

Publications (2)

Publication Number Publication Date
KR20100102191A true KR20100102191A (ko) 2010-09-20
KR101541271B1 KR101541271B1 (ko) 2015-08-03

Family

ID=40931193

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107017025A KR101541271B1 (ko) 2008-02-04 2009-01-09 동적 소프트 키보드

Country Status (8)

Country Link
US (5) US9552155B2 (ko)
EP (1) EP2240842B1 (ko)
JP (1) JP5611838B2 (ko)
KR (1) KR101541271B1 (ko)
CN (1) CN101932990B (ko)
BR (1) BRPI0906882B1 (ko)
RU (1) RU2504820C2 (ko)
WO (1) WO2009099704A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020005044A1 (ko) * 2018-06-29 2020-01-02 삼성전자 주식회사 전자 장치에서 물리적 키보드의 레이아웃 설정 방법 및 장치

Families Citing this family (67)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7614008B2 (en) 2004-07-30 2009-11-03 Apple Inc. Operation of a computer with touch screen interface
CA2527836C (en) 2003-05-30 2011-02-15 Privaris, Inc. An in-circuit security system and methods for controlling access to and use of sensitive data
CN104200145B (zh) 2007-09-24 2020-10-27 苹果公司 电子设备中的嵌入式验证系统
TWI360061B (en) * 2007-12-31 2012-03-11 Htc Corp Electronic device and method for operating applica
US9552155B2 (en) 2008-02-04 2017-01-24 Microsoft Technology Liecsnsing, LLC Dynamic soft keyboard
US8570279B2 (en) 2008-06-27 2013-10-29 Apple Inc. Touch screen device, method, and graphical user interface for inserting a character from an alternate keyboard
US8452337B2 (en) * 2008-08-19 2013-05-28 Lg Electronics Inc. Navigation method and apparatus for mobile terminal
WO2010068445A2 (en) * 2008-11-25 2010-06-17 Spetalnick Jeffrey R Methods and systems for improved data input, compression, recognition, correction, and translation through frequency-based language analysis
US20100293457A1 (en) * 2009-05-15 2010-11-18 Gemstar Development Corporation Systems and methods for alphanumeric navigation and input
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
US8816965B2 (en) * 2009-09-30 2014-08-26 At&T Mobility Ii Llc Predictive force sensitive keypad
US9128610B2 (en) * 2009-09-30 2015-09-08 At&T Mobility Ii Llc Virtual predictive keypad
US20110074692A1 (en) * 2009-09-30 2011-03-31 At&T Mobility Ii Llc Devices and Methods for Conforming a Virtual Keyboard
US9122393B2 (en) * 2009-09-30 2015-09-01 At&T Mobility Ii Llc Predictive sensitized keypad
US9465532B2 (en) * 2009-12-18 2016-10-11 Synaptics Incorporated Method and apparatus for operating in pointing and enhanced gesturing modes
US8806362B2 (en) * 2010-01-06 2014-08-12 Apple Inc. Device, method, and graphical user interface for accessing alternate keys
CN104536586A (zh) * 2010-01-27 2015-04-22 日本电气株式会社 便携式信息终端及其按键布置变更方法
US8782556B2 (en) 2010-02-12 2014-07-15 Microsoft Corporation User-centric soft keyboard predictive technologies
US8471814B2 (en) 2010-02-26 2013-06-25 Microsoft Corporation User interface control using a keyboard
US20120005592A1 (en) * 2010-06-30 2012-01-05 Joshi Shrinivas B Method and Apparatus for Providing Metadata-Based User Interfaces
WO2012037200A2 (en) 2010-09-15 2012-03-22 Spetalnick Jeffrey R Methods of and systems for reducing keyboard data entry errors
US8773676B2 (en) 2011-03-07 2014-07-08 Sharp Kabushiki Kaisha Multifunction peripheral, multifunction peripheral control system, and multifunction peripheral control method for preparing information display screen including changing default conditions
JP5399438B2 (ja) * 2011-04-08 2014-01-29 シャープ株式会社 複合機、複合機制御システム、複合機の制御方法、プログラムおよびその記録媒体
JP5516473B2 (ja) * 2011-03-24 2014-06-11 コニカミノルタ株式会社 画像形成装置、表示方法および表示プログラム
US8914275B2 (en) 2011-04-06 2014-12-16 Microsoft Corporation Text prediction
US20150040055A1 (en) * 2011-06-07 2015-02-05 Bowen Zhao Dynamic soft keyboard for touch screen device
JP5834529B2 (ja) 2011-06-23 2015-12-24 ブラザー工業株式会社 入力装置および入力制御プログラム
JP5544335B2 (ja) * 2011-07-26 2014-07-09 京セラドキュメントソリューションズ株式会社 文字入力装置およびそれを備えた画像形成装置
US10140011B2 (en) 2011-08-12 2018-11-27 Microsoft Technology Licensing, Llc Touch intelligent targeting
US9176944B1 (en) 2011-08-23 2015-11-03 Google Inc. Selectively processing user input
US9262076B2 (en) * 2011-09-12 2016-02-16 Microsoft Technology Licensing, Llc Soft keyboard interface
US9838226B2 (en) 2012-01-27 2017-12-05 Apple Inc. Methods and apparatus for the intelligent scrambling of control symbols
US8897398B2 (en) * 2012-01-27 2014-11-25 Apple Inc. Methods and apparatus for error rate estimation
ES2434101B1 (es) 2012-04-02 2014-11-25 Telefónica, S.A. Método y sistema para gestionar teclados virtuales para dispositivo informático
AU2013262488A1 (en) 2012-05-18 2014-12-18 Apple Inc. Device, method, and graphical user interface for manipulating user interfaces based on fingerprint sensor inputs
US9471220B2 (en) * 2012-09-18 2016-10-18 Google Inc. Posture-adaptive selection
US9600167B2 (en) * 2012-09-28 2017-03-21 Facebook, Inc. Systems and methods for a user-adaptive keyboard
US9450790B2 (en) 2013-01-31 2016-09-20 Apple Inc. Methods and apparatus for enabling and disabling scrambling of control symbols
US9348429B2 (en) * 2013-03-15 2016-05-24 Blackberry Limited Method and apparatus for word prediction using the position of a non-typing digit
US9210010B2 (en) 2013-03-15 2015-12-08 Apple, Inc. Methods and apparatus for scrambling symbols over multi-lane serial interfaces
CN104423614B (zh) * 2013-09-11 2017-08-25 联想(北京)有限公司 一种键盘布局方法、装置及电子设备
US9529528B2 (en) 2013-10-22 2016-12-27 International Business Machines Corporation Accelerated data entry for constrained format input fields
CN104615262A (zh) * 2013-11-01 2015-05-13 辉达公司 一种用于虚拟键盘的输入方法和输入系统
US20150261312A1 (en) 2014-03-15 2015-09-17 Hovsep Giragossian Talking multi-surface keyboard
RU2577221C2 (ru) * 2014-06-18 2016-03-10 Андрей Александрович Баяджан Способ осуществления музыкального, в том числе нотного, письма и записи музыкальных текстов (варианты)
CN105450583B (zh) 2014-07-03 2019-07-05 阿里巴巴集团控股有限公司 一种信息认证的方法及装置
CN105446992A (zh) 2014-07-08 2016-03-30 阿里巴巴集团控股有限公司 建立商品对象回收信息数据库、确定价值信息方法及装置
CN105450411B (zh) 2014-08-14 2019-01-08 阿里巴巴集团控股有限公司 利用卡片特征进行身份验证的方法、装置及系统
CN105447378B (zh) * 2014-08-27 2018-07-13 阿里巴巴集团控股有限公司 一种密码生成方法和装置
CN105392057B (zh) * 2014-09-03 2019-04-02 中国科学院声学研究所 一种软键盘布局动态调优实现方法
WO2016053239A1 (en) * 2014-09-29 2016-04-07 Hewlett-Packard Development Company, L.P. Virtual keyboard
CN105719183A (zh) 2014-12-03 2016-06-29 阿里巴巴集团控股有限公司 定向转账方法及其装置
CN105869043A (zh) 2015-01-19 2016-08-17 阿里巴巴集团控股有限公司 分散热点的数据库账户转入、转出的记账方法及装置
CN105989467A (zh) 2015-02-03 2016-10-05 阿里巴巴集团控股有限公司 无线支付方法与装置及交通工具乘坐费检验方法与系统
US10282089B2 (en) * 2015-02-03 2019-05-07 Google Llc User state-adaptive text input
CN104883597A (zh) * 2015-05-20 2015-09-02 福建新大陆通信科技股份有限公司 一种基于输入优先级的机顶盒软键盘输入方法及其系统
CN106570009B (zh) 2015-10-09 2020-07-28 阿里巴巴集团控股有限公司 导航类目更新方法及装置
DE102015119609A1 (de) * 2015-11-13 2017-05-18 Endress + Hauser Process Solutions Ag Tastaturapplikation für eine Gerätezugriffssoftware
US10627948B2 (en) * 2016-05-25 2020-04-21 Microsoft Technology Licensing, Llc Sequential two-handed touch typing on a mobile device
CN106201016A (zh) * 2016-07-18 2016-12-07 深圳芯智汇科技有限公司 带有多个实体按键的终端
WO2019000153A1 (en) * 2017-06-26 2019-01-03 Orange METHOD FOR DISPLAYING A VIRTUAL KEYBOARD ON A MOBILE TERMINAL SCREEN
CN108734371A (zh) 2018-02-12 2018-11-02 阿里巴巴集团控股有限公司 一种针对风控指令的处理方法、装置及设备
CN108632348B (zh) 2018-03-19 2020-02-18 阿里巴巴集团控股有限公司 一种业务校验方法和装置
CN109521889B (zh) * 2018-09-29 2021-02-09 咪咕音乐有限公司 一种输入方法及装置、终端及存储介质
US11099664B2 (en) 2019-10-11 2021-08-24 Hovsep Giragossian Talking multi-surface keyboard
EP4022517A4 (en) * 2019-12-04 2022-10-19 Samsung Electronics Co., Ltd. METHODS AND SYSTEMS FOR PREDICTING KEYKEYS USING A UNIFIED NEURONAL NETWORK

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5128672A (en) 1990-10-30 1992-07-07 Apple Computer, Inc. Dynamic predictive keyboard
US5963671A (en) 1991-11-27 1999-10-05 International Business Machines Corporation Enhancement of soft keyboard operations using trigram prediction
JPH08221169A (ja) 1995-02-14 1996-08-30 Matsushita Electric Ind Co Ltd ソフトウェアキーボード表示方法とその装置
JPH08272789A (ja) 1995-03-30 1996-10-18 Mitsubishi Electric Corp 言語情報変換装置
US5797098A (en) 1995-07-19 1998-08-18 Pacific Communication Sciences, Inc. User interface for cellular telephone
US7844914B2 (en) * 2004-07-30 2010-11-30 Apple Inc. Activating virtual keys of a touch-screen virtual keyboard
US6169538B1 (en) * 1998-08-13 2001-01-02 Motorola, Inc. Method and apparatus for implementing a graphical user interface keyboard and a text buffer on electronic devices
US6359572B1 (en) 1998-09-03 2002-03-19 Microsoft Corporation Dynamic keyboard
US6004049A (en) 1998-10-29 1999-12-21 Sun Microsystems, Inc. Method and apparatus for dynamic configuration of an input device
US8938688B2 (en) 1998-12-04 2015-01-20 Nuance Communications, Inc. Contextual prediction of user words and user actions
GB2347239B (en) 1999-02-22 2003-09-24 Nokia Mobile Phones Ltd A communication terminal having a predictive editor application
AU3546200A (en) 1999-03-29 2000-10-16 Now See Hear Interactive Inc. A method for mobile text entry
US6573844B1 (en) * 2000-01-18 2003-06-03 Microsoft Corporation Predictive keyboard
US6654733B1 (en) 2000-01-18 2003-11-25 Microsoft Corporation Fuzzy keyboard
KR100726582B1 (ko) 2000-10-25 2007-06-11 주식회사 케이티 무선통신 단말기의 위치 확인에 의한 다국 문자 자판의제공 방법
JP2002132447A (ja) 2000-10-27 2002-05-10 Alpine Electronics Inc タッチパネル入力装置
US7318019B1 (en) * 2000-11-17 2008-01-08 Semantic Compaction Systems Word output device and matrix keyboard for use therein
US6724370B2 (en) 2001-04-12 2004-04-20 International Business Machines Corporation Touchscreen user interface
US7168046B2 (en) * 2001-04-26 2007-01-23 Lg Electronics Inc. Method and apparatus for assisting data input to a portable information terminal
US20090040184A9 (en) * 2001-10-04 2009-02-12 Infogation Corporation Information entry mechanism
US7246060B2 (en) * 2001-11-06 2007-07-17 Microsoft Corporation Natural input recognition system and method using a contextual mapping engine and adaptive user bias
US6744423B2 (en) 2001-11-19 2004-06-01 Nokia Corporation Communication terminal having a predictive character editor application
SG125895A1 (en) 2002-04-04 2006-10-30 Xrgomics Pte Ltd Reduced keyboard system that emulates qwerty-type mapping and typing
US7177859B2 (en) * 2002-06-26 2007-02-13 Microsoft Corporation Programming model for subscription services
US20060030375A1 (en) * 2002-08-30 2006-02-09 Katsuzo Tanaka Ultra high-speed character input device of cellular telephone
KR20040034915A (ko) 2002-10-17 2004-04-29 삼성전자주식회사 펜 컴퓨팅 시스템에서의 동적 키보드 구현 장치
FI116168B (fi) 2003-03-03 2005-09-30 Flextronics Odm Luxembourg Sa Datan syöttö
US8479112B2 (en) * 2003-05-13 2013-07-02 Microsoft Corporation Multiple input language selection
US7230607B2 (en) * 2003-06-12 2007-06-12 Katsuyasu Ono 6-key keyboard for touch typing
KR100537280B1 (ko) * 2003-10-29 2005-12-16 삼성전자주식회사 휴대용 단말기에서 터치스크린을 이용한 문자 입력 장치및 방법
JP2005215728A (ja) 2004-01-27 2005-08-11 Dainippon Printing Co Ltd ソフトキーボード機能付電子フォームシステム
US7218249B2 (en) 2004-06-08 2007-05-15 Siemens Communications, Inc. Hand-held communication device having navigation key-based predictive text entry
US7616191B2 (en) * 2005-04-18 2009-11-10 Avago Technologies Ecbu Ip (Singapore) Pte. Ltd. Electronic device and method for simplifying text entry using a soft keyboard
US20060256139A1 (en) 2005-05-11 2006-11-16 Gikandi David C Predictive text computer simplified keyboard with word and phrase auto-completion (plus text-to-speech and a foreign language translation option)
US9606634B2 (en) 2005-05-18 2017-03-28 Nokia Technologies Oy Device incorporating improved text input mechanism
US7886233B2 (en) * 2005-05-23 2011-02-08 Nokia Corporation Electronic text input involving word completion functionality for predicting word candidates for partial word inputs
KR100706313B1 (ko) 2005-06-02 2007-04-13 엘지전자 주식회사 이동통신 단말기에서 메시지 입력 중 문자입력방법
BRPI0615536A2 (pt) * 2005-07-22 2011-05-17 Matt Pallakoff dispositivo manual que tem um mostrador da tela de toque com capacidade de implementar uma interface do usuário de teclado virtual para inserir toques no teclado por um usuário, sistema de interface do usuário (ui) baseada em tela de toque em um dispositivo manual, sistema de interface do usuário (ui) baseado em tela de toque otimizado pelo polegar em um dispositivo manual, sistema de interface do usuário (ui) virtual acionado a polegar para a busca de informações, sistema de interface do usuário virtual acionado pelo polegar, para selecionar itens selecionáveis virtuais em uma página da web exibida em um mostrador de tela de toque de um dispositivo portátil, dispositivo manual que tem um mostrador de tela de toque com capacidade de executar um teclado virtual para inserir toques no teclado por um usuário, método para implementar a seleção de entrda por um usúario dos itens exibidos em um tela de toque de um dispositivo manual e método para que uma interface virtual do usuário do teclado interaja com páginas da web em um dispositivo de visualização manual que tem um mostrador de tela de toque
US7443316B2 (en) * 2005-09-01 2008-10-28 Motorola, Inc. Entering a character into an electronic device
JP2007299198A (ja) 2006-04-28 2007-11-15 Toyota Motor Corp 入力装置、入力制御方法及び入力制御プログラム。
US8161395B2 (en) * 2006-11-13 2012-04-17 Cisco Technology, Inc. Method for secure data entry in an application
US20090051661A1 (en) * 2007-08-22 2009-02-26 Nokia Corporation Method, Apparatus and Computer Program Product for Providing Automatic Positioning of Text on Touch Display Devices
US8232973B2 (en) * 2008-01-09 2012-07-31 Apple Inc. Method, device, and graphical user interface providing word recommendations for text input
US9552155B2 (en) 2008-02-04 2017-01-24 Microsoft Technology Liecsnsing, LLC Dynamic soft keyboard
US20110298723A1 (en) * 2010-06-07 2011-12-08 Christopher Brian Fleizach Devices, Methods, and Graphical User Interfaces for Accessibility via a Touch-Sensitive Surface

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020005044A1 (ko) * 2018-06-29 2020-01-02 삼성전자 주식회사 전자 장치에서 물리적 키보드의 레이아웃 설정 방법 및 장치
US11586352B2 (en) 2018-06-29 2023-02-21 Samsung Electronics Co., Ltd. Method for setting layout for physical keyboard by electronic device, and device therefor

Also Published As

Publication number Publication date
US20090195506A1 (en) 2009-08-06
CN101932990B (zh) 2014-03-05
JP2011511370A (ja) 2011-04-07
US20220342539A1 (en) 2022-10-27
US10394446B2 (en) 2019-08-27
EP2240842A2 (en) 2010-10-20
US11868609B2 (en) 2024-01-09
US9552155B2 (en) 2017-01-24
KR101541271B1 (ko) 2015-08-03
CN101932990A (zh) 2010-12-29
EP2240842B1 (en) 2018-03-21
US20190278476A1 (en) 2019-09-12
BRPI0906882B1 (pt) 2019-08-20
JP5611838B2 (ja) 2014-10-22
US11416142B2 (en) 2022-08-16
WO2009099704A2 (en) 2009-08-13
RU2504820C2 (ru) 2014-01-20
RU2010132641A (ru) 2012-02-10
US11199966B2 (en) 2021-12-14
EP2240842A4 (en) 2013-02-13
US20170147204A1 (en) 2017-05-25
WO2009099704A3 (en) 2009-10-15
BRPI0906882A2 (pt) 2015-07-07
US20220083219A1 (en) 2022-03-17

Similar Documents

Publication Publication Date Title
US11416142B2 (en) Dynamic soft keyboard
US9557916B2 (en) Keyboard system with automatic correction
KR101003879B1 (ko) 텍스트 입력 시스템
US7659887B2 (en) Keyboard with a touchpad layer on keys
KR102402397B1 (ko) 다중 입력 관리를 위한 시스템 및 방법
US20140351760A1 (en) Order-independent text input
US8760428B2 (en) Multi-directional calibration of touch screens
KR101484583B1 (ko) 대체 점수를 사용하여 사전-내에-없는 문자열들의 제스처 키보드 입력
CN1648837A (zh) 基于输入设备运动参数跟踪的选择输入系统
US20170286395A1 (en) Dynamic key mapping of a graphical keyboard
Arif Predicting and reducing the impact of errors in character-based text entry
Bhatti et al. Mistype resistant keyboard (NexKey)
CN109240590A (zh) 用于虚拟键盘的输入控制方法及装置

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
N231 Notification of change of applicant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20180628

Year of fee payment: 4