Method and apparatus for positioning a software keyboard

A method and apparatus for positioning a software keyboard are described herein. In one embodiment of the invention, the method includes determining a screen touch location indicating where a touch screen display device was last touched. The method also includes determining a bounding region corresponding to an area on the touch screen display device based on the screen touch location and displaying a software keyboard outside the bounding region on the touch screen display device.

FIELD OF THE INVENTION

Embodiments of the invention relate to the field of computer software, and more specifically software keyboards.

BACKGROUND OF THE INVENTION

Traditionally, many computer systems use standard hardware keyboards as their primary text input devices. However, software keyboards are becoming more popular because of the growing popularity of touch screens (also called touch-sensitive displays). Touch screens are display devices designed with a pressure sensitive panel mounted in front of the screen, which detects where users have touched the screen. Typically, software keyboards provide the same functionality as hardware keyboards with the main difference being that software keyboards are graphically embodied on a touch screen.

Software keyboards are relatively well suited for compact portable devices because they facilitate text input without needing relatively large standard hardware keyboards. Because personal digital assistants are compact and portable, they typically employ software keyboards, instead of larger hardware keyboards. In many personal digital assistants, where typically application programs are not multitasked, software application programs such as calendars, address books, and notepads control placement of a software keyboard. For example, when a calendar application program is executed, it displays the software keyboard at the bottom of the touch screen display device. When software application programs control the placement of software keyboards, typically the software keyboards will not overlay the application program's input space, making the software keyboard relatively easy to use.

However, with the emergence of different and relatively more sophisticated portable computing devices, application programs are less frequently designed to control the placement of software keyboards. For example, web tablets and other similar devices provide multitasking environments, wherein multiple software application programs can run simultaneously. In a multitasking environment, numerous application programs (e.g., web browsers, word processors, email programs, etc.) are launched and/or dragged to arbitrary places on the desktop. As a result, application program input spaces (e.g., text boxes) can appear at arbitrary desktop locations. One disadvantage of such an environment is that the software keyboards often obscure application programs input spaces, requiring the user to move the software keyboard before entering text into the input space. More specifically, for example, when a software keyboard obscures an application program's input space, the user must manually drag the software keyboard away from the input space. When touch screens require the use of a stylus, users must pick up a stylus before dragging software keyboard away from an input space. The constant need for picking up a stylus and and/or dragging the software keyboard away from application program input spaces drastically hinders the efficiency with which text input it is provided to application programs. Moreover, it makes the user experience less pleasant.

DETAILED DESCRIPTION

In the following description, block diagrams illustrate exemplary embodiments of the invention. Also herein, flow diagrams illustrate operations of the exemplary embodiments of the invention. The operations of the flow diagrams will be described with references to the exemplary embodiments shown in the block diagrams. However, it should be understood that the operations of the flow diagrams could be performed by embodiments of the invention other than those discussed with reference to the block diagrams, and embodiments discussed with references to the block diagrams could perform operations different than those discussed with reference to the flow diagrams.

FIG. 1is a block diagram illustrating hardware and software layers that control the display and placement of a software keyboard, according to embodiments of the invention. As shown inFIG. 1, the hardware and software layers of computing device100that control the display and placement of a software keyboard include an application layer102, operative system layer110, device driver layer122, and hardware layer134. In one embodiment of the invention, the computing device100is a web tablet. According to alternative embodiments of the invention, the computing device100can be a personal digital assistant, personal computer, notebook computer, or other suitable computing device. As shown inFIG. 1, the various software and hardware layers are interconnected.

The application layer102includes a word processor108, a web browser106, and an email application104. In alternative embodiments of the invention, different application programs are included in the application layer102. For example, the application layer102can include graphical design applications, MP3 players, spreadsheets, and any other suitable application programs. Each of the application programs included in the application layer102may communicate with the components of the operating system layer110. The operating system layer110includes a software keyboard unit118and a typing flag120, which is connected to a software keyboard unit118. The software keyboard unit118includes a positioning unit112, display unit114, and sizing unit116. The operating system layer components are connected to the device driver layer components. The device driver layer122includes a touch screen button driver124, which is connected to a touch screen display device driver26, which is connected to a last touch location storage unit128. The touch screen button driver124and touch screen driver display device126are connected to components of the hardware layer134, as shown inFIG. 1. The hardware layer134includes a keyboard display button130and a touch screen display device132. In one embodiment of the invention, the keyboard display button130is a hardware keyboard button. For example, it is a hardware keyboard button located on a control panel or keypad. According to alternative embodiments of the invention, the display device is an LCD display, cathode ray tube, or other suitable display device.

