CA2092903A1 - Computer with separate display plane and user interface processor - Google Patents

Computer with separate display plane and user interface processor

Info

Publication number
CA2092903A1
CA2092903A1 CA002092903A CA2092903A CA2092903A1 CA 2092903 A1 CA2092903 A1 CA 2092903A1 CA 002092903 A CA002092903 A CA 002092903A CA 2092903 A CA2092903 A CA 2092903A CA 2092903 A1 CA2092903 A1 CA 2092903A1
Authority
CA
Canada
Prior art keywords
data
display
processor
user
interface
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
CA002092903A
Other languages
French (fr)
Inventor
David M. Barrett
J. Michael Mcnally
Jonathan T. Ii Huntington
Robert M. Douthart
Patricia A. Martin
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wang Laboratories Inc
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Publication of CA2092903A1 publication Critical patent/CA2092903A1/en
Abandoned legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/038Control and interface arrangements therefor, e.g. drivers or device-embedded control circuitry
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • G06F3/0488Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • G06F3/0488Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
    • G06F3/04883Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures for inputting data by handwriting, e.g. gesture or text

Abstract

A computer system having a digitizing tablet overlaying the display screen. The tablet serves as a user's primary input device.
Various features of the system make it possible for the user to run and interact with standard programs designed for keystroke and mouse input and not designed for use with a tablet. In addition to the main processor, on which the user's programs are executed, there is an interface processor. In addition to a standard display buffer, there is an ink plane buffer for interface display data that is combined with the data from the standard display buffer on a pixel-by-pixel basis according to data from a mask plane buffer. The interface processor manages input from the tablet, presents feedback to the user by means of the ink and mask planes, and provides keystroke and mouse data to the main processor as if from a standard keyboard controller. The interface processor presents the user with a collection of simulated devices, including standard devices such as a keyboard and a mouse. A nonstandard simulated device performs character recognition, permitting handwritten characters to be used for program input. During interaction with one of the user's programs, the user can activate and deactivate simulated devices (by removing them from and returning them to a device tray) and can make adjustments in their operation and location on the screen.

Description

WO 92/09038 1 2 ~ ~ 2 ~ ~r/US91/04462 COMPUTER WIIH SEPARATE: DISP~r PLANE AND USER INT~FACE PROCESSOR

CROSS~ EF13E~ENCES TO RE~ED
~PI.~C~

~s application is related to the following application3:
COMPUTER WITH TABLET INPIJT TO STl~ RD PROG~AMS, Martin, et al., filed the ~PTne dsy a~ the prese~t applical~on;
USER ~TERFACE H~VING SIMIJLA~ED DEVICES, Ward, et al., filed the ~ame day as the present application; and SYSTEM CLOCK SPEED CONTROLLER, David Barrett, et al., filed November 9, 1990.
The first two of these cases are based on the same disclosure as in the present case. . .

F~l:.D OF T~ I~NTION

The present invention relates to the operatîon of and supporting facilities for user interfaces for compu~er systems. The iD~e~tion is particularly useful in systems where a stylus is the user'~ pnmary i~put de~nce.

BAClE~G~

Driven both by the Ileeds of users and the capabilities of vario us implementation technolo~ies, computers and the ways that peoplç interact with them are redesigned again and again.
In doing so, it is desirable to optimize the design of each ~ystem according to the current technology and current understanding of humall factors.
However, another, oPcen opposing, ~orce 3haping the design of computer sy-stems is the need for new systems to be capable of utilizing pre-e~isting components, both hardware and sof~ware. Thi~ force flows fi om various sQurces, includ~llg the desire to continue to e~cploit large inve~tments ill pre-e~nsting desiglls, and the des~re to use new sy~ten~ in environments that coIltinue to be populated with pre-existing ~ystems.

WO 92/09038 ~ri ~ --2-- PCI/US()1/04462 -It is particularly advantageous for a new system to be able to utilize pre-existing software components, both application programs (programs that adapt a ~ystem to address real world task~--oPcen, reierred to simply as "applications") and 3ystem programs (providing system management functions and services used by application programs). Because some pre-e~n~ting applications have become de facto ~tandards vrithin certa~n u~er communities, it is of particular importance that a new system be able to run these standard applications.
Most software that provides for user interaction, is designed for primary user input in the form of keystroke data. A growing body OI soflcware, especially that designed for desktop systems, accepts input from a mouse, in addition to keystroke data; generally, these systems ~till require keystroke data for certain fimctions.
To make computer systems easier for people to use, various system~ hav~e included stylus-type input devices (typically u~ed with a digitizing tablet).
Because of their similarity to conYentiollal writing implement~, 3tylus-type devices are, among pointing devices, particularly well suited to be used for character input~ in addition to filnctioning as a pointing device. When used, ~tylus-t ype input devices have generally been provided in addition to a keyboard. III some cases, ~ystems have been deeig~ed with a stylus-type device a~ the primary user input device.
A keyboard ha3 characteristics that di~er radically ~om those of a stylus and digitizing tablet. With a keyboard, precise character identification i~
straightforward: a user generates data representillg alphabetic characters simply by pressing corresponding keys. Because a keyboard can be used to create a character with a single e~ent (i.e., pres~ of a binary switch), all thefeedback to the user that is needed is display of the character and perhaps accompanied by an audible click. In contrast, while a stylus can be used for character input, very dif~erent feedback to the u~er is required. Handwritten characters are generated by a process that (although ~amiliar to a user) is much more complex, both for the user and for the computer system.
For ma~g fullction selections with a keyboard, a wide range of alternatiYe approaches are used; of these, pointing to a visible representatio~ of a function or object to be manipulated is awkward, because a keyboard is a v0ry poor pointing device.

,, ~ ': . ' ~ ' . ,', ' .:
.i ': :: ' . ' ' : . .: ` ' ~. ' " :.
2 ~ 9 ~ 9 ~ 3 PCI/US91/~4462 A mouse is often used in system3 that permit a user to use the mouse to drag objects on the screen. This is accomplished by providing display of a particular type of mouse cursor or pointer: this cursor has an absolute location known to the system, and the system adjusts the cu~sor's location according to relative movements of the mouse; this cursor functions as an absolute intermediary between the relati~e movements of a mouse and the object drag operations.
If programs designed to use a mouse cursor are used with a stylus thatoperates directly on the display screen, the uRer might expect to be able to directly manipulate the cursor with the stylus, i.e., by placing the stylus o~Ter the cursor and dragging it. I~pically, this works in a way that users are likely to find frustrating: the relationship between an amotmt of mouse movement and the distance moved by the cursor is not fi~ed; this may vary from application to application or even ~ary wit~hin a single application (e.g.,it may be a function of velocity); as a result, although the stylus may start the object, the object will not track the position of the stylus.
In a system in which a stylus is u~ed, it is particularly advantageou~ for the user to be able to use the stylus directb with the display. For e~ample, it should be po~sible to write directly on the di~play screen, and, when appropriate, a trail of ink" should appear on the display in the path taken by the stylus, thus appearing to a user much like writing on paper.
A pointing-type input device to be used directly orl a ~creen ~hould provide itsabsolute po~ition (so that the ink appears on the Screen at the location of the stylu~). This dif~ers from the input provided by a mouse, which provides relati~re position: with a mouse, the nser can generate mouse data indicating nothing but a serie~ of rightward movements, and still have the mouse end at its starting location (e.g., move a mouse to the right, pick up the mouse, placeit to the left of its original position, and move tbe mouse to the nght to return to the original location). Thus, al$hough both a mouse and a stylus are "pointer-type" devices (locators), their characteristics differ.
The i~put of character codes presents another type of impediment to runn~ng pre-e2~isting (non-stylus) program~ with a stylus. Input of handwritten characters is a sufficiently complex as to requil e feedback to the user. ~et a program not contemplating handwritten input will have defined a user interface with no provision for such feedback.

WO 92/09038 ~ -4- PCr/US91/Oq462 -These differences in input device characteristics are major impediments to effect*e utilization of much existing software with a stylus-based computer system. As result, the practice has been that most of the u3es of stylus-based input have relied upon application programs written specifically for a sys$em that includes a stylus.
A system built accordillg to the present invention can run pre-existing ~oftware and permit~ a user of the system to use a stylus to interact vnth such sof~ware.
, SUMl~ IDF TlHE INVE~I IC~N

- A sy~tem according to the present mvention provides for user operation of pre-existing program~ with a pointer-type dence (in particular, a stylus/tablet) that the pre-existing programs were not designed to accommodate. This is accomplished by providing a user interface that logically overlays9 but does not interfere with, thç operation of the pre-exi~ting program. This u~er interface provides the user with feedback `~
concerning operation of the pointing-device.
In order to effect thi~ overlaying interface without interfer~ng with the execution of the pre-e~i~t~ng progr~n, a~ interface processor is provided to execute soflcware used in implemecltillg this interface. Further, a ~eparate display plane is provided that is visually combined with the dis~play from the ~
pre-e~isting program, without rnodif~ying the di~play bu~er used by the pre- i e~isting program. This di~play plane is ef~ected by use of a~ ink plane buffer to hold the image to be combined, a mask plane bu~er to indicate how the ink plane data is to be combined with the di~plav data f~om the pre-existing program, and a multiple~er that performs the data combination.
, B~RD3F DESCRTPTION OF T~EIE DRAW~G

.
The inveIltion is pointed out with particularity in the appended cla~ms. The above and other advantages of the invention may be better understood by - referring to the following detailed deiqcription in conjunction with the drawing, in which:

- . - . ., .: . . . . . . .. .

wo92/09038 ~5~ 2~C~ " PCltUS91/04462 Fig. 1 is a perspective drawing of a computer system in which the present invention is advantageously employed.
Fig. 2 is a block diagram, emphasizing logical organization, of circuitry of a computer system embodying the present invention.
Fig. 3 is a block diagram, emphasizing physical implementation, of circuitry of a computer system embodying the present invention.
Fig. 4 is a block diagram of circuitry used in communications between the ma~n processor and the interface processor.
Fig. 5 is a block diagram of circuitry in the display subsystem.
Fig. 6 illustrates the display data ~ultiplexing circuitry of the display ' ~'''~~`''' ' '''' subsystem.
Figs. 7, 8, and 9 illustrate the correspondellce between pixel locations on the display screen and the storage of ink and mask data. Fig. 7 show3 some of the pigel locations on a display screen. Fig. 8 has four memory maps showing how the ink and mask data i~ stored in four VRAM chip~. Fig. 9 ~hows how the ink and mask data appe~rs in the addre~s space of the i~terfa- e processor.
Fig. 10 is a screen di~play showing three simlllated device icons: keyboard, handwnting, d mouse.
Fig. 11 illustrates relationships among the tablet, the display, and certain software components.

DET~AILED DESCRIPTION OF ~ ~ ~
- ILLUSTR~IVE E~OD~[ENT

1 Platfor~

1.1 TheCo~ip~tingEn~r~ro~ment The invention i~ ad~antageously use~ in a computer system vvith which the user interacts by use of a writing ~tylus or other pointing device. When the ' , . , ~ ; ; ~; . , ! . . . ... .

: . :. ' ,.,. ' ,. .' :, '' :' ,. : , .

wo 92/09038 ~ 6 PCl /US91 tO4~62 user can write on the display, the keyboard is eliminated (or at least made optional), and the comput~r sy~tem i~ made compact, the resulting ~ystem is 80metimes referred to as a "notebook" computer. The present invention will be described in the context of such a notebook computer. Ba3ed on this description, ot~er embodiments of the invention will be apparent.
Fig. 1 is a perspective drawing of a notebook computer 10. It ~lclude~ a combination digitizing tablet and display 12. A stylus 14 operates ~n conjunction with the digitizing tablet to provide X-Y coordinate input to the system. The display is implemented u~ing liquid crystal technology; a backlight is proYided. Along one edge of the tablet area are a series of labeledareas 16a, 16b, 16c, and 16d; the system iB re~ponsive to ~tylus touches in these areas to ~nitiate certain system function3. III certain modes of o~peration the system operates so as to provide electronic ink, in which case movement of the 8tylus on the tablet leaves a trail visible on the di~play, as if the user was writing on a piece of paper.
Other feature~ of this illustrative notebook computer include: voice digit~zing and playback (a headset/microphone can be plugged iII), data communications (including FAX), internal hard disk drive, standard serial and parallel ports, aSCSI port (f`or connection, among other things, to an e~ternal i~oppy disk drive). Instead of the SCSI port, a connector call be provided to cor~ect to a bus compatible with the m~o channel of many of IBMis P~/2 computers.
The main processor is au Intel 80386~ The core of the system is generally compatible with l BM's P5/2 Model 80, l~pe 1.
Tho3e aspects of the circuitry ~hat are mo~t closely related to the prese~t ~nvention are descnbed below, including the interface processor, the il~k/mask plane portion of the display coIltrol, and an ASIC lreferred tb below as the optimizer) that pr~vides various support logic.

1.~ ~ajor System ~ompo:lle~ts l~e maJor hardware components of the computer system are illustrated in Fig. 2:
~ main processor 30, interface processor 32, : , :: . : : , . . ,: , - - ,. . ..... - , .. . .. .
.. : .: , . : : :. .
.. . . ..

w092t09038 7~ 2O929a3pcr/us9l/o4~62 pointing device (tablet/stylus 34 and i~terface 36), o }na~n display buffer alld controller 38, display control circuitry 40, including ink plane buffer 42, mask plane buffer 44, and video multiplexer 46, diqplay screen 48, interprocessor interface 50, alld optional keyboard 52, connected to the inter~ace proce~30r 32 by interface circuitry 54.
Fig. 3 is a block diagram of the computer system that emphasizes the physical implementation of the circuitry, much of which is implemented in specialized large scale integrated circuit chip5.
_ _ , . . . . . . . .
1.2.1 Main Proces~or The maiII proceasor 30 is implemented using an 80386SX microprocessor, from Intel Corporation. I~is processor execute~ the operating system and application program~. There i~ 1 or 4 Mbyte of ba~e main memory 30a for thi~ proce~30r, with the optio~ of adding two 1 Mbyte or 4 Mbyte module~
(thus, providing up to 12 Mbytes). In keeping with the portable nature of the notebook computer, the main memory use~ pseudo-~tatic memory chips controlled in a way ~imilar to that described in U.S. Patent 4,710,903. There i~ 128 Kbyte~ of memory 30b (ROM) for certain system service ~oflcware know~ as the ba~ic input/output ~ystem (BIOS).
1.2.2 Di~play Screen Visual output i8 provided by a display screen 48. In the preferred embodiment, this is a flat panel display that is physically integrated with a digitizing tablet 34 (described below). In particular, it is a liquid crystal display with 640 by 480 pixels and having a switching time of 250 milliseconds or better.
1.2.3 Main Display Bu~er and Controller The main display buffer and display controller 38 ~Chips & Technologies 82C455 VGA controller) are controlled by the main processor 30. This appears to the applications running on ~he main processor as a conventional video display, such as iB commonly known a~ VGA. This provides for control - , . ,. ,,, . ",.................. ... . .

, . , :, ., ~ .~, , :
,, , :: , . .. . . .

wo 92/09038 9~ ~3~ ~ ~ P~/US91/û4~62 of 640 by 480 pixeI~, which are ~tored in four 128 K by 8 bit pseudo-static memory devices. This memory, is large enough to work with applications written for 256 colors. Although the p~els of the display screen are binary, the VGA controller t~me multiplexe~ the~e to simulate 16 leYels of gray.
1.2.4 Intexrf5~ce Proces~6~r The interface proce3sor 32 is a V25 microprocessor, available from NEC
Electronics Inc. The V25 is similar to Intel's 80188. This processor performs the following functions:
connects to main proce~sor and s~mulate~ (down to the hardware level) a keyboard controller of the type in a PS/2-type computer. This protocol provides for data from an au~iliary device, typically a mouse. In addition ~to the keyboard port, another communication channel to the main processor is used for other communications.
connect~ to the optional phy~ical keyboard and provides this keyboard data to the mai~ processor (as would an 8042 controller in a PS/2-type computer).
connects to and provides data to the ink and mask planes.
runs a sinlulated de~7ices u~er interface that uses the tablet input, ~imulated keyboard port output, and write~ to the iDk and ma~k planes.
runs a handwriting recognition algorithrn (a part of the ~imulated devices interface).
11.2.5 Interface Proces~oI ~Firmware There i9 16 Kbytes of ROM in the V25. I~is ROM iscludes program code for initialization, diagnostics, support of data transfer from the main processor tothe interface processor's main memory (which i~cludes the buffers for the ink a~d mask planes), and keyboard controller emulation (permitting use of the phy~ical keyboard prior to download of any so~ware into the interface processor's main memory).
The diagnostics test the interface processor's memory, the data bus connecting the interface processor to the optimizer, and the senal port (including obtaining the status of the tablet that is comIected to the serial port).

- . ,. -, . . ~ , .. ... , - . ~ .
- ~, ,. : :. , . . :
, ".. , ~ ., ,. - i, . . .

. , . ~ . ..
: : :, ... : ,, . . - :

WO 92/09038 9 PCr/US91/04462 12.6.1 ~eyboard Controller Emulation 2 0 9 2 ~
The firmware prov~des the function~ typically provided by an 8042 keyboard controller. In addition to passing keystroke and mou~e data to the main proce~sor, these fi~nctions include installing and testing pa~sword~, reading and writing "8042 RAM", and enabling, disabling and testing the physical keyboard interface.
The fi~mware ser~ces that send data to the main processor across the keyboard port can deal with data being sent in thr~e ways: translated data, untranslated data, aw~iliary data.
Translated data is handled as com~ng f~om a physicPl keyboard. This dat~ is momtored for changes that affect the shii~ ~tate of the system as perceived by the interface processor. This data may be tran~lated from one scan code to another, depending upon the status of the PC compatibility bit of the 8042 command byte.
Untranslated data is sent to the system without change. Un*anslated data is not monitored ~or chaDges in shift state; the i~terface processor assllmes that any changes in the shift state due to the untraIIslated data will be undone by the end of the stream of untranslated d~ta.
Au~ilia~y data i~ sent to the main proce~sor without tran~lation. In sendiDg au2~1iary data, a bit of the keyboard status regi~ter ~ set, indicating to the main processor that the data is au~ciliary data~ rather than keyboard data.
Au~ciliary data is typically mouse data. -1.2.~.2 Services ~or Simulated Device~
The firmware provides a variety of services to support the u~e of the keyboard port by ~i~nulated devices.
There are services to di~able and enable the flow of data from a physical keyboard. When a disable is requested, the service waits until the stream may be interrupted without splitting any multibyte keycodes, and then returns with an indication of the current shift state.
The ~ubmit buffer ser~ice provides for the submission of a biock of '~eyboard"
data to be ~ent. The data is identified a~ translated, untran~lat0d, or awciliary, and is treated accordingly. A pointer to a "when done" routine is , . .., :. - . ; ~ .. ., , .; .
~, , .
:. :. ; .: :. . .:
,, : , , ;; , . . :, WO 92/09038 ~ J~ ~ -10- PCr/US91/04462 --pro~ided along with the block of data; the service e~ecutes this routine when the data in the buffer ha~ been sent. An error is returned if anther buffer i~
culTently being sent. If the physical keyboard is enabled, the submit buffer service will effect a disable physical keyboard before buf~er transmission and an enable physical keyboard after data transmission.
An abort bu~er service is provided to permit a buffer transmission in progress to be canceled.
A set buffer transmit rate serv~ce is prov~ded to control the rate at which buf~ers of keystroke data are ~ent to the main processor. This is provided to control against overflow of the keyboard buffer in the main proce~sor. Ihis delay does not apply to buffers of 8 bytes or less; this permits the byte stringfor any single keystroke to be sent without delay.
. .
A service is provided to control the clock speed of the iIlterface processor.
Thi~ clock can be set to 2, 4, or 8 MHz. The hardware supporting this speed control is integral to the ~125 chip.
A service is provided that will wait for an event from the interface processor ~eri 1 port (con~ected to the tablet), an evellt from the datalink, or a period of time (specified by the caller in milliseconds). The ~ervice can wait for any combination of the~e three eYents. While waiting, the service will ~et the speed of the interface processor to it~ ~lowe~t speed. When the event occurs, the service re~tores the interface processor's speed to it~ original valùe and the ser~rice returns to the caller.
A service i8 also provided so that it is possible to chain interl~lpt vectors tolearn about communication~ from the system to the keyboard or a~uliary device.
I~e ~rmware also provides a free-rlmning 32-bit counter. This counter is incremented once each millisecond. It is al80 possible to chain to these one millisecond interrupts.
1.2.6.3 Datalink Colltrol The firmware also provides some of the support for communication o~rer the dataIink. This communication is described below.

