1. Field of the Invention
The present invention is directed to synthesizing pointer events in response to receiving input.
2. Description of the Related Art
Many web pages currently on the internet are designed with the assumption that a mouse or similar pointer device will be used to interact with and navigate through the page. Such pages include components that can be selected by a mouse device, such as hyperlinks, images, web page navigation buttons, and other web page components. To select or otherwise engage these components, a user is required to move a cursor controlled by a mouse over the component. In some cases, a user must also press a mouse button to engage additional functionality associated with the web page component. For example, to open a window associated with a hyperlink, a user must use a mouse device to position a cursor over the hyperlink and then click a mouse button.
Web pages typically require one or more mouse events in order to experience the full capability of the web page. For example, a “mouse-move” event positions a cursor, “mouse-over” event initiates drop down windows or provides other information regarding a component, and “mouse-down” and “mouse-up” events indicate a mouse button has been pressed down and then released. Other web pages utilize drop down menus activated by mouse movement events. These menus cannot be accessed by current browsers using keyboard input such as a “tab” key to navigate the web page. The functionality of these pages is difficult to engage without a mouse device, thereby affecting the user experience for users without a mouse.
In addition, some web pages are designed to capture keyboard events and change or block their default behavior. For example, some web pages capture input associated with the “Enter” key and ignore it. This makes selection of a link and other components within the web page interface impossible using current keyboard devices.
Some existing systems perform functions associated with a limited number of mouse events. For example, the end result of selecting a hyperlink using a mouse may be retrieving a web page from a server and displaying the web page in a new window. Some systems may detect a keyboard selection of the hyperlink and directly proceed to retrieve the web page from the server. Though the same end result can be achieved using a keyboard, the mouse events are not generated. Such a system is not practical for interfaces with a large number of mouse selectable components or for large numbers of web pages.
Additionally, anchors associated with the selected component often have parent or children elements embedded within the selected anchor (or in which the selected anchor is embedded in). As a result, features associated with the parent or children elements are not engaged by systems that perform functions associated with specific anchors rather than generate mouse events at the location of the anchors themselves.
The present invention includes a method for synthesizing pointer events. The method begins with receiving input from a keyboard. A focusable region within an interface is then selected from the input. Next, one or more pointer events is generated. The generated one or more pointer events are associated with the focusable region. The input received may include navigation input or region select input.
In one embodiment, a method for synthesizing pointer events may include receiving navigational input. A focusable region within an interface is then selected from the navigational input. After the input is received, a cursor point is determined within the focusable region. One or more pointer events associated with the focusable region are then generated.
In one embodiment, an apparatus that synthesizes pointer events may include a storage device, an input device, a region selector, and a pointer event generator. The storage device can include focusable region information. The region selector is able to select a region associated with the focusable region information in response to receiving input from the input device. The pointer event generator is able to generate a pointer event associated with the selected region in response to selection of that region.
Pointer events associated with a mouse, tablet or touch pad are synthesized from input received from input devices other than a mouse. The input received can include navigation input or region select input and select a focusable region within an interface. Navigation input allows a user to move a focus from one focusable region to another. Region select input selects the current focusable region and typically engages or initiates some type of function associated with the region. In one embodiment, the interface may include a GUI, web page, or some other type of interface that includes components that are selectable by a mouse device.
The interface is provided on a display by a browser or operating system. The interface includes one or more focusable regions on which mouse events can be fired (including regions normally subject to selection by a mouse). A user can provide input from devices other than a mouse to select the focusable regions. Though pointer events can include events synthesized in response to receiving input from one of many types of input devices, mouse events will be discussed below for purposes of simplifying the discussion. Thus, where mouse events are referred to, it is intended that other types of pointer events can be used interchangeably.
Navigation input changes a focus from one focusable region to another within an interface. Navigation input maps keys to directions for indicating in which direction the focus should move. For example, navigation key mapping may include mapping an up arrow key with a “move focus up”, down arrow key with a “move focus down”, etc. Any input mechanism can be used to provide navigation input, including arrow keys, tab keys, or any other key from a keyboard, an IR signal from an IR source (such as a phone, personal digital assistant or computer), or some other input device other than a mouse. In some embodiments, a map of regions within the interface is maintained in the form of a table or some other format. Once the navigation input is received, the newly selected focusable region is accessed from the table and becomes the focused region. Mouse events are then generated as if a cursor was placed at a position associated within the focused region. In one embodiment, the cursor is positioned to the center of the focused region. This is discussed in more detail below.
Region select input can be entered to select a function or the functionality associated with a region. Focused region select input can be received from a dedicated key on a keyboard or any other key from an input device other than a mouse device. When received, an application will engage the functionality associated with the currently focused region. For example, receiving a focused region select input for a currently focused region can cause a drop-down menu to appear, a new window to appear, a hyper-link to be activated, or some other function. This is discussed in more detail below.
The invention is operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well known computing systems, environments, and/or configurations that may be suitable for use with the invention include, but are not limited to, personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.
The invention may be described in the general context of computer-executable instructions, such as program modules, being executed by a computer. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. The invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote computer storage media including memory storage devices.
With reference to
Computer 210 typically includes a variety of computer readable media. Computer readable media can be any available media that can be accessed by computer 210 and includes both volatile and nonvolatile media, removable and non-removable media. By way of example, and not limitation, computer readable media may comprise computer storage media and communication media. Computer storage media includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can accessed by computer 210. Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of the any of the above should also be included within the scope of computer readable media.
The system memory 230 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 231 and random access memory (RAM) 232. A basic input/output system 233 (BIOS), containing the basic routines that help to transfer information between elements within computer 210, such as during start-up, is typically stored in ROM 231. RAM 232 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 220. By way of example, and not limitation,
The computer 210 may also include other removable/non-removable, volatile/nonvolatile computer storage media. By way of example only,
The drives and their associated computer storage media discussed above and illustrated in
The computer 210 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 280. The remote computer 280 may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer 210, although only a memory storage device 281 has been illustrated in
When used in a LAN networking environment, the computer 210 is connected to the LAN 271 through a network interface or adapter 270. When used in a WAN networking environment, the computer 210 typically includes a modem 272 or other means for establishing communications over the WAN 273, such as the Internet. The modem 272, which may be internal or external, may be connected to the system bus 221 via the user input interface 260, or other appropriate mechanism. In a networked environment, program modules depicted relative to the computer 210, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation,
The client 324 includes a digital broadcast receiver 374 (e.g., satellite dish receiver, RF receiver, microwave receiver, multicast listener, etc.) and a tuner 376 which tunes to appropriate frequencies or addresses of the broadcast network. The tuner 376 is configured to receive digital broadcast data in a particularized format, such as MPEG-encoded digital video and audio data, as well as digital data in many different forms, including software programs and programming information in the form of data files. The client 324 also has a modem 378 which provides dial-up access to the data network 328 to provide a back channel or direct link to the content servers 322. In other implementations of a back channel, the modem 378 might be replaced by a network card, or an RF receiver, or other type of port/receiver which provides access to the back channel.
The client 324 runs an operating system which supports multiple applications. The operating system is preferably a multitasking operating system which allows simultaneous execution of multiple applications. The operating system employs a graphical user interface windowing environment which presents the applications or documents in specially delineated areas of the display screen called “windows.” One preferred operating system is a Windows® brand operating system sold by Microsoft Corporation, such as Windows® 95, Windows® NT, Windows®XP or other derivative versions of Windows®. It is noted, however, that other operating systems which provide windowing environments may be employed, such as the Macintosh operating system from Apple Computer, Inc. and the OS/2 operating system from IBM.
The client 324 is illustrated with a key listener 380 to receive the authorization and session keys transmitted from the server. The keys received by listener 380 are used by the cryptographic security services implemented at the client to enable decryption of the session keys and data. Cryptographic services are implemented through a combination of hardware and software. A secure, tamper-resistant hardware unit 382 is provided external to the CPU 360 and two software layers 384, 386 executing on the processor 362 are used to facilitate access to the resources on the cryptographic hardware 382. The software layers include a cryptographic application program interface (CAPI) 384 which provides functionality to any application seeking cryptographic services (e.g., encryption, decryption, signing, or verification). One or more cryptographic service providers (CSPs) 386 implement the functionality presented by the CAPI to the application. The CAPI layer 384 selects the appropriate CSP for performing the requested cryptographic function. The CSPs 386 perform various cryptographic functions such as encryption key management, encryption/decryption services, hashing routines, digital signing, and authentication tasks in conjunction with the cryptographic unit 382. A different CSP might be configured to handle specific functions, such as encryption, decryption, signing, etc., although a single CSP can be implemented to handle them all. The CSPs 386 can be implemented as dynamic linked libraries (DLLs) that are loaded on demand by the CAPI, and which can then be called by an application through the CAPI 384.
Interface action buttons 420-424 are located near the top of interface 400 and can be selected by a user using navigation and focus region select input. Interface action buttons can provide actions to web site such as refresh current URL, to last page URL, stop loading URL, etc. Address bar 430 indicates an address or URL for interface 400. Content regions 440-454 may include interface content such as graphics, text, hyper-links, or any other type of digital content. Content regions may encompass one or more focusable regions (such as one or more hyperlinks) or comprise one focusable region (such as a digital image). In one embodiment, focusable content regions may be contained in an anchor. The URL link www.example.com displayed in content region 450 is wrapped around the right edge of the region 450. As a result, the URL link is divided into a first link region 451 and a second link region 452. Links 460-468 comprise separate focusable regions. The focusable region consisting of link 468 is currently selected in interface 400. As a result, cursor 470 is placed at the center of the rectangle comprising the area of the link and the border of the link is highlighted with a thick black border. In
In one embodiment, a focusable region may be comprised of one or more sub-regions. The sub-regions may have a shape, such as a rectangle, square, circle, triangle, an abstract shape or some other shape. For purposes of discussion, sub-regions in the shape of rectangles are discussed herein. For example,
At step 520, the system determines whether the input received is from a pointing device, such as a mouse. In one embodiment, a message handler processes the input and makes the determination. If the input is from a pointing device, the pointing device input is processed at step 525. Next, mouse events are fired to an application at step 527. When the application is a web page, mouse events are fired to the web page. The application can be a web page, dialog box or other hosted application object. Operation then returns to step 510. If the input is not received from a pointing device, operation continues to step 530. Next, the system determines whether navigation input was received at Step 530. If navigation input is not received, operation continues to step 550. If navigation input is received, operation continues to step 535.
The system determines whether the navigation input received is the first navigation input received for the current interface page at step 535. In one embodiment, for each interface page, the first navigation input received triggers the generation of a focusable region table. Generating a focusable region table after receiving the first navigation input prevents unnecessary processing in case no navigation key is received for the interface page. If the navigation input received is not the first navigation input received for the interface page, operation continues to step 542. If the navigation input received is the first navigation input received for the interface page, operation continues to step 540.
The system generates a focusable region table at step 540. The focusable region table lists the focusable regions within the current interface page. The table also includes information regarding the position of other focusable regions with respect to each other within the interface. Generation of a focusable region table is discussed in more detail below with respect to
The next focusable region is selected by the system at step 542. In one embodiment, the next focusable region is selected from the received navigation input and the focusable region table generated at step 540 (or from some other file or data format that contains the focusable region mapping). For example, if the currently focused region is region 442 of
The center of the first rectangle of a selected focusable region is calculated at step 546. Examples of selected regions are illustrated in
After calculating the center of the first rectangle of a focusable region, the current system fires a mouse-move event to the center of the rectangle at step 548. This simulates a mouse-move event from a location associated with the previous cursor location to the center of the first rectangle within the selected focusable region. This differs from selecting a region without affecting the cursor location as performed in other systems (such as conventional tab navigation of prior systems). Firing a mouse-move event to the center of a rectangle is discussed in more detail below with respect to
If navigation input is not received at step 530, the system determines whether the input requires a mouse event at step 550. In one embodiment, at step 550, the system determines whether the input received is mapped as a focused region select input such that a right mouse button click should be simulated. The simulated right mouse button input may be implemented on a keyboard or some other input device. In one embodiment, the key may be implemented as an additional dedicated key on a keyboard. An example of a keyboard with a right mouse button input key able to be mapped as a focused region select input is illustrated in
One or more mouse events are fired at the current cursor position within the current focused region at step 554. The mouse events fired at step 554 may include a mouse down event and a mouse up event (emulating the events fired by pressing a right mouse button “down” and letting the button spring back “up”), or a mouse select event. As a result of firing the one or more mouse events at the mouse position at step 554, functions associated with the focusable region are performed. These functions can include retrieving content associated with a link, opening or closing a window, sending information to a server, causing a drop down menu to be displayed, or some other function as encoded within the description of the interface. After the mouse events have fired at step 554, operation continues to step 510.
Method 600 of
The first region of a table is selected at step 620. For table 700, this would correspond to region 420. Steps 630-665 generate a map for each selected region of a focusable region table. The system determines whether a region is found to the right of the first selected region at step 630. In one embodiment, the system determines positions of regions while parsing the code at step 610. If a focusable region is found to the right of the currently selected region from the table, the focusable region found is added to the selected region entry in the appropriate column of focusable region table at step 635. Operation then continues to step 640. If no focusable region is found to the right of the selected region, this indicates that the interface may not allow navigation in this direction. For example, content region 444 is located on the right-most side of interface 400. Since no region exists to the right of content region 444, operation would continue from step 630 to step 640 for region 444. Different navigation algorithms may be used to determine navigation between multiple focusable regions in a particular direction.
In one embodiment, an application may allow wrap-around navigation between focusable regions of an interface. In this case, if no regions exist (for example) to the right of a currently selected region from a focusable region table, the application may map to a focusable region on the opposite side of the interface. This will implement a wrap-around effect.
The system determines whether a region is found to the left of the selected region at step 640. If a region is found to the left of the selected region, operation continues to step 645. If a region is not found to the left of the selected region, operation continues to step 650. At step 645, the system adds the region found to the left of the selected region to the selected region entry in the table. This is similar to the step 635 discussed above. Operation then continues to step 650. The system determines whether a focusable region is found above the selected region at step 650. If a focusable region is found above the selected region, operation continues to step 655 where the focusable region is added to the region entry in the table. If no focusable region is found above the selected region, operation continues to step 660. After adding the focusable region to the selected region at step 655, operating continues to step 660.
The system determines whether a focusable region is found below the selected region at step 660. If a focusable region is found below the selected region, operating continues to step 665 where the focusable region is added to the selected region entry in the table. Operation then continues to step 670. If no region is found below the selected region at step 660, operation continues to step 670.
Steps 630 through 665 of method 600 are used to map focusable regions of an interface with respect to each other from a description or code associated with the interface. In the illustrated embodiment, the focusable regions are mapped together using up, down, left, and right navigational information. In some embodiments, other directions may use to map regions together. Other directions may include diagonal navigation, including above-left, above-right, below-left, or below-right. Additionally, directions such as double-left or triple-left or some similar direction may be mapped to navigate to a focusable region located more than one focusable region position in a particular direction.
The system determines whether additional focusable regions exist at step 670. If no additional focusable regions exist in a table, then the entire interface has been mapped and operation ends at step 675. If additional regions exist, the next region is selected at step 680 and operation continues to step 630.
In one embodiment, due to interface design and the variety of shapes a focusable region may have, neighboring focusable regions may not necessarily be reciprocally mapped together. For example, in
Method 900 of
The foregoing detailed description of the invention has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form disclosed. Many modifications and variations are possible in light of the above teaching. The described embodiments were chosen in order to best explain the principles of the invention and its practical application to thereby enable others skilled in the art to best utilize the invention in various embodiments and with various modifications as are suited to the particular use contemplated. It is intended that the scope of the invention be defined by the claims appended hereto.