FIGS. 2A–Bdepict the placement and display of a software keyboard on a touch screen display device.FIGS. 3–4describe operations for placing and displaying a software keyboard at different locations on a touch screen display device. In the following discussion, the operations for placing and displaying the software keyboard will be described with reference to the depictions of the software keyboard.

FIG. 2Ais a block diagram illustrating an application program window displayed on a computing device, according to embodiments of the invention. As shownFIG. 2, the computing device100includes a touch screen display device132including to a control panel210. The control panel210includes a keyboard display button130. In an alternative embodiment of the invention, the keyboard display button130is implemented in software. In particular, the keyboard display button130is graphically displayed on the touch screen display device132, instead of being on the control panel210.

InFIG. 2A, an application window204is displayed on the touch screen display device132. The application window204includes an application input space206, wherein users provide text input to the application program associated with the application window204. As a more specific example, inFIG. 2A, the application window is associated with a web browser application program, which receives text strings as input. For example, the web browser application program receives Internet search strings in its application input space206. Software and/or hardware running on the computing device100provides a software keyboard (not shown) to enable users to input text into the application input space206. Operations for launching, displaying, and positioning the software keyboard will be described in greater detail below, in the discussion ofFIGS. 3–4.

FIG. 2Bis a block diagram illustrating a software keyboard displayed at a predetermined location on a touch screen of a computing device, according to embodiments of the invention. Figured2B is similar toFIG. 2A, with the addition of a software keyboard212. As shown inFIG. 2B, the software keyboard212is displayed on the touch screen display device132. According to one embodiment of the invention, in response to a user pressing the keyboard display button130, the software keyboard212is displayed at a predetermined touch screen location to allow the user to enter text into the application input space206. If the software keyboard212is overlaying an application input space206, as inFIG. 2B, the user can move the software keyboard212to another location by again pressing the keyboard display button130. The user can press the keyboard display button130numerous times causing to move to several different locations, as described below inFIG. 3.

FIG. 3is a flow diagram illustrating operations for positioning and displaying a software keyboard, according to embodiments of the invention. The operations of the flow diagram ofFIG. 3will be described with reference to the exemplary computing device of FIGS.1and2A–B. The flow diagram300commences a block302, wherein an indication that the keyboard display button was pressed is received. For example, referring toFIG. 1, the button driver124receives an indication that the keyboard display button130was pressed. The operations of block302typically occur when a user presses the keyboard display button130to cause the software keyboard212to be displayed, enabling the user to enter text into the application input space206. In one embodiment of the invention, a hardware interrupt notifies the button driver when the keyboard display button130is pressed. The keyboard button driver124then processes the interrupt. In an alternative embodiment of the invention, the keyboard button driver124polls the keyboard button to determine whether it has been pressed (e.g., the keyboard button driver124polls for keyboard display button events). The process continues at block304.

At block304, the software keyboard is positioned at a first predetermined location. For example, the keyboard button driver124positions the software keyboard212at a first predetermined location. As a more specific example, the keyboard button driver130positions the software keyboard212at predetermined screen coordinates. In one embodiment of the invention, the keyboard button driver124sends a signal to the software keyboard unit's positioning unit112indicating where on the touch screen display device132the software keyboard212is to be positioned. In one embodiment of the invention, the first predetermined position for the software keyboard212is approximately the bottom center of the touch screen display device132, as shown inFIG. 2B. The process continues at block306.

As shown in block306, the software keyboard is displayed. For example, the keyboard button driver124displays the software keyboard212on the touch screen display device132. In one embodiment of the invention, the button driver124sends a signal instructing the software keyboard unit's display unit114to display the software keyboard212. Although the software keyboard212is displayed, it may be overlaying an application input space206, as inFIG. 2B. If the application input space206is not accessible because of the software keyboard212, the user can again press the keyboard display button130to move the software keyboard212, as described below. The process continues at block308.

At block308, another indication that the keyboard button was pressed is received. For example, the keyboard button driver124receives an indication that the keyboard display button130has been pressed. Another keyboard button indication may have been received because the user has again pressed the keyboard display button130because the software keyboard212is overlaying an application input space. The process continues at block310.