WO 92J09038 ~ Pcrtus91 /04462 2G929~
12.6 Poi~i~gllevice Preferably, the pointing device is of a type that provides ab~ol~te location (e.g., digitizing tablet, light pen). A mou~e typically provides relative location (i.e., movement, not position); a mouse could be used, but w~th less advantage.
The pointing device of the preferred embodiment i3 a transparent dig~tizing tablet and its a~sociated stylus (tablet and stylus together are illu~trated in Fig. 2 as 34), 9uch as available from Scriptel Corporation.
An appropriate tablet sho~ld have character~stics such as the following:
Absolute accuracy should permit pointi~g to a single pixel in the underlying display; for an underlying display with 100 pi2els/inch, this means that total errors from all ~ources must be less than ~/- 0.00~ inch.
9 Becau~e the tablet overlays the display, it must be transpaTeIlt, light diffusion should be minimal, and height of the writing sur~ace over the display should be minimized to reduce visual parallax.
The tablet should be abraxion resistan~, 80 a8 to withstand u~e of the st3rlus as well a~ i~pact and abrasion from other objects.
The tablet must have sufficie~t noise immunity to operate accurately in close prol~m~ty to the di~play and to other RFI ~ources w~thin the computer.
The small size of a notebook-type computer makes it particularly useful as a portable de~rice; thus, low power is also a usefill characteristic.
~ The tablet should be able to d.igitize at least 120 poirlt~ per second.
There should be provision for sensing proximity of the stylu3 to the tablet ~o that the system can display a tracki~g cursor when the u~er is not writing or dragging, but the stylus is near or on the surface; "touching"
the tablet should be sensed, and this can be implemented by a tip switch.
The ~witch force should be such that a user can comfortably wnte with minimal skipping.
article titled "Digitizer Technology: Performance Characteristics and the Effects on the User Interface" ~IEEE Computer Graphics and Applications, April 1987, pp 31 44) describes digitizer technology.
A tablet interface 36 transfers X-Y coordinate data from the tablet to the interface proces~or. This interface include~ an aIlalog front end, a D/A

- , , . , .. ... ~ . . .
, . ; , . ...
., . .,- , , ,. ; ::: , ,.... . , ."
-:, . "
.- . .. ; :. . :.: .: ,., .,, , ;

. . , . , . .. .. , , ,:
, :: , W092/09038 QQ~,~J5~'3 -12- P~r/US9~/0~4~2 converter, a 68HC11 microcontroller (from Motorola Corporation) and a~ociated logic, and a PR{)M. The PROM contain information that is used by the microcontroller to correct the raw tablet data. The m~crocontroller has a serial link to the interface processor 32.
The connection between the tablet interface 36 and the interface processor 32 is a bid*ectional, asynchronou3 ~erial link operating at 19.2 ~its/3econd.
The following are the most important of the commands that the inter~ace processor can send to the tablet controller:
Re8et The tablet is reinitialized and tested; succe~s or failure codes are returned to the interface processor.
Q~qit The tablet controller powers down as much of the tablet electronics as pos~ible and waits for a new command.
Sleep The tablet controller stops sending data until a user event occurs (e.g., stylus comes i~to proximity, or, if already in pro~imity~ the stylus moves), at which time the tablet controller star~ sending data.
Other comn~ands can be used for diagnostic purposes.
For each digitized point the tablet controller send~ five bytes of data, where the bit pos,itions have the following me~ning:

