KR20040069984A - 특수화된 데이터 입력을 위한 유틸리티 오브젝트 - Google Patents
특수화된 데이터 입력을 위한 유틸리티 오브젝트 Download PDFInfo
- Publication number
- KR20040069984A KR20040069984A KR1020040001831A KR20040001831A KR20040069984A KR 20040069984 A KR20040069984 A KR 20040069984A KR 1020040001831 A KR1020040001831 A KR 1020040001831A KR 20040001831 A KR20040001831 A KR 20040001831A KR 20040069984 A KR20040069984 A KR 20040069984A
- Authority
- KR
- South Korea
- Prior art keywords
- user interface
- control
- data
- invoking
- panel
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/14—Digital output to display device ; Cooperation and interconnection of the display device with other functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0487—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
- G06F3/0488—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
- G06F3/04883—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures for inputting data by handwriting, e.g. gesture or text
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0487—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
- G06F3/0488—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
- G06F3/04886—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- User Interface Of Digital Computer (AREA)
- Position Input By Displaying (AREA)
- Input From Keyboards Or The Like (AREA)
Abstract
오브젝트는 소프트웨어 애플리케이션 내의 하나 이상의 컨트롤과 관련된다. 컨트롤 내에 데이터를 입력하기 위하여 데이터 입력 사용자 인터페이스가 사용되는 경우, 컨트롤과 관련된 오브젝트는 데이터 입력 사용자 인터페이스의 동작을 결정한다. 더 상세하게는, 오브젝트는 사용자에게 사용자 인터페이스를 제공하는 것을 담당하는 컴포넌트에 인터페이스 특성을 통신할 수 있다. 이러한 컴포넌트는, 예를 들어 디스플레이 상에 사용자 인터페이스를 렌더링하고, 사용자 인터페이스를 통해 사용자로부터의 입력 데이터를 수신하며, 상기 입력된 데이터를 지정된 수신지로 라우팅할 수 있는 공유 소프트웨어 모듈일 수 있다. 대안적으로, 오브젝트 자체가 지정된 특성을 갖는 사용자 인터페이스를 생성할 수 있다.
Description
본 발명은 일반적으로 데이터 입력 사용자 인터페이스를 호출(invoke) 또는 제어하기 위한 오브젝트에 관한 것이다. 본 발명의 다양한 실시예는 사용자 인터페이스로부터 입력 데이터를 수신할 에디트 컨트롤(edit control) 또는 리치 에디트 컨트롤(rich edit control)과 같은 컨트롤에 기초하는 데이터 입력 사용자 인터페이스의 호출 또는 제어에 관한 특정 애플리케이션을 갖는다.
컴퓨터가 진보함에 따라, 사용자의 경험을 강화하고 컴퓨터를 보다 더 다용도로 하기 위하여, 다양한 데이터 입력 기술(data entry technique)이 개발되어 왔다. 예를 들어, 전형적인 컴퓨터 시스템, 특히 마이크로소프트 WINDOWS? 브랜드 운영 시스템과 같이 사용자 인터랙션을 위하여 GUI(Graphical user interface)를 사용하는 컴퓨터 시스템은, 하나 이상의 개별 입력 디바이스로부터의 사용자 입력을 수신하기 위하여 최적화된다. 따라서, 컴퓨터 사용자는 키보드를 사용하여 텍스트를 입력할 수 있고, 사용자의 선택을 포인터의 위치와 관련하여 활성화시키기 위한 하나 이상의 버튼을 갖는 마우스와 같은 포인팅 디바이스를 사용하여 디스플레이 스크린 상의 포인터의 위치를 제어할 수 있다. 일부 컴퓨팅 시스템은 다목적 데이터 입력 디바이스로서 사용될 수 있는 펜형 스타일러스(pen-like stylus)를 제공함으로써, 사용자가 사용할 수 있는 입력 시스템을 확장해왔다.
예를 들어, 마이크로소프트 WINDOW? 브랜드 XP 태블릿 PC 에디션 운영 시스템(XP tablet PC edition operating system)은 태블릿 PC 입력 패널, 텍스트 입력 패널 또는 TIP로 칭해지는 데이터 입력 사용자 인터페이스를 제공하며, 이를 통하여 사용자는 펜 또는 스타일러스를 사용하여 컴퓨터에 데이터를 제공할 수 있다. 이러한 유형의 사용자 인터페이스는 일반적으로 데이터 입력 패널이라고 칭해질 수 있는 보다 넓은 카테고리의 데이터 입력 그래픽 사용자 인터페이스에 포함된다. 데이터 입력 패널은 스타일러스의 이동을 전자 잉크로 변환하는 기입 표면(writingsurface)을 제공할 수 있다. 그리고, 데이터 입력 패널의 일부 버젼은 전자 잉크를 텍스트로 해석할 수 있는 한편, 다른 유형의 데이터 입력 패널은 대안적으로 또는 추가적으로 전자 잉크를 컴퓨터 상에서 실행 중인 애플리케이션에 직접 제공할 수 있다. 또한, 데이터 입력 패널은 종래의 키보드의 캐릭터(character)들을 디스플레이하는 "소프트(soft)" 키보드 표면을 제공할 수 있다. 사용자가 스타일러스를 사용하여 디스플레이된 키를 누르는 경우, 컴퓨터는 그 키와 관련된 캐릭터를 입력 데이터로서 수신할 것이다.
데이터 입력 패널이 컴퓨터의 유용성을 실질적으로 증가시키고 있는 반면에, 종래의 데이터 입력 패널과 관련된 몇몇 불편함이 여전히 존재하고 있다. 우선, 다수의 컴퓨터 사용자는 데이터 입력 패널에 익숙하지 않다. 따라서, 소프트웨어 애플리케이션을 작성하는 개발자는, 사용자가 애플리케이션에 데이터를 입력하기 위하여 데이터 입력 패널을 수동으로 소환(summon)하는 방법을 알고 있는지를 확신할 수 없다. 대신에, 개발자는 사용자가 데이터 입력 패널을 활성화하여 사용할 줄 알거나 다른 데이터 입력 방법을 이용할 수 있을 것을 기대해야 한다.
또한, 데이터 입력 패널은 그래픽 사용자 인터페이스이기 때문에, 전형적으로 데이터 입력 패널로부터의 데이터가 입력될 애플리케이션과 동시에 디스플레이된다. 데이터 입력 패널이 데이터가 입력될 위치를 실질적으로 가리는 것을 방지하기 위하여, 통상적으로, 데이터 입력 패널은 애플리케이션 아래에 도킹(docking)된다. 이러한 방식으로 데이터 입력 패널을 배치하면, 사용자가 데이터의 수신지 위치를 보는 것을 방해받지 않을 것은 보장할 수 있지만, 사용자가 애플리케이션(애플리케이션을 제어하기 위해)과 데이터 입력 패널(애플리케이션으로 데이터를 입력하기 위해) 사이에서 스타일러스를 전후로 계속 이동하는 것은 불편하다.
또한, 전형적인 데이터 입력 패널에 의해 제공되는 데이터 입력 기술의 다양성으로 인해, 애플리케이션의 특정 위치에 데이터를 입력하는 데에 있어서 어떤 기술이 가장 적합한지를 사용자가 결정하는 것은 불편하다. 예를 들어, 애플리케이션은 대소캐릭터 구별 패스워드(case-sensitive password)를 수신하는 에디트 컨트롤을 포함할 수 있다. 그러나, 사용자가 데이터 입력 패널에 의해 제공되는 기입 표면 상에 기입함으로써 에디트 컨트롤에 패스워드를 입력하려고 하는 경우, 사용자의 핸드라이팅(handwriting)은 부정확하게 인식될 수 있다. 또한, 에디트 컨트롤이 부정확하게 인식된 핸드라이팅을 디스플레이하지 않고, 오히려 부정확하게 인식된 텍스트를 고의적으로 숨기는 경우, 사용자는 자신의 패스워드가 왜 수용되지 않는지를 알 수조차 없다. 이러한 상황에서는, 사용자가 기입 표면보다는 소프트 키보드를 사용하여 에디트 컨트롤에 데이터를 입력하는 것이 바람직하지만, 그러기 위해서 사용자는 해당 태스크에 대하여 소프트 키보드 표면이 더 적합하다는 것을 알아차리고, 스스로 데이터 입력 패널을 그러한 디스플레이 표면으로 변경해야만 한다.
따라서, 입력 패널로부터의 데이터가 삽입될 위치를 가리지 않으면서, 그 위치 근처에 데이터 입력 패널을 디스플레이할 수 있는 것이 유리하다. 더 상세하게는, 사용자가 데이터 입력 패널과 그 데이터 입력 패널을 통해 애플리케이션에 입력되는 데이터의 삽입에 대하여 동시에 주의를 기울일 수 있게 하는 위치에, 데이터 입력 패널을 지능적으로 디스플레이할 수 있는 것이 유리하다. 또한, 애플리케이션 내의 컨트롤에 데이터를 입력하는 데에 가장 적합한 데이터 입력 패널 표면을 위한 다양한 특성을, 그 애플리케이션이 지정할 수 있게 하는 것이 유리하다. 예를 들어, 애플리케이션이 대소캐릭터 구별 패스워드를 수신하기 위한 에디트 컨트롤을 포함한 경우, 사용자가 그 에디트 컨트롤에 데이터를 입력하고자 할 때에, 애플리케이션이 데이터 입력 패널의 표면을 키보드 표면으로 자동적으로 변환할 수 있게 하는 것이 유용하다.
편리하게도, 본 발명의 다양한 실시예는 애플리케이션이 데이터 입력 패널의 위치 및/또는 외관(appearance)을 포함하는 데이터 입력 패널의 하나 이상의 특성을 제어할 수 있게 하는 오브젝트를 제공한다. 본 발명의 일부 실시예에 따르면, 오브젝트는 애플리케이션 내의 하나 이상의 에디트 컨트롤과 관련된다. 예를 들어, 본 발명의 일부 실시예에서, 컴퓨터 운영 시스템의 입력 초점(input focus)이 오브젝트와 관련된 에디트 컨트롤로 쉬프트되면, 그 오브젝트는 데이터 입력 패널이 디스플레이될 위치를 지정할 것이다. 본 발명의 다른 실시예에서는, 컴퓨터 운영 시스템의 입력 초점이 오브젝트와 관련된 에디트 컨트롤로 쉬프트되면, 오브젝트는 데이터 입력 패널에 의해 디스플레이될 표면을 지정할 것이다. 본 발명의 또 다른 실시예에서는, 컴퓨터의 운영 시스템의 입력 초점이 오브젝트와 관련된 에디트 컨트롤로 변경되면, 오브젝트는 데이터 입력 패널의 전체 외관을 지정할 것이다. 즉, 오브젝트는 데이터 입력 패널의 위치 및 데이터 입력 패널에 의해 디스플레이되는 표면 양자 모두를 지정할 것이다. 본 발명의 또 다른 실시예에서, 오브젝트는 데이터 입력 패널이 사용자에 의해 어떻게 호출될지를 추가적으로 또는 대안적으로 지정할 수 있다.
도 1은 본 발명의 예시적인 실시예에 따른 일반적인 운영 시스템을 도시한 도면.
도 2a는 본 발명의 다양한 실시예에서 채용될 수 있는 애플리케이션 사용자 인터페이스 내의 에디트 컨트롤 윈도우를 나타낸 도면이고, 도 2b-2d는 텍스트를 에디트 컨트롤에 삽입하는 것을 나타낸 도면.
도 3은 본 발명의 다양한 실시예에 따른 데이터 입력 패널의 도면.
도 4-6은 본 발명의 실시예에 따른 에디트 컨트롤 윈도우에 대한 대이터 입력 패널의 대안적인 배치를 나타낸 도면.
도 7은 아시아 언어 기입 표면을 갖는 데이터 입력 패널의 도면.
도 8은 보조 숫자 키패드를 갖는 데이터 입력 패널의 도면.
도 9는 보조 심볼 키패드를 갖는 데이터 입력 패널의 도면.
도 10은 반전된 배향을 갖는 텍스트 입력 패널의 도면.
도 11은 본 발명의 다양한 실시예에 따른 프로세스 패널 유형의 값을 위한 방법을 나타낸 도면.
도 12는 본 발명의 다양한 실시예에 따른 컨트롤을 갖는 상이한 유틸리티 오브젝트들 간에서의 공유 컴포넌트의 공유를 나타낸 도면.
도 13은 상이한 유틸리티 오브젝트들이 단일의 공유 컴포넌트를 어떻게 공유하는지에 대한 일례의 도면.
도 14 및 15는 상이한 유틸리티 오브젝트들이 단일의 공유 컴포넌트를 어떻게 공유하는지에 대한 다른 예의 도면.
<도면의 주요 부분에 대한 부호의 설명>
201 : 경계
203-207 : 에디트 컨트롤
209-213 : 타이틀
301 : 데이터 입력 패널
303 : 경계
305 : 기입 표면
307 : 송신 버튼
309 : 제어 버튼
개관
본 발명의 양태들은 데이터 입력 패널과 같은 데이터 입력 사용자 인터페이스의 거동(behavior)을 제어하는 것에 관한 것이다. 더 상세하게는, 본 발명의 다양한 실시예는, 데이터 입력 패널의 위치 및 컨텐츠 양자 모두를 제어하는 것에 관한 것이다. 본 기술 분야의 통상의 지식을 가진 자라면 알 수 있는 바와 같이, 대부분의 소프트웨어 애플리케이션은 전형적으로 사용자로부터의 입력 데이터를 수신하기 위한 소정 유형의 피쳐(feature) 또는 컴포넌트를 갖는다. 그래픽 사용자 인터페이스를 갖는 애플리케이션에서, 이러한 피쳐 또는 컴포넌트는 전형적으로 "컨트롤(control)"로 칭해진다. 따라서, 컨트롤은 액션(action)을 수행하기 위해 사용자에 의해 조작될 수 있는 디스플레이된 오브젝트이다. 컨트롤의 몇몇 다른 예는, 예를 들어 포인팅 디바이스를 사용하여 사용자에 의해 체크될 수 있는 버튼, 및 마찬가지로 포인팅 디바이스를 통해 조작될 수 있는 스크롤 바를 포함한다. 컨테이닝 윈도우(containing window)는 사용자가 윈도우의 컨텐츠를 조작할 수 있게 하는 또 다른 유형의 컨트롤이다. 본 기술 분야의 통상의 지식을 가진 자라면 알 수 있는 바와 같이, 컨트롤의 특성 및 거동은 전형적으로 그 컨트롤을 호스팅하는 애플리케이션에 의해 지정된다.
사용자가 예를 들어 키보드를 사용하여 텍스트 데이터를 입력할 수 있는 한정된 영역(bounded area)은 공통적으로 에디트 컨트롤이라고 칭할 수 있다. 본 기술 분야의 통상의 지식을 가진 자라면 알 수 있는 바와 같이, 다양한 유형의 에디트 컨트롤이 존재한다. 예를 들어, 키보드로부터 캐릭터 데이터를 수신할 수 있는 종래의 에디트 컨트롤에 더하여, 마이크로소프트 Window?브랜드 XP 운영 시스템은, 애플리케이션이 리치 에디트 컨트롤을 가질 수 있게 한다. 리치 에디트 컨트롤은 입력 텍스트 및 삽입된 텍스트와 관련된 다양한 유형의 메타데이터 양자 모두를 수신한다. 또한, 마이크로소프트 Window?브랜드 XP 태블릿 PC 에디션 운영 시스템은, 애플리케이션이 잉크 에디트 컨트롤(ink edit control)을 포함하는 것을 허용한다. 잉크 에디트 컨트롤은, 사용자가 스타일러스형 포인팅 디바이스를 조작하여 전자 잉크(electronic ink0를 생성함으로써 컨트롤에 데이터를 입력하는 것을 더 허용하는 리치-에디트 컨트롤의 한 유형이다. 일부 잉크 에디트 컨트롤에서는 잉크가 텍스트로 변환될 수 있는 한편, 다른 유형의 잉크 에디트 컨트롤은 텍스트로 번역하지 않고서 전자 잉크를 프로세스할 수 있다.
본 발명의 다양한 실시예에 따르면, 오브젝트는 그러한 하나 이상의 컨트롤과 관련된다. 애플리케이션 내의 컨트롤과 관련된 오브젝트는, 그 컨트롤에 데이터를 입력하기 위하여 데이터 입력 사용자 인터페이스가 채용된 때에, 데이터 입력 사용자 인터페이스의 동작을 결정할 것이다. 더 상세하게는, 본 발명에 따른 오브젝트는 사용자에게 사용자 인터페이스를 제공하는 것을 담당하는 컴포넌트에 인터페이스 특성을 통신할 수 있다. 이러한 컴포넌트는, 예를 들어, 사용자 인터페이스를 디스플레이 상에 렌더링하고, 사용자 인터페이스를 통해 사용자로부터 입력 데이터를 수신하며, 입력된 데이터를 지정된 수신지에 라우팅하는 공유된 소프트웨어 모듈일 수 있다. 다르게는, 오브젝트 자체는 지정된 특성을 갖는 사용자 인터페이스를 생성할 수 있다.
예를 들어, 컨트롤과 관련된 오브젝트는, 컴퓨터의 운영 시스템의 입력 초점이 그 컨트롤로 쉬프트된 때에, 데이터 입력 패널과 같은 데이터 입력 사용자 인터페이스의 외관을 결정할 수 있다. 본 발명의 일부 실시예에서, 오브젝트는 데이터 입력 패널이 컨트롤의 경계에 근접하여 디스플레이되게 할 것이다. 예를 들어, 오브젝트는 데이터 입력 패널이 에디트 컨트롤의 경계의 바로 아래 또는 바로 위에 디스플레이되게 할 수 있다. 또한, 오브젝트는 데이터 입력 패널에 의해 초기에 디스플레이되는 표면을 결정할 수 있다. 예를 들어, 오브젝트가 패스워드 또는 모델 번호와 같은 랜덤 캐릭터(random character)를 수신하거나 수신된 캐릭터를 숨기는 에디트 컨트롤과 관련된 경우, 오브젝트는 데이터 입력 패널이 그 컨트롤에 데이터를 입력하기 위하여 기입 표면이 아닌 키보드 표면을 초기에 디스플레이하게 한다.
또한, 오브젝트는 데이터 입력 패널과 같은 데이터 입력 사용자 인터페이스를 호출할 기술을 결정하는 데에 사용될 수 있다. 예를 들어, 오브젝트는, 컴퓨터 운영 시스템의 입력 초점이 그 오브젝트와 관련된 컨트롤로 쉬프트할 때마다, 데이터 입력 패널이 호출되게 할 수 있다. 다르게는, 오브젝트는, 컴퓨터의 운영 시스템의 초점이 그 오브젝트와 관련된 컨트롤로 변경될 때, 타겟이 디스플레이되게 할수 있다. 본 발명의 다양한 실시예에서, 타겟은, 사용자가 스타일러스를 타겟 위에 통과시켜 포인터가 타겟을 지시하고 있는 동안 활성화 버튼을 누를 때, 또는 사용자가 타겟에 대하여 소정의 다른 지정된 동작을 수행할 때, 데이터 입력 패널(오브젝트에 의해 지정된 대로)을 호출할 것이다.
따라서, 애플리케이션은, 오브젝트의 속성값(property value)을 설정하고 오브젝트 상에 다양한 방법을 호출함으로써, 사용자에게 디스플레이될 데이터 입력 패널과 같은 데이터 입력 사용자 인터페이스의 특성을 결정할 수 있다. 또한, 애플리케이션은, 오브젝트에 의해 제공된 방법을 실행함으로써, 사용자의 액션에 응답하여 데이터 입력 사용자 인터페이스의 특성을 변경하거나, 사용자 인터페이스를 통해 입력된 데이터를 어떻게 컨트롤에 전달할지를 제어할 수 있다. 본 발명의 이러한 피쳐들은 각각 이하에 상세하게 설명될 것이다.
예시적인 운영 환경
본 기술 분야의 통상의 지식을 가진 자라면 알 수 있는 바와 같이, 본 발명의 다양한 실시예에 따른 오브젝트는 하드웨어, 소프트웨어, 펌웨어 또는 이들의 조합을 사용하여 구현될 수 있다. 예를 들어, 본 발명의 다양한 실시예는 데이터 입력 사용자 인터페이스의 동작을 제어할 때에 오브젝트의 동작을 수행하는 기능 모듈에 의해 구현될 수 있다. 각각의 모듈은 아날로그 또는 디지탈 전자 회로에 의해 단독으로 형성될 수 있다. 그러나, 본 기술 분야의 통상의 지식을 가진 자라면 알 수 있는 바와 같이, 모듈은 퍼스널 및 랩탑 컴퓨터 등의 종래의 프로그래밍 가능한 컴퓨팅 디바이스에서 발견할 수 있는 것과 같이, 프로그래밍 가능한 전자회로를 제어하기 위한 실행 가능한 소프트웨어 명령을 사용하여 형성될 수 있다.
더 상세하세는, 본 발명의 다양한 실시예에 따른 오브젝트는 하나 이상의 프로그래밍 가능한 컴퓨팅 디바이스에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 실행 가능한 명령과 관련하여 일반적으로 설명될 수 있다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 요약 데이터 타입을 구현하는 루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조 등을 포함할 수 있다. 전형적으로, 프로그램 모듈의 기능은 다양한 실시예에서 원하는 대로 조합 또는 분산될 수 있다.
본 발명의 다양한 실시예는 소프트웨어로 프로그래밍된 프로그래밍 가능한 컴퓨터 디바이스를 사용하여 구현될 수 있기 때문에, 본 발명의 다양한 실시예가 채용될 수 있는 전형적인 프로그래밍 가능한 컴퓨팅 디바이스(이하, 간단히 컴퓨터로 칭함)의 컴포넌트 및 동작을 간단하게 논의하는 것은 본 발명을 보다 더 잘 이해하는 데에 도움이 될 것이다. 도 1은 본 발명의 다양한 양태를 구현하는 데에 사용될 수 있는 종래의 범용 디지탈 컴퓨팅 환경의 일례의 기능 블럭도이다. 도 1에서, 컴퓨터(100)는 프로세싱 유닛(110), 시스템 메모리(120), 및 시스템 메모리를 포함하는 다양한 시스템 컴포넌트를 프로세싱 유닛(110)에 연결하는 시스템 버스(130)를 포함한다. 시스템 버스(130)는 다양한 버스 구조 중 임의의 것을 사용하는 메모리 버스 또는 메모리 컨트롤러, 주변 버스 및 로컬 버스를 포함하는 여러가지 유형의 버스 구조 중 어느 것이라도 가능하다. 시스템 메모리(120)는 판독 전용 메모리(ROM)(140) 및 랜덤 액세스 메모리(RAM)(150)를 포함한다.
기동 시 등에 컴퓨터(100) 내의 엘리먼트들 간의 정보 전달을 돕는 기본 루틴을 포함하는 기본 입력/출력 시스템(160)(BIOS)은 ROM(140) 내에 저장된다. 또한, 컴퓨터(100)는 하드디스크(도시되지 않음)에 대한 판독 및 기입을 행하는 하드 디스크 드라이브(170), 탈착 가능한 자기 디스크(190)에 대한 판독 및 기입을 행하는 자기 디스크 드라이브(180), 및 CD ROM 또는 다른 광학 매체와 같은 탈착 가능한 광 디스크(192)에 대한 판독 및 기입을 행하는 광 디스크 드라이브(191)를 포함한다. 하드 디스크 드라이브(170), 자기 디스크 드라이브(180) 및 광 디스크 드라이브(191)는 각각 하드 디스크 드라이브 인터페이스(192), 자기 디스크 드라이브 인터페이스(193), 및 광 디스크 드라이브 인터페이스(194)에 의해 시스템 버스(130)에 각각 접속된다. 드라이브 및 그 관련 컴퓨터 판독 가능 매체는 컴퓨터 판독 가능 명령, 데이터 구조, 프로그램 모듈 및 퍼스널 컴퓨터(100)를 위한 다른 데이터에 대한 비휘발성 저장을 제공한다. 본 기술 분야의 통상의 지식을 가진 자라면 쉽게 알 수 있는 바와 같이, 자기 카세트, 플래쉬 메모리 카드, 디지탈 비디오 디스크, 베르누이 카트리지, RAM, ROM 등과 같이, 컴퓨터에 의해 액세스될 수 있는 데이터를 저장할 수 있는 다른 유형의 컴퓨터 판독가능 매체도 예시적인 운영 환경 내에서 사용될 수 있다.
운영 시스템(195), 하나 이상의 애플리케이션 프로그램(196), 다른 프로그램 모듈(197) 및 프로그램 데이터(198)를 포함하는 다수의 프로그램 모듈은, 하드 디스크 드라이브(170), 자기 디스크(190), 광 디스크(192), ROM(140) 또는 RAM(150) 상에 저장될 수 있다. 사용자는 키보드(101) 및 포인팅 디바이스(102)와 같은 입력 디바이스를 통하여 커맨드 및 정보를 컴퓨터(100)에 입력할 수 있다. 다른 입력 디바이스(도시되지 않음)는 마이크로폰, 조이스틱, 게임패드, 위성 접시, 스캐너 등을 포함할 수 있다. 여기에 개시된 것과 그 이외의 입력 디바이스들은 종종 시스템 버스에 연결된 직렬 포트 인터페이스(106)를 통하여 프로세싱 유닛(110)에 접속되지만, 병렬 포트, 게임 포트 또는 범용 직렬 포트(USB)와 같은 다른 인터페이스를 통해서도 접속될 수 있다. 또한, 이 디바이스들은 적합한 인터페이스(도시되지 않음)를 통하여 시스템 버스(130)에 직접 연결될 수 있다. 모니터(107) 또는 다른 유형의 디스플레이 디바이스도 비디오 어댑터(108)와 같은 인터페이스를 통하여 시스템 버스(130)에 접속될 수 있다. 모니터에 더하여, 퍼스널 컴퓨터는 전형적으로 스피커 및 프린터와 같은 다른 주변 출력 디바이스(도시되지 않음)를 포함한다. 일부 실시예에서, 잉크와 같은 손으로 쓴 입력(freehand input)을 디지탈적으로 캡쳐하기 위하여, 펜 디지타이저(165) 및 그에 수반하는 펜 또는 스타일러스(166)가 제공된다. 펜 디지타이저(165)와 직렬 포트 간에 직접 접속이 도시되어 있긴 하지만, 실제로 펜 디지타이저(165)는, 본 기술 분야에 공지된 바와 같이 직렬 포트 또는 다른 인터페이스 및 시스템 버스(130)를 통하여 프로세싱 유닛(110)에 직접 연결될 수 있다. 또한, 디지타이저(165)는 모니터(107)로부터 이격되어 도시되어 있지만, 본 발명의 많은 실시예에서, 디지타이저(165)의 사용 가능한 입력 영역은 모니터(107)의 디스플레이 영역과 같은 범위일 수 있다. 또한, 디지타이저(165)는 모니터(107)와 일체화될 수도 있고, 모니터(107)에 오버레이되거나 부가된 개별 디바이스로서 존재할 수도 있다.
애플리케이션 프로그램(196) 및 프로그램 모듈(197)은 스타일러스(166)를 통한 잉크 입력을 수신하고 분석하는 데에 사용하기 위한 파싱 모듈(parsing module) 및 인식 모듈(recognition module)을 포함할 수 있다. 파싱 모듈은 수신된 스트로크(stroke)를 분석하고, 그 스트로크를 잉크 오브젝트(예를 들어 캐릭터, 단어, 그림 등)로 그룹화하는 데에 사용될 수 있다. 인식 모듈은 잉크 오브젝트를 분석하고 영숫자(alphanumeric) 잉크 오브젝트에 대한 캐릭터 인식을 수행하는 데에 사용될 수 있다. 그리고, 인식 정보는 잉크 오브젝트의 속성으로서 저장될 수 있다. 이러한 파싱 및 인식 모듈의 예는 워싱턴 레드몬드의 마이크로소프트사의 태블릿 PC 플랫폼 소프트웨어 개발 키트(SDK)로부터 입수할 수 있다.
컴퓨터(100)는 원격 컴퓨터(109)와 같은 하나 이상의 원격 컴퓨터로의 논리 접속을 사용하여 네트워크된 환경에서 동작할 수 있다. 원격 컴퓨터(109)는 서버, 라우터, 네트워크 PC, 피어 디바이스(peer device) 또는 다른 공통 네트워크 노드일 수 있으며, 도 1에는 메모리 저장 디바이스(111)만이 도시되어 있지만, 전형적으로 상기에서 언급한 엘리먼트들의 대다수 또는 전부를 포함한다. 도 1에 도시된 논리 접속은 근거리 네트워크(LAN)(112) 및 광대역 네트워크(WAN)(113)를 포함한다. 이러한 네트워크 환경은, 사무실, 기업내 컴퓨터 네트워크, 인트라넷 및 인터넷에서 흔한 것이며, 무선 및 유선 통신 프로토콜 양자 모두를 사용한다.
LAN 네트워킹 환경에서 사용되는 경우, 컴퓨터(100)는 네트워크 인터페이스 또는 어댑터(114)를 통하여 국부 네트워크(112)에 접속된다. WAN 네트워킹 환경에서 사용되는 경우, 퍼스널 컴퓨터(100)는 전형적으로 인터넷과 같은 광역 네트워크(114)를 통한 통신을 수립하기 위한 모뎀(115) 또는 다른 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(115)은 직렬 포트 인터페이스(106)를 통하여 시스템 버스(130)에 접속된다. 네트워크 환경에서, 퍼스널 컴퓨터(100)와 관련하여 도시된 프로그램 모듈 또는 그 일부는 원격 메모리 저장 디바이스에 저장될 수 있다.
도시된 네트워크 접속은 예시적인 것이며, 컴퓨터들 간의 통신 링크를 수립하기 위한 다른 기술이 사용될 수 있음을 알 것이다. TCP/IP, 이더넷, FTP, HTTP 등과 같은 다양한 공지된 프로토콜 중 임의의 프로토콜이 존재하는 것으로 가정되며, 시스템은 사용자가 웹 기반 서버로부터 웹 페이지를 검색할 수 있도록 하기 위하여 클라이언트-서버 구성으로 운영될 수 있다. 웹 페이지 상에서 데이터를 디스플레이하고 조작하기 위하여, 다양한 종래의 웹 브라우저 중 임의의 브라우저가 사용될 수 있다.
본 발명의 하나 이상의 양태는 하나 이상의 컴퓨터 또는 다른 디바이스에 의해 실행되는 하나 이상의 프로그램 모듈과 같은 컴퓨터 실행 가능 명령으로 구현될 수 있다. 일반적으로, 프로그램 모듈은 컴퓨터 또는 다른 디바이스 내의 프로세서에 의해 실행될 때, 특정 태스크를 수행하거나 특정 요약 데이터 타입을 구현하는 루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조 등을 포함한다. 컴퓨터 실행 가능 명령은 하드 디스크, 광 디스크, 탈착 가능 저장 매체, 고체 상태 메모리, RAM 등과 같은 컴퓨터 판독 가능 매체 상에 저장될 수 있다. 본 기술 분야의 통상의 지식을 가진 자라면 알 수 있는 바와 같이, 프로그램 모듈의 기능은 다양한 실시예에서 원하는 대로 결합되거나 분산될 수 있다. 또한, 기능은 집적 회로, 필더프로그래밍 가능한 게이트 어레이(FPGA) 등과 같은 펌웨어 또는 하드웨어 등가물로 전체적으로 또는 부분적으로 구현될 수 있다.
데이터 입력 사용자 인터페이스의 거동
개관
전술한 바와 같이, 본 발명의 다양한 실시예에 따른 오브젝트는, 데이터 입력 그래픽 사용자 인터페이스의 임의의 특성을 제어하기 위하여 애플리케이션에 의해 사용될 수 있다. 예를 들어, 본 발명에 따른 오브젝트는 데이터 입력 패널과 같은 사용자 인터페이스의 위치 및 외관 양자 모두를 제어하기 위하여 애플리케이션에 의해 사용될 수 있다. 본 발명의 다양한 환경에 따른 이러한 특정한 피쳐의 구현이 이하에 상세하게 설명될 것이다.
사용자 인터페이스의 배치
본 발명의 다양한 실시예에 따른 유틸리티 오브젝트의 한 피쳐는, 데이터 입력 그래픽 사용자 인터페이스로부터 데이터를 수신하는 애플리케이션에 의해 지정된 작업 공간의 어느 곳에라도, 데이터 입력 패널과 같은 데이터 입력 그래픽 사용자 인터페이스를 배치할 수 있는 능력이다. 본 발명의 일부 실시예에서, 작업 공간은 사용자에게 디스플레이되는 임의의 공간일 수 있다. 대안적으로, 작업 공간은 데이터 입력 그래픽 사용자 인터페이스가 사용자로부터 입력 데이터를 수신할 수 있는 임의의 공간일 수 있다. 예를 들어, 데이터 입력 그래픽 사용자 인터페이스가 표면을 지나는 스타일러스의 이동을 통해 입력 데이터를 수신하는 경우, 작업 공간은 스타일러스의 이동을 검출할 수 있는 표면의 부분에 대응하는 공간일 수 있다.
따라서, 본 발명의 일부 실시예에 따른 유틸리티 오브젝트는, 데이터 입력 그래픽 사용자 인터페이스를 사용자 인터페이스로부터의 데이터가 제공될 컨트롤에 근접하여 배치할 수 있는 능력을 갖는 애플리케이션을 제공할 수 있다. 예를 들어, 컨트롤이 에디트 컨트롤인 경우, 본 발명에 따른 유틸리티 오브젝트는, 사용자가 사용자 인터페이스 및 컨트롤로의 데이터 입력을 둘 다 동시에 볼 수 있도록, 데이터 입력 사용자 인터페이스를 에디트 컨트롤에 근접하여 배치할 수 있다. 이러한 특징은, 예를 들어, 사용자가 양식(form)과 같이 광역에도 배포된 다양한 에디트 컨트롤에 데이터를 입력하기 위하여 데이터 입력 사용자 인터페이스를 사용하는 경우에 특히 유용하다.
도 2a는 애플리케이션을 위한 그래픽 사용자 인터페이스의 일례를 도시하고 있다. 이 도면에 도시된 바와 같이, 애플리케이션의 그래픽 사용자 인터페이스가 디스플레이되는 작업 공간은 경계(201)를 갖는다. 전술한 바와 같이, 경계(201)는 디스플레이 영역의 에지일 수 있다. 대안적으로, 경계(201)는 데이터 입력 사용자 인터페이스에 대한 입력 데이터를 수신할 수 있는 영역에 대응하는 디스플레이된 공간의 에지일 수 있다. 또한, 이 도면에서 볼 수 있는 바와 같이, 애플리케이션의 사용자 인터페이스는 바운딩 박스(bounding box)에 의해 각각 경계가 정해지는 3개의 에디트 컨트롤(203-207)을 포함한다. 각각의 바운딩 박스 아래에는, 관련된 에디트 컨트롤(203-207)에 각각 입력될 데이터를 나타내는 타이틀(209-213)이 있다. 따라서, 도 2a에 도시된 애플리케이션을 위한 사용자 인터페이스는, 예를 들어 사용자로부터 개인 정보를 요청하는 컴퓨터 상에 렌더링되는 양식일 수 있다.
도 3은 도 2a에 도시된 애플리케이션의 에디트 컨트롤(203-207)에 데이터를 입력하기 위하여 채용될 수 있는 데이터 입력 그래픽 사용자 인터페이스의 한 유형을 도시하고 있다. 여기에서는 데이터 입력 패널(301)로 칭해지는 데이터 입력 그래픽 사용자 인터페이스는 경계(303)를 포함한다. 경계(303)의 내부가 기입 표면(305)이다. 본 기술 분야의 통상의 지식을 가진 자라면 알 수 있는 바와 같이, 사용자는 스타일러스와 같은 적합한 포인팅 디바이스를 사용하여 표면(305) 상에 전자 잉크를 기입할 수 있다. 그러면, 잉크는 텍스트로서 인식될 수 있다 (본 발명의 다양한 실시예에 따른 일부 데이터 입력 패널을 사용하면, 기입 표면은 스타일러스로부터의 접촉에 응답하여 전자 잉크를 생성하기만 할 수 있다). 대안적으로, 본 발명의 다양한 실시예에서, 스타일러스에 의해 이루어지는 특정 제스쳐는 소정의 동작을 수행하기 위한 커맨드로서 인식될 수 있다. 데이터 입력 패널(301)은 송신 버튼(307), 복수의 제어 버튼(309) 및 보조 인터페이스 버튼(311 및 313)을 포함한다.
사용자가 기입 표면(305) 상에 전자 잉크를 기입하고 난 후, 데이터 입력 패널(301)은 소정의 기간 후에 전자 잉크를 텍스트로 변환할 것이다. 그러나, 사용자가 인식 프로세스를 고속화하기를 원하는 경우, 사용자는 포인팅 디바이스를 사용하여 송신 버튼(307)을 활성화할 수 있다. 일단 텍스트가 전자 잉크로부터 인식되면, 텍스트는 컨트롤 내의 삽입 포인트에서 애플리케이션에 삽입된다. 인식된 텍스트를 삽입 포인트에서 삽입하는 것에 더하여, 사용자는 제어 버튼(309)을 사용하여 비캐릭터 액션(non-character action)도 삽입 포인트에 삽입할 수 있다. 예를 들어, 제어 버튼(309)을 사용하여, 사용자는 삽입 포인트를 현존하는 텍스트의 전후로 이동하고, 삭제, 후진, 및 캐리지 복귀의 생성을 행할 수 있다.
이하에 더 상세하게 설명되는 바와 같이, 보조 인터페이스 버튼(311 및 313)의 활성화는, 데이터 입력 패널(301)이 각각 숫자와 심볼을 포함하는 추가의 소프트 키보드들을 디스플레이하게 하는 한편, 닫기 버튼(close button)(315)의 활성화는 데이터 입력 패널(301)이 닫히게 할 것이다. 데이터 입력 패널(301)은 표면 선택 버튼(317 및 319)을 포함한다. 이하에서 상세하게 설명되는 바와 같이, 표면 선택 버튼은 사용자가 데이터 입력 패널(301)에 의해 디스플레이되는 데이터 입력 표면들 간을 전환할 수 있게 한다. 도 3에서는, 기입 표면 버튼(317)이 활성화되어, 데이터 입력 패널(301)이 기입 표면(305)을 디스플레이할 것을 촉구한다.
사용자가 에디트 컨트롤에 데이터를 삽입하고자 할 때, 사용자는 우선 예를 들어 스타일러스 또는 마우스와 같은 포인팅 디바이스를 사용하여, 에디트 컨트롤 내에 삽입 포인트를 수립한다. 도 2b를 다시 보면, 예를 들어 에디트 컨트롤(203)에 데이터를 삽입하고자 하는 사용자는, 에디트 컨트롤(203)의 경계 내에 삽입 포인트(215)를 수립한다. 전형적으로, 에디트 컨트롤 내에 삽입 포인트를 배치하면, 컴퓨터의 운영 시스템은 입력 초점을 그 에디트 컨트롤로 쉬프트시킨다. 즉, 운영 시스템은 사용자에 의해 입력되는 미래의 데이터가 그 에디트 컨트롤에 전달될 것임을 인식한다. 에디트 컨트롤(203)이 입력 초점을 수신하는 것에 응답하여, 본 발명의 다양한 실시예에 따른 유틸리티 오브젝트는, 데이터를 에디트 컨트롤(203)에 입력하기 위한 데이터 입력 패널(301)을 디스플레이하도록 공유 컴포넌트에 명령한다. 공유 컴포넌트는 다수의 유틸리티 오브젝트들 간에 공유될 수 있는 그래픽 사용자 인터페이스를 캡슐화하고 인스턴스화한다. 이하에 더 상세하게 설명되는 바와 같이, 공유된 그래픽 사용자 인터페이스의 특성은 사용자 인터페이스를 제어하는 오브젝트에 의해 제공되는 데이터에 따라 달라질 것이다.
본 발명의 일부 실시예에서, 유틸리티 오브젝트는 사용자가 삽입 포인트를 에디트 컨트롤 내에 위치시킬 때마다 데이터 입력 패널(301)을 디스플레이하도록 공유 컴포넌트에 명령할 수 있다. 그러나, 본 발명의 다른 실시예에서, 유틸리티 오브젝트는, 사용자가 스타일러스를 사용하여 삽입 포인트를 위치시키는 것에만 응답하여 데이터 입력 패널(301)을 디스플레이하도록 공유 컴포넌트에 명령할 수 있다. 오브젝트는, 스타일러스 포인팅 디바이스에 의해 생성된 삽입 포인트에만 응답함으로써, 사용자가 키보드 또는 마우스와 같은 상이한 데이터 입력 도구를 채용하고 있을 때에 데이터 입력 패널(301)이 디스플레이되는 것을 방지한다. 따라서, 데이터 입력 패널(301)은 실질적으로 데이터를 컨트롤에 입력할 필요가 있을 때에만 디스플레이될 것이다.
유틸리티 오브젝트는, 에디트 컨트롤(203)이 입력 초점을 수신 중인 것으로 결정하면, 에디트 컨트롤(203)에 대한 특정 위치에 데이터 입력 패널(301)을 디스플레이하도록 공유 컴포넌트에 명령한다. 예를 들어, 오브젝트는 데이터 입력 패널(301)의 가장 근접한 수평 경계 에지와 에디트 컨트롤(203)의 가장 근접한 수평 경계 에지 간의 수직 오프셋을 지정할 수 있다. 마찬가지로, 오브젝트는 데이터입력 패널(301)의 가장 근접한 수직 경계 에지와 에디트 컨트롤(203)의 가장 근접한 수직 경계 에지 간에 수평 오프셋을 지정할 수 있다. 본 발명의 일부 실시예에서, 오브젝트는, 데이터 입력 패널(301)이 관련 에디트 컨트롤에 인접한 채로 남아있는 한편 미리 지정된 작업 공간 내에 맞도록, 데이터 입력 패널(301)의 높이 및 폭을 지정할 수 있다.
설명된 실시예에서, 공간이 작업 공간 경계(201) 내에서 이용 가능한 경우, 유틸리티 오브젝트는 데이터 입력 패널(301)을 에디트 컨트롤(203)의 경계의 아래의 우측을 향해 쉬프트시켜 디스플레이하도록 공유 컴포넌트에 명령한다. 예를 들어, 오브젝트는, 데이터 입력 패널(301)의 상부 경계를 에디트 컨트롤 블럭(203)의 하부 경계보다 .25 인치 아래의 화소에 위치시키도록 공유 컴포넌트에 명령할 수 있다. 마찬가지로, 오브젝트는, 데이터 입력 패널(301)의 좌측 수직 경계를 에디트 컨트롤(203)의 좌측 수직 경계에서 1/16 인치 우측에 있는 화소에 위치시키도록 공유 컴포넌트에 명령할 수 있다.
이러한 위치 배열은, 애플리케이션이 다양한 에디트 컨트롤로 양식을 디스플레이하는 경우에 특히 편리하다. 데이터 입력 패널(301)을 에디트 컨트롤(203)의 아래에 그 우측을 향해 약간 쉬프트되도록 배치하면, 데이터 입력 패널(301)은 여전히 에디트 컨트롤(203)에 근접하여 있지만, 에디트 컨트롤(203)에 입력되는 텍스트를 사용자가 보는 것을 방해하지 않는다. 이러한 배치에 의하면, 사용자는 에디트 컨트롤(203)의 바로 아래에 있는 에디트 컨트롤(205)의 적어도 일부분을 볼 수 있게 되어, 에디트 컨트롤(205)에도 데이터를 입력하는 것을 잊지 않는다. 또한,에디트 컨트롤(205)이 부분적으로 보이므로, 사용자는 스타일러스를 사용하여 컨트롤을 타겟으로 하여, 입력 초점을 에디트 컨트롤(205)로 이동시킬 수 있다. 또한, 에디트 컨트롤(203)과 관련된 타이틀(209)이 왼쪽 정렬된 경우, 데이터 입력 패널(301)을 우측으로 쉬프트시켜 배치하면, 사용자는 타이틀(209)의 적어도 제1 문자를 볼 수 있으므로, 사용자가 에디트 컨트롤(203)에 어떤 데이터가 입력될 지를 기억하는 것을 도울 수 있다.
일단 데이터 입력 패널(301)이 디스플레이되면, 사용자는 텍스트를 에디트 컨트롤(203)에 입력하기 위하여 데이터 입력 패널(301)의 기입 표면을 채용할 수 있다. 예를 들어, 도 2c에 도시된 바와 같이, 사용자는 기입 표면 상에 전자 잉크(217)로 이름 "John Doe"를 손으로 쓸 수 있다. 소정의 시간이 경과한 후, 또는 사용자가 송신 버튼(307)을 활성화시킨 경우, 데이터 입력 패널(301)은 잉크(217)로부터 텍스트를 인식한다. 그러면, 도 2d에 도시된 바와 같이, 데이터 입력 패널(301)은 인식된 텍스트(219)를 에디트 컨트롤(203)에 삽입한다.
본 발명의 다양한 실시예에서, 오브젝트는, 데이터 입력 패널(301)의 디폴트 위치가 관련된 에디트 컨트롤을 가리지 않고서 사용될 수 없는 상황을 보상할 수 있다. 예를 들어, 도 4에 도시된 바와 같이, 데이터 입력 패널(301)은 에디트 컨트롤(207)에 텍스트를 입력하는 데에 사용되고 있다. 에디트 컨트롤(207)은 작업 공간의 경계(201)의 바로 위에 있기 때문에, 데이터 입력 패널(301)은 에디트 컨트롤(207)의 아래에는 삽입될 수 없다. 이러한 상황에서, 오브젝트는, 에디트 컨트롤(207)보다 위에 그 우측으로 쉬프트된 위치에 데이터 입력 패널(301)을 렌더링하도록 공유 컴포넌트에 명령한다. 더 상세하게는, 오브젝트는 공유 컴포넌트에 음의 방향의 수직 오프셋을 제공함으로써, 이러한 데이터 입력 패널(301)을 에디트 컨트롤(207)의 상측에 배치할 수 있다.
마찬가지로, 데이터 입력 패널(301)을 에디트 컨트롤의 우측으로 쉬프트하여 디스플레이할 충분한 공간이 없는 경우, 오브젝트는 데이터 입력 패널(301)을 에디트 컨트롤의 좌측으로 쉬프트하여 배치하도록 공유 컴포넌트에 명령할 수 있다. 예를 들어, 도 5에 도시된 바와 같이, 에디트 컨트롤(203)이 작업 공간 경계(201)의 수직 부분에 지나치게 근접하여, 데이터 입력 패널(301)을 에디트 컨트롤(203)의 우측으로 쉬프트시켜 디스플레이할 수가 없다. 대신에, 오브젝트는 데이터 입력 패널(301)을 에디트 컨트롤(203)의 좌측으로 쉬프트시켜 배치하도록 공유 컴포넌트에 명령한다. 즉, 오브젝트는 공유 컴포넌트에 음의 방향의 수평 오프셋 값을 제공한다. 따라서, 데이터 입력 패널(301)은 하부의 에디트 컨트롤(205)을 완전히 가리지는 않을 것이다. 또한, 애플리케이션이 그 사용자 인터페이스의 우측변을 따르는 에디트 컨트롤을 포함하는 경우, 본 발명의 실시예에 따른 데이터 입력 패널(301)을 채용하는 사용자는, 여전히 이러한 에디트 컨트롤에 대하여 우측 정렬된 제목을 부분적으로 볼 수 있을 것이다. 마찬가지로, 데이터 입력 패널(301)을 에디트 컨트롤의 아래의 좌측으로 쉬프트하여 디스플레이할 공간이 불충분한 경우, 도 6에 도시된 바와 같이, 오브젝트는 데이터 입력 패널(301)을 에디트 컨트롤의 위의 좌측으로 쉬프트하여 디스플레이하도록, 공유 컴포넌트에 명령한다.
일부 경우에서, 사용자는 복수-라인 에디트 컨트롤에 데이터를 입력하기 위하여 데이터 입력 패널(301)을 채용하기를 원할 수 있다. 본 발명의 다양한 실시예에 따르면, 데이터 입력 패널(301)은 상기에 설명된 단일 라인 에디트 컨트롤에 대한 위치와 마찬가지의 방식으로 복수 라인 에디트 컨트롤에 대하여 배치될 수 있다. 그러나, 복수 라인 에디트 컨트롤이 지나치게 커서, 데이터 입력 패널(301)이 복수 라인 에디트 컨트롤의 위 또는 아래에 배치될 수 없는 경우, 오브젝트는 데이터 입력 패널(301)을 에디트 컨트롤 자체의 내부에 배치하도록 공유 컴포넌트에 명령할 수 있다. 예를 들어, 삽입 포인트(215)가 복수 라인 에디트 컨트롤의 상반부 내에 (또는, 작업 공간의 상반부 내에) 위치하는 경우, 오브젝트는 데이터 입력 패널(301)을 복수 라인 에디트 컨트롤의 최하부에(또는 작업 공간에서 사용할 수 있는 최하부의 위치에) 배치하도록 공유 컴포넌트에 명령할 수 있다. 그러나, 본 기술 분야의 통상의 지식을 가진 자라면 알 수 있는 바와 같이, 사용자를 혼란시키거나 사용자의 작업 흐름을 방해하지 않기 위하여, 사용 중에 데이터 입력 패널(301)의 이동은 최소화되는 것이 바람직하다. 따라서, 본 발명의 다양한 실시예는, 사용자가 복수 라인 에디트 컨트롤의 상반부로부터 복수 라인 에디트 컨트롤의 하반부로, 또는 그 반대로 삽입 포인트(215)를 재배치한 경우에만 데이터 입력 패널(301)을 재배치할 것이다.
또한, 본 기술 분야의 통상의 지식을 가진 자라면, 본 발명의 다양한 실시예에서, 전술한 자동 배치 피쳐가 무시되거나 수정될 수 있음을 알 것이다. 예를 들어, 본 발명에 따른 오브젝트를 채용하는 소프트웨어 애플리케이션을 작성하는 개발자는 자동 배치 피쳐를 디스에이블시키고, 그 대신에 애플리케이션을 통해 호출되는 데이터 입력 사용자 인터페이스를 위한 다른 위치 정보를 제공할 수 있다. 따라서, 개발자는 데이터 입력 패널(301)을 항상 관련 컨트롤의 바로 위 또는 바로 아래에 배치할 것을 선택할 수 있다. 대안적으로, 개발자는, 사용자가 특정 컨트롤에 데이터를 삽입할 때 데이터 입력 사용자 인터페이스에 대하여 지정된 위치를 선호할 수 있다. 이러한 구성에서, 그 특정 컨트롤과 관련된 오브젝트는 사용자 인터페이스의 위치 및 크기에 대해 정확한 값을 지정할 수 있다.
본 발명의 다른 실시예에서, 오브젝트는 관련된 데이터 입력 패널(301)이 에디트 컨트롤과 함께 이동할 것을 보장할 수 있다. 예를 들어, 일부 에디트 컨트롤은 사용자가 예를 들어 포인팅 디바이스를 조작함으로써 이동시킬 수 있는 윈도우 내에 포함된다. 이하에 상세하게 설명되는 방법을 사용하면, 오브젝트를 통해 작업하는 애플리케이션은 데이터 입력 패널(301)에 그 관련 에디트 컨트롤과 함께 이동하도록 명령한다. 이 방법에서, 데이터 입력 패널(301)은 애플리케이션에 의해 지정된 새로운 위치로 직접 이동된다. 물론, 데이터 입력 태블릿(301)을 증분적으로 이동시켜, 작업 공간을 통한 데이터 입력 패널(301)의 이동을 연속적으로 디스플레이하는 다른 방법도 채용될 수 있다.
사용자 인터페이스의 외관
데이터 입력 그래픽 사용자 인터페이스의 크기 및 위치를 지정하는 것에 더하여, 본 발명의 다양한 실시예에 따른 유틸리티 오브젝트는 데이터 입력 그래픽 사용자 인터페이스의 외관도 지정할 수 있다. 따라서, 본 발명의 다양한 실시예에 따른 유틸리티 오브젝트는, 공유 컴포넌트가 디스플레이된 데이터 입력 패널(310)내에 어떤 피쳐를 포함할 것인지를 결정할 수 있다.
다시 도 3을 보면, 전술한 바와 같이, 데이터 입력 패널(301)은 2개의 상이한 데이터 입력 표면을 제공할 수 있다. 데이터 입력 패널(301)이 상기 도면에 나타난 것과 같은 기입 표면(305)을 디스플레이할 때, 데이터 입력 패널(301)은 기입 표면(305)을 가로지르는 스타일러스의 이동에 대응하여 전자 잉크를 발생시킨다. 한편, 데이터 입력 패널(301)이 키보드 표면을 디스플레이하는 경우, 데이터 입력 패널(301)은 소프트 키보드 상에서 활성화되는 각 키에 대응하는 텍스트의 캐릭터를 생성할 것이다. 전술한 바와 같이, 사용자는 표면 버튼(317 및 319)을 활성화시킴으로써, 이 표면들 간을 전후로 토글할 수 있다. 그러나, 본 발명의 다양한 실시예에서, 입력 초점이 컨트롤로 쉬프트될 때, 유틸리티 오브젝트는 데이터 입력 패널(301)이 초기에 특정 표면을 디스플레이할 것을 지정할 수 있다.
예를 들어, 애플리케이션은 패스워드 또는 제품 모델 번호와 같은 숫자 및 캐릭터의 무작위 조합을 수신하기 위한 에디트 컨트롤을 포함할 수 있다. 이러한 유형의 데이터에서, 기입 표면(305)은 데이터를 입력하는 데에 가장 적합한 표면이 아닐 수 있다. 다수의 핸드라이팅 인식기는 무작위 캐릭터들을 인식하는 데에 어려움을 갖는다. 또한, 다수의 패스워드 에디트 컨트롤은 그들의 데이터를 정확하게 디스플레이하지 않으며, 그 대신 제3자가 우연히 사용자의 패스워드를 보는 것을 방지하기 위하여, "*"와 같은 단일 캐릭터로만 디스플레이한다. 따라서, 사용자의 핸드라이팅이 부정확하게 인식되는 경우, 사용자는 인식 결과를 보고 어떤 캐릭터(들)가 잘못 인식되었는지를 결정하는 것조차 할 수 없다. 키보드 표면은 무작위 숫자 또는 캐릭터를 입력하기 위한 보다 더 신뢰할 수 있는 기술을 제공하기 때문에, 본 발명의 다양한 실시예에서, 이러한 유형의 에디트 컨트롤과 관련된 오브젝트는 키보드 표면을 초기에 디스플레이하도록 공유 컴포넌트에 명령할 수 있다.
기입 표면(305) 또는 키보드 표면의 초기 디스플레이를 지정하는 것에 더하여, 유틸리티 오브젝트는 공유 컴포넌트에 의해 디스플레이될 수 있는 임의의 표면의 초기 또는 영구적인 디스플레이를 지정할 수 있다. 예를 들어, 도 7은 아시아 언어 사용자를 위한 데이터 입력 패널(701)을 도시하고 있다. 단일 영역을 갖는 기입 표면(305)을 대신하여, 이러한 데이터 입력 패널(701)의 기입 표면은 복수의 기입 영역(703)을 동시에 디스플레이하여, 사용자가 각 영역(703) 내에 단일의 아시아 언어 캐릭터를 기입할 수 있게 한다. 따라서, 에디트 컨트롤이 아시아 언어 캐릭터의 형태로 데이터를 수신하도록 구성된 경우, 이러한 에디트 컨트롤과 관련된 유틸리티 오브젝트는, 공유 컴포넌트가 아시아 언어 데이터 입력 패널(701)을 초기에 디스플레이하도록 지정할 수 있다. 라틴 언어 기입 표면(305)에 더하여, 아시아 언어 기입 표면이 데이터 입력 패널(301) 내에 포함될 수 있음을 알아야 한다. 따라서, 본 발명의 일부 실시예에서, 사용자는 아시아 언어 기입 표면, 라틴 언어 기입 표면(305) 및 키보드 표면 간을 토글할 수 있다.
물론, 또 다른 실시예는 상이한 특수화된 표면을 임의의 개수만큼 사용할 수 있다. 예를 들어, URL(universal resource locator) 어드레스를 수신하도록 구성된 브라우저 내의 에디트 컨트롤은 캐릭터열 "www.", ".com", ".net", ".org",".gov"를 위한 키를 포함하는 소프트 키보드의 디스플레이를 지정할 수 있다. 마찬가지로, 예를 들어 데이터 입력 패널(301)이 패스워드 또는 부품 모델 번호 내의 무작위 캐릭터를 보다 더 잘 인식하는 것을 돕기 위하여, 유틸리티 오브젝트는 라틴 언어 사용자를 위해 구획된 기입 영역을 갖는 표면의 디스플레이를 지정할 수 있다. 또한, 유틸리티 오브젝트는, 사용자 인터페이스가 전자 잉크를 텍스트로 변환하지 않고서 전자 잉크를 수집하는 표면을 포함할 것을 지정할 수 있다. 이러한 유형의 표면은 예를 들어 사용자의 원본 서명을 캡쳐할 때 유용할 수 있다.
데이터 사용자 인터페이스의 호출
본 발명의 다양한 실시예에 따른 유틸리티 오브젝트는, 데이터 입력 사용자 인터페이스와 같은 사용자 인터페이스의 외관 또는 다른 특성을 결정하는 것에 더하여, 사용자 인터페이스를 어떻게 호출할 것인지를 제어하기 위하여 사용될 수 있다. 예를 들어, 본 발명의 일부 실시예에서, 유틸리티 오브젝트는, 애플리케이션으로부터의 상태 정보에 기초하여, 스타일러스 또는 펜이 그 유틸리티 오브젝트와 관련된 컨트롤에 대한 경계 영역 내에서 배회(hovering)하고 있는지를 결정할 수 있다. 이에 응답하여, 유틸리티 오브젝트는, 펜이 경계 영역의 내부를 배회하는지 또는 외부를 배회하는지에 따라, 데이터 입력 사용자 인터페이스를 자동적으로 디스플레이하거나 숨기도록 공유 컴포넌트에 명령한다. 이러한 경계 영역은 컨트롤의 정확한 경계와 일치할 수도 있고, 또는 펜이 가시적인 컨트롤 경계에 근접하기만 하면 되도록, 보다 더 넓은 영역을 덮을 수도 있다.
또한, 펜(또는 다른 포인팅 디바이스)이 삽입 포인트를 포함하는 컨트롤의범위 내로 이동할 때, 유틸리티 오브젝트는 데이터 입력 사용자 인터페이스를 즉시, 또는 약간의 지연 후에 디스플레이하도록 공유 컴포넌트에 명령할 수 있다. 이러한 지연은, 사용자가 다른 인접 컨트롤을 타겟으로 할 때, 유틸리티 오브젝트와 관련된 컨트롤을 통해, 또는 그 컨트롤 위로 펜(또는 다른 포인팅 디바이스)을 드래그하는 것을 허용하여, 사용자가 유틸리티 오브젝트와 관련된 컨트롤 내부 또는 그 위에 순간적으로 펜을 머물게 함으로써 데이터 입력 사용자 인터페이스에 액세스하려는 희망을 나타내는 경우에만, 데이터 입력 사용자 인터페이스가 디스플레이되게 한다. 본 발명의 다른 실시예에서, 유틸리티 오브젝트는 펜이 전체 디스플레이 영역의 범위 내에 있는 경우에만 데이터 입력 사용자 인터페이스를 디스플레이하도록 공유 컴포넌트에 명령하여, 펜이 전체 스크린의 범위 내에 있는 경우에만 데이터 입력 사용자 인터페이스가 보일 수 있게 한다.
본 발명의 다른 실시예에 따르면, 유틸리티 오브젝트는 데이터 입력 사용자 인터페이스가 직접적으로 호출되지 않게 할 수 있다. 그 대신에, 유틸리티 오브젝트는 데이터 입력 사용자 인터페이스를 인스턴스화하기 위한 타겟을 활성화시킬 수 있다. 더 상세하게는, 공유 컴포넌트는 데이터 입력 사용자 인터페이스를 호출하기 위한 타겟을 생성하도록 구성될 수 있다. 다르게는, 애플리케이션 프로그래밍 인터페이스 등의 다른 컴포넌트가 데이터 입력 사용자 인터페이스를 호출하기 위해 사용될 수 있다. 이러한 구성에서, 유틸리티 오브젝트는, 예를 들어 사용자가 그 유틸리티 오브젝트와 관련된 소정 유형의 컨트롤에 데이터를 입력하려고 할 때, 데이터 입력 사용자 인터페이스를 호출하기 위한 타겟을 생성하도록 공유 컴포넌트(또는 다른 응용 가능한 컴포넌트)에 명령할 수 있다. 따라서, 유틸리티 오브젝트는 타겟을 호출함으로써, 데이터 입력 사용자 인터페이스를 계속적으로 디스플레이하지 않고, 사용자가 원할 때 데이터 입력 사용자 인터페이스를 쉽게 호출할 수 있게 한다.
또한, 펜 또는 스타일러스(또는 다른 포인팅 디바이스)가 언제 데이터 입력 사용자 인터페이스 및 디스플레이 타겟 위로 또는 근접하게 이동할 지를 결정하기 위하여, 유틸리티 오브젝트(또는 유틸리티 오브젝트를 호스트하는 애플리케이션)는 펜 또는 스타일러스(또는 다른 적합한 포인팅 디바이스)의 위치에 관련된 이벤트 메시지를 모니터링할 수 있다. 이에 응답하여, 유틸리티 오브젝트는 펜(또는 다른 포인팅 디바이스)이 타겟 위에 또는 근접하여 위치한 동안에만 데이터 입력 사용자 인터페이스를 디스플레이하도록 공유 컴포넌트(또는 다른 적합한 컴포넌트)에 명령할 수 있다. 본 발명의 일부 실시예에서, 예를 들어, 데이터 입력 사용자 인터페이스 디스플레이 타겟은 직사각형, 원 또는 다른 기하학적 형태를 취할 수 있으며, 삽입 포인트를 포함하는 컨트롤의 상측, 하측, 좌측, 우측에, 및/또는 그에 중첩하여 위치될 수 있다.
전술한 바와 같이, 타겟은 즉시 또는 지연 후에 디스플레이될 수 있으며, 데이터 입력 사용자 인터페이스는 즉시 또는 지연 후에 디스플레이될 수 있다.
사용자 인터페이스의 다른 피쳐
본 발명의 다양한 실시예에서 채용되는 데이터 입력 사용자 인터페이스는 임의의 원하는 소스로부터 구현될 수 있음에 유의해야 한다. 예를 들어, 사용자 인터페이스에 대한 상이한 표면들은, 유틸리티 오브젝트로부터의 명령에 응답하여 사용자 인터페이스를 렌더링하는 공유 컴포넌트에 의해 제공될 수 있다. 다르게는, 유틸리티 오브젝트는 하나 이상의 표면을 공유 컴포넌트에 제공할 수 있다. 또한, 애플리케이션은 하나 이상의 표면을 유틸리티 오브젝트에 제공할 수 있고, 유틸리티 오브젝트는 그 표면들을 공유 컴포넌트에 제공할 수 있다. 본 발명의 일부 실시예에서, 공유 컴포넌트는 사용자 인터페이스 자체를 기동시키는 실행 가능 컴포넌트일 수 있다. 공유 컴포넌트는 복수의 유틸리티 오브젝트들 간에 데이터 패널 상태 정보를 공유하는 것을 담당하는 비-실행 가능 컴포넌트일 수 있다. 또한, 본 발명의 일부 실시예는 공유 컴포넌트를 모두 생략할 수 있다. 이러한 실시예들에서, 유틸리티 오브젝트는 데이터 입력 그래픽 사용자 인터페이스 자체를 렌더링할 수 있다.
본 발명의 다양한 실시예에서, 유틸리티 오브젝트는, 인터페이스 표면의 디스플레이를 지정하는 것에 더하여, 데이터 입력 사용자 인터페이스가 임의의 피쳐를 초기에 또는 영구적으로 디스플레이할 것을 지정할 수 있다. 예를 들어, 데이터 입력 패널(301)은 보조 키보드 버튼(311 및 313)을 포함한다. 보조 키보드 버튼(311)이 활성화되면, 데이터 입력 패널(301)은 도 8에 도시된 바와 같이 숫자 0-9, "," 캐릭터, "." 캐릭터를 포함하는 보조 키보드(801)를 디스플레이한다. 마찬가지로, 보조 키보드 버튼(317)이 활성화되면, 데이터 입력 패널(301)은 도 9에 도시된 바와 같이 다양한 심볼을 위한 키를 포함하는 보조 심볼 키보드(901)를 디스플레이한다. 본 발명의 다양한 실시예에서, 유틸리티 오브젝트는, 데이터 입력 패널(301)이 이러한 버튼, 또는 사용자에게 편리할 수 있는 다른 추가의 보조 디스플레이를 디스플레이할 수 있는지의 여부를 지정할 수 있다.
또한, 본 발명에 따른 유틸리티 오브젝트는 데이터 입력 사용자 인터페이스 내의 컴포넌트의 배열은 단순하게 정의할 수 있다. 예를 들어, 도 10에 도시된 데이터 입력 패널(301)의 피쳐는 도 3에 도시된 데이터 입력 패널(301)로부터 반전된다. 전형적으로, 이러한 배열은 왼손잡이인지 오른손잡이인지에 따른 사용자의 선호에 기초한다. 그러나, 이러한 배열은 유틸리티 오브젝트에 의해서도 지정될 수 있다.
본 발명의 일부 실시예에서, 유틸리티 오브젝트는 데이터 입력 사용자 인터페이스의 특성을 공유 컴포넌트에 간단하게 식별할 수 있음을 알아야 한다. 즉, 오브젝트는 소정의 값을 공유 컴포넌트에 제공하고, 공유 컴포넌트는 그러한 특성에 기초하여 미리 저장된 사용자 인터페이스를 렌더링한다. 대안적으로, 전술한 바와 같이, 유틸리티 오브젝트는 인터페이스의 일부 또는 전부를 사용자에게 디스플레이하기 위해 실행 가능한 컴포넌트에 제공할 수 있다. 본 발명의 다양한 실시예에 따른 유틸리티 오브젝트는 그 관련 컨트롤과는 별도로 인스턴스화될 수 있음을 알아야 한다. 그 대신에, 오브젝트는 컨트롤 내에 내장될 수 있다.
유틸리티 오브젝트의 피쳐 및 동작
개관
본 발명에 따른 유틸리티 오브젝트의 전체 동작이 상기에서 설명되었지만, 이하에서는 본 발명의 하나 이상의 특정 실시예에 따른 유틸리티 오브젝트의 특성이 보다 더 상세하게 논의될 것이다. 본 발명의 일부 실시예에 따른 유틸리티 오브젝트는 속성, 방법 및 이벤트를 포함한다. 속성은 전술한 바와 같이 오브젝트에 의해 제어되는 데이터 입력 사용자 인터페이스의 특성을 정의한다. 방법은, 애플리케이션이 예를 들어 사용자의 액션에 응답하여 데이터 입력 사용자 인터페이스의 특성을 변경하는 것을 허용한다. 그리고, 이벤트는 오브젝트에 의해 주목되는 지정된 액션의 발생이며, 오브젝트는 이에 응답한다.
속성
본 발명의 다양한 실시예에 따른 유틸리티 오브젝트는 AttachedEditWindow 속성, Busy 속성 및 Factoid 속성을 포함할 수 있다. AttachedEditWindow 속성은 데이터 입력 패널이 부가될 에디트 컨트롤 박스의 윈도우 핸들을 식별하여, 데이터 입력 패널로부터의 데이터가 우연히 잘못된 에디트 컨트롤로 송신되지 않을 것을 보장한다. 오브젝트를 사용하는 애플리케이션에 의해 판독될 수 있는 Busy 속성은, 관련된 데이터 입력 패널이 현재 잉크를 생성하거나 잉크를 인식하고 있는지의 여부를 식별한다. 그리고, Factoid 속성은, 특정 컨트롤을 위한 데이터 입력 패널의 핸드라이팅 인식의 정확성을 향상시키기 위하여, 데이터 입력 패널의 핸드라이팅 인식을 바이어스시킬 팩토이드(factoid) 또는 학습법(heuristics)의 세트를 식별한다. 예를 들어, 사용자의 나이를 수신하는 컨트롤과 관련된 팩토이드는, 입력된 전자 잉크를 문자가 아닌 숫자로서 인식하도록 데이터 입력 패널을 바이어스시킬 수 있다.
또한, 유틸리티 오브젝트는 Height 속성, Width 속성, HorizontalOffset 속성 및 VerticalOffset 속성을 포함할 수 있다. 전술한 바와 같이, HorizontalOffset 속성 및 VerticalOffset 속성은, 에디트 컨트롤에 대한 데이터 입력 패널의 위치를 정의하기 위하여 애플리케이션에 의해 설정될 수 있다. HorizontalOffset 속성의 디폴트값은 1/16 인치와 등가인 화소일 수 있으며, VerticalOffset 속성의 디폴트값은 .25 인치와 등가인 화소일 수 있다. 이러한 속성들 각각은 애플리케이션에 의해 판독 및 기입될 수 있다. 그리고, Height 속성은 텍스트 패널 사용자 인터페이스의 높이를 애플리케이션에 제공한다. 본 발명의 다양한 실시예에서, Height 속성의 디폴트값은, 다양한 디스플레이 해상도에 대해 패널의 외관 크기를 일관되게 유지하기 위하여, 예를 들어 96dpi의 디스플레이에 대하여 157 화소, 120dpi의 디스플레이에 대하여 196.25 화소, 133dpi의 디스플레이에 대하여 217.51 화소일 수 있다. 마찬가지로, Width 속성은 애플리케이션에 데이터 입력 패널의 폭을 제공한다. 본 발명의 일부 실시예에서, Width 속성의 디폴트값은 96dpi의 디스플레이에 대하여 570 화소, 120dpi의 디스플레이에 대하여 712.5 화소, 133dpi의 디스플레이에 대하여 789.7 화소일 수 있다. 본 발명의 일부 실시예는 애플리케이션이 Height 또는 Width 속성을 변경하는 것을 허용하지 않을 수 있는 한편, 본 발명의 다른 실시예는 애플리케이션이 상기 속성 중 하나 또는 둘 다를 변경하는 것을 허용할 수 있다.
유틸리티 오브젝트는, 데이터 입력 패널의 좌측 에지의 수평 위치를 애플리케이션에 제공하는 Left 속성, 및 데이터 입력 패널의 상측 에지의 수직 위치를 애플리케이션에 제공하는 Top 속성을 더 포함할 수 있다. 또한, 유틸리티 오브젝트는 입력 패널의 가시 상태(visible state)를 검색 또는 설정하는 Visible 속성을 포함할 수 있다. 따라서, 애플리케이션은, 디스플레이될 데이터 입력 패널을 표시하거나 숨기고자 하는 경우, Visible 속성의 값을 변경할 수 있다. 전형적으로, 이러한 속성의 디폴트값은 데이터 입력 패널을 표시하지 않을 것이고, 사용자가 스타일러스를 사용하여 삽입 포인트를 관련 에디트 컨트롤 내에 위치시킴으로써 초점을 해당 에디트 컨트롤로 쉬프트한 경우에만 변화할 것이지만, Visible 속성은, 사용자가 펜을 사용하여 삽입 포인트를 에디트 컨트롤 내부에 위치시킴으로써 입력 초점을 에디트 컨트롤로 변경했는지의 여부에 무관하게, 애플리케이션이 패널을 가시 상태로 할지의 여부를 배타적으로 제어하는 것을 허용한다. 이러한 디폴트값은 복수의 데이터 입력 패널이 동시에 디스플레이되는 것을 방지하는 데에도 사용될 수 있다. 그러나, 본 발명의 다른 실시예에서, 유틸리티 오브젝트는 복수의 데이터 입력 패널이 동시에 디스플레이되는 것을 허용할 수 있다.
유틸리티 오브젝트는, 상기에 나열된 속성 이외에, DefaultPanel 속성 및 CurrentPanel 속성을 가질 수 있다. DefaultPanel 속성은 어떤 표면이 데이터 입력 패널 내에 디폴트로 디스플레이될 것인지를 결정하는 한편, CurrentPanel 속성은 어떤 표면이 현재 데이터 입력 패널 내에 디스플레이되고 있는지를 결정한다. 특수화된 패널을 위해 채용될 수 있는 다양한 패널값이 존재하지만, 예시된 본 발명의 실시예(키보드 표면 및 기입 패드 표면을 가짐)에서는 4개의 패널값이 가능하다.
제1 패널값, 즉 Default값은 DefaultPanel 속성에만 주어질 수 있으며, 데이터 입력 패널이 적합한 입력 언어를 위한 디폴트 핸드라이팅 표면으로 초기에 시작되고, 오브젝트 인스턴스의 남아있는 시간 동안 사용자에 의해 선택된 임의의 표면으로 유지될 것을 지정한다. 제2 패널값, 즉 비활성값은 오브젝트 자체에 의해 CurrentPanel 속성에만 할당될 수 있으며, 애플리케이션에 의해 판독될 수 있다. 이 값은 데이터 입력 패널이 사용 가능하지 않음을 나타내고, 이는 다른 데이터 입력 패널과 관련된 컨트롤이 현재 초점을 가진 경우에 발생한다. 제3 패널값, 즉 핸드라이팅값은 CurrentPanel 속성 및 DefaultPanel 속성값 양자 모두에 할당되고, 이들로부터 판독될 수 있다. 이러한 패널값은, 데이터 입력 패널이 디스플레이될 때, 공유 컴포넌트가 적합한 입력 언어를 위한 핸드라이팅 표면을 디스플레이하게 한다. 마찬가지로, 제4 패널값, 즉 Keyboard값은 CurrentPanel 속성 및 DefaultPanel 속성값 양자 모두에 할당되고, 이들로부터 판독될 수 있다. 키보드 패널값은, 데이터 입력 패널이 디스플레이될 때, 공유 컴포넌트가 적합한 입력 언어를 위한 키보드 표면을 디스플레이하게 할 수 있다.
본 발명의 다양한 실시예에 따른 오브젝트는, 상기 나열된 속성들에 더하여, 데이터 입력 그래픽 사용자 인터페이스의 특성을 수립하기 위한 임의의 원하는 속성을 포함할 수 있음에 유의해야 한다. 예를 들어, 오브젝트는 특정 인식 사전(recognition dictionary), 입력 핸드라이팅의 인식을 바이어스시키기 위한 팩토이드 학습법, 일반적으로 또는 지정된 컨트롤에 삽입되고 있는 텍스트를 인식하기 위하여 지정된 인식 엔진을 사용하는 것, 또는 사용자가 새로운 핸드라이팅의 입력을 중단하는 것을 기다리지 않고 입력 핸드라이팅의 배경 인식을 수행하기 위한 사용자 인터페이스를 위한 명령과 같이 사용자 인터페이스에 대한 하나 이상의 인식 컨텍스트 특성을 지정하는 속성을 포함할 수 있다. 또한, 오브젝트는, 사용자 인터페이스가 인식된 텍스트, 특정 전자 잉크 두께 또는 색상을 복귀시키기 위해 할당된 인식 타임아웃값을 사용하거나, 또는 키보드 표면 상의 원하는 키를 강조 표시하게 하는 속성을 포함할 수 있다. 또한, 오브젝트를 위한 속성 또는 방법은, 입력 패널이 컨트롤에 잉크를 직접 삽입하거나 컨트롤에 미리 삽입되어 있는 잉크에 액세스하는 것을 허용할 수 있다. 또한, 오브젝트는, 데이터 입력 패널이 기입 표면 상에 복수의 라인을 디스플레이하게 하고, 사용자가 그 데이터 입력 패널을 자발적으로 닫을 수 있는지를 결정하고, 또는 데이터 입력 패널의 상태(즉, 패널이 사용중인지, 패널이 전자 잉크를 포함하는지 등)에 관하여 애플리케이션에 통지하게 하는 속성을 포함할 수 있다.
전술한 유형의 하나 이상의 속성은 컨트롤 자체에 내장될 수 있음에 유의해야 한다. 예를 들어, 애플리케이션은, 사회 보장 번호를 수신하기 위한 리치 에디트 컨트롤에 입력되는 데이터가 핸드라이팅의 인식을 문자로부터 숫자의 인식으로 바이어스시키는 팩토이드를 사용하여 인식되도록 지정할 수 있다. 본 발명의 다양한 실시예에 대하여, 이러한 임의의 속성은 관련 오브젝트에 의해 사용되기 보다는 특정한 컨트롤에 매립될 수 있다. 또한, 애플리케이션은 내부적으로 유틸리티 오브젝트를 채용하는 컨트롤을 포함할 수 있으며, 이것은 그 자신의 애플리케이션 프로그래밍 인터페이스 상에 오브젝트의 애플리케이션 프로그래밍 인터페이스를 노출시킬 수도 있고 노출시키지 않을 수도 있다. 그러나, 이러한 유형의 컨트롤은, 별개의 유틸리티 오브젝트를 채용하더라도, 입력 초점을 수신한 때에 입력 패널을 디스플레이할 것이다.
방법
본 발명의 다양한 실시예에 따른 유틸리티 오브젝트는, 상기에 나열된 속성에 더하여, 수개의 방법을 수행할 수 있다. 예를 들어, 유틸리티 오브젝트는, 공유 컴포넌트가 임의의 계류 중인 핸드라이팅에 대한 핸드라이팅 인식을 즉시 수행한 후, 인식 결과를 부가된 에디트 컨트롤에 송신할 것을 요청하는 CommitPendingInput 방법을 수행할 수 있다. 전형적으로, 공유 컴포넌트는 소정의 미리 설정된 타임아웃 기간 후 자동적으로 핸드라이팅 인식을 수행할 것이기 때문에, CommitPendingInput 방법은 입력이 직접적으로 인식 및 제출되도록 하기 위하여, 애플리케이션에 의해 사용될 수 있다. 오브젝트는, 사용자가 그에 부가된 에디트 컨트롤로부터 멀어지는 방향으로 입력 초점을 이동시키고 있음을 검출할 때, 또는 애플리케이션이 셧다운 중임을 검출할 때, 이 방법을 이용할 수 있다.
유틸리티 오브젝트는, 스타일러스를 사용하여 컨트롤의 입력 초점이 설정된 때에 데이터 입력 패널이 나타날지를 지정하는 부울리언값을 설정 또는 검색하는 AutoShow 방법을 포함할 수 있다. 따라서, AutoShow 방법은, 사용자가 펜 또는 스타일러스를 사용하여 부가된 컨트롤에 초점을 설정한 경우에 데이터 입력 패널의 활성화를 디스에이블시키기 위하여 사용될 수 있다. 즉, AutoShow 방법은, 애플리케이션이 Visible 속성의 값을 변화시킬 때에 데이터 입력 패널이 가시 상태로 되는 것만을 보장하기 위하여 채용될 수 있다. 또한, 유틸리티는 데이터 입력 패널의 위치를 정적인 스크린 위치로 설정하는 MoveTo 방법, 및 공유 컴포넌트가 초기화 시에 판독되는 데이터 입력 패널 설정을 갱신하게 하는 Refresh 방법을 수행할 수 있다.
또한, 애플리케이션이 마이크로소프트 WINDOWS?브랜드 XP 태블릿 PC 에디션 운영 시스템과 같은 텍스트 서비스 프레임워크를 제공하는 운영 시스템에서 채용되는 경우, 유틸리티 오브젝트는 리치 에디트 컨트롤 또는 잉크 에디트 컨트롤(즉, 텍스트 서비스 프레임워크를 지원하는 에디트 컨트롤)과 관련될 때에는 EnableTextServicesFramework 방법을 수행할 수 있다. 본 기술 분야의 통상의 지식을 가진 자에게 알려져 있는 바와 같이, 텍스트 서비스 프레임워크는 다양한 메타데이터를 텍스트와 관련시킬 수 있다. 예를 들어, 핸드라이팅 또는 음성으로부터 텍스트가 인식된 경우, 그 텍스트는 대안적인 인식 선택안을 가질 것이다. 애플리케이션이 텍스트 서비스 프레임워크를 지원하는 경우, 애플리케이션은 텍스트를 수신한 때에, 그 텍스트와 관련된 임의의 메타데이터를 수신하고 유지할 것이다. 따라서, 이러한 방법을 수행하는 것은, 공유 컴포넌트가 부가된 컨트롤 상에서 응용 가능한 텍스트 서비스 프레임워크{예를 들어, 마이크로소프트 WINDOWS?브랜드 XP 태블릿 PC 에디션 운영 시스템에서 사용되는 공통 텍스트 프레임워크(Common Text Framework)}를 시작하게 한다.
텍스트 서비스 프레임워크는, 정정 기능을 수행하는 것은 물론, 인식된 입력 데이터가 그 수신지 에디트 컨트롤과 정확하게 매칭될 것을 보장하기 위하여 사용될 수 있다. 더 상세하게는, 리치 에디트 컨트롤 또는 잉크 에디트 컨트롤이 공통텍스트 프레임워크를 호출할 때, 공통 텍스트 프레임워크는 순차적으로 인식된 텍스트에 대하여, 그 인식된 텍스트를 컨트롤에 관련시키는 메타데이터를 생성한다. 따라서, 입력 초점이 컨트롤로부터 쉬프트된 후에라도, 공통 텍스트 프레임워크는 인식된 텍스트를 컨트롤과 매칭시킬 수 있고, 인식된 텍스트가 컨트롤에 삽입되는 것을 보장할 수 있다.
그러나, 공통 텍스트 프레임워크를 사용하면, 오브젝트는, 리치 에디트 컨트롤이 공통 텍스트 프레임워크에 OLE 인터페이스를 요청할 것을 명령하는 메시지를 리치 에디트 컨트롤에 송신해야만 함에 유의해야 한다 (즉, 리치 에디트 컨트롤은 COM 피쳐에 액세스하기 위하여 COM 인터페이스에 대한 포인터를 요청해야만 한다). 본 발명의 일부 실시예에서, 오브젝트가 리치 에디트 컨트롤에 부가되지 않은 경우, 메시지는 의미가 없게 되고 원하지 않는 결과를 발생시킬 수도 있으므로, 이러한 메시지는 자동적으로 수행되기 보다는 EnableTextServicesFramework 방법으로 수행된다. 그러나, 본 발명의 다른 실시예에서, 유틸리티 오브젝트는 컨트롤 또는 윈도우의 클래스 명칭을 조사하고, 식별된 클래스 명칭에 기초하여 메시지를 자동적으로 송신할 수 있다.
전술한 방법들 이외에, 다른 방법들도 본 발명의 다양한 실시예에서 추가적으로 또는 대안적으로 채용될 수 있다. 따라서, 자체의 데이터 입력 패널을 제공하는 운영 시스템에 의해 애플리케이션이 실행되는 경우, 유틸리티 오브젝트는 그 시스템 데이터 입력 패널에 관련된 다양한 방법을 수행할 수 있다. 예를 들어, 오브젝트는 시스템 데이터 입력 패널의 현재 가시성을 결정하고, 시스템 데이터 입력패널의 가시성 상태를 설정하며, 오브젝트와 관련된 데이터 입력 패널이 시스템 데이터 입력 패널과 어떻게 상호 작용하는지를 제어하는 방법을 호출할 수 있다.
이벤트
상기에 나열된 방법 및 속성에 더하여, 본 발명의 다양한 실시예에 따른 유틸리티 오브젝트는 다양한 이벤트에 대하여 모니터링할 수 있다. 예를 들어, 유틸리티 오브젝트는, 오브젝트가 사용자 입력을 그에 부가된 컨트롤에 삽입할 수 있게 되기 전에 입력 초점이 변경된 경우에 발행하는 InputFailed 이벤트에 대하여 모니터링할 수 있다. 이하에 상세하게 설명되는 바와 같이, InputFailed 이벤트는 인식된 텍스트가 에디트 컨트롤에 적합하게 전달되지 않았음을 애플리케이션에 경고하는 데에 사용될 수 있다. 또한, 오브젝트는 데이터 입력 패널의 표면이 변화한 경우에 발생하는 PanelChanged 이벤트, 및 데이터 입력 패널이 이동 중인 경우에 발생하는 PanelMoving 이벤트를 모니터링할 수 있다. 애플리케이션은, PanelMoving 이벤트(에플리케이션이 MoveTo 방법을 호출할 때는 물론, 패널이 스크린 상에서의 자신의 위치를 재계산할 때 점화됨) 동안 passed-in 값을 변경함으로써, 사용자 인터페이스의 좌측 및 상측 좌표를 오버라이드(override)할 수 있음에 유의해야 한다. 또한, 유틸리티 오브젝트는 데이터 입력 패널이 표시 상태로부터 숨김 상태로, 또는 그 반대로 변화하는 경우에 발생하는 VisibleChanged 이벤트에 대해 모니터링할 수 있다. 또한, 본 발명의 다양한 실시예에 다른 오브젝트는 잉크 스트로크가 인식되고 텍스트로 변환되기 전에 점화하는 이벤트를 포함할 수 있다. 이러한 이벤트는, 잉크가 인식되기 전에 애플리케이션이 그 잉크를 캡쳐하는것을 허용하여, 애플리케이션이 예를 들어 잉크를 그 본래의 형태로 수신하거나 잉크를 다른 인식 엔진에 제공할 수 있게 한다.
대안적인 애플리케이션 프로그래밍 인터페이스에서의 사용
본 발명의 일부 실시예가 일반적으로 마이크로소프트 WINDOWS?브랜드 XP 태블릿 PC 에디션 운영 시스템을 참조하여 설명되었지만, 본 발명의 다양한 실시예는 다양한 소프트웨어 환경에서 사용될 수 있음을 알 것이다. 특히, 본 발명에 따른 유틸리티 오브젝트는 COM 환경에서 사용될 수 있다. COM 환경에서, 유틸리티 오브젝트는 GUID에 관련된 DLL(Dynamic Linked Library)(즉, 데이터 입력 사용자 인터페이스를 생성하는 공유 컴포넌트)과 관련될 수 있다. 애플리케이션이 인스턴스화될 때, 마이크로소프트 WINDOWS?브랜드 XP 태블릿 PC 에디션 운영 시스템은 예를 들어 그 애플리케이션과 관련된 DLL을 찾기 위해 레지스트리를 탐색한다. 그리고, 운영 시스템은 DLL 내에 포함된 함수를 소환하고, 그 함수는 COM 인터페이스를 통해 공유 컴포넌트를 소환한다. 또한, COM 환경에서, 예를 들어, 오브젝트는 윈도우 핸들(window handle)을 통해 컨트롤에 부가될 수 있다. 마찬가지로, 본 발명에 따른 유틸리티 오브젝트는 데이터 입력 패널의 외관을 자동 오브젝트를 랩핑(wrapping)하는 클래스에 관련시킴으로써, .NET 환경에서 사용될 수 있다. 그러나, 전술한 바와 같이, 본 발명의 다양한 실시예에 따른 유틸리티 오브젝트는 임의의 적합한 운영 시스템에서 채용될 수 있다.
애플리케이션에서의 오브젝트의 동작
애플리케이션에 의한 오브젝트의 기동
이하에서는, 본 발명의 다양한 실시예에 따른 오브젝트의 동작이 도 11a, 11b 및 12를 참조하여 설명될 것이다. 도 12에 도시된 예시적인 구성에 나타나 있는 바와 같이, 애플리케이션(1201)은 3개의 컨트롤(1203, 1205, 1207)을 포함한다. 유틸리티 오브젝트(1209)는 컨트롤(1203)에 부가된다. 마찬가지로, 유틸리티 오브젝트(1211)는 컨트롤(1205)에 부가되고, 유틸리티 오브젝트(1213)는 컨트롤(1207)에 부가된다. 제2 애플리케이션(1215)은 컨트롤(1217) 및 컨트롤(1219)을 포함한다. 본 발명의 다양한 실시예에 따른 유틸리티 오브젝트는 컨트롤(1217) 및 컨트롤(1219)에 부가된다. 각각의 유틸리티 오브젝트(1209, 1211, 1213, 1221)는 공유 컴포넌트(1223)와 인터페이스된다. 즉, 각각의 오브젝트(1209, 1211, 1213, 1221)는 단일 공유 컴포넌트(1223)의 사용을 공유한다. 상기에서 상세하게 설명한 바와 같이, 공유 컴포넌트(1223)는 유틸리티 오브젝트(1209, 1211, 1213, 1221)에 의해 제공된 속성값에 기초하여 데이터 입력 그래픽 사용자 인터페이스를 생성한다. 도시된 실시예에서, 공유 컴포넌트(1223)는 도 3에 도시된 것과 같은 데이터 입력 패널을 생성하지만, 본 발명의 다른 실시예에서, 공유 컴포넌트는 다른 유형의 사용자 인터페이스를 생성할 수 있음에 유의해야 한다.
이제, 도 11을 참조하면, 사용자가 컨트롤(1203)에 데이터를 입력하고자 할 때, 오브젝트(1209)는 컨트롤(1203)이 운영 시스템으로부터 입력 초점을 수신하고 있는 것으로 결정한다. 이에 응답하여, 단계(1101)에서, 공유 컴포넌트(1223)는 오브젝트(1209)로부터의 소환을 수신하며, 이것은 오브젝트(1209)에 의해 정의된 속성값을 포함한다. 이러한 값을 사용하여, 단계(1103)에서, 공유 컴포넌트(1223)는 사용자가 데이터를 컨트롤(1203)에 입력할 수 있게 하는 데이터 입력 패널을 디스플레이한다. 설명되는 실시예에서, 오브젝트(1209)에 대한 DefaultPanel 속성의 값은 디폴트이고, 이 예에서 디폴트는 초기에 기입 표면이다. 따라서, 공유 컴포넌트(1223)는 기입 표면(305)을 포함하는 데이터 입력 패널을 디스플레이한다.
공유 컴포넌트(1223)는, 입력 초점이 새로운 컨트롤로 쉬프트된 것으로 결정한 때에, 그 컨트롤의 식별(identification)을 저장한다. 이러한 식별을 사용하여, 공유 컴포넌트(1223)는 그 컨트롤이 입력 초점을 가진 동안 수신된 전자 잉크와 컨트롤을 관련시킬 수 있다. 이전의 컨트롤과 관련된 전자 잉크가 여전히 인식되고 있는 동안 입력 초점이 새로운 컨트롤로 순차적으로 쉬프트하는 경우, 공유 컴포넌트(1223)는 인식된 잉크가 적합한 컨트롤에 전달될 수 없는 것으로 결정한다 (그러나, 전술한 바와 같이, 공통 텍스트 프레임워크가 부가된 컨트롤 상에 호출되는 경우, 데이터 입력 패널은 초점이 컨트롤을 떠난 후에도 그 컨트롤에 대한 핸드라이팅의 결과를 송신할 수 있다). 따라서, 공유 컴포넌트(1223)는 인식된 텍스트와 함께 InputFailed 이벤트를 애플리케이션에 발행한다. 이에 의해, 애플리케이션은 인식된 텍스트를 적합한 컨트롤로 다시 라우팅할 수 있게 된다.
사용자가 데이터를 다른 컨트롤에 입력하기를 원하는 경우, 사용자는 입력 초점을 컨트롤(1203)로부터 원하는 컨트롤로 쉬프트시킨다. 예를 들어, 사용자가 데이터를 컨트롤(1217)에 입력하기를 원하는 경우, 사용자는 스타일러스를 컨트롤(1217)의 경계 내부에 탭핑하여 삽입 포인트를 위치시킴으로써, 초점을 이 컨트롤로 변경한다. 단계(1105)에서, 공유 컴포넌트(1223)는 초점이 컨트롤(1203)로부터 컨트롤(1217)로 변화하려고 하는 것으로 결정한다. 단계(1107)에서, 공유 컴포넌트(1223)는 초점을 수신한 컨트롤과 관련된 오브젝트 내의 DefaultPanel 속성의 값도 디폴트인지를 결정한다. 후속 오브젝트의 DefaultPanel 속성의 값이 디폴트가 아닌 경우, 공유 컴포넌트(1223)는 데이터 입력 패널의 현재 상태를 캐쉬한다. 그 대신에, 이 예에서, 오브젝트(1221)의 DefaultPanel 속성의 값은 키보드이다. 따라서, 단계(1109)에서, 공유 컴포넌트(1223)는 DefaultPanel 속성의 현재값을 캐시한다. 그러나, 오브젝트(1221)의 DefaultPanel 속성의 값이 디폴트였던 경우는, 아무런 액션도 행해지지 않는다.
오브젝트(1221)가 공유 컴포넌트(1223)의 컨트롤을 획득하는 경우, 오브젝트(1221)는 공유 컴포넌트(1223)가 초기에 키보드 표면을 디스플레이하는 데이터 입력 패널을 사용자에게 제공하게 한다. 이후에, 사용자가 입력 초점을 컨트롤(1207)과 같은 또 다른 컨트롤로 변경하기를 원하는 경우, 공유 컴포넌트(1223)는 초점의 변화를 다시 검출하고, 이전에 캐시되었던 DefaultPanel 속성의 값(여전히 기입 표면임)을 검색 및 복구한다. 따라서, 이전에 디스플레이된 기입 패드가 복구된다. 그리고, 공유 컴포넌트(1223)는 단계(1107)로 복귀하여, DefaultPanel 속성의 값이 디폴트인지를 결정한다. 이 경우에서, 컨트롤(1207)의 DefaultPanel 속성도 디폴트이므로, 공유 컴포넌트(1223)는 아무런 액션도 행하지 않으며, 컨트롤(1207)은 데이터 입력 패널의 외관을 현재 상태로 유지시킨다. 따라서, 디폴트값은, 현재의 패널 유형이 무엇인지에 상관없이, 새로운 패널 유형을 수신하는 공유 컴포넌트(1223)에 응답하여 현재의 패널 유형이 캐시되며, 입력 초점이 다시 변화할 때 복구될 것을 간단하게 보장한다.
공유 컴포넌트의 사용
상기에서 상세하게 논의된 바와 같이, 각각의 유틸리티 오브젝트는 사용자 인터페이스의 동작을 제어하기 위하여 단일의 공유 컴포넌트를 채용한다. 따라서, 각각의 오브젝트는 단일 공유 컴포넌트와 통신하며, 그에 응답하여 정보를 수신할 수 있다. 예를 들어, 본 발명의 일부 구현에서, 오브젝트 및 공유 컴포넌트는 상이한 소프트웨어 프로세스들 간에서 정보를 교환하기 위하여 마이크로소프트 WIN32 애플리케이션 프로그래밍 인터페이스를 채용할 수 있다. 이러한 애플리케이션 프로그래밍 인터페이스를 사용하면, 오브젝트는 태스크를 수행하기 위한 명령과 함께 이벤트 "핸들" 또는 다른 참조를 컴포넌트에 전달할 수 있고, 공유 컴포넌트가 그 태스크의 완료를 나타내기 위하여 이벤트를 "설정"한 때를 식별할 수 있다. 대안적으로, 또는 부가적으로, 오브젝트는 공유 컴포넌트가 응답 내에 데이터와 함께 메시지(예를 들어, 데이터 입력 패널의 상태)를 응답으로 제공할 것을 요청하는 명령을 공유 컴포넌트에 제공할 수 있다. 본 발명의 상이한 실시예들에 따르면, 오브젝트와 공유 컴포넌트 간에 정보를 통신하기 위하여, 또 다른 통신 기술 및 방법이 채용될 수 있다.
본 발명의 다양한 실시예에 의해 사용될 수 있는 다양한 오브젝트와 공유 컴포넌트 간의 대표적인 관계가 도 13에 도시되어 있다. 이 도면에서 볼 수 있는 바와 같이, 소프트웨어 애플리케이션(1301)은 다양한 오브젝트(1303)를 채용할 수 있다. 마찬가지로, 다른 소프트웨어 애플리케이션(1305)은 하나 이상의오브젝트(1307)를 채용할 수 있다. 설명된 실시예에서, 예를 들어, 오브젝트(1303 및 1307)은 그들 각각의 소프트웨어 애플리케이션(1301 및 1305)에 의해 생성된 COM 오브젝트일 수 있다 {소프트웨어 프로세스에 의해 유지되는 오브젝트는 소프트웨어 프로세스와 관련하여 "프로세스-내(in-process)" 오브젝트로 칭해짐}. 그러나, 본 발명의 다양한 실시예는 COM 기술을 채용하지 않는 소프트웨어 오브젝트를 포함하여, 이러한 유형의 관계에서 다른 유형의 오브젝트를 채용할 수 있다.
각각의 오브젝트(1303 및 1307)는 공유 컴포넌트(1309)와 통신하며, 이것은 본 발명의 일부 실시예에 따른 COM 기술을 사용하여 구현될 수 있다. 기동시에, 각각의 오브젝트(1303 및 1307)는 공유 컴포넌트(1309)를 인스턴스화한다. 예를 들어, 오브젝트(1303 및 1307) 및 공유 컴포넌트(1309)가 COM 기술을 사용하여 구현되는 경우, 오브젝트(1303 또는 1307)는 공유 컴포넌트(1309)를 인스턴스화하기 위하여 "CoCreate Instance"를 수행할 수 있다. 공유 컴포넌트(1309)는 복수의 오브젝트들 간에서 공유될 수 있기 때문에, 공유 컴포넌트(1309)가 이미 구현되어 있는 경우, 현존하는 공유 컴포넌트(1309)에 대한 참조가 오브젝트에 응답으로 제공된다. 대안적으로, 공유 컴포넌트(1309)가 미리 존재하지 않는 경우, 공유 컴포넌트(1309)가 생성된다. 도 13에 도시된 관계에서, 각각의 오브젝트(1303 및 1307)는 공유 컴포넌트(1309)의 인터페이스 상에 방법(또는 함수) 호출(1311)을 행함으로써, 공유 컴포넌트(1309)와 통신한다. 그리고, 공유 컴포넌트(1309)는 이벤트(1313)를 오브젝트(1303 및 1307)에 복귀시킨다.
도 13에 도시된 관계는 오브젝트(1303 및 1307)가 공유 컴포넌트(1309)와 직접적으로 통신하는 것을 허용하지만, 이러한 특정한 배열은 종종 에러를 도입한다. 예를 들어, 오브젝트(1303 또는 1307)로부터 공유 컴포넌트(1309)로의 각각의 호출은 동기적이므로, 컨트롤이 호출중인 오브젝트(1303 또는 1307)에 복귀되기 전에 완료되어야만 한다. 따라서, 컨트롤이 호출중인 오브젝트(1303 또는 1307)에 복귀되기 전에 그 호출의 완료를 확인하기 위하여, 오브젝트로부터의 호출에 대응하는 임의의 이벤트가 공유 컴포넌트(1309)에 의하여 설정되어야만 한다. 따라서, 공유 컴포넌트(1309)가 이벤트를 점화하는 경우, 그 이벤트의 수신 중인 오브젝트의 핸들링에서의 임의의 지연은 공유 컴포넌트(1309)를 완전히 비응답성으로 할 수 있다. 예를 들어, 애플리케이션(1305)은 공유 컴포넌트(1309)로부터 이벤트를 수신하는 인터페이스를 사용하여 메시지 박스를 디스플레이할 수 있다. 사용자가 메시지 박스를 해산시킬 때까지, 공유 컴포넌트(1309)는 이용 불가능하며, 이벤트로의 응답이 복귀되는 것을 기다린다. 따라서, 데이터 입력 패널은 사용자가 메시지 박스를 해산시킬 때까지 채용될 수 없다.
또한, 이러한 유형의 크로스-프로세스 호출(어느 방향으로도 갈 수 있음)을 행하는 것은, 재입력 함수 호출을 트리거하여 예측할 수 없는 거동을 유발할 수 있다. 예를 들어, 오브젝트(1303 또는 1307)가 공유 컴포넌트(1309) 상에 방법을 호출할 때, 공유 컴포넌트(1309)는 그에 응답하여 자기 자신이 외부의 프로세스-외 오브젝트(out-of-process object)에 대한 호출을 행하도록 유도하는 방법을 수행할 수 있다. 따라서, 공유 컴포넌트(1309)가 COM 기술을 사용하여 구현되는 경우, 공유 컴포넌트는 표준 AddRef, Release 또는 QueryInterface 방법, 또는 외부 소프트웨어 프로세스에 의해 구현되는 임의의 다른 방법에 대한 호출을 행할 수 있다. 공유 컴포넌트(1309)가 외부 소프트웨어 프로세스 상에서의 방법에 대한 이러한 호출을 만드는 반면, 공유 컴포넌트(1309)로의 다른 호출이 오브젝트(1303 및 1307) 중 하나와 같은 상이한 오브젝트에 의해 만들어질 수 있는 동안, 작은 시간의 윈도우가 존재한다. 이러한 "재입력"의 결과로서, 공유 컴포넌트의 호출의 순서가 적합하게 동기화되지 않을 수 있다. 따라서, 공유 컴포넌트(1309)로의 인-바운드 호출(in-bound call)은 공유 컴포넌트(1309)로의 다른 인-바운드 호출에 의해 인터럽트될 수 있다. 이러한 재입력은, 호출이 인터럽트되기 전에 적절하게 완료되지 않는 경우, 상태 문제를 발생시킬 수 있다. 또한, 호출이 프로세스되는 속도에 영향을 미치는 무작위의 환경 요인으로 인해, 이벤트들은 예측할 수 없는 순서로 검색되기 때문에, 공유 컴포넌트(1309)에 의해 점화된 이벤트는 결정론적이지 않다.
따라서, 본 발명의 다양한 실시예는 도 14 및 15에 도시된 배열을 채용할 수 있다. 도 14에 도시된 바와 같이, 오브젝트(1303 및 1307)는 공유 컴포넌트(1309)에 직접적으로 호출을 송신하지 않는다. 대신에, 각각의 오브젝트(1303 및 1307)는 대응하는 프록시 또는 "스터비(stubby)" 컴포넌트(1401)에 대응하는 호출을 전송한다. 예를 들어, 오브젝트(1303A)는 프록시 컴포넌트(1401A)에 호출을 송신하는 한편, 오브젝트(1303B)는 프록시 컴포넌트(1401B)에 호출을 송신한다. 마찬가지로, 오브젝트(1303C)는 프록시 컴포넌트(1401C)에 호출을 행하는 한편, 오브젝트(1307)는 프록시 컴포넌트(1401D)에 대한 호출을 행한다.
이러한 배열을 채용하는 본 발명의 다양한 실시예에서, 오브젝트(1303 및1305)는 더 이상 공유 컴포넌트(1309)를 직접적으로 인스턴스화할 수 없다. 그 대신에, 오브젝트(1303 또는 1305)는 단일 프록시 컴포넌트(1401)를 인스턴스화할 수 있으며, 이것은 그를 호출한 오브젝트(1303 또는 1305)에 전용으로 된다. 그러면, 생성된 제1 프록시 컴포넌트(1401)는 공유 컴포넌트(1309)가 존재하는지를 결정하고, 공유 컴포넌트(1309)가 이미 존재하는 경우에는 그것을 인스턴스화할 수 있다. 마찬가지로, 파기될 최종 프록시 컴포넌트(1401)는 파기되지 전에 공유 컴포넌트(1309)를 해제할 수 있다. 최초로 생성된 프록시 컴포넌트(1401)와 최종으로 파기된 프록시 컴포넌트(1401) 사이에서 인스턴스화된 프록시 컴포넌트(1401)는 미리 생성된 프록시 컴포넌트(1401)를 간단하게 발견하여 사용한다. 본 발명의 다른 실시예에 따르면, 프록시 컴포넌트(1401)는 단순한 COM 오브젝트와 같은 단순한 오브젝트일 수 있다. 도 14에 도시된 바와 같이, 프록시 컴포넌트(1401)는 애플리케이션(1301 및 1305)과 공유 컴포넌트(1309)의 프로세스 사이의 다중 프로세스 경계의 다른쪽 상의 오브젝트(1303 및 1307)에 대한 1-대-1 맵핑을 갖는다. 더 상세하게는, 프로세스 경계는 도 14의 점선으로 표시되며, 오브젝트(1303 및 1307)와 프록시 컴포넌트(1401) 간의 1-대-1 맵핑, 및 프록시 컴포넌트(1401)과 공유 컴포넌트(1309) 사이의 다-대-1 맵핑은 꺾은 선으로 표시된다.
도 15는 오브젝트 및 공유 컴포넌트를 더 상세하게 나타내고 있다. 이 도면에서 볼 수 있는 바와 같이, 각각의 오브젝트(1303)는 애플리케이션에 의해 유지되는 메시지 큐로부터 메시지를 수신할 수 있는 메시지 수신지(1501)를 포함한다. 마찬가지로, 각각의 오브젝트(1307)는 애플리케이션(1305)에 의해 유지되는 메시지큐로부터 메시지를 수신할 수 있는 메시지 수신지(1503)를 포함한다. 각각의 메시지 수신지(1501 및 1503)는, 예를 들어 마이크로소프트 WINDOWS?브랜드 운영 시스템 또는 다른 유형의 사용자 인터페이스를 사용하여 구현되는 히든 윈도우 사용자 인터페이스(hidden windowed user interface)(또는 다른 유형의 사용자 인터페이스)일 수 있다. 더 상세하게는, 마이크로소프트 WINDOWS?브랜드 운영 시스템을 사용하여 구현되는 윈도우 사용자 인터페이스(windowed user interface)는 사용자 인터페이스를 호스트하는 애플리케이션에 의해 유지되는 메시지 큐로부터 메시지를 수신하기 위한 메시지 어드레스를 제공한다. 이러한 어드레스는 예를 들어 적합한 사용자 인터페이스에 입력 데이터(키보드로부터의 캐릭터 데이터, 또는 포인팅 디바이스로부터의 위치 데이터)를 송신하기 위하여 호스팅 애플리케이션에 의해 사용된다. 따라서, 히든 윈도우 사용자 인터페이스를 위한 메시지 어드레스는 메시지 수신지(1501)로서 사용될 수 있다. 그러나, 본 발명의 다른 실시예에서, 애플리케이션의 메시지 큐로부터 메시지를 수신하기 위한 다른 기술도 사용될 수 있음을 알아야 한다.
마찬가지로, 공유 컴포넌트(1309)는 메시지 수신지(1505)를 포함한다. 메시지 수신지(1505)는 예를 들어 공유 컴포넌트(1309)와 관련된 데이터 입력 패널 사용자 인터페이스에 의해 제공될 수 있다. 본 발명의 일부 실시예에서, 메시지 수신지(1505)는 공유 컴포넌트(1309) 자체에 의해 유지되는 메시지 큐로부터 메시지를 수신할 수 있지만, 본 발명의 다른 실시예에서, 메시지 수신지는 다른 자원에 의해 유지되는 메시지 큐로부터 메시지를 수신할 수 있다. 이하에 더 상세하게 설명되는 바와 같이, 메시지 수신지(1505)는, 애플리케이션에 의해 사용되는 방법 호출들이 동기적으로 거동할 것을 보장하는 데에 사용될 수 있다. 즉, 메시지 수신지(1505)는, 응답이 호출자에게 복귀되기 전에, 또는 프로세싱이 다른 방법 호출 상에서 시작되기 전에, 각각의 방법 호출이 완료될 것을 보장하기 위하여 사용될 수 있다.
오브젝트(1303C)와 같은 오브젝트(1303 또는 1305)는, 공유 컴포넌트(1309)에 대하여 방법 호출이 이루어져야 하는 것으로 결정한 때에, 방법 호출의 상태를 추적하는 데에 사용될 수 있는 이벤트를 정의할 수 있다. 예를 들어, 전술한 바와 같이, 오브젝트(1303C)가 마이크로소프트 WINSOWS?브랜드 운영 시스템 환경에서 동작하는 경우, 오브젝트(1303C)는 Win32 이벤트를 생성할 수 있다. 다음으로, 오브젝트(1303C)는 그에 대응하는 프록시 컴포넌트(1401C)로부터 원하는 방법을 호출한다. 프록시 컴포넌트(1401C)에 대한 호출을 행하는 데에 있어서, 오브젝트(1303C)는 방법 호출에 적합한 임의의 다른 파라미터들과 함께, 생성된 이벤트에 대한 핸들(또는 다른 식별 참조)을 프록시 컴포넌트(1401C)에 전달한다. 또한, 오브젝트(1303C)는 자신의 메시지 수신지(1501C)를 식별하는 핸들(또는 다른 식별 참조)을 공유 컴포넌트(1309)에 전달한다.
방법 호출을 수신하는 것에 응답하여, 프록시 컴포넌트(1401C)는 공유 컴포넌트(1309)의 메시지 수신지(1503)에 방법 호출을 중계하는 메시지를 포스팅(posting)한다. 또한, 그 방법 호출에 대응하는 이벤트에 대하여 공유 컴포넌트(1309) 제어를 제공하기 위하여, 이벤트 핸들을 복제하고, 그 이벤트 핸들(또는 그 복제본)을 공유 컴포넌트(1309)에 전달한다. 방법 호출을 실행하는 데에 필요한 모든 파라미터는, 이벤트 핸들 및 호출 메시지와 함께 메시지 파라미터로서 공유 컴포넌트(1309)에 송신될 수 있도록 함께 패키징된다. 유리하게는, 이러한 구성은, 방법 호출이 그 대응 오브젝트(1303 및 1307)로부터 수신되는 어떠한 순서로도, 복수의 프록시 컴포넌트(1401)가 방법 호출을 요청하는 메시지를 공유 컴포넌트(1309)의 메시지 수신지(1503)에 포스팅하는 것을 허용한다. 그 메시지 큐를 사용하여, 공유 컴포넌트(1309)는 오브젝트(1303 및 1307)로부터 수신되는 순서로 호출을 프로세스할 수 있다. 또한, 프록시 컴포넌트(1401)에 전달되는 임의의 인터페이스는, 방법을 호출하는 메시지가 공유 컴포넌트(1309)의 인터페이스(1505) 내의 메시지 큐에 포스팅된 후에만, 공유 컴포넌트(1309)에 의해 구속될 수 있다. 따라서, 공유 컴포넌트(1309)는 메시지가 메시지 큐에 포스팅되기 전에는 방법 호출을 "알아차리지" 못할 것이므로, 재입력을 방지하고, 공유 컴포넌트(1309)가 적합한 데이터를 사용하여 방법 호출을 수행할 것을 보장하게 된다. 일단, 방법을 요청하는 메시지가 인터페이스(1505)에 포스팅되고 나면, 프록시 컴포넌트(1401)는 실행을 호출 오브젝트(1303 또는 1307)로 복귀시킨다.
프록시 컴포넌트(1401)로부터 실행 컨트롤을 수신한 것에 응답하여, 오브젝트(1303 또는 1307)는 호출된 방법이 완료되는 것을 기다린다. 예를 들어, 오브젝트(1303 또는 1307)가 COM 오브젝트인 경우, 이것은 정의된 이벤트가 다른 함수가 시작되기 전에 공유 컴포넌트(1309)에 의해 복귀될 것을 기다리기 위한 CoWaitForEvent를 포스팅할 수 있다. 이러한 프로세스는, 원하는 방법이 반드시동기적으로 수행되어야 하는 경우에 채용될 수 있음을 알아야 한다. 예를 들어, 오브젝트(1303 또는 1307)가 정보 목적의 포스팅을 공유 컴포넌트(1309)에 단순히 통지하는 경우, 이벤트의 생성 및 설정될 이벤트에 대한 순차적인 대기는 생략될 수 있다.
공유 컴포넌트(1309)는 메시지 수신지(1505)에 송신된 메시지를 통해 작업하며, 메시지 큐 내에 요청된 순서대로 각 방법을 수행한다. 예를 들어, 공유 컴포넌트(1309)가 COM 기술을 사용하여 구현되는 경우, 메시지는 GetMessage 동작을 사용하여 메시지 큐로부터 추출될 수 있다. 따라서, 설명된 예시에서, 공유 컴포넌트(1309)는, 프록시 컴포넌트(1401C)에 의해 발생된 메시지에 도달한 때, 요청된 액션을 수행한다. 또한, 적합하다면, 요청된 액션을 수행하고 난 후, 공유 컴포넌트(1309)는 수행된 방법의 결과를 포함하는 대응 통지 메시지를 오브젝트(1303C)의 메시지 수신지(1501)에 포스팅한다. 예를 들어, 공유 컴포넌트(1309)가 COM 기술을 사용하여 구현되는 경우, 공유 컴포넌트(1309)는 통지 메시지를 메시지 수신지(1501C)에 포스팅하기 위하여 PostMessage 프로세스를 채용한다. 메시지 수신지(1501 및 1503)에 메시지를 포스팅하기 위하여 다양한 기술이 사용될 수 있음을 알아야 한다. 예를 들어, 마이크로소프트 WINDOWS?브랜드 운영 시스템의 WIN32 메시징 기술이 채용되는 경우, 표준 WPARAM 및 LPARAM 파라미터 내에 전달될 수 없는 데이터를 엔코딩하여, COM 오브젝트의 크로스 프로세스 특징에 의해 생성되는 마샬링 데이터를 포스팅하는 것을 방지하기 위하여, ATOM이 사용될 수 있다. 따라서, 방법 결과를 오브젝트(1303 또는 1307)에 직접적으로 제공하지 않고, 통지메시지를 메시지 수신지(1501){또는 메시지 수신지(1503)}에 포스팅하면, 재입력 상황을 방지할 수 있고, 개별적으로 오브젝트(1303 또는 1307)에 송신된 이벤트의 순서가 오브젝트(1303 또는 1307)에 의해 이루어진 방법 호출의 순서에 대응할 것을 보장한다.
또한, 공유 컴포넌트(1309)는 요청된 방법이 완료되었음을 나타내기 위하여, 수행된 방법에 대응하여 이벤트를 설정한다. 공유 컴포넌트(1309)가 이벤트(이전에 통과된 이벤트 핸들에 의해 주어짐)를 설정할 때, 이벤트를 정의하는 오브젝트(1303 또는 1307)를 해방하는 경우, 오브젝트(1303 또는 1307)는 방법을 호출한 곳으로부터 프로세싱을 재개할 수 있다. 예를 들어, 오브젝트(1303 또는 1307)가 방법 호출로부터 복귀된 정보를 기대하는 경우, 오브젝트(1303 또는 1307)는, 방법 호출에 대응하는 이벤트가 설정된 것을 검출한 때에, 기대되는 정보에 대한 메시지 큐를 체크할 것이다.
본 발명의 다양한 실시예에서, 오브젝트(1303 또는 1307)는 이벤트를 생성하는 것을 생략할 수 있음에 유의한다. 예를 들어, 소정 유형의 방법 호출에서, 오브젝트(1303 또는 1307)는 단순히 응답을 기대하지 않고 공유 컴포넌트(1309)에 정보를 포스팅할 것을 원할 수 있다. 또한, 본 발명의 일부 실시예에서, 오브젝트(1303 또는 1307)는 메시지 수신지(1505)에 메시지를 포스팅하지 않고 공유 컴포넌트(1309)에 대한 방법 호출을 행할 수 있다. 예를 들어, 본 발명의 일부 실시예는, 오브젝트(1303 또는 1307)가 데이터 입력 패널에 관하여 공유 컴포넌트(1309)에 문의(예를 들어, 데이터 입력 패널이 비지 상태인지에 대한 문의)하는 것을 허용할 수 있다. 이러한 유형의 방법 호출은 신속하게 처리되어 재입력의 기회를 감소시키며, 유용하게 될 호출 오브젝트(1303 또는 1307)에 의해 즉시 재수신되어야 하기 때문에, 이러한 유형의 방법 호출은, 대응 메시지가 공유 컴포넌트(1309)의 메시지 수신지(1505)에 포스팅되게 하지 않고서, 공유 컴포넌트(1309)에 직접적으로 전달될 수 있다.
결론
본 발명을 구현하는 바람직한 모드를 포함한 특정 예를 참조로 하여 본 발명이 설명되었지만, 본 기술 분야의 숙련된 기술자라면, 상기 기술된 시스템 및 기술의 다양한 변경 및 모방이 존재함을 알 것이다. 예를 들어, 데이터 입력 그래픽 사용자 인터페이스는 상기에 기술된 본 발명의 다양한 실시예에 따라 유틸리티 오브젝트를 통하여 개별적인 소프트웨어 애플리케이션에 의해 제어되는 한편, 본 발명의 다른 실시예에서, 데이터 입력 패널의 피쳐는 시스템을 통한 삽입 포인트의 위치와 같은 다른 소스에 의해 결정될 수 있다.
따라서, 본 발명의 취지 및 범위는 첨부된 특허청구범위에 기재된 바와 같이 넓게 해석될 수 있다.
따라서, 본 발명에 따르면, 사용자가 데이터 입력 패널과 그 데이터 입력 패널을 통해 애플리케이션에 입력되는 데이터의 삽입에 대하여 동시에 주의를 기울일 수 있게 하는 위치에, 데이터 입력 패널을 지능적으로 디스플레이할 수 있다.
Claims (56)
- 핸드라이팅된 잉크(handwritten ink)를 수신하기 위해 컴퓨터에 의해 생성된 사용자 인터페이스에 있어서,펜과 관련된 핸드라이팅된 잉크를 수신하기 위한 제1 영역; 및상기 사용자 인터페이스와 관련된 오브젝트를 구성함으로써 그 컨텐츠가 제어되는 제2 영역을 포함하는 사용자 인터페이스.
- 제1항에 있어서,상기 오브젝트는 삽입 영역 내의 삽입 포인트에 인접한 상기 사용자 인터페이스의 배치를 제어하는 사용자 인터페이스.
- 제1항에 있어서,상기 펜이 상기 사용자 인터페이스로부터 멀어지는 방향으로 이동할 때, 상기 핸드라이팅된 잉크가 삽입 포인트로 송신되는 사용자 인터페이스.
- 제3항에 있어서,상기 펜은, 상기 핸드라이팅된 잉크가 상기 삽입 포인트로 송신되기 전에 상기 사용자 인터페이스가 디스플레이되는 표면으로부터 적어도 소정의 거리만큼 이동하는 사용자 인터페이스.
- 제1항에 있어서,인터랙션시, 상기 제1 영역 내의 상기 핸드라이팅된 잉크를 삽입 영역 내의 삽입 포인트로 보내는 제3 영역을 더 포함하는 사용자 인터페이스.
- 제1항에 있어서,상기 오브젝트는 개발자에 의해 수정될 수 있는 사용자 인터페이스.
- 제2항에 있어서,상기 삽입 영역은 에디트 컨트롤(edit control)과 관련되는 사용자 인터페이스.
- 제7항에 있어서,상기 에디트 컨트롤은 상기 삽입 영역으로부터 상기 제1 및 제2 영역을 수납(housing)하는 패널의 오프셋을 지정하는 사용자 인터페이스.
- 제8항에 있어서,상기 오프셋은 수직 오프셋을 포함하는 사용자 인터페이스.
- 제8항에 있어서,상기 오프셋은 수평 오프셋을 포함하는 사용자 인터페이스.
- 제3항에 있어서,상기 핸드라이팅된 잉크는 상기 삽입 영역 내에 잉크로서 삽입되는 사용자 인터페이스.
- 제3항에 있어서,상기 핸드라이팅된 잉크는 텍스트로 변환되고, 상기 텍스트는 상기 삽입 영역 내에 삽입되는 사용자 인터페이스.
- 제8항에 있어서,상기 오프셋은 디폴트 오프셋(default offset)인 사용자 인터페이스.
- 제8항에 있어서,상기 오프셋은 상기 에디트 컨트롤에 특수한 것인 사용자 인터페이스.
- 제8항에 있어서,상기 오프셋은 개발자에 의해 정의될 수 있는 사용자 인터페이스.
- 상부 영역 및 하부 영역을 갖는 컴퓨터 디스플레이 윈도우에 있어서,삽입 영역 내에서 활성인 삽입 포인트; 및핸드라이팅된 잉크를 캡쳐하기 위한 제1 영역을 포함하는 핸드라이팅 캡쳐 패널(handwriting capture panel)을 포함하고,상기 핸드라이팅 캡쳐 패널은, 상기 삽입 영역이 상기 하부 영역 내에 있는 경우에는 상기 삽입 영역 위에 디스플레이되고, 상기 삽입 영역이 상기 상부 영역 내에 있는 경우에는 상기 삽입 영역 아래에 디스플레이되는 컴퓨터 디스플레이 윈도우.
- 제8항에 있어서,상기 상부 영역과 상기 하부 영역 간의 간격(separation)이 정의될 수 있는 컴퓨터 디스플레이 윈도우.
- 사용자 인터페이스를 제어하는 방법에 있어서,소프트웨어 애플리케이션으로부터 정보를 수신하는 단계; 및상기 수신된 정보에 기초하여 사용자 인터페이스를 호출(invoking)하는 단계를 포함하는 방법.
- 제18항에 있어서,상기 수신된 정보에 기초하여 지정된 위치에 나타나는 상기 사용자 인터페이스를 호출하는 단계를 더 포함하는 방법.
- 제18항에 있어서,상기 수신된 정보에 기초하여 지정된 피쳐(feature)를 포함하는 상기 사용자 인터페이스를 호출하는 단계를 더 포함하는 방법.
- 제18항에 있어서,상기 수신된 정보에 기초하여 지정된 피쳐를 포함하고 지정된 위치에 나타나는 상기 사용자 인터페이스를 호출하는 단계를 더 포함하는 방법.
- 제18항에 있어서,상기 정보는 컨트롤을 식별하는 방법.
- 제22항에 있어서,상기 정보는 상기 컨트롤을 위한 위치 정보를 더 포함하는 방법.
- 제23항에 있어서,상기 컨트롤에 근접한 위치에 나타나는 상기 사용자 인터페이스를 호출하는 단계를 더 포함하는 방법.
- 제23항에 있어서,상기 컨트롤의 경계로부터 수직으로 오프셋된 위치에 나타나는 상기 사용자 인터페이스를 호출하는 단계를 더 포함하는 방법.
- 제23항에 있어서,상기 컨트롤의 경계로부터 수평으로 오프셋된 위치에 나타나는 상기 사용자 인터페이스를 호출하는 단계를 더 포함하는 방법.
- 제23항에 있어서,상기 컨트롤의 경계로부터 수평 및 수직으로 오프셋된 위치에 나타나는 상기 사용자 인터페이스를 호출하는 단계를 더 포함하는 방법.
- 제23항에 있어서,상기 컨트롤의 위치에 기초하여 지정된 경계 크기를 갖는 상기 사용자 인터페이스를 호출하는 단계를 더 포함하는 방법.
- 제22항에 있어서,상기 정보는 상기 컨트롤의 경계에 대한 크기 정보를 더 포함하는 방법.
- 제29항에 있어서,상기 컨트롤의 상기 경계에 대한 크기 정보에 기초하여 상기 컨트롤 내에 나타나는 상기 사용자 인터페이스를 호출하는 단계를 더 포함하는 방법.
- 제30항에 있어서,상기 컨트롤의 경계로부터 수직으로 오프셋된 위치에 나타나는 상기 사용자 인터페이스를 호출하는 단계를 더 포함하는 방법.
- 제30항에 있어서,상기 컨트롤의 경계로부터 수평으로 오프셋된 위치에 나타나는 상기 사용자 인터페이스를 호출하는 단계를 더 포함하는 방법.
- 제22항에 있어서,상기 정보는 작업 영역의 경계를 더 포함하는 방법.
- 제33항에 있어서,상기 컨트롤 및 상기 작업 영역의 경계에 대하여 지정된 위치에 나타나는 상기 사용자 인터페이스를 호출하는 단계를 더 포함하는 방법.
- 제23항에 있어서,상기 정보는 제2 컨트롤에 대한 위치를 더 포함하는 방법.
- 제35항에 있어서,상기 제1 컨트롤 및 상기 제2 컨트롤에 대하여 지정된 위치에 나타나는 상기 사용자 인터페이스를 호출하는 단계를 더 포함하는 방법.
- 제18항에 있어서,상기 정보는 컨트롤의 유형을 식별하는 방법.
- 제37항에 있어서,상기 식별된 컨트롤의 유형에 대응하는 입력 표면(input surface)을 포함하는 상기 사용자 인터페이스를 호출하는 단계를 더 포함하는 방법.
- 제38항에 있어서,키보드 입력 표면을 포함하는 상기 사용자 인터페이스를 호출하는 단계를 더 포함하는 방법.
- 제38항에 있어서,기입 입력 표면(writing input surface)을 포함하는 상기 사용자 인터페이스를 호출하는 단계를 더 포함하는 방법.
- 제38항에 있어서,아시아 언어 기입 입력 표면을 포함하는 상기 사용자 인터페이스를 호출하는 단계를 더 포함하는 방법.
- 제18항에 있어서,유틸리티 오브젝트(utility object)에서 명령을 수신하는 단계; 및상기 명령을 수신한 것에 응답하여, 상기 유틸리티 오브젝트가, 상기 사용자 인터페이스를 호출하도록 애플리케이션 프로그래밍 인터페이스를 제어하는 단계를 더 포함하는 방법.
- 제18항에 있어서,상기 수신된 정보에 기초하여 상기 사용자 인터페이스를 호출하기 위한 호출 기술을 채용하는 단계를 더 포함하는 방법.
- 제43항에 있어서,상기 사용자 인터페이스는 타겟의 활성화에 응답하여 호출되는 방법.
- 제44항에 있어서,상기 타겟은, 포인팅 디바이스가 상기 타겟에 근접하여 이동할 때에 활성화되는 방법.
- 제44항에 있어서,상기 타겟은, 포인팅 디바이스가 상기 타겟 위를 이동할 때 활성화되는 방법.
- 제44항에 있어서,상기 타겟은, 포인팅 디바이스가 상기 타겟 위에 소정 기간 동안 머무를 때 활성화되는 방법.
- 제18항에 있어서,상기 수신된 정보에 기초하여 상기 사용자 인터페이스를 제거하기 위한 제거 기술(dismissal technique)을 채용하는 단계를 더 포함하는 방법.
- 입력 데이터를 수신하기 위한 적어도 하나의 컨트롤을 갖는 애플리케이션;상기 적어도 하나의 컨트롤에 데이터를 입력하기 위한 사용자 인터페이스;상기 애플리케이션으로부터 상기 적어도 하나의 컨트롤에 관한 정보를 수신하고, 상기 수신된 정보에 응답하여 상기 사용자 인터페이스를 제어하는 유틸리티 오브젝트를 포함하는 컴퓨팅 환경.
- 제49항에 있어서,상기 애플리케이션은 복수의 컨트롤을 갖고,상기 유틸리티 오브젝트는 상기 애플리케이션으로부터 상기 복수의 컨트롤 각각에 관한 정보를 수신하는 컴퓨팅 환경.
- 제49항에 있어서,상기 애플리케이션은 제2 컨트롤을 포함하고,상기 컴퓨팅 환경은,상기 애플리케이션으로부터 상기 제2 컨트롤에 관한 정보를 수신하고, 상기 수신된 제2 컨트롤에 관한 정보에 응답하여 상기 사용자 인터페이스를 제어하는 제2 유틸리티 오브젝트를 더 포함하는 컴퓨팅 환경.
- 제49항에 있어서,상기 유틸리티 오브젝트로부터의 명령에 응답하여 상기 사용자 인터페이스를 제어하기 위하여, 상기 적어도 하나의 컨트롤 간에서 공유되는 컴포넌트를 더 포함하는 컴퓨팅 환경.
- 제52항에 있어서,상기 공유 컴포넌트는 상기 사용자 인터페이스로부터 데이터를 수신하고, 상기 데이터를 상기 적어도 하나의 컨트롤로 라우팅하는 컴퓨팅 환경.
- 제52항에 있어서,상기 유틸리티 오브젝트로부터 상기 공유 컴포넌트로 명령을 중계하는 프록시 컴포넌트(proxy component)를 더 포함하는 컴퓨팅 환경.
- 제54항에 있어서,상기 공유 컴포넌트는 메시지를 수신하고 저장하는 메시지 큐를 포함하고,상기 프록시 컴포넌트는, 상기 공유 컴포넌트가 상기 메시지 큐에 중계된 명령을 상기 메시지 큐에서 수신된 순서로 검색하고 그에 응답하도록, 상기 유틸리티 오브젝트로부터 상기 공유 컴포넌트의 메시지 큐로 상기 명령을 중계하는 컴퓨팅 환경.
- 제52항에 있어서,복수의 오브젝트; 및상기 유틸리티 오브젝트로부터 상기 공유 컴포넌트로 명령을 중계하기 위한, 상기 복수의 오브젝트 각각에 대응하는 프록시 컴포넌트를 더 포함하는 컴퓨팅 환경.
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US45370103P | 2003-01-31 | 2003-01-31 | |
US60/453,701 | 2003-01-31 | ||
US44444403P | 2003-02-01 | 2003-02-01 | |
US60/444,444 | 2003-02-01 | ||
US10/427,159 US7490296B2 (en) | 2003-01-31 | 2003-04-30 | Utility object for specialized data entry |
US10/427,159 | 2003-04-30 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20040069984A true KR20040069984A (ko) | 2004-08-06 |
Family
ID=32659957
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020040001831A KR20040069984A (ko) | 2003-01-31 | 2004-01-10 | 특수화된 데이터 입력을 위한 유틸리티 오브젝트 |
Country Status (5)
Country | Link |
---|---|
US (4) | US7490296B2 (ko) |
EP (1) | EP1443395A3 (ko) |
JP (1) | JP4658480B2 (ko) |
KR (1) | KR20040069984A (ko) |
CN (1) | CN100444088C (ko) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101137154B1 (ko) * | 2005-03-18 | 2012-04-24 | 마이크로소프트 코포레이션 | 디스플레이 장치상에 텍스트 입력 시스템을 활성화 및디스플레이하기 위한 사용자 인터페이스, 시스템 및 방법 |
KR20140073225A (ko) * | 2012-12-06 | 2014-06-16 | 삼성전자주식회사 | 터치용 펜을 이용하는 휴대 단말기 및 이를 이용한 필기 입력 방법 |
KR101484776B1 (ko) * | 2007-12-13 | 2015-01-20 | 엘지전자 주식회사 | 휴대 단말기 및 이를 이용한 문자입력방법 |
Families Citing this family (63)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7490296B2 (en) * | 2003-01-31 | 2009-02-10 | Microsoft Corporation | Utility object for specialized data entry |
JP4491249B2 (ja) * | 2003-01-31 | 2010-06-30 | マイクロソフト コーポレーション | ユーザインタフェースを制御するための挿入位置の追跡 |
US7106312B2 (en) | 2003-11-10 | 2006-09-12 | Microsoft Corporation | Text input window with auto-growth |
US7475406B2 (en) * | 2003-12-15 | 2009-01-06 | International Business Machines Corporation | Event notification structure for dynamically aggregated logical components |
KR100703771B1 (ko) * | 2005-05-17 | 2007-04-06 | 삼성전자주식회사 | 문자 입력판을 디스플레이하는 장치 및 방법 |
US8145997B2 (en) * | 2005-06-30 | 2012-03-27 | Canon Kabushiki Kaisha | Method for simultaneously performing a plurality of handwritten searches |
JP4908518B2 (ja) * | 2005-12-08 | 2012-04-04 | ノキア コーポレイション | 電子デバイスの改善された文章入力 |
US8872754B2 (en) * | 2006-03-29 | 2014-10-28 | Nvidia Corporation | System, method, and computer program product for controlling stereo glasses shutters |
US8169467B2 (en) * | 2006-03-29 | 2012-05-01 | Nvidia Corporation | System, method, and computer program product for increasing an LCD display vertical blanking interval |
US7724211B2 (en) * | 2006-03-29 | 2010-05-25 | Nvidia Corporation | System, method, and computer program product for controlling stereo glasses shutters |
US7881923B2 (en) | 2006-03-31 | 2011-02-01 | Research In Motion Limited | Handheld electronic device including toggle of a selected data source, and associated method |
US8106903B2 (en) * | 2006-05-04 | 2012-01-31 | Bentley Systems, Incorporated | System and method for visually representing a project using graphic elements |
US8564544B2 (en) | 2006-09-06 | 2013-10-22 | Apple Inc. | Touch screen device, method, and graphical user interface for customizing display of content category icons |
US9304675B2 (en) | 2006-09-06 | 2016-04-05 | Apple Inc. | Portable electronic device for instant messaging |
US20080168402A1 (en) | 2007-01-07 | 2008-07-10 | Christopher Blumenberg | Application Programming Interfaces for Gesture Operations |
US20080168478A1 (en) | 2007-01-07 | 2008-07-10 | Andrew Platzer | Application Programming Interfaces for Scrolling |
US8689132B2 (en) | 2007-01-07 | 2014-04-01 | Apple Inc. | Portable electronic device, method, and graphical user interface for displaying electronic documents and lists |
JP5256712B2 (ja) * | 2007-11-28 | 2013-08-07 | ブラザー工業株式会社 | インストールプログラムおよび情報処理装置 |
JP4935658B2 (ja) * | 2007-12-11 | 2012-05-23 | ブラザー工業株式会社 | ブラウザプログラムおよび情報処理装置 |
US8645827B2 (en) | 2008-03-04 | 2014-02-04 | Apple Inc. | Touch event model |
US8717305B2 (en) | 2008-03-04 | 2014-05-06 | Apple Inc. | Touch event model for web pages |
US9081590B2 (en) * | 2008-06-24 | 2015-07-14 | Microsoft Technology Licensing, Llc | Multimodal input using scratchpad graphical user interface to edit speech text input with keyboard input |
US8285499B2 (en) | 2009-03-16 | 2012-10-09 | Apple Inc. | Event recognition |
US9684521B2 (en) | 2010-01-26 | 2017-06-20 | Apple Inc. | Systems having discrete and continuous gesture recognizers |
US8566045B2 (en) | 2009-03-16 | 2013-10-22 | Apple Inc. | Event recognition |
US20100275126A1 (en) * | 2009-04-27 | 2010-10-28 | Scott David Lincke | Automatic On-Screen Keyboard |
US10705692B2 (en) | 2009-05-21 | 2020-07-07 | Sony Interactive Entertainment Inc. | Continuous and dynamic scene decomposition for user interface |
US7721222B1 (en) * | 2009-06-10 | 2010-05-18 | Cheman Shaik | Dynamic language text generation system and method |
US9223590B2 (en) | 2010-01-06 | 2015-12-29 | Apple Inc. | System and method for issuing commands to applications based on contextual information |
KR101633332B1 (ko) * | 2009-09-30 | 2016-06-24 | 엘지전자 주식회사 | 단말기 및 그 제어 방법 |
KR101615964B1 (ko) * | 2009-11-09 | 2016-05-12 | 엘지전자 주식회사 | 이동 단말기 및 그 표시방법 |
US9052894B2 (en) * | 2010-01-15 | 2015-06-09 | Apple Inc. | API to replace a keyboard with custom controls |
JP4950321B2 (ja) * | 2010-04-26 | 2012-06-13 | 京セラ株式会社 | 文字入力装置、文字入力方法および文字入力プログラム |
US10216408B2 (en) | 2010-06-14 | 2019-02-26 | Apple Inc. | Devices and methods for identifying user interface objects based on view hierarchy |
US9600135B2 (en) * | 2010-09-10 | 2017-03-21 | Vocollect, Inc. | Multimodal user notification system to assist in data capture |
US9094676B1 (en) | 2010-09-29 | 2015-07-28 | Nvidia Corporation | System, method, and computer program product for applying a setting based on a determined phase of a frame |
US9094678B1 (en) | 2010-09-29 | 2015-07-28 | Nvidia Corporation | System, method, and computer program product for inverting a polarity of each cell of a display device |
JP5691748B2 (ja) * | 2011-03-31 | 2015-04-01 | 富士通株式会社 | プログラム、情報通信機器および連携方法 |
JP5858641B2 (ja) * | 2011-05-10 | 2016-02-10 | キヤノン株式会社 | 情報処理装置、情報処理装置と外部装置とを含むシステム、システムの制御方法、及びプログラム |
KR20130002046A (ko) * | 2011-06-28 | 2013-01-07 | 삼성전자주식회사 | 멀티 코어를 포함하는 저장 장치의 전력 관리 방법 |
US9164288B2 (en) | 2012-04-11 | 2015-10-20 | Nvidia Corporation | System, method, and computer program product for presenting stereoscopic display content for viewing with passive stereoscopic glasses |
US9235324B2 (en) * | 2012-05-04 | 2016-01-12 | Google Inc. | Touch interpretation for displayed elements |
KR20140008987A (ko) * | 2012-07-13 | 2014-01-22 | 삼성전자주식회사 | 필기 이미지 인식을 이용한 어플리케이션 제어 방법 및 장치 |
US8952897B2 (en) | 2012-08-10 | 2015-02-10 | Microsoft Corporation | Single page soft input panels for larger character sets |
JP5798532B2 (ja) * | 2012-08-23 | 2015-10-21 | 株式会社Nttドコモ | ユーザインタフェース装置、ユーザインタフェース方法及びプログラム |
US9329778B2 (en) * | 2012-09-07 | 2016-05-03 | International Business Machines Corporation | Supplementing a virtual input keyboard |
US9720558B2 (en) * | 2012-11-30 | 2017-08-01 | Verizon and Redbox Digital Entertainment Services, LLC | Systems and methods for providing a personalized media service user interface |
USD741354S1 (en) * | 2012-12-14 | 2015-10-20 | Lg Electronics Inc. | Display screen with graphical user interface |
US9465985B2 (en) | 2013-06-09 | 2016-10-11 | Apple Inc. | Managing real-time handwriting recognition |
US9733716B2 (en) | 2013-06-09 | 2017-08-15 | Apple Inc. | Proxy gesture recognizer |
KR102162836B1 (ko) * | 2013-08-30 | 2020-10-07 | 삼성전자주식회사 | 필드 속성을 이용한 컨텐트를 제공하는 전자 장치 및 방법 |
US20150089431A1 (en) * | 2013-09-24 | 2015-03-26 | Xiaomi Inc. | Method and terminal for displaying virtual keyboard and storage medium |
US10054463B2 (en) | 2013-09-26 | 2018-08-21 | Google Llc | Systems and methods for providing navigation data to a vehicle |
US9109917B2 (en) * | 2013-09-26 | 2015-08-18 | Google Inc. | Systems and methods for providing input suggestions via the head unit of a vehicle |
US9958289B2 (en) | 2013-09-26 | 2018-05-01 | Google Llc | Controlling navigation software on a portable device from the head unit of a vehicle |
WO2015075933A1 (en) | 2013-11-19 | 2015-05-28 | Wacom Co., Ltd. | Method and system for ink data generation, ink data rendering, ink data manipulation and ink data communication |
JP5932925B2 (ja) * | 2014-09-18 | 2016-06-08 | キヤノン株式会社 | 入力装置、入力装置の制御方法、及びプログラム |
US9639234B2 (en) * | 2015-09-10 | 2017-05-02 | Qualcomm Incorporated | Dynamic control schemes for simultaneously-active applications |
CN105975260B (zh) * | 2016-04-28 | 2019-05-03 | 广州华多网络科技有限公司 | 一种文件生成方法及装置 |
DK179329B1 (en) | 2016-06-12 | 2018-05-07 | Apple Inc | Handwriting keyboard for monitors |
US11194467B2 (en) | 2019-06-01 | 2021-12-07 | Apple Inc. | Keyboard management user interfaces |
JP7543788B2 (ja) * | 2020-08-31 | 2024-09-03 | 株式会社リコー | 表示装置、入力方法、プログラム |
CN115118714A (zh) * | 2022-06-24 | 2022-09-27 | Oppo广东移动通信有限公司 | 数据共享方法、系统及装置、终端设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5276794A (en) * | 1990-09-25 | 1994-01-04 | Grid Systems Corporation | Pop-up keyboard system for entering handwritten data into computer generated forms |
JPH07261918A (ja) * | 1994-03-18 | 1995-10-13 | Pfu Ltd | 情報入力装置および手書き文字処理方法 |
JPH0816313A (ja) * | 1994-07-04 | 1996-01-19 | Sanyo Electric Co Ltd | 手書き入力方法及び装置 |
KR19990087081A (ko) * | 1996-02-19 | 1999-12-15 | 요시야 가토 | 화면표시식 키이입력장치 |
KR20000024489A (ko) * | 2000-02-16 | 2000-05-06 | 도정인 | 필기인식을 위한 소프트 키보드가 포함된 휴대용 단말기및 펜입력에 의한 필기 인식방법 |
KR20010096061A (ko) * | 2000-04-17 | 2001-11-07 | 김영식 | 터치스크린을 이용한 단말기에서의 수기 입력 방법 |
Family Cites Families (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4531231A (en) * | 1983-01-19 | 1985-07-23 | Communication Intelligence Corporation | Method for distinguishing between complex character sets |
US6002799A (en) | 1986-07-25 | 1999-12-14 | Ast Research, Inc. | Handwritten keyboardless entry computer system |
EP0439087B1 (en) | 1990-01-25 | 1996-12-11 | Radius Inc. | Method for resizing and moving computer display windows |
US5267327A (en) * | 1990-03-30 | 1993-11-30 | Sony Corporation | Apparatus and method for registering the handwriting of a user so it can be translated into block characters |
JPH07117868B2 (ja) * | 1991-04-30 | 1995-12-18 | インターナショナル・ビジネス・マシーンズ・コーポレイション | タツチ型作動キーボード定義方法及び装置 |
US5550930A (en) | 1991-06-17 | 1996-08-27 | Microsoft Corporation | Method and system for training a handwriting recognizer at the time of misrecognition |
US5946406A (en) | 1991-06-17 | 1999-08-31 | Microsoft Corporation | Method and system for data entry of handwritten symbols |
US5233686A (en) | 1991-09-24 | 1993-08-03 | Ceridian Corporation | Open systems software backplane architecture for federated execution of independent application programs |
US5592566A (en) | 1992-05-27 | 1997-01-07 | Apple Computer, Incorporated | Method and apparatus for computerized recognition |
US6697524B1 (en) * | 1992-09-04 | 2004-02-24 | Canon Kabushiki Kaisha | Information processing method and apparatus |
US5666139A (en) * | 1992-10-15 | 1997-09-09 | Advanced Pen Technologies, Inc. | Pen-based computer copy editing apparatus and method for manuscripts |
EP0605945B1 (en) * | 1992-12-15 | 1997-12-29 | Sun Microsystems, Inc. | Method and apparatus for presenting information in a display system using transparent windows |
US5511193A (en) * | 1993-02-19 | 1996-04-23 | Apple Computer, Inc. | Text services manager providing multiple instances of input methods for text language processing and automatic synchronization between met hods |
CA2124505C (en) * | 1993-07-21 | 2000-01-04 | William A. S. Buxton | User interface having simultaneously movable tools and cursor |
US5500937A (en) * | 1993-09-08 | 1996-03-19 | Apple Computer, Inc. | Method and apparatus for editing an inked object while simultaneously displaying its recognized object |
WO1995017711A1 (en) | 1993-12-23 | 1995-06-29 | Diacom Technologies, Inc. | Method and apparatus for implementing user feedback |
US5812697A (en) * | 1994-06-10 | 1998-09-22 | Nippon Steel Corporation | Method and apparatus for recognizing hand-written characters using a weighting dictionary |
JP2944439B2 (ja) * | 1994-12-27 | 1999-09-06 | シャープ株式会社 | 手書き文字入力装置および方法 |
JP2817646B2 (ja) * | 1995-02-01 | 1998-10-30 | 日本電気株式会社 | 文書編集装置 |
US5778404A (en) * | 1995-08-07 | 1998-07-07 | Apple Computer, Inc. | String inserter for pen-based computer systems and method for providing same |
US5682439A (en) * | 1995-08-07 | 1997-10-28 | Apple Computer, Inc. | Boxed input correction system and method for pen based computer systems |
JPH0981320A (ja) * | 1995-09-20 | 1997-03-28 | Matsushita Electric Ind Co Ltd | ペン入力式選択入力装置及びその方法 |
US5745099A (en) | 1995-12-18 | 1998-04-28 | Intergraph Corporation | Cursor positioning method |
TW490643B (en) | 1996-05-21 | 2002-06-11 | Hitachi Ltd | Estimated recognition device for input character string |
US6128007A (en) * | 1996-07-29 | 2000-10-03 | Motorola, Inc. | Method and apparatus for multi-mode handwritten input and hand directed control of a computing device |
US5784060A (en) | 1996-08-22 | 1998-07-21 | International Business Machines Corp. | Mobile client computer programmed to display lists and hexagonal keyboard |
US5760772A (en) * | 1996-08-30 | 1998-06-02 | Novell, Inc. | Method for automatically resizing a child window |
US5889888A (en) * | 1996-12-05 | 1999-03-30 | 3Com Corporation | Method and apparatus for immediate response handwriting recognition system that handles multiple character sets |
JPH1153117A (ja) * | 1997-08-01 | 1999-02-26 | Nippon Steel Corp | 手書き文字認識装置、手書き入力インターフェース及びその記録媒体 |
US6278991B1 (en) * | 1997-08-22 | 2001-08-21 | Sap Aktiengesellschaft | Browser for hierarchical structures |
JPH11167569A (ja) * | 1997-12-02 | 1999-06-22 | Sony Corp | 文章入力装置及び方法並びに記録媒体 |
JPH11282595A (ja) * | 1998-03-26 | 1999-10-15 | Brother Ind Ltd | 入力装置および記録媒体 |
GB9824482D0 (en) * | 1998-11-09 | 1999-01-06 | Nokia Mobile Phones Ltd | Portable controller |
US7720682B2 (en) * | 1998-12-04 | 2010-05-18 | Tegic Communications, Inc. | Method and apparatus utilizing voice input to resolve ambiguous manually entered text input |
CN1173247C (zh) * | 1999-01-13 | 2004-10-27 | 国际商业机器公司 | 具有文字分割用户接口的手写信息处理系统 |
JP2000222525A (ja) * | 1999-02-01 | 2000-08-11 | Poritekku:Kk | タブレットおよび郵便番号辞書・電話番号辞書を利用した住所・氏名入力システム |
US7120870B1 (en) * | 2000-01-06 | 2006-10-10 | International Business Machines Corporation | Method, system, and program for presenting data in a limited display area |
JP2001236451A (ja) * | 2000-02-21 | 2001-08-31 | Oki Data Corp | 電子帳票作成システム |
US6707942B1 (en) | 2000-03-01 | 2004-03-16 | Palm Source, Inc. | Method and apparatus for using pressure information for improved computer controlled handwriting recognition, data entry and user authentication |
WO2001093182A1 (en) * | 2000-05-29 | 2001-12-06 | Vkb Inc. | Virtual data entry device and method for input of alphanumeric and other data |
JP2002230466A (ja) * | 2000-11-30 | 2002-08-16 | Nippon Ics Kk | 会計処理装置及び会計処理プログラムを記録した記録媒体 |
US7627596B2 (en) * | 2001-02-22 | 2009-12-01 | International Business Machines Corporation | Retrieving handwritten documents using multiple document recognizers and techniques allowing both typed and handwritten queries |
US7730401B2 (en) * | 2001-05-16 | 2010-06-01 | Synaptics Incorporated | Touch screen with user interface enhancement |
US7158678B2 (en) | 2001-07-19 | 2007-01-02 | Motorola, Inc. | Text input method for personal digital assistants and the like |
US6986050B2 (en) * | 2001-10-12 | 2006-01-10 | F-Secure Oyj | Computer security method and apparatus |
US7080325B2 (en) * | 2002-02-22 | 2006-07-18 | Call-Tell Llc | Graphical device for comprehensive viewing and input of variable data via a browser-based display |
US20030163525A1 (en) * | 2002-02-22 | 2003-08-28 | International Business Machines Corporation | Ink instant messaging with active message annotation |
US8583440B2 (en) * | 2002-06-20 | 2013-11-12 | Tegic Communications, Inc. | Apparatus and method for providing visual indication of character ambiguity during text entry |
US7002560B2 (en) * | 2002-10-04 | 2006-02-21 | Human Interface Technologies Inc. | Method of combining data entry of handwritten symbols with displayed character data |
US7490296B2 (en) | 2003-01-31 | 2009-02-10 | Microsoft Corporation | Utility object for specialized data entry |
US7305627B2 (en) * | 2003-04-01 | 2007-12-04 | International Business Machines Corporation | Apparatus and method for correcting previously sent messages in a real-time messaging system |
US8296680B2 (en) * | 2009-01-15 | 2012-10-23 | Research In Motion Limited | Method and handheld electronic device for displaying and selecting diacritics |
-
2003
- 2003-04-30 US US10/427,159 patent/US7490296B2/en active Active
- 2003-12-22 EP EP03029628A patent/EP1443395A3/en not_active Ceased
-
2004
- 2004-01-08 JP JP2004003369A patent/JP4658480B2/ja not_active Expired - Fee Related
- 2004-01-10 KR KR1020040001831A patent/KR20040069984A/ko not_active Application Discontinuation
- 2004-01-30 CN CNB2004100037110A patent/CN100444088C/zh not_active Expired - Lifetime
-
2009
- 2009-01-23 US US12/358,582 patent/US8745528B2/en not_active Expired - Lifetime
- 2009-01-23 US US12/358,958 patent/US9671921B2/en active Active
- 2009-01-23 US US12/358,965 patent/US8140994B2/en not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5276794A (en) * | 1990-09-25 | 1994-01-04 | Grid Systems Corporation | Pop-up keyboard system for entering handwritten data into computer generated forms |
JPH07261918A (ja) * | 1994-03-18 | 1995-10-13 | Pfu Ltd | 情報入力装置および手書き文字処理方法 |
JPH0816313A (ja) * | 1994-07-04 | 1996-01-19 | Sanyo Electric Co Ltd | 手書き入力方法及び装置 |
KR19990087081A (ko) * | 1996-02-19 | 1999-12-15 | 요시야 가토 | 화면표시식 키이입력장치 |
KR20000024489A (ko) * | 2000-02-16 | 2000-05-06 | 도정인 | 필기인식을 위한 소프트 키보드가 포함된 휴대용 단말기및 펜입력에 의한 필기 인식방법 |
KR20010096061A (ko) * | 2000-04-17 | 2001-11-07 | 김영식 | 터치스크린을 이용한 단말기에서의 수기 입력 방법 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101137154B1 (ko) * | 2005-03-18 | 2012-04-24 | 마이크로소프트 코포레이션 | 디스플레이 장치상에 텍스트 입력 시스템을 활성화 및디스플레이하기 위한 사용자 인터페이스, 시스템 및 방법 |
KR101484776B1 (ko) * | 2007-12-13 | 2015-01-20 | 엘지전자 주식회사 | 휴대 단말기 및 이를 이용한 문자입력방법 |
KR20140073225A (ko) * | 2012-12-06 | 2014-06-16 | 삼성전자주식회사 | 터치용 펜을 이용하는 휴대 단말기 및 이를 이용한 필기 입력 방법 |
Also Published As
Publication number | Publication date |
---|---|
US9671921B2 (en) | 2017-06-06 |
US20090150776A1 (en) | 2009-06-11 |
US20090150777A1 (en) | 2009-06-11 |
EP1443395A2 (en) | 2004-08-04 |
US8745528B2 (en) | 2014-06-03 |
US8140994B2 (en) | 2012-03-20 |
JP4658480B2 (ja) | 2011-03-23 |
CN100444088C (zh) | 2008-12-17 |
EP1443395A3 (en) | 2006-08-30 |
CN1525288A (zh) | 2004-09-01 |
US20040150670A1 (en) | 2004-08-05 |
JP2004234647A (ja) | 2004-08-19 |
US20090132951A1 (en) | 2009-05-21 |
US7490296B2 (en) | 2009-02-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20040069984A (ko) | 특수화된 데이터 입력을 위한 유틸리티 오브젝트 | |
US20040225965A1 (en) | Insertion location tracking for controlling a user interface | |
US7904823B2 (en) | Transparent windows methods and apparatus therefor | |
EP1363183B1 (en) | Write anywhere tool | |
CN1864155B (zh) | 带自增长的文本输入窗 | |
US8479112B2 (en) | Multiple input language selection | |
US7461348B2 (en) | Systems and methods for processing input data before, during, and/or after an input focus change event | |
US20030214531A1 (en) | Ink input mechanisms | |
US11385774B2 (en) | Intuitive workspace management | |
US7689924B1 (en) | Link annotation for keyboard navigation | |
JPH0724007B2 (ja) | ジェスチャ認識を行うグラフィッカル・ユーザ・インターフェース及びその方法 | |
CN109997111A (zh) | 跨应用的内容处理 | |
JP4868469B2 (ja) | ユーザインタフェースを制御するための挿入位置の追跡 | |
JP2003076478A (ja) | 文字入力手段 | |
CN113849093B (zh) | 一种控制方法、装置及电子设备 | |
JP2001297296A (ja) | Ocr帳票フォーマット登録装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application | ||
J201 | Request for trial against refusal decision | ||
J301 | Trial decision |
Free format text: TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20110930 Effective date: 20120924 |