As shown in block310, it is determined whether a key of the software keyboard has been pressed. In one embodiment of the invention, when the software keyboard unit118detects that keys of the software keyboard212have been pressed, it marks the typing flag120to indicate that software keyboard keys have been pressed. The keyboard button driver124queries the typing flag120to determine whether keys of the software keyboard212have been pressed. In alternative embodiments of the invention, the touch screen display device driver126determines the location of the last screen touch. If the last screen touch location occurred in the area occupied by the software keyboard212, the touch screen display device driver126proceeds as if a software keyboard key has been pressed. If keys of the software keyboard have been pressed, the process continues at block312. Otherwise, the process continues at block314.

At block312, the software keyboard is made invisible. For example, in response to the keyboard display button130being pressed (at block308) after a software keyboard key has been pressed (at block310), the keyboard button driver124makes the software keyboard212disappear. That is, if the user presses the keyboard display button130after entering text with the software keyboard212, the software keyboard212disappears. After the software keyboard212disappears, the touch screen display device132appears like the exemplary embodiment shown inFIG. 2A. From block312, the process ends.

As shown in block314, the software keyboard is repositioned at another predetermined location and resized to a predetermined size. For example, the keyboard button driver124repositions the software keyboard at another predetermined location. As noted above, the operations of block314may occur because the user pressed the keyboard display button130to reposition the software keyboard because it was overlaying an application input space. In one embodiment, the second predetermined location is the lower left corner of the touch screen display device132. In one embodiment of the invention, subsequent predetermined locations can include the lower right and left corners and the upper right and left corners of the touch screen display device132. In addition to being relocated, the software keyboard212is also be resized in an attempt not obscure an application input space, so the user can enter text into the application program. In one embodiment of the invention, the keyboard button driver124resizes the keyboard to a predetermined size. For example, the button driver sends a signal to the sizing unit116indicating that the software keyboard212should be sized according to a predetermined size. In one embodiment, the keyboard button driver124resizes the software keyboard212to one half its original size. Other predetermined software keyboard sizes can include other proportional relationships to the original size or other various sizes, according to embodiments of the invention. In one embodiment, each predetermined location corresponds with a predetermined size. In an alternative embodiment of the invention, the software keyboard is resized to a dynamically calculated size, instead of a predetermined size. A conceptual description of these operations is shown below, with reference toFIG. 4. From314, the process continues at block308.

FIG. 4is a block diagram illustrating a software keyboard resized to a predetermined size and repositioned to a predetermined position, according to embodiments of the invention.FIG. 4is similar toFIGS. 2Aand B, wherein the software keyboard212has been repositioned and resized according to predetermined specifications. In particular, the software keyboard212has been reduced in size and repositioned to the lower left corner of the touch screen display device132, where it does not overlay the application input space206. As a result of repositioning and resizing the software keyboard212, the application input space206is exposed so that the user may input text into the application program.

The discussion ofFIGS. 2–4has described operations for repositioning and resizing a software keyboard, in response to pressing a keyboard button, according to embodiments of the invention. The discussion ofFIGS. 5–8will describe block diagrams and operations for automatically positioning a software keyboard so it does not overlay an application input space, according to embodiments of the invention.

FIG. 5is a flow diagram illustrating operations for displaying a software keyboard so that it does not overlay an application input space, according to embodiments of the invention. The flow diagram ofFIG. 5will be described with reference to the exemplary computer device ofFIG. 1. The flow diagram500commences at block502, wherein an indication that the touch screen display device132has been touched is received. For example, the touch screen display device driver126receives an indication that the touch screen display device132has been touched. The operations of block502may occur in response to a user touching the touch screen display device132to place a text cursor in an application input space. In one embodiment of the invention, the touch screen display device driver126stores the location at which the screen was touched in the last touch location storage unit128. In one embodiment of the invention, a hardware interrupt notifies the touch screen display device driver126when the touch screen display device132has been touched. In an alternative embodiment of the invention, the touch screen display device driver126polls the touch screen display device132to determine whether it has been touched (e.g., the touch screen display device driver126polls for touch screen events). The process continues at block504.

At block504, the location of the screen touch is determined. For example, the touch screen display device driver126determines the location at which the touch screen display device132was touched. In one embodiment, the touch screen display device driver126determines the touch screen coordinates at which the touch screen display device132was touched. The process continues at block506.

As shown at block506, the screen touch location is saved. For example, the touch screen display device driver126saves the last location at which the touch screen display device132was touched. In one embodiment, the touch screen display device driver126stores the coordinates of the last touch in the last touch location storage unit128. The process continues at block508.

At block508,it is determined whether the keyboard display button has been pressed. For example, the keyboard button driver124receives it indication that the keyboard display button130was pressed. If the keyboard display button has been pressed, the process continues at block510. Otherwise, the process continues at block502.