2 0 0 X5 X4 X3 X2 Xl X0 3 0 0 Xll X10 X9 X8 X7 X6 4 0 0 YS Y4 Y3 Y2 Yl Y0 : 5 0 0 Yll Y10 Y9 Y8 Y7 Y6 PROX indicates whether the stylus is within sensing range of the tablet. TIP
indicates whether the tip switch is depressed. SIDE indicates whether the switch on the side of the stylus is depressed. x and Y represent the X-Y
coordinate data.
The data sent by the tablet con*oller to the interface processor has the values O to 4095 for the X and for the Y axes. These values correspond to an area WO 92/0903~ -13- PCr/US91/04~62 209~o9(~3 slightly larger than the display (to provide for "buttons" along the edge of thedisplay).
A 3-po~nt calibration is done for each unit as part of the manufacturing process (to correct ~or m~salignment of the digitizer and the display) and stored in ~table memory (e.g., disk, battery-backed CMOS RAM, EEROM).
The calibration parameters are used by the inter~ace processor to convert the 12-bit tablet data to di~play coordinatea 1.2.7 Ink/Ma~k Display Buffer a~d Con~roller The ma~k plane has one bit per pi~el. It is used to determine (on a p~xel-by-pixel ba~is) whether the data from the normal display buf~er or data from the ink plane is shown on the display screen. The mask pla~e could be extended to include more than one bit per pixel; for example, this would permit~ ~
selection among a ~et of image combining arrangeme~ts, such as AND, OR, XOR, NOR, and NAND, in addition to simply selecting between the VGA and ink data.
In the illustrative system, the ink plane has one bit per pixel. However, this plane could have more bit~ per pixel, to permit the ink plane to pro~nde gray scale or color display.
1.2.8 V'ideo ~ultiple~or The video multiplexer co~trols the flow of refresh data to the display. It select~ pixel values ~om the application plane (VGA) data tream or from the ir~k plane data stream depen*ng on the value of pi~el values the mask plane data s*eam. More complex operations for combining the data from the two planes could be used, such as XOR. Such operations could be selected for the display as a whole, or (if the mask plane included more tha~ one bit per pixel) 1l on a pixel by pigel basis.
1.~.9 Signal Proce~ing Sub~y~tem Ihe sys~em includes a signal processing subsystem. This subsystem pro~ides fior recording and playback of audio, operates as a facsimile modem, and operates as a V22 bis 2400 bit per seco~d modem for data communications.
This subsystem includes a digital signal processor 60 (Texas Instruments 320C25) (with its own memory 66), analog circuitry 62 for interface to the .. . . . . .. .. .

.. . ,: . . ~ j ., : : . , :
: ., , . ~ " , : : ., .; .. : , . , .. , . ., . ~ . .
: " . .. . .
,. : , - , . .- " . . . .
. . . .
. . . . .

WO g2/09038 ?,~9 -14- pcr/us91/o446~ -outside world, and an ASIC 64 with digital circuitry to tie it together and to the rest of the system (via rnicro channel 70).
Connectors are provided for an e~cternal m~crophone and headset. An internal microphon~ is al~o provided.
12.10 VariousCommuI~icatioIlPort~
Additional communication ports are provided . 2 serial ports (1 having a standard connector, 1 available via the modem port comlector, ~or use when the modem is not needed);
~ a SCSI port 74;
all industry standard parallel port;
, . . . . . . .
The parallel port and the standard serial port are implemented using a VL16C451B (from V~SI Logic) 72. The second serial port is implemented by the ASIC 64 that is part of the digital 3ignal processing subsystem.
12.11 Ma~s Storage A hard disk driYe 76 is provided for mass storage of program~ and data.
external floppy disk drive can be connected via a SCSI interface.

1.3 VLSI Impl~mentation The following chips, available ~rom Western Digital, implement core log~c 80:
WD6000 peripheral IIO controller, WD6010 DMA coIltroller and central arbiter, WD6036Ll? rnicro chamlel bus controller and memory controller, and WD5020 address/data buf~ers.
Other components ~nclude:
System ROM 30b is 128K x 8 bits and contains software for the power on test and the BIOS, and some system data. Two 27C~12 memory chips are used. This RO~I is connected to the local chaImel bus which has an 8 bit wide data bus. After the system is started, the BIOS can be copied into sy~tem memory for faster access and to permit the system ROM to be placed in standby mode to conserve power.

- .: . ~, . . .. .
.. , , . . , ... , . . , ,, WO92/0903~ -15~ 2o~ 3 P(~/~JS91/04462 A real time clock 82 is implemented U8il1g aII MC~46818A. Ilhis component also contains 64 bytes of RAM that is maintained by an integral battery.
Non~olatile CMOS RAM 84 prov~des 8 Kbyte~ of battery-backed memory for storage of system configuration data.
1.3.1 Optimi~er The "optimizer" 88 is a VLSI chip that combiIles a variety of functions, including:
9 clock generation, including program-controlled speed switching (in the notebook computer, changes in system clock speed are used to improve power efflciency);
control signals and I/O register addres~ decoding for the SCSI port and hard disk drive are generated from micro channel signals;
various VO registers, including programmable option select registers (the devices ~upported by the optimizer all appear to the maLn processor as a single micro channel device; the characteristics of such device~ are de~cribed elsewhere, ~uch as in the "IBM Personal System/2 Hardware Illterface l~chn ical Reference") and regi~ter~ for system power control alld for co~trolling main processor clock ~peed;
o interface between the optional keyboard and the interface processor;
interface between the ma~n processor and the interface proces~or.
The last two listed functions are the most relevant to the present invention.
Circuitry in the optimizer implementing the interprocessor interface ~0 and the keyboard illterface 54 is illustrated in greater detail in Fig. 4.
For the communication link between the main processor and the interface processor that i~ known as the "datalink", the opt~mizer pro~rides four registers: a data reg~ster and a status register for each direction of commu~lication (110, 112, 114, and 116 in Fig. 4).
To provide what the main proce3sor sees as a standard keyboard port (a de facto ~tandard, represented by computer~ such as IBM'3 PS/2 series), the optimizer also implements four registers: a data register and a status register for each direction of communication ( 120, 122, 124, and 126 in Fig. 4).

. .

- . , , - - , ,~
.. - , .. , . .- . . . . ., , ., ,, , : ~ .- .. , , ~ , , ;. . :.,., , ;.-:, ; , ; , ,, , , : , ,,, , , , :.

WO 92/09038 ~9~ 16- P~US91/OM62 .

The optimizer also Lmplements an inteITupt ID reg~gter and and intenupt mask regi~ter for the interface proce~sor.
Although the interface proce~sor handles the communication of keystrokes to the main processor, the opt~m~zer prov~des the bidirectional serial i~terface tothe (optional) physical keyboard; thi~ frees the interface proce~sor from monitoring the keyboard clock and data lines, and perrnits the interface processor to deal with whole bytes. I1D provide support for connection of a physical keyboard, the optimi~ er provides a data reg~ster 130 (bidirectional) and status register 132 that is accessed by the interface processor.
The interface proce~sor sends keystrokes (both from the optional phy~ical keyboard and from the simulated keyboard) by interactirlg with the main proces~or as i~the interface proce~sor was an 8042 keyboard controller. As a standard keyboard corltroller al~o provides ~or data from an auxiliary device (typically a mouse), as well as from a keyboard, this capability is pro~ded as well.
The optimizer also provide~ a "datalink" c~nnection between the interface proce880r and the main processor that is used for variou~ communications between the proce~sor3, including sof~ware loading at boot time and a~
needed at aIly other time.
1.3.2 E~GA
The BGA 86 (Fig. ~) provides most of the circuitry to enable the ~imulatecl devices user interface to be di~played without corrupting the current application's display data. In particular, the BGA is a VLSI chip that implements most of the ink/mask circuitry and provide3 data and control sigllals for the display. Fig. 6 illustrate~ greater detail of the multiplexer 46 (of Fig. 2), which i3 included the block labeled "Video Data Replacement" in Fig. 5.
The BGA rece*es data from the VGA controller, provides the interface processor vrith readJwrite access to the ink/mask memory, and 9ends data to the display. The BGA monitors VGA signals (horizontal 8ync, vertical sync, and pixel clock, which is once per 8-pixel byte--4 pixels from the top half of the display and 4 pixels from the bottom half of the display) 50 as to be able to coordinate the data from the i~k/n3ask data vrith the data generated by the .. ; . ~ . ;, . .. ... . . .

wo 92/09038 -17- 2 0 9 2 9 PCr/US91/04462 VGA controller. The BGA also uses a dot clock sig~al (8 time3 pi~el clock) from the VGA controller to sequenGe its operation.
The VGA controller is designed for use with DRAM device~ having a multiplexed memory addres~ bus. However, the VGA display buffer is implemented with PSRAMs that do not use a multiplexed address bu~; hence, address latches are used. Further, the BGA includes circuitry to derive the control signals for the PSRAMs from the signals generated by the VGA
controller.
There is a 612 Kbyte memory array attached to the BG~ that i~ the mainmemory for the interface processor. Of this, 76,800 bytes are used for the ink/mask plane display buffer. This display buffer appears to the interfac~
processor as two 38,400 byte blocks (a~ shown in Fig. 9): the ink plane starts at 30000H~ the mask plane starts at 70000H- These locations, in coi~bination with the allocation of addresses to indiv~dual memory devices, result in the ink plane and mask plane data for each pi~el be~g ~tored in a separate memory device ~a~ shown in Fig. 8); thus it is pos~ible to retrieve both simultaneously whe~ re~reshing the di3play. The remainder of tbi~ memory (about 400 Kbytes) are available to be used by the iIl~erface proce~sor for program and data storage.
This array is implemented with ~our 256K by 4 bit video RAM (VRAM) devices (52~256 chips). These are dual-ported devices: each chip has a 4-bit read/write port cormected ~ria circt~itry in the BGA to the interface processor;each chip also ha~ a serial acce~ read-only port ~hat i~ used to provide data for the display Each çhip ha~ four 512-bit shift regi~ter~, which are used to drive the serial access port. Once the shi~ registers have been loaded, acce~s via the other port may take place while the serial data is being shif~ced out the serial port.
1.3.2.1 Memoly~qapping It is desirable for the interface processor to be able to read a byte of ink data (ink data for 8 pixels) in one memory cycle and to read a byte of mask data (mask data for 8 p~cels) in one memory cycle. It is also desirable for ink and mask data both be a~ailable for 8 pixels at once for display refresh.
Fig. 7 identifies the first 16 pixels of the top half of the display as T1 through T16 and identifie~ the first 16 pi~els of the bottom half of the di3play as :Bl .

':. :,` : : :: : : '' ,' ' ` ~,: '.' ~ ' wo 92/ogo38 ~9~,Qe,3 -18- PCI/US91/04462 --through B16. Data is provided to the LCD display 8 bits at a time; these 8 bits corre~pond to 4 pixel~ in the top half of the di~play and 4 pixels in the bottom half of the display. Fig. 8 illu~trates how the ink and mask data is stored in the 4 V~AM chips, for example: IT1 is the ink bit for pi~el T1; MT1 i5 the rnask bit for pixel T1; IB1 is the ink bit for pixel B1; MB1 i~ the ma~k bit for pixel B1. In VRAM0 and VRAM1 ink and mask data is stored from addresses 30O00H through 395FFH. In VRAM2 and VRAM3 ink and mask data is stored ~tarting at 396OOH. AP~er address 3FP~FH, the addressing wraps, such that the irlk and mask data continue~ at locations 30000H
through 32BFFH-For display refresh, data is read out of the VRAMs as 16 ~ignals SD0 throughSD 15, as indicated in Fig. 8. Fig. 6 ~hows how these signals are proce3sed through two multiplexers 150 and 152 (each of which selects one of two sets-of -- - - -eight signals) and combined with the data from the VGA controller in a set of eight one-bit multiplexers 160.
For display refresh, data i~ read out of the VRAMs in the ~equence shown in Fig. 8. For e~ample, serial data bit 0 (SD0) will carry an ink bit, then a ma~
bit, then an ink bit, etc.; at the time SD0 carries an ink bit, SD4 carries a ma~k bit. The, the m~ltiplexers 150 and 152 are used to swap 4-bit nibbles from each VRAM on alternate 16-bit words.
VVhen the interface proce3~0r accesses the memory, the BGA control~ theaddressing to the VRAMs ~uch that a byte of ink data is composed of an odd-numbered location ~rom o3le ~IRAM and an e~ren-numbered location from another VRAM. Further, although the ink data is accessed at sequentiaii interface processor address locations (starting at 3OOOOH)~ it i5 stored ini every other memory location in each of the VRAM chiips (in thie VRAM chiips it alternates wiith mask data, which appears to the iDiterface processor beginning at 70O00H at a higher range of addresses). Thius, the ink data appears iDi the interface processor's aiddress space as oDie continuous block ofdata (3OOOOH through 395FFH~, and the mask data appeairs in the iDiterface processor's address space as another COntiDiUOuS block of data (70OOOH ^~
through 795FFH). This is illustrated iD Fig. 9, with bit identifications corresponding to those of Fig. 8 and colTesponding to the pixels of Fig. 7.

.. , , ., ,, " ~ . , .,~ , : . . . . . . .
.,., - , i- .. , ..
,, "

. ~ .... : .. :, . .

WO 92/09038 -19- Pcr/us91/044~2 2 B~ 9 0 3 1.3.2.2 Di~play Tim~ng The VGA controller 38 generate~ di~play data that is one bit per p~el. This data is provided 8 pixels at a time: for 4 pixels in the top half of the displayand for 4 pixels ~ the bottom half of the display. Ihe VGA controller also generates 3 control signals to accompany this display data: a pixel clock, once for each 8 pixels (byte) of data; a horizontal synchronization signal; and a vertical 3ynchronization signal. The VGA controller also provides a adot clock" that is 8 times the rate of the pixel clock.
1.3.2.3 lMultiple2iing of VG~ and Ink Data The block in Fig. 5 labeled Video Data Replacement (shown ~n greater detail in Fig. 6) includes 8 s~ngle-bit multiple~ers 160. Each multiplexer uses a mask bit to select either a VGA data bit or an ink bit. At each pixel clock - -time, 4 sequential pi~el3 for the top half of the display and 4 sequerltial pi2~els for the bottom half of the display are simultaneously proce~sed through the set of multiplexers. The control signals from the VGA controller (pixel clock, horizontal ~ync, and vertical sync) are delayed ~o as to be synchronized with the video data coming out of the BGA.
1.3.2.4 Di~playModes Normally, the BGA provides display data that is a combination of the data from the VGA, ink, and mask planes: for each pixel, the BGA provides VGA
data or ink data depending on the value of the ma~k plane data.
The BGA provide~ for bl~ng of data firom either or both of the data sources (~rGA and ink/mask). Thi8 permits elim~nation from the di~play of application data or interface data without the need to clear the colTesponding display bu~er.
The BGA can also be placed in a sleep" mode, to reduce power consumption.
In this mode, the interface proces~or has access to all VRAM memory locations. The VGA data will be passed to the di~play without monitoring the VGA timing signals. BGA sleep can be act*ated by ~etting a bit in the BGA
control register and can be activated by the VGA sleep signal ~received on an external pin from the optimizer). VVhen activated by the VGA ~leep sig~
the display output drivers are disabled, BO that power can be removed ~rom the display without damaging the display device.

. ' ,~ ' ' ' ' '' : ': ,' '"' ,', " ' , ' :

WO 92/09038 ~39~ 20- P~/US91/04~62 1.3.2.6 T1he Interface Proce~sor & the BGA
The BGA provides the interface processor with access to the VRAM as if it was 120 nsec D~M operatmg with 2 wait ~tates.
The BGA controls the the interface proCeSSor's Ready line dur~ng the time that the video shift register is being loaded, so that the display can be refreshed using the VRAM in a way that i8 tran~parent to the interface processor.
The BGA control regrister includes the ~ollowing bits: BGA ~leep, blank VGA, blank ink. There is also a read-only regrister that indicates the number of the current scan line.
1.3.2.6 BGA& Optimizer The BGA is connected to all of the interface proces30r's address lines, while the optimizer is connected to a sub~et of these lines. r~us, the BGA is arranged to generate a chip select signal for t~e optimizer. r~hiS chip select is active for any I/O addres~ in the range 1OH-17H, addres~e3 corresponding to the optimizer's eight I/O mapped registers.
1.3.2.7 Contrast Control Display contrast is controlled by the output of an 8-bit DIA converter. The data register of this converter is mapped to a memory location. Writing to this memory location has the dual effect of writing to ~M a~ well as latching a new value into an external D/~ converter. r~us, the current value of the converter can be deter~nined by reading that VRAM location.
....
1.4 ICommunicatlon betwee~ Main aIId I~terface Proces~ors The main processor and the interface processor communicate with each other via two separate mechanisms. The interface processor communicates keystroke and mouse data ~ria the VO ports and protocol normally associated with a keyboard controller. A separate, more general purpose communication mechanism (referred to as the "datalink) is also provided.

::

, ,:,: - , ~ . ~ . .. . . . . . .

.,: :~ . , . .. : . .,, .: . . , ,. . .
,. , . . . .. ,: . , , , .; , : ..
,,, , . ; ~ .

. . - - . ., , WO 92/09038 -21- 2 ~ 9 2 PCI/US91/04462 1.4.1 Dsltalink Regi~t~rs The datalink between the main processor and the interface processor uses, ~or each processor, a receive da~a register (8 bit3), a transmit data register (8 bits), a status register (of which two bits are used), and a control bit (located in a register with control bits used for other purposes); one processor's transmit reg~ster is the other processor's receive register.
The interface processor acces~es this information ~ia VO port~ with fixed addresses.
The datalink registers are among those supported by the optimizer.
Optimizer POS register 103 provides four bits that are u~ed to control the address mapping of the datalink and ~tatus registers as well some of the other registers supported by the optimizer. - -One 3tatus bit indicate~ whether or ~ot t~ere i~ data in that proce~sor's recei~e register. The other statu~ bit indicates whether that processor's transmit register is empty.
The control bit permits the correspoIlding proces30r to determine whether an interrupt will generated when the other processor sends data.
1.4..2 Datalinlk Protocol Low level commu~cations protocols are defined by which the main proce330r can obtain diagnostic information from the interface processort download data (including sof~cware) into the interface processor's main memory, control - power con~er~ing feature8, and pro~ride a basic mechanism by w~ich application~ running in the main processor can communicate with the int;er~ace proce~or.
For general purpose com~nunication ~rom the main processor to the interface processor, a BIOS call in the main processor can send a block of data to the interface processor.
For general purpo~e co~nunicatio~ from the inter~ace processor to the main proce3sor, application-provided datalink data handlers are used. BIOS Call5 are provided to install a datalink data handler, save the current dataliDk driver state (another BIOS call is provided that ~ndicate~ the amount of memory needed to save the current datalink driver state), and restore a : . .,, , , . . .: . :

.:. - ~ ; , , ~ ,, ;

?,J~
WO 92/09038 ~ -22- Pcr/US9l/04462 I

previously saved datalink driver state. By the u~e of datalink data handlers, a plurality of applications can share access to the datalink. The BIOS
maintains a count of the number of saves minus restores, and each datalink driver state save include~ the relevant count (i.e., nesting level). When a datalink driver state is restored, this count is checked, and an error returned,if the nesting level does not match.
To receive data fi om the interface processor, an applicatiGn must provide a routine that i~ to be called when data i9 received from the interface processor.The application registers this data handler routine with the datalink driver by the "install" BIOS call mentioned above.
Because a pointer to the current datalink data handler is stored in the dr*er state save area, the data handlers can easily be chained. If a handler determines that the data is not for it, the handler can defer to the handler pointed to in the state save area created when the handler wa~ installed.
These BIOS calls return a datalink ~tatus byte with bits indicating the following error conditions: transmission in progres~, reception in progre~s, illegal datalink driver state restoration, t~me out, busy, and invalid function request.
Furtherj BIOS calls are provided to perform certaiIl specific interface processor-related actions, such as reset the Lnterface proce~sor, echo data (to test the datalink), get diagnostic re~ults ~returns the results of the interfaceprocessor's firmware diagnostics), download initial code and data (and jump r to a specified location), enable and disable Fl key generation, get battery voltage level, get interface processor firmware revision level.
When the system is booting, there are certain situations (such as configuratior~ errors that should be brought to the user'C attention) where the user is asked to press the F1 key or to tap the tablet (indicating that the userhas ~een the error mes~age). ~er the main processor ~ends a command to the interface processor to enable F1 key generation, the interface proce~sor will send an F1 keystroke the first time the user taps the tablet. There is a command by which the main processor can then disable F1 key genera$ion (for example, so a~ not to generate a second F1 keystroke when the user taps the tablet aPcer pressing the F1 key on the optional keyboard).

. , . . " ; , .. . . . .
- ; -; .

, ~ ;; , .~ . .

.

wo 92t09038 -23- PCr/US91/0~62 2~9~0~
The main processor also supports certain cornmands initiated from the interfase processor, such as turn~ng the display backlighting off and on, setting the hard disk timeout, ~etting the ma~um ~y8tem clock ~peed, ~etting the minimum system clock speed, initiating system ~hutdown, initiating ~y~tem wake-up.
Drivers for communication w~th the irlterface processor across the datalink can be implemented by either of two methods. As described above, a datalink data handler can be registered with the BIOS. Alternatively, a driver can take over the datalink interrupt; presumably this driver would then chain to the normal :BIOS datalink driver when appropriate.
1.4.3 Ta~let Data over the Datalink The main processor can request that tablet data be se~t to it; after such a request, the interface processor will send to the main processor 5-byte blocks of tablet data wher~ever they become available and are not used by the simulated devices interface. In addition, the main processor can control the tablet by sending commands to the interface processor directing it to send commands to the tablet. The main processor can ~end a command to the interface processor that specifies the calibration para~eters that the interfaceproce~sor is to use. The main processor can send a command indicating that the interface processor should discard any tablet data that iB waiting to be sent to the main processor.
The BIOS for the ma~ processor provides a mechaIlism by which an applicatioll runn~g in the main processor can register to receive tablet data.
More than one application can be regi~tered at once, in which case, a chain can be formed such that tablet data not used by one application can be made available to other applications filrther dowIl the chain.

.
2 SimulatedDevices :"
A set of simulated devices is available to the uqer: keyboard, mouse, - handwriting input device.
Some "simulated de~ices" in fact simulate, both to applicatio~ programs and to the user, devices with which many existing application program~ have been designed to operate. Others look to the user unlike any of the devices with .~ .; ~ , , . ~ -~, , . . . ~: ,. . , , ,~, .. ,............... ~, "... ... .. .. ~ , ~,.

wo 92/U9038 -2~- PCr/US~1/04462 C~a which the appli tion i8 designed to operate. For e~tample, the handwr~t~ng input dev~ce is less closely related to a standard device. In a sense, the handwriting input device s~mulates (to the user) handwriting input previously only available with applications developed specifically for use with handwritten input. From the application's perspective, this device simulates a keyboard; although ke~rs need not be involved (real or simulated), the handwnting input dence provides keycode data to the application.
These illpUt facilities are Udevices" in the sense that they appear to the user to exist independent of any particular applicatio~ program and largely independent of each other. Visllally, the dev~ce display does not permanently interfere with the application display. Thi9 can be accomplished by prov~ding each with separate display area, such as separate windows on a large display.
However, the prefe~ed embodiment uses one screen area for both application display and for display of the interface dev~ces. The to the user, the device~ ;
appear to be on top of the application's display.
Further, in implementation, these dences are iIIdependent of the various applicat,ion programs with which they may be used. In the preferred embodiment, they are even implemented in part u~ing a proces30r separate from the proce~sor on which the application i~ running.
In order to provide maximum independence between the device simulation and the application (and to improve shared di~play performance), hardware support, a~ described above, is provided for the simulated device di~play. A
display plane of the type for which many pre~ i3ting applications have been desig~led is provided. Two additional planes are also provided: an ink plane and a ma8k plane. The displayed value for a pi~el i~ determined f~om the values for that pixel from each of the three planes as follows: when the mask plane pixel has one value, the application plane pigel value is displayed; when the ma8k plane pixel has another value, the ink plane pixel value is - displayed.
The ink plane is so named because one of its functions is to display "electronicink" so that, at times, the stylus, tablet, and display operate as if the user was writing with a pen on a paper: when the stylus is in contact w~th the tablet, a trail of "ink" is displayed as the stylus is moved across the tablet. For much of the operation ink i8 not used; for example, there is no need to clutter the display with irlk as the stylus drags an icon. 0~ the other hand, electronic ink need not be limited to the ink plane. Whereas the simulated devices only .. .. ... .
. . :,, . ~

WO 92/09~38 -25- 2 0 ~ 2 9 o 3 PCI/US91/0~462 use the ink plane, a pa:rticular application might put ink in the di~play plane that i9 prov~ded for use by the~e application~; for example, a "paint"
application may display electronic ink in re~pon~e to movements of a locator de~ce.
A row of filnctioli buttons i~ also provided. ~o~e illu~trated in Fig. 1 are DEVICES, CONTRAST, FREESI~?LE, INFO (16a, 16b, 16c, and 16d, respectively). These are located on a portion of the tablet that extend~ beyond the normal screen display. There are permanent labels pr~nted to indicate the portions of the tablet that function as each of these buttons.
Alternati~ely, the display could prov~de the labels for the function buttons and/or the function buttons could be implemented by a mechanism ~eparate from the tablet; in any case, there should be some way (separate ~rom the display) of identifying the contrast butto~l when the contrast is so badly adjusted that the display looks blank.
The function button~ ~re u~ed (among other things) in the coIltrol of the simulated devices.
There is a DEVICES button 16a that is u~ed to act*ate and deact*ate a device tray". When the user initially pre~ses the DEYICES button (by touching that portion of the tablet correspo~ding to the device button), a tray of the aYailable simulated devices is displayed. Ihe u~er can then drag from ;~
the tray those devices that ~he user wishe~ to be active, and caIl drag onto thetray those devices previously acti vated, but which the user does not presently need. The user then pre~es the DE~IICES button again, which result~ in removal (from the display) of the tray and any devices on it. For convenience, the devices appear on the tray as ~mall icons (referred to as stamps); also, `~ when the tray is di~played, devices present on the screen because they were previously removed from the tray are also displayed in stamp form; when the tray i8 removed, the vi~ual representation of any of the remaining devices (i.e., not located on the tray) are replaced by the larger, typically more complex, icons which are the visual forms of the simulated devices that the user"operates".
There i~ an INF0 button 16d that is used to activate and deact*ate an information device. The user first touches the INF0 button, causing an INF0 icon to appear. Initially the INF0 icon displays i~fo~nation about how it is to be used. The ucer then touches a function button or icon about which the : , . . . -: , . .

.. , . . ..: . ..: . ~
.. : :i ,. . . . . . ..... . . . .. .

wo 92/0gO38 ", ~ 26- PCr/US91/04q62 -user would like illformation; this cau~es information relating to the touched object to appear in the te~ area of the INFO icoI~.
The CONTRAST function button 16b controls one aspect of the appearance of the display: its contrast. This button has two lportions: one for increasing contrast; one for decreasing contrast; these button~3 auto-repeat at 1/2 second intervals, with the initial contrast increments being small and later increme~ts beiIlg larger (when the stylu~ is held down for a relatively long time).
Function buttons can be provided to activate particular applications. For example, a "FREESTYLE" (trademark of Wang Laboratorie~, Inc.) button 16c ~`
` is provided, which activates an annotation and desktop management application. In particular, this button results in data being sent from the illter~ace processor to a resident Free~tyle driver in the maiLn processor, which loads additional Freestyle components. The interface processor makes available to the main processor tablet data that is not used by the user interface provided by the ~nterface processor; the Freestyle application reads this tablet data.
These function buttons could be organized i~ different ways. For e~ample, Freestyle and Info could be available from the Device~ tray; there could be separate *lnction buttons ~or some or all of the de~iceQ, in the extreme case eliminating the need for a Devices tray. Buttons could be provided to perform additional fimctions, such as a LIGHT button to control the amount of backlightiI~g for the display.
2.1 Chara¢t~ristics co~mmo:~ to the u~er i~ter~ace i~0:~

The icons are rectangular (or a combination of rectangles). Alternatively, the icons could be other shapes; however, drawing icons and determination of whether the stylus is in an icon is most ef~iciently done ~or rectangles.
Most of the icons include asub-icons". These sub-icons typically correspond to particular fimctions and often function as button areas that the user taps with the stylus.
Fig. 10 is a screen display showing the icons for three simulated devices.
Behind these icons is the display of a text editing application adapted to - . : ,- : . . -..
'. . ' ~ .,, :

WO 92/09038 -27- PCI`/US91/0~462 2~ n2.~ ~3 receive input i~ the form of key~trokes and mouse data, and n.ot adapted to receive tablet data.
Ihe keyboard dev~ce is shown with four groups of keys (a group of fuIlction keys, a main QWERl~ keyboard, a cursor control keypad, a nllmeric keypad) as well as drag and configure buttons.
The handwriting device i~ shown with buttons OIl the top for 8izing, adjusting box width, inserting, dele~g, and dragging. Buttons are al~o shown for scrolling the displayed character bo~ces left a~d right, for sending a line of characters, and for turning on and o~f three sets of characters (~o as to appropriately direct the character recognition algorithm). The main body of the icon displays a series of boxes in which the user can write characters. For the example shown in this figure, the recognition result is shown above the box in which characters are wTitten.
.
The mou~e device is ~hown with buttons for sizing, setting the ~cal0 factor, a~d dragging, as well as three "mouse button" co~trol button~ (one corre~ponding the left`button of a mouse, one corresponding to the right button of a mou8e, and one ~or ef~ecti~ely lpressing both left and right buttonsgin~ultaneou81y). Below the button areas i8 8hown a mou~e movement area that corresponds to the mouse pad that one mig~t u3e vn~ a physical mouse.
In Fig. 10 the DEVICES, CON~AST, FREESTYLE, and rNF0 buttons are ~hown alollg the right ~ide of the display; this i~ an alternative to the example shown in Fig. 1 where the~e are shown along the top.
~.1.1 Feedlback to th~ UYer of Stylu~ Po~ition `
When the stylus is in ~ensing proximity to the tablet (meaning that ~e tablet c~n sense the stylus adequately to provide X-~ position data), stylus position can be indicated to the u~er. This is particularly helpful when the tablet is not located on top of the di3play. In any case, it makes easier the user's ta~k of hitting 8mall targets, and helps the u~er overcome small di8crepa~cies between where the 8tylu~ appears to the user on the display and where on the display the system loca~es the stylus. In general, when the styllls is in pro~imity, a cursor show8 its location. In ~ome situations, the appearallce of this cursor i9 location dependent, therefore providing further feedback; in other situations, feedback of po~ition take~ the forrn of highlighting particular - . . - , - . - . . , . -, . . . -: .. ~ ,, .. . . :
. :- : - - . ., , . .... .. ., " ~. . , . ,~
~ . - ., . - .. , . . . . :~ . . ,.. . ;, .. ,, . ~ ... . .. .

O 92/09038 ~9C~ 28- PCr/US91/04462 areas of the di~play in re~ponse to stylu~ position (e.g., keys on the simulatedkeyboard).
2~1.2 Holding Stylu~ Dow In many circumstances, the time for which the stylu3 i~ held down is of no particular significance. III other circumstallces, holding the ~tylus down can result in automatically repeating a ~unction; for e~ample, holding the stylus on a s~mlllated keyboard key will result in auto repeat action similar to holding down a key on a physical keyboard. In yet other circumstances, holding the stylus down will cause a fimction button to Ulock": for e~ample, a simulated mouse button will simulate a press a~d release when the 3tylus is down for a short time; wherea~ a simulated mouse button will stay "pressed"
even after the stylus is removed if the stylus i~ held down long enough.
. . .
2.1.3 U~er Inter~ace R~le~ Dealing Witlh U~er Targeti~g Errors ., Various rules are u~ed to govern operation of the user interface to facilitate the user's understanding of how stylus actions will be ~nterpreted.
2.1.3.1 "Touch pOillt~ rule In most situations, a touch point" rlale is more u3eful than the combination ofthe leave icon and drag into icon rules, de~cribed ~elow.
The touch point rule is that the function to be performed is determined by the first point where the stylu~ touches. Similar to the "drag into icon" rule, a function will not be activated by crossing a boundary into an icon. However, this rule allows a function to continue to be performed even if the stylus leaves an icon.
The touch point rule i~ partioularly useful for the ~imulated mou~e device.
This rule enables the u~er to ma~ntain a small mouse icon on the screen, while allowing wide excursions of stylus motion to be used to generate mouse data, as long as the stroke starts in the mouse movement area.
2.1.3.2 "Drag into iCOIl~ rule According to the "drag into icon" ~le, an icon'g function is not initiated by dragging the stylus into the icon. If a function is being performed according .. , ~ . .. ..
. : ", . " ~: . .. . .
: ~ . : ; , ,,: , , - . - . , ; . .

.. . . .. . .

WO 92/09038 ~ ~ 9 ~ pcr/us91/o4462 to the touch point rule, that function contmues, evèn if the stylus enters another icon. It is necessary to touch down inside an icon (or sub-icon) to activate the icon's function.
;

2.1.3.3 "Leave icon" rule For dragging and resizing, an alternative to the touch point l~lle is used.
When the ~tylus is in a drag or resize sub-ico~ and leaves the sub-icoIl:
the icon function stops, the user interface ignores all tablet data until the stylus is lifted from the tablet.
It makes no ~lifference whether the ~tylus has moved into the icon from another icon or from an empty area.
This rule is maintained during drag and resize, because duriIIg those operations the icon generally moves so thag the stylus does not leave the icon.
However, if the maximum si~e is reached, or if the user attempts to drag the icon pa~t a boundary, the ~tylus may leave the size or drag sub-icon, ending the operation.
~, Alternatively, this rule could be applied as the basic rule, iD~tead of the touch point rule.
2.104 Dragging All devices have a ~drag" sub-icon. This permits the user to move the device on the display, for e~ample, so as to avoid obscuriDg a particularly important portion of the application display. This "sub-icon" need not be visually i~dicated in any particular way; rather, it may simply encompass all of the icon area that is not taken by other sub-icons.
The drag sub-icon is located in the upper-right corner of the device icon.
VVhen the stylus touches a drag sub-icon, the device icon is replaced by an XOR "outliIIe"; this indicates to the user that the drag function has been activated.
Until the stylu~ is liPced (or the stylus moves out of the drag sub-icon, as explained below), this outline is moved on the screen so as to track the motion of the stylus; in other word~, the user can Udrag" the icon.

:: : . : : ' : . : . ' ,: . ,. ' "::" ::: , : , : ; : , . , 92~09038 ~ 3 PCI/USg1/04462 -No part of the icon will move past an edge of the ink plane di3play. Thus, when the icon is pushed against an edge, the icon will no longer track the stylus and the stylus can move out of the drag ~ub-icon; if it does so, the dragoperation will end and no other action will be taken until the stylus is lifted.
2.1.5 ~3izing All sizable devices, have a "size sub-icon.
The size sub-icon is located in the upper-left corner of the device icon. Other possible size sub-icon locations include the entire perimeter of the icon or allcorners of the icon.
When the stylus touches a size sub-icon, the device icon is replaced by a black and white outline (to reduce processing load, an XORed outline c~n be used).
Thi~ dicates to the user that the size function has been activated.
Until the stylus is lifted (or the stylus moves out of the size sub-icon, as explained below), this outline is changed in s~ze so as to track the motioIl of the stylus. The location of the lower-right corner of the icon remai~s fixed. Inother words, the user drags the upper-left corner of the icon.
No part of the icon will move past an edge of the ink plane di~play. ~n icon may have a size limitations (there m~y be limitations on holizontal and/or ~rertical dimensions, and/or a limitation on t~e area of an icon). I~ese factorscan result in size changes ceasing to follow the stylus, and consequently the stylus can move out of the size sub-icon.
Typically, function boxes (sub-icons) scale with the overall size of an icon. Inthe handwriting icon, the let~er boxes do not change ~,ize; the number of boges visible changes.
The user can ~elect the part~ of the keyboard that are to be acti ve (see discussion of the keyboard device configuration button, discussed below), rather than sizing the keyboard device icon.
Othèr arrangements ~or sizing can be used, such as sizing sub-icons in each corner or s~ing by dragging a border line (e.g., as used in the Windows product of Microsof'c Corporation).

~. .... .~ . - , . ........ . . .......... . .
,, ,~: . . ~ ... .:

WO 92/09U38 PCr/US91/0~62 -31- 2~9~o3 2.1.6 Stacking The icon~ on the display are ordered according to how recently each wasacce~sed (touched or acti~ated v~a a ~unction button, as with the INFO icon).
Icons may cover overlappLng areas on the display. When icon~ overlap, the most recently accessed of these icon~ i~ displayed in the overlapping area.
Thus, when icons are clu~tered together, the user will ~ee them as an overlapping stack of icon~, with most recently used icons higher in the ~tack.
Touching any part of all icon will ma~e it the topmost icon. An icon that i~
completely covered by other icons cannot be touched until icons above it are moved enough to expo~e a portion of the covered icon.
2.1.7 ~ending a Charactex ... ... .. . .. .
Sending a character to the application is accompli~hed (preferably, via hardware) such that, to the application, it is as if the character came from thekeyboard. Thu~, the ~ending of a character in~ol~es performing the low level I/O operations that a keyboard would perform. One of the con~qequences of this i~ that keycode data (in~ormation about the pressing and relea~ing of key~) is qent, rather than ASCII character codes.
The user interface ~ubsystem firmware keeps track of the statu~ of ~hift and ~hift-lock (including change~ due to key actions ~om the optional physical kèyboardj, so that, for example, when in the shifl;ed state, the user writes a lower case character, a simulated device can send a sequence to the firmw~e containing un3hifl;/character/s~ift information. The firmware then tran31ates these codes as needed and sends them over the keyboard port to the maLn processor.
The low level communication of the interface processor with the main prosessor that sends simulated keystroke data to the maLn processor is the ~ame as that used to ~end actual keystroke data when a physical keyboard is attached.
The low level software ~at controls commu ucation with the main processor is part of the interface proce~sor's firmware. It recei~res data from the simulated devices user interface and sends it a~ keystroke data, mouse data, or tablet data, depending upon how the data is identified.

. ~

WO 92t09038~ ) Pcr/ussl/04462 This low level software can a~sure that a multi-code sequence being sent o~
behalf of one device (e.g., simulated keyboard) is not inappropriately interrupted by the sending of data on behalf of some other device (e.g., , -physical keyboard).
This low level software keeps track of the shift state. It i5 Up to the ~imulated devices user interface to make appropriate use of the shift state information (as described above).
.
2.2 Eandwriting lReca~gnLi~ion Device The hand~nting recognition input device provides a Ynechanism by which handwntten characters can be presented to an application as if originating from `a keyboard. qrhe primary body of the icon for the handwriting~ ~- - -recog~ition input device contains bo~es into which the user can write characters. (Other ways of delineating the character locations may be used, such as: tiok marks, hash marks, shaded areas. Furthermore, character recognition techniques that do not rely on such explicit character separation may be employed.) A~er characters are written, the boxes aid in editing the st~ing of characters. It is also possible to use other algonthms for parsing ~trokes into characters (s*oke segmentation), and eliminate the need to dlsplay boxes.
The stroke data is processed by a recognition algorithm that recognizes all of the printable characters when legibly written a~ discrete characters. The data provided to the recognition algorithm iIlcludes description3 of the strokes, their position within the character box, and an indication of the character set (e.g., alphanumeric, alphabetic only). A more complex algorithm for run-on characters could also be used.
A pre-trained algorithm is useful because the user may never need to train the algorithm; yet, the user has the option of training the algorithm to handle some particularly idiosyncratic characters. Algorithms that require training and those that are not trainable are also usable.
After characters have bsen recognized, ~e user can edit the string of recognized characters and can send the string to fhe application.

., , - - , ' , wo 92/09038 PCr/US91/04462 '` -33- 2 2.2.1 Wr~tillg characters Each character i~ written in a ~eparate box. Character8 can be written into the boxes in any order; it is not necessary to write the characters from leP~ toright. VVhen writing in the boxe~, electronic ink i8 displayed, simulating writing with a conventiollal pen.
2.2.1.1 Stroke Par~ng and Charac~er :Recognitio~
A handwritten character i8 made up of one or more handwriting strokes. In order to be considered a handwriting stroke, the stylus mU5t start within the writing area of the icon. Thi~ area exte~ds slightly (e.g., about 1/8 inch) beyond the character boxes. The stroke ends when the user lifts the styhls or when the stylus leaves the character writing area. Electronic ink is displayed ~ for handwriting strokes; this indicates $o the u~er exactly what the system ~ ~ ~~
understands the character strokes to be (as well as aiding the user in writing).
The stroke buffer ha8 two parts: one contains data at the tablet resolution (this higher re~olution is more suitable for character recognition); t~e other contaiIIs data at the display ~pixel~ re~olution (for use in controlling the display of electronic ink).
The "a~erage" position of a stroke determines which box it is ~in". For a single row of character bo~es, the average of the x coordinates of the digitizedpoint~ in the stroke i5 used tQ determine the box with which a stroke is to be associated.
Strnke Pars~g - Algorithm A
The following outlines one approach to the stroke-by-stroke processiDg:
If there is no previous stroke:
- the recognition algorithm is applied to thi stroke, - the result is displayed in the box this stroke is "in", and - this stroke i9 saved.
If there is o~e or more previous strokes and they are in the same box:
--this stroke is added to the group, - the recognition algorithm is applied to the group of strokes, . . . . - ~. ~ ~ . . , :; ; ,,. ,: , . , : :
.,, : ;, ", ~ ; , .: , ' J' , ' , ;

WO 92/09038 ~3 PCr/US91/0~462 ---the new result is displayed in the corresponding box, and --the strokes in the group are saved o If there i8 one or more previous strokes and they are in another box:
--the ink i}l the other box is erased (the recognition result for that bo~
continues to be displayed), --the previous strokes are discarded, - the recognitio~ algorithm is applied to this stroke, --the result is displayed in the box this stroke is "in, an~l - this stroke is saved If the stylus touches outside the writing area or if there are no new strokes for some period of time (such as about 1 second):
- the remain~ng ink is erased (recognition results continue to be displayed), and - the previous ~trokes are disciarded Stroke Par~i~g - Algoxithm B
The following describes a slightly different approach to stroke processing.
Get the next istroke (if a stroke is returned, it will be in the handwriting area) and add it to the (possibly empty) stroke bu~er.
Determine with which character bo~c the stroke is associated by computing the average" X position of the sitroke (for a si~gle line of boxes). Ignore the stroke if its average position is in the left or right margin of the handwriting area (rather than in one oiE the boxes).
o If the stroke indicates that the user intended to cross out four or more characters, then delete the characters (and their boxes) that were crossed out (those boxes through which the line passed more than hialf way).
If the stroke is not in the current box:
--make this the current bo~;
- erase the ink corresponding to the previous strokes;
--display the recognition result for the previous box;

,; , ,, " ,.. ,., , 'l , ., ::: .,., ;; .. , ,. . .. ; ., WO 92~09038 2 ~ 9 ~ 3 PCrtus9l/0~462 --move the new strok0 to the beg~nning of the stroke bu~er (eliminatmg the other ~troke~);
-- erase any recogni$ion result that may exist ~ the bo~;
- redraw the new stroke.
9 Get a recognition result for the strokes in the stroke buffer.
Wait for ne~t stylu~ tollch. If it takes too long, or if the next stylus touch is outside of the bandwriting area:
- display the recognition re~ult i~ the culTent box, - era~e the ink for the previous strokes, and - clear the stroke buffer.
... ....
2.2.1.2 IDk Erasure a~d Display of the Recogllition Result In prior systems, vanous algorithmR for tim~ng the erasure of ink and the display of recognition results have been used. It is desirable to do so with minimum distraction to the wnting proceSs and to do so in a way that provides the user with helpful feedback abou~ ~he recogDition process.
The recognition result can be di~played i~ an area separate from t~at in which the user is writing; thi~ is shown in Fig. 10, where ~paces for recognition results are ~hown above the spaces in which characters are hanclwritten. In this case, a recognition result can be displayell while the inkremains displayed.
Alternatively, the recog~ution result can be displayed in the area in which the user wntes characters. Howe~er, in this case, if a recognition re~ult is displayed withouk erasing the corresponding iDk, ~he ov0rlap of the result alld the u~er's handwri~ng often results in an illegible mess that is distracting to the user.
An approach u~e in some past systems is to wait until the user has paused ~or a su~ciently long period and then erase all at oIlce the ink for all of the characters wntten 80 far. l~nis sudden erasure is itself di~tracting and, by erasing many characters at once, does not help the user understand recognition errors that were due to ~egmentation errors, instead of misrecognition.
A superior method is the follow~ng:

W09Z~09038~ 36- PCr/U5l/0441it-~

1. Maintain a buffer of all of the coordinates uF.ed to ink for each wntten stroke, o~ a per-r.troke ba~.is.
2. Aæ. the stroke3 are grouped into characters by the segmenter (preferably, but not ~ecessarily in real time), the ~ystem uses the buffered record of the coordinates for those strokes to erase only the ink for that r~egmented character; the memory space for the buffered coordinates correspond3~g to the eraæ.ed ink can then be reu~ed.
3. The system may then immediately, or af~cer a delay, display the recogn~zed result character(s) for those strokes, free from any leftover ink. .
With thiæ. method, resultæ. can be displayed on a character-by-character basis without the presence of obscuring ink. -S~nce the transformation of segmented-strokes to a recogn~zed character occurs in an obviou~. fashion the u~.er easilyknows when segmentation errors are the cau~e of misrecognition. Since only the coordinates for a small number of pending s*oke~ need to be buffered, the o.torage space for ink coordinates can be reduced.
One could vary thi~. method to display temporary recognition results at the end of each stroke, instead of completely segmented characters. In addition, the method could be e~tended to pro~ride for recalli~g and redisplay~ng the ink in place of the recogn~tion results, a~ a part of anL editing proce~s.
Replacing the user's hand~vritten characters by characters of dramatically different appearance can be distracting to the user. For e~ample, handwritten characters will typically appear as collections of relatively thin lines and character design will typically be simple; in contrast, a more readable character would be heavier in weight and might include serifs.
Thus, the present illustrative system includes a "handwriting" font for use by the handwriting device. The characters of this font are made up of thin lines.
Further, the lines, rather than being composed of perfectly straight or evenly cllrved segments, are slightly wa~ering, as would be ~pical of a handwritten character.
When a character recognition re~ult is to be di~played in the area in which the user was writing, the character is displas~ed in the handwriting font.

.. : : ' ' : :., . ~ , ' .':

WO 92/09038 PCl'/US91/0'J462 2 ~
2.2.Z Editillg 2.2.3 F~anction Button~
The handwriting recogn~tion input dence icon has several sub-ico:ns:
-- drag, -- ~izi~g, ~ , - box size, --scroll lef~, --~crollright, ~ insert, - delete, and --send.
;

2.2.3.1 I~sert The user can in~ert a bla~k box, w~ich can be left blank for a space or into w~ich the user can wlite a character. A box is in~erted by touehing the insert fimction ~utton, which turns dark to ehow that it is activated; the user then touches a point in the te~t l~ne to indicate wlhere a blank box should be inserted and drags the stylus across the line of bo2 ;as. Blank boxe~ are inserted starting at the box boundary that i3 closest to where ~e u~er first touched (i.e., touching somewhere between the middle of one bo~ and the middla of the next box will result in the blank bo2c being inserted between those two boxes) and endi~g at the box boundary that i3 closest to where the user ended the stroke.
2.2.3.2 Delete The user can delete boxes by uce of the delete ~ction button in a manner analogous to the way boxes are inserted with the insert fimction button. The u~er touches the delete fimction button, which turns dark to show that it is activated; the user then touches a box to be deleted and drags the stylus across the li~e of boxes. VVhen the u~er liflc8 the stylus, the box where the stroke began through the box where the stroke ended are deleted.

.. ", , , . , , . ,; ~.. . ...
. ,::.. , - . .. . , , , . : ,, :, .. .
.:': ' ,., :, , ', , , .: : : ,' ::,',::,,'. ' :. :, ' :: :' '; '' . ::
, . , : , , : : . , , , , , ' : ' . . :' ::, '.: '' ' ,:, : ' ' ': ', ', ' : . , :
.~:, - - . ., , , " :: , :: : : , ., ,,.. ,. ;' ':: '' , :: ' :
. : : : ' ': ' : : ' ' , . - ' wo 92/09038 PCr/ussl/n4~62 --2.2.3.3 Erase The user can era~e characters from boxes (leaving blank bo~es, rather than deleting the boxes). The user touches the erase ~unction button, which t~ns dark to show that it is act*ated; the user then touches a box to be era~ed and drag~ the ~tylus across the line of boxes. When the user lifts the ~tylus, the characters in the box where the stroke began through the box where the stroke ended are era~ed; this dif~ers firom the "delete" operation in that with "erase" the boxe~ remain.
2.2.3.4 Scrolling To avoid ob~curing too much of the application display, the user may want to keep the handwriting icon ~mall.
. .
Touching the scroll left ful~ction buttorl moves all characters in the text boxes one character to the left. When the stylus is held down, the ~unction automatically repeat~. I'he scroll right function button works in a similar way.
As any ink in the boxes will be erased when the stylus touches out~ide the boxes (e.g., touches one of the scroll button~, there will be no ink to scroll, only recognized characters.
2.2.3.6 Sending, Charact~rs to the l~pplication In the preferred embodiment, the handwriting recognition input device -operates in buf~ered mode"n which characters are not sent until the user touches the send function button. Alternatively, an additional mode can be provided (celectable by a fimction but~on of the handwriting recognition input device) in which each character is sent afl;er it i3 completed. U~buffered mode includes two selectable sub-modes: w~th and without backspace processing.
When backspace processing is in operation, when the u3er writes a character in one of the boxes corresponding to a character that has already been sellt m the culTent line, a serie~ of backspaces are ~ent (to back over the later characters in the line), followed by the newiy written character, followed by the characters that appear to the right on the line. Backspace proces3ing is useful with applications that permit the user (when using a keyboard) to backspace and retype in order to make corrections in the current line.

. . . : . . .

~,; , , ,. , :, ... .. .
~: .. . . ..
, , ,; ' ; ' ' WO 92/09038 2 ~ 3 2 G~ ~1 3 PCI /US91 /0446Z

In buf~ered mode, when the user touches the "send" function button, all characters that have been written ~ince the last time the handwriting device was cleared are sent to the application and the handw~iting device is cleared (e.g., the indications of recognized characters are removed from the display); if there are no characters to send, a carriage return character is sent.
In unbuffered mode, when the user touches the "send~ function button, a carriage return character is sent; if backspace processing is enabled, the line buffer is also cleared.
In unbuffered mode, when writing begins in a box to the right of an empty box, a space character is sent for each empty box. When characters are sent in buffered mode, space characters are sent for aIly blank box (except that no trailing bla~ks are ~ent).
.. . . .
2.2.3.6 Movi~lg and ~i21Ilg The drag and sizing ~ub-*ons operate as described above for icons in general, although the treatment of the writing boxes merits particular attention.
When the height of the icon is changed, the height of the writing boxes is changed proportionally. However, when the width of the ico~ i9 changed, the width boxes into which characters are written is not changes; rather, the number of boxe~ displayed changes.
To change the width of the boxe~, the user touches the box size sub-icon, drags the stylus by the amount the box size 3hould be changed, ~nd lifts the stylus.
When the stylus touches the box size sub-icon, the sub-icon change~ color (e.g., is complemented) to show that its function ha~ been activated. Until the stylus is lifted the lower right corner of the lower (if there i5 more than one line of boxes) right box is mo~ed in the same way the ~tylus moves; the upper left corner of the upper left box stays fixed. Because the size change is that for the whole line of displayed boxes, a large change in box size may require several strokes in the box size sub-icon.
When increasing the size of the overall icon or when reduci~g the size of the boxes, the change may be great enough that one or more additional boxes (or one or more additional lines of boxes) are displayed. Prefera~ly, these should be added to the right end of the line (or below, in the case of extra lines), asusers are likely to e:gpect added space to appear to the ngh$ and/or below their current writ~g.

- , , . . . ......... . . ........ . ,, ..... - , .
, .. ~ ~ - ,, . ,., . ,; ., ~ , - - . .. , ; ,;,: ,; , . . .

WO 9:1/09038 ~ 9`~ 40- PCI/U!391/0446~_ 2.2.4 lEIandling Multiple Lin~s The handwriting recognition input device can be ~xtended to handle mtlltiple lines.
If multiple lines are used, the effectire boullda~r of the culTent box 3hould beexpanded into boxes above or below to enclose the previously drawn ~trokes.
This enables a stroke ~uch a~ the top of a letter T to be properly included with other strokes even though it may fall completely outside the actual box boundary.
If the handwriting icon is aITanged to handle more than one line of boxes, any of the following approache~ can be u~ed to determin~ng when to send characters in buffered mode:
. . .
1. Like with a singla line, send nothing until the user touches the send button. Then send a carriage return ~ter each line.
2. When the u~er write~ in a new line, send the line the u~er wa~
previously writing on, followed by a calTiage return.
. I
3. When the user writes in a ~ew line, se~d carriage returns and/or cursor movement codes to try to indicate (to the application to which ~: the characters are beiug sent) the position of the new line relative to the line on which the user wa~ previou~ly writing.
The second and third alternatives are the same for the case where the u~er writes on successive lines from the top a~d moving down one line at a time.
2.2.5 Automatîc Selection o Pointing and W~i~i~g ~[ode~
Many system~ have been developed that use a 3t91u9 alld permit the ~tylus to be u~ed either as a pointing device (similar in function to a mouse) or for writing (e.g., for handwriting recognition or for annotation). It is conventional to provide a mechanism by which the user explicitly initiates switching between pointing and writing modes; examples include the following: the user picks a menu item with the stylus before writing, the u~er picks a "writing" field with the ~tylus before writing in that field (in re~ponse to which the system di~plays an area in which the user is to write), the user double clicks with the stylu~ before writing, the user pre~ses and holds a barrel switch on the ~ide of the stylus before writing--comparable . , .. ~- "
; ~, ,, , ~ " ,, ", , ; -,, . .: , ~ . . . :. -. . , . - : , ,, , .. ,, , , ; -, , .... . .. ..... . . . . . .. .

WO 92/09038 2 ~ ~ 2 ~ ~ ~pcr/us91/o~62 mechanism3 are pro~ded to switch from writing to pointing). The requ*ement for an explicit action interrupts the user's flow of action before and after wliting.
Variations on the technique u~ed by the handwriting recognition device ~or determining the mode in which the stylu~ is to operate are al~o useful outside the collte~{t of the handwriting recognition device. For example, this could be used in "forms fill applications, where the user is expected to handwnte information into certaul areas of a displayed forln.
This technique assumes that writing is to occur in areas of the display that are appareIlt to the user as writing areas; di3played images of conventional paper forms with spaces for the user to write are examples.
The technique is as follows: -1. I~e stylus normally operate~ in pointing mode.
2. If the user touche3 the ~tylu3 down within the area of a wnti~g field(~uch as within a rectangular outline), the system ignores the Rtylu3 data as pointing iIlpUt and switches to writing mode.
3. Writing mode is maintained regardless of ~ylus location until the stylus is lifted.
As an alternative to the second rule, the system can accept as a poillter event the initial touch point, and/or can accept a3 a pointer event the lift point at the end of writing mode. I'his would allow the star~ of writ~g to al30 be u~ed to "select" an input field.
As an alternative to the third rule, the 3ystem could stay in writing mode mtil the user lifts (a~er one or more wnting strokes) and touches down at a point outside the writing field, including in another writing field (if in another writing field, the system would immediately switch to w~ting mode again).
The basic technique pro vides indications visible to the user of where writing fields are located and provides ~witching directly between writing and pointing modes based where tlhe stylus touches.

'. ' ' . ,,' . ''. '' ,1,, , ', " . ", ,"~., ~ ;,; , ' .

; , ' ;' ,' , ' ': i " "' '; ' ' ' ' ' "` " ,' ~

WO 92/0903~ , '3 PCr/US91/04462 _ c~ r~ 42-2.3 ~ey~oard Device The simulated keyboard device allows users to enter keyboard data by typing" with the stylus on an iconic keyboard.
Tho~e aspects of the simulated keyboard device relating to detailed key layout can be changed during system ~etup (e.g., nationality of character ~et, QWERTY or Dvorak, number of function keys).
Other aspects of the keyboard can be changed at any time by use of the configure function button on the keyboard icon. The keyboard i~ organized in sections that can be individually selected for use and can be physically alTanged relative to each other in a variety of way~. By eliminating sections of the keyboard that may not be needed, one can ma2~mize the visibility of the underlying application display.
2.3.1 I yping The code for a key is sent when the user touche~ the ~tylus to the display of the correspondi~g key. Touching also causes the di~play of the key to be shaded, to provide feedback to the u~er. If the stylus remains in contact with the key" for more than about 1/2 second, the key will automatically repeat at a rate of albout 5 times per second as long a8 the StyluR remains in the key (simulating a keyboard fimction sometimes referred to a~ typematic action).
An application can adjust the repeat delay and rate by BIOS call~.
An alternative approach iB to let the keyboard device be an elcception to the leave icon" and "drag into icon" rule~, and send the keycode, not on touch, but on lift. This would reduce the need for the user to accurately touch a key with the st;ylus; the user could touch any key a3ld drag around (with highlighting shovnng in which key the stylus iB cu~Tently located) and lift the stylus in the desired key. However, with this approach, typematic action ba~ed on holding the stylus down would no longer be used.
2.3.1.1 Operation of ~3hift Eey~
On a traditional keyboard, shift-type ksys (e.g., control, shif~, alt-shift) areused by holding down the shi~t-type key while another key is pressed. Tlli5 action is not possible with a single stylus.

- , . .,, " ., ~. . .
.; , . . ... , ; , :;
: . , ,, , . . ~ ., :., . ;., . .;
- - , , ; ~, ,.. ~ .: . , ., , . .:: ,, .. : .
: ,.- , . , -43- 2 ~
Thus, for the simulated keyboard device, shift-type keys operate differently from their counterparts on a traditional keyboard. When a shift-type key is touched, it is highlighted, to show that it has been pressed, and keycode data indicat~g that the key has been pressed is sent; this highlighting continue~
a~ long as the shift-type key remains "pre~ed. (This dif~ers ~rom treatment of a non-~hift key, for which both "press" and "release" code~ are sent each time the key i9 touched.) If the next touch is to a non-3hift key, the ~hift-type key stays "pres~ed" until the Ytylus is lifted ~rom that key, at which time t~e highlighting of shift-type key is removed and keycode data is 3ent indicating that that shifc-type key has been relea~ed. If the next key touched is a different type of shiiPt key, the first continues to be active. If when a shiflt-type i8 active, the stylu~ touches other ~an a regular key, the shift-type key is deacti~ated (removing the highlighting and sending appropriate key release data). Thus, the typical way to send a shifted character i8 to touch the shift - - -key and then touch the key of the character to be sent; if the user holds the 8tylu8 on the key of the character to be sent long enough ~or it to repeat, the repeated character will also be shifted. If two ~ type key8 are active when a~ regular key is touched, both send release data when the stylus i8 lifted from the regular key.
There are al~o lock keys ~uch a~ caps-lock, Ilum-lock. Vnlen such a key is touched, keycodes are sent indicatiDg it was pressed and released. The "locking" action of these key~ are not in the simula~ed keyboard device, but in the i~terpretation of the keys, a~ is the case with many traditional co~nputer keyboards. These keys remain~ highlighted unt~l touched again, thereby indicating their locked status.
2.3.2 E`unctio~Butto~
The keyboard icon includes sub-icons for:
- drag and --configure.
One might also include a "size" sub-icon. .As with the other device icons, the keyboard icon includes a drag sub-icon, by which the user can position the keyboard icon on the display. The keyboard can be reconfigured.

: ~ , , . -. ~ -. ,. . ., .: . ,.;~

~ ' ~ - , ' ~ ,, ;, , o 92/0~038 ,~ Pcr/uss1/04462 ~,GÇ~ h -44-2.32.1 Configuring th~ ~yboard When the configure button is touched, the configuration editor sub-icon appears. This icon has three parts: storage space, build space, and control space.
There are 65 possible configurations of the 4 keyboard parts. The user ef~ectively selects one of these configurations by moving keyboard parts so as to as~emble the parts in an alTangement that approa;imates one of the ~ .
possible conIigurations.
Icons representing the available keyboard parts are displayed in the storage space. Inne user drags the desired parts into the build space and positions them in approximately the desired relative arrangement. VVhen a part of the keyboard is not wanted, it is dragged back from the build space to the storage space.
When the stylus is liP~ed, keyboard part~ that are in the build area and are arranged so as to appro~nate one of the possible configurations are automatically repositioned to show l;he keyboard in that configuration; the remaining keyboard parts are automatically returned to their home locations in the storage area.
When the user again touches the configure button, the configuration editor ~ub-icon i3 removed along with any keyboard pa~8 that ha~e not been configured in the build ~pace. The keyboard parts that have been configured now are bound together as one keyboard and can be dragged a~ one unit.

2~4 Mou~e D~vice `Irhe simulated mouse device allows the user to ~end mouse data to an application. The present illustrative system simulates the 2-button mouse typically used with the PS/2 computers of International Business Machines Corporation.
The ~imulated mOuse device has ~everal parts:
- a drag sub-icon, - a sizing sub-icon, - a movement scaling sub-icon, .. . ., : : . . ......... . , ;: .. . : . . , . . " . -. . .:, . . . - ,.,; ., ,, ,. , ~.

--: . ; , O 9~/0903~ 2 V 9 ~ 3 ~ '~ PCr/lJS~1/OM62 - a "mouse button" area including 3 8ub-icons (left, right, and both), and -- a motion area sub-icon.
2~4.1 MouseMot;on Movement of the stylus while touching the tablet within the motio~ area of the mouse icon generates mouse movement data. The digit~zing tablet provides absolute X alld Y coordinate data. However, only moveme~t i~ used to generate mouse data; touchmg the stylus to the tablet and lifting (without any movement on the surface of the tablet) will generate no mouse movement data. In particular the mouse movement data is the X a}ld Y distance (measured in "mouse ticks") the stylus has moved ~nce (the more recent of) the stylus touched or the last mouse data was sent. For example, a one inch horizontal movement of the stylus on the tablet vrill be converted to the same number of mou~e ticks no matter where the one ~nch motion gtarted;
furthermore, a quarter inch movement repeated four time~ (i.e., four repeats of a horizontal movement, lift and return to 8ame starting position) would re~ult in the ~ame cumulative horizontal mou~e movement data a~ a single oIIe inch moveme~t.
An alternative ~imulated mouse does not include any motion area. Instead, the full tablet area (not used by other filnctions) acts as the mouse motion area.
A filrther alterllative ~imulated mouse can be u~ed with applications that permit special mouse drivers. In this case, mouse data i~ sent that moves the mouse cursor to the location where the stylu~ i~ pointing, thu8, taking advantage of the absolute location information provided by the tablet.
2.4,2 ~ction Button~
2.4.2.1 M~veme~t Scalillg By use of the movement ~caling butto~ in the simulated mouse device, the user can adjust the amount of mouse motion that will be generated for a given amount of stylus motion. The movement Ycaling sub-icon illustrates the culTent scaling factor by means of a bar, as shown in the mouse device icon of Fig. 10. To change the ~caling factor, the user touches anywhere in the scaling bar and drags the stylus to the right or to the left to increa~e or decrease the ~caling factor. ;~

.
~ , .

WO 92~09038 '`~9~ PCr/US~1/0~q62 2.402.2 Mou~e Button Operatioll There are buttons on the simulated mou~e device that simulate tne buttons found on a conventional mouse. However, there are a number of ways in which the operation of the simulated buttons is specially adapted to be activated with a single pointing device, rather than a plurality of fingers.
The mouse button area is divided into three part~. The leftmost and rightmost parts are used to s~mulate the left and right mouse buttons. The center part is used to ef~ect pressing of both buttons together; this capabilityis provided because, while a user of a physical mouse is expected to be able to press both buttons together, the user of the simulated mouse device has only a ~ingle stylus with which to press the buttons.
l~uching one of the button areas causes data to be sent to the application lndicating that the corresponding button(s) has been pr0ssed. If the stylus is lifted within about 1/2 second, data is then sent to the application indicating that the button(s) has been released.
Many appl*ations require the user to hold down a mouse button while simultaneously moving the mouse. To permit a user of the simulated mouse device to perform such simultaneous operations, each of the button areas has the characteristic that if, when activatillg a button, the stylus is held down for more than 1/2 second, the button locks Udown" (i.e., continues to simulate the pressed position after the stylus i8 lif ted); when the user subsequently touches a locked button area, the lock i8 released, returning the siml71ated button to the "up" state (i.e., sending data to the application ~ndicating a button up event).
Whenever a simulated button is "down", the co~Tespondillg area on the simulated mouse device icon is highlighted. When the BOTH area it touched, the highlighting of the LEFI & RIGErr button areas are adjusted accordingly, rather than highlighting the BOTH area. VVhen the stylu is held down long enough in the BOTH area, the LEFT and ~IGHT buttons are locked; they can be relea~qed individually, or by again touching the BOIH area.
2.42.3 Moving alld Sizing The drag and sizing sub-icons operate as de~cribed above for icons in general.
~; .
`;

: ~ . . , - . ". , , ." . , .

;~ , ' .'~' '.,. .' ' . . ,,: , , . , '.', !, .
'" " ' " ' ;', ' " ' '~ "' '",; " ' ' ' ' ~ 1"-, "' WO 92/09038 2 ~ 9 2 ,9 0 ~ PCr/US91/04462 A change in the size of the ~imulated mouse device icon does not change the scale factor that is used to convert tablet data to mou~e movement data; as described above, thiB ~cale factor is separately adju~table by the u9er. The u3er can customize the simulated mou~e device to the needs of the moment.
For example, the user might make ~e icon very small (so as to obscure little of the underlying application) and make the scale factor large, 30 a~ to be ableto easily move the cursor anywhere on the screen even with the ~mall movement area. On the other hand, whe~ fine control is important, the scale ~actor can be made small, so that large stylus movements result in 9ms~11 amount~ of mouse motion.
In an alternative embodiment, the simulated mouse de~rice could be arranged so that when its size is changed, the scale factor i9 automatically adjusted 90 that a stroke across the motion area results in the same amount of mouse motion no matter what the ~ize of the mouse device icon.
2.5 Info Device The in~o device is activated by touching the info button along the ~ide of the diBplay. Thi9 results in ~e appearance on the display of the in~o device icon.
The info button iB an Ualternate action blltton: touching it a second time putsthe info icon away again.
The info device include3 ~ ub-icons, five of which are active:
--te~t area for display of the information te~t, - drag, - size, --previou~ ~creen, - negt screen, and - home screen.
When the done sub-icon is touched, the info icon is removed from the display and the highlighting i9 removed from the info button.
The info icon can be moved on the display by u3e of the drag sub-icon, in the same way as for other icon~.

:

- , , ;; ~
- . - : ;, . ..

WO 92/09038 ,~ 48- PCr/US91/04462 Whell the info dence is activated text expla~ning how to use the info device is displayed ~n the text area. Some of the te~t is highlighted to indicate that it is as~ociated with a pointer to another place ~ the help text. ~3electing w~th the stylus one of these highlighted portions of tegt results in jumping to the te$t identified by the associated pointer. The 3equence of jump~ through the te~ is recorded so that the user can "back up".
The next screen and previou3 screen buttons permit the u~er to move wit~in the cu~rent body of text and to back up through text prev~ously displayed.
The home screen button permits the user to go directly back to the first screen.
Disk files for text are accessed by the ~nterface processor by means of the datalink to the mam processor.
.. . . .
2.6 Additional Simulated Device~

From the above-described example3, one skilled in the art will appreciate the utility of ~imulated devices. In a manner similar to that described.above, one could implement additional simulated dences, ~or example, a simulated trackball, a silmllated 3-dimensional pointer, or a simulated joystick.
There are even advantages to a simulated tablet device. When one uses the present invention with a tablet that overlays the display screen, one particular correspondence between tablet data and screen data results in screen position tracking the location of the ~tylu~ (i.e., one set of X and Y ~cale factors and o~sets). This correspondence will not generally be that used by any particular application, in which case stylus and screen positions will ~ail to *ack each other, presen*~g to the user a distraction not present when the tablet does not overlay the display screen. Thus, even when po~ting is being generated by an actual tablet, there may be advantage in ru~ing an application with the simulated tablet device, rather than using the physical table directly.
Such a simulated tablet device would be similar to the simulated mouse device, except that absolute positions within the table area would be sent, instead of relative motion. Another dif~erence between the simulated mouse and the tablet devices is that, for the tablet, it may be uqeful to include X and ~,.

:~`
. .

" , ,.

'~` ~ ,' ' ' ' ` ' ' ',~ '', ' ' ' " :.'' 92/09038 PCr/U~91/04462 2 ~ 9 2 ,~
Y off~et adjustment~ (i.e., to determ~ne which portion of a complete tablet the tablet area is simulating~ in addition to ~caling.
2.7 Direct Ta~let ~ put to ~pplications There is a provision for making tablet data directly available to an application (not from the simulated tablet device, but ~om the actual tablet~.
Tablet data that is in the ~creen area, but not in a ~imulated device, iB
available to be sent to application~ running in the main proce~sor na the datalink protocol discu~sed abo~e.
Tablet data sent to the application is scaled BO that an application can easily relate tablet coordinatss to screen position3. Tablet point~ in the button area are detected before the data i9 sent to the application; thus, functions buttonsmay continue to be active.
2.8 U~erInterfac~CalLledbyan~pplicat;on Although the user illter~ace subsystem i3 designed to be invisible to applications, application~ that are de3igned to know about the user interface subsy~tem can obtain 30me additional benefit~. Provi~ions can be made for an application to invoke user services provided by the user i~terface sub~y~tem. An application running in the main proces~or can make a particular call, which causes the main proce~sor to pass a code to the i~terface proce~sor, identif~ying the ~erv~ce to be performed. For example, i$ i~
desirable for certain applications to be able to force certain simulated devicesto appear and disappear at appropriate times.
Further9 via datalink protocols by which the main processor ca~ determine the current state of the simulated devices and by which the main proces~or r ` can set the state of the simulated devices, a program for the main processor can save and restore simulated device configurations that the user finds particularly usefi~l. Thi~ state information includes: contrast setting, position and size of each device icon, on/off state of each device icon, aIld various icon state values (e.g., num-lock, mouse scale value, handvrriting icon box size, keyboard configuration).
The ability to save user interface state per~it~ the user to set the sy~tem 80 that, when it i3 started, particular devices are sized and located on the ~, ,; , - . . . .: ,, .,. , .. . , , : ... .
:; . ; - -wo 92/09038 ,~ P~/US91/04462 di~play according to the user's preferences. Thi~ al90 permit~ the u~er to quickly setup certain frequently u~ed configuration~.
2.9 Example of Mai:~ Proce~or Alpplicatlon I:~teractio with I~terace Proce~sor In a sy~tem in which Free~tyle i~ the only application using tablet data, Free~tyle can be invoked by the u~er touching the tablet with the stylus.
l:Iowever, when used with the simulated devices iIlterface, a3 mentioned above, the Freestyle application can be started by touching a particular button area.on the tablet. This can be accompli~hed by the following mechanism. When the system is initially booted, a reside~t portion of Freestyle i~ loaded on the main proces~or. At this time Free~tyle, by mean~ of a BIOS call, registers itself with the main processor BIOS as desiring to receive tablet data from the interface processor. Further, Freestyle communicates with the 3imulated devices Lnterface (by mean~ of BIOS calls that utilize the datalink to the interface proces~or) to indicate that tablet data should be sent after the Freestyle icon ha~ been touched. Thus, when the ~imulated device~ interface determines that the Freestyle button hag been touched, it will then send tablet data, which will cause the resident portion ofFreestyle to invoke Freestyle; the ~imulated devices interface could also invoke Freest y1e by sending the appropr~ate keycode~ to the ma~n proces~or, such as s~mula1ing the s~multaneous pres3ing o~both shift keys (a key combination commonly used to invoke Free~tyle). When Freestyle proce~sing is completed, it communicates with the simulated devices interface indicating that no more tablet data should be ~ent to Freestyle unti! the button i8 again touched.
2.10 Simulated Devic~ ~plementat;oll ~

.; Fig. l1 illustrates relationships among the tablet 12b, the display 12a, and certain ~oftware components.
A user will interact with an application program 200 running in the main proces~or 3û (Fig. 2) by using the tablet 12b and the display screen 12a (w~ich in the preferred embodiment are overlaid as shown at 12 in Fig. 1).
Although block 200 is identified as 'sApplication Program", it represents any ' , , "
. .,. :. . : , . : .. ... : .. .
- . . , - ,, :. i: , ., ~, ~-, , , , :: .
, . . ,; . ,. . ,, - . . . .
; '.: ' 'i ' ' i ~ ' wo 92/09038 -51- 2 ~ 3 ~ ~ ~ t,s PCI/US91/04q62 program (including system programs) with which a user may wish to interact via the tablet and display.
The sL~nulated devices described above are effected by a body of software 220 ruIming in the interIace processor and indicated in Fig. 11 as the aSimulated Devices Program". The simulated devices program include~ components 222, 224, 226, and 228, which correspond to the Yarious simulated devices. ~is body of software 220 uses the display 12a to pro~ide visual ~eedback to the u~er by writ~ng data to the ink and mask pla~es 42 and 44 (Fig. 2).
Data from the tablet 12b is proce~sed by the simulated device~ program 22~, which, in response thereto, generates data, typically m the form of keystrokes or mouse data. This data is provided to the application program 200, by means of communication ser~ice~ 210 that include 3ernces provided by the ma~ processor's BIOS 212 and services provided by the interface processor's firmware 214. Although ~ot indicated ill Fig. 11, low level interaction with the tablet i~ handled by routines in the interface processor'~ firmware;
however, primary tablet control is effected by the simulated devices program.
The followi~g outlille illustrates the relation~hip among C functions in an iLlustrative embodimeIlt of the simulated devices. The functions li~ted at one level in ~e outline are used to implement the fi~ction preceding them at the ne~t outer level of the outline. Some of the flow control information is also included in the outli~le. One skilled in the art will appreciate and be capable of addre3sing the fi~er details involved in implementing software components of a system such as de~cribed herein. The organization of the software desc~bed in the outline i8 illu~trat*e, and one ~killed in the art willappreciate that many variation~ are po3~ible given characteristics of particul~r system~ alld differences ~n stylLe among software developers.
The term "pell" is often used interchangeably with "stylus", as i~ the ca~e in the follovving outline.
The digit preceding each item in the outline indicate~ the outline level of the item.
user_interface() this is the simulated devices user interface. Do for~ver:
~ Wait for next point from tablet.
Do nothing if it is not a peIl-down point.
;

.

; , ,.~ . : .
.. . . .. . . .

W092/09038 c~ PCr/US91/0~462-~

o If in function buttons, then do function button proce~sing s~d then wait for pen up.
If in a simulated device icon, then do the icon function (e.g., start_mou~e_icon); icons are checked frorn top to bottom to see if the point is inside the icon's boundary.
If down but not in any icon, then wait until pen up (to avoid motion into an icon).
If up, or if down and not in any simulated device icon, optionally send the point to the main processor.
2 ttlpoint(~ get a point from the tablet; the tablet position is returned in two forms, one of which is in pi~els and the other of which is at the tablet resolution (which is higher); the tiIne of the tablet data is also ~ ` ~ returned. While the higher resolution coordinàte~3 are more ~uitable for operations such as hs~dwriti~lg recognition, pixel coordinate~ are more convenient for many screen-related operations. Rather than wait ~or a point from the tablet, this function will return an indicatio~ that data is not available.
2 check_button_bo~es() do the function buttons (e.g., pull out the device tray):
See if the cursor i8 in the function strip; if not, return.
If in area of the "device" button, the~ ~elect_device~().
If Ucontrast" button, then adju~t ~creen contrast.
If Ufireestyle" button, then launch the freestyle applicatio~.
If "info" button, then ;f info icon not already act*e, activate it, otherwise deactivate it (i.e., erase from ~creen and remove from icon stack).
3 if in "device tray button":
4 ~elect_de~vic~s() processing for the 'Sdevices" button; it alternates between two states: touching this button the first time actirates the devices tray; touching the button a second time deactiYates the devices tray.
6 when c3hangiD~g firom sta~mp~ to iCOllS (put the device tray away):

- :`'` : , ~ ` ' ,"' ,:',,, , ;' ,, :': :: , '~ ' :
'' :' ' :: , . : , .. : .. ... . ... . . .

WO 92/0~038 ~ ~ 9 ~ ~J ~ 3 PCr/USs1/Oq462 --53~
~election_done() this i9 done when the user has completed selectioll of device~ from the tray; this removes the dev~ce tray from the display.
;` ~ 7 eraseicoIls() clear all ~tamps and any icon~ from the display.
7 erase_device_tray() remvve the visual con$ainer for the ~tamp~.
7 removeicon() remo~e any ~tamp ~rom the icon stack that is located in the de~ice box.
7 ~wapicons_and_~t~nps() the s~amps remaining on the stack are exchanged for icons (on the icon stack).
7 drawicons() draw all icons and ~tamps on the icon stack (i.e.~ that are active). Performance may require - only redrawing tho~e iC0I15 that actua~ly overlap"lot - -' just all icons that are logically underneath a moved icon. ~`
~ whe~ cha~ging from icons to ~ta~nps (pull out the device - tray):
~ erase_icon~() getridofthefi~ sizeicon~.
`' 6 swap_ico~_a~d~ ) adju~t the icon stack to have stamps in~tead of icon~.
`~ 6 dr~iw_device_tray() draw the tray for available desrice~
tamp form).
6 displ~y_cmTe~t_s~a~p~() draw~e ~tamp~ ~
(MOUSESTAMP, KBDS~MP, '` 7 ~ompuLte_~ta~mp positio~() sta~p position i~ in the device tray for inactive icons, and at the icon poBitioIl if - theiconwas active.
. .
`~'`.' ` 3 suck_touch~;po~ts() if the pen is i~ contact with the tablet, `; discard tablet data until the pen i8 li~ed (optionally send points to ma~ processor).
3 if in "con1;ra9t" button: adjust contrast of LCD display up or down depe~ding upon which portion of the contrast buttoll the 3t~l11S iS
~ touching.
:. 3 iI~ ee!9tylebut~ n: wakeup Freestyleapplicationinmain processor.
~- 3 iin"info"bultton:

' `, " ' ' ' . ' ' ' `. '.' . ' ', ' ' ' ' ' . 1 , ~ ' ` ' " , , .' , ' ' '` ' ' ;'` ' ' ~ ' ` ' ' ' wo 92/09038 ~ ~Q~ PCT/US91/04462 4 if i~fo not active start it:
6 add_icon() 6 dlaW_i~lfOiCOn() 4 if info already active put it away:
6 move_icon_to_top() 6 era9e_illi~0_iCOn() 6 rel~loveico~() 2 i9_in~handWiCOIl() 3 point_~n_recta~gle() 2 start_hand~ 0n() do the handwriting icon.
3 moveico~_to_top() returns indication of whether the icon i3 already drawn on top, this is used to a~oid redrawing for a drag or resize operation (or, in the case of the keyboard, a reconfigure operation, rather than resize operation), because these operatio ns will display a ~hadow that will be changed in ~ize or location i~tead of the filll ico~.
3 is_i~_writehandw() - ~ write_handw() ha~dwrite andrecQgllize characters. Called onfir t point of a ~troke in handwriting area.
4 capture_one_strol~e() read points from tablet, until stylus is li~ed; add all those pOiIlt~ to a buf~er of ~troke~. ~
4 compute_stroke_bo~:~) determine the "bog for the most recently added stroke in the ~troke buf~er.
- 4 ~u~h_lha~dw_s~okes() ifthenewstrokeisdetermillednot actually to belong in the writing area (e.g., the writer touches down in the writing area, but move~ out of t~ writ~g area), then perform recog~ition on any prior strokes in the buffer, throw this new stroke away, and return.
4 compute-~troke_lbo2c_e~teIIt~() if the new stroke is very wide (e.g., more than 3 character boxes wide), corlsider it to be a~
era~e mark. Era~e it~ ink. Convert t~e ASCII characters it covers to blallks. Throw the stroke away. Return.
4 dump~>re Jious_strokes() if this stroke is ~ a different "box"
than the previous ~troke~ in the stroke buffer, perform recognition on those prior strokes, throw them away, and make this new ~troke the only buffered stroke. Note that stroke . - -.. . ........... . ,:, . :: :-.... . - . .;

- ~............ .. . ., ...... ,,.,.,~" , .
:.. : .. .: ,, , , :: . , ,., :, . . . ;

wo 92/09~38 2 0 9 2 ~ Pcr/us91/l)4462 segmentation need not rely on actual boxes; "bo~le~s"
se~nentation methods are available.
4 check_timLeout() wait until one of the ~ollowing conditions occurs:
the user has not touched down for a timeout penod.
^ the user has touched down, aga~n; but not in the writing area.
In the preceding two ca~es, perform recognition on all buffered strokes, throw them away, and return.
$he user has touched down in the w~iting area. In this case, just ret~rn (the next îteration through a higher-level loop ~, will call write_handw() again).
3 i9in~ agha~ldw(~
3 drag_handw() ',` 4 drag_iconO drags the icon until the pen is lifted.
6 dl'aW_haIldWiC011() 3 is_i~_~izehaIIdw() Is the pen in the ~ize area?
3 resize_handw() `- 4 re8~zei~ 0~
5 draW_halldW_iC011() `;~` 3 i9 i~ erthalldw() Is the pen in the insert area?
- 3 insert_handw() insert blank~ in the series of haIldwritten characters.
4 fiu~h_halldw() perform recognition on a~y pending buf~ered strokes, aIld t~row them away.
4 ~et the cur80r to a "tool modal" cur~o~ to show the user that the i~sert mode is active.
4 suck_to~ch poinLts() wait for the user to lift the stylus.
4 i~uck_pro~c_point~() wait for the u~er to touch down again.
4 is_~_writehandw() if the user's touch i~ outside the writing area, set the cursor back and return.
4 ~hile the 9tylu9 i9 touching if the user move9 light from the i~tial position move the characters/boxes from the ~ point rightwards to the . - ,. .,. . . . . , ,:

WOg~/09038 ,~ 56- PCI/US91/~4462.

right end of the writing area, and fill in opened space with blanks.
if the u~r moves left f~om the initial position move the characterslboxes from the ~tylus point lei~wardr. to the left end of the writing area, and fill in opened space with blanks.
4 a~ter the u~er lifts the ~tylu~ return (the user ha~ created open space in which to write).
3 isi~_deleteha~aw() I~ the pen in the delete area?
3 delete_handw() delete from the handwritten characters.
., 4 ~u~h_~dw() perform recognition on any peIlding buf~ered strokes, arld throw them away.
4 set the cur~or to a "tool modal" cursor to show the user that the delete mode i~ active. - -~; 4 ~uck_touch ~points() wait for the u~er to liPt the stylu~.
4 suck pro2~_poi~ts() wait for the u~er to touch down again.
4 i~in_writehandw() if the u~er's touch i~ out~.ide the writingarea, ~et the cur~or back and return.
4 while the 9tylu8 i~3 touchillg highlight all boxe~/characters the user move~ the ~tylu~ through.
4 after u~er lift~ the 8tylu8 remove all bo~es/characters the user ~` highlighted; ~croll character~/boxe~ from the right end of the , writing area a~ needed to replace l~he deleted bo~e~.
~` 3 is_ill_8crollleft() I~ the pen in the scroll area?
3 is~ crollright() Is the pen in t~e scroll area?
a scroll_handw() Scroll characters in handwriting area.
~` 4 erase_handw_ink() Erase ink, eliminate buffered-up stroke poi~t~.
4 display_handw prompt() Display ~croll prompt.
4 illitialize repeat~) 4 eraae_w~it~g_area() 4 d~aw_writiIIg_a~ea() - ~ clear_~d~_prompt() 4 wait gor_repeat() Before auto-repeating, wait the appropriate time interval.
4 i5 pro~c() If pen i~ up, we are all done.
4 U9Q higher ~peed repeat :Keep track of how often we have repeated; after 4 tl'le9, ~tart repeating the 9CI'Ollillg fagter.

,i ,,, , , " , ", ",, ; " " ;, ,, "

WO 92/09038 ,~ ~ 9 .~3 ~ Ij 3 PCI-/VS91/0'1462 6 initialize_r~peat() 3 is_in_adjuxthandw() Is the pen ~n the adju~t area?
3 ad~u~t_ha~aw() adjust the width of the boxes into which character~ are written.
4 erase_handw_ink() Era~e ink, eliminate buffered-up stroke points.
4 Highlig~t_Bo~) Highlight adju~t box.
4 display_handw_prompt() Put up prompt.
4 Outl~ne_~ectangle() Highlight rightmost box a~ a reference marker.
4 Read point~ a~ lo~g at ~he pen is dow~:
6 skip_to_current_tablet_data(~ Catch up with tablet.
. _ . . 6 ttrpoint() 6 i9_pro2c() If pe~ i~ up, we are all done.
6 compute ~lew bo2c width x movement of pen i~ the change in the total width of di~played boxe~; width of one box i~ total / bo~c_count. Do not go below a minimum ~ize, or above a ma~imum.
6 Outline_Rect~gle(~ U~-highlight nghtmost box.
6 er~ge~ ~g~ e~() 6 compute_handw_locatio~() 6 dxaw_~t~ng_bo~ces() Redraw bo2ces.
~ Outline_Rectangle() Highlight new right~nost box.
4 clear_~dw_~rompt() 4 Highlight_Box(3 4 Outli~e_Recta~gle() 4 era9e~ dwiconL() ~ draw_handw_icon() a i~_in_se~dhandw() Is the pen in the send area?
3 ~end haDd~v() 4 display_ha~dw prompt(3 4 eraee_handw_~() Erase ink, eliminate buffered-up stroke points.
4 Send all characters: only send those characters between the leading and trailing emp~r boxes; if the line was empty, send a camage-return.

. . ~ . - , . . . . . . .. . .

W0 9~/0903~ 3 -58- PCr/USgl/04462 -6 a~cLi_to_~c~
send_keycode() ~ disable physical keyboardl.
6 send keycode data.
6 enable physical keyboard.
Redi~play: reset the off~et of the 8~011 window back so the O'th bo2c is displayed a~ the first box.
`` 6 draw_writing_area() `` 3 i~_in_upperha~ w() I~ the pen in the upper-ca~e area?
3 upper_handw() Determ~ne the set of characters from which the recognizer will 3elect (upper-case alphabetic).
4 ~et_raco~ition_subset() ~`` 3 is_in_lower~a~dw~) Is the pen in the lower-case area?
3 lower_handw() Determine the set of characters from which the `~ recognizer will select (lower-case alphabetic). ~` 4 set_recognitio~_sub~et() 3 is~ umer~ w() Is the pen in the numeral-ca~e area?
`'` 3 ~ ha~ldw() Determine the ~et of characters from which the reco~er ~;vill select (numerals and plL~ctuation).
4 ~0t_recogllition_sul~let() 3 su~k_touch~poiIIt~() Do nothing more until the pen i~ lifted.
. 2 i~ mouse_i~so~
3 poillt_ill_recta~gle() 2 start_mou~eico~() dothemou~eicon:
Redraw on top unles~ in drag or size areas.
Do fimction depending upon area (e.g. j drag, size, buttons, motion).
Wait lmtil pen up.
3 moveicon_to_top() in addition to moving the icon to the top of the stack (but does not redraw the icon), it return~ aD indication of whether the icon is already drawn on top; this i~ used to avoid redrawing ~or a drag or resize operation (or, in the case of the keyboard, a reconfigure operation, rather than resize operation), .

: . ,, . . , ~,, ,.,, ., :
: ' ' :: , : . ' ' ,, ' ' . .,': ':': ' .',"; ' ,;.,:, :' , ; .

WO 92/09038 _59_ 2 ~ ~ ~ 9 ~ ~ Pcr/US91/04462 becau~e the~e op~rations will di~play a ~hadow ~hat will be changed in size or location instead of the full icon.
; ` 3 ig~ dragmou9e() 3 drag_mouae() 4 drag~co~) drags the icon until the pen is lifted.
6 draw_m~ouse iCo 3 is~ ~zemouse() 3 re~ze_mou~e() 4 res~a:e_lcon() 6 dr8W_InOU8e_iC0110 s is_in_~calebar() s scale_mou~e() pen movement in the :~ direction changes the tablet-to-mou3e scale factor: scale length is changed by amount of pen movement in the x direction (and then ~orced witbin min and max limits); pixels-per-tick is computed as ma~-pi~el~-per-tick * (ma~-length - current-length)/ma~-length (and also ~orced within a min and ma~c range).
4 d;splay mouse 8Calillg prompt 4 aO for all pen d~wn points:
6 skip_to_curre~t_talblet_data() 6 t~rpo~t() pro~:() break out of thi~ loop when the pen i~ lifted.
6 compute new value~ scale length a~d pixels per tick are each computed based on ~c movement.
6 co~plement_~cale_bar() erase the current scale bar.
6 compute_mouse_location() update the mouse location parameters, including computing a scale length back from the pixel~-per-tick.
6 complemellt_~cale_bar() draw new scale bar; scale bar grows towards the rig~t (i.e., is leftjustified withi~ the space allotted for it).
~ clear_mouse.~prompt(~
3 is_in_leftbutton() 3 i~_in_rightbuttoll() 3 i~_in_bothbut~o~() 3 button_mouse() handle pen touch in any of the 3 button areas:

: , - , - , , . " ., ;:, , , ,. " , ;- ; .

., : ', ~,;'', ' ' ~' ' ' """"'' ' ~,' " '., ' , W O 92/0903X ~ ^3 PC~r/U591/04462 -~
~ ~60-An action on a button that is ON ju~t turns that button OFF
and returns.
An action on a button that is OFF turns the button on and also checks for a click by calling timed_button_click(), which blocks until it is determined that the pen has been down long enough that this cannot be a click.
Note the differences between pen action and comparable button action:
- A short button press is a click. ~ long button press is a long button press, that still ends when the button is released.
- A short pen touch is a click. A long pen touch leaves the simulated button locked down; a subsequent touch of any ~length releases the simulated button.
4 compleme~t_leftbutto~
4 complement_~ightbutton0 4 timed_button_~liek() if the button is not on, wait to see if time to pen lift is short enough to be considered a request for a click.
3 i9illl_1110U8e_1111011~e() 3 m o~lse_ m ouseO hauldle the mou~e motion portio~ of the mouse icon. Distance i8 computed (each time) in tablet points (more accurate than mouse tick~).
di~play the mou~e prompt.
optionally, save a copy of the mouse icon.
set old ~c & y tick~ sent to 0.
do until pen up: ~
- skip old tablet data and then get ne~ point.
--measure from original touch to current location in mouse ticks.
--compute ticks moved since touch down or since last move sent (subtract old x & y).
- send mouse movement data as if fro m mouse.
- set old x & Y to current location.
4 display mousemoveme~tprompt .

WO 92/09038 2 0 9 ~ pcr/us91/o4462 4 BitBlt_Pi2c_to_1~qem~) ~a~e a copy of the mou~e icon. This function is only neces~ary in an implementation that does not use a hardware ink plane, in which case thi~ function provides improved performance.
4 do or all pen down point~:
6 skip_to_cl~rrent_talblet_data() 6 ttrpoillt() 6 is_~ro2c() break out of this loop when the pen is lifted.
peDL-to-mouse-tick algorithm convert from tablet distance to mou~e ticks. 1~ guarantee any path starting at one stylus position Pnd returning to it will add up to total mou~e motion of zero, scaling is done on tablet coordinateR before conversion ; from absolute (tablet) to relat*e (mouie) motion.
6 send mouse data to main procesRor.
4 clear_mouse_pro~pt() 3 ~uck_touch_point~(~
2 i~_in_~bdicon() 3 point~ rectalIIgle() 2 start_klbd_ico~(l do the keyboard icon.
3 moveico:ll_to_top() retuln~ indication of whether the icon i~
already ~lrawn on top; this l9 used to avoid redraw~ng for a drag or resize operation (or, in the case of the keyboard, a reconfigure operation, rather than resize operation)1 becau3e these operations will display a ~hadow $hat will be changed in size or location in~tead of the full icon.
3 erage_kbd_icoll() 3 draw_kbd_ico~A() 3 is_in_drag_3ection() 3 drag_kbd() 3 is_in_config_~ection() 3 coIifig_kbd_ico~() configure the keyboard.
4 sa~e keyboard icon location so that the user can modify the configuration and not need to repositiorl the keyboard after making the modification.
4 save_old~ () save positions of the irLdividual keyboard ~ections.
4 I emoYe_icoll() ' ' ' '' ~ "'. " ' ~ ~, ' :
.
:, .

wo 92/09038 ~ ~,3 ~cr/usgl/nM62 C~J 1~ -62-4 i~lt_l~ig_editorO
4 conf igure_kbd() 4 restore keylboard X & Y location value~.
4 kbd_co~fig_done() resize keyboard outline.
3 i~_in_vpf9ection~ ) 3 i~3_in_hp~SeCtiO~l() 3 isin_kbdsectio~() determine whether the point is in the main keyboard sectioIl of the keyboard icon.
4 point_in_rectangle() 3 is_in~ ection() 3 i8in_num~3ection() 3 i~_in_edt9ectio~
3 filld_key() determine keycode based on pen locatioI~ in relevant portion of the keyboard icon. Given a point, return a key number:
In which major part of the keyboard is the point located (e.g., fu~ctioII keys, alphabetic keys, numeric keypad, cursor control)?
c Within the identified keyboard part, a binary search is used to determine in which row the point is located.
Within the identified row, a binary ~earch is used to identify the particular key.
The key number is ~hen used as an inde~ into a table that illcludes keycodes and key outli~es.
3 type_key() 4 Fill_Recta~gle() XOR key to show it is hit.
4 switch_to_~can() take~ a key switch number and converts it to a make/break code pair from scancode set #2.
6 9call2_to_9ca~
~ convert 221() 4 for i~nslividual ~ t keys send a makecode or a breakcode, depending on the relevant shift state.
8 send_a_code0 4 typematic~) process non-shif~ keycodes, implementing accelerating typematic action.
6 ~end_a_code() : ~ :

WO 92J0903~ 2 ~ 9 ~ ' P~r/US~1/04462 4 F;11_1Rectallgle() unle~s the key i~ a lock~ng key, complement the display of the key, again.
3 suck_tou¢h~poin~s() 2 igini~lfoicon() 3 poi~t_in_recta~gle() 2 start~ o_icon{) do the info icon.
3 Redraw iCO~l (except for drag and re-size) 4 move_icon_to_top() 4 erage_il~foicon~) 4 ar~llW_lI~O ico~() 3 i~_in_draginfo() I it1n the drag area~
3 dl~agillfo() 3 i~in_~izeinfo() Is it in the size area?
3 resize_illo() 3 i~ previou~_info() I~itinthepreviou~-help area?
3 previous_in~ () Back down vne level in the file ~tack, and bring up that info file.
4 draw~ o_te~(~
3 i~_in_Ycroll-up() I~ it in the scroll up area?
3 8croll_up_i~fo() Scroll in~o text 1 line.
4 wait_for_repeat() implementtimedauto-repeat.
3 i9_i~1_9CrO~ OWIl() I3 it in the ~croll down area?
3 scroll_down_in~o() Scroll info text down 1 line.
4 ` wait_~or_repeat() impleDl~nt timed auto-repeat.
3 is_in_home_i~o() I~ it in the home-info area?
3 home_i~o() Go to the base of the info file stack.
4 draw_i~lfo_te2ct() Display that info file.
3 i~_in_info_info() I~ it in the info-menu area?
3 info_i~o() link to referenced info te2~t. If the pen is not located in a current re~erence item, do nothing.
4 ~or each curra~t reerence item:
6 point_in_re~tangle() Is the pen in the reference item?
4 IiE reference i9 to the home file uIl~tack eveT;ything.

W092/~o038 ~ 7,3~3 Pcr/US91/0446 3 ~uck_touch points~) 2 is_~n_mouse_stamp() 3 point~ recta~gle() 2 is~ kbd_stamp() a po~nt~ rectallgle() 2 is_in_handw_stamp(~
. 3 point~ rectangle() 2 dev_drag~art() drag stamps.
I suck_touch ~oint~() The foregoing has described a ~pecific embodiment of the invention.
Additional variation~ will be apparent to those sl~illed in the art. For e~ample, the particular embodiment described in detPil i~ a portable computer with a tablet overlaying the display ~d provision for "electronic inkn; however, one skilled in the art will appreciate that the present inYentioni3 also useful in systems where the tablet (or other point~llg device) is Ilot u~ed on the display, where a type of locator device other than a tablet is u~ed,and in systems that are not intended to be portable. Thus, the invention is not limited to the specific detail~ and illu~trative e~ample shown and described in thi~ specification. Rather, it i3 the object of the appended claimsto cover all ~uch variations and modification~ as come within the true spirit and ~cope of the invention.

Claims (15)

We claim:
1. A computer system for running pre-existing programs with a stylus, the system comprising:
(A) a main processor for running a pre-existing program;
(B) a pointer-type input device;
(C) a keyboard port emulator connected to the main processor;
(D) a display device;
(E) a main display buffer connected to the main processor for storing data received from the main processor representing a main image (F) an overlay controller for providing data to the display device so that an image is displayed on the display device that is a combination of the main image and a second image.
(G) an interface processor, the interface processor being connected to the keyboard port emulator by means of which the interface processor can provide input to the main processor in a manner that the main processor cannot distinguish from input from a standard keyboard controller, the interface processor also being connected to receive pointer data from the pointer-type device and being connected to the overlay controller to provide data representing the second image.
2. The system of claim 1 in which the interface processor is arranged to provide to the main processor mouse data such that the main processor cannot distinguish this mouse data from mouse data received from a standard keyboard controller.
3. The system of claim 1 further comprising an interface program directing the interface processor to accept input from the pointer-type input device, provide visual feedback to a user, convert input from the pointer-type device into keystroke data, and make the keystroke data available to a program running on the main processor.
4. A computer system capable of running pre-existing keyboard-based programs from tablet input instead of a physical keyboard, comprising:
(A) a main processor for running the pre-existing programs, (B) a digitizing tablet and stylus, (C) a display screen, (D) a first display buffer connected to receive display data from the programs running on the main processor, (E) interface processor, including means by which the interface processor can emulate (with respect to the main processor) a standard keyboard controller, a second display buffer connected to received display data from the interface processor, (F) a display multiplexer for providing data to the display screen that is a combination of data from both the first and second display buffers.
5. The system of claim 4 further comprising means for connecting an optional physical keyboard, and in which the interface processor emulates (with respect to an optionally connected physical keyboard) a standard keyboard controller.
6. The computer system of claim 4 in which the second display buffer includes an ink plane and includes a mask plane, and in which the display multiplexer combines, on a pixel-by-pixel basis, data from the first display buffer with data from the ink plane according to data in the mask plane.
7. The computer system of claim 6 wherein second display buffer comprises a plurality of memory chips and further comprising memory access control circuitry connected to the interface processor, to the memory chips, and to the display multiplexer and controlling access, to the memory chips, such that the interface processor can access the ink plane data as one continuous, block of data and the mask plane data as a second continuous block of data.
8. The computer system of claim 7 wherein the memory chips each include a plurality of multi-bit memory locations, the memory access control circuitry being arranged to store ink and mask data in alternating locations.
9. A computer system comprising:
(A) a main processor for running pre-existing programs;
(B) an interface processor;
(C) a pointer-type input device that provides input signals to the interface processor;
(D) a keyboard port emulator connected to the interface processor and to the main processor and by means of which the interface processor can provide input to the main processor in a manner that the main processor cannot distinguish from input from a standard keyboard controller;
(E) a display device;
(F) a main display buffer connected to the main processor for storing data representing a main image;
(G) an overlay controller for providing data to the display device so that an image is displayed on the display device that is a combination of the main image and a second image provided by the interface processor.
10. The system of claim 9 further comprising a first display controller for reading the main display buffer and producing a first stream of display data, and wherein the overlay controller includes a user interface display buffer, includes a second display controller for reading the user interface display buffer and providing a second stream of display data, and includes a multiplexer for selecting on a pixel-by-pixel basis data from either the first or second stream of display data and sending a resulting multiplexed display data stream to the display device.
11. The system of claim 10 wherein the user interface display buffer includes storage for mask plane data and further comprising means by which the mask plane data is provided to the multiplexer to direct the multiplexer's selection.
12. A computer system for running pre-existing programs with a stylus, the system comprising:
(A) a main processor for running the pre-existing programs;
(B) a display screen;
(C) a pointer-type input device for generating pointer data;
(D) an main display buffer for storing data representing a main image generated by the pre-existing programs;
(E) an ink plane buffer for storing data representing a second image to be overlaid on the main image;
(F) a mask plane buffer for storing data indicating how data in the ink plane buffer is to be combined with data in the main display buffer;
(G) a display multiplexer for receiving data from the main display buffer, from the ink plane buffer, and from the mask plane buffer and for providing data to the display screen to generate a display that is a composite of the main image and the second image;

(H) means for receiving pointer data from the pointer-type device, providing, to a user of the computer system, by means of the ink and mask plane buffers, feedback concerning the user's manipulation of the stylus.
13. The system of claim 12 wherein a user interface facilitating the adaptation of pointer input into keystroke input is presented on the display screen by means of the ink plane buffer and the mask plane buffer.
14. A system for running pre-existing programs, such programs being arranged to receive input from a keyboard and to provide output on a display screen and not arranged to receive input from a digitizing tablet, and for providing input to these programs from a digitizing tablet, the system comprising:
(A) a main processor for running the programs, (B) a display screen (C) a digitizing tablet for generating X-Y coordinate data, (D) an interface processor including (1) means for receiving X-Y coordinate data from the tablet, (2) means for converting X-Y coordinate data to keystroke data, (3) means for presenting the keystroke data to the main processor as if the keystroke data was being presented by a standard keyboard controller, (4) means for generating user interface display data, (E) overlay means for combining the user interface display data generated by the interface processor with display data generated by the pre-existing programs and presenting the combined result on the display screen.
15. The system of claim 14 wherein the display data generated by the pre-existing programs is stored in a main video memory, and the overlay means comprises:
(A) an ink plane video memory, (B) a mask plane video memory, (C) a video multiplexer for selecting on a pixel-by-pixel basis based on data from the mask plane video memory, whether to refresh the display screen with data from the ink plane video memory or data from the main video memory.
CA002092903A 1990-11-13 1991-06-20 Computer with separate display plane and user interface processor Abandoned CA2092903A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/613,325 US5260697A (en) 1990-11-13 1990-11-13 Computer with separate display plane and user interface processor
US613,325 1990-11-13

Publications (1)

Publication Number Publication Date
CA2092903A1 true CA2092903A1 (en) 1992-05-14

Family

ID=24456853

Family Applications (1)

Application Number Title Priority Date Filing Date
CA002092903A Abandoned CA2092903A1 (en) 1990-11-13 1991-06-20 Computer with separate display plane and user interface processor

Country Status (7)

Country Link
US (1) US5260697A (en)
EP (1) EP0557284B1 (en)
JP (1) JPH06501799A (en)
AU (1) AU658574B2 (en)
CA (1) CA2092903A1 (en)
DE (1) DE69113478T2 (en)
WO (1) WO1992009038A1 (en)

Families Citing this family (234)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5442742A (en) * 1990-12-21 1995-08-15 Apple Computer, Inc. Method and apparatus for the manipulation of text on a computer display screen
US5848187A (en) * 1991-11-18 1998-12-08 Compaq Computer Corporation Method and apparatus for entering and manipulating spreadsheet cell data
US5880411A (en) 1992-06-08 1999-03-09 Synaptics, Incorporated Object position detector with edge motion feature and gesture recognition
US7532205B2 (en) * 1992-06-08 2009-05-12 Synaptics, Inc. Object position detector with edge motion feature and gesture recognition
US5708840A (en) * 1992-06-29 1998-01-13 Elonex I.P. Holdings, Ltd. Micro personal digital assistant
US5583543A (en) * 1992-11-05 1996-12-10 Sharp Kabushiki Kaisha Pen input processing apparatus
JP2601987B2 (en) * 1992-11-13 1997-04-23 インターナショナル・ビジネス・マシーンズ・コーポレイション Personal communication device
US5612719A (en) * 1992-12-03 1997-03-18 Apple Computer, Inc. Gesture sensitive buttons for graphical user interfaces
JP3025121B2 (en) * 1992-12-24 2000-03-27 キヤノン株式会社 Information processing method and apparatus
US5572655A (en) * 1993-01-12 1996-11-05 Lsi Logic Corporation High-performance integrated bit-mapped graphics controller
US5453762A (en) * 1993-01-20 1995-09-26 Hitachi, Ltd. Systems for processing information and identifying individual
US5594848A (en) * 1993-02-16 1997-01-14 Compaq Computer Corporation Method and apparatus for efficiently determining line segments within a window using iterative halving
US5598524A (en) * 1993-03-03 1997-01-28 Apple Computer, Inc. Method and apparatus for improved manipulation of data between an application program and the files system on a computer-controlled display system
US6212577B1 (en) 1993-03-03 2001-04-03 Apple Computer, Inc. Method and apparatus for improved interaction with an application program according to data types and actions performed by the application program
US5754178A (en) * 1993-03-03 1998-05-19 Apple Computer, Inc. Method and apparatus for improved feedback during manipulation of data on a computer controlled display system
US5530865A (en) * 1993-03-03 1996-06-25 Apple Computer, Inc. Method and apparatus for improved application program switching on a computer-controlled display system
US5696915A (en) * 1993-03-03 1997-12-09 Apple Computer, Inc. Method and apparatus for linking routines for different contexts
US5621878A (en) * 1993-03-03 1997-04-15 Apple Computer, Inc. Method and apparatus or manipulating data from a suspended application program on a computer-controlled display system
US5638501A (en) 1993-05-10 1997-06-10 Apple Computer, Inc. Method and apparatus for displaying an overlay image
US5517578A (en) * 1993-05-20 1996-05-14 Aha! Software Corporation Method and apparatus for grouping and manipulating electronic representations of handwriting, printing and drawings
US6587587B2 (en) 1993-05-20 2003-07-01 Microsoft Corporation System and methods for spacing, storing and recognizing electronic representations of handwriting, printing and drawings
US5969705A (en) * 1993-06-28 1999-10-19 Apple Computer, Inc. Message protocol for controlling a user interface from an inactive application program
WO1995008813A1 (en) * 1993-09-22 1995-03-30 Philips Electronics N.V. Multi-functionality user-interface downwards compatible with single-functionality application software
GB2282906B (en) 1993-10-13 1996-11-06 Dataquill Ltd Data enty systems
US5422656A (en) * 1993-11-01 1995-06-06 International Business Machines Corp. Personal communicator having improved contrast control for a liquid crystal, touch sensitive display
JP2813728B2 (en) * 1993-11-01 1998-10-22 インターナショナル・ビジネス・マシーンズ・コーポレイション Personal communication device with zoom / pan function
US5752063A (en) * 1993-12-08 1998-05-12 Packard Bell Nec Write inhibited registers
US5534893A (en) * 1993-12-15 1996-07-09 Apple Computer, Inc. Method and apparatus for using stylus-tablet input in a computer system
US5764995A (en) * 1994-03-25 1998-06-09 Packard Bell Nec Write once read only registers
US5983236A (en) * 1994-07-20 1999-11-09 Nams International, Inc. Method and system for providing a multimedia presentation
US6262719B1 (en) * 1994-09-02 2001-07-17 Packard Bell Nec, Inc. Mouse emulation with a passive pen
US5974558A (en) * 1994-09-02 1999-10-26 Packard Bell Nec Resume on pen contact
US6137473A (en) * 1994-09-02 2000-10-24 Nec Corporation System and method for switching control between a host computer and a remote interface device
US5867106A (en) * 1994-09-02 1999-02-02 Packard Bell Nec Password switch to override remote control
US6092117A (en) * 1994-09-02 2000-07-18 Packard Bell Nec System and method for automatically reconnecting a wireless interface device to a host computer
US6292181B1 (en) 1994-09-02 2001-09-18 Nec Corporation Structure and method for controlling a host computer using a remote hand-held interface device
US6209034B1 (en) 1994-09-02 2001-03-27 Nec Corporation Remote keyboard macros activated by hot icons
US5606674A (en) * 1995-01-03 1997-02-25 Intel Corporation Graphical user interface for transferring data between applications that support different metaphors
US5873108A (en) * 1995-02-27 1999-02-16 Fuga Corporation Personal information manager information entry allowing for intermingling of items belonging to different categories within a single unified view
US20090273574A1 (en) * 1995-06-29 2009-11-05 Pryor Timothy R Programmable tactile touch screen displays and man-machine interfaces for improved vehicle instrumentation and telematics
US7512671B1 (en) * 1995-10-16 2009-03-31 Nec Corporation Computer system for enabling a wireless interface device to selectively establish a communication link with a user selectable remote computer
US6108727A (en) * 1995-10-16 2000-08-22 Packard Bell Nec System having wireless interface device for storing compressed predetermined program files received from a remote host and communicating with the remote host via wireless link
US6279153B1 (en) 1995-10-16 2001-08-21 Nec Corporation Multi-user flash ROM update
US6126327A (en) * 1995-10-16 2000-10-03 Packard Bell Nec Radio flash update
US6148344A (en) * 1995-10-16 2000-11-14 Nec Corporation System and method for enabling an IPX driver to accommodate multiple LAN adapters
US6018806A (en) * 1995-10-16 2000-01-25 Packard Bell Nec Method and system for rebooting a computer having corrupted memory using an external jumper
US5990875A (en) * 1995-10-16 1999-11-23 Packard Bell Nec Double pen up event
US6664982B1 (en) 1995-10-16 2003-12-16 Nec Corporation Multi-user on-screen keyboard
US6005533A (en) * 1995-10-16 1999-12-21 Packard Bell Nec Remote occlusion region
US5996082A (en) * 1995-10-16 1999-11-30 Packard Bell Nec System and method for delaying a wake-up signal
US6924790B1 (en) 1995-10-16 2005-08-02 Nec Corporation Mode switching for pen-based computer systems
US5760764A (en) * 1995-12-13 1998-06-02 Altra Computer display cursor controller with serial interface
US5818426A (en) * 1996-02-01 1998-10-06 Aztech New Media Corporation Peripheral-computer interfacing system and method
US5930808A (en) * 1996-05-30 1999-07-27 Matsushita Electric Industrial Co., Ltd. Data conversion apparatus for data communication system
US6380929B1 (en) * 1996-09-20 2002-04-30 Synaptics, Incorporated Pen drawing computer input device
IL119498A (en) 1996-10-27 2003-02-12 Advanced Recognition Tech Application launching system
US6654955B1 (en) * 1996-12-19 2003-11-25 International Business Machines Corporation Adding speech recognition libraries to an existing program at runtime
TW313647B (en) * 1996-12-20 1997-08-21 Inventec Corp Input aided device of computer system
IL119955A0 (en) 1997-01-01 1997-04-15 Advanced Recognition Tech An instruction and/or identification input unit
US5995084A (en) * 1997-01-17 1999-11-30 Tritech Microelectronics, Ltd. Touchpad pen-input and mouse controller
US6353927B1 (en) * 1997-10-14 2002-03-05 Lucent Technologies Inc. Data download technique into installed memory
US6886055B2 (en) * 1997-12-15 2005-04-26 Clearcube Technology, Inc. Computer on a card with a remote human interface
US6038616A (en) * 1997-12-15 2000-03-14 Int Labs, Inc. Computer system with remotely located interface where signals are encoded at the computer system, transferred through a 4-wire cable, and decoded at the interface
JP2882404B1 (en) * 1997-12-17 1999-04-12 日本電気株式会社 Handwritten code processing device
US6012101A (en) * 1998-01-16 2000-01-04 Int Labs, Inc. Computer network having commonly located computing systems
US7760187B2 (en) 2004-07-30 2010-07-20 Apple Inc. Visual expander
US8479122B2 (en) 2004-07-30 2013-07-02 Apple Inc. Gestures for touch sensitive input devices
US9239673B2 (en) 1998-01-26 2016-01-19 Apple Inc. Gesturing with a multipoint sensing device
US9292111B2 (en) 1998-01-26 2016-03-22 Apple Inc. Gesturing with a multipoint sensing device
US6119146A (en) * 1998-05-04 2000-09-12 Int Labs, Inc. Computer network having multiple remotely located human interfaces sharing a common computing system
CN1591646A (en) * 1998-12-14 2005-03-09 皇家菲利浦电子有限公司 Record carrier apparatus and method for playing back a record carrier with video and image item using user feedback
US6714220B2 (en) * 2000-01-19 2004-03-30 Siemens Aktiengesellschaft Interactive input with limit-value monitoring and on-line help for a palmtop device
US8645137B2 (en) 2000-03-16 2014-02-04 Apple Inc. Fast, language-independent method for user authentication by voice
US6741235B1 (en) 2000-06-13 2004-05-25 Michael Goren Rapid entry of data and information on a reduced size input area
US6728719B1 (en) * 2001-01-31 2004-04-27 Oracle International Corporation Method and mechanism for dependency tracking for unique constraints
US7280695B2 (en) 2001-05-31 2007-10-09 Empower Technologies, Inc. System and method of pen-based data input into a computing device
US7916124B1 (en) 2001-06-20 2011-03-29 Leapfrog Enterprises, Inc. Interactive apparatus using print media
GB2380583A (en) * 2001-10-04 2003-04-09 Ilam Samson Touch pad/screen for electronic equipment
US9189467B1 (en) 2001-11-07 2015-11-17 Apple Inc. Method and apparatus for annotating an electronic document
US7487444B2 (en) 2002-03-19 2009-02-03 Aol Llc Reformatting columns of content for display
US7190351B1 (en) 2002-05-10 2007-03-13 Michael Goren System and method for data input
US7739604B1 (en) * 2002-09-25 2010-06-15 Apple Inc. Method and apparatus for managing windows
US20040229195A1 (en) * 2003-03-18 2004-11-18 Leapfrog Enterprises, Inc. Scanning apparatus
US7079117B2 (en) * 2003-05-15 2006-07-18 Analog Devices, Inc. Analog to digital converter controller
US8825629B2 (en) * 2003-09-06 2014-09-02 Oracle International Corporation Method for index tuning of a SQL statement, and index merging for a multi-statement SQL workload, using a cost-based relational query optimizer
MXPA06007945A (en) * 2004-01-13 2007-01-26 Univ Toledo Noninvasive birefringence compensated sensing polarimeter.
US7779361B2 (en) * 2004-02-09 2010-08-17 Malmstrom R Dean Change-alarmed, integrated console apparatus and method
EP1743270A4 (en) * 2004-02-09 2012-04-18 Portalis Lc Computer presentation and command integration apparatus and method
US7353458B2 (en) * 2004-02-09 2008-04-01 Portalis, Lc Computer presentation and command integration method
US7496846B2 (en) * 2004-02-09 2009-02-24 Portalis, Lc Computer presentation and command integration apparatus
JP2005227897A (en) * 2004-02-10 2005-08-25 Fuji Photo Film Co Ltd Method, device, and program for image display
US20060125805A1 (en) * 2004-03-17 2006-06-15 James Marggraff Method and system for conducting a transaction using recognized text
US7757226B2 (en) * 2004-03-17 2010-07-13 Oracle International Corporation Method and mechanism for performing a rolling upgrade of distributed computer software
US20060066591A1 (en) * 2004-03-17 2006-03-30 James Marggraff Method and system for implementing a user interface for a device through recognized text and bounded areas
US20050251523A1 (en) * 2004-05-07 2005-11-10 Oracle International Corporation Minimizing downtime for application changes in database systems
US7788285B2 (en) * 2004-05-14 2010-08-31 Oracle International Corporation Finer grain dependency tracking for database objects
US8381135B2 (en) 2004-07-30 2013-02-19 Apple Inc. Proximity detector in handheld device
US8744852B1 (en) 2004-10-01 2014-06-03 Apple Inc. Spoken interfaces
US7922099B1 (en) 2005-07-29 2011-04-12 Leapfrog Enterprises, Inc. System and method for associating content with an image bearing surface
US8677377B2 (en) 2005-09-08 2014-03-18 Apple Inc. Method and apparatus for building an intelligent automated assistant
US7281664B1 (en) * 2005-10-05 2007-10-16 Leapfrog Enterprises, Inc. Method and system for hierarchical management of a plurality of regions of an encoded surface used by a pen computer
US7936339B2 (en) * 2005-11-01 2011-05-03 Leapfrog Enterprises, Inc. Method and system for invoking computer functionality by interaction with dynamically generated interface regions of a writing surface
US8261967B1 (en) 2006-07-19 2012-09-11 Leapfrog Enterprises, Inc. Techniques for interactively coupling electronic content with printed media
US9318108B2 (en) 2010-01-18 2016-04-19 Apple Inc. Intelligent automated assistant
US20080154573A1 (en) * 2006-10-02 2008-06-26 Microsoft Corporation Simulating new input devices using old input devices
US8570278B2 (en) 2006-10-26 2013-10-29 Apple Inc. Portable multifunction device, method, and graphical user interface for adjusting an insertion point marker
US7856605B2 (en) 2006-10-26 2010-12-21 Apple Inc. Method, system, and graphical user interface for positioning an insertion marker in a touch screen display
US8977255B2 (en) 2007-04-03 2015-03-10 Apple Inc. Method and system for operating a multi-function portable electronic device using voice-activation
KR101429278B1 (en) * 2007-08-08 2014-08-11 삼성전자주식회사 Apparatus and method for providing character delete function
US7966040B2 (en) * 2007-11-08 2011-06-21 Symbol Technologies, Inc. Magnetically attachable accessories for a mobile unit
US20100265209A1 (en) * 2007-12-06 2010-10-21 Nokia Corporation Power reduction for touch screens
US9330720B2 (en) 2008-01-03 2016-05-03 Apple Inc. Methods and apparatus for altering audio output signals
US8650507B2 (en) 2008-03-04 2014-02-11 Apple Inc. Selecting of text using gestures
US8201109B2 (en) 2008-03-04 2012-06-12 Apple Inc. Methods and graphical user interfaces for editing on a portable multifunction device
US8996376B2 (en) 2008-04-05 2015-03-31 Apple Inc. Intelligent text-to-speech conversion
US10496753B2 (en) 2010-01-18 2019-12-03 Apple Inc. Automatically adapting user interfaces for hands-free interaction
US20100030549A1 (en) 2008-07-31 2010-02-04 Lee Michael M Mobile device having human language translation capability with positional feedback
US8825462B2 (en) * 2008-09-17 2014-09-02 Accenture Global Services Limited Method and system for simulating a plurality of devices
KR101246049B1 (en) * 2008-09-23 2013-03-26 에어로바이론먼트 인크 Method of determining PWM duty cycle of an open delta H-bridge driven ironless permanent magnet machine
US9959870B2 (en) 2008-12-11 2018-05-01 Apple Inc. Speech recognition involving a mobile device
US20100149114A1 (en) * 2008-12-16 2010-06-17 Motorola, Inc. Simulating a multi-touch screen on a single-touch screen
US8661362B2 (en) 2009-03-16 2014-02-25 Apple Inc. Methods and graphical user interfaces for editing on a multifunction device with a touch screen display
US20100306825A1 (en) 2009-05-27 2010-12-02 Lucid Ventures, Inc. System and method for facilitating user interaction with a simulated object associated with a physical location
US10255566B2 (en) 2011-06-03 2019-04-09 Apple Inc. Generating and processing task items that represent tasks to perform
US9858925B2 (en) 2009-06-05 2018-01-02 Apple Inc. Using context information to facilitate processing of commands in a virtual assistant
US10241752B2 (en) 2011-09-30 2019-03-26 Apple Inc. Interface for a virtual digital assistant
US10241644B2 (en) 2011-06-03 2019-03-26 Apple Inc. Actionable reminder entries
US9431006B2 (en) 2009-07-02 2016-08-30 Apple Inc. Methods and apparatuses for automatic speech recognition
GB2473000B (en) * 2009-08-25 2014-02-19 Promethean Ltd Dynamic switching of interactive whiteboard data
US10705794B2 (en) 2010-01-18 2020-07-07 Apple Inc. Automatically adapting user interfaces for hands-free interaction
US10553209B2 (en) 2010-01-18 2020-02-04 Apple Inc. Systems and methods for hands-free notification summaries
US10679605B2 (en) 2010-01-18 2020-06-09 Apple Inc. Hands-free list-reading by intelligent automated assistant
US10276170B2 (en) 2010-01-18 2019-04-30 Apple Inc. Intelligent automated assistant
DE202011111062U1 (en) 2010-01-25 2019-02-19 Newvaluexchange Ltd. Device and system for a digital conversation management platform
US8682667B2 (en) 2010-02-25 2014-03-25 Apple Inc. User profiling for selecting user specific voice input processing information
CN102906682B (en) 2010-04-23 2016-10-26 谷歌技术控股有限责任公司 Use electronic equipment and the method touching detection surface
US9092128B2 (en) 2010-05-21 2015-07-28 Apple Inc. Method and apparatus for managing visual information
WO2012020276A1 (en) * 2010-08-11 2012-02-16 Sony Ericsson Mobile Communications Ab Regulation of navigation speed among displayed items and related devices and methods
WO2012043756A1 (en) * 2010-09-30 2012-04-05 楽天株式会社 Viewing device, viewing method, non-transitory computer-readable recording medium whereon program is recorded, and script program
US10762293B2 (en) 2010-12-22 2020-09-01 Apple Inc. Using parts-of-speech tagging and named entity recognition for spelling correction
US9262612B2 (en) 2011-03-21 2016-02-16 Apple Inc. Device access using voice authentication
US9092130B2 (en) 2011-05-31 2015-07-28 Apple Inc. Devices, methods, and graphical user interfaces for document manipulation
US10057736B2 (en) 2011-06-03 2018-08-21 Apple Inc. Active transport based notifications
US8994660B2 (en) 2011-08-29 2015-03-31 Apple Inc. Text correction processing
US10134385B2 (en) 2012-03-02 2018-11-20 Apple Inc. Systems and methods for name pronunciation
US9483461B2 (en) 2012-03-06 2016-11-01 Apple Inc. Handling speech synthesis of content for multiple languages
US9280610B2 (en) 2012-05-14 2016-03-08 Apple Inc. Crowd sourcing information to fulfill user requests
US9721563B2 (en) 2012-06-08 2017-08-01 Apple Inc. Name recognition system
US9495129B2 (en) 2012-06-29 2016-11-15 Apple Inc. Device, method, and user interface for voice-activated navigation and browsing of a document
EP2884721A4 (en) * 2012-08-09 2015-08-12 Yonggui Li Keyboard and mouse of cellular phone
US9792038B2 (en) * 2012-08-17 2017-10-17 Microsoft Technology Licensing, Llc Feedback via an input device and scribble recognition
US9576574B2 (en) 2012-09-10 2017-02-21 Apple Inc. Context-sensitive handling of interruptions by intelligent digital assistant
US9547647B2 (en) 2012-09-19 2017-01-17 Apple Inc. Voice-based media searching
US9063831B1 (en) * 2012-12-21 2015-06-23 Cadence Design Systems, Inc. Method and apparatus for optimizing access to control registers in an emulation chip
KR20230137475A (en) 2013-02-07 2023-10-04 애플 인크. Voice trigger for a digital assistant
US9507514B2 (en) * 2013-03-12 2016-11-29 Htc Corporation Electronic devices and related input devices for handwritten data and methods for data transmission for performing data sharing among dedicated devices using handwritten data
US9368114B2 (en) 2013-03-14 2016-06-14 Apple Inc. Context-sensitive handling of interruptions
AU2014233517B2 (en) 2013-03-15 2017-05-25 Apple Inc. Training an at least partial voice command system
WO2014144579A1 (en) 2013-03-15 2014-09-18 Apple Inc. System and method for updating an adaptive speech recognition model
WO2014197336A1 (en) 2013-06-07 2014-12-11 Apple Inc. System and method for detecting errors in interactions with a voice-based digital assistant
US9582608B2 (en) 2013-06-07 2017-02-28 Apple Inc. Unified ranking with entropy-weighted information for phrase-based semantic auto-completion
WO2014197334A2 (en) 2013-06-07 2014-12-11 Apple Inc. System and method for user-specified pronunciation of words for speech synthesis and recognition
WO2014197335A1 (en) 2013-06-08 2014-12-11 Apple Inc. Interpreting and acting upon commands that involve sharing information with remote devices
US10176167B2 (en) 2013-06-09 2019-01-08 Apple Inc. System and method for inferring user intent from speech inputs
EP3937002A1 (en) 2013-06-09 2022-01-12 Apple Inc. Device, method, and graphical user interface for enabling conversation persistence across two or more instances of a digital assistant
AU2014278595B2 (en) 2013-06-13 2017-04-06 Apple Inc. System and method for emergency calls initiated by voice command
DE112014003653B4 (en) 2013-08-06 2024-04-18 Apple Inc. Automatically activate intelligent responses based on activities from remote devices
US9620105B2 (en) 2014-05-15 2017-04-11 Apple Inc. Analyzing audio input for efficient speech and music recognition
US10592095B2 (en) 2014-05-23 2020-03-17 Apple Inc. Instantaneous speaking of content on touch devices
US9502031B2 (en) 2014-05-27 2016-11-22 Apple Inc. Method for supporting dynamic grammars in WFST-based ASR
US9715875B2 (en) 2014-05-30 2017-07-25 Apple Inc. Reducing the need for manual start/end-pointing and trigger phrases
US10289433B2 (en) 2014-05-30 2019-05-14 Apple Inc. Domain specific language for encoding assistant dialog
US9633004B2 (en) 2014-05-30 2017-04-25 Apple Inc. Better resolution when referencing to concepts
AU2015266863B2 (en) 2014-05-30 2018-03-15 Apple Inc. Multi-command single utterance input method
US9760559B2 (en) 2014-05-30 2017-09-12 Apple Inc. Predictive text input
US9734193B2 (en) 2014-05-30 2017-08-15 Apple Inc. Determining domain salience ranking from ambiguous words in natural speech
US9430463B2 (en) 2014-05-30 2016-08-30 Apple Inc. Exemplar-based natural language processing
US9842101B2 (en) 2014-05-30 2017-12-12 Apple Inc. Predictive conversion of language input
US9785630B2 (en) 2014-05-30 2017-10-10 Apple Inc. Text prediction using combined word N-gram and unigram language models
US10078631B2 (en) 2014-05-30 2018-09-18 Apple Inc. Entropy-guided text prediction using combined word and character n-gram language models
US10170123B2 (en) 2014-05-30 2019-01-01 Apple Inc. Intelligent assistant for home automation
US10659851B2 (en) 2014-06-30 2020-05-19 Apple Inc. Real-time digital assistant knowledge updates
US9338493B2 (en) 2014-06-30 2016-05-10 Apple Inc. Intelligent automated assistant for TV user interactions
US10446141B2 (en) 2014-08-28 2019-10-15 Apple Inc. Automatic speech recognition based on user feedback
US9818400B2 (en) 2014-09-11 2017-11-14 Apple Inc. Method and apparatus for discovering trending terms in speech requests
US10789041B2 (en) 2014-09-12 2020-09-29 Apple Inc. Dynamic thresholds for always listening speech trigger
US9646609B2 (en) 2014-09-30 2017-05-09 Apple Inc. Caching apparatus for serving phonetic pronunciations
US9668121B2 (en) 2014-09-30 2017-05-30 Apple Inc. Social reminders
US10074360B2 (en) 2014-09-30 2018-09-11 Apple Inc. Providing an indication of the suitability of speech recognition
US9886432B2 (en) 2014-09-30 2018-02-06 Apple Inc. Parsimonious handling of word inflection via categorical stem + suffix N-gram language models
US10127911B2 (en) 2014-09-30 2018-11-13 Apple Inc. Speaker identification and unsupervised speaker adaptation techniques
US10552013B2 (en) 2014-12-02 2020-02-04 Apple Inc. Data detection
US9711141B2 (en) 2014-12-09 2017-07-18 Apple Inc. Disambiguating heteronyms in speech synthesis
US9865280B2 (en) 2015-03-06 2018-01-09 Apple Inc. Structured dictation using intelligent automated assistants
US9721566B2 (en) 2015-03-08 2017-08-01 Apple Inc. Competing devices responding to voice triggers
US10567477B2 (en) 2015-03-08 2020-02-18 Apple Inc. Virtual assistant continuity
US9886953B2 (en) 2015-03-08 2018-02-06 Apple Inc. Virtual assistant activation
US9899019B2 (en) 2015-03-18 2018-02-20 Apple Inc. Systems and methods for structured stem and suffix language models
US9842105B2 (en) 2015-04-16 2017-12-12 Apple Inc. Parsimonious continuous-space phrase representations for natural language processing
US10083688B2 (en) 2015-05-27 2018-09-25 Apple Inc. Device voice control for selecting a displayed affordance
US10127220B2 (en) 2015-06-04 2018-11-13 Apple Inc. Language identification from short strings
US10101822B2 (en) 2015-06-05 2018-10-16 Apple Inc. Language input correction
US10186254B2 (en) 2015-06-07 2019-01-22 Apple Inc. Context-based endpoint detection
US11025565B2 (en) 2015-06-07 2021-06-01 Apple Inc. Personalized prediction of responses for instant messaging
US10255907B2 (en) 2015-06-07 2019-04-09 Apple Inc. Automatic accent detection using acoustic models
US10671428B2 (en) 2015-09-08 2020-06-02 Apple Inc. Distributed personal assistant
US10747498B2 (en) 2015-09-08 2020-08-18 Apple Inc. Zero latency digital assistant
US9697820B2 (en) 2015-09-24 2017-07-04 Apple Inc. Unit-selection text-to-speech synthesis using concatenation-sensitive neural networks
US11010550B2 (en) 2015-09-29 2021-05-18 Apple Inc. Unified language modeling framework for word prediction, auto-completion and auto-correction
US10366158B2 (en) 2015-09-29 2019-07-30 Apple Inc. Efficient word encoding for recurrent neural network language models
US11587559B2 (en) 2015-09-30 2023-02-21 Apple Inc. Intelligent device identification
US10691473B2 (en) 2015-11-06 2020-06-23 Apple Inc. Intelligent automated assistant in a messaging environment
US10049668B2 (en) 2015-12-02 2018-08-14 Apple Inc. Applying neural network language models to weighted finite state transducers for automatic speech recognition
US10223066B2 (en) 2015-12-23 2019-03-05 Apple Inc. Proactive assistance based on dialog communication between devices
US10446143B2 (en) 2016-03-14 2019-10-15 Apple Inc. Identification of voice inputs providing credentials
US9934775B2 (en) 2016-05-26 2018-04-03 Apple Inc. Unit-selection text-to-speech synthesis based on predicted concatenation parameters
US9972304B2 (en) 2016-06-03 2018-05-15 Apple Inc. Privacy preserving distributed evaluation framework for embedded personalized systems
US10249300B2 (en) 2016-06-06 2019-04-02 Apple Inc. Intelligent list reading
US10049663B2 (en) 2016-06-08 2018-08-14 Apple, Inc. Intelligent automated assistant for media exploration
DK179588B1 (en) 2016-06-09 2019-02-22 Apple Inc. Intelligent automated assistant in a home environment
US10192552B2 (en) 2016-06-10 2019-01-29 Apple Inc. Digital assistant providing whispered speech
US10490187B2 (en) 2016-06-10 2019-11-26 Apple Inc. Digital assistant providing automated status report
US10509862B2 (en) 2016-06-10 2019-12-17 Apple Inc. Dynamic phrase expansion of language input
US10586535B2 (en) 2016-06-10 2020-03-10 Apple Inc. Intelligent digital assistant in a multi-tasking environment
US10067938B2 (en) 2016-06-10 2018-09-04 Apple Inc. Multilingual word prediction
DK201670540A1 (en) 2016-06-11 2018-01-08 Apple Inc Application integration with a digital assistant
DK179415B1 (en) 2016-06-11 2018-06-14 Apple Inc Intelligent device arbitration and control
DK179049B1 (en) 2016-06-11 2017-09-18 Apple Inc Data driven natural language event detection and classification
DK179343B1 (en) 2016-06-11 2018-05-14 Apple Inc Intelligent task discovery
US10593346B2 (en) 2016-12-22 2020-03-17 Apple Inc. Rank-reduced token representation for automatic speech recognition
DK179745B1 (en) 2017-05-12 2019-05-01 Apple Inc. SYNCHRONIZATION AND TASK DELEGATION OF A DIGITAL ASSISTANT
DK201770431A1 (en) 2017-05-15 2018-12-20 Apple Inc. Optimizing dialogue policy decisions for digital assistants using implicit feedback
US10623701B1 (en) * 2018-08-29 2020-04-14 Facebook, Inc. Systems and methods for facilitating control and communication between computing devices and presentation systems
CN114035697B (en) * 2021-11-26 2023-10-03 中国电子技术标准化研究院 Low-radiation anti-electromagnetic-interference keyboard and mouse simulation device and method

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3821730A (en) * 1973-06-14 1974-06-28 Lektromedia Ltd Method and apparatus for displaying information on the screen of a monitor
US4639720A (en) * 1981-01-12 1987-01-27 Harris Corporation Electronic sketch pad
US4602286A (en) * 1982-01-15 1986-07-22 Quantel Limited Video processing for composite images
US4587633A (en) * 1982-11-10 1986-05-06 Wang Laboratories, Inc. Management communication terminal system
JPS60205686A (en) * 1984-03-30 1985-10-17 Hitachi Ltd Handwritten character and graphic recognizing system
US4562304A (en) * 1984-05-23 1985-12-31 Pencept, Inc. Apparatus and method for emulating computer keyboard input with a handprint terminal
US4901221A (en) * 1986-04-14 1990-02-13 National Instruments, Inc. Graphical system for modelling a process and associated method
US4899136A (en) * 1986-04-28 1990-02-06 Xerox Corporation Data processor having a user interface display with metaphoric objects
US4972496A (en) * 1986-07-25 1990-11-20 Grid Systems Corporation Handwritten keyboardless entry computer system
US4839802A (en) * 1986-11-19 1989-06-13 Extel Corporation Adaptation of computer to communication operation
US4839634A (en) * 1986-12-01 1989-06-13 More Edward S Electro-optic slate for input/output of hand-entered textual and graphic information
US4763356A (en) * 1986-12-11 1988-08-09 AT&T Information Systems, Inc. American Telephone and Telegraph Company Touch screen form entry system
AU623149B2 (en) * 1988-05-27 1992-05-07 Global 360, Inc. Document manipulation in a data processing system
FR2645990A1 (en) * 1989-04-14 1990-10-19 Telematique Videotex Francaise P ORTATIVE MICROCOMPUTER WITH TOUCH SCREEN-KEYBOARD

Also Published As

Publication number Publication date
US5260697A (en) 1993-11-09
EP0557284B1 (en) 1995-09-27
WO1992009038A1 (en) 1992-05-29
EP0557284A1 (en) 1993-09-01
JPH06501799A (en) 1994-02-24
DE69113478D1 (en) 1995-11-02
DE69113478T2 (en) 1996-03-28
AU8296591A (en) 1992-06-11
AU658574B2 (en) 1995-04-27

Similar Documents

Publication Publication Date Title
CA2092903A1 (en) Computer with separate display plane and user interface processor
EP0557282B1 (en) Computer with tablet input to standard programs
US5491495A (en) User interface having simulated devices
US6259432B1 (en) Information processing apparatus for improved intuitive scrolling utilizing an enhanced cursor
US7714837B2 (en) Electronic book reading apparatus and method
CN1322405C (en) Input processing method and input control apparatus
JP2792597B2 (en) Portable information terminal using soft keyboard and information input method
EP0422577A2 (en) Method and apparatus for displaying simulated keyboards on touch-sensitive displays
US20060077183A1 (en) Methods and systems for converting touchscreen events into application formatted data
US20060279533A1 (en) Electronic book reading apparatus
JPH03500943A (en) Data processing system for processing annotable images
JP5449403B2 (en) Sentence display device presenting tactile sensation according to displayed sentence, sentence display program, and sentence display method
US20130181898A1 (en) System and method for synchronized operation of touch device
CN101211244A (en) Cursor jump control with a touchpad
CN109521922A (en) Display scale changing method, device and equipment of terminal
JPH05250129A (en) Display controller
JPS61267128A (en) Display erasure system
WO2021240262A1 (en) Display method and electronic device using the same
JPS6252630A (en) Hand written input display system
CN203422725U (en) Touch screen multiple-point display system
JPH04311214A (en) Terminal equipment with attention data reproducing function
JPH05257606A (en) Information processing method
JPH08507890A (en) Handwriting recognition apparatus and method
JPH02254522A (en) Item input keyboard control system

Legal Events

Date Code Title Description
EEER Examination request
FZDE Discontinued