KEYBOARD-BASED NAVIGATION OF A USER INTERFACE
Various embodiments of systems and methods for keyboard-based navigation of a user interface are described herein. An area around a first object displayed on a user interface is divided into quadrants and one or more segments for at least one of the quadrants. The user interface includes a plurality of objects and the quadrants represent directions with respect to the first object. In response to a key stroke indicating a first direction, a first one of the quadrants corresponding to the first direction is identified. The segments of the first quadrant are scanned to identify a second object that is closest to the first object in the first quadrant. The second object is then selected.
The field relates generally to user interface navigation. More particularly, the field relates to user interface navigation using a keyboard.
BACKGROUNDMouse and keyboard are typical means for navigating a user interface (UI). A user can navigate a UI and reach a desired UI object using a mouse or a keyboard. A mouse can be more versatile for navigating a user interface. A user can simply move the cursor to a desired UI object using the mouse and make a selection. Keys such as up arrow key, down arrow key, left arrow key, and right arrow key are used for keyboard-based navigation. A combination of these keys can be used to navigate a UI and reach a desired UI object. Spreadsheets, tables, and other grid-type user interface environments can be conveniently navigated using a keyboard. However, keyboard-based navigation is not convenient and, in some cases, not possible for free or unstructured environments where UI objects are not in a grid-like arrangement. A user has to resort to a mouse to navigate such unstructured environments.
The claims set forth the embodiments of the invention with particularity. The invention is illustrated by way of example and not by way of limitation in the figures of the accompanying drawings in which like references indicate similar elements. The embodiments of the invention, together with its advantages, may be best understood from the following detailed description taken in conjunction with the accompanying drawings.
Embodiments of techniques for keyboard-based navigation of a user interface are described herein. In the following description, numerous specific details are set forth to provide a thorough understanding of embodiments of the invention. One skilled in the relevant art will recognize, however, that the invention can be practiced without one or more of the specific details, or with other methods, components, materials, etc. In other instances, well-known structures, materials, or operations are not shown or described in detail to avoid obscuring aspects of the invention.
Reference throughout this specification to “one embodiment”, “this embodiment” and similar phrases, means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention. Thus, the appearances of these phrases in various places throughout this specification are not necessarily all referring to the same embodiment. Furthermore, the particular features, structures, or characteristics may be combined in any suitable manner in one or more embodiments.
Grid type user interfaces can be conveniently navigated using a keyboard. A grid type user interface (UI) includes UI elements arranged in rows and columns or along vertical and horizontal lines. For example, referring to
In unstructured environments, UI objects are scattered in a UI area without any specific pattern. These UI objects are not arranged in a grid or in any other sequence.
There are several types of unstructured environments that include scattered UI objects. One such unstructured environment is a map displayed on a UI, as shown in
Although a pointing device such as a mouse can be more versatile in navigating a user interface, there are several situations where a keyboard is preferable. For example, some users, while working with a keyboard, may be more comfortable using the keyboard to navigate the UI instead of switching to a mouse. As another example, physically challenged users may also find a keyboard more comfortable and practical since operation of a mouse requires relatively more precision. A keyboard can be any type of keyboard on a computing device or any input device that includes keys to move up, down, left, and right in a user interface.
The central angle of each quadrant is 90 degrees. For example, a right-side quadrant 254 is the area between lines L1 and L2. The angle between the lines L1 and L2 is 90 degrees, which is the central angle of the right-side quadrant 254. Similarly, a lower quadrant 256 is the area between lines L2 and L3, a left-side quadrant 258 is the area between lines L3 and L4, and an upper quadrant 260 is the area between lines L4 and L1. The quadrants divide the area around the first object 252 into four equal parts.
Each quadrant represents a direction corresponding to the first object 252. The right-side quadrant 254 corresponds to the right-side direction of the first object 252, the lower quadrant 256 corresponds to a direction below the first object 252, the left-side quadrant 258 corresponds to the left side direction of the first object 252, and the upper quadrant 260 corresponds to a direction above the first object 252. The right-side quadrant 254 is associated with the right arrow key 262, the lower quadrant 256 is associated with the down arrow key 264, the left-side quadrant 258 is associated with the left arrow key 266, and the upper quadrant 260 is associated with the up arrow key 268. Therefore, if a user selects a right arrow key 262, the right-side quadrant 254 would be identified.
Each quadrant is divided into one or more segments. The segments are concentric. For example, a first or center segment of the right-side quadrant 254 is the area encompassed by the lines L1 and L2 and the curve C1. A second segment of the right-side quadrant 254 is the area encompassed by the lines L1 and L2 and the curves C1 and C2. A third segment of the right-side quadrant 254 is the area encompassed by the lines L1 and L2 and the curves C2 and C3. These segments of the right-side quadrant are concentric in that the curves C1, C2, and C3 have the same center 270 but different radii.
The curves C1, C2, and C3 are parts of circles with the same center 270. For example, the curve C1 is a quarter circle extending from the line L1 to line L2. Similarly, the curve C2 is also a quarter circle extending from the line L1 to line L2, but has a larger radius than the curve C1. If the first object represents a point, then the center 270 of the curves is the location of the first object. In another embodiment, if the first object is not a point, then this center 270 can be the center of a boundary (e.g., a rectangle) that encompasses the first object.
In one embodiment, the segments are divided such that the width of the segments is equal to the shortest of the distances between the objects. Distances between pairs of the objects can be determined and the shortest of such distances is used for the width of the segments. Consider that the distance between the object C 272 and the object H 274 is the least among distances between any other pair of the objects. This distance between the object C 272 and the object H 274 is then used as the width for the segments. Therefore, the segments have equal width. The width of the first segment of the right-side quadrant 254 is the distance between the center (e.g., first object) and the curve C1. The width of the second segment of the right-side quadrant 254 is the distance between the curve C1 and the curve C2. The width of the third segment of the right-side quadrant 254 is the distance between the curve C2 and the curve C3.
Referring to
Referring back to
Referring back to
In the example of
As another example, if a user selects an up arrow key, then an upper quadrant 260 is identified as shown in
There can be scenarios in which a segment includes multiple objects. In such scenarios, the segment including multiple pins is divided into smaller segments. For example, referring to
Referring to
Some unstructured environments can include active text objects. An example of such environments is a feed update 400 as shown in
The right-side quadrant 412 corresponds to the right-side direction of the first object 402, the lower quadrant 414 corresponds to a direction below the first object 402, the left-side quadrant 416 corresponds to the left side direction of the first object 402, and the upper quadrant 418 corresponds to a direction above the first object 402. The right-side quadrant 412 is associated with a right arrow key, the lower quadrant 414 is associated with a down arrow key, the left-side quadrant 416 is associated with a left arrow key, and the upper quadrant 418 is associated with an up arrow key.
Each quadrant is divided into one or more segments. The segments in each quadrant are parallel. For example, referring to
When a user selects a right arrow key, the right-side quadrant 412 is identified. The first segment 420 is scanned first to determine if a second active text object lies in the right-side quadrant 412. Since the first segment 420 does not include any active text objects, the second segment 422 is then scanned. Since there are no active text objects in the second segment 422, the third segment 424 is then scanned. The second active text object 404 lies in the third segment 424 and is therefore identified. The second active text object 404 is then selected, as shown in
If a segment includes multiple active text objects, then the segment is divided into smaller segments. For example, referring to
Referring to
Some embodiments of the invention may include the above-described methods being written as one or more software components. These components, and the functionality associated with each, may be used by client, server, distributed, or peer computer systems. These components may be written in a computer language corresponding to one or more programming languages such as, functional, declarative, procedural, object-oriented, lower level languages and the like. They may be linked to other components via various application programming interfaces and then compiled into one complete application for a server or a client. Alternatively, the components maybe implemented in server and client applications. Further, these components may be linked together via various distributed programming protocols. Some example embodiments of the invention may include remote procedure calls being used to implement one or more of these components across a distributed programming environment. For example, a logic level may reside on a first computer system that is remotely located from a second computer system containing an interface level (e.g., a graphical user interface). These first and second computer systems can be configured in a server-client, peer-to-peer, or some other configuration. The clients can vary in complexity from mobile and handheld devices, to thin clients and on to thick clients or even other servers.
The above-illustrated software components are tangibly stored on a computer readable storage medium as instructions. The term “computer readable storage medium” should be taken to include a single medium or multiple media that stores one or more sets of instructions. The term “computer readable storage medium” should be taken to include any physical article that is capable of undergoing a set of physical changes to physically store, encode, or otherwise carry a set of instructions for execution by a computer system which causes the computer system to perform any of the methods or process steps described, represented, or illustrated herein. Examples of computer readable storage media include, but are not limited to: magnetic media, such as hard disks, floppy disks, and magnetic tape; optical media such as CD-ROMs, DVDs and holographic devices; magneto-optical media; and hardware devices that are specially configured to store and execute, such as application-specific integrated circuits (“ASICs”), programmable logic devices (“PLDs”) and ROM and RAM devices. Examples of computer readable instructions include machine code, such as produced by a compiler, and files containing higher-level code that are executed by a computer using an interpreter. For example, an embodiment of the invention may be implemented using Java, C++, or other object-oriented programming language and development tools. Another embodiment of the invention may be implemented in hard-wired circuitry in place of, or in combination with machine readable software instructions.
A data source is an information resource. Data sources include sources of data that enable data storage and retrieval. Data sources may include databases, such as, relational, transactional, hierarchical, multi-dimensional (e.g., OLAP), object oriented databases, and the like. Further data sources include tabular data (e.g., spreadsheets, delimited text files), data tagged with a markup language (e.g., XML data), transactional data, unstructured data (e.g., text files, screen scrapings), hierarchical data (e.g., data in a file system, XML data), files, a plurality of reports, and any other data source accessible through an established protocol, such as, Open DataBase Connectivity (ODBC), produced by an underlying software system (e.g., ERP system), and the like. Data sources may also include a data source where the data is not tangibly stored or otherwise ephemeral such as data streams, broadcast data, and the like. These data sources can include associated data foundations, semantic layers, management systems, security systems and so on.
In the above description, numerous specific details are set forth to provide a thorough understanding of embodiments of the invention. One skilled in the relevant art will recognize, however that the invention can be practiced without one or more of the specific details or with other methods, components, techniques, etc. In other instances, well-known operations or structures are not shown or described in details to avoid obscuring aspects of the invention.
Although the processes illustrated and described herein include series of steps, it will be appreciated that the different embodiments of the present invention are not limited by the illustrated ordering of steps, as some steps may occur in different orders, some concurrently with other steps apart from that shown and described herein. In addition, not all illustrated steps may be required to implement a methodology in accordance with the present invention. Moreover, it will be appreciated that the processes may be implemented in association with the apparatus and systems illustrated and described herein as well as in association with other systems not illustrated.
The above descriptions and illustrations of embodiments of the invention, including what is described in the Abstract, is not intended to be exhaustive or to limit the invention to the precise forms disclosed. While specific embodiments of, and examples for, the invention are described herein for illustrative purposes, various equivalent modifications are possible within the scope of the invention, as those skilled in the relevant art will recognize. These modifications can be made to the invention in light of the above detailed description. Rather, the scope of the invention is to be determined by the following claims, which are to be interpreted in accordance with established doctrines of claim construction.
Claims
1. An article of manufacture including a non-transitory computer readable storage medium to tangibly store instructions, which when executed by a computer, cause the computer to:
- divide an area around a first object displayed on a user interface including a plurality of objects into quadrants and one or more segments within at least one of the quadrants, wherein the quadrants represent directions with respect to the first object;
- in response to a key stroke indicating a first direction, identify a first one of the quadrants corresponding to the first direction; and
- scan the one or more segments of the first quadrant to identify a second object that is closest to the first object in the first quadrant; and
- select the second object, wherein the second object is within a segment of the one or more segments of the first quadrant.
2. The article of manufacture of claim 1, wherein the segments of the quadrants are concentric and the instructions to scan the one or more segments of the first quadrant comprises instructions to:
- scan the segments sequentially starting from a center segment.
3. The article of manufacture of claim 2, further comprising instructions which when executed by the computer further causes the computer to:
- when there are multiple objects in the segment of the first quadrant, concentrically divide the segment of the first quadrant; and
- scan the divided segments to identify the second object that is closest to the first object, wherein the second object is within one of the divided segments.
4. The article of manufacture of claim 3, further comprising instructions which when executed by the computer further causes the computer to:
- when there are multiple objects in the divided segments, identify the second object that is closest to a center line dividing the first quadrant.
5. The article of manufacture of claim 4, further comprising instructions which when executed by the computer further causes the computer to:
- when there are multiple objects within same distance from the center line, identify the second object that is topmost of the multiple objects.
6. The article of manufacture of claim 2, wherein the one or more segments are divided such that the width of the segments is equal to the shortest of the distances between the plurality of the objects.
7. The article of manufacture of claim 1, wherein the segments of the first quadrant are parallel and the instructions to scan the one or more segments of the first quadrant comprises instructions to:
- scan the segments sequentially starting from a center segment, wherein the first object and the second object comprise text.
8. The article of manufacture of claim 7, further comprising instructions which when executed by the computer further causes the computer to:
- when there are multiple objects in the segment of the first quadrant, divide the segment of the first quadrant; and
- scan the divided segments to identify the second object that is closest to the first object, wherein the second object is within one of the divided segments.
9. The article of manufacture of claim 8, further comprising instructions which when executed by the computer further causes the computer to:
- when there are multiple objects in the divided segments, identify the second object that is closest to a center line dividing the first quadrant; and
- when there are a plurality of objects within same distance from the center line, identify the second object that is left most of the plurality of objects.
10. The article of manufacture of claim 7, wherein the one or more segments are divided such that the width of the segments is equal to line height of the text.
11. The article of manufacture of claim 1, wherein the first direction includes an up direction, a down direction, a left direction, or a right direction.
12. A computerized method for keyboard-based navigation, the method comprising:
- dividing an area around a first object displayed on a user interface including a plurality of objects into quadrants and one or more segments within at least one of the quadrants, wherein the quadrants represent directions with respect to the first object;
- in response to a key stroke indicating a first direction, identifying a first one of the quadrants corresponding to the first direction; and
- scanning the one or more segments of the first quadrant to identify a second object that is closest to the first object in the first quadrant; and
- selecting the second object, wherein the second object is within a segment of the one or more segments of the first quadrant.
13. The method of claim 12, wherein the segments of the quadrants are concentric and scanning the one or more segments of the first quadrant comprises:
- scanning the segments sequentially starting from a center segment.
14. The method of claim 13, further comprising:
- when there are multiple objects in the segment of the first quadrant, concentrically dividing the segment of the first quadrant; and
- scanning the divided segments to identify the second object that is closest to the first object, wherein the second object is within one of the divided segments.
15. The method of claim 14, further comprising:
- when there are multiple objects in the divided segments, identifying the second object that is closest to a center line dividing the first quadrant
16. The method of claim 12, wherein the segments of the quadrants are concentric and dividing the area around the first object into the quadrants comprises:
- dividing the area around the first object into four quadrants.
17. The method of claim 16, wherein the one or more segments are divided such that the width of the segments is equal to the shortest of the distances between the plurality of the objects.
18. The method of claim 12, wherein the segments of the first quadrant are parallel and scanning the one or more segments of the first quadrant comprises:
- scanning the segments sequentially starting from a center segment, wherein the first object and the second object comprise text.
19. The method of claim 18, further comprising:
- when there are multiple objects in the segment of the first quadrant, dividing the segment of the first quadrant; and
- scanning the divided segments to identify the second object that is closest to the first object, wherein the second object is within one of the divided segments.
20. The method of claim 19, further comprising:
- when there are multiple objects in the divided segments, identifying the second object that is closest to a center line dividing the first quadrant; and
- when there are a plurality of objects within same distance from the center line, identifying the second object that is left most of the plurality of objects.
21. The method of claim 20, wherein the one or more segments are divided such that the width of the segments is equal to line height of the text.
22. The method of claim 12, wherein the first direction includes an up direction, a down direction, a left direction, or a right direction.
23. A computer system for keyboard-based navigation, comprising:
- a computer memory to store program code; and
- a processor to execute the program code to: divide an area around a first object displayed on a user interface including a plurality of objects into quadrants and one or more segments within at least one of the quadrants, wherein the quadrants represent directions with respect to the first object; in response to a key stroke indicating a first direction, identify a first one of the quadrants corresponding to the first direction; and scan the one or more segments of the first quadrant to identify a second object that is closest to the first object in the first quadrant; and select the second object, wherein the second object is within a segment of the one or more segments of the first quadrant.
24. The system of claim 23, wherein the segments of the quadrants are concentric and the program code to scan the one or more segments of the first quadrant comprises program code to:
- scan the segments sequentially starting from a center segment.
25. The system of claim 24, wherein the processor further executes the program code to:
- when there are multiple objects in the segment of the first quadrant, concentrically divide the segment of the first quadrant;
- scan the divided segments to identify the second object that is closest to the first object, wherein the second object is within one of the divided segments; and
- when there are multiple objects in the divided segments, identify the second object that is closest to a center line dividing the first quadrant.
26. The system of claim 23, wherein the segments of the quadrants are concentric and the program code to divide the area around the first object into the quadrants comprises program code to:
- divide the area around the first object into four quadrants.
27. The system of claim 26, wherein the one or more segments are divided such that the width of the segments is equal to the shortest of the distances between the plurality of the objects.
28. The system of claim 23, wherein the segments of the first quadrant are parallel and the program code to scan the one or more segments of the first quadrant comprises program code to:
- scan the segments sequentially starting from a center segment, wherein the first object and the second object comprise text.
29. The system of claim 28, wherein the processor further executes the program code to:
- when there are multiple objects in the segment of the first quadrant, divide the segment of the first quadrant; and
- scan the divided segments to identify the second object that is closest to the first object, wherein the second object is within one of the divided segments.
30. The system of claim 29, wherein the processor further executes the program code to:
- when there are multiple objects in the divided segments, identify the second object that is closest to a center line dividing the first quadrant; and
- when there are a plurality of objects within same distance from the center line, identify the second object that is left most of the plurality of objects.
31. The system of claim 30, wherein the one or more segments are divided such that the width of the segments is equal to line height of the text.
32. The system of claim 23, wherein the first direction includes an up direction, a down direction, a left direction, or a right direction.
Type: Application
Filed: Sep 11, 2012
Publication Date: Mar 13, 2014
Patent Grant number: 9383922
Inventor: Bjoern BADER (Eppelheim)
Application Number: 13/609,256
International Classification: G06F 3/048 (20060101);