As shown in block510, a bounding region is determined based on the screen touch location. For example, the keyboard button driver124determines a bounding region relative to the application input space206The bounding region will be used to prevent the software keyboard212from being displayed over an application input space, allowing the user to enter text into the application without moving the software keyboard212. Operations for determining a bounding region are described in greater detail below, with reference to the flow diagram ofFIG. 7. The process continues at block512.

FIG. 6is a block diagram illustrating a bounding region, according to embodiments of the invention.FIG. 6is similar toFIG. 2B, wherein a bounding region602has been added and the application input space206has been relocated to the. As shown inFIG. 6, the bounding region602corresponds to an area on the touch screen display device132. The area of the bounding region602includes the screen area occupied by the application input space206. As noted, operations for determining the bounding region602will be described in more detail below, in the discussion ofFIG. 7.

As shown in block512, the software keyboard is positioned based on the bounding region. For example, the keyboard button driver124positions the software keyboard212based on the location of the bounding region602. Because the software keyboard212will be positioned outside the bounding region, the software keyboard212will not overlay an application input space. As a result, the user will be able to input text into the application input space without moving the software keyboard212. In one embodiment of the invention, the keyboard button driver124transmits a signal to the positioning unit112indicating where to position the software keyboard212. Operations for positioning the software keyboard212based on the location of the bounding region602are described in greater detail below, with reference to the flow diagram ofFIG. 8. In one embodiment of the invention, the keyboard button driver124positions the software keyboard212below the bounding region602, as shown inFIG. 6. If the keyboard button driver124cannot place the software keyboard212below the bounding region602for lack of available area, it places the software keyboard212above the bounding region602, as described below, with reference toFIG. 8. The process continues at block514.

At block514, the keyboard is displayed. For example, the software keyboard unit's display unit114displays the software keyboard212at the location indicated by the positioning unit112. As shown inFIG. 6, in one embodiment of the invention, the software keyboard212is displayed below the bounding region602. From block514, the process ends.

FIG. 7is a flow diagram illustrating operations for determining a bounding region, according to embodiments of the invention. The flow diagram ofFIG. 7will be described with reference to the exemplary computing device ofFIG. 1. The flow diagram700commences at block702, wherein the last screen touch location is determined. For example, the keyboard button driver122retrieves the last screen touch location from the last touch location storage unit128. The process continues at block704.

At block704, the bounding region width is set to the width of the touch screen display device132. For example, the keyboard button driver124sets the bounding region width to that of the touch screen display device132. As shown inFIG. 6, the bounding region602spans the width of the touch screen display device132. However, the bounding region width may be narrower than that of the touch screen display device132, according to alternative embodiments of the invention. The process continues at block706.

As shown in block706, the height of the bounding region is determined. For example, the keyboard button driver124determines the bounding region height. In one embodiment of the invention, the keyboard button driver124determines the bounding region height based on a predetermined average application input space size (i.e., the bounding region height is predetermined). In one embodiment of the invention, the horizontal boundaries of the bounding region602are placed one half the distance of the predetermined height above and below the last screen touch location. As a more specific example, if the predetermined average application input space height is 16 pixels, and if the last touch location occurred at screen coordinates (500, 500), the upper boundary is a horizontal line 8 pixels above the touch screen point (500, 500), while the lower boundary is the horizontal line 8 pixels below that point. Other embodiments call for other suitable methods for determining the height of the bounding region602. From block706, the process ends.

FIG. 8is a flow diagram illustrating operations for positioning the software keyboard, according to embodiments of the invention. The flow diagram ofFIG. 8will be described with reference to the exemplary computing device ofFIGS. 1 and 6. The flow diagram800commences at block802, wherein it is determined whether the software keyboard fits into the area below the bounding region. For example, the keyboard button driver124determines whether the area below the bounding region602is larger than the area of the software keyboard212. If the software keyboard will fit into the area below the bounding region602, the process continues at block804. Otherwise, the process continues at block806.

As shown at block804, the software keyboard is positioned below the bounding region. For example, the keyboard button driver124positions the keyboard in the area below the bounding region602. In one embodiment of the invention, if the software keyboard212can be placed below the bounding region602, it is approximately centered at the bottom of the touch screen display device202, as shown inFIG. 6. Typically, it is desirable to position the software keyboard212at the bottom center of the split device132because the user can comfortably rest his hand(s) on the control panel210. In alternative embodiments of the invention, the software keyboard212is positioned elsewhere below the bounding region602. From block804, the process ends.

