The present invention relates generally to computer input mapping and, more specifically, to a method of dynamically assigning a standardized set of access keys based upon application type and other criteria.
Provided is a method for assigning navigation shortcuts, i.e. sequences of input or mnemonic attributes, to computing elements such as, but not limited to documents and web pages, on a computing device in a manner that is not browser, platform or computing device specific and may, if desired, take into consideration an application or document type, or genre.
A platform or computing device reserves a set of device dependent mechanisms, or “access keys,” that may be assigned to browser or application defined functionality to create navigation short cuts. A user agent or application reserves a predefined set of access keys to represent typical navigation landmarks such as, but not limited to, moving focus to a banner, navigation bar, footer and one or more portals. In addition, predefined access keys may also be reserved for such navigation actions as “back” and “forward.” By employing these predefined access keys, an author and/or portal designer can map the predefined access keys to browser key equivalents on every page of a website without knowing browser-specific key combinations, thus providing consistent navigation across an application, portal, or any web site for which an author uses the standard access keys.
Further, documents or pages displayed by the browser may include predefined genres. Examples of genres include, but are not limited to, banking, health care, finance, weather, news, and so on. The author of the document or page designates a specific genre corresponding to the document or page. When the document or page is loaded, the device access keys are requested from the platform. The platform then dynamically assigns each function associated with the designated genre to an access key and provides a display to show the assignments and descriptions associated with the dynamically created shortcuts to the user of the browser or application. In this manner, navigation across particular genre applications and pages can be standardized.
The application or browser that assigns key combination, or mnemonic attributes, provides, upon initiation, a list of the assigned mnemonic attributes and their corresponding functionality in the form of a description. Further, if the same access key is assigned to different functionalities within different applications of an application and a browser, the meaning of the mnemonic attribute associated with the access key is determined by its context. Since the number of available keys is limited based on device, browser, and operating system, the claimed subject matter enables keys to be re-used based on their semantic context.
The claimed subject matter enables a developer to provide, across an application or portal and within particular application genres, standardized navigation shortcuts that are device and browser independent. For example, applications that enable a user to trade stocks or view stock prices via web pages may have one particular interface and word processing programs and other applications that enable a user to manipulate figures and/or documents may have another standardized interface, both of which are browser and platform independent. Additionally, the claimed subject matter allows for a consistent user experience across similar web sites having similar applications involving like genres and short cuts using the same browser.
A better understanding of the present invention can be obtained when the following detailed description of the disclosed embodiments is considered in conjunction with the following drawings, in which:
Although described with particular reference to a desktop computer and a hand-held computing device, the claimed subject matter can be implemented in any information technology (IT) system in which input/out (I/O), or “navigation,” shortcuts are desirable. Those with skill in the computing arts will recognize that the disclosed embodiments have relevance to a wide variety of computing environments in addition to those described below. In addition, the methods of the disclosed invention can be implemented in software, hardware, or a combination of software and hardware. The hardware portion can be implemented using specialized logic; the software portion can be stored in a memory and executed by a suitable instruction execution system such as a microprocessor, personal computer (PC) or mainframe.
In the context of this document, a “memory” or “recording medium” can be any means that contains, stores, communicates, propagates, or transports the program and/or data for use by or in conjunction with an instruction execution system, apparatus or device. Memory and recording medium can be, but are not limited to, an electronic, magnetic, optical, electromagnetic, infrared or semiconductor system, apparatus or device. Memory an recording medium also includes, but is not limited to, for example the following: a portable computer diskette, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), and a portable compact disk read-only memory or another suitable medium upon which a program and/or data may be stored.
Turning now to the figures,
Attached to computer 102 is a data storage component 112, which may either be incorporated into computer 102 i.e. an internal device, or attached externally to computer 102 by means of various, commonly available connection devices such as but not limited to, a universal serial bus (USB) port (not shown). In this example, data storage 112 stores two (2) exemplary applications, an app—1 114 and a web browser program 118, and one (1) document, a doc—1 116. Doc—1 116 includes an identifying tag, a tag—1 117, both of which are explained in more detail below in conjunction with
In the following examples, app—1 114 is a word processing program, although the claimed subject matter is equally applicable to almost any type of application. Browser 118 is Internet Explorer by Microsoft, although the claimed subject matter is equally applicable to any web browser. In fact, the claimed subject matter is equally applicable to animation applications such as flash, portable document format (PDF) and other applications that can run arbitrary content, such as, but not limited to, MS Word and Excel (macros) by Microsoft and many database clients.
Also illustrated is handheld computer, also referred to as a personal digital assistant (PDA), 122, which includes a display 124, function buttons 126 and a microphone 128. Display 124, function buttons 126 and microphone 128 facilitate human interaction with PDA 122.
Computer 102 and PDA 122 are each communicatively coupled a network 120. Computer 102 is connected to network 120 via a wired connection and PDA 122 is connected via a wireless link 130. Network can be any type of network such as, but not limited to, a local area network (LAN) or the Internet. Although not shown, computing system is managed by an operating system (OS), which can be any available operating system.
Keyboard 106 is employed in the following examples to describe the claimed subject matter. Keyboard 106, as an input device for computer 102, has certain input sequences, or “access keys,” reserved for the dynamic assignment of applications such as app—1 114 and browser 118. Information about specific access keys may be stored as part of a device driver (not shown) corresponding to a particular device. Typically, in computer 102, the device driver for keyboard 106 would be stored in data storage 112. With regard to a device such as PDA 122 (
In the following examples, the “Alt-C,” “Alt-D,” “Alt-F,” “Alt-H,” “Alt-J,” “Alt-M,” “Alt-N,” “Alt-P,” “Alt-R” and “Alt-S” access keys are used to implement the claimed subject matter (see
Some typical examples of input key combinations, or hot keys, are the pressing of an F-key 142 (
Below Menu buttons 166 are several Toolbar buttons 168, which provide a user of app—1 114 with quick access to various features of app—1 114. The buttons 168 in this example represent the operations of creating a new document, opening a new file, saving a file, cutting text in a document, copy text in a document and pasting text into a document. Those with experience with typical word processing applications should be familiar with Toolbar buttons 168.
An application window, or app—1 window 170, is illustrated in the main area of app—1 display 160. A title bar, or banner, 172 displays the name of app—1 window 170, i.e. “Active Documents.” A horizontal slider bar 174 enables a user to reposition window 170 with respect to right and left. A vertical slider bar 176 enables a user to reposition window 170 with respect to up and down.
Within app—1 window 172 are two open documents, or elements: an element—1 178 and an element—2 180. In this example, element—2 is the active element in window 170, i.e. the element that is the focus of any input currently directed to app—1 114 via window 170.
Process 200 starts in a “Begin Setup Input Keys (IK)” block 202. Throughout the remainder of the specification sequences of input keys corresponding to a particular device are referred to as “access keys.” Control proceeds immediately to a “Retrieve Functions” block 204 during which an application, in this example app—1 114 (
It should be understood process 200 described in relation to a device such as desktop computer 102 (
The designation of specific functionality that requires correlation with an access key is typically defines by a developer of the corresponding application, such as app—1 114, and is specific to a particular application and/or industry for which the application is directed. For example, with respect to a word processor, access keys may be defined for functions such as those represented by toolbar buttons 168 (
During a “Prioritize Functions” block 206, process 200 orders the functions retrieved during block 204 according to information stored in conjunction with the functions. Additional information that may be stored in conjunction with the functions is a list of preferred bindings. During a “More Functions?” block 208, process determines whether or not there is an unassigned functions that needs to be bound to a platform-dependent access key. If so, control proceeds to a “Get Next Function” block 210 during which process 200 retrieves the next unassigned function. Since the list of functions was prioritized during block 206, the next function corresponds to the highest priority functions. In the alternative, during block 210, process may select the highest priority function from a list of unordered function, i.e. rather than executing Prioritize Functions block 206.
During a “Free Binding?” block 212, process 200 determines whether or not the operating system has an unassigned platform-dependent access key that can be associated with the function identified during block 210. If so, during a “Request Binding” block 214, process 200 requests from the OS one of the available platform-dependent access keys identified during block 212, taking into consideration any preferred bindings information that may be associated with the particular function.
If during “Free Binding?” block 212, process 200 determines that none of the platform-dependent access keys are unassigned, process 200 proceeds to an “Duplicates (“Dups”) Allowed?” block 220 during which process 200 determines whether or not the OS of computer 102 or browser 118, depending upon the entity executing process 200, is configured to allow more than one key sequence to be assigned to a particular access key. In the alternative, the allowance of duplicate bindings may be specified as part of the information associated with particular functions. In addition, bindings can be enabled or disables globally or on an element by element basis. In this example, duplicate bindings are globally enable or disabled, either by the platform or the application requesting the bindings. If duplicates are allowed, process 200 proceeds to Request Binding block 214 during which, as explained above, the OS or browser provides an access key for binding.
During an “Assign Binding” block 216, process 200 associates the current function identified during block 210 with the access keys identified during block 212 or 220 to create a navigation shortcut, or mnemonic attribute. In other words, the particular actions associated with the identified application functions are associated with the corresponding access keys reserved by the corresponding device. One example of programming code the could be employed in an Extensible Markup Language based (XML-based) application such as Extensible Hypertext Markup Language (XHTML) is as follows:
In addition, specific bindings can be reserved for standard navigation actions such as, but not limited to giving focus to a particular document's banner, navigation bar, footer or header. Common navigation actions such as “forward” and “back” may also be associated with these reserved access keys. An application developer or portal designer can then map reserved access keys to browser 118 equivalents without knowing the particular key combinations on the browser 118 necessary for the particular actions. Thus, the claimed subject matter enables the developer and/or designer to provide consistent key navigation across a portal or multiple documents. This feature also enables the creation of genre-specific navigation shortcuts. In other words, common navigation features are based upon a specific genre associated with a particular document or portal. The specification of navigation short cuts corresponding to specific genres of applications or portals is described in detail below in conjunction with
During a “Store Binding” block 218, process 200 stores the binding in memory of computer 102 such as, but not limited to, random access memory (RAM) (not shown) or data storage 112 (
If process 200 determines there are no more application functions to be assigned to access keys during block 208 or determines there are no more unassigned access keys and duplicates are not permitted during block 220, control proceeds to a “Display Bindings” block 222. During block 222, process 200 displays the available key sequences, associated actions and corresponding descriptions, as exemplified and explained below in conjunction with window 260 of
In addition to displaying the bindings each time an application is initiated, the application provides means for the user to initiate the display after initiation. In the alternative, the bindings are only displayed in response to a request from the user and not at application initiation.
Process 240 starts in a “Begin Execute IK Process” block and proceeds immediately to an “Open Page” block 244 during which a web browser, e.g. browser 118 (
During a “Receive Input” block 248, process 240 detects input on the corresponding device, which on computer 102 may take the form of a series of keystrokes entered on keyboard 106 (
During an “Input Assigned?” block 250, process determines whether of not the input received during block 248 corresponds to input that was assigned a binding during block 216 (
It should be noted that that may be more than one binding for a particular input, as explained above in conjunction with Dups Allowed? block 220 (
If in block 252, process 240 determines that there are duplicate bindings associated with the input received during block 248, then control proceeds to a “Determine Context” block 254 during which process 200 associates the appropriate binding to the input based upon the current application that is executing or has focus. In the alternative, duplicate bindings could be associated with a particular input on a cyclic, or “round robin,” basis, i.e. a particular input cycles through the multiple assignments in turn. Once a binding has been associated with the input received in block 248, process 240 proceeds to Execute Action block 256 and processing continues as explained above.
Finally, process 240 is halted by means of an interrupt 262, which passes control to an “End Associate IK Process” block 269 in which process 240 is complete. Interrupt 262 is typically generated when the OS, browser, application, etc. of which process 240 is a part is itself halted. During nominal operation, process 240 continuously loops through the blocks 248, 250, 252, 245 and 256, processing input sequences as a user generates them.
Hot key Assignment list 280 is displayed in window 170 when app—1 114 is first initiated. The initiation may be generated within a graphical user interface (GUI) of the OS or within browser 118, depending upon the particular configuration of computer 102 (
List 280 includes two (2) columns: a Hot Key column 282 and an Action column 284. Hot Key column 282 displays the various input sequences that have been associated with specific access key bindings. Action column 284 displays the particular function action associated with the corresponding input sequence. Of course, additional information may be provided in list 280 or another column, e.g. more detail descriptions of the particular actions provided in column 284.
In this example, there are duplicates in column 282, meaning a particular input sequence is used for more than one function. For example, the key sequence “Alt-J” is employed to initiate a change of focus to tool bar buttons 168 and to a Navigation bar (not shown) associated with 114. In this example, multiple presses of Alt-J would cycle through focus on Tool bar 168 and a display of the Navigation menu.
List 280 is displayed when app—1 114 is first executed. Input/access key bindings may be defined once and stored in a configuration file for each of applications 114 and 118. Each time one of applications 114 or 118 is initiated, list 280 is displayed with currently defined information, either via an execution of process 200 or, in the alternative, from information from the configuration file. A checkbox 286 enables the user to disable the display of list 280 upon execution of app—1 114, for example if the user is already familiar with the particular bindings. App—1 114 also includes means to display list 280 any time app—1 114 is executing. Finally a “Continue” button 288 enables the user to terminate the display of list 280 and continue with the functionality of, in this case, app—1 114.
Process 300 illustrates an embodiment that incorporates elements of process 200 (
Process 300 starts in a “Begin Setup Genre Keys (GK)” block 302 and control proceeds immediately to an “Open Page” block 304. As during open page block 204 (
During a “Retreive Functions” block 324, information about specific functions, stored in conjunction with the application that displays doc—1 116 or, in this example, browser 118, corresponding to the genre determined during block 322 are retrieved. Examples of functionality that might be assigned navigation shortcuts in a finance genre include stocks to watch, an account balance, various stock trading activities and displays of major stock indices. Other genres would include other functionality that is mapped to the available bindings. The following code segments are examples that may be included in browser 118 to define bindings corresponding to particular genres. Code to define an access key is as follows:
<element accesskey=“maincontent”>
In the example above, a standard accesskey is set on an element but “maincontent” is not particular to a genre. In the following example, a standard access key is defined in the head of html content by referencing an element's ID:
<accesskey id=“mymaincontent” purpose=“maincontent”>
An example of a code segment that defines a genre corresponding to a part of a document, i.e. a <div>, is as follows:
In other words, genres are defined based upon the context scope of a particular document or part of a document. This enables multiple uses for any particular access key, with any particular use defines by the context in which the access key is executed.
As illustrated in the example above, a document may have more than one assigned genre. For example, a particular document may display HTML frames and iframes. In one embodiment, the parent document assigns all of its access keys and then child documents assign the keys that remain. In other words, documents assign their input devices in a depth-first order.
Once the genre has been determined during block 322 and the functions corresponding to the genre have been retrieved during block 324, process 300 proceeds to Prioritize Functions block 306, which, as mentioned above, functions in a manner similar to block 206. The remainder of process 300 executes like process 200 with corresponding blocks performing similar functions.
It should be noted that in this example, process 300 does not include a block that corresponds to Display Bindings block 222 (
A hot key Assignment list 350 is displayed in window 360 when the corresponding stock program is executing and the user initiates the display via some defined user interface (not shown). The initiating user interface is typically within a GUI of the OS or within browser 118, depending upon the particular configuration of computer 102 (
List 350 includes two (2) columns: a Hot Key column 352 and an Action column 354. Hot Key column 352 displays the various input sequences that have been associated with specific access key bindings. Action column 354 describes the particular function action associated with the corresponding input sequence. Of course, more information than shown in
In this example, there are duplicates in column 352, meaning a particular input sequence is used for more than one function. For example, the key sequence “Alt-J” is employed to initiate a change of focus to tool bar buttons 168 and to a Navigation bar (not shown) associated with the stock program. In this example, multiple presses of Alt-J would cycle through focus on tool bar 168 and a display of the navigation menu.
List 350 may also be displayed when the corresponding stock program is first executed. Input/access key bindings may be defined once and stored in a configuration file. Finally a “Continue” button 288 enables the user to terminate the display of list 350 and continue with the functionality of, in this case, the corresponding stock program.
Typically, a user may have multiple applications running on a system such as computer system 102 (
While the invention has been shown and described with reference to particular embodiments thereof, it will be understood by those skilled in the art that the foregoing and other changes in form and detail may be made therein without departing from the spirit and scope of the invention, including but not limited to additional, less or modified elements and/or additional, less or modified blocks performed in the same or a different order.