Motorola Mobility, Inc. v. Microsoft Corporation
Filing
74
RESPONSE in Opposition re #62 Defendant's MOTION to Change Venue Defendant's Motion to Transfer This Action to the Western District of Washington and Accompanying Memorandum of Law filed by Motorola Mobility, Inc.. (Attachments: #1 Exhibit, #2 Exhibit, #3 Exhibit, #4 Exhibit, #5 Exhibit, #6 Exhibit, #7 Exhibit, #8 Exhibit, #9 Exhibit, #10 Exhibit, #11 Exhibit, #12 Exhibit, #13 Exhibit, #14 Exhibit, #15 Exhibit, #16 Exhibit, #17 Exhibit, #18 Exhibit, #19 Exhibit, #20 Exhibit, #21 Exhibit, #22 Exhibit, #23 Exhibit, #24 Exhibit, #25 Exhibit, #26 Exhibit, #27 Exhibit, #28 Affidavit, #29 Affidavit, #30 Affidavit)(Giuliano, Douglas)
GROUP EXHIBIT R
111111
1111111111111111111111111111111111111111111111111111111111111
US006339780Bl
United States Patent
(10)
Shell et ai.
(12)
(45)
(54)
LOADING STATUS IN A HYPERMEDIA
BROWSER HAVING A LIMITED AVAILABLE
DISPLAY AREA
(75)
Inventors: Scott R. Shell; Kevin Timothy
Shields, both of Redmond; Anthony
Kitowitz, Kirkland, all of WA (US)
(73)
Assignee: Microsoft Corporation, Redmond, WA
(US)
( * ) Notice:
Subject to any disclaimer, the term of this
patent is extended or adjusted under 35
U.S.c. 154(b) by 0 days.
Appl. No.: 08/851,877
(22)
Filed:
(51)
(52)
(58)
Int. CI? ................................................ G06F 17/00
U.S. CI. ........................................ 707/526; 707/102
Field of Search ................. 707/1-576; 345/24-440
May 6, 1997
References Cited
U.S. PATENT DOCUMENTS
4,266,253
5,467,459
5,731,813
5,760,771
5,774,666
5,877,766
5,973,692
5,983,005
A
A
A
A
A
A
A
A
*
*
*
*
*
*
*
*
5/1981
11/1995
3/1998
6/1998
6/1998
3/1999
10/1999
11/1999
6,101,510 A
* 8/2000 Stone et al. ................ 707/513
OTHER PUBLICATIONS
Smallman et al. "Information availability in 2D and 3D
displays", IEEE Computer Graphics and Applications, vol.
21 Issue 5, Sep./Oct. 2001, pp. 51-57.*
Hu et aI., "Parameterizable fonts based on shape components", IEEE Computer Graphics and Applications, vol. 21
Issue 3, May/lun. 2001, pp. 70-85.*
Liu et aI., "Web-based peer review: the learner as both
adapter and reviewer", Education, IEEE Transactions on,
vol. 44 Issue 3, Aug. 2001, pp. 246-251. *
www.sciam.com/200/1100issue/1100stjohnbox1.html.*
* cited by examiner
(21)
(56)
Patent No.:
US 6,339,780 BI
Date of Patent:
Jan. 15,2002
Matherat ..................... 345/24
Alexander et al. .......... 345/514
O'Rourke et al. .......... 345/349
Blonder et al. ............. 345/302
Portuesi ...................... 709/218
Bates et al. ................. 345/357
Knowlton et al. .......... 345/348
Monteiro et al. ........... 709/231
Primary Examiner-Thomas Black
Assistant Examiner-David lung
(74) Attorney, Agent, or Firm~ee & Hayes, PLLC
ABSTRACT
(57)
Described herein is a portable computer having a limited
display area. An Internet or other hypermedia browser
executes on the portable computer to load and display
content in a content viewing area. During times when the
browser is loading content, the browser displays a
temporary, animated graphic element over the content viewing area. The graphic element is removed after the content
is loaded, allowing unobstructed viewing of the loaded
content.
42 Claims, 3 Drawing Sheets
,..r- 50
file
.Edit
~iew
F~yorites
•
56
54
Microsoft Windows
CE Home Page
Web Tutorial
Optimized for
Welcome to Microsoft Pocket Internet
E)(plorer for Microsoffil Windows@ CEo
'11~,~r;E @
Copyright© 1 996 Microsoft Corporation
iijis~li!l~;"~:,,ft~-"":J
54~
J.. ..
62
u.s. Patent
Jan. 15,2002
US 6,339,780 BI
Sheet 1 of 3
~-20
~24
7
---1
i--"-----.-----~--~~~~~~~~~~~~~_____!
~======~-=-========================~~
32 ~~/--7L=::7~~~~
~ ~
L=::7 L::.7
~7
L=::7
~
L::.7
22
'----~~~~~-------
30
L
26
u.s. Patent
Jan. 15,2002
US 6,339,780 BI
Sheet 2 of 3
-20
_~ ____ L
~----,~42 'I,
Memory
40~
~-~~-~
44
Processor
(
I
Operating '\
System
49
~
r----------- \
!
r Hypermedia / ~------~\
'"
Display With
Touch Screen
28
r----.----------------}
I\.
v
i
Browser
\,"--_._________ J
Keyboard
32..-/1
file
.Edil
'{iew
F~YOliles
o;~'"
,~,
'H' .'
•
56
•
54------.
Microsoft Windows __,,'.,.,__ """_,,-__..
CE Home Page
Web Tutorial
r~~~---~~------"
:
Welcome to Microsoft Pocket Internet
E)(plorer for Microsoft® Windows@ CE.
I
t
Optimized for
Microsoft·
Pocket IE
Copyright © 1996 Microsoft Corporation
@,
64
- 62
u.s. Patent
59
Jan. 15,2002
US 6,339,780 BI
Sheet 3 of 3
58~\
/
'"
1L...::,E_ile---c_=-Ed_it---c~=-i_ew F=-~v_o_ri_te--..Js!~II{j]l~1 :[4'm
__
56
•
•
54
rm
r
Welcome to Microsoft Pocket Internet
E)(plorer for Microsofttll Windows@ CEo
i
i
;- 60
Microsoft Windows
CE Home Page
Web Tutorial
0 phmlze d for
0
0
M icc os oW
Pocket IE
CopytOight© 1996 Microsoft Corporation
(jjj)
'.
62
US 6,339,780 Bl
1
2
cases involving long delays, users might be inclined to
believe that their browsers have become inoperative. To
avoid this situation, browsers typically include some type of
status display indicating progress in loading content. In
TECHNI CAL FIELD
5 many browsers, this consists of a stationary icon such as a
flag or globe that becomes animated during periods when
This invention relates hypermedia content browsers such
content is being loaded. For instance, such an icon might
as World Wide Web browsers.
comprise a flag that is normally stationary but that flutters or
waves during content loading. An icon such as this is
BACKGROUND OF THE INVENTION
10 positioned in a tool area or status area outside of the content
"Hypermedia" is a metaphor for presenting information in
viewing area. The icon is visible at all times, but is animated
which text, images, sounds, and actions become linked
only when content is being loaded.
together in a complex, non-sequential web of associations
One very recent development relating to this subject is the
that permit a user to browse through related content and
emergence of a number of popular, small, handheld comtopics, regardless of the presented order of the topics. The 15 puting devices that potentially support Internet browsing.
term "hypermedia" arises from the similar term "hypertext,"
These include palmtops, pocket computers, personal digital
which was originally coined to describe the linked textassistants, personal organizers, and the like. In this
based documents.
disclosure, this class of computing devices is generally
Hypermedia content is widely used for navigation and
referred to as "handheld personal computers", "handheld
information dissemination on the "World-Wide Web" 20 PCs", or "H/PCs".
(WWW or Web) of the Internet. An application program
One of the most desirable characteristics of H/PCs is their
referred to as a hypermedia browser, hypertext browser,
portability. The compact, portable H/PCs provide a user with
"Web browser" is normally used to retrieve and render
real computer-like applications-such as email, PIM
hypermedia content from the WWW, although such a
(personal information management), spreadsheet, and word
browser is also useful for browsing hyperlinked content 25 processing. Hypermedia browsers are among the application
from other sources.
programs available for H/PCs. A traveling user can receive
Hypermedia content is commonly organized as docuemail messages, schedule meetings or appointments, and
ments with embedded control information. The embedded
browse the Internet from the H/Pe.
control information includes formatting specifications, indiTo keep H/PCs small, compromises are of course necescating how a document is to be rendered by the Web 30 sary. Chief among the design compromises is an undersized
browser. In addition, such control information can include
display. Screen space is very limited. Traditional user interlinks or "hyperlinks": symbols or instructions telling the
face techniques which users are accustomed to on desktop
Web browser where to find other related WWW documents.
computers are not available for H/PC displays due to the
A hyperlink from one hypermedia topic to another is norlimited size. Additionally, the screen must be efficiently
mally established by the author of a hypermedia document, 35 utilized to enable effective data input from the stylus.
although some applications allow users to insert hyperlinks
With a hypermedia or Internet browser, in particular, there
to desired topics.
may not be room enough on the available display to impleA hyperlink is typically rendered by a Web browser as a
ment an animated status display such as described above.
graphical icon or as highlighted keywords. A user "acti- 40
The inventors, however, have developed a method of
vates" or "follows" a hyperlink by clicking on or otherwise
implementing a status display even within the limited disselecting the icon or highlighted keywords. Activating a link
play areas available on popular H/PCs.
causes the Web browser to load and render the document or
resource that is targeted by the hyperlink.
SUMMARY OF THE INVENTION
Hyperlink usage is not limited to the Internet. Various 45
In accordance with the invention, a browser has a content
multimedia applications and other hypermedia resources
viewing area that is used for displaying graphical hypermeutilize hypertext to allow users to navigate through different
dia content. A temporary, animated graphic element is
pieces of information content. For instance, an encyclopedia
presented in a corner of the content viewing area during
program might use hyperlinks to provide cross-references to
related articles within an electronic encyclopedia. The same 50 times when the browser is loading content. The graphic
element is not displayed during any other times.
program might also use hyperlinks to specify remote information resources such as WWW documents.
BRIEF DESCRIPTION OF THE DRAWINGS
Hypermedia browsers have evolved in recent years and
are available from several sources. Microsoft's Internet
The same reference numbers are used throughout the
Explorer is one example of a popular browser that is 55 drawings to reference like components and features.
particularly suitable for browsing the WWW and other
FIG. 1 is a perspective view of a handheld computing
similar network resources. Browsers such as the Internet
device in an open position.
Explorer typically have a content viewing area or window,
FIG. 2 is a block diagram of the handheld computing
in which textual or other graphical content is displayed.
device.
Browser controls such as menus, status displays, and tool 60
FIGS. 3 and 4 are illustrations of displays generated by a
icons are located in areas or windows adjacent the viewing
hypermedia browser in accordance with the invention.
area, so that they do not obstruct or interfere with the
viewing area.
DETAILED DESCRIPTION OF THE
One persistent characteristic of WWW browsing is that
PREFERRED EMBODIMENT
significant delays are often encountered when loading docu- 65
ments and other multimedia content. From the user's
FIG. 1 shows a handheld computing device 20. As used
herein, "handheld computing device" means a small comperspective, such delays can be quite frustrating. In severe
LOADING STATUS IN A HYPERMEDIA
BROWSER HAVING A LIMITED AVAILABLE
DISPLAY AREA
US 6,339,780 Bl
3
4
embodiments, the browser might be stored on a portable or
puting device having a processing unit that is capable of
removable type of computer-readable storage medium such
running one or more application programs, a display, and an
as a floppy disk or EPROM (eraseable read-only memory).
input mechanism such as a keypad, a touch-sensitive screen,
As used here, the term "hypermedia browser" refers to an
a track ball, a touch-sensitive pad, a miniaturized QWERTY
5 application or application program that is capable of diskeyboard, or the like.
playing or otherwise rendering hypermedia content and of
The handheld computing device 20 is embodied as a
loading additional or alternative hypermedia content in
handheld personal computer. The terms "handheld computresponse to a user's selection of hyperlinks.
ing device" and "handheld personal computer" (or handheld
Browser 48 has access to a hypermedia resource 49.
PC or H/PC) are used interchangeably throughout this
disclosure. However, in other implementations, the hand- 10 Often, this resource will be the Internet. However, other
sources of hyperlinked content are frequently available and
held computing device may be implemented as a personal
can be efficiently browsed in accordance with the invention.
digital assistant (PDA), a personal organizer, a palmtop
Computer 20 includes a network interface or modem (not
computer, a computerized notepad, or the like. The invention
shown) for accessing the hypermedia resource.
can also be implemented in other types of computers and
computer-like or computer-controlled devices having 15
FIG. 3 shows an example of a graphical display 50
graphical display surfaces.
generated by a hypermedia browser 48 in conjunction with
operating system 44. The display includes a number of
Handheld computing device 20 has a casing 22 with a
elements that are generated by making appropriate system
cover or lid 24 and a base 26. A liquid crystal display (LCD)
calls to the operating system in accordance with well-known
28 with a touch-sensitive screen is mounted to lid 24. Lid 24
is hinged to base 26 to pivot between an open position, 20 protocols. Specifically, Windows® CE supports a subset of
the Win32 API set used in the Windows® 95 operating
which exposes display 28, and a closed position, which
system. These APIs allow an application program to create
protects the display. The device is equipped with a stylus 30
a variety of on-screen controls with minimal effort.
to enter data through touchscreen display 28 and a miniature
In this case, the graphical display 50 includes a taskbar 52
QWERTY keyboard 32. Stylus 30 and keyboard 32 are both
mounted in base 26. Although the illustrated implementation 25 presented by the Windows® CE operating system. Browser
shows a two-member H/PC 20 with a lid 24 and a base 26,
48 presents a main window 54, above taskbar 52. Browser
other implementations of the H/PC might comprise an
main window 54 in this example has three primary compointegrated body without hinged components, as is the case
nents. The largest screen area is dedicated to a content
with computerized notepads (e.g., Newton® from Apple
viewing area 56. This is the area in which graphical hyper30 media content is displayed.
Computers).
FIG. 2 shows functional components of the handheld
Content viewing area 56 is bordered along its upper edge
computing device. It has a processor 40, a computerby a toolbar 58. Toolbar 58 is similar in appearance to
readable storage medium or memory 42, a display 28, and a
toolbars used in other application programs designed for the
keyboard 32. Memory 42 generally includes both volatile 35 Windows® operating environment, with some characteristics that are unique to the Windows® CE environment. One
memory (e.g., RAM) and non-volatile memory (e.g., ROM,
PCMCIA cards, etc.). The H/PC 20 has a power supply 46
characteristic that is unique to Windows® CE is that the
that supplies power to the electronic components. The power
toolbar includes both a menu area 59 and an icon area 60. In
supply 46 is preferably implemented as one or more batterprevious versions of Windows®, these features were preies. The power supply 46 might further represent an external 40 sen ted within their own distinct areas. Another Windows®
CE characteristic is that the toolbar is located on what would
power source that overrides or recharges the built-in
have been the "title bar" of previous Windows® application
batteries, such as an AC adapter or a powered docking
programs. The toolbar thus includes an "X" icon 61 that is
cradle.
used to close the browser application. In previous versions
An operating system program 44 is resident in the
memory 42 and executes on the processor 40. The operating 45 of Windows®, the toolbar would have been below or
otherwise separate from the title bar.
system 44 is a multitasking operating system that allows
simultaneous execution of multiple applications. The operA scroll bar 62 borders content viewing area 56 along its
right side. Scroll bar 62 is used to vertically scroll the
ating system employs a graphical user interface windowing
content that is presented in content viewing area 56.
environment that presents applications and documents in
specially delineated areas of the display screen called "win- 50
In contrast to prior art hypermedia browsers, browser 48
dows." Each window can act independently, including its
does not include a permanent "loading status" icon. In fact,
own menu, toolbar, pointers, and other controls, as if it were
no portion of main window 54 is dedicated permanently to
a virtual display device. The handheld computing device
displaying loading status. Rather, the browser is configured
may be implemented with other types of operating systems
to display a temporary graphic element 64 over content
that support a graphical user interface.
55 viewing area 56 during times when the browser is loading
The operating system 44 is preferably the Windows® CE
content. This temporary graphic element is preferably anioperating system from Microsoft Corporation that is conmated (such as the waving Microsoft® flag shown), and is
figured to execute application programs such as application
displayed only when the browser is loading content. It is
program 48 shown in FIG. 2. The Windows® CE operating
removed when the browser is not loading content. FIG. 4
system is a derivative of Windows® brand operating 60 shows display 50 after content has been loaded, during a
systems, such as Windows® 95, that is especially designed
period when no additional content is being loaded. Graphic
for handheld computing devices having limited display
element 64 has been removed in FIG. 4 because the current
Internet page has been completely loaded.
areas.
The temporary graphic element is preferably located in a
In the described embodiment of the invention, application
program 48 is an Internet or other hypermedia browser. The 65 corner of the content viewing area, and obstructs a portion
of the viewing area. The upper right corner is preferred
browser is stored as a sequence of program instructions in
because this position is often blank in Internet documents.
memory 42, for execution by processor 40. In other
US 6,339,780 Bl
5
6
The graphic element is created by opening a conventional
9. A hypermedia browser as recited in claim 1, wherein
window in conjunction with the Window® CE windowing
the temporary graphic element conveys status information of
operating environment.
the browser.
10. A hypermedia browser of claim 1, wherein content is
This method of displaying loading status achieves the
objective of alerting users during periods of time when 5 data formatted for presentation which is selected from a
group consisting of visible effects of a markup language,
content is actually being loaded. It does this without requirvisible text of such a markup language, and visible results of
ing a permanent allocation of screen real estate, thus freeing
a scripting language.
space for other functions. Although there might be some
11. A hypermedia browser of claim 1, wherein content is
obstruction of hypermedia content, such obstruction is
minor and temporary.
10 data formatted for presentation which is selected from a
group consisting of HTML, text, SGML, XML, java,
The invention has been described primarily in terms of its
XHTML, JavaScript, streaming video, VRML, Active X,
visual and functional characteristics. However, the invention
Flash. scripting language for the world wide web.
also includes a method of browsing a hyperlink resource
12. An information processing device comprising:
such as the Internet or some other network or data source
a processor;
having linked hypermedia content. The method includes a 15
a display;
steps of loading content from the hyperlink resource in
a hypermedia browser executing on the processor to load
response to user selection of hyperlinks contained in said
and display content in a content viewing area on the
content, and of displaying the content in a content viewing
display;
area. The invention also includes a step of displaying a
wherein the hypermedia browser displays a temporary
temporary graphic element over the content viewing area 20
graphic element over the content viewing area during
during the loading step. The temporary graphic element is
times when the browser is loading visible content;
removed when content is no longer being loaded.
wherein the temporary graphic element is positioned only
Although the invention has been described in language
over a portion of the content viewing area and obstructs
specific to structural features and/or methodological steps, it
only part of the visible content in the content viewing
is to be understood that the invention defined in the 25
area; and
appended claims is not necessarily limited to the specific
wherein the temporary graphic element indicates to a user
features or steps described. Rather, the specific features and
that the browser is loading content and content comsteps are disclosed as preferred forms of implementing the
prises data for presentation which is from a source
claimed invention.
external to the browser.
What is claimed is:
30
13. An information processing device as recited in claim
1. A hypermedia browser embodied on a computer12, wherein the temporary graphic element is animated.
readable medium for execution on an information process14. An information processing device as recited in claim
ing device having a limited display area, wherein the hyper12, wherein the hypermedia browser displays the temporary
media browser has a content viewing area for viewing
content and is configured to display a temporary graphic 35 graphic element in a corner of the content viewing area.
15. An information processing device as recited in claim
element over the content viewing area during times when the
12, wherein the hypermedia browser displays the temporary
browser is loading content, wherein the temporary graphic
graphic element within a temporary window in a windowing
element is positioned over the content viewing area to
operating environment.
obstruct only part of the content in the content viewing area,
16. An information processing device as recited in claim
wherein the temporary graphic element is not content and 40
12, wherein:
wherein content comprises data for presentation which is
the temporary graphic element is animated; and
from a source external to the browser.
the hypermedia browser displays the temporary graphic
2. A hypermedia browser as recited in claim 1, wherein
element within a temporary window in a windowing
the browser is configured to display the temporary graphic
operating environment.
element over the content viewing area only during times 45
17. A hypermedia browser of claim 12, wherein content is
when the browser is loading visible content.
data formatted for presentation which is selected from a
3. A hypermedia browser as recited in claim 1, wherein
group consisting of visible effects of a markup language,
the temporary graphic clement indicates to a user that the
visible text of such a markup language, and visible results of
browser is loading content.
4. A hypermedia browser as recited in claim 1, wherein 50 a scripting language.
18. A hypermedia browser of claim 12, wherein content is
the temporary graphic element disappears when the browsdata formatted for presentation which is selected from a
er's loading of content is complete to indicate to a user that
group consisting of HTML, text, SGML, XML, java,
such loading of content is complete.
XHTML, JavaScript, streaming video, VRML, Active X,
5. A hypermedia browser as recited in claim 1, wherein
55 Flash. scripting language for the world wide web.
the temporary graphic element is animated.
19. A method of browsing a hyperlink resource, compris6. A hypermedia browser as recited in claim 1, wherein
ing the following steps:
the hypermedia browser displays the temporary graphic
loading content from the hyperlink resource in response to
element in a corner of the content viewing area.
user selection of hyperlinks contained in said content;
7. A hypermedia browser as recited in claim 1, wherein
the hypermedia browser presents the temporary graphic 60
displaying the content in a content viewing area;
element within a temporary window in a windowing operdisplaying a temporary graphic element over the content
ating environment.
viewing area during the loading step, wherein the
8. A hypermedia browser as recited in claim 1, wherein:
temporary graphic element obstructs only part of the
content in the content viewing area;
the temporary graphic element is animated; and
wherein the loading, the content displaying, and the
the hypermedia browser presents the temporary graphic 65
element within a temporary window in a windowing
temporary graphic element displaying steps occur at
operating environment.
least partially concurrently; and
US 6,339,780 Bl
7
8
wherein content comprises data for presentation which is
content viewing area that the graphic element obstructed
when the element was displayed.
from a source external to the browser.
34. A hypermedia browser of claim 32, wherein content is
20. An information processing device as recited in claim
data formatted for presentation which is selected from a
12, wherein the temporary graphic element is not content.
21. An information processing device as recited in claim 5 group consisting of visible effects of a markup language,
visible text of such a marh.'Up language, and visible results of
12, wherein the temporary graphic element disappears when
a scripting language.
the browser's loading of content is complete to indicate to a
35. A hypermedia browser of claim 32, wherein content is
user that such loading of content is complete.
data formatted for presentation which is selected from a
22. A method as recited in claim 19, wherein the tempo10 group consisting of HTML, text, SGML, XML, java,
rary graphic element is not content.
XHTML, JavaScript, streaming video, VRML, Active X,
23. A method as recited in claim 19, wherein the tempoFlash. scripting language for the world wide web.
rary graphic element indicates to a user that the loading step
36. A computer-readable medium having computeris being performed.
executable instructions that, when executed by a computer,
24. A method as recited in claim 19, further comprising
perform a method of indicating a content "load status" of a
removing the temporary graphic element once the loading 15 hypermedia browser having a content viewing area for
step is complete to indicate to a user that the loading step is
viewing content, the method comprising:
complete.
displaying loaded content within the content viewing area
25. A method as recited in claim 19, further comprising an
of a screen of a hypermedia browser, the screen is
additional step of animating the temporary graphic element.
without a "load status" graphic element, wherein a
26. A method as recited in claim 19, wherein the display- 20
"load status" graphic element indicates a current coning step includes displaying the temporary graphic element
tent load status of the hypermedia browser;
in a corner of the content viewing area.
receiving an instruction to load new content into the
27. A method as recited in claim 19, wherein the displaying step includes displaying the temporary graphic element
content viewing area;
within a temporary window in a windowing operating 25
loading such new content into the content viewing area;
environment.
and
28. A method as recited in claim 19, further comprising an
while loading, displaying a "load status" graphic element
additional step of animating the temporary graphic element,
over the content viewing area so that the graphic
wherein the displaying step includes displaying the tempoelement obstructs only part of the content in such
rary graphic element within a temporary window in a 30
content viewing area; and
windowing operating environment.
29. A computer-readable storage medium containing
wherein content comprises data for presentation which is
instructions that are executable for performing the steps
[rom a source external to the browser.
recited in claim 19.
37. A hypermedia browser of claim 36, wherein content is
30. A hypermedia browser of claim 19, wherein content is 35 data formatted for presentation which is selected from a
data formatted for presentation which is selected from a
group consisting of visible effects of a markup language,
group consisting of visible effects of a markup language,
visible text of such a markup language, and visible results of
visible text of such a markup language, and visible results of
a scripting language.
a scripting language.
38. A hypermedia browser of claim 36, wherein content is
31. A hypermedia browser of claim 19, wherein content is 40 data formatted for presentation which is selected from a
data formatted for presentation which is selected from a
group consisting of HTML, text, SGML, XML, java,
group consisting of HTML, text, SGML, XML, java,
XHTML, JavaScript, streaming video, VRML, Active X,
XHTML, JavaScript, streaming video, VRML, Active X,
Flash. scripting language for the world wide web.
Flash. scripting language for the world wide web.
39. A computer-readable medium as recited in claim 36
32. A method of indicating a content "load status" of a 45 further having additional computer-executable instructions
hypermedia browser having a content viewing area for
that perform a method comprising, upon completion of the
viewing content, the method comprising:
loading, removing the "load status" graphic element to
displaying loaded content within the content viewing area
reveal the part of the content in the content viewing area that
of a screen of a hypermedia browser, the screen being
the graphic element obstructed when the element was diswithout a "load status" graphic element, wherein a 50 played.
40. An information processing device comprising:
"load status" graphic element indicates a current cona processor;
tent load status of the hypermedia browser;
a display;
receiving an instruction to load new content into the
a hypermedia browser executing on the processor to load
55
content viewing area;
and display content in a content viewing area on the
loading such new content into the content viewing area;
display;
and
wherein the hypermedia browser is configured to operate
while loading, displaying a "load status" graphic element
in a content-loading mode and a content-loaded mode;
over the content viewing area so that the graphic
in the content-loaded mode, the hypermedia browser
element obstructs only part of the content in such 60
displays loaded content in the content viewing area and
content viewing area; and
no "load status" graphic element is displayed, wherein
wherein content comprises data for presentation which is
absence of such "load status" graphic element indicates
from a source external to the browser.
that the browser is in the content-loaded mode;
33. A method as recited in claim 32 further comprising, 65
in the content-loading mode, the hypermedia browser
upon completion of the loading, removing the "load status"
graphic element to reveal the part of the content in the
loads content, displays such content in the content
US 6,339,780 Bl
9
10
viewing area as it loads, and displays a "load status"
group consisting of visible effects of a markup language,
graphic element over the content view area obstructing
visible text of such a markup language, and visible results of
a scripting language.
part of the content displayed in the content viewing
area, wherein presence of such "load status" graphic
42. A hypermedia browser of claim 40, wherein content is
element indicates that the browser is in the content- 5 data formatted for presentation which is selected from a
loading mode; and
group consisting of HTML, text, SGML, XML, java,
XHTML, JavaScript, streaming video, VRML, Active X,
wherein content comprises data for presentation which is
Flash. scripting language for the world wide web.
from a source external to the browser.
41. A hypermedia browser of claim 40, wherein content is
data formatted for presentation which is selected from a
* * * * *
UNITED STATES PATENT AND TRADEMARK OFFICE
CERTIFICATE OF CORRECTION
PATENT NO.
: 6,339,780 Bl
DATED
: January 15, 2002
INVENTOR(S) : Shell et al.
Page 1 of 1
It is certified that error appears in the above-identified patent and that said Letters Patent is
hereby corrected as shown below:
Column 5,
Line 15, change "steps" to -- step --.
Signed and Sealed this
Seventeenth Day of September, 2002
Attest:
Attesting Officer
JAMES E. ROGAN
Director of the United States Patent and Trademark Office
111111
1111111111111111111111111111111111111111111111111111111111111
US007411582B2
United States Patent
(10)
Toepke et al.
(12)
(45)
(54)
SOFT INPUT PANEL SYSTEM AND METHOD
(75)
Inventors: Michael G. Toepke, Bellevue, WA (US);
Jeffrey R. Blum, Seattle, WA (US);
Kathryn L. Parker, Fall City, WA (US)
(73)
Assignee: Microsoft Corporation, Redmond, WA
(US)
( *)
Notice:
Patent No.:
US 7,411,582 B2
Date of Patent:
*Aug. 12, 2008
Subject to any disclaimer, the term of this
patent is extended or adjusted under 35
U.S.c. 154(b) by 0 days.
FOREIGN PATENT DOCUMENTS
EP
0464712
111992
(Continued)
OTHER PUBLICATIONS
"Function-independent Approach to Driving Soft Keyboards," IBM
Technical Disclosure Bulletin, vol. 33, No.4, pp. 159-161 (Sep. 1,
1990).
This patent is subject to a tenninal disclaimer.
(Continued)
(21)
Appl. No.: 10/989,877
Primary Examiner-Richard Hjerpe
Assistant Examiner-Kimnhung Nguyen
(22)
Filed:
(57)
Nov. 15, 2004
(65)
Prior Publication Data
US 2005/0088421 Al
Apr. 28, 2005
Related U.S. Application Data
(63)
Continuation of application No. 10/072,111, filed on
Feb. 8, 2002, now Pat. No. 6,819,315.
(51)
Int. Cl.
G06F 31041
(2006.01)
U.S. Cl. ....................... 345/173; 3451179; 345/905;
715/825
Field of Classification Search ................. 3451173,
3451179,347,762,156,901,905,87; 715/808,
715/825-829; 395/340
See application file for complete search history.
(52)
(58)
ABSTRACT
References Cited
(56)
U.S. PATENT DOCUMENTS
5,058,046 A
5,128,672 A
5,252,951 A
1011991 Lapeyre
711992 Kaehler
1011993 Tannenbaum et al.
A method and system for receiving user input data into a
computer system having a graphical windowing environment. A touch-sensitive display screen for displaying images
and detecting user activity is provided. A management component connects to the graphical windowing environment to
create an input panel window for display on the screen. An
input method which may be a COM object is selected from
multiple input methods available, and installed such that the
input method can call functions of the management component. Each input method includes a corresponding input
panel, such as a keyboard, which it draws in the input panel
window. When the user taps the screen at the input panel, the
input method calls a function of the management component
to pass corresponding input infonnation appropriate infonnation such as a keystroke or character to the management
component. In response, the management component communicates the user data to the graphical windowing environment as a message, whereby an application program receives
the message as if the message was generated on a hardware
input device.
31 Claims, 8 Drawing Sheets
(Continued)
I HARDWARE
36
KEYBOARD
~
..
I KEYBOARD
~
.,.
~
I
GRAPHICAL
WINDOWING
ENVIRONMENT _
MANAGER
.,
I..-
6.
DRIVER
~D
I--
IIMCaliback
63 -....
INPUT METHOD
IInputMethod
J .~
APPLICATIONS
I--
I--
US 7,411,582 B2
Page 2
u.s. PATENT DOCUMENTS
RE34,476
5,276,794
5,517,578
5,528,743
5,574,482
5,596,702
5,644,339
5,748,512
5,760,773
5,777,605
5,781,181
5,818,425
5,838,302
5,914,707
5,936,614
5,956,423
6,008,799
6,018,335
6,031,525
6,069,628
E
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
*
*
1211993
111994
511996
611996
1111996
111997
711997
511998
611998
711998
711998
1011998
1111998
611999
811999
911999
1211999
112000
212000
5/2000
Norwood
Lamb, Jr.
Altman et al.
Tou et al.
Niemeier
Stucka et al. ................. 395/40
Mori et al. .................. 345/173
Vargas
Berman et al. .............. 715/808
Yoshinobu et al.
Yanai et al.
Wantetal.
Kuriyama et al.
Kono ......................... 345/173
An etal.
Frink et al. ................. 382/187
Van Kleeck
Onley
Perlin
Farry et al. ................. 345/348
6,094,197 A
7/2000 Buxton et al.
6,295,052 Bl
912001 Kato et al.
6,819,315 B2 * 1112004 Toepke et al. ............... 345/173
FOREIGN PATENT DOCUMENTS
JP
JP
JP
JP
WO
01-191226
06-324806
08-22385
08-328805
W09209944
8/1989
1111994
111996
12/1996
6/1992
OTHER PUBLICATIONS
"Soft Adaptive Follow-Finger Keyboard for Touch-Screen Pads,"
IBM Technical Disclosure Bulletin, vol. 36, No. 11, pp. 5-7, (Nov. 1,
1993).
Kano, Nadine, Developing International Software for Windows 95
and Windows NT, Chapter 7, Appendix N and Appendix 0, Microsoft
Press, pp. 202-229, 553-556, 557-563.
International Search Report in Corresponding PCT Application No.
PCTIUS98/26683.
* cited by examiner
~
System Memory
20
(RAM) 25
OPERATING 28
SYSTEM -
22
Processing
Unit
21
32
7Jl
•
~
Touch
Sensitve
,DiSPlay
~
~
~
=
~
Video Driver
APPLICATION
29
PROGRAMS -
33
~
OTHER PROGRAM
MODULES 30
Screen
Input
Detector
PROGRAM 31
DATA
-
~
....
N
~
N
o
o
QO
34
(ROM)
I
24
BIOS
26
rFJ
=....
o
....
I
('D
('D
.....
FLASH
PORT
(SLOT)
QO
d
External
Devices
rJl
-....l
~
OPERATING APPLICATION
SYSTEM
PROGRAMS
28
29
OTHER 30
PROGRAM
MODULES
PROGRAM
DATA
31
39
F/G_ 1
"""'"
"""'
11."
QO
N
=
N
u.s. Patent
Aug. 12, 2008
Sheet 2 of8
US 7,411,582 B2
HARDWARE
KEYBOARD
LJ36
-
KEYBOARD
62
DRIVER_~
58~
\
.
SIP
MANAGER
GRAPHICAL
60
WINDOWING
ENVIRONMENT _-"-__
61
/~IMCalibaCk
'-..
63
'+
'f
IInputMethod
64
INPUT METHOD -
U
29
FIG. 2
APPLICATIONS
u.s. Patent
Aug. 12, 2008
US 7,411,582 B2
Sheet 3 of8
SELECT
APPLICATION
-
SET
FOCUS
SIP/1M
SELECTION
-
300
302
-
ACCEPT INPUT,
(PROCESS);
PASS TO SIP MANAGER
VIA CALLBACK
304
-
306
1r
OS RECEIVES ""'------ 308
INPUT DATA
APPLICATION
RECEIVES DATA ..-FROM OS
FIG. 3
310
u.s. Patent
Aug. 12, 2008
Sheet 4 of8
US 7,411,582 B2
"'C
S
(,)
:E.!
-Q)
t/)
Q)
C
~Q)
....•
~.2
D.,0
ii:
~
0"'C
:E
....
.- In
(J
Q)
-
Q)
0
0
.! Q)
min
mo
0-
~(J
.!!c
enG)
CDC.
00
I-
(!)
u.s. Patent
Aug. 12, 2008
EJ0
World Clock
Time
@
Visiting
Home
0
Seattle, WA.
6:00:37 PM
6/20/97
US 7,411,582 B2
Sheet 5 of8
I
IV I
Alarms
Tokyo
11:00:37 PM
6/21/97
68
I
IV I
32
Home
56
~Start
Visiting
~
FIG. 5
B
12:28 PM
u.s. Patent
Aug. 12, 2008
US 7,411,582 B2
Sheet 6 of8
El0
World Clock
Time
@
Home
Visiting
0
Seattle, WA.
6:00:37 PM
6/20/97
I
IV I
Alarms
Tokyo
11:00:37 PM
6/21/97
68
I
IVI
32
Home
72
Visiting
_
Keyboard
- - - r - - - l (I Handwriting
\) Grafti
56
~Start
~ B
FIG. 6
12:28 PM
IO'6J
u.s. Patent
EJ0
World Clock
Time
@
6/20/97
68
Home
Visiting
0
Seattle, WA.
6:00:37 PM
US 7,411,582 B2
Sheet 7 of8
Aug. 12, 2008
I
IV I
Alarms
Tokyo
11:00:37 PM
6/21/97
I
IV I
32
50
56
Il.
~
B
FIG. 7
12:28 PM
u.s. Patent
Aug. 12, 2008
US 7,411,582 B2
Sheet 8 of8
RECEIVE
WM_SETTINGCHANGE
MESSAGE
808
800
NO
CACHE SIP
CHANGE
810
CALL
SystemParameterslnfo(),
RECEIVE SIP STATE
812
ADJUST BASED ON
SIP STATE
FIG. 8
US 7,411,582 B2
1
2
SOFT INPUT PANEL SYSTEM AND METHOD
OBJECTS AND SUMMARY OF THE
INVENTION
CROSS-REFERENCE TOo RELATED
APPLICATION
This is a continuation of U.S. patent application Ser. No.
10/072,111 filed Feb. 8, 2002, which is a continuation of U.S.
patent application Ser. No. 08/991,277 filed Dec. 16, 1997.
FIELD OF THE INVENTION
10
The invention relates generally to computer systems, and
more particularly to the input of data into a computer system.
15
BACKGROUND OF THE INVENTION
Small, mobile computing devices such as personal desktop
assistants including hand-held and palm-top computers and
the like are becoming important and popular user tools. In
general, they are becoming small enough to be extremely
convenient while consuming less and less battery power, and
at the same time becoming capable of running more and more
powerful applications.
Although such devices continue to shrink in size, size
limitations are being reached as a result of human limitations.
For example, a full character keyboard that enables user data
input carmot be so small that human fingers carmot depress
the individual keys thereon. As a result, the size of such
devices (e.g., palm -top computers) has become limited to that
which can accommodate a full character keyboard for an
average user.
One solution to reducing the size of the portion of the
device that receives user input is to provide a touch-sensitive
display, and thereby substantially eliminate the need for a
physical keyboard. To this end, an application program such
as a word processor displays a keyboard, whereby the user
enters characters by touching the screen at locations corresponding to the displayed keys. Of course, touch screen
devices can also be used simultaneously with devices having
a physical keyboard, whereby characters can also be entered
by manually pressing the keys of the physical keyboard.
While a touch-screen device serves to provide a suitable
means of user data entry, the data entry panel is typically part
of the application program, i.e., each application needs to
develop its own touch-sensitive interface. As a result, a substantial amount of duplication takes place. For example, both
the word processor and a spreadsheet program require alphanumeric keyboard input, whereby each provides its own
touch-screen keyboard interface. Other types of programs,
such as a calculator program, need a numeric keypad with
additional keys representing mathematical operations. This
makes each program larger, more complex and consumes
computer system resources.
Alternatively, the operating system can supply all the virtual keyboards and thus eliminate the redundancy, however
this limits applications to using only those virtual keyboards
supplied by the operating system. Newer applications (e.g.,
those added by plug-in modules) are unable to provide an
input mechanism that is more tailored to its particular needs.
For example, a new paintbrush program may need its own
graphical input screen. In sum, there is a tradeoff between
flexibility and efficiency that is inherent with present user data
input mechanisms.
20
25
30
35
40
45
Accordingly, it is an object of the present invention to
provide an improved method system for entering user data
into a computer system.
Another object of the present invention is to provide the
method and system for user data entry that is both efficient
and flexible.
In accomplishing those objects, it is a related object to
provide a method and system of the above kind that functions
with touch-sensitive input mechanisms.
Yet another object is to provide a method and system as
characterized above that enables a plurality of applications to
receive user input from a common input method.
A related object is to provide a method and system that
enables selection of one or more input methods for each
application from among a set of interchangeable input methods.
Yet another object is to provide such a method and system
that is cost-effective, reliable, extensible and simple to implement.
Briefly, the present invention provides a method and system for receiving user data input into a computer system, such
as a computer system having a graphical windowing environment. The invention may utilize a touch-sensitive display
screen for displaying images and detecting user contact therewith (or proximity thereto). A management component
operatively connected to the graphical windowing environment creates an input panel window for display on the screen.
An input method is selected from among a plurality of such
input methods and installed, whereby the input method can
call functions of the management component. Each input
method includes a corresponding input panel, such as a keyboard, which it draws in the input panel window. When user
data is received via the input panel, the input method calls a
function of the management component to pass the user data
thereto, and in response, the management component communicates the user data to the graphical windowing environment such as in a windows message. An application program
receives the message, such as corresponding to a keystroke, as
if the message was generated on a hardware keyboard.
Other objects and advantages will become apparent from
the following detailed description when taken in conjunction
with the drawings, in which:
BRIEF DESCRIPTION OF THE DRAWINGS
50
55
60
65
FIG. 1 is a block diagram representing a computer system
into which the present invention may be incorporated;
FIG. 2 is a block diagram representing various components
and connections therebetween for implementing interchangeable input panels according to an aspect of the present
invention;
FIG. 3 is a flow diagram generally representing a process
for getting user input from a selected input method to a
selected application in accordance with one aspect of the
present invention;
FIG. 4 is a state diagram generally representing SIP selection states;
FIG. 5 represents a display on a touch-sensitive display
screen on an exemplary computing device;
FIG. 6 represents a display on a touch-sensitive display
screen on an exemplary computing device providing the ability to select from among interchangeable input panels III
accordance with the present invention;
US 7,411,582 B2
3
4
FIG. 7 represents a display on a touch-sensitive display
screen wherein a keyboard has been selected as an input panel
in accordance with the present invention; and
FIG. 8 is a flow diagram representing the general steps
taken in response to a change in SIP status.
as a parallel port, game port or universal serial bus (USB). The
hand-held device 20 may further include or be capable of
connecting to a flash card memory (not shown) through an
appropriate connection port (e.g., slot) 42 and interface 43. A
number of hardware buttons 44 such as switches, buttons
(e.g., for switching application) and the like may be further
provided to facilitate user operation of the device 20, and are
also connected to the system via a suitable interface 45. An
infrared port 46 and corresponding interface/driver 47 are
provided to facilitate communication with other peripheral
devices, including other computers, printers, and so on (not
shown). It will be appreciated that the various components
and connections shown are exemplary and other components
and means of establishing communications links may be
used.
DETAILED DESCRIPTION OF THE PREFERRED
EMBODIMENT
Exemplary Operating Environment
FIG. 1 and the following discussion are intended to provide
a brief, general description of a suitable computing environment in which the invention may be implemented. Although
not required, the invention will be described in the general
context of computer-executable instructions, such as program
modules, being executed by a hand-held computing device
such as a personal desktop assistant. Generally, program
modules include routines, programs, objects, components,
data structures and the like that perform particular tasks or
implement particular abstract data types.
Moreover, those skilled in the art will appreciate that the
invention may be practiced with other computer system configurations, including palm-top, desktop or laptop personal
computers, mobile devices such as pagers and telephones,
multi-processor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers,
mainframe computers and the like. The invention may also be
practiced in distributed computing environments where tasks
are perfonned by remote processing devices that are linked
through a communications network. In a distributed computing environment, program modules may be located in both
local and remote memory storage devices.
With reference to FIG. 1, an exemplary system for implementing the invention includes a general purpose computing
device in the form of a hand-held personal computing device
20 or the like, including a processing unit 21, a system
memory 22, and a system bus 23 that couples various system
components including the system memory to the processing
unit 21. The system bus 23 may be any of several types of bus
structures including a memory bus or memory controller, a
peripheral bus, and a local bus using any of a variety of bus
architectures. The system memory includes read-only
memory (ROM) 24 and random access memory (RAM) 25.A
basic input/output system 26 (BIOS), containing the basic
routines that help to transfer infonnation between elements
within the hand-held computer 20, such as during start-up, is
stored in the ROM 24.
A number of program modules are stored in the ROM 24
and/or RAM 25, including an operating system 28 (preferably
Windows CE), one or more application programs 29, other
program modules 30 and program data 31. A user may enter
commands and information into the hand-held computer 20
through input devices such as a touch-sensitive display screen
32 with suitable input detection circuitry 33. Other input
devices may include a microphone 34 connected through a
suitable audio interface 35 and a physical (hardware) keyboard 36 (FIG. 2). The output circuitry of the touch-sensitive
display 32 is also connected to the system bus 23 via video
driving circuitry 37. In addition to the display 32, the device
may include other peripheral output devices, such as at least
one speaker 38 and printers (not shown).
Other external input or output devices 39 such as a joystick,
game pad, satellite dish, scanner or the like may be connected
to the processing unit 21 through an RS-232 or the like serial
port 40 and serial port interface 41 that is coupled to the
system bus 23, but may be connected by other interfaces, such
10
15
20
25
30
35
40
45
50
55
60
65
Soft Input Panel
The soft input panel architecture is primarily designed to
enable character, key-based and other user data input via the
touch screen 32 of the device 20 rather than a physical keyboard 36. However, as can be appreciated, a given computer
system 20 may optionally and additionally include a physical
keyboard, as represented by the dashed box 36 of FIG. 2.
Moreover, as will become apparent, the "soft input panel"
need not be an actual touch-sensitive panel arranged for
directly receiving input, but may alternatively operate via
another input device such as the microphone 34. For example,
spoken words may be received at the microphone 34, recognized, and displayed as text in an on-screen window, i.e., a
soft input panel.
FIG. 2 shows a block diagram implementing the SIP architecture in accordance with one aspect of the present invention.
The computer system 20 includes an operating system (OS)
28 such as the graphical windowing environment 60. Such a
graphical windowing environment 60 is generally operational
to receive user input through a variety of devices including the
keyboard 36, a mouse (not shown), a digitizer (not shown)
and so on. In turn, the graphical windowing environment 60
may provide such user input to an application having "input
focus," typically in the form of a keyboard character event.
Note that a number of applications 29 may be executable by
the computer system, however one application that is currently running is said to have "input focus" and receive the
input.
In accordance with one aspect of the present invention, the
present architecture employs a SIP manager 58 to provide a
single and flexible interface for a plurality of different input
methods 64. In general, the SIP manager 58 provides keystrokes from a selected input method 64 to the graphical
windowing environment 60 (e.g., the Windows CE operating
system 28). Once received, the graphical windowing environment 60 sends information corresponding to the user input
data to an application 29 (i.e., the application whose window
currently has input focus) in the form of that keystroke, mouse
or other message placed in the message queue of the application's window. The passing of such messages is well known in
Windows programming and is described in "Programming
Windows 95," Charles Petzold, Microsoft Press (1996),
hereby incorporated by reference. As a result, any application
capable of handling keyboard input may be used with any
appropriately-configured input method 64. Indeed, if an
optional keyboard 36 is present, keystrokes are directly provided by a keyboard driver 62 to the graphical windowing
environment 60, whereby appropriate keystrokes are likewise
placed in the message queue of the active application's window without the application being provided with infonnation
as to the source.
US 7,411,582 B2
5
6
Input methods 64 may include, for example, various different displayable keyboards, (soft keyboards), a calculator, a
formula and/or equation editor, chemical symbol template,
voice recognition, handwriting recognition, shorthand symbol recognition (such as "Graffiti"), or other applicationoptimized input methods (e.g. a barcode reader). The SIP
manager 58 provides a user interface for pennitting a user to
toggle a SIP window (panel) 50 (FIG. 7) between an opened
and closed state, as described in more detail below. The SIP
manager 58 also provides a user interface enabling user selection from a displayable list of available input methods. A user
interacting with the user interface may select an input method
64, and in response, the SIP manager 58 loads and calls the
selected input method 64. In a preferred embodiment, each of
the input methods communicates with the SIP manager 58
through a COM (Component Object Model) interface shown
as IIMCallback 61 and IInputmethod 63. A COM object
comprises a data structure having encapsulated methods and
data that are accessible through specifically defined interfaces. A detailed description of COM objects is provided in
the reference entitled "Inside OLE," second edition, Kraig
Brockschmidt (Microsoft Press), hereby incorporated by reference.
Generally, when the SIP window 50 is toggled between
on/off by a user, as will be described in more detail below, the
SIP manager 58 informs the selected input method 64 to
correspondingly open/close the SIP window 50 through the
IInputmethod mechanism 63. When a new input method is
selected, the SIP manager 58, through the mechanism 63,
informs any of the previously selected input methods to exit,
and loads the newly selected input method. The mechanism
63 may also be utilized by the SIP manager 58 to obtain
information specific to a selected input method, as also
described in detail below.
The selected input method 64 may also communicate
information to the SIP manager 58 via the IIMCallback
mechanism 61, such as which character or characters were
entered by a user, irrespective of whether the character or
characters are generated through keyboard selection, handwriting recognition, voice recognition, a fonnula editor, calculator or the like. Such character input is generally passed to
the SIP manager 58, preferably received as (or converted to)
a Unicode character (for Windows CE) by the SIP manager 58
and output to the graphical windowing environment 60. Command key information, such as "Ctrl" on a keyboard, may also
be provided by the input method 64 to the SIP manager 58 via
interface 61.
SIP and input method-specific infonnation may also be
communicated through the SIP manager 58, and ultimately to
the focused application 29, when the application is optimized
for operating with a SIP (i.e., is "SIP-aware") as described in
more detail below.
The system operates as generally represented in the steps
of FIG. 3. Once an application is selected and has focus (steps
300-302), an input method 64 is selected therefor at step 304.
Note that the input method 64 may be selected by the user, or
a default input method may be selected for use with a particular application. Additionally, the input method 64 may be one
that remains after having been selected for a previous application, i.e., a particular input method stays the same as the
user switches between various applications. In any event, the
input method 64 displays a SIP window 50 when selected.
As the user inputs data at step 306, appropriate data is
passed to the SIP manager 58 via the IIMCallback mechanism 61, described below. Note that the input method 64 may
first process the received data at step 306. By way of example,
one particular input method 64 may convert barcode symbols
to Unicode characters representing digits, another input
method may convert mathematical entries into a Unicode
result (e.g., an entry of'3+6=' sends a '9' to the SIP manager
58), while yet another may be an equation editor (e.g., the
characters "Sqrt" are converted into a single Unicode value
representing a square root symbol). After any such processing, the input method 64 passes those digits to the SIP manager 58, which in turn passes those digits to the graphical
windowing environment 60. The application receives the
character data from the graphical windowing environment 60
as if the user had entered those digits on a physical keyboard,
regardless of the input method used.
As shown in FIGS. 5-7, the soft input panel (SIP) functionality of the system collectively includes the visible window 50
(FIG. 7), a visible SIP button 52, and various methods and
functions (described below). As shown in FIG. 7, the SIP
window 50 is a rectangular area provided by the input method
64 that can be hidden or shown at the user's (or an application
program's) request. The visible SIP button 52 is located on a
taskbar56 or the like, and provides a touch-sensitive interface
by which the user displays or hides the SIP window 50. Thus,
as represented in the state diagram of FIG. 4, the window 50
toggles between an open, visible state (FIG. 7) and a closed,
hidden state (FIG. 5) as the user taps the SIP button 52. A
present design implements a 240 pixel wide by 80 pixel high
SIP window 50 that is fixed (docked) on the display 32 at a
position just above the taskbar 56. As will become apparent
below, the soft input panel design supports other SIP window
50 sizes or positions.
To this end, the operating system 28 creates a dedicated
thread (the SIP manager 58) that registers itself as a SIP
thread with the Windows CE system. The thread creates the
SIP window 50, perfonns other SIP initialization, and then
enters a message loop to respond to messages and user interface activity in the SIP window 50. The thread also serves to
dispatch messages to an Input Method's window, and calls
into the Input Method 64 to permit the Input Method 64 to
create windows that will respond as special SIP windows.
The SIP manager thread 58 is given special status by the
system. For example, windows created by the SIP manager 58
thread are topmost windows, and ordinarily will not be
obscured by other windows, except, e.g., when the taskbar 56
is activated in an auto-hide mode while the SIP window 50 is
displayed. In this case, the SIP window 50 remains displayed
in its current location and the taskbar 56 is displayed on top of
the SIP window 50. More generally, any user interface element for controlling the SIP may (and should) be placed on
top of (rather than underneath) the SIP window 50, whenever
the controlling user interface element and the SIP window 50
overlap.
Moreover, when tapped on, the SIP window 50 (and any
child windows thereof such as pushbuttons, text entry fields,
scrollbars and the like) will not receive the input focus as
would conventional program windows. In this manner, the
user may interact with the SIP window 50 without changing
the system focus. As can be appreciated, changing the system
focus each time the user inputs data into the SIP window 50
would be undesirable. The SIP button 52 will also not cause a
change of focus for the same reason, i.e., it is undesirable to
cause the window with focus to lose focus by tapping on the
SIP button 52 to bring out the SIP window 50.
In accordance with one aspect of the present invention, the
SIP system enables the selective installation of a specified
Input Method 64. As generally described above, each Input
Method 64 is an interchangeable component by which the
user provides character, text or other user data via the touchscreen display (or some other input device). More particu-
5
10
15
20
25
30
35
40
45
50
55
60
65
US 7,411,582 B2
8
7
larly, the SIP manager 58 preferably exposes a COM interface
that enables the selective installation of Input Methods 64.
The Input Method 64 occupies space inside a SIP window 50
created by the system.
Preferably, the Input Method 64 comprises a Component
Object Model (COM) object that implements the IInputMethod interface. Notwithstanding, the Input Method 64 and
SIP manager 58 can comprise virtually any components
capable of communicating with one other through some
mechanism, such as by receiving, responding to, and making
function calls.
The Input Method 64 is responsible for drawing in the SIP
window 50 and responding to user input in the SIP window
50. Typically, the Input Method 64 will respond to user input
and convert that input into characters which are then sent to
the SIP manager 58 via exposed SIP functions. By way of
example, one Input Method 64 includes a default QWERTY
(alpha) keyboard 66 shown in FIG. 7. More particularly, this
Input Method 64 displays an image of the keyboard 66 on the
screen 32, and converts taps on that keyboard 66 (detected as
screen coordinates) into characters which are sent to the SIP
manager 58 and thereby to the system. Input Methods may be
written by application vendors, and are added to the system
using COM component installation procedures.
The user interacts with the Input Method 64 manifested in
the visible SIP window 50 to create system input. As best
represented by the state diagram of FIG. 4 and as shown in
FIG. 6, the user can select a different Input Method by tapping
a SIP menu button 70 on thetaskbar56 that provides a pop-up
input method list 72 into the SIP window 50. The user can also
select among available Input Methods via a control panel
applet (not shown) or the like. The SIP control panel applets
communicate with the operating system 28 using the registry
and the exposed SIP-aware functionality described below.
As will be described in detail below, the various components cooperate to expose functions, structures, and window
messages that enable system applications 29 to respond to
changes in the SIP state. An application 29 that uses this
functionality to adjust itself appropriately to SIP changes is
considered "SIP-aware." Other applications may be SIPaware yet choose to retain their original size (and thus be
partially obscured by the SIP window 50) when appropriate.
Moreover, and as also described below, there are exposed
functions that enable applications to programmatically alter
the SIP state.
Notwithstanding, applications 29 need not be aware of the
SIP system in order to benefit from the present invention.
Indeed, one aspect of the present invention is that applications
do not ordinarily recognize whether data received thereby
originated at a hardware input device such as the keyboard 36
or via user activity (e.g., contact or proximity detected by the
screen 32 and detection circuitry 33) within the soft input
panel window 50. This enables applications to operate with
virtually any appropriate input method, irrespective of
whether that application is SIP-aware.
Turning to an explanation of the mechanism that facilitates
the operation of an Input Method 64 installed by the SIP
manager 58, a SIP-aware application 29 is notified when the
SIP window 50 changes state and what the new, current state
of the SIP window 50 is. The state includes whether the status
of the SIP window 50 is visible or hidden, whether the SIP
window 50 is docked or in a floating condition, and the size
and position of the SIP window 50. As shown in the table
below, a data structure (SIPINFO) contains this SIP information:
10
15
20
25
30
35
40
45
50
55
60
65
Typedef struet {
DWORD ebSize
DWORD fdwFlags
RECT
re VisibleDesktop
RECT
reSipReet
DWORD dwlmDataSize
Void *pvlmData
} SIPINFO;
The cbSize field may be filled in by the application program 29 and indicates the size of the SIPINFO structure. This
field allows for future enhancements while still maintaining
backward compatibility, and indeed, the size of the SIPINFO
structure may be used to indicate the version to the components of the system. The fdwFlags field represents the state
information of the SIP window 50, and can be a combination
of three flags. A SIPF _ON flag that is set indicates that the SIP
window 50 is visible (i.e., not hidden), while a set SIPF_DOC
flag indicates the SIP window 50 is docked (i.e. not floating).
A set SIPF _LOCKED flag indicates that the SIP window 50
is locked, i.e., the user caunot change its visible or hidden
status. Note that a given implementation may not allow floating or locked SIP windows, however the capability is present
within the system.
The rcVisibleDesktop field contains a rectangle, in screen
coordinates, representing the area of the screen desktop 68
not obscured by the SIP window 50. If the SIP window 50 is
floating (not docked), this rectangle is equivalent to the userworking area. Full-screen applications wishing to respond to
SIP window 50 size changes can generally set their window
rectangle data structure ("rect") values to this RECT data
structure's values. If the SIP window 50 is docked and does
not occupy an entire edge (top, bottom, left or right), then this
rectangle represents the largest rectangle not obscured by the
SIP window 50. However, the system may provide available
desktop space 68 not included in the RECT data structure.
Next, the rcSipRect field contains the rectangle, in screen
coordinates, representing the size and location of the SIP
Window 50. Applications 29 will generally not use this information, unless an application 29 wants to wrap around a
floating SIP window 50 or a docked SIP window 50 that is not
occupying an entire edge.
The dw ImDataSize field contains the size of the data
pointed to by the PvImData member, which is the next field,
i.e., a pointer to the Input Method-specific data. The data are
defined by the Input Method 64.
Whenever the state of the SIP window 50 changes, i.e., a
new Input Method has been selected and/or a visibility, docking or size change has occurred, a message, WM_SETTINGCHANGE, is sent to all top-level windows, as generally
represented at step 800 of FIG. 8. In this manner, an application 29 can adjust it self to the new state of the SIP window 50,
such as by adjusting its size in response to this message. To
this end, a flag, SPCSETSIPINFO, is sent with this message
to indicate when SIP information has changed, and another
flag, SPCSETCURRENTIM, when the current Input Method
has changed. As shown at step 802 of FIG. 8, the flag is tested
to determine if the message is SIP-related or another type of
setting change message (whereby it is handled at step 804). If
SIP-related, for performance reasons, the applications that
are not currently active in the foreground cache these SIP
changes (steps 806-808). If the application's window is
active, the application can adjust its size and/or window (steps
810-812). For example, as shown in FIGS. 5 and 6, when the
SIP window 50 of FIG. 7 is hidden and an active application
US 7,411,582 B2
9
10
29 notified, the application 29 may use the additional desktop
space 68 to display more information such as the analog clock
faces. Note that an application 29 that has cached a SIP
change when inactive can query the current SIP state when
activated to subsequently adjust itself in an appropriate manner in accordance with the information that is returned.
To query the SIP manager 58, another function, SHSipInfo,
is provided so that applications 29 can determine information
about the SIP window 50 and Input Method 64. In general, if
this function succeeds, the return value will be nonzero, while
if this function fails, the return value will equal zero and
extended error information will be available via a GetLastError() call.
The following table sets forth the structure of this call:
The IInputMethod Interface
IInputMethod is the interface implemented by the Input
Method 64 components. The SIP manager 58 calls the methods of this interface to notifY the Input Method 64 of state
changes, and request action and information from the Input
Method 64. In general, if the called method succeeds, a success is returned, and conversely, if the method fails, a failure
result is returned. The following table sets forth the method
calls available in this IInputMethod interface:
5
10
Interface IinputMethod : Iunknown
{
15
SHSipInfo (
UINT uiAction
UINT uiParam
PYOID pvParam
UINT fwinIni
);
The uiAction parameter can include the values SIP_SETSIPINFO, SPCGETSIPINFO, SPCSETCURRENTIM and
SPCGETCURRENTIM. SIP_SETSIPINFO indicates that
pvParam points to a SIPINFO structure (described above).
The cbsize, dwImDataSize and pvImDataSize are filled in
before calling the SHSipInfo function. In response to this call,
the SIPINFO structure is filled in with the current SIP size,
state, and visible desktop rectangle. If both dWImDataSize
and pvImData are nonzero, the data size and pointer are sent
to the Input Method 64. If the Input Method 64 is called but
does not provide Input Method-specific data, or the format or
size of the data passed in is not in a format recognized by the
Input Method 64, then the SHSipInfo function call fails (returns zero). If the size and format are supported by the Input
Method 64, the Input Method 64 fills in the buffer that is
pointed to by pvImData with the Input Method-specific data.
Typically, an application 29 will set the pv ImDataSize to zero
and pv ImData to NULL.
A uiAction of SPCSETSIPINFO indicates that pvParam
points to a SIPINFO structure. The SIP window 50 size and
state are set to the values specified in the SIPINFO structure.
Before changing a SIP value, the application 29 should first
obtain the current SIP state by calling SHSipInfo with
SPCGETSIPINFO, then change whatever specific SIP state
values it wishes to change before making the SPCSETSIPINFO call. The cbSize field is set to the size of the SIP in the
structure, and if both pvImDataSize and pvImData are not
zero, the data size and pointer are sent to the Input Method 64.
The SHSipInfo call fails if the Input Method 64 is called and
does not allow setting Input Method-specific data, or if the
format or size of the passed data is not in a format recognized
thereby. If a size and format are supported by the Input
Method 64, the Input Method 64 uses the data to set Input
Method-specific information. Typically, an application will
set the pvImDataSize to zero and pvImData to NULL.
SPCSETCURRENTIM indicates that pvParam points to a
CLSID structure which specifies the CLSID of the Input
Method 64 to which the SIP will switch. If the CLSID is not
valid, or if the specified Input Method 64 cannot be loaded,
the call fails (return value equals zero) and a default Input
Method 64 (e.g., the QWERTY-like keyboard 66) is loaded.
Lastly, a uiAction of SPCGETCURRENTIM indicates
that pvParam points to a CLSID structure that receives the
CLSID of the currently selected Input Method 64.
20
HRESULT Select ( [in] HWND hwndSip );
HRESULT Deselect( void);
HRESULT Showing (void );
HRESULT Hiding (void);
HRESULT GetInfo ( [out] IMINFO *pimi);
HRESULT ReceiveSipInfo ( [in] SIPINFO *psi);
HRESULT RegisterCallback ( [in] IIMCallback* pIMCallback);
HRESULT GetImData ([in] DWORD dwSize, [out] LPVOID
pvImData);
HRESULT SetImData ([in] DWORD dwSize, [in] LPVOID
pvImData);
HRESULT UserOptionsDlg ( [in] HWND hwndParent);
25
30
35
40
45
50
55
60
65
An Input Method 64 will ordinarily receive a Select( ),
GetInfo( ), ReceiveSipInfo( ) and Register Callback( )
method call, in sequence, before rendering the SIP window 50
space or responding to user actions. When the SIP window 50
is displayed (i.e., turned on), Showing() will be called by the
SIP manager 58, after which the Input Method 64 issues a
WM_PAINT message to render the SIP window 50.
The Select( ) method is called when the Input Method 64
has been selected into the SIP. The Input Method 64 generally
performs any desired initialization in response to this call.
The Input Method is responsible for drawing the entire client
area of the SIP window 50, and thus ordinarily creates its
windows and imagelists (collections of displayable bitmaps
such as customized icons) in response to this call. For
example, the window handle of the SIP window 50 is provided to the Input Method 64 as a parameter accompanying
this Select( ) method call, and the Input Method normally
creates a child window of this SIP window 50. The Input
Method 64 is also provided with a pointer to a value, which is
set to nonzero by the Input Method 64 if the method call is
successful or zero if not successful.
The Deselect() method is called when the Input Method 64
has been selected out of the SIP. The Input Method's window
should be destroyed in response to this call, and the Input
Method 64 will typically perform any other cleanup at this
time.
The Showing() method will cause the SIP window 50 to be
shown upon return from the call. Note that the SIP window 50
is not visible prior to this call, and that once the SIP window
50 is shown, this window and its children will receive paint
messages. Conversely, the Hiding( ) method hides the SIP
window 50 upon return from the call. Accordingly, the Showing( ) and Hiding( ) methods are used to toggle the SIP
window 50 between its open and closed states.
The GetInfo() method is called when the system is requesting information about the Input Method 64. The information
requested includes flags indicating any special properties of
the Input Method 64, the handles of two imagelists which
contain masked bitmaps that are to be displayed on the SIP
button 52 when that Input Method 64 is active, indices into the
specified imagelists, and a rectangle indicating the preferred
US 7,411,582 B2
11
12
size and placement of the Input Method 64. The call includes
a parameter, pimi, which is a pointer to a data structure
(IMINFO) that the Input Method 64 should fill in with appropriate data. The call also provides a pointer to a value that the
Input Method should set to nonzero to indicate success and
zero to indicate failure. More particularly, the IMINFO data
structure is represented in the following table:
passes an IIMCallback interface pointer as a parameter to the
Input Method 64, whereby the Input Method 64 can call
methods on this interface to send information back to the SIP
manager 58 as described below. The Input Method 64 uses the
callback interface pointer to send keystrokes to applications
29 via the SIP manager 58 and to change its SIP taskbar button
icons 52.
The GetImData( ) method is called when an application
program 29 has asked the SIP for the SIPINFOdata structure
and has provided a non-NULL pointer for the pvImData
member of the SIPINFO structure. The application 29 will
ordinarily cause this call to be made when requesting some
special information from the Input Method 64. Two parameters are passed with this call, dwsize, the size of the buffer
pointed to by pvImData, and pvImData, a void pointer to a
block of data in the application 29.
With this call, the application 29 is essentially requesting
that the Input Method 64 fill the block with information,
wherein the size and format of the data are defined by the
Input Method 64. This call is designed for Input Methods 64
that wish to provide enhanced functionality or information to
applications. By way of example, a SIP-aware application
may wish to know whether a character was entered by way of
the SIP or by some other means. An input method 64 can thus
respond to the application's request by filling the block.
The SetImData( ) method is called when an application 29
has set the SIPINFO data structure and has provided a nonNULL pointer for the pvImData member of the SIPINFO
structure. The application 29 will ordinarily cause this call to
be made when requesting that the Input Method 64 set some
data therein. The parameters passed with this call include
dwsize, the size of the buffer pointed to by pvImData, and
pvImData, a void pointer to a block of data in the application
64.
Typedef struct {
DWORD cbSize;
HIMAGELIST hIrnageNarrow;
HIMAGELIST hIrnageWide;
lnt iNarrow;
IntiWide;
DWORD fdwFlags;
Rect rcSipRect;
} IMINFO;
The cbSize field contains the size of the IMINFO structure,
and is filled in by the SIP manager 58 prior to calling calling
GetInfo( ). The hImageNarrow field is a handle to an imagelist containing narrow (16x 16) masked bitmaps for the Input
Method 64. Similarly, hImageWide is a handle to the imagelist containing wide (32xI6) masked bitmaps. The SIP manager 58 displays one of the bitmaps (e.g., on the taskbar 56) to
indicate the Input Method 64 that is currently selected. Note
that the SIP manager 58 may use the 16x16 or 32x16 bitmaps
at various times depending on how it wishes to display the
bitmap.
The iNarrow field is an index into the hImageNarrow
imagelist indicating which bitmap of several possible from
that (narrow) imagelist should currently be displayed. Similarly, the iwide field is an index into the hImageWide imagelist indicating which bitmap from that (wide) image list
should currently be displayed. Note that the Input Method 64
can initiate a change of the bitmap displayed in the SIP
taskbar button 52 by calling IIMCallback::SetImages (described below).
The fdwFlags field indicates the visible, docked and locked
states (SIPF _ON SIPF _DOCKED and SIPF _LOCKED) of
the Input Method 64, as well as any special Input Method
flags that may be defined in the future. Note that the SIP state
flags are ignored for the GetInfo() method, but are used in the
SetImInfo callback method as described below.
Lastly, the rcSipRect field describes the size and placement
of the SIP rectangle. The sizing and placement information
returned from GetInfo( ) may be used by the SIP when determining an initial default size and placement. When used, the
SetImInfo callback method (described below) specifies the
new size and placement of the SIP window 50.
The ReceiveSipInfo( ) method provides information to the
Input Method 64 about the SIP window, including the current
size, placement and docked status thereof. This call is made
whenever the user, an application 29 or the Input Method 64
changes the SIP state. When the SIP manager 58 sends this
information during Input Method initialization, the SIP manger 58 is informing the Input Method 64 of the default SIP
settings. The Input Method 64 can choose to ignore these
defaults, however the values given are ones that either the user
has selected or values that have been recommended as
expected or accepted SIP values for that platform. A pointer to
the SIPINFO structure that includes this information is
passed with this call.
The RegisterCallback method is provided by the SIP manager 58 to pass a callback interface pointer to the Input
Method 64. In other words, the RegisterCallback method call
5
10
15
20
25
30
35
40
45
50
55
60
The IIMCallback Interface
The Input Method 64 uses the IIMCallback interface to call
methods in the SIP manager 58, primarily to send keystrokes
to the current application or to change the icon that the taskbar
56 is displaying in the SIP button 52. The Input Method 64
ordinarily calls the IIMCallback methods only in response to
a call thereto which was received through an IInputMethod
method call. In general, if the function succeeds, the return
value will be a success HRESULT, while conversely, if the
function fails, the return value is a failure HRESULT.
The following table represents the IIMCallback Interface:
Interface IIMCallback :
Iunknown
Hresult SetImlnfo(
IMINFO *pimi );
Hresult SendVirtualKey (
BYTE bVk,
DWORD dwFlags);
Hresult SendCharEvents(
UINTuVk,
UINT uKeyFlags,
UINT uChars,
UINT *puShift,
UINT *puChars );
Hresult SendString(
BSTR ptrzStr,
DWORD dwChars );
65
The first callback, SetImInfo( ) is called by the Input
Method 64 to change the bitmaps shown on the SIP taskbar
US 7,411,582 B2
13
14
button 52 representing the current SIP, or to change the visible/hidden state of the SIP window 50. It is also sent by the
Input Method 64 to the SIP manager 58 as a notification when
the Input Method 64 has changed the size, placement or
docked status of the SIP window 50. By this mechanism, the
various Input Methods 64 are able to alert the SIP manager 58
to these types of changes so that the two remain synchronized.
By way of example, an Input Method 64 may wish to have a
user interface element which allows the user to toggle
between a docked state and a floating state, or between one or
more subpanels (e.g. keyboard with buttons to switch to a
number and/or symbol panel or intemational symbol panel).
The Input Method 64 uses this call to inform the SIP manager
58 of each change in state.
Although not necessary to the invention, all values passed
in the IMINFO structure are used by the SIP manager 58.
Consequently, the Input Method 64 should first determine the
current state of the SIP window 50 as provided by the SIP
manager 58 in the SIPINFO structure received via a prior
ReceiveSipInfo( ) method call, described above. Then, the
Input Method 64 should make changes to only those settings
in which a change is desired, and pass a full set of values back
in the IMINFO structure. The pimi parameter is sent as a
pointer to an IMINFO structure representing the new Input
Method 64 settings, including the size, placement and state of
the SIP window 50 as well as the desired Input Method 64
images.
In response to the SetImInfo( ) call, the SIP manager 58
will show or hide the SIP window 50 as specified in the
fdwFlags of the IMINFO structure. However, the SIP manager 58 will not resize or move the SIP window 50 if
requested, but will instead update the size and placement
information returned to applications 29 when queried. If the
specified values represent a change from the current SIP state,
the SIP manager 58 will notifY applications 29 that the SIP
state has changed via a WM_SETTINGCHANGE message,
described above.
The SendVirtualKey( ) callback is used by an Input Method
64 to simulate a keystroke for a virtual key, e. g., a character or
the like entered via the touch screen display 32 or some other
Input Method 64. The key event will be sent to the window
which currently has focus (i.e., the window which would have
received keyboard input had a key been pressed on an external
keyboard). The SendVirtualKey callback modifies the global
key state for the virtual key sent, whereby, for example, an
Input Method 64 can use this function to send SHIFT, CONTROL, andALT key-up and key-down events, which will be
retrieved correctly when the application 29 calls the GetKeyState( ) API. The SendVirtualKey callback should be used to
send virtual key events that do not have associated characters
(i.e., keys that do not cause a WM_CHAR sent as a result of
TranslateMessage. Note that WM_CHAR, TranslateMessage
and other key-related messages are described in the reference
"Programming Windows 95", Charles Petzold, supra). If
character-producing virtual keys are sent via this function,
they will be modified by the global key state. For example, a
virtual key ofVK_5 that is sent when the shift state is down
will result in a '%' WM_CHAR message for certain keyboard
layouts.
Parameters sent with this callback include b Vk, which is
the virtual keycode of the key to simulate, and dwFlags. The
dwFlags may be a combination of a SIPKEY_KEYUP flag,
(used to generate either a WM_KEYUP or WM_KEYDOWN), a SIPKEY_SILENT flag, (the key press will not
make a keyboard click even if clicks are enabled on the
device), or zero.
The SendCharEvent callback allows an Input Method 64 to
send Unicode characters to the window having focus, while
also determining what WM_KEYDOWN and WM_KEYUP
messages the application 29 should receive. This allows the
Input Method 64 to determine its own keyboard layout, as it
can associate any virtual key with any characters and key
state. In keeping with one aspect of the invention, applications
29 thus see keys as if they were sent from a keyboard (i.e., they
get WM_KEYDOWN, WM_CHAR, and WM_KEYUP
messages). Thus, unlike the SendVirtuaIKey() function, this
function does not affect the global key state. By way of
example, with the SendCharEvent callback, the Input Method
64 can determine that the shifted (virtual key) VK_C actually
sent the Unicode character Ox5 5 64. The shift state flag (specified in the puShift parameter, described below) that is associated with the first character to be sent determines whether a
WM_KEYDOWN or WM_KEYUP is generated.
Parameters include uVk, the virtual keycode sent in the
WM_KEYUP or WM_KEYDOWN message generated as a
result of this function, and a uKeyFlags parameter, a set of
KEY state flags that are translated into the lKEYData parameter received in the WM_CHAR, WM_KEYUP or
WM_KEYDOWN messages received by the application 29
as a result of this call. Only the KeyStateDownFlag, KeyStatePrevDownFlag, and KeyStateAnyAltFlag key state flags
are translated into the resulting lKeyData parameter. The
uChars parameter represents the number of characters corresponding to this key event, while the puShift parameter is a
pointer to a buffer containing the corresponding KEY_
STATE]LAGS for each character to be sent. If the KeyStateDownFlag bit is sent, this function generates a WM_KEYDOWN message, otherwise it generates a WM_KEYUP
message. Lastly, the puchars parameter is a pointer to a buffer
containing the characters to be sent.
An Input Method 64 may use the SendString callback to
send an entire string to the window which currently has the
focus, whereby a series ofWM_CHAR messages are posted
to the application 29. An Input Method 64 would typically use
this callback after it has determined an entire word or sentence has been entered. For example, a handwriting recognizer or speech recognizer Input Method 64 will use the
SendString callback after it has determined that a full word or
sentence has been entered.
Parameters of the SendString callback include ptszStr, a
pointer to a string buffer containing the string to send, and
dwSize, the number of characters to send. This number does
not include the null-terminator, which will not be sent.
As can be seen from the foregoing detailed description,
there is provided an improved method system for entering
user data into a computer system. The method and system are
both efficient and flexible, and function with touch-sensitive
input mechanisms. With the system and method, a plurality of
applications can receive user input from a common input
method, while interchangeable input methods may be
selected from among a set thereof for each application. The
method and system are cost-effective, reliable, extensible and
simple to implement.
While the invention is susceptible to various modifications
and alternative constructions, a certain illustrated embodiment thereof is shown in the drawings and has been described
above in detail. It should be understood, however, that there is
no intention to limit the invention to the specific form disclosed, but on the contrary, the intention is to cover all modifications, alternative constructions, and equivalents falling
within the spirit and scope of the invention.
5
10
15
20
25
30
35
40
45
50
55
60
65
US 7,411,582 B2
15
16
What is claimed is:
1. In a computing environment, a computer-implemented
method comprising:
displaying an actuatable icon representative of an input
method list that includes one or more selectable input
methods for one or more computer programs, wherein
each input method is a computer-executable software
component distinct from the computer programs;
in response to actuation of the actuatable icon, displaying
the input method list;
receiving a selection of an input method from the input
method list;
installing an input method component that corresponds to
the selected input method, the input method component
causing an interactive input panel to be displayed;
receiving input via the interactive input panel; and
providing the input to a computer program of the one or
more computer programs as if the infonnation was
received via user input received from a hardware input
device.
2. The method of claim 1 wherein providing the input to the
computer program comprises communicating infonnation
representative of the input to a graphical windowing environment.
3. The method of claim 2 wherein communicating the
information comprises passing the information to an interface.
4. The method of claim 2 further comprising, communicating the information from the graphical windowing environment to an application program, wherein the computer
program includes the application program, wherein the information is provided to the application program in a same
manner as if the input was received via a hardware keyboard.
5. The method of claim 2 wherein providing the input to the
computer program comprises placing the information, by the
graphical windowing environment, in a message in a message
queue of the computer program, wherein the message queue
capable to receive messages corresponding to input from the
selected input method and messages corresponding to input
from a hardware input device.
6. The method of claim 1 wherein the selected input
method corresponds to a displayed keyboard, and wherein
receiving input via the interactive input panel that corresponds to the selected input method comprises receiving
information corresponding to a keyboard character entered
via the displayed keyboard.
7. The method of claim 1 wherein the selected input
method corresponds to a handwriting input area, and wherein
receiving input via the interactive input panel that corresponds to the selected input method comprises receiving
information corresponding to handwritten data.
8. The method of claim 1 further comprising, hiding the
input panel.
9. The method of claim 1 further comprising, docking the
input panel.
10. At least one computer-readable medium having computer-executable instructions, which when executed perfonn
the method of claim 1.
11. At least one computer-readable medium having computer-executable instructions stored thereon, which when
executed by a computer system perfonn steps, comprising:
selecting one of a plurality of executable input methods for
supplying user input to the computer system, wherein
each executable input method is an interchangeable software component distinct from one or more application
programs, each executable input method having a
defined interface set such that the executable input
method is connectable to the application programs;
opening an input window on a display of the computer
system independent of a window of an active application
program; and
displaying an interactive input panel in the input window,
the interactive input panel corresponding to the selected
executable input method such that information corresponding to user input received by the selected executable input method via the interactive input panel is provided to the active application program as if the
information was received via user input at a hardware
input device.
12. The computer-readable medium of claim 11 further
comprising, providing an input panel button on the display of
the computer system, the input panel button being responsive
to open and to close the input window.
13. The computer-readable medium of claim 11 further
comprising, providing a Software Input Panel (SIP) menu
button on the display of the computer system, the SIP menu
button being actuatable to display a selectable list of the
plurality of executable input methods.
14. The computer-readable medium of claim 13 further
comprising, receiving a selection of one of the plurality of
executable input methods displayed in the list as a selected
executable input method, and in response, closing any open
input window, and opening a new input window corresponding to the selected executable input method.
15. At least one computer-readable medium having computer-executable instructions, which when executed perfonn
steps, comprising:
presenting icons corresponding to a plurality of input
methods available for a computer application, wherein
each input method is a computer-executable software
component distinct from the computer application;
invoking a selected input method in response to a user
selecting an icon corresponding to the selected input
method, including presenting an input panel window;
and
accepting user data entered in the input panel window for
the computer application, wherein the user data is provided to the computer application as if the user data was
received from a hardware input device.
16. The computer-readable medium of claim 15 wherein
accepting user data includes detecting user interaction with a
touch-sensitive display.
17. The computer-readable medium of claim 15 wherein
each input method comprises a component object model
(COM) object, and wherein the step of invoking the selected
input method includes the step of instantiating the COM
object.
18. The computer-readable medium of claim 15 further
comprising converting the user data to a Unicode character
value.
19. In a computing environment, a system comprising,
a manager component stored on one or more computerreadable media and configured:
to manage selection of a selected input method from one
or more available stored input methods, wherein each
input method is a computer-executable software component distinct from one or more computer programs,
and
to send input data corresponding to a user input received
at the selected input method to a graphical windowing
environment; and
the graphical windowing environment to receive the input
data and to send the input data to a computer program of
10
15
20
25
30
35
40
45
50
55
60
65
US 7,411,582 B2
17
18
the one or more computer programs, wherein the input
data is sent to the computer program as if the input data
was received via user input received from a hardware
input device.
20. The system of claim 19 wherein the computer program
comprises an application program having focus.
21. The system of claim 19 further comprising an input
panel window corresponding to the selected input method.
22. The system of claim 21 wherein the selected input
method presents an image representing a keyboard on the
input panel window.
23. The system of claim 21 wherein the manager component selectively displays and hides the input panel window.
24. The system of claim 21 wherein interaction with the
input panel does not cause the input panel window to receive
focus.
25. The system of claim 19 where the input method is
displayed on a touch-sensitive display screen.
26. The system of claim 19 wherein the manager component transfers information from the computer program to the
selected input method.
27. The system of claim 19 wherein the selected input
method calls functions in the manager component via a
defined interface set.
28. The system of claim 19 wherein the selected input
method comprises an object.
29. The system of claim 19 wherein the selected input
method draws an input panel in an input panel window displayed in the graphical windowing environment.
30. The system of claim 29 wherein the manager component selectively displays and hides the display of the input
panel window.
31. The system of claim 29 wherein the manager component docks the input panel window.
10
15
* * * * *
Disclaimer: Justia Dockets & Filings provides public litigation records from the federal appellate and district courts. These filings and docket sheets should not be considered findings of fact or liability, nor do they necessarily reflect the view of Justia.
Why Is My Information Online?