KR101116547B1 - 데이터 입력 인터페이스 장치, 방법 및 시스템 - Google Patents

데이터 입력 인터페이스 장치, 방법 및 시스템 Download PDF

Info

Publication number
KR101116547B1
KR101116547B1 KR1020067021095A KR20067021095A KR101116547B1 KR 101116547 B1 KR101116547 B1 KR 101116547B1 KR 1020067021095 A KR1020067021095 A KR 1020067021095A KR 20067021095 A KR20067021095 A KR 20067021095A KR 101116547 B1 KR101116547 B1 KR 101116547B1
Authority
KR
South Korea
Prior art keywords
zone
key
zones
user
data input
Prior art date
Application number
KR1020067021095A
Other languages
English (en)
Other versions
KR20070001223A (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 KR20070001223A publication Critical patent/KR20070001223A/ko
Application granted granted Critical
Publication of KR101116547B1 publication Critical patent/KR101116547B1/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/03Arrangements for converting the position or the displacement of a member into a coded form
    • 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
    • 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/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/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

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)
  • Machine Translation (AREA)
  • Document Processing Apparatus (AREA)

Abstract

제한된 입력 채널의 세트를 갖는 장치 상에 효율적인 데이터 입력을 위한 장치, 방법 및 시스템을 개시한다. 이들 장치, 시스템 및 방법은 효율적인 데이터 입력을 가능하게 하는 사용자 인터페이스를 채용할 수 있다. 이 인터페이스는 그 인터페이스를 이용하는 장치에 따라 그리고 그 인터페이스와 연계된 내용적 의미에 따라 맞춤화될 수 있다. 효율적인 데이터 입력을 지원하기 위해, 이들 장치, 시스템 및 방법은 사용자 입력을 명확하게 하거나, 입력을 정확하게 지정할 수 있는 효율적인 방법을 제공하거나, 또는 사용자 입력을 예측할 수 있다. 또한, 이들 장치, 시스템 및 방법은 어떤 사용자의 경향에 적응할 수 있고, 빈번하게 사용되는 입력에 대해 사용자 정의된 축약어 및 동의어를 통합할 수 있다.

Description