At block806, it is determined whether the software keyboard fits into the area above the bounding region. For example, the keyboard button driver124determines whether there is enough area above the bounding region602to accommodate the software keyboard212. If the software keyboard fits into the area above the bounding region, control continues at block808. Otherwise, the process continues at block810.

As shown in block808, the software keyboard is positioned above the bounding region. For example, the keyboard button driver124positions the software keyboard212above the bounding region602. From block808, the process ends.

At block810, it is determined whether a smaller software keyboard fits into the area below the bounding region. For example, the keyboard button driver124determines whether a smaller software keyboard212would fit into the area below the bounding region602. In one embodiment of the invention, the keyboard button driver124resizes the software keyboard212to one of a number of predetermined smaller sizes. If a smaller software keyboard fits, the process continues at block812. Otherwise, the process continues at block814.

As shown in block812, the smaller software keyboard is positioned below the bounding region. For example, the keyboard button driver124positions the resized smaller software keyboard212below the bounding region602. As indicated above, it is preferable to position the software keyboard212at the bottom of the touch screen display device, so the user can rest his hands on the control panel. From block812, the process ends.

At block814, it is determined whether a smaller software keyboard fits into the area above the bounding region. For example, the keyboard button driver124determines whether the screen area above the bounding region602is large enough to accommodate the software keyboard212, without overlying the bounding region602. If the smaller software keyboard will not fit above the bounding region, the process continues at block810. Otherwise, the process continues at block812.

As shown in block816, a smaller software keyboard is positioned above the bounding region. For example, the keyboard button driver124positions the smaller software keyboard212above the bounding region602. From block816, the process ends.

FIG. 9illustrates an exemplary system comprising a keyboard display button and touch screen display device drivers, according to embodiments of the invention. Although described in the context of system900, embodiments of the invention may be implemented in any suitable computer system comprising one or more integrated circuits.

As illustrated inFIG. 9, computer system900comprises processor(s)902. Computer system900also includes a memory unit932, processor bus910and input/output controller hub (ICH)940. The processor(s)902, memory unit932and ICH940are coupled to the processor bus910. The processor(s)902may comprise any suitable processor architecture and for one embodiment of the invention comprise an Intel® Architecture used, for example, in the Pentium® family of processors available from Intel® Corporation of Santa Clara, Calif. For other embodiments of the invention, computer system900may comprise one, two, three, or more processors, any of which may execute a set of instructions that are in accordance with embodiments of the present invention.

The memory unit932stores data (e.g., device driver data) and/or instructions, and may comprise any suitable memory, such as a dynamic random access memory (DRAM), for example. InFIG. 9, the memory unit932is connected to a touch screen display device driver126and a keyboard button driver126. In one embodiment of the invention, these device drivers are stored in the memory unit932, while in an alternative embodiment of the invention they are stored outside the memory unit932. A graphics controller934controls the display of information on a touch screen display device132, according to embodiments of the invention.

The input/output controller hub (ICH)940provides an interface to I/O devices or peripheral components for computer system900. The ICH940may comprise any suitable interface controllers to provide for any suitable communication link to the processor(s)902, memory932and/or to any suitable device or component in communication with the ICH940. For one embodiment of the invention, the ICH940provides suitable arbitration and buffering for each interface.

For one embodiment of the invention, the ICH940provides an interface to one or more suitable integrated drive electronics (IDE) drives942, such as a hard disk drive (HDD) or compact disc read only memory (CD ROM) drive for example, to store data and/or instructions for example, one or more suitable universal serial bus (USB) devices through one or more USB ports944. For one embodiment of the invention, the ICH940also provides an interface to a keyboard display button130, disk drive955, one or more suitable devices through one or more parallel ports953(e.g., a printer), and one or more suitable devices through one or more serial ports954. It should be understood that embodiments of the invention can include some or all of the components of computer system900. Alternatively, embodiments of the invention my include components not shown inFIG. 9.

Accordingly, computer system900includes a machine-readable medium on which is stored a set of instructions (i.e., software) embodying any one, or all, of the methodologies described herein. For example, software can reside, completely or at least partially, within memory932and/or within processor(s)s902. For the purposes of this specification, the term “machine-readable medium” shall be taken to include any mechanism that provides (i.e., stores and/or transmits) information in a form readable by a machine (e.g., a computer). For example, a machine-readable medium includes read only memory (ROM); random access memory (RAM); magnetic disk storage media; optical storage media; flash memory devices; electrical, optical, acoustical or other form of propagated signals (e.g., carrier waves, infrared signals, digital signals, etc.); etc.