The invention itself, as well as a preferred mode of use, further objects, and advantages thereof, will best be understood by reference to the following detailed description of an illustrative embodiment when read in conjunction with the accompanying drawings, wherein:
The present invention provides a method, system, and computer program product for controlling the keyboard focus of a Graphical User Interface (GUI) within a computer or other data processing system.
With reference now to
Client computer 102 is able to communicate with a service provider server 202 via a network 128 using a network interface 130, which is coupled to system bus 106. Network 128 may be an external network such as the Internet, or an internal network such as an Ethernet or a Virtual Private Network (VPN).
A hard drive interface 132 is also coupled to system bus 106. Hard drive interface 132 interfaces with a hard drive 134. In a preferred embodiment, hard drive 134 populates a system memory 136, which is also coupled to system bus 106. Data that populates system memory 136 includes client computer 102's operating system (OS) 138 and application programs 144.
OS 138 includes a graphical user interface (GUI) manager 140, for providing transparent user access to resources, such as hardware components, communication ports, and application programs 144. Generally, GUI manager 140 provides a windowing environment and a graphical cursor (e.g., arrow) presented within display 110. GUI manager 140 interprets commands entered by keyboard, mouse, or other user input device, and sends the interpreted command(s) to the appropriate lower levels of the operating system (e.g., a kernel 142) for processing. GUI manager 140 also arbitrates between application programs 144 for control of the keyboard focus, as described further below with reference to
As depicted, OS 138 also includes kernel 142, which includes lower levels of functionality for OS 138, including providing essential services required by other parts of OS 138 and application programs 144, including memory management, process and task management, disk management, and mouse and keyboard management.
Application programs 144 include a browser 146. Browser 146 includes program modules and instructions enabling a World Wide Web (WWW) client (i.e., client computer 102) to send and receive network messages to the Internet using HyperText Transfer Protocol (HTTP) messaging, thus enabling communication with service provider server 150. Application programs 144 may further include any number of other conventional applications, such as word processor 148. Browser 146 and word processor 148 preferably both employ the graphical interface supported by GUI manager 140 of operating system 138.
The hardware elements depicted in client computer 102 are not intended to be exhaustive, but rather are representative to highlight certain components that mat be utilized to practice the present invention. For instance, client computer 102 may include alternate memory storage devices such as magnetic cassettes, Digital Versatile Disks (DVDs), Bernoulli cartridges, and the like. These and other variations are intended to be within the spirit and scope of the present invention.
With reference now to
With reference now to
In response to receipt of a keyboard focus change request, GUI manager 140 buffers the keyboard focus change request within a focus event queue (FEQ) 141 within system memory 136. FEQ 141 can be advantageously implemented as an ordered queue, such as a first-in-first-out (FIFO) queue. Thereafter, the process returns to block 212.
Referring now to
At block 226, GUT manager 140 determines whether or not the TSLKE is greater than or equal to a focus delay that has been pre-defined by a user of client computer 102 or by operating system 140, where the focus delay is the desired time, for example, as measured in seconds or microseconds, that must elapse after the most recent keyboard event (MRKE) before GUT manager 140 will permit the keyboard focus to change to a different GUI component. If GUT manager 140 determines at block 215 that the TSLKE is greater than or equal to the predetermined focus delay, the process passes directly to block 228, which is described below. If, on the other hand, GUT manager 140 determines at block 226 that the TSLKE is less than the predetermined focus delay, the process returns to block 224.
Block 228 illustrates GUT manager 140 removing the oldest keyboard focus change request from FEQ 141. GUT manager 140 then grants the keyboard focus change request removed from FEQ 141, allowing the keyboard focus to switch to the specified GUI component of the requesting application program 144. Thereafter, the process returns to block 222, which has been described.
As has been described, the present invention provides a method, system, and computer program product for managing the keyboard focus of a Graphical User Interface (GUI) within a computer or other data processing system. In one embodiment, the method includes receiving a keyboard focus change request from an application, delaying the granting of the focus change request for a predetermined interval since a last user-generated keyboard event, and then granting the focus change request. Delayed focus change requests are preferably buffered in an ordered manner until the interval equal to the focus delay has elapsed.
While the invention has been particularly shown and described with reference to a preferred embodiment, it will be understood by those skilled in the art that various changes in form and detail may be made therein without departing from the spirit and scope of the invention. For example, it should be understood that the use herein of specific names are not intended to imply any limitations on the invention. The invention may thus be implemented with different nomenclature/terminology and associated functionality utilized to describe the above devices/utility, etc., without limitation. In addition, while an illustrative embodiment of the present invention has been described in the context of a fully functional computer system with installed software, those skilled in the art will appreciate that the software aspects of an illustrative embodiment of the present invention are capable of being distributed as a program product in a variety of forms, and that an illustrative embodiment of the present invention applies equally regardless of the particular type of computer readable medium used to actually carry out the distribution. Examples of computer readable media include recordable type media such as flash drives, floppy disks, hard drives, CD-ROMs, DVDs, and transmission media such as digital and analog communication links.