데이터 입력 인터페이스 장치, 방법 및 시스템{APPARATUS, METHOD AND SYSTEM FOR A DATA ENTRY INTERFACE}
관련 출원
본 출원은 반 데르 호에벤(Van der Hoeven)이 2004년 3월 12에 출원한 발명의 명칭이 "Method and System for Disambiguation and Predictive Resolution"인 미국 특허 출원 번호 10/800,203에 관한 것이며, 이 단락 내에 인용하는 모든 출원은 참조문헌으로서 본 명세서에 그 전체가 포함된다.
본 발명은 개괄적으로 데이터 입력에 관한 것이며, 보다 구체적으로는 장치에의 데이터 입력을 효율적으로 하기 위한 인테페이스 및 로직에 관한 것이다.
컴퓨터 시대가 도래한 이래로 가장 변하지 않으면서 계속되는 경향 중 하나가 소형화 지향이다. 이러한 경향은 모든 산업의 양상에서 나타나고 있다. 휴대 전화, 개인 휴대 정보 단말기(PDA; Personal Digital Assistant), 휴대용 컴퓨터 등은 모두 놀라운 속도로 사이즈가 축소되고 있다. 그러나, 반대로 이들 장치가 축소화됨에 따라 또한 이들은 보다 강력해지고 있다. 이러한 양분 현상은 다소 문제가 된다. 이 장치와 함께, 디스플레이 장치 및 데이터 입력 인터페이스가 이용할 수 있는 실 면적이 자연히 축소되면서, 사용자가 정보를 전달하고 정보를 수집할 필요 성도 장치의 능력과 비례하게 증가한다.
데이터 입력 및 디스플레이에 대한 2개의 하위시스템 각각에 있어서, 각 하위시스템이 비효율적이거나 무용하게 되기 전에 가능한 사이즈 축소에 대한 본래의 물리적인 제한이 있다. 사용자에게 통신에 대해 부과되는 물리적인 제한은 데이터 입력 인터페이스에 대한 부과되는 것보다 훨씬 많다. 이러한 제한은 하드웨어 제한, 생리적 제한, 및 대부분의 경우 데이터를 사용자에게 시각적으로 전달되어야 한다는 점을 포함할 수 있다. 이에, 통신 및 데이터 입력을 위해 예약된 장치의 공간 크기(footprint)의 대부분을 시각적 디스플레이 장치가 차지하게 된다. 이러한 시각적 디스플레이 장치는 데이터 입력 인터페이스를 위한 공간을 거의 남기지 않는다.
이러한 문제를 해결하기 위한 방안이 수기(handwriting) 소프트웨어를 장치에 통합함으로써 고안되었다. 이러한 방안을 이용하기 위해서, 사용자는 접촉식 디스플레이 장치 상에 기록함으로써 텍스트를 직접 입력할 수 있다. 그리고, 이렇게 수기 작성된 데이터는 수기 인식 소프트웨어에 의해 디지털 데이터로 변환된다. 이러한 방안에 의해 하나의 디스플레이 장치가 사용자에 대한 정보 전달 및 데이터 수신을 모두 할 수 있지만, 수기 인식 소프트웨어의 정확성 및 속도는 알려진 바와 같이 나쁘다. 또한, 스타일러스(stylus)를 이용한 인쇄 또는 기록은 일반적으로 타이핑, 즉 키를 이용한 입력보다 속도가 느리며, 2개의 손을 이용해야 한다.
그에 따라, 한 손으로 작업할 수 있는 소량의 데이터를 입력하기 위한 인터페이스를 이용하는 것이 바람직하다. 그러한 키보드에서의 종래의 시도에 따라 키 수가 축소된 키보드가 개발되었다. 도 1은 종래의 장치용의 축소형 키패드(100)를 도시하고 있다. 키패드(100)는 10개의 숫자키(110-128), 별표(*)키(130), 파운트(#)키(140)를 갖는 표준형 전화 키패드이다. 영어 및 그외 많은 알파벳 언어의 경우, 전화기의 숫자 키패드가 알파벳 키패드와 오버레이되어 3개의 문자가 각 숫자키(110-128)과 연계된다. 예컨대, 숫자 2 키(114)는 문자 a-b-c와 연계된다. 이들 축소형 키 장치 중 일부를 이용함에 있어서, 사용자는 복수개의 키를 눌러서 단어 또는 이름을 입력할 수 있다.
그러나, 이 방안에 있어서도, 중국어 및 일본어 간지 등의 다른 문자계 언어의 경우 숫자 키패드 상에 오버레이될 수 있는 처리 가능한 문자 수를 가질 수 없기 때문에 문제가 된다. 추가 문제는 각각의 키 누름이 복수의 문자를 포함할 수 있어, 키스트로크의 시퀀스에 중의성이 있을 수 있다는 것이다.
이 중의성 문제에 대한 방안은 각 문자를 지정하기 위해 사용자가 2회 이상의 키스트로크를 행해는 것이며, 키스트로크는 동시에(코딩(chording)) 또는 순서대로 행해질 수 있다. 그러나, 이들 방법은 다수회의 키스트로크를 필요로 하기 때문에 비효율적이다. 이상적으로 데이터 입력 방법은 문자당 1 키스트로크를 필요로 한다.
종래에, 단어 레벨의 중의성 해소(disambiguration)는 수신된 키스트로크의 시퀀스를 사전에 있는 필적할 만한 것과 비교함으로써 단어 전체를 명확하게 하는데 이용되고 있다. 그러나, 디코딩의 제한 때문에, 단어 레벨의 중의성 해소로, 문자당 1 키스트로크의 효율성을 갖는 구속없는 데이터의 디코딩에 에러가 없을 수는 없다.
따라서, 각종 데이터의 효율적인 한 손 입력을 가능하게 하며, 문자 중의성의 해소 및 예측 입력 완성을 위한 로직을 이용하여 데이터 입력에 필요한 스트로크 수를 단축할 수 있는 능력을 가능하게 하는 인터페이스 장치, 방법 및 시스템이 필요하다.
제한된 입력 채널의 세트를 구비한 장치 상에 효율적인 텍스트 입력을 위한 장치, 방법 및 시스템을 개시한다. 이들 장치, 시스템 및 방법은 한 손의 엄지로 조작될 수 있는 키 레이아웃을 이용하여 효율적인 한 손 작업이 이루어지는 사용자 인터페이스를 채용할 수 있다. 이 인터페이스는 그 인터페이스를 이용하는 특정 장치에 맞춤화될 수 있으며, 어떤 경우에는 복수의 문자가 각 키와 또는 키의 일부와 연계될 수 있다. 데이터의 효율적인 입력을 지원하기 위하여, 이들 장치, 시스템 및 방법은 사용자가 입력한 데이터가 여러개의 해석을 가질 수 있는 경우에 사용자 입력을 명확하게 할 수 있거나, 입력을 정확하게 지정할 수 있는 효율적인 방법을 제공하거나, 또는 사용자 입력을 예측하여 이러한 예측 결과를 사용자에게 제시할 수 있다. 또한, 이러한 예측 시스템 및 방법은 어떤 사용자의 경향에 적응할 수 있고, 빈번하게 사용되는 입력에 대한 생략, 변환, 동의어를 포함할 수 있다.
일 실시예에서, 최초 누름이 검출되고, 누름 해제가 검출되며, 누름과 누름 해제 간의 움직임이 존 세트를 이용하여 검출되고, 최초 누름, 누름 해제 및 움직임이 정규화되어 개별 메시지가 된다.
다른 실시예에서, 존 세트는 키 사이 존 세트과, 키 존 세트를 포함하고, 2개의 키 존은 접촉하지 않으며, 각각의 키 존은 적어도 하나의 키 사이 존과 접촉한다.
또 다른 실시예에서, 존 세트는 행 세트에 배치되어 있다.
또 다른 실시예에서, 각 행은 각 단부에 키 존을 갖고, 그 행에 있는 각각의 키 존 사이에는 키 사이 존이 있다.
또 다른 실시예에서, 각각의 키 사이 존은 그 키 사이 존이 접촉하는 적어도 2개의 인접 키 존과 겹쳐진다.
또 다른 실시예에서, 각각의 키 사이 존의 모든 부분은 그 키 사이 존이 접촉하는 적어도 2개의 인접 키 존 중 하나와 연계된다.
일부 실시예에서는 내용적 의미(semantic meaning)가 개별 메시지와 연계된다.
본 발명의 전술한 양상 및 다른 양상들은 이어지는 설명 및 첨부하는 도면을 참조하여 보다 더 잘 알게 될 것이다. 다음의 설명에 있어서, 본 발명의 다양한 실시예 및 수많은 특정 상세를 나타내는 이어지는 설명은 예시적이며, 제한적이지 않다. 다양한 대체, 변경, 추가 또는 재구성이 본 발명의 기술적 사상 내에서 이루어질 수 있으며, 본 발명은 이러한 모든 대체, 변경, 추가 또는 재구성을 포함한다.
본 명세서에 첨부되며 명세서의 부분을 구성하는 도면은 본 발명의 소정의 양상을 도시하기 위해 포함된다. 본 발명에 대한 더 분명한 이해, 그리고 본 발명 이 제공하는 구성요소 및 시스템의 동작에 대한 보다 분명한 이해는 예시적인, 그러니깐 도면에 도시하는 비제한적인 실시예를 참조하여 보다 자명해 질 것이며, 도면에서 동일한 도면 부호는 동일한 구성요소를 나타낸다. 도면에 도시하는 특징부는 반드시 실측으로 도시하지 않았다.
도 1은 종래의 축소형 키보드를 나타내는 도면이다.
도 2는 개시하는 시스템 및 방법을 구현하기 위한 가능한 일례의 아키텍쳐를 나타내는 도면이다.
도 3은 본체 센서(principle sensor)로 존을 채용하기 위한 레이아웃의 일 실시예를 나타내는 도면이다.
도 4는 본체 센서로 존을 채용하기 위한 레이아웃의 일 실시예를 나타내는 다른 도면이다.
도 5는 장치 상에 데이터 입력을 위한 존을 채용하기 위한 레이아웃의 일실시예를 나타내는 도면이다.
도 6은 도 5에 도시하는 존의 일부를 상세하게 나타내는 도면이다.
도 7은 코어 로직으로 입력을 처리하기 위한 일 방법론을 나타내는 도면이다.
도 8은 입력 처리 시에 코어 로직이 이용할 수 있는 후보들을 형식화하기 위한 일 방법론을 나타내는 도면이다.
도 9는 코어 로직이 이용할 수 있는 예측 결과를 형식화하는 일 방법론을 나타내는 도면이다.
도 10은 언어 모델을 저장하기 위한 데이터 구조의 일 실시예를 나타내는 도면이다.
본 발명 및 본 발명의 다양한 특징 및 유용한 상세 내용은 첨부하는 도면에 도시하며 이어서 상세히 설명하는 비제한적인 실시예를 참조하여 보다 충분하게 설명한다. 잘 알려진 개시 요소, 처리 기술, 구성 및 장비에 대한 설명은 편의상 생략하였다. 그러나, 당업자라면, 본 발명의 양호한 실시예를 개시하지만, 상세한 설명 및 특정예는 예시적인 것일 뿐 제한적이지 않다는 것을 이해하여야 한다. 본 발명의 기본 원리의 범주 내에서 다양한 대체, 변경, 추가 또는 재구성이 본 명세서를 이해한 후에 당업자에게 분명해질 것이다.
이제 본 발명의 예시적인 실시예에 대해 상세히 설명하기로 하며, 이 예들은 첨부 도면에 도시되어 있다. 가능하다면, 동일한 도면 부호는 도면 전체를 통해 동일하거나 유사한 부분(요소)을 나타내도록 사용될 것이다.
본 명세서 전체를 통해 사용되는 용어의 이해를 돕기 위해 몇가지 용어를 정의하여 분명하게 하였다.
용어 "문자(character)"는, 문자가 글자(letter), 판별 가능한 마크, 간지의 일부, 필적(writing) 및 인쇄 등의 분야에서 함축적 의미를 가진 기호(symbol)이든지 임의의 기호를 의미하는 것이다.
용어 "키(key)"는 터치를 비롯한 사용자 동작에 응답하는 인터페이스의 존을 의미하는 것이다. 내용적 의미는 키 또는 키의 일부와 연계될 수 있으며, 이 내용 적 의미는 하나 이상의 문자로 구성되거나 정보를 제어할 수 있다.
용어 "키보드(keyboard)"는 키의 그룹화를 의미하는 것이다.
용어 "예측 결과(prediction)"란 기호 시퀀스의 완성을 예측하려는 시도의 결과를 의미하는 것이다. 이 예측 결과는 개연적, 수학적, 언어적 또는 그외의 것을 포함하는 임의의 타입의 시스템에 기초할 수 있다.
용어 "동의어(synonym)"는 예측 결과의 가능한 대안을 의미하는 것이다. 이들 동의어는 예측 결과와 연계될 수 있으며, 예측 결과에 대응하는 데이터 구조에, 즉 예측 결과에 대응하는 단말 노드에 기억될 수 있다.
용어 "제안(proposition)"은 하나 이상의 문자의 시퀀스, 즉 이러한 시퀀스의 세트를 의미하는 것이다.
용어 "프리픽스(prefix)"는 사용자 입력, 중의성 해소의 결과 또는 예측 결과 등으로 확장되거나 될 수 없는 하나 이상의 문자의 시퀀스를 의미한다.
용어 "후보(candidate)"는 하나 이상의 문자의 시퀀스 및 관련 평점(score)을 의미하는 것이다. 이 평점은 개연적, 수학적, 언어적 또는 그외의 것을 포함하는 임의의 모델에 기초할 수 있다.
용어 "활성 존(active zone)"은 사용자로부터 입력을 수신하는데 이용된 인터페이스의 부분으로 지정되는 인터페이스의 존을 의미하는 것이다.
용어 "존(zone)"은 인터페이스의 영역 또는 센서의 범위 내에서의 영역을 의미하는 것이다.
용어 "중의적이다(ambiguous)"는 어떤 것이 몇가지 가능한 의미를 가질 수 있음을 의미하는 것이다.
용어 "완성(completion)"은 최초의 기호의 세트(보통 프리픽스라고 함)와 연결되는 경우에 원하는 최종적 또는 중간적 기호의 시퀀스를 형성할 수 있는 기호의 세트를 의미한다. 많은 경우에, 완성은 원하는 최종적 또는 중간적 시퀀스를 형성할 가능성이 높도록 계산되는 것이 좋다.
용어 "메시지 발송(send a message)"은 정보의 전송, 교환 또는 사용을 의미하는 것이다. 중요한 것은, 메시지가 어떻게 발송되는지에 대해서는, 즉 메시지의 발송이 임의의 특정 실시예에서 필요할 경우에도, 고려할 필요가 없다는 점이다.
용어 "시퀀스(sequence)"는 순서의 개념이 있는 유한 개수의 요소를 의미하는 것이다. 시퀀스는 비어있거나 단 하나의 요소만 포함할 수 있다. 이것은 수학에서 일반적으로 인정되는 정의이다. 우리는 그것을 (e1,…,en)로서 나타내기로 한다.
용어 "세트(set)"는 순서의 개념이 없는 유한 개수의 요소를 의미하는 것이다. 세트는 비어있거나 단 하나의 요소만 포함할 수 있다. 이것은 수학에서 일반적으로 인정되는 정의이다. 우리는 그것을 {e1,…,en}로서 나타내기로 한다.
용어 "타이프(type)"는 값 또는 등급의 범위를 의미하는 것이다. 변수 또는 값을 타이프하는 것은 그것을 열거하는 것이며, 즉 그것의 값 또는 등급을 지정하는 것이다. 타입 T를 갖는 요소 E의 타이프는 다음과 같이 "E:T"로서 작성된다.
용어 "구조(structure)"는 정렬된 요소의 세트 (e1,…,en)를 의미하는 것이다. 각각의 요소 ei는 타입 ti를 갖게 타이프될 수 있다. 그리고 구조의 타입은 시 퀀스 (t1,…,tn)이다.
용어 "필드(field)"는 구조의 요소를 의미하는 것이다. 필즈(fields)라고 명명될 수 있다. P(e:t)는 구조 P가 타입 t의 필드 e를 가짐을 의미한다. p의 타입이 P라면(전술한 바와 같이), p.e는 요소 p의 필드를 나타낸다.
이제, 제한된 입력 채널의 세트를 갖는 장치 상에 텍스트의 효율적인 입력을 위한 장치, 방법 및 시스템에 대해 설명하기로 한다. 이들 장치, 방법 및 시스템은 한 손의 엄지로 조작될 수 있는 키 레이아웃을 이용하여 효율적인 한 손 작업을 가능하게 하는 사용자 인터페이스를 채용할 수 있다. 이 인터페이스는 이 인터페이스를 이용하는 특정 장치에 맞게 맞춤화될 수 있으며, 어떤 경우에는 복수의 문자가 각 키 또는 키의 부분과 연계될 수 있다. 데이터의 효율적인 입력을 지원하기 위해, 이들 장치, 방법 및 시스템은 사용자가 입력한 데이터가 몇가지 해석을 가질 수 있는 경우에 이들 키로부터 사용자 입력을 명확하게 할 수 있는데, 즉 사용자가 입력을 정확하게 지정할 수 있는 효율적인 방법을 제공할 수 있다. 또한, 이들 시스템 및 방법은 사용자가 전체 텍스트를 수동으로 입력할 것을 요구하는 대신에, 사용자 입력을 예측하여 사용자가 선택할 수 있도록 이 예측 결과를 사용자에게 제시할 수 있다. 또한, 이 예측 시스템 및 방법은 어떤 사용자의 경향에 맞게 적응할 수 있고, 빈번하게 사용된 입력에 대해서는 사용자 정의된 축약어 및 동의어를 통합할 수 있다.
본 발명의 예시적인 실시예에 있어서, 컴퓨터 실행 가능한 명령어는 어셈블리 코드 또는 컴파일 C++, 자바 또는 그외 언어 코드의 라인일 수 있다. 다른 아키 텍쳐도 이용할 수 있다. 또한, 그러한 코드를 갖는 컴퓨터 프로그램 또는 소프트웨어 구성요소는 복수의 컴퓨터에서 복수의 컴퓨터 시스템 판독 가능 매체에 구현될 수 있다.
이제 도 2를 참조하면, 본 명세서에 개시하는 장치, 방법 및 시스템을 구현하여 편성하기 위한 아키텍쳐(200)의 일실시예가 도시된다. 본 명세서를 이해한 후에는, 그외 많은 아키텍쳐가 본 발명의 실시예로 이용될 수 있음을 이해할 것이다. 일 실시예에서, 이들 아키텍쳐는 본체 센서(210), 추가 센서(212), 키스트로크 모듈(220), 의미화 모듈(240), 코어 로직(250), 언어 모델(260) 및 용법 모델(270)을 포함한다. 키스트로크 모듈(220)은 본체 센서(210)로부터 데이터를 수신할 수 있다. 키스트로크 모듈(220)은 이 데이터를 처리한 다음, 그 결과를 의미화 모듈(240)에 보낸다. 의미화 모듈(240)은 키스트로크 모듈(220)로부터 그리고 임의의 추가 센서(212)로부터 결과를 취득한다. 그런 다음, 의미화 모듈(240)은 사용 콘텍스트(290), 텍스트 요소(280), 메뉴 요소(282) 및 출력 장치(284)를 이용하여 코어 로직(250)에 의해 사용되도록 이 데이터를 처리하여 데이터를 형식화할 수 있다. 코어 로직(250)은 의미화 모듈(240), 언어 모델(260) 또는 용법 모델(270)로부터의 입력을 이용해, 사용자의 입력을 예측하여 완성하거나 중의성을 해소할 수 있다. 코어 로직(250)은 그 결과를 의미화 모듈(240)에 제공한다. 그리고 의미화 모듈은 사용 콘텍스트(290), 텍스트 요소(280), 메뉴 요소(282) 및 출력 장치(284)의 조합을 통해 결과를 출력할 수 있다.
일반적으로, 이 아키텍쳐는 한 손의 엄지로 사용하도록 설계된 구성을 비롯 하여, 입력 장치에 대해 다양한 구성을 가능하게 함으로써 사용자가 장치 상에 데이터를 입력할 수 있는 능력을 강화시키도록 설계된다. 또한, 실시예들은 입력을 명확하게 하고, 사용자에게 정확한 입력을 명확하게 지정할 수 있는 효율적인 방법을 제공하며, 추가 수동 입력을 피하기 위하여 사용자에게 예측 완성을 제시할 수 있다. 당업자라면, 본 명세서를 이해한 후에, 이 아키텍쳐는 설명의 용도로만 제시된 것일 뿐이며, 설명하는 모든 기능성은 더 많거나 더 적은 모듈을 포함하는 다양한 방식으로, 전달받은 메시지가 있거나 없거나, 소프트웨어, 하드웨어 등으로 구현될 수 있음을 이해할 것이다.
특정 실시예에서, 사용자의 동작은 센서(210, 212)에 의해 포착되어 의미화 모듈(240)에 통보된다. 일부 실시예에서, 본체 센서(210)로부터의 정보는 의미화 모듈(240)에 통보되기 전에 키스트로크 모듈(220)에 의해 처리될 수 있다. 의미화 모듈(240)은 사용자에 대한 유일한 인터페이스일 수 있으며, 모든 입력 및 출력 메시지를 변환 및 형식화하는 데에 책임이 있을 수 있다. 의미화 모듈(240)의 변환은 콘텍스트 종속적일 수 있거나 시스템으로의 통합을 위해 파라미터화(parameterization)를 제공할 수 있다. 코어 로직(250)은 사용자 입력의 예측 및 중의성 해소를 비롯하여, 의미화 모듈(240)과 사용자 간의 상호 작용을 관리하기 위한 원칙(rule)을 포함할 수 있다.
코어 로직(250)은 사용자 입력을 명확하게 하기 위한 언어 모델(260) 및 사용자 입력을 예측할 수 있는 사용자 모듈(270)을 비롯한 데이터 구조를 사용할 수 이다. 텍스트 모듈(280), 메뉴 요소(282) 및 그외 선택적 출력 장치(287)가 의미화 모듈(240)에 의해 사용되어 코어 로직의 결과 또는 시스템의 상태를 나타낼 수 있다. 텍스트 요소(280)가 데이터 입력 인터페이스일 수 있기 때문에 사용자는 기호 시퀀스를 삽입하거나 입력할 수 있거나 기존의 기호 시퀀스를 확장할 수 있고, 기호 시퀀스가 텍스트 요소를 통해 표시될 수 있다.
일 특정 실시예에서, 텍스트 요소(280)는 사용자에 의해 기호 시퀀스를 삽입하거나 기존의 시퀀스를 확장할 수 있는 장치이다. 텍스트 요소(280)는 가능한 프리픽스 또는 다른 사용자 입력 텍스트에 대한 정보를 포함하는, 메시지(EditText)를 시스템 또는 의미화 모듈(240)에 보낼 수 있다. 이 때, 텍스트 요소(280)는, EditText 메시지에 응답하여 의미화 모듈(240)로부터 기호 시퀀스(S)를 포함하는 SubstituteText 메시지를 수신한다. 또한, 텍스트 요소(280)는 사용자가 기호 시퀀스의 입력을 종료하는 경우에 EditText 메시지의 완성을 신호로 전송하는 EndEdit 메시지를 수신할 수 있다. 텍스트 요소(280)가 이 SubstituteText 메시지를 수신하는 경우에, 텍스트 요소(280)는 그에 따라 응답할 수 있다. 만약 그 메시지가 최종 EditText가 보내진 후에 수신된 첫번째 SubstituteText 메시지이고 그 최종 EditText가 프리픽스를 갖고 있다면, SubstituteText 인수는 텍스트 요소(280) 내의 프리픽스에 대한 기호 시퀀스에 치환된 다음에 사용자에게 표시된다. 만약 그 메시지가 최종 EditText가 보내진 후에 수신된 첫번째 SubstituteText 메시지이고 그 최종 EditText가 프리픽스를 갖고 있지 않다면, 텍스트 요소(280)는 사용자에게 표시된 시퀀스에 SubstituteText 인수를 단지 삽입할 수 있다. 2개의 연속 SubstituteText 메시지에 있어서, 그 사이에 EndEdit가 없다면, 텍스트 요소는 제1 SubstituteText 메시지의 텍스트 대신에 제2 SubstituteText의 인수를 대체하여 그 정보를 사용자에게 표시한다.
메뉴 요소(282)는 시스템의 출력 또는 상태에 따라, 사용자에게 일련의 선택 또는 옵션을 제시할 수 있다. 메뉴 요소(282)는 일부 실시예에서는 텍스트 요소(280)와 조합될 수 있다. 메뉴 요소(282)는 사용자가 선택할 수 있도록 선택 리스트 또는 선택 트리를 표시할 수 있다. 메뉴 요소(282)는 의미화 모듈(240)로부터 인수를 포함하는 SetMenu 메시지를 수신할 수 있다. 이 인수는 메뉴가 리스트인 경우에 단순 선택 리스트(flat list)일 수 있고, 트리 메뉴인 경우에 트리 또는 내포 선택 리스트(nested list)에서의 선택의 위치를 나타내는 인수일 수 있다. 선택은 기호 또는 상수의 시퀀스일 수 있다. 사용자가 제시된 리스트로부터 선택하는 경우, SelectItem 메시지가 인수로서 선택치와 함께 의미화 모듈(240)에 보내질 수 있다.
사용 콘텍스트(290)는 센서(210, 212)의 특성 및 레이아웃을 제어하고 사용자에게 소정의 이벤트를 통지할 수 있다. 일 실시예에서, 사용 콘텍스트(290)는 TextInputQuery를 이용하여 사용자와의 상호 작용을 위해 텍스트 요소(280) 또는 메뉴 요소(282)를 준비할 수 있다. 텍스트 요소(280)는 그 텍스트 요소(280)가 편집이 준비됨을 나타내는, QueryFlag와 EditText 메시지를 의미화 모듈에 출력함으로써 응답할 수 있다.
또한, 사용 콘텍스트(90)는 편집 시작 시에 StartEdit 메시지를, 또는 편집 정지 시에 EditStop 메지시를 인터셉트하여 텍스트 편집이 텍스트 요소(280)에서 수행될 때를 알 수 있다. 또한, 사용 콘텍스트(290)는 본체 센서(210)의 다양한 특성을 제어하고 사용자에게 소정의 이벤트를 통지할 수 있다.
이들 이벤트는 통지의 타입에 관한 정보를 포함할 수 있는 UserNotify 메시지를 통해 트리거될 수 있다. 시스템은 각 타입의 통지마다 감당해야 할 동작을 해석할 수 있다. 이 해석은 의미화 모듈(240)에 의해 행해질 수 있다.
본체 센서(210)는 환경에서 변수의 세트를 모니터하고 그 결과를 개별 메시징을 통해 키스트로크 모듈(220)에 보낼 수 있다. 또한, 본체 센서(210)는 본체 센서(210)의 범위 내에서 사용자가 특정 영역 지정하기, 사용자에 의해 이루어진 일련의 움직임, 및 사용자의 움직임 정지를 포함할 수 있는, 사용자의 행동을 검출할 수 있다. 대개 이러한 행동들은 사용자와 센서 간의 직접적인 물리 접촉, 스타일러스, 펜 등의 툴을 이용한 간접적인 접촉, 또는 눈 움직임, 레이저 포인터 등의 물리적 접촉을 수반하지 않는 방법을 수반한다. 당업자라면 본체 센서(210)를 구현하는데 다양한 옵션이 존재함을 인식할 것이다. 이러한 옵션의 예로는 눈 추적 시스템, 터치 스크린, 조이스틱, 그래픽 사용자 인터페이스, 전자 또는 기계식 등의 모든 전통적 키보드가 있다. 마찬가지로, 이들 감지 장치는 하드웨어로, 소프트웨어로, 또는 이들의 조합으로 구현될 수 있다. 또한, 본 명세서를 이해한 후에는, 다양한 레이아웃이 본체 센서(210)로 이용되어 데이터 입력 인터페이스를 제공할 수 있음이 분명해질 것이다.
아키텍쳐(200)의 구성요소의 상호 작용을 설명하기 전에, 접촉을 검출할 수 있는 본체 센서(210)의 타입으로 이용될 수 있는 레이아웃의 일례가 도 3에 도시되 어 있다. 본체 센서(210) 내에는 겹치지 않는 존(300-390)의 세트가 정의될 수 있다. 이들 존(300-390)은 사용자와의 상호 작용을 돕기 위해 설계된 키 존(300, 310-390)일 수 있다. 이들 키 존(300, 310-390)은 하나 이상의 행(312, 314)을 따라 배열될 수 있으며, 각 행은 하나 이상의 키 존(300, 310-390)을 포함하며, 행은 동심 곡선에 순서대로 배열될 수 있다. 키 존(300, 310-390)의 행(312, 314) 외부에 있는 존은 키가 없는 존(302)이다. 각각의 키 존(300, 310-390)은 고유 식별자와 연계되고, 이 고유 식별자는 행 사이에서 키 존(300, 310-390)의 위치를 수단으로 하여 키 존(300, 310-390)의 정렬을 나타낸다.
예컨대, 행(312, 314)은 최내측 행에서 시작하여 올림차순으로 번호가 매겨질 수 있다. 도 3에 나타내는 예에서, 행(314)은 행 번호 1이 되고, 행(312)은 행 번호 2가 된다. 또한, 키 존(300, 310-390)은 그 각각의 행 내에서 정렬될 수 있다. 도 3에서 번호가 좌에서 우로 키 존(300, 310-390)에 지정되어, 그 결과 존(300, 350)은 1로 번호 매겨지고, 존(320, 360)은 2로, 등등 이런 식으로 번호 매겨질 수 있다. 이들 행과 존 정렬을 이용하여, 고유 식별자는 본체 센서(210)를 이용하여 구현되는 각 존마다 어셈블될 수 있다. 이 예에서, 키 존(300)은 (2,1)이 되고, 키 존(350)은 (1,1)로서, 키 존(360)은 (1,2)로서, 등등 이런 식으로 식별될 수 있다. 당업자에게는 쉽게 이해되겠지만, 본체 센서(210) 내에서 존(300-390)의 세트를 고유하게 식별하는데 많은 방식을 이용할 수 있으며, 이들 존(300-390)은 사용자, 장치, 특정 센서의 사이즈 또는 그외 다른 기준에 적합할 수 있는 각종 토폴로지로 정의될 수 있다.
본체 센서(210)는 환경을 모니터하여 사용자에 의한 접촉이 이루어지고 있는 겨냥 존 또는 접촉 존을 결정할 수 있다. 이 겨냥 존은 접촉이 이루어지는 점 또는 위치만으로 구성될 수 있거나, 실제 접촉 위치를 둘러싸는 정의된 영역으로 구성될 수 있다. 접촉이 이루어지는 경우, 본체 센서(210)는 존(300-390)이 겨냥 존과 겹치는지의 여부를 결정할 수 있다. 겨냥 존과 겹치는 각각의 존(300-390)에 대하여, 본체 센서(210)는 메시지를 키스트로크 로직(220)에 보낸다. 각 메시지는 접촉 개시 및 겹치는 존(300-390)에 대한 각각의 고유 식별자를 식별하는 메시지(StartContact)일 수 있다. 겨냥 존이 이동하여 임의의 다른 존(300-390)에 겹치기 시작하는 경우, 존(300-390)이 그 존(300-390)의 고유 식별자와 함께 진입하고 있음을 나타내는 메시지가 키스트로크 로직(220)에 보내진다. 접촉이 중지하면, 본체 센서(210)는 접촉이 중지되었음을 감지하고, 이것을 키스트로크 모듈(220)에 알린다(StopContact). 따라서, 본체 센서는 접촉의 개시, 이 접촉의 움직임, 및 접촉의 해지를 감지할 수 있다. 이러한 타입의 메시지는 본체 센서(210)와 키스트로크 모듈(220) 사이에서 전술한 타입의 메시지를 이용하여 교환될 수 있다. 모든 타입의 접촉이 본체 센서(210)에 의해 결정될 수 있지만, 이러한 모든 접촉에 관한 메시지는 키스트로크 모듈(220)에 전달될 수 없으며, 즉 사용자의 접촉을 평가하는데 사용될 수 있다는 점이 중요하다.
존(300-390)은 그 존(300-390)의 레이아웃, 사용자의 사양, 존(300-390)과 연계된 내용적 의미 등에 따라 활성 또는 비활성으로서 지정될 수 있다. 존(300-390)이 비활성으로서 지정되는 경우, 본체 센서(210)는 비활성 존과 부합하는 본체 센서의 영역을 겨냥 존과 비교할 수 없기 때문에, 키스트로크 로직(220)에 보내질, 비활성 존의 고유 식별자를 포함하는 메시지는 없을 것이다. 마찬가지로, 키스트로크 로직(220)에 보내질 비활성 존의 고유 식별자를 포함하는 메시지는 없을 것이지만 비교는 행해질 수 있다.
키스트로크 로직(220)은 본체 센서(210)로부터 일련의 접촉 개시/정지 메시지를 구별하는 역할을 할 수 있다. 키스트로크 로직(220)은 본체 세서(210)로부터 생성된 메시지를 취득하여, 접촉이 일어나고 있는 키 존(300, 310-390)의 행 번호와, 그 행에 있는 키 존(300, 310-390)의 번호를 결정하기 위해 이들 메시지를 해석할 수 있다. 또한, 키 존(300, 310-390)은 사용자의 접촉의 움직임 또는 사용자의 해제점에 따라 여러개의 모드로 트리거될 수 있고, 키스트로크 로직은 키 존(300, 310-390)이 트리거되는 모드를 결정할 수도 있다. 이들 모드는 KeyCenter, KeyLower, KeyUpper, RowLower 및 RowUpper로 표시될 수 있다. 이들 메시지는 사용자와의 접촉이 최초로 개시된 위치에 관하여 사용자의 해제점에 대응할 수 있다.
일 실시예에서, 본체 센서(210)로부터의 메시지는 다음의 알고리즘에 따라 처리될 수 있다.
StartContact 위치에 키가 없다면, 키스트로크 모듈은 임의의 다른 활성없이 다음 StartContact 메시지를 기다린다.
2개의 변수, Row와 Key가 있다. 그 각각은 다음의 값, Upper, Lower 및 Same을 가질 수 있다.
각 StartContact(kr1 , n1)에 대해서, (r1은 키가 속하는 행이고, n1은 그 행에서의 키 번호이다):
Row를 Same으로, Key를 Same으로 설정한다.
각 EnterZone(kr2,n2)에 대하여:
r2>rl이면, Row를 Upper로 설정한다
r2<rl이면, Row를 Lower로 설정한다
r2=rl이면:
Row를 Same으로 설정, 그리고
n2>nl이면 Key를 Upper로 설정한다
n2<nl이면 Key를 Lower로 설정한다
n2=nl이면 Key를 Same으로 설정한다
StopContact에 대하여:
Row가 Same이면:
Key가 Same이면 Input(rl,nl,KeyCenter)을 출력한다
Key가 Lower이면 Input(rl,nl,KeyLower)을 출력한다
Key가 Upper이면 Input(rl,nl,KeyUpper)을 출력한다
Row가 Lower이면 Input(rl,nl,RowLower)을 출력한다
Row가 Upper이면 Input(rl,nl,RowUpper)을 출력한다
이제 도 4를 참조하면, 본체 센서(210)의 실시예들에 이용되는 다른 레이아 웃이 도시되어 있다. 도 3에 대해 설명한 레이아웃이 더할 나위없이 적절하지만, 많은 존(300-390)이 설치되는 경우에, 접촉이 2개의 존 경계에 가까운 경우에, 사용자의 접촉 위치를 결정하기가 곤란할 수 있다. 이러한 어려움을 해결하기 위해 본체 센서(210) 상의 레이아웃(400)은 래칭 메커니즘(latching mechanism)을 구현하기 위해 키 사이 존(400-470)을 포함할 수 있다. 키 사이 존(400-470)은 2개의 키 존(300, 310-390)이 접촉하지 않도록 키 존(300, 310-390) 사이에 개재될 수 있다. 또한, 이들 키 사이 존(400-470)은 고유 식별자를 가질 수 있고, 본체 센서(210)는 키 사이 존(410-470)에서 접촉이 일어나는 경우를 감지하고 대응하는 메시지를 키스트로크 로직(220)에 보낸다. 키 사이 존(400-470)이 설치되는 경우, 본체 센서(210)로부터의 메시지는 다음의 알고리즘에 따라 처리될 수 있다.
행 번호 x는 이제 다음의 라벨 (kx ,1,ix ,1,kx ,2,ix ,2,…,ix ,y-1,kx ,y)을 갖는 존으로 구성되며, 여기서 y는 행 번호 x의 키의 번호이다. StartContact 위치에 키가 없거나 그 위치가 키 사이 존이라면, 키스트로크 모듈은 임의의 다른 활성없이 다음의 StartContact 메시지를 기다린다.
각 StartContact(kr1 , n1)에 대해서:
Row를 Same으로, Key를 Same으로 설정한다
각 EnterZone(ir2,n2)에 대하여
r2=rl이면
n2<nl-l이면 Row를 Same으로, Key를 Lower로 설정한다
nl>nl이면 Row를 Same으로, Key를 Upper로 설정한다
r2<r이면 Row를 Lower으로 설정한다
r2>r이면 Row를 Upper로 설정한다
각 EnterZone(kr2,n2)에 대하여
r2=rl이면
n2=nl이면 Row를 Same으로, Key를 Same으로 설정한다
n2<nl이면 Row를 Same으로, Key를 Lower로 설정한다
n2>nl이면 Row를 Same으로, Key를 Upper로 설정한다
r2<rl이면 Row를 Lower로 설정한다
r2>rl이면 Row를 Upper로 설정한다
첫번째 StopContact에 대하여
Row가 Same이면
Key가 Same이면 Input(rl,nl,KeyCenter)을 출력한다
Key가 Lower이면 Input(rl,nl,LeyLower)을 출력한다
Key가 Upper이면 Input(rl,nl,KeyUpper)을 출력한다
Row가 Lower이면 Input(rl,nl,RowLower)을 출력한다
Row가 Upper이면 Input(rl,nl,RowUpper)을 출력한다
당업자에게는 키 사이 존이 임의의 2개의 존 또는 존 세트 사이에서 래칭 메커니즘을 구현하기 위해 채용될 수 있음이 자명할 것이다. 예컨대, 키 사이 존은 행(312, 314) 사이에서 래칭 메커니즘을 구현하기 위해 채용될 수 있다.
도 5에는 본 발명의 실시예들에 사용되는 사용자 인터페이스(500)의 상세 레이아웃이 도시되고 있다. 사용자 인터페이스(500)는 본체 센서(210)와, 사용자에게 정보를 표시하기 위한 텍스트 윈도우(510)를 포함할 수 있다. 본체 센서(210)는 존(520-542)의 세트를 포함할 수 있다. 각각의 존 세트는 기호 세트를 사용자에게 제공할 수 있다. 하나의 존(520-528) 세트는 영어의 문자에 대응하며, 그외 존(530-542)은 콘텍스트 또는 사용자 인터페이스(500)가 이용되고 있는 시스템의 아키텍처에 종속하는 그외 기능에 대응할 수 있다. 이러한 그외 기능은 커맨드 기능 또는 메뉴 기능을 포함할 수 있다.
도 6은 영어와 관련된 존(520-528)의 세트를 보다 구체적으로 도시하고 있다. 존(520-528)이 곡선으로 레이아웃될 수 있어, 존(520-528)은 사용자 인터페이스(500)를 이용하고 있는 장치를 잡고 있는 손의 엄지로 작동될 수 있다. 도시하는 실시예에서, 존(520-528)은 오른손잡이가 보다 효율적으로 작동할 수 있도록 배치되어 있다. 그러나, 전술한 바와 같이, 키의 가로 방향은 왼손잡이가 효율적으로 작동할 수 있는 포맷을 비롯한 임의의 원하는 포맷으로 변경될 수 있다. 각각의 존(520-528)은 상측 쌍(610), 중심 쌍(620) 및 하측 쌍(630)으로 그룹지어지는 최대 6개의 문자쌍을 포함한다. 사용자는 존(520-528)을 활성화할 수 있고, 본체 센서(210)는 이 활성을 검출하여 이 활성에 대응하는 메시지를 키스트로크 로직(220)에 전달하고, 이 로직에서는 이들 메시지를 입력 메시지로 변환할 것이다. 이어서, 의미화 로직(240)은 이 입력 메시지를 적절한 문자쌍과 연계시킬 것이다.
예컨대, 중앙 쌍(620)을 선택하기 위하여, 사용자는 원하는 쌍을 갖는 존을 터치하여 해제할 수 있다. 임의의 하측 쌍(630)을 선택하기 위하여, 사용자는 원하는 쌍을 갖는 존을 터치하여 원하는 쌍의 방향에 있는 임의의 존으로 슬라이딩할 수 있으며, 그 반대의 동작은 상측 쌍(610)을 선택하는 데에 적용된다. 이 예를 추가 설명하기 위해서 원하는 문자 쌍을 (s,h)라고 한다. 이 선택은 (g,m)를 포함하는 존(526)을 터치한 다음 쌍 (b,j)까지 슬라이딩하여 움직임으로써 달성될 수 있다. 중요한 것은 이 슬라이딩은 원하는 쌍 (s,h)을 포함하는 존(526) 아래에 있는 임의의 존(520, 524)에서 멈출 수 있다는 점이다. 그래도 의미화 로직(240)은 이 움직임을 원하는 쌍 (s,h)으로 변환할 수 있다.
의미화 로직(240)은 키스트로크 모듈(220) 또는 추가 센서(212)로부터 메시지를 수신한 다음, 이 메시지를 메시지가 수신되는 콘텍스트에 따라 기호의 세트로 또는 커맨드의 세트로 변환한다. 일 특정 실시예에서, 의미화 로직(240)은 키스트로크 로직(220)으로부터 입력 메시지를 수신한 다음, 이것을 콘텍스트에 따라 가능한 기호의 세트로 변환한다. 예컨대, 도 6에 대하여 전술한 사용자 동작은 문자 쌍 (s,h)으로 변환된다. 그리고, 이 변환 결과는 코어 로직(250)으로 전달될 수 있다. 또한, 의미화 로직(240)은 시스템의 콘텍스트에 따라 시스템의 입력 및 출력을 조정하는 책임이 있을 수 있다.
보다 구체적인 실시예에 있어서, 의미화 모듈(240)은 입력 메시지를 기호 또는 커맨드로 변환하는 데에 책임이 있을 수 있다. 이 변환은 콘텍스트 종속적일 수 있는데, 즉 의미화 모듈이 필요로 하는 콘텍스트의 부분을 SemantifyContext라고 할 수 있다. 의미화 모듈(240)은 콘텍스트 (SemantifyContext)에 따른 기호를 나타내는 입력 메시지에 대해, 기호 세트를 포함하는 SymbolMessage로 응답할 수 있다.
입력 메시지가 커맨드를 나타내는 경우에, 커맨드의 고유 식별자를 포함하는 메시지 (CommandMessage)가 출력된다. 이 고유 식별자 정보는 BackSpaceCmd, EndLexiconCmd, ItemSelectionCmd, NextCharCmd 및 PrevCharCmd를 비롯한 원하는 커맨드에 대응하는 값을 가질 수 있다. 입력 메시지가 콘텍스트 (SemantifyContext)에 대하여 어떤 것도 나타내지 않는다면, 어떤 동작도 이루어질 수 없다.
기호 세트를 표시하기 위하여 SymbolMessage를 CommanddMessage에 앞서 보낼 수 있는 경우에, 입력 메시지는 커맨드와 기호 세트 양쪽을 모두 나타낼 수 있다. 또한, 의미화 모듈(240)은 센서(210, 212)의 구성에 책임이 있을 수 있다.
일부 실시예에서, 텍스트 요소(280), 메뉴 요소(282) 또는 사용자 콘텍스트(290)로부터의 메시지는 다음과 같이 취급된다.
SelectItem은 커맨드 식별자로서 ItemSelectionCmd를 그리고 인수로서 SelectItem를 갖는 CommandMessage의 출력을 트리거한다.
최종 EndEdit 메시지가 최종 StartEdit보다 최근의 것이라면, StartEdit의 수신은 EditText 메시지를 트리거한다. 최종 StartEdit 메시지가 최종 EndEdit보다 최근의 것이라면, EndEdit의 수신은 인수 EndLexiconCmd를 갖는 CommandMessage의 코어 로직(250)으로의 출력을 트리거한다.
최종 EndEdit 메시지가 최종 StartEdit보다 최근의 것인 경우 의미화 모 듈(240)이 막 SymbolMessage를 발송하려고 한다면, 의미화 모듈(240)은 SymbolMessage의 발송을 일시 정지하고, 메시지 TextInputQuery를 사용자 콘텍스트(290)에 발송한다. 수신된 다음 메시지가 QueryFlag와 관련되는 EditText라면, 의미화 모듈(240)은 EditText 메시지를 코어 로직(250)에 포워드하고 일시 정지된 SymbolMessage를 발송한다.
SemantifyContext는 (아키텍쳐 구성요소 또는 외부 중 어느 한 곳에서부터) 최종 수신된 메시지와 인수로서 이전의 SemantifyContext를 갖는 호출된 ContextGeneration 함수의 증분 결과일 수 있다. 임의의 2개의 메시지 사이에서 SemantifyContext가 일치하게 된다.
이제 의미화 모듈(240)에 의해 채용된 코어 로직(250)에 대해 설명하면, 도 7은 코어 로직(250)이 채용한 기본 방법론을 나타내고 있다. 코어 로직(250)은 입력 세트를 취득하고(블록 710), 처리 원칙을 적용한 다음(블록 720), 필요하다면 출력을 반환한다(블록 730). 코어 로직(250)은 입력 세트를 취득할 수 있고(블록 710), 이들 입력은 코어 로직(250)에 의해 내부에서 생성될 수 있거나, 본체 센서(210)를 통한 사용자로부터의 것일 수 있다. 또한, 입력은 의미화 모듈(240)로부터 코어 로직(250)에 의해 수신될 수 있다(블록 710). 전술한 바와 같이, 일부 상황에서는 의미화 모듈(240)은 수신한 메시지와, 작업하고 있는 콘텍스트에 따라 메시지 세트를 생성할 수 있다. 의미화 모듈(240)은 이들 메시지를 코어 로직(250)에 전달할 수 있고, 코어 로직에서는 이들 메시지를 입력 세트로서 수신할 수 있다(블록 710). 일부 실시예에서는 이들 입력이 기호 또는 커맨드를 나타내는 메시지일 수 있다. 또한, 이들 메시지는 프리픽스 및 프리픽스에 관련된 기호 시퀀스를 포함할 수 있다.
코어 로직(250)은 이 입력 세트를 수신하고(블록 710), 이들을 특정 원칙 세트에 따라 처리한다(블록 720). 이 처리는 기호, 단어, 임의적인 문자 시퀀스 또는 임의의 조합일 수 있는 제안의 형식화를 포함할 수 있다. 이 제안은 입력의 중의성 해소, 예측 완성이나 예측 결과, 또는 이 2개의 임의의 조합과 연계될 수 있거나, 이들로부터 도출될 수 있다.
코어 로직(250)이 입력 세트를 처리하는데(블록 720) 이용하는 원칙은 언어 모델(260)과 용법 모델(280)을 이용하여 후보 또는 예측 결과의 세트를 생성하고, 이들 후보 또는 예측 결과를 평가하여 제안 세트를 생성하도록 설계될 수 있으며, 그 하나 이상의 제안이 사용자에게 제시될 수 있다. 일 실시예에서, 코어 로직(250)은 평점 시스템을 이용하여 입력을 처리한다(블록 720). 코어 로직이 입력을 수신하는 경우, 그 입력에 프리픽스가 없다면, 하나 이상의 제안이 생성되어 평점 시스템에 따라 평가된다. 그러나, 프리픽스가 있다면, 새로운 입력을 그 프리픽스에 첨부하여 시퀀스를 생성하고 이 시퀀스에 기초하여 하나 이상의 후보를 생성하여 평가하려고 시도한다. 생성되는 후보가 없거나, 생성된 후보가 임의의 임계 평점을 넘지 않으면, 입력을 지정하기 위한 방법이 제공될 수 있고, 후보가 있다면, 후보를 평가하여 예측 결과를 생성하며, 이 평가에 기초하여 제안이 형성되어 사용자에게 제시될 수 있다. 또한, 제안은 원 입력의 중의성 해소라는 점에서 형식화될 수 있다.
소정의 실시예에서는, 코어 로직(250)이 입력에 기초하여 후보를 형식화하고, 하나 이상의 후보로부터 예측 결과를 결정한 다음, 생성된 후보 및 예측 결과의 세트로부터 사용자에게 제시하기 위하여 제안을 형식화할 수 있다.
일부 실시예에서는, 코어 로직(250)이 이용하는 원칙 및 알고리즘은 3개의 카테고리, 즉 추측 원칙, 중의성 해소 원칙, 및 내부 원칙으로 그룹화될 수 있다. 중의성 해소 및 추측 원칙은 코어 로직(250)을 위한 메인 드라이버일 수 있으며, 내부 원칙은 코어 로직(250) 배후에서 제어 기능성과 같은 역할을 할 수 있고, 추측 및 중의성 해소 원칙 세트, 이들 2개의 세트의 평가 또는 이들 원칙 세트로부터의 응답을 이용하는 데에 책임이 있는 기능성을 제공할 수 있다. 또한, 내부 원칙은 사용자에게 제시되는 프리픽스 또는 제안을 작성하는 책임이 있을 수 있다.
이들 내부 원칙은 원하는 기능성과, 원칙이 이용되고 있는 콘텍스트에 따라 중의성 해소 원칙 및 추측 원칙과 함께 작용할 수 있다. 이들 원칙은 시스템의 작동을 다양한 콘텍스트로 기술할 수 있고, 사용자의 희망 또는 내부 상태에 기초하여 채용될 수 있다. 중의성 해소 원칙은 사용자로부터, 즉 의미화 모듈(240)로부터 수신된 입력이 애매한 경우에 또는 적절한 후보가 없는 경우에 작동을 기술할 수 있다. 소정의 실시예에서, 이들 중의성 해소 원칙은 언어 모델(260)만 채용한다. 추측 원칙은 관련 후보를 발견한 경우의 작동을 기술할 수 있고, 다른 실시예에서 언어 모델(260)과 용법 모델(280) 모두를 채용할 수 있다.
일 특정 실시예에서, 코어 로직 모듈(250)은 의미화 모듈(240)로부터 CommandMessage 또는 SymbolMessage를 수신한다. 코어 로직(250)은 원칙 세트에 따 라 그 메시지에 응답한다. 코어 로직(250)의 원칙이 사용자와의 통신을 지시하는 경우에, 의미화 모듈(250)은 사용자와의 인터페이스에 이용된 대응 메시지를 전달하는데 이용된다.
이 실시예에서, 코어 로직(250)의 나머지 원칙은 3가지 방향, 1) 시스템이 입력에 관한 관련 제안을 갖는 경우의 코어 로직(250)의 작동을 기술하는 추측 원칙, 2) 입력이 애매하고, 시스템이 입력에 관하여 관련 제안을 추측할 수 없는 경우에 시스템의 작동 방법을 기술하는 중의성 해소 원칙, 및 3) 중의성 해소 원칙에서 추측을 평가하는데 필요한 몇가지 함수를 포함하는 내부 원칙 하에 편성될 수 있다.
이들 원칙에 대해서는 각각 추가로 후술하기로 한다.
모든 원칙의 공통 변수는 다음과 같다.
CurrentRun 기호 시퀀스
CurrentPropositionSet 데이터 구조에 저장될 수 있는 제안 세트로서, 다음과 같은 코드로 표현될 수 있다.
typedef struct {
Char* run;
Int count:} Proposition;
InputSeqs는 세트 기호의 세트 시퀀스이다.
EditionState는 2개의 값: GuessingState와 UnambiguousState를 가질 수 있다.
FinalSeq는 기호의 시퀀스 또는 Undefined이다.
CurrentSym는 정수이다.
코어 로직(250)은 EditText 메시지를 수신하는 경우, 다음과 같이 응답한다.
StartEdit 메시지를 텍스트 요소에 발송한다.
EditText 프리픽스가 empty라면
CurrentPropositionSet는 empty set로 설정된다;
InputSeqs는 empty set로 설정된다;
원칙 ShowPropositions이 평가된다;
그렇지 않다면,
NewPrefix가 인수 EditText 프리픽스에 의해 평가된다;
CurrentPropositionSet가 empty라면
EditionState는 UnambiguousState로 설정된다;
InitUnambiguous가 평가된다;
그렇지 않다면,
원칙 ShowPropositions가 평가된다;
이 알고리즘은 새로운 입력마다 코어 로직(250)의 상태를 초기화한다. 초기화는 프리픽스가 없는 경우에는 간단한다. 프리픽스가 제공되는 경우, 알고리즘은 언어 모델(260)을 이용하여, 가능한 프리픽스의 완성이 되는 최장 부분 스트링을 룩업하려고 시도하도록 설계된다. 언어 모델(260)이 그러한 부분 스트링을 포함하지 않는다면, 알고리즘은 명확한 입력 모드로 전환된다.
i. 추측 원칙(Guessing Rules)
추측 원칙은 EditionState=GuessingState인 경우에 적용된다. 이 장의 원칙은 고유한 상수 Add를 갖는다. 코어 로직(250)에 도착하는 메시지 타입마다 원칙이 있다.
SymbolMessage는 기호 리스트로서 S=(Si,…,St)를 가지며, t>l이다.
InputSeqs를 InputSeqs와 (S)의 연결로 설정한다
CurrentRun가 empty가 아니라면, newPrefix (CurrentRun)를 평가하고 CurrentRun를 empty로 설정한다
CurrentPropositionSet가 empty라면
EditionState는 UnambiguousState로 설정된다;
InitUnambiguous가 평가된다;
그렇지 않다면
CurrentPropositionSet가 empty라면:
L은 타입 노드 {L1,…,Ln}의 비일치 요소의 최대 세트이고, 여기서 각 i는 {l,…,n}의 부분이다:
Li.c=Sj이고, j는 {1,…,t}의 부분이다
IsInSubtree(Li.location,root)
P는 proposition (Pi,…,Pm)의 최소 세트이며, 각 i는 {l,…,m}이다:
Pi.run=(Li.c) 및 Pi.count=Li.count
PF=FilterProposition(P)
PF가 empty라면,
EditionState를 UnambiguousState로 설정한다
InitUnambiguous를 평가한다
그렇지 않다면:
CurrentPropositionSet를 PF로 설정한다
ShowPropositions를 평가한다
인수로서 click을 갖는 UserNotify 메시지를 출력한다.
그렇지 않다면:
CurrentProposiontSet가 세트 {CP1,…,CPm}이다.
TempLocationSet는 비일치 노드 요소 {(L1,X1,Y1,Count1),…,(Ln,Xn,Yn,Countn)}, 여기서 각 i는 {l,…,n}의 부분이다:
Li.c=Sj, 여기서 j는 {l,…,t}의 부분이다
Yi는 CPj, 여기서 j는 {l,m}이다
Xi는 노드 (N1,…,Nm)의 최장 시퀀스, 여기서:
(N1.c,…,Nm.c)는 Yi.run의 서픽스 낫 널(suffix not null)을 형성한다
IsInSubtree(N1,root)
IsInSubtree(Li,Nm)
Counti=ExtendProposition(Li,CPj.count)
PF는 proposition(PFP1,…,PFPn)의 시퀀스, 여기서 각 i는 {1,…,n}이다
PFPi.run는 Yi.run와 Li.c을 연결한 것이다
PF2=FilterProposition(PF)
PF2가 empty라면:
EditionState를 UnambiguousState로 설정한다
InitUnambiguous를 평가한다
그렇지 않으면
CurrentPropositionSet는 세트 PF2, 여기서 각 i는 {1,…,n}이다:
ShowPropositions를 평가한다
인수로서 클릭을 갖는 UserNotify 메시지를 출력한다
주의 : SymbolMessage를 위한 이들 원칙은 사용자 입력을 처리할 수 있고, 사용자 입력이 애매한지의 여부에 관계없이 최종 EditText 메시지 이후에 수신한 모든 정보에 기초하여 사용자가 입력하고자 하는 기호 시퀀스를 발견하려고 시도할 수 있다.
CommandMessage
메시지에 포함된 커맨드 식별자에 따라, 다음의 동작이 취해진다:
BackSpaceCmd
InputSeqs이 empty 시퀀스라면 EditStop 메시지가 UseContext로 발송된다
그렇지 않다면,
Replay는 입력 시퀀스 (Si,…,Sn)에 따른 시퀀스 (EditText(),SymbolMessage(Si),…,SymbolMessage(Sn2))이다. CurrentPropositionSet 및 InputSeqs는 empty 세트로 설정된다. 코어 로직은 인수가 SymbolMessage인 Replay의 요소를 차례로 그 자신에게만 발송하고 그 자신이 다른 모듈에 메시지를 출력하는 것을 방지한다. 결국 SymbolMessage(Sn -1)가 발송된다.
주의 : 이들 원칙은 코어 로직(250)을 최종 미폐기된 SymbolMessage가 발생하기 전의 상태로 복귀하게 할 수 있다.
EndLexiconCmd
CurrentRun가 Add와 같으면,
EditionState를 UnambiguousState로 설정한다
InitUnambiguous를 평가한다
그렇지 않으면
CurrentRun가 empty이고 CurrentPropositionSet가 폼 (P,…)에 속하면 CurrentRun를 P.run로 설정한다
인수 CurrentRun를 갖는 SubstituteText를 발송한다
EditEnd 메시지는 사용자 콘텍스트에 그리고 Semantization 모듈에 발송된다
인수로서 CurrentRun를 갖는 StoreWord 원칙을 평가한다
주의 : 사용자가 메뉴에서 제안 (Add)을 선택하였다면, 이 원칙은 코어 로직(250) 원칙을 중의성 해소 모듈로 전환하며, 그렇지 않다면 이 원칙은 환경을 정화하고 사용자에 의한 최종 StartEdit 이후에 구성된 기호 시퀀스를 고려한다.
ItemSelectionCmd
메뉴에서 강조 처리된 아이템이 커맨드 Add이면:
CurrentRun을 Add로 설정한다
인수 P.c를 갖는 SubstituteText를 발송하고, CurrentPropositionSet는 (P…)이다
그렇지 않으면
CurrentRun를 PropositionSelect의 인수로 설정한다
CurrentRun를 갖는 SubstituteText 메시지를 텍스트 필드로 발송한다
ShowRules를 평가한다
주의 : 사용자는 TextElement에 표시하기를 원하는 입력으로서 제안 중 하나를 선택할 수 있다.
중의성 해소 원칙(Unambiguous Rules)
EditionState=UnambiguousState인 경우에 추측 원칙 하에서 인덱싱된 원칙이 적용된다.
InitUnambiguous
는 UserNotification(Error)를 출력한다
CurrentSym를 1로 설정한다
InputSeqs는 폼 (Sl,…,Sn)를 갖고, FinalSeq를 n개 요소의 시퀀스로 설정한다
Undefined
ShowUnambiguous를 평가한다
StartAmbiguousInput를 의미화 모듈로 발송한다
SymbolMessage
는 시퀀스 S를 인수로서 갖는다
InputSeqs는 폼 (Si,…,Sn)을 갖고, InputSeqs를 시퀀스 (Si,…,Sn,S)로 설정한다
FinalSeq는 폼 (Fl,…,Fn)을 갖고, FinalSeq를 시퀀스 (Fl,…,Fn,Undefined)로 설정한다
ShowUnambiguous를 평가한다
CommandMessage
BackSpaceCmd
InputSeqs이 폼 (S)라면:
인수로서 empty 시퀀스를 갖는 SubstituteText를 발송한다.
EditEnd 메시지를 사용자 콘텍스트에 그리고 의미화 모듈에 발송한다.
그렇지 않으면:
InputSeqs은 폼 (S1,…,Sn)이고 InputSeqs를 (S1,…,Sn -1)로 설정한다
FinalSeq은 폼 (F1,…,Fn)이고 FinalSeq를 (Fl,…,Fn)로 설정한다
EndLexiconCmd
는 CurrentRun를 갖는 SubstituteText를 텍스트 필드로 발송한다
EditEnd 메시지는 사용자 콘텍스트에 그리고 의미화 모듈에 발송된다.
인수로서 CurrentRun를 갖는 StoreWord 원칙을 평가한다
ItemSelectionCmd
는 인수 A를 갖는다
A가 Done이면,
CurrentRun를 갖는 SubstituteText 메시지를 텍스트 필드에 발송한다
EditEnd 메시지는 사용자 콘텍스트에 그리고 의미화 모듈에 발송된다
인수로서 CurrentRun를 갖는 StoreWord 원칙을 평가한다
그렇지 않으면:
폼 (Fl,…,FCurrentsym-1,FCurrentsym,FCurrentSym+1,…,Fn)이 (F1,…,FCurrentSym-1,A,FCurrentSym+1,…,Fn)로 설정된다.
CurrentSym를 CurrentSym+1로 설정한다
ShowUnambiguous를 평가한다
PrevCharCmd
CurrentSym=1이면 UserNotify (Error)를 출력, 그렇지 않다면 CurrentSym=CurrenSym-1
NextCharCmd
CurrentSym note가 InputSeq의 길이와 같으면, UserNotify (Error)를 출력, 그렇지 않으면, CurrentSym=CurrenSym+1
iii 내부 원칙(Internal Rules)
이 장에 기술하는 원칙은 "중의성 해소 원칙" 및 "추측 원칙"을 평가할 때에 명백하게 호출된다.
ShowUnambiguous
InputSeq는 폼 ((S1,1,…,S1,M(1)),…,(Sn,1,…,Sn,M(n)))이고, 여기서 M(x)는 InputSeq의 x번째 요소의 길이를 넘겨주는 함수이다. FinalSeq는 폼 (Fl,…,Fn)이고, 여기서 각 Fi는 Undefined이거나, (S1 ,1,…,S1 ,M(1))의 요소 중 하나이다. C는 시퀀스 (Cl,…,Cn) 중 하나이고, 여기서 i는 {1,…,n}이다:
Fi≠ Undefined이면 Ci=Fi 그렇지 않으면 Ci는 (Si ,1,…,Si ,M(1)),
Quotationn가 최대:
Ci=L.c이면, 여기서 IsInSubtree(L,root) Quotationl=L.count 그렇지 않으면 Quotationl=0
I는 {2,…,n}, Quotationn=Accumulate(Quotationi -1,L.count) 여기서 L=NodeFromPath (Ci -j,…,Ci), J는 최대
CurrentRun를 c로 설정한다
인수 (SCurrentSym ,1,…,SCurrenSym ,M(l),,Done)를 갖는 MenuSet 메시지를 발송한다
AccumulateInvariant는 임플리멘테이션(implementation) 종속 방법으로 정의될 수 있으며, 본 명세서를 이해한 후에 당업자에게 명백할 것이다.
NewPrefix
는 인수로서 s = (C1…Cr)를 갖는다
InputSeqs를 시퀀스 ({C1},…,{Cr})로 설정
P는 다음과 같은 제안이다:
p.run=s, p.count=Invariant
최장 (N1,…,Nm) 시퀀스
여기서:
IsInSubtree (Ni,Ni+1), i는 [l,m-1]이다
Nm=root
각 Ni에서 i는 [l,m-1], Ni.c=Cr-m+i
P가 존재하면
CurrenPropositionSet를 FilterProposition ({P})로 설정한다
그렇지 않으면
CurrentPropositionSet를 empty으로 설정한다
ShowPropositions 원칙
CurrentPropositionSet는 폼 {P1,…,Pn}이다.
UP는 세트이고, 여기서 i는 {1,…,n}이다:
시퀀스 PredA ((PrAl,CAl,SymAl),…,(PrAm,CAm,SymAm))는 GetSugestions (Pi.run)과 같다
시퀀스 PredB는 최단 시퀀스 ((PrB1,CB1,SymB1),…,(PrBk,CBk,SymBk)), 각 j는 {l,…,k-1}, CBj≥CBj +1
각 j는 {l,…,m}, Relevant(PrAj) Adjust(PrAj,CAj,SymAj)가 PredB의 부분이면
U는 GetUNodeFromPath (Pi.run)이다
U가 UnknownPath이면
((Pi.run,Pi.c))는 UP의 부분이다
그렇지 않으면
Adjust((Pi.run,Pi.c,U),(PrBl,CB1,SymBi),…,(PrBk,CBk,SymBl))가 UP의 부분이 다
메뉴가 트리를 보여줄 수 있다면 인수 FilterSortExtentions(U)를 갖는 SetMenu 메시지를 발송한다, 그렇지 않으면:
U는 폼 (((DS,DC)((PS,PC)((SS,SC)…)…)…)
U2는 DC,PC,SC를 따라 정렬된 U로부터 모든 요소 (DS,DC),(PS,PC) 및 (SS,SC)로 이루어진 최단 리스트이다
인수 U2를 갖는 SetMenu message를 발송한다
주의 : 이들 원칙은 사용자 입력에 대한 중의성 해소/예측을 위해 현재 평가되는 모든 관련 제안을 사용자에게 보여줄 수 있다.
Adjust는 임플리멘테이션 종속적이며 예측 결과의 가능성을 중의성 해소 제안의 가능성과 관련시킬 수 있다. 이것은 사용자 입력이 대체로 최소이게 한다.
ExtendProposition FilterProposition는 임플리멘테이션 종속적일 수 있는 함수이다. FilterProposition은 사용자에게 보여지는 제안을 결정하는 임계 평점 레벨을 조절할 수 있다. 임계치가 높으면 사용자에게 보여지는 제안에서의 비상관 수를 낮다.
StoreWord도 역시 임플리멘테이션 종속적이며, 문자 세트에 대해 유지하는 위치일 수 있으며, 언어 모델(LanguageModel) 및 용법 모델(UsageModel) 구조에 할당된 리소스양을 관리할 수 있다. 또한, 사용자의 행동에 맞게 모델 적응을 제어하여 차후 이용을 위해 예측/중의성 해소를 개선할 수 있다.
이제 도 8을 참조하면, 코어 로직(250)이 언어 모델(260)을 이용할 수 있는 방법의 일례가 도시되어 있다. 언어 모델(260)은 J.G. Cleary 및 J.H. Witten의 논문 "Data Compression Using Adaptive Coding and Partial String Matching"[IEEE Communications journal(Clearyl)에서 1984년 4월 4일자로 발행된 Volume Com-32]에 개시된 모델의 확장형 및 개선형일 수 있으며, 이 논문은 여기에서의 참조에 의해 본 명세서에 그 전체가 포함된다. 코어 로직(250)은 언어 모델(260)을 채용하여 프리픽스 또는 입력을 수신하고(블록 810), 후보 세트를 형식화하며(블록 820), 그 후보 세트를 정렬할 수 있다(블록 830). 후보 로직(250)은 프리픽스 및 입력을 수신할 수 있다. 프리픽스는 빈 세트를 포함한 임의의 긴 기호 세트일 수 있으며, 입력은 의미화 모듈(240)에 대하여 기술된 타입의 입력 메시지일 수 있다. 그리고 후보 세트는 프리픽스와 입력에 기초하여 계산된다(블록 820). 프리픽스가 비어 있다면, 입력에만 기초하여 후보가 계산될 수 있다. 그러나, 프리픽스가 비어 있지 않다면, 코어 로직(250)은 프리픽스와 관련된 스트링 세트를 룩업하고 그 프리픽스에 기초하여 후보를 생성한다(블록 820).
일부 실시예에서는 코어 로직(250)이 언어 모델(260)을 이용하여 이들 후보를 형식화할 수 있으며(블록 820), 언어 모델은 긴 부분 스트링 및 관련 평점을 임의대로 저장하기 위해 트리 구조를 채용할 수 있다. 일 실시예에서는, 코어 로직(250)은 프리픽스와 관련된 언어 모델(260)에서 최장 스트링을 찾는다. 관련 실시예에서, 코어 로직(250)은 언어 모델(260)을 이용하여 후보 리스트를 작성할 수 있는데, 이 리스트는 임플리멘테이션에 따라 단순 리스트 또는 내포 리스트일 수 있다. 코어 로직은 언어 모델(260)에서 구현된 트리의 각 노드와 관련된 평점에 기 초하여 후보와 연계시키는 평점을 결정할 수 있다. 이들 평점은 차례로 개연적 모델에 기초할 수 있다.
당업자라면 각종 알고리즘이 평점을 계산하여 후보의 평점을 매기는 데에 이용될 수 있음을 이해할 수 있을 것이다. 예컨대, 사용자가 단어 "test"를 입력하기를 원한다고 하자. 도 6에서 설명한 레이아웃을 이용하여, 사용자는 쌍 (t,z)을 선택할 수 있고, 코어 로직(250)은 "t"의 가능성과 "z"의 가능성을 계산할 수 있다. 이어서, 사용자는 쌍 (e,f)을 선택할 것이다. 코어 로직(250)은 언어 모델을 이용하여 이전 후보 (t,z) 세트과 관련된 각 문자에 이어 문자 "e"의 평점과 "f"의 평점을 계산하고, 그것과 최초 문자 쌍 (t,z)에서의 각 문자의 가능성을 곱한다. 이런 식으로 2개 문자의 각 시퀀스의 가능성을 계산할 수 있다.
일 특정 실시예에서, 이런 타입의 언어 모델(260)을 저장하기 위한 구조 및 입력을 처리하고 가능성을 계산하기 위한 관련 로직은 다음과 같이 구현될 수 있다.
언어 모델(260)은 다음과 같이 나타내는 타입 LanguageModel의 구조에 포함될 수 있다.
Typdef struct {
Char c;
Int counter;
NodeStruct* next;
NodeStruct* subtree;} NodeStruct
Typedef NodeStruct* Node;
Node root;
노드 구조는 실시예에서 [Clearyl]의 구조, 즉 모듈로 신택스(modulo the syntax)일 수 있다. Root는 언어 모델(260)에 대한 코어 로직의 입력점일 수 있다.
다음의 특성 및 알고리즘은 언어 모델(260)을 지원하는 구조에 대하여 정의될 수 있다.
IsInSubtree(Node N2,Node N1)
N1.subtree가 무효 기준이면
IsInSubtree(N2,N1)는 거짓이다
그렇지 않으면
N2=N1.subtree
IsInSubtree(N2,N1)는 참이다
그렇지 않으면
IsInSubtree(N2,N1)=IsNeighbor(N2,N1.subtree)
주의 : 이 특성은 N2가 N1의 자식일 때 참이고, 다른 경우에는 거짓이다.
IsNeighbor(Node N2,Node N1)
N1.next가 노드로의 무효 기준이면 IsNeighbor(N2,N1)는 거짓이다
그렇지 않으면
N2=Nl.next
IsNeighbor(N2,N1)는 참이다
그렇지 않으면
IsNeighbor(N2,N1)=IsNeighbor(N2,N1.next)
주의 : 이 특성은 N2가 트리에서 N1와 동등 레벨인 경우에 참이고 다른 경우에는 거짓이다.
NodeFromPath((Sl,…,Sn))
각 i는 {1,…,n}, Si는 기호이다
N은 노드 (n1,…,Nn)의 시퀀스, 여기서 i는 {1,…,n}, Ni.c=Si
i는 {l,…,n-1}, IsInSubtree(Ni +1,Ni)는 참이다
IsInSubtree(N1,root)
N이 NodeFromPath((S1,…,Sn))에 존재하면 값을 Nn로 설정, 그렇지 않으면, 값을 UnknownPath로 설정한다
도 9는 코어 로직(250)이 용법 모델(280)을 이용할 수 있는 방법의 일 실시예를 도시하고 있다. 코어 로직(250)은 용법 모델(280)을 이용하여 스트링 세트를 수신하고(블록 910), 예측 결과 세트를 형식화하며(블록 920), 예측 결과의 세트를 정렬할 수 있다(블록 930). 코어 로직(250)은 스트링 세트를 구성할 수 있는 기호의 세트를 수신할 수 있으며(블록 910), 이들 스트링은 사용자로부터의 입력과 프리픽스일 수 있다. 일부 실시예에서는 이들 기호가 언어 모델(260)을 이용하여 코어 로직에 의해 어셈블된, 즉 코어 로직에 반환된 후보 세트로부터 코어 로직(250)에 의해 도출 또는 추출될 수 있다.
그리고, 이 스트링 세트는 스트링 세트로부터의 스트링에 기초하여 예측 결과 세트를 형식화하는데(블록 820) 이용될 수 있다. 용법 모델(280)은 가능한 완성의 통계적 정렬에 기초한 스트링에 대해 일련의 가능한 완성을 결정할 수 있다.
일 실시예에서, 용법 모델(280)은 트리 구조를 이용하여 단어를 표현할 수 있으며, 트리의 각 노드가 문자를 포함하게 된다. 단어의 종료를 지정할 수 있는 각 노드가 구별될 수 있고, 평점은 그러한 단말 노드와 연계될 수 있다. 당업자라면 각종 평점 시스템을 이용하여 평점을 지정할 수 있음을 이해할 것이다.
상기 예를 계속하여, 스트링 "te"가 용법 모델(280)에 수신된다고 하자. 도 10은 용법 모델(280)이 스트링을 완성하기 위해 이용할 수 있는 트리의 일 표현을 도시하고 있다. 스트링 "te"는 "te"로 시작하는 단어의 트리 기반의 표현예(1000)에 인덱스로서 이용될 수 있으며, 이 트리(1000)는 이들 노드가 스트링 "te"에 대해 가능한 완성을 제공하는 인디시아(indicia)를 포함할 수 있는 단말 노드(1010, 1020, 1030, 1040)를 가질 수 있다. 이 인디시아는 평점 관련 단말 노드(1010, 1020, 1030, 1040) 또는 일부 실시예에서는 부울 값일 수 있다. 이 평점은 동일한 스트링을 완성할 수 있는 동일한 깊이의 노드 수에 기초할 수 있다. 또한, 평점은 같은 가지에 있는 얼마나 많은 노드가 스트링에 대한 완성이 아닌가에 기초할 수 있다.
노드와 관련된 평점에 기초하여, 노드는 정렬될 수 있고(블록 830), 트리(1000)를 통해 최고(또는 최하) 순번을 가진 노드로의 경로에서 각각의 노드와 연계된 문자의 시퀀스는 반환될 수 있다. 도 10을 참조하면, 노드(1020)가 최고의 평점을 갖는다면, 문자 시퀀스 "tested"는 반환될 수 있다. 다른 실시예에서, 하위 트리를 통과하는 경로에서의 단말 노드와 연계된 각 문자 시퀀스는 연계된 단말 노드의 평점과 함께 반환될 수 있다.
마찬가지로, 예측 결과의 동의어도 그 연계 평점과 함께 반환될 수 있다. 예컨대, 도 10에서 노드(1020)가 최고 평점이라면, 문자 시퀀스 "tested"가 반환될 수 있다. 또한, 하나 이상의 동의어가 반환될 수 있다. 이들 동의어는 연계 평점에 기초하여 결정될 수 있고, 이들 연계 평점과 함께 또는 없이 반환될 수 있다. 특정 예측 결과와 연계된 동의어는 예측 결과에 대응하는 단말 노드에 저장될 수 있다. 이 예를 계속해서 설명하면, 예측 결과 "tested"에 대응하는 단말 노드(1020)는 "tester", "testes", "tesla" 등을 비롯한 "tested"의 각종 동의어를 저장할 수 있다. 이들 "tested"의 동의어는 예측 결과 "tested"에 대응하는 기호의 시퀀스와 함께 반환될 수 있다. 일 특정 실시예에서, 이러한 타입의 용법 모델(280)을 저장하기 위한 구조와, 입력을 처리하고 평점 또는 가능성을 계산하기 위한 연계 로직이 다음과 같이 구현될 수 있다.
Typedef enum {true, false} Boolean;
Typedef struct{
Char* s;
Int count;
} SymListNode
Typedef struct {
Char c;
Unode[] sons;
Boolean terminal;
Int heads;
Int count;
SymListNode[] sym;
} Unode
uNode* Uroot;
Uroot는 용법 모델(280)로의 코어 로직(250)을 위한 입력점일 수 있다. 용법 모델(280)에 대하여 다음의 특성이 정의될 수 있다.
IsSon(U1:UPNode,U2:UPNode)
IsSon(Ul,U2)는 U1가 U2.sons의 부분이면 참, 그렇지 않으면 거짓이다
주의 : IsSon는 U1가 U2의 직계 자식인지를 나타낸다.
GetUNodeFromPath((C1,…,CN))
시퀀스 (UP1,…,UPN):
IsSon(UP1,URoot)는 참
각 i는 {l,…,n-1}, IsSon(UPi +1,UPi)는 참이다
각 i는 {1,…,n}, UPi.c=Ci
UPn가 GetUNodeFromPath((C1,…,Cn))에 존재하면, 값은 UPn, 그렇지 않으면 값은 UnknownPath이다
주의 : GetUpFromPath는 인수가 존재한다면 인수로서 주어진 시퀀스와 연계된 용법 모델에 UNode를 반환하고, 그렇지 않으면 상수 UnknownPath가 반환된다.
GetSuggestions(C)
C는 기호 시퀀스이다
UP는 GetUPFromPath(C)의 결과이다
UPS는 UPNodes (UPS1,…,UPSn)의 최소 세트이며, 여기서 각 i는 {1,…,n}:
시퀀스 (T1,…,Tq)가 존재하고, 여기서:
T1는 UP이다
Tq는 UPSi q>1이다
각 j는 {1,…,q-1}이다
IsSon(Tj +1,Tj)
UPSi.terminal는 참이다
S는 시퀀스 ((S1,Count1,Sym1),…,(Sn,Countn,Symn)이며, 여기서 각 i는 {1,…,n}이다: UPSx=GetUPFromPath(Si), UPSx.count=Count 및 Symj=UPSx.sym
GetSugestion(C) 값은 S이다
주의 : GetSuggestions는 단어와 그것의 주어진 프리픽스의 동의어를 검색한다. 각각의 단어와 동의어는 용법 모델(280)에서의 이용 빈도를 나타내는 평점과 연계된다.
도 7을 참조하면, 코어 로직은 전술한 입력의 처리(블록 720)에 기초하여 출력을 형식화할 수 있다(블록 730). 이 출력은 문자 시퀀스 또는 메뉴 옵션 세트를 갖는 문자 시퀀스일 수 있다. 이어서, 이 출력(블록 730)은 추가 삽입을 위해 사용자에게 제시될 수 있다. 일 실시예에서, 코어 로직(250)은 형식화된 출력(블록 730)을 사용자에게 제안으로서 제시하기 위해 의미화 모듈(240)과 상호 작용할 수 있다.
기술한 테이블, 필드, 또는 단계 모두가 반드시 필요하지 않고, 그 테이블, 필드 또는 단계가 필요하지 않을 수 있으며, 추가 테이블, 필드 또는 단계가 설명한 것 외에 부가될 수도 있다. 또한, 각각의 동작의 나열 순서는 그 동작이 수행되는 순서일 필요는 없다. 본 명세서를 이해한 후, 당업자라면 어떤 테이블, 필드 및 정렬이 임의의 특정 목적에 최적인지 결정할 수 있을 것이다.
전술한 설명에 있어서, 본 발명은 특정 실시예를 참조하여 기재되었다. 그러나, 당업자라면 이하의 특허청구범위에서 제시되는 본 발명의 범주에서 벗어나는 일없이 다양한 변형 및 변화가 가능할 수 있음을 이해할 것이다. 따라서, 명세서 및 도면은 제한적인 것이 아니라 예시적인 것으로 간주되어야 하며, 모든 그러한 변형은 본 발명의 범주 내에 포함되는 것으로 한다.
장점, 다른 이점 및 문제 해결 방법을 특정 실시예를 참조하여 전술하였다. 그러나, 그러한 장점, 다른 이점, 문제 해결 방법, 및 임의의 장점, 이점 또는 해법을 발생하게 하거나 보다 분명해 지게 할 수 있는 임의의 구성 요소는 특허청구범위의 일부 또는 전부의 결정적, 필요한 또는 본질적 특징 또는 구성요소로서 해석되어서는 안된다.

Claims (24)

  1. 데이터 입력을 위한 인터페이스 방법으로서,
    상기 인터페이스에 대한 입력을 검출하고 - 상기 입력을 검출하는 것은 존(zone) 세트 중 제1 존에서 누름(press)을 검출하는 것을 포함하는 것이고, 상기 존 세트 중 적어도 하나의 존은 상기 존 세트 중 적어도 다른 하나의 존과 접촉(contiguous)하지 않으며, 상기 존 세트 중 적어도 하나의 존은 상기 존 세트 중 적어도 다른 하나의 존과 형태가 상이한 것임 - ;
    상기 존 세트 중 제2 존에서 누름 해제(release)를 검출하고 상기 누름과 누름 해제 사이의 움직임을 검출하며 - 상기 움직임을 검출하는 것은 상기 제1 존에서의 누름과 상기 제2 존에서의 누름 해제 사이에서 상기 존 세트 중 하나 이상의 존에 진입(entering) 또는 이탈(leaving)하는 것을 검출하는 것을 더 포함하고, 상기 제1 존에서의 누름과 상기 제2 존에서의 누름 해제 사이에서 상기 인터페이스와의 접촉(contact)이 유지되는 것임 - ;
    상기 제1 존과 연계된 내용적 의미(semantic meaning)의 세트에 기초하여 상기 내용적 의미 - 상기 내용적 의미는 상기 제2 존에 기초하여 상기 제1 존과 연계된 상기 내용적 의미의 세트로부터 선택되는 것임 - 를 상기 입력과 연계시키는 것
    을 포함하는 데이터 입력 인터페이스 방법.
  2. 제1항에 있어서, 상기 내용적 의미를 상기 입력과 연계시키는 것은,
    상기 존 세트 각각을 선택 존 세트 - 상기 선택 존 세트 각각은 상기 제1 존과 연계된 상기 내용적 의미의 세트 중 대응되는 하나의 내용적 의미와 연계된 것임 - 중 하나의 선택 존으로 그룹화하고;
    상기 선택 존 세트 중 어느 것이 상기 제2 존과 연계된 것인지를 결정하는 것
    을 포함하는 것인 데이터 입력 인터페이스 방법.
  3. 제2항에 있어서, 상기 내용적 의미의 세트 각각은 상기 제1 존과 함께 상기 인터페이스상에서 디스플레이되는 것이고, 상기 내용적 의미의 세트 각각은 상기 제1 존의 대응되는 위치에서 디스플레이되며, 상기 선택 존 세트 각각은 상기 대응되는 위치 중 하나의 위치에 대응되는 것인 데이터 입력 인터페이스 방법.
  4. 제1항에 있어서, 상기 존 세트는 키 사이(interkey) 존 세트 및 키(key) 존 세트를 포함하는 것이고, 어떠한 2개의 키 존도 접촉하지 않으며, 각각의 키 존은 적어도 하나의 키 사이 존과 접촉하는 것인 데이터 입력 인터페이스 방법.
  5. 제4항에 있어서, 상기 존 세트는 행(row) 세트로 배열되는 것인 데이터 입력 인터페이스 방법.
  6. 제5항에 있어서, 상기 행 세트는 적어도 하나의 동심 곡선(concentric curve)을 형성하는 것인 데이터 입력 인터페이스 방법.
  7. 제6항에 있어서, 각각의 상기 행은 각 종단에서 키 존을 갖고, 상기 행의 각 키 존 사이에는 키 사이 존이 있는 것인 데이터 입력 인터페이스 방법.
  8. 제7항에 있어서, 각각의 상기 키 사이 존은 적어도 2개의 인접 키 존이 접촉하지 않도록 상기 적어도 2개의 인접 키 존 사이에 개재되는 것인 데이터 입력 인터페이스 방법.
  9. 제8항에 있어서, 각각의 상기 키 사이 존의 모든 부분은 그 부분이 접촉하는 적어도 2개의 인접 키 존 중 하나와 연계된 것인 데이터 입력 인터페이스 방법.
  10. 제9항에 있어서, 상기 연계는 상기 움직임에 기초한 것인 데이터 입력 인터페이스 방법.
  11. 제1항에 있어서, 최초 누름에 대응되는 상기 제1 존과 상기 누름 해제에 대응되는 상기 제2 존을 포함하는 개별 메시지를 형성하는 것을 더 포함하는 데이터 입력 인터페이스 방법.
  12. 제11항에 있어서, 상기 개별 메시지에 기초하여 상기 내용적 의미를 연계시키는 것인 데이터 입력 인터페이스 방법.
  13. 데이터 입력을 위한 인터페이스 시스템으로서,
    존(zone) 세트 - 상기 존 세트 중 적어도 하나의 존은 상기 존 세트 중 적어도 다른 하나의 존과 접촉하지 않는 것임 - 를 갖는 센서;
    프로세서; 및
    메모리 내의 상기 프로세서 실행가능 명령들을 위한 로직
    을 포함하고,
    상기 센서는,
    상기 인터페이스에 대한 입력을 검출하고 - 상기 입력을 검출하는 것은 존(zone) 세트 중 제1 존에서 누름(press)을 검출하는 것을 포함하는 것임 -,
    상기 존 세트 중 제2 존에서 누름 해제(release)를 검출하고 상기 누름과 누름 해제 사이의 움직임을 검출하도록 - 상기 움직임을 검출하는 것은 상기 제1 존에서의 누름과 상기 제2 존에서의 누름 해제 사이에서 상기 존 세트 중 하나 이상의 존에 진입(entering) 또는 이탈(leaving)하는 것을 검출하는 것을 더 포함하고, 상기 제1 존에서의 누름과 상기 제2 존에서의 누름 해제 사이에서 상기 인터페이스와의 접촉(contact)이 유지되는 것임 -
    동작하는 것이고,
    상기 로직은,
    내용적 의미(semantic meaning)의 세트에 기초하여 상기 내용적 의미 - 상기 내용적 의미는 상기 제2 존에 기초하여 상기 제1 존과 연계된 상기 내용적 의미의 세트로부터 선택되는 것임 - 를 상기 입력과 연계시키도록
    동작하는 것인 데이터 입력 인터페이스 시스템.
  14. 제13항에 있어서, 상기 내용적 의미를 상기 입력과 연계시키는 것은,
    상기 존 세트 각각을 선택 존 세트 - 상기 선택 존 세트 각각은 상기 제1 존과 연계된 상기 내용적 의미의 세트 중 대응되는 하나의 내용적 의미와 연계된 것임 - 중 하나의 선택 존으로 그룹화하고;
    상기 선택 존 세트 중 어느 것이 상기 제2 존과 연계된 것인지를 결정하는 것
    을 포함하는 것인 데이터 입력 인터페이스 시스템.
  15. 제14항에 있어서, 상기 내용적 의미의 세트 각각은 상기 제1 존과 함께 상기 인터페이스상에서 디스플레이되는 것이고, 상기 내용적 의미의 세트 각각은 상기 제1 존의 대응되는 위치에서 디스플레이되며, 상기 선택 존 세트 각각은 상기 대응되는 위치 중 하나의 위치에 대응되는 것인 데이터 입력 인터페이스 시스템.
  16. 제13항에 있어서, 상기 존 세트는 키 사이(interkey) 존 세트 및 키(key) 존 세트를 포함하는 것이고, 어떠한 2개의 키 존도 접촉하지 않으며, 각각의 키 존은 적어도 하나의 키 사이 존과 접촉하는 것인 데이터 입력 인터페이스 시스템.
  17. 제16항에 있어서, 상기 존 세트는 행(row) 세트로 배열되는 것인 데이터 입력 인터페이스 시스템.
  18. 제17항에 있어서, 상기 행 세트는 적어도 하나의 동심 곡선(concentric curve)을 형성하는 것인 데이터 입력 인터페이스 시스템.
  19. 제18항에 있어서, 각각의 상기 행은 각 종단에서 키 존을 갖고, 상기 행의 각 키 존 사이에는 키 사이 존이 있는 것인 데이터 입력 인터페이스 시스템.
  20. 제19항에 있어서, 각각의 상기 키 사이 존은 적어도 2개의 인접 키 존이 접촉하지 않도록 상기 적어도 2개의 인접 키 존 사이에 개재되는 것인 데이터 입력 인터페이스 시스템.
  21. 제20항에 있어서, 각각의 상기 키 사이 존의 모든 부분은 그 부분이 접촉하는 적어도 2개의 인접 키 존 중 하나와 연계된 것인 데이터 입력 인터페이스 시스템.
  22. 제21항에 있어서, 상기 연계는 상기 움직임에 기초한 것인 데이터 입력 인터페이스 시스템.
  23. 제13항에 있어서, 상기 로직은 최초 누름에 대응되는 상기 제1 존과 상기 누름 해제에 대응되는 상기 제2 존을 포함하는 개별 메시지를 형성하도록 동작하는 것인 데이터 입력 인터페이스 시스템.
  24. 제23항에 있어서, 상기 로직은 상기 내용적 의미를 상기 개별 메시지와 연계시키도록 동작하는 것인 데이터 입력 인터페이스 시스템.
KR1020067021095A 2004-03-12 2005-03-11 데이터 입력 인터페이스 장치, 방법 및 시스템 KR101116547B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/800,204 US7555732B2 (en) 2004-03-12 2004-03-12 Apparatus method and system for a data entry interface
US10/800,204 2004-03-12
PCT/IB2005/000614 WO2005088431A2 (en) 2004-03-12 2005-03-11 Apparatus method and system for a data entry interface

Publications (2)

Publication Number Publication Date
KR20070001223A KR20070001223A (ko) 2007-01-03
KR101116547B1 true KR101116547B1 (ko) 2012-02-28

Family

ID=34920667

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067021095A KR101116547B1 (ko) 2004-03-12 2005-03-11 데이터 입력 인터페이스 장치, 방법 및 시스템

Country Status (10)

Country Link
US (1) US7555732B2 (ko)
EP (1) EP1730625A2 (ko)
JP (1) JP2007529069A (ko)
KR (1) KR101116547B1 (ko)
CN (1) CN1947084B (ko)
CA (1) CA2558218C (ko)
EA (1) EA011145B1 (ko)
HK (1) HK1105540A1 (ko)
TW (1) TWI398795B (ko)
WO (1) WO2005088431A2 (ko)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9760214B2 (en) 2005-02-23 2017-09-12 Zienon, Llc Method and apparatus for data entry input
WO2006091753A2 (en) * 2005-02-23 2006-08-31 Zienon, L.L.C. Method and apparatus for data entry input
US7599830B2 (en) 2005-03-16 2009-10-06 Research In Motion Limited Handheld electronic device with reduced keyboard and associated method of providing quick text entry in a message
US7561145B2 (en) * 2005-03-18 2009-07-14 Microsoft Corporation Systems, methods, and computer-readable media for invoking an electronic ink or handwriting interface
US7719520B2 (en) * 2005-08-18 2010-05-18 Scenera Technologies, Llc Systems and methods for processing data entered using an eye-tracking system
US20070076862A1 (en) * 2005-09-30 2007-04-05 Chatterjee Manjirnath A System and method for abbreviated text messaging
US8296484B2 (en) * 2006-03-30 2012-10-23 Harris Corporation Alphanumeric data entry apparatus and method using multicharacter keys of a keypad
US7556204B2 (en) * 2006-04-19 2009-07-07 Nokia Corproation Electronic apparatus and method for symbol input
US9152241B2 (en) * 2006-04-28 2015-10-06 Zienon, Llc Method and apparatus for efficient data input
US8035534B2 (en) 2006-11-10 2011-10-11 Research In Motion Limited Method for automatically preferring a diacritical version of a linguistic element on a handheld electronic device based on linguistic source and associated apparatus
GB201016385D0 (en) * 2010-09-29 2010-11-10 Touchtype Ltd System and method for inputting text into electronic devices
US9424246B2 (en) 2009-03-30 2016-08-23 Touchtype Ltd. System and method for inputting text into electronic devices
US10191654B2 (en) 2009-03-30 2019-01-29 Touchtype Limited System and method for inputting text into electronic devices
GB0905457D0 (en) 2009-03-30 2009-05-13 Touchtype Ltd System and method for inputting text into electronic devices
US20100262797A1 (en) * 2009-04-10 2010-10-14 PHD Virtual Technologies Virtual machine data backup
GB2470653B (en) 2009-05-26 2015-04-29 Zienon L L C Enabling data entry based on differentiated input objects
US9459702B2 (en) * 2010-03-11 2016-10-04 Song Hak JI Portable terminal for inputting three signals via one input key, and text input method using same
US8384566B2 (en) * 2010-05-19 2013-02-26 Mckesson Financial Holdings Pressure-sensitive keyboard and associated method of operation
US8487877B2 (en) 2010-06-10 2013-07-16 Michael William Murphy Character specification system and method that uses a limited number of selection keys
GB201200643D0 (en) 2012-01-16 2012-02-29 Touchtype Ltd System and method for inputting text
EP2634672A1 (en) * 2012-02-28 2013-09-04 Alcatel Lucent System and method for inputting symbols
US9310895B2 (en) * 2012-10-12 2016-04-12 Microsoft Technology Licensing, Llc Touchless input
US9265458B2 (en) 2012-12-04 2016-02-23 Sync-Think, Inc. Application of smooth pursuit cognitive testing paradigms to clinical drug development
EP2946272A4 (en) * 2013-01-21 2016-11-02 Keypoint Technologies India Pvt Ltd TEXT ENTRY SYSTEM AND METHOD
IN2013CH00469A (ko) 2013-01-21 2015-07-31 Keypoint Technologies India Pvt Ltd
US9380976B2 (en) 2013-03-11 2016-07-05 Sync-Think, Inc. Optical neuroinformatics
US9836131B2 (en) * 2014-05-19 2017-12-05 Bengler AS Method of generating symbols from a chording keyboard
CN107924273A (zh) 2015-04-30 2018-04-17 M·W·墨菲 使用按钮按压类型错误分析进行单词识别的系统和方法
GB201610984D0 (en) 2016-06-23 2016-08-10 Microsoft Technology Licensing Llc Suppression of input images
CN117519478A (zh) 2017-05-19 2024-02-06 M·W·墨菲 交错字符选择界面
US11922007B2 (en) 2018-11-29 2024-03-05 Michael William Murphy Apparatus, method and system for inputting characters to an electronic device

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6378234B1 (en) * 1999-04-09 2002-04-30 Ching-Hsing Luo Sequential stroke keyboard
US20060104317A1 (en) * 2004-11-17 2006-05-18 Joon-Hak Bang Multi-protocol signals processing apparatus and method for NG-SDH transponder

Family Cites Families (73)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4067431A (en) * 1976-03-12 1978-01-10 Whitaker Ranald O Combinational keyboard with movable keys and adapted for one-handed keying of numerical information
JPS57109031A (en) * 1980-12-26 1982-07-07 Sharp Corp Input equipment
US5067103A (en) * 1983-01-21 1991-11-19 The Laitram Corporation Hand held computers with alpha keystroke
US4544276A (en) * 1983-03-21 1985-10-01 Cornell Research Foundation, Inc. Method and apparatus for typing Japanese text using multiple systems
JPS59184932A (ja) * 1983-04-06 1984-10-20 Canon Inc 情報選択方式
FR2585487B1 (fr) * 1985-07-29 1990-09-07 Guyot Sionnest Laurent Claviers pour ordinateurs, < a 70 cm2 et a moins de 13 contacts actionnes de facon combinee par les doigts d'une seule main
US4969097A (en) * 1985-09-18 1990-11-06 Levin Leonid D Method of rapid entering of text into computer equipment
GB2195040B (en) 1986-08-11 1990-07-25 Chark Huen Au Input systems and keyboards for ideographic characters
US5109352A (en) * 1988-08-09 1992-04-28 Dell Robert B O System for encoding a collection of ideographic characters
US5187480A (en) * 1988-09-05 1993-02-16 Allan Garnham Symbol definition apparatus
US5255310A (en) * 1989-08-11 1993-10-19 Korea Telecommunication Authority Method of approximately matching an input character string with a key word and vocally outputting data
US5059048A (en) * 1989-10-17 1991-10-22 Sirkin Mark J Keyboard for use with one hand having curvilinear and linear rows of keys
US5128672A (en) * 1990-10-30 1992-07-07 Apple Computer, Inc. Dynamic predictive keyboard
JP3203819B2 (ja) * 1992-10-22 2001-08-27 三菱電機株式会社 タッチパネル入力装置
US5488363A (en) * 1993-03-03 1996-01-30 Peng; Jingmin Direction code for encoding Chinese characters using English alphabet and inputting method thereof
US5535421A (en) * 1993-03-16 1996-07-09 Weinreich; Michael Chord keyboard system using one chord to select a group from among several groups and another chord to select a character from the selected group
US5388061A (en) * 1993-09-08 1995-02-07 Hankes; Elmer J. Portable computer for one-handed operation
US5410306A (en) * 1993-10-27 1995-04-25 Ye; Liana X. Chinese phrasal stepcode
CN1039666C (zh) * 1993-11-06 1998-09-02 黄飞梦 基于两笔形与两笔符的汉字输入方法及键盘
WO1995028910A1 (de) * 1994-04-22 1995-11-02 Dibona Holding Ag Lutschbonbon mit zahnbelags-neutralisierender wirkung
US5486058A (en) * 1994-08-09 1996-01-23 Allen; Donald E. Continuous touch keyboard
US5847697A (en) * 1995-01-31 1998-12-08 Fujitsu Limited Single-handed keyboard having keys with multiple characters and character ambiguity resolution logic
US5786776A (en) * 1995-03-13 1998-07-28 Kabushiki Kaisha Toshiba Character input terminal device and recording apparatus
JP3727399B2 (ja) * 1996-02-19 2005-12-14 ミサワホーム株式会社 画面表示式キー入力装置
US5881169A (en) * 1996-09-13 1999-03-09 Ericsson Inc. Apparatus and method for presenting and gathering text entries in a pen-based input device
US5953541A (en) * 1997-01-24 1999-09-14 Tegic Communications, Inc. Disambiguating system for disambiguating ambiguous input sequences by displaying objects associated with the generated input sequences in the order of decreasing frequency of use
US6005495A (en) * 1997-02-27 1999-12-21 Ameritech Corporation Method and system for intelligent text entry on a numeric keypad
US6054941A (en) * 1997-05-27 2000-04-25 Motorola, Inc. Apparatus and method for inputting ideographic characters
US5936556A (en) * 1997-07-14 1999-08-10 Sakita; Masami Keyboard for inputting to computer means
US6184803B1 (en) 1997-07-22 2001-02-06 Burrell, Iv James W. Nine key alphanumeric binary keyboard combined with a three key binary control keyboard and combinational control means
US6098086A (en) * 1997-08-11 2000-08-01 Webtv Networks, Inc. Japanese text input method using a limited roman character set
US5874906A (en) * 1997-09-22 1999-02-23 Wilnel, Inc. Data entry system
AU746674B2 (en) * 1997-09-25 2002-05-02 Tegic Communications, Inc. Reduced keyboard disambiguating system
JP3577916B2 (ja) * 1997-10-24 2004-10-20 松下電器産業株式会社 画像表示装置
US6005498A (en) * 1997-10-29 1999-12-21 Motorola, Inc. Reduced keypad entry apparatus and method
US6148803A (en) * 1997-12-04 2000-11-21 Denso Corporation Leakage diagnosing device for fuel evaporated gas purge system
US5945928A (en) * 1998-01-20 1999-08-31 Tegic Communication, Inc. Reduced keyboard disambiguating system for the Korean language
JPH11224161A (ja) * 1998-02-04 1999-08-17 Pfu Ltd 文字入力装置および記録媒体
US6104317A (en) * 1998-02-27 2000-08-15 Motorola, Inc. Data entry device and method
US6037942A (en) * 1998-03-10 2000-03-14 Magellan Dis, Inc. Navigation system character input device
US6504941B2 (en) * 1998-04-30 2003-01-07 Hewlett-Packard Company Method and apparatus for digital watermarking of images
US6075469A (en) * 1998-08-11 2000-06-13 Pong; Gim Yee Three stroke Chinese character word processing techniques and apparatus
JP2000081933A (ja) * 1998-09-04 2000-03-21 Minolta Co Ltd 画面入力処理装置
WO2000014622A1 (fr) * 1998-09-09 2000-03-16 Qi Hao Clavier et procede de saisie correspondant
US6370518B1 (en) * 1998-10-05 2002-04-09 Openwave Systems Inc. Method and apparatus for displaying a record from a structured database with minimum keystrokes
US6646573B1 (en) * 1998-12-04 2003-11-11 America Online, Inc. Reduced keyboard text input system for the Japanese language
US6636162B1 (en) * 1998-12-04 2003-10-21 America Online, Incorporated Reduced keyboard text input system for the Japanese language
US6498608B1 (en) * 1998-12-15 2002-12-24 Microsoft Corporation Method and apparatus for variable weight outline emboldening of scalable outline fonts
US6460015B1 (en) * 1998-12-15 2002-10-01 International Business Machines Corporation Method, system and computer program product for automatic character transliteration in a text string object
US6362752B1 (en) * 1998-12-23 2002-03-26 Motorola, Inc. Keypad with strokes assigned to key for ideographic text input
GB2345614B (en) * 1999-01-09 2003-08-27 Nec Technologies Mobile phone with adaptive user interface
GB2347247A (en) * 1999-02-22 2000-08-30 Nokia Mobile Phones Ltd Communication terminal with predictive editor
US6204848B1 (en) * 1999-04-14 2001-03-20 Motorola, Inc. Data entry apparatus having a limited number of character keys and method
US6377685B1 (en) * 1999-04-23 2002-04-23 Ravi C. Krishnan Cluster key arrangement
US6562078B1 (en) * 1999-06-29 2003-05-13 Microsoft Corporation Arrangement and method for inputting non-alphabetic language
US6172625B1 (en) * 1999-07-06 2001-01-09 Motorola, Inc. Disambiguation method and apparatus, and dictionary data compression techniques
US6349147B1 (en) * 2000-01-31 2002-02-19 Gim Yee Pong Chinese electronic dictionary
US6603489B1 (en) * 2000-02-09 2003-08-05 International Business Machines Corporation Electronic calendaring system that automatically predicts calendar entries based upon previous activities
JP2001236180A (ja) * 2000-02-24 2001-08-31 Seiko Epson Corp 情報処理装置及び押下キー判定方法
US6597345B2 (en) * 2000-03-03 2003-07-22 Jetway Technologies Ltd. Multifunctional keypad on touch screen
DE10012671C2 (de) 2000-03-15 2003-09-04 Hans-Peter Guetter Mobiltelefon mit ergonomisch angeordneten Tasten
JP5128026B2 (ja) * 2000-11-29 2013-01-23 京セラ株式会社 携帯端末
CN1121004C (zh) * 2000-12-21 2003-09-10 国际商业机器公司 用于小键盘的汉字输入方法
IL141069A0 (en) * 2001-01-24 2002-02-10 Deeb Daoud Ergonomic keyboard
GB0112870D0 (en) 2001-05-25 2001-07-18 Koninkl Philips Electronics Nv Text entry method and device therefore
US6972749B2 (en) * 2001-08-29 2005-12-06 Microsoft Corporation Touch-sensitive device for scrolling a document on a display
US7152213B2 (en) * 2001-10-04 2006-12-19 Infogation Corporation System and method for dynamic key assignment in enhanced user interface
DE10235548B4 (de) * 2002-03-25 2012-06-28 Agere Systems Guardian Corp. Verfahren und Vorrichtung für die Prädiktion einer Textnachrichteneingabe
US7038598B2 (en) * 2002-05-29 2006-05-02 Alan K. Uke Keyboard assemblies
US7061403B2 (en) * 2002-07-03 2006-06-13 Research In Motion Limited Apparatus and method for input of ideographic Korean syllables from reduced keyboard
EP1381160B8 (en) * 2002-07-12 2006-01-18 Harald Philipp Capacitive keyboard with reduced keying ambiguity
SG135918A1 (en) * 2003-03-03 2007-10-29 Xrgomics Pte Ltd Unambiguous text input method for touch screens and reduced keyboard systems
US20060055669A1 (en) * 2004-09-13 2006-03-16 Mita Das Fluent user interface for text entry on touch-sensitive display

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6378234B1 (en) * 1999-04-09 2002-04-30 Ching-Hsing Luo Sequential stroke keyboard
US20060104317A1 (en) * 2004-11-17 2006-05-18 Joon-Hak Bang Multi-protocol signals processing apparatus and method for NG-SDH transponder

Also Published As

Publication number Publication date
JP2007529069A (ja) 2007-10-18
TWI398795B (zh) 2013-06-11
CA2558218C (en) 2013-09-03
US20050200609A1 (en) 2005-09-15
WO2005088431A3 (en) 2006-02-16
CN1947084A (zh) 2007-04-11
KR20070001223A (ko) 2007-01-03
EA011145B1 (ru) 2009-02-27
US7555732B2 (en) 2009-06-30
WO2005088431A2 (en) 2005-09-22
CN1947084B (zh) 2011-02-23
EP1730625A2 (en) 2006-12-13
CA2558218A1 (en) 2005-09-22
TW200605020A (en) 2006-02-01
EA200601652A1 (ru) 2007-02-27
HK1105540A1 (en) 2008-02-15

Similar Documents

Publication Publication Date Title
KR101116547B1 (ko) 데이터 입력 인터페이스 장치, 방법 및 시스템
US11614862B2 (en) System and method for inputting text into electronic devices
US8713432B2 (en) Device and method incorporating an improved text input mechanism
EP0842463B1 (en) Reduced keyboard disambiguating system
US6307548B1 (en) Reduced keyboard disambiguating system
JP5501625B2 (ja) 不確定なテキスト入力から明確な文字をフィルタリングする装置及び方法
US20170220552A1 (en) System and method for inputting text into electronic devices
US20090193334A1 (en) Predictive text input system and method involving two concurrent ranking means
US7376938B1 (en) Method and system for disambiguation and predictive resolution
WO1997005541A9 (en) Reduced keyboard disambiguating system
JP2007128525A5 (ko)
US20080300861A1 (en) Word formation method and system
US20110093497A1 (en) Method and System for Data Input
EP1248183B1 (en) Reduced keyboard disambiguating system
CN101630310A (zh) 一种具有容错功能的文字处理系统及方法
AU747901B2 (en) Reduced keyboard disambiguating system

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: 20150119

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160119

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170202

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180126

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee