US20100287507A1 - Enabling and Disabling Hotkeys - Google Patents
Enabling and Disabling Hotkeys Download PDFInfo
- Publication number
- US20100287507A1 US20100287507A1 US12/795,514 US79551410A US2010287507A1 US 20100287507 A1 US20100287507 A1 US 20100287507A1 US 79551410 A US79551410 A US 79551410A US 2010287507 A1 US2010287507 A1 US 2010287507A1
- Authority
- US
- United States
- Prior art keywords
- hotkey
- input
- hotkeys
- enabled
- application
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/02—Input arrangements using manually operated switches, e.g. using keyboards or dials
- G06F3/023—Arrangements for converting discrete items of information into a coded form, e.g. arrangements for interpreting keyboard generated codes as alphanumeric codes, operand codes or instruction codes
- G06F3/0238—Programmable keyboards
Definitions
- This document generally relates to input and output systems.
- a user of an application program running on a computing device may interact with the application program through one or more input devices, such as a keyboard or a pointing device.
- the user may cause the application program (“application”) to perform specific functions, such as opening a document, receiving text input in the document, formatting the entered text, saving the document and exiting the application.
- application application
- a user may employ a pointing device to open a drop-down menu in a user interface window associated with the application, then select a “save” function from the drop-down menu.
- Some applications may provide several methods of performing a given function. Some of the methods may be keyboard “shortcuts” that allow the user to perform the function by, for example, concurrently selecting two or more keys. For example, the user may be able to invoke the “save” function of an application by entering a combination of keys, such as “Command” and ‘S,’ or “CTRL” and ‘S.’
- a computing system may receive concurrent input from one or more input devices that correspond to “hotkeys” defined in the computing system. The hotkeys may cause the computing system to perform actions either inside or outside of the currently active application.
- Hotkeys may be used to control various physical aspects of a computing device or various aspects related to an operating system running on the computing device.
- an input device such as a keyboard
- a slider control on an expanded keyboard may allow a user to control magnification of a view of a window associated with an application.
- an expanded keyboard may provide a number of user-configurable buttons that may be associated with various system or application program operations (e.g., buttons that control display brightness; open or close a CD/DVD tray; or launch a particular program, such as an email client, etc.).
- a hotkey may be used to invoke or control an operating system function, such as, for example, to open a task management interface, to open or control a memory manager or monitor, to open or control a CPU performance monitor, to open a registry interface, etc.
- Application developers may enable or disable certain hotkeys during operation of an application (e.g., to improve an overall user experience of the application or to improve system stability). For example, a presentation application that uses a full display screen may be programmed to disable system hotkeys associated with, for example, closing the application. If an application that disables hotkeys crashes without properly restoring the hotkeys' previous state, a substantial loss of functionality may result. Similarly, if an application that enables specialized hotkeys, particularly hotkeys that may not be properly coded or configured, and the application crashes before properly disabling the specialized hotkeys, the computing system may be less stable or predictable.
- Hotkey may refer to a specific input or set of concurrent inputs from one or more input devices that, when enabled, may cause an operation to be performed either within a currently active application on a computing system, within another background application or process running on the computing system, or on the computing system itself (e.g., on physical computing system hardware or on an operating system or background processing running on the computing system); thus, as used herein, the term “hotkey” includes the concept of an application shortcut, and may correspond to input from any input device or combination of input devices (e.g., pointing device, touch screen, voice command processor, keyboard, etc.).
- hotkey may refer both to the specific input or set of concurrent inputs, or to an operation associated with the specific input or set of concurrent inputs that is to be performed if the hotkey is enabled.
- system state for a computing system may be monitored, and hotkeys may be automatically enabled or disabled based on the system state.
- a user may manually disable hotkeys.
- Hotkeys may be grouped to facilitate concurrent processing of multiple hotkeys, and the hotkey groups may be nested or arranged in a hierarchy.
- a computer-implemented method of controlling hotkeys may include associating, in a computing system that runs two or more application programs and that defines a set of hotkeys, the set of hotkeys with a first application program.
- System state of the computing system may be monitored to determine whether the first application is a foreground application, and if the first application is a foreground application, the set of hotkeys may be disabled.
- the computer-implemented method may further include enabling the set of hotkeys if the first application is not the foreground application.
- each hotkey may include a keyboard shortcut, and the keyboard shortcut may include concurrent input from two or more keyboard keys; in some implementations, each hotkey may include specific input from one or more input devices; in some implementations, each hotkey may include two or more inputs that are simultaneously active, where the inputs are provided by at least one of a keyboard, a mouse, a trackball, a stylus, a touch screen or a voice-command processor.
- a computer-implemented method of enabling and disabling hotkeys may include determining whether a computing device is in a specific system state; retrieving a rule associated with the specific system state, if the computing device is in the specific system state; and enabling or disabling one or more operations associated with one or more hotkeys, based on the retrieved rule.
- a computer-implemented method of processing a hotkey operation in a computing device may include receiving input corresponding to a hotkey from one or more input devices; determining whether a group comprising the hotkey is enabled; and if the group is enabled, initiating an operation associated with the hotkey.
- the computer-implemented method may further include determining a system state corresponding to the received input.
- initiating the operation includes retrieving a rule associated with the hotkey and the determined system state, and causing a processor to execute a set of instructions based on the retrieved rule. In some implementations, initiating the operation includes issuing an event to a processor. The event may include an interrupt or an exception.
- a computer program product may include instructions that, when executed, cause a processor to perform operations that include receiving input in a computing system from one or more input devices; determining whether the received input corresponds to a defined and enabled hotkey; appropriately processing the received input, if the received input does not correspond to a defined and enabled hotkey; and if the received input corresponds to a defined and enabled hotkey, initiating an event associated with the defined hotkey.
- determining whether the received input corresponds to a defined and enabled hotkey includes comparing the received input to stored hotkey entries and determining if the received input corresponds to a specific entry.
- the computer program product may further cause a processor to determine whether the specific entry is enabled.
- initiating the event comprises identifying an operation associated with the defined and enabled hotkey and performing the operation. The operation may include at least one of issuing an interrupt to a processor, issuing an exception to a processor, executing specific instructions associated with the operation, setting or clearing a flag in the computing system, or reporting detection of the hotkey to a component of the computing system.
- a computer program product may include instructions that, when executed, cause a processor to perform operations that include monitoring an electronic device to determine whether the electronic device is in a specific state.
- the electronic device may define one or more hotkeys, and each hotkey may correspond to an input from one or more input components of the electronic device. If the electronic device is in the specific state, a rule associated with the specific state may be retrieved, and one or more hotkeys may be enabled or disabled based on the retrieved rule.
- enabling or disabling one or more hotkeys includes enabling or disabling one or more operations associated with corresponding one or more hotkeys.
- a system for managing hotkey events within an electronic device may include an input controller that receives input from one or more input components associated with an electronic device; a monitor that monitors a state of the electronic device; a hotkey manager that stores hotkey definitions for defined hotkeys, hotkey operations associated with the defined hotkeys and status for each hotkey event, where the status indicates whether a corresponding hotkey operation is enabled or disabled; and an enabler and disabler engine that modifies status of one or more hotkey operations based on the monitored state of the electronic device.
- the hotkey manager determines whether received input corresponds to a defined and enabled hotkey, forwards received input to an input processing component of the electronic device if the received input does not correspond to a defined and enabled hotkey, and causes an operation associated with the defined hotkey to be performed if the received input corresponds to a defined and enabled hotkey.
- state may include a state of one or more of an input, an output, an operating system, or an application or process.
- the state of an input may include a current input-component focus, or input that is currently being received by one or more input components.
- the state of an output may include output that is currently displayed in an output device.
- the state of the operating system may include current operating system processes that are running on the device or system.
- the state of an application or process may include a current mode of an application or process, or whether the application or process is a foreground application or process.
- Hotkeys may be managed with little or no user interaction. An overall user experience of a computing system, and of the applications running on the computing system, may be enhanced. Security or usability of a computing system may be improved. Hotkeys may be managed in groups and in hierarchies.
- FIG. 1A is a block diagram of a computing system in which hotkeys may be enabled or disabled.
- FIG. 1B illustrates several example system state rules that may be used to automatically enable or disable hotkeys or groups of hotkeys.
- FIG. 1C illustrates example entries in a table that may be used to manage hotkey groups.
- FIG. 1D illustrates example entries that may appear in a summary status table used to track parameters associated with hotkeys.
- FIG. 2 is a flow diagram illustrating a method that may be used to enable or disable hotkeys or groups of hotkeys.
- FIG. 3 is a flow diagram illustrating a method that may be used to process hotkeys.
- FIG. 4 is a flow diagram illustrating a method that may be used to enable and disable hotkeys based on whether an application program is a foreground application.
- FIG. 5 is a block diagram of a computing device that may be used in the operations described herein.
- Hotkey may refer to a specific input or set of concurrent inputs from one or more input devices that, when enabled, may cause an operation to be performed either within a currently active application on a computing system, within another background application or process running on the computing system, or on the computing system itself (e.g., on physical computing system hardware or on an operating system or background processing running on the computing system); thus, as used herein, the term “hotkey” includes the concept of an application shortcut, and may correspond to input from any input device or combination of input devices (e.g., pointing device, touch screen, voice command processor, keyboard, etc.).
- hotkey may refer both to the specific input or set of concurrent inputs, or to an operation associated with the specific input or set of concurrent inputs that is to be performed if the hotkey is enabled.
- system state for a computing system may be monitored, and hotkeys may be automatically enabled or disabled based on the system state.
- a user may manually disable hotkeys.
- Hotkeys may be grouped to facilitate concurrent processing of multiple hotkeys, and the hotkey groups may be nested or arranged in a hierarchy.
- FIG. 1A is a block diagram of a computing system 100 in which hotkeys may be enabled or disabled.
- the computing system 100 includes a computing device core 101 (e.g., processor, memory, storage devices—see FIG. 5 ), which runs an operating system 104 and various applications 105 , 108 and 109 .
- a user may interact with the computing system 100 , and with the applications 105 , 108 and 109 running on the computing system, through various input devices or components, such as a keyboard 112 and a pointing device 113 (e.g., a mouse, trackball or tablet and stylus), and through various output devices, such as a display screen 116 .
- An input controller 117 and an output controller 120 couple the computing device core 101 to the input devices and output devices, respectively.
- Application A 105 may display a window 121 in the display screen 116 ;
- Application B 108 may display a window 124 in the display screen 116 ;
- Application C 109 may display an icon 125 in the display screen 116 .
- Some applications may run on the computing device core 101 without displaying corresponding windows or icons in the display screen 116 .
- various background processes 128 may run as part of the operating system 104 .
- a specialized background process for example, an application/system monitor 129 , may monitor the overall state of the computing device 100 .
- the application/system monitor 129 may track which applications are running and various information about those applications, as well as information about the general state of the computing device core 101 .
- State of the computing device core 101 may include, for example, background processes 128 that are currently running; application programs 105 , 108 or 109 that are currently running; operating states of running application programs; whether an application program or process is the foreground application or process; application programs 105 and 108 that have corresponding windows 121 and 124 currently displayed in the display screen 116 ; whether a window 121 or 124 is to be associated with a specific state or operation when it is in the foreground; whether a window 121 or 124 is to be associated with a specific state or operation when it is displayed either in the foreground or the background; whether a window, application or process is to be associated with a specific state or operation when it has the focus of an input device; whether a current user is to be associated with a state or set of states; whether a control panel 132 (described below) is currently displayed; whether the computing system 100 is currently receiving input from input devices; various implementation parameters of a hotkey manager 140 (described below); whether an application
- Background processes may provide windows, icons or control panels with which a user may organize, launch and control various applications.
- the computing device 100 may display a control panel 132 (e.g., a dashboard or a “dock”), from which users may quickly launch applications.
- the control panel 132 may display icons representing application programs that are currently active but that have windows in the display screen 116 that are minimized, such as the icon 125 that represents Application C 109 .
- Applications that run in the computing device core 101 may have various states. For example, as described above, an application may be active (e.g., loaded into dynamic memory and possibly executing tasks) but the application may not have a corresponding window displayed on the screen 116 ; instead, the application may be associated with a minimized icon, such as the icon 125 . As another example, an application may be active, have a corresponding window in the display screen 116 , and may be in one of two states: the application may be a “foreground” application, or the application may be a “background” application. As another example, an application may have various operating states, such as an authentication state (e.g., in which a user may be required to enter a password), an input entry state, a processing state, etc.).
- an authentication state e.g., in which a user may be required to enter a password
- an input entry state e.g., a processing state, etc.
- Form application may refer to an application that is currently configured to receive certain input, such as input from a keyboard. Such an application may be referred to as having the “keyboard focus” (or “focus” of other input devices) of the computing system 100 , meaning any keyboard input that is received is likely to be routed to that application.
- a foreground application may be an application whose corresponding window is displayed on top (i.e., in the “foreground”) of other application windows. As shown, application A 105 , with its corresponding window 121 , is the foreground application.
- background application may refer to an active application that has a corresponding window on the screen 116 but that is not the foreground application.
- Application B 108 with its corresponding window 124 , is a background application.
- Windows associated with background applications may be physically behind (i.e., in the background) a window associated with the foreground application.
- a user may change the state of an application from background to foreground in one of a number of ways.
- a user may manipulate the pointing device 113 to control the position of a cursor, or pointer 133 , on the screen 116 to be within a visible portion of a desired window.
- the user may “click” a button associated with the pointing device 113 to select a corresponding application to activate as the foreground application.
- additional input such as a click from the pointing device 113 , may activate the corresponding application B 108 as the foreground application.
- an application may be activated as a foreground application through input from the keyboard 112 .
- the combination of an ALT key (or a CMD key) and a TAB key may cause the computing system to display a window 134 having various icons 135 and 138 that represent the applications that are currently running on the computing device. If a user holds down the ALT key while releasing and subsequently depressing the TAB key, a selector 139 may be advanced. When the user releases both the ALT and the TAB keys, the application corresponding to the current position of the selector 139 may become (or remain) the foreground application.
- hotkeys may be defined to allow a user to efficiently perform various tasks in the computing system.
- the “ALT-TAB hotkey” may allow a user to navigate from a first application to a second application, thereby causing the second application to become the foreground application.
- the two shaded keys 136 may represent a particular hotkey (e.g., CMD-TAB).
- Other combinations of keys may be defined as other hotkeys.
- Some hotkeys may be associated with operating system tasks. For example, a hotkey may be used to invoke a memory management or reporting interface, to start or stop an operating system performance monitor, to open a registry interface, or to perform other tasks related to an application program, the operating system or the physical computing device.
- the term “hotkey,” as used herein, may refer to specific input or concurrent input from one or more input devices.
- a combination of input from the keyboard 112 and input from the pointing device 113 such as the combination 137 of the shaded key and the shaded button on the pointing device 113 (e.g., CTRL-click), may be associated with a hotkey.
- a computing system in which hotkeys are defined may employ a hotkey manager 140 to process hotkey input.
- the hotkey manager 140 may associate various hotkeys with various applications in the computing system 100 .
- the hotkey manager 140 may include an event processor 141 that correlates an appropriate system operation with each hotkey.
- the event processor 141 may cause a corresponding operation to be executed.
- the event processor 141 may issue instructions to a kernel 142 in the computing device core 101 .
- the event processor 141 may simply report detection of hotkey input to another computing system component, without directly causing the computing system to process the hotkey input.
- hotkeys may be processed in various ways. For example, hotkeys may be enabled or disabled. To enable or disable hotkeys, the hotkey manager 140 may employ an enabler/disabler engine 144 . Hotkeys may be grouped, and hotkeys within a group may be processed together. For example, a group of hotkeys may be collectively enabled or disabled. Hotkeys, or groups of hotkeys, may be configured in a hierarchical manner.
- a first group of hotkeys and a second group of hotkeys may be organized within a third group; if the third group (top of the hierarchy) is disabled, all hotkeys within the first and second groups may be disabled; on the other hand, if the third group is enabled, the first and second group of hotkeys may be enabled or disabled independently of one another.
- the hotkey manager 140 may employ a group manager 145 .
- Groups of hotkeys may also be automatically enabled or disabled. That is, the computing device 100 may automatically enable or disable a group of hotkeys based on some aspect of the system state of the computing system 100 .
- the hotkey manager 140 may automatically enable or disable groups of hotkeys based on which application is the foreground application. To automatically enable or disable groups of hotkeys, the hotkey manager 140 may employ system state rules 148 in conjunction with the enabler/disabler engine 144 .
- the hotkey manager 140 may maintain a summary status table 149 .
- the summary status table 149 may capture various information about hotkeys, such as hotkeys that are defined in the computing system 100 , groups the hotkeys are in, the operations associated with the hotkeys, and the status of the hotkeys or of their corresponding operations (e.g., enabled or disabled).
- the hotkey manager 140 may analyze the summary status table 149 to determine whether to launch an operation that is associated with the hotkey input.
- the functional blocks in the computing system 100 may be arranged differently than they are shown in FIG. 1A .
- the input controller 117 is shown as a distinct component, separate from the hotkey manager 140 .
- the components 117 and 140 may be integrated into a single component, partially integrated, or arranged differently than shown.
- the various other components of the computing device core 101 may be arranged differently.
- the precise design of the hotkey manager 140 or of the example computing system 100 is not critical to this document and can take any suitable form.
- FIG. 1B illustrates several example system state rules 148 that may be used to automatically enable or disable hotkeys or groups of hotkeys.
- an example rule 152 specifies that the “Group B” hotkeys should be enabled if Application B is the foreground application; if Application B is not the foreground application, then the Group B hotkeys are to be disabled.
- rule 153 specifies that the “Group D” hotkeys are to be enabled if a particular system navigation element is displayed, and disabled if the system navigation element is not displayed.
- a system navigation element may include the control panel 132 ; in such a case, Group D hotkeys would be enabled anytime the control panel 132 is displayed on the screen 116 .
- the Group D hotkeys may be disabled (e.g., since the navigation element would not be present). Disabling hotkeys during a presentation mode may prevent inadvertent disruption of the presentation.
- rule 156 specifies that “Group C” hotkeys are to be enabled when Application B has an open user interface window, and disabled when Application B does not have an open user interface window.
- window 124 is “open,” even though it does not correspond to the foreground application.
- Group C would be enabled, since Application B has an open window.
- icon 125 corresponding to application C 109 , is minimized and does not have an open window; if the rule 156 were associated with Application C, rather than with Application B, then Group C hotkeys would be disabled.
- FIG. 1C illustrates example entries that may appear in a table 157 in the group manager 145 .
- the table 157 lists each group 160 of hotkeys, the individual hotkeys 161 corresponding to a group, and a status of the group of hotkeys (e.g., enabled or disabled).
- a group may include a single hotkey (e.g., Group A), or a group may include multiple hotkeys (e.g., Group B).
- a hotkey may be part of more than one group (e.g., HOTKEY — 1).
- a hotkey that appears in more than one group may be associated with multiple operations, depending on context.
- HOTKEY — 1 may be associated with one operation in the context of Group A, and another operation in the context of Group B.
- Hotkey groups may also include other groups of hotkeys (e.g., Group E). That is, as described above, hotkeys may be arranged hierarchically. The status 164 of a highest-level group in the hierarchy may apply to each hotkey or group of hotkeys in lower levels of the hierarchy.
- FIG. 1D illustrates example entries that may appear in a summary status table 149 .
- the summary status table 149 includes a column 165 of hotkeys and a column 168 of operations corresponding to each hotkey.
- the operations 168 may be events or operations that occur when the computing system 100 receives hotkey input, and the corresponding hotkey is enabled.
- An operation may be a series of instructions that are executed by the kernel 142 , or an operation may result in a change in state of some aspect of the computing device 100 .
- the operations may be “published,” or “pushed” to an application or a portion of the computing system 100 .
- the operation may cause an interrupt or an exception to be issued to the kernel 142 .
- the operation may be “pulled” from kernel 142 or by a specific operation.
- an operation may set or clear a flag associated with the computing system 100 or with a specific application, and a component of the computing system 100 or the specific application may periodically poll the flag to determine its state.
- the operation may simply report detection of hotkey input, or detection of hotkey input associated with an enabled hotkey; that is, in some implementations, the hotkey manager 141 may simply pass hotkey input to another device or computing system component, without directly performing a function or operation associated with the hotkey input.
- the table 149 further includes a column 169 of groups with which each hotkey may be associated.
- groups may be arranged in hierarchies (e.g., the hotkeys in Groups C and D may also be part of Group E).
- the table 149 includes a column 172 of flags associated with each hotkey; individual flags may indicate whether a hotkey is enabled. For example, as shown, HOTKEY — 1 is enabled relative to Group B, but HOTKEY — 1 is disabled relative to Group A. Whether a hotkey is enabled or disabled may be determined by several factors, including, for example, overall group parameters (see column 164 in FIG. 1C ) and system state rules (see table 148 in FIG. 1B ). In particular, referring to the rule 156 in FIG. 1B , Group C is shown as enabled, since Application B has an open user interface window (window 124 in FIG. 1A ); however, Group E, which includes Group C (see table 145 in FIG. 1C ) is disabled; therefore, hotkeys in Groups C, D and E are disabled because of the hierarchy, even though Group C hotkeys would otherwise be enabled.
- a hotkey may be associated with a priority, as depicted by the priority column 173 .
- a priority value may allow the hotkey manager 140 to properly handle a hotkey that is common to two distinct groups or operations. For example, as shown, HOTKEY — 1 is common to both Group A and Group B, and is associated with either OPERATION — 1A or OPERATION — 1B, depending on the group. If both Group A and Group B were enabled, the hotkey manager 140 may use the priority flag 173 to determine which operation—OPERATION — 1A or OPERATION — 1B—to perform. In some implementations, a hotkey may have a priority, even if the hotkey is only associated with a single operation.
- HOTKEY — 5 and HOTKEY — 6 are shown as having a priority value of ‘1,’ even though each hotkey is only associated with a single operation.
- a priority value associated with a hotkey's definition that is not initially “overloaded” may enable the hotkey manager 140 to preserve a priority associated with a specific operation, even if additional operations are subsequently assigned to the hotkey.
- a hotkey may further be associated with a filter value, as depicted by the filter column 176 .
- a filter value may focus a hotkey's relevance to, for example, a particular function, application, operating system thread or process, or portion of the computing system 100 .
- OPERATION — 1A associated with HOTKEY — 1
- may only be relevant to system operations e.g., operating system background processes 128 , rather than processes associated with specific applications.
- OPERATION — 1B also associated with HOTKEY — 1, may only be relevant to application A.
- hotkey input corresponding to enabled hotkeys may be pushed to or pulled from all corresponding applications, regardless of a priority value. For example, in some implementations, if both Group A and Group B were enabled, and the computing system 100 received HOTKEY — 1 input, the OPERATION — 1A may be pushed to or pulled from the system, and OPERATION — 1B may be pushed to or pulled from Application A—regardless of priority. In some implementations, only a single operation (or a number equal to less than the total number of enabled “subscribers”) may be pushed to or pulled from an application or system process, based on a priority 173 value. For example, in some implementations, if both Group A and Group B were enabled, and the computing system 100 received HOTKEY — 1 input, only the OPERATION — 1A may be pushed to or pulled from the system.
- an individual hotkey may be manually enabled or disabled by user input.
- the table 149 includes a user-override column 177 that may cause one or more hotkeys to be enabled or disabled, independent of the status or group of which the hotkey is a member.
- HOTKEY — 3 is shown as disabled in the user-override column 177 , even though Group B, of which HOTKEY — 3 is a member, is enabled.
- a user-override may only persist for a specific period of time.
- the hotkey manager 140 may employ system state rules 148 and the enabler/disabler engine 144 to periodically reevaluate and possibly modify user-override values 177 —as well as filter values 176 , priority values 173 , group assignments 169 and status flags 172 . In this manner, the hotkey manager 140 may cause the computing system 100 to be more deterministic and resistant to application error or user-configuration error.
- each of the system state rules 148 , the hotkey group manager 145 and the hotkey status and operation table 149 may have a corresponding configuration window (not shown in the figures) through which a user may customize various aspects of the hotkey manager 140 .
- a user may override individual hotkey states with a user-override value 177 .
- a user may enter or modify system state rules 148 through a user interface associated with the hotkey manager 140 .
- a user may assign or reassign hotkey group assignments and group states (e.g., the assignments and states that are shown in table 157 in FIG. 1C ) through a user interface associated with the hotkey manager 140 .
- FIG. 2 is a flow diagram illustrating a method 200 that may be used to enable or disable a hotkey or a group of hotkeys in a computing system. Using the method 200 , a computing system may automatically enable or disable hotkeys.
- system state may refer to any aspect of the hardware, operating system or application program state of the computing system 100 .
- system state may refer to any aspect of the hardware, operating system or application program state of the computing system 100 .
- the system state may include background processes 128 that are currently running; application programs 105 , 108 or 109 that are currently running; operating states of running application programs; whether an application program or process is the foreground application or process; application programs 105 and 108 that have corresponding windows 121 and 124 currently displayed in the display screen 116 ; whether a window 121 or 124 is to be associated with a specific state or operation when it is in the foreground; whether a window 121 or 124 is to be associated with a specific state or operation when it is displayed either in the foreground or the background; whether a window, application or process is to be associated with a specific state or operation when it has the focus of an input device; whether a current user is to be associated with a state or set of states; whether a control panel 132 (described below) is currently displayed; whether the computing system 100 is currently receiving input from input devices; various implementation parameters of a hotkey manager 140 (described below); whether an application has unexpectedly terminated (e.g., “crashed”)
- the application/system monitor 129 may include various “trigger” states that, when detected, may cause the hotkey manager 140 to retrieve a rule from the system state rules 148 corresponding to the detected state. More particularly, the application/system monitor 129 may monitor ( 205 ) the computing system 100 , detect ( 208 ) that a specific system navigation element (e.g., the control panel 132 ), or another element, is displayed on the display screen 116 , and retrieve ( 211 ) the rule 153 associated with the detected system navigation input.
- a specific system navigation element e.g., the control panel 132
- the method 200 may enable or disable ( 214 ) one or more hotkeys operations.
- the hotkey manager 140 may enable the Group D hotkeys and their corresponding operations.
- the hotkey manager 140 may employ the enabler/disabler engine 144 to update, if necessary, the group flags 164 in the table 157 (see FIG. 1C ). Updates to the group flags 164 may affect other flags, such as the overall hotkey flags 172 (see FIG. 1D ).
- the flags 172 are not affected by the enabler/disabler engine 144 update of the flag 164 associated with Group D, since a group higher in the hierarchy (Group E) is disabled.
- the hotkey manager may provide the computing system 100 with more stability and determinism. Moreover, the computing system 100 may be more secure and user-friendly. For example, if an application program enables or disables certain hotkeys, then crashes before restoring the hotkeys, performance or functionality of the computing system 100 may be adversely impacted. Similarly, performance or functionality of the computing system 100 may be adversely impacted if application program code that affects or implements hotkeys is corrupted or poorly written. By automatically enabling or disabling hotkeys, the hotkey manager 140 may mitigate impact on performance or functionality by restoring status of hotkeys following an application program crash or following evaluation of corrupted or poorly written programming code.
- system state of the computing system 100 may be monitored ( 205 ) periodically.
- the application/system monitor 129 may be scheduled to run periodically with a specific period (e.g., the application/system monitor 129 may run every few seconds, every few minutes, etc.). The period may be user-configurable or may itself depend on system state.
- system state of the computing device 100 may be monitored ( 205 ) in response to certain events. For example, the application/system monitor 129 may run every time a new application is activated, an application terminates (e.g., naturally, or as a result of a “crash”); a window associated with an application is opened, moved or closed; or input is received in the computing system 100 .
- FIG. 3 is a flow diagram illustrating a method 300 that may be used to process hotkey input and other input. Using the method 300 , a computing system may perform an operation associated with a hotkey, according to status of the corresponding hotkey.
- the method 300 initially determines ( 301 ) whether to accept input. For example, referring to FIG. 1A , the input controller 117 may enable or disable receipt of all input from one or more input devices. If the method 300 is accepting input, then upon receiving ( 304 ) input, the method 300 may determine ( 307 ) whether the input is a defined hotkey. For example, the input controller 117 may receive discrete input from a single key on the keyboard 112 or input corresponding to movement of the pointing device 113 , and the input controller 117 may determine that the received input does not correspond to a defined hotkey. More particularly, the method 300 may compare the received input to entries in the summary and status table 149 to determine whether the received input corresponds to a specific entry. If not, the input controller 117 may then process ( 310 ) the non-hotkey input accordingly, such as by forwarding the input to the computing device core 101 for further processing.
- the input controller 117 may enable or disable receipt of all input from one or more input devices. If the method 300 is accepting input, then upon
- the input controller 117 may receive concurrent multiple input corresponding to a hotkey, such as, for example ALT-TAB 136 input or a CTRL-click 137 .
- the input controller 117 may identify such concurrent multiple input as a hotkey based on entries in the overall status table 149 .
- the column 165 in FIG. 1D displays hotkeys as “HOTKEY_N,” this label may represent actual input, such as an ALT-TAB 136 or a CTRL-click 137 .
- the table 149 may inherently define the hotkeys and store definitions of the hotkeys.
- a hotkey includes concurrent multiple input (e.g., two discrete but concurrent inputs), but in some implementations, a hotkey may be associated with a single discrete input.
- a hotkey may be associated with input from a single key or button on the keyboard 112 , such as, for example, a multimedia “mute” button, or a view-magnification slider control.
- the method 300 may retrieve ( 313 ) system state information corresponding to the received hotkey. For example, upon determining ( 307 ) that particular received input is a hotkey, the input controller 117 may cause the hotkey manager 140 to obtain system state from the application/system monitor 129 . Relevant system state may include, for example, an application program that is currently a foreground application, or an application program that currently has a focus associated with the keyboard 112 or with another input device. In some implementations, system state may be pertinent to “filtering” the relevance of the hotkey (see the filter column 176 in FIG. 1D ).
- the method 300 may determine ( 316 ) whether the hotkey is enabled. If the hotkey is not enabled, the method 300 may not take further action. If the hotkey is enabled, the method 300 may issue ( 319 ) an event or otherwise initiate an operation associated with the received hotkey. For example, the hotkey manager 140 may determine ( 316 ) whether a received hotkey is enabled by analyzing the summary status table 149 . In particular, the event processor 141 may analyze the summary flag 172 associated with a hotkey, and may further analyze whether the summary flag 172 is overridden by a user-override flag 177 . If the hotkey is enabled and not subject to a user-override, the event processor 141 may cause a corresponding operation 168 to be performed.
- the operation may involve issuing an interrupt or exception to the kernel 142 , executing certain instructions in the kernel 142 , or setting or clearing a flag in the computing system 100 that may be polled by some other portion of the computing system 100 or by an application program running on the computing system 100 .
- the operation may initiate another action, such as reporting detection of hotkey input without directly processing the hotkey input.
- FIG. 4 is a flow diagram illustrating a method 400 that may be used to enable and disable hotkeys based on whether an application program is a foreground application.
- the method 400 provides a specific example of the general method 300 that may be used to process hotkeys.
- the method 400 associates ( 401 ) one or more sets of hotkeys with a first application. For example, associations may be made between HOTKEY — 1, Group A and a system process; other associations may be made between HOTKEY — 1, Group B and Application A.
- a filter value 176 associating a hotkey 165 with an application or with a portion of the computing system 100 may be stored in the summary status table 149 .
- the association may be made automatically, for example, by the hotkey manager 140 , which may employ the system state rules 148 .
- the association may be made by a user, employing a user interface corresponding to the hotkey manager 140 .
- the method 400 monitors ( 404 ) system state of the computing system and determines ( 407 ) whether the first application is the foreground application. For example, referring to FIG. 1A , the application/system monitor 129 may monitor application state to determine ( 407 ) if Application A 105 is the foreground application. If the first application (e.g., Application A) is the foreground application, as shown in FIG. 1A , then the method 400 may disable ( 410 ) a set of input device hotkeys. For example, the enabler/disabler engine 144 may disable ( 410 ) the Group A hotkeys by modifying values in the table 157 (see FIG. 1C ) and the corresponding values in the summary status table 149 (see FIG. 1D ).
- the enabler/disabler engine 144 may disable ( 410 ) the Group A hotkeys by modifying values in the table 157 (see FIG. 1C ) and the corresponding values in the summary status table 149 (see FIG. 1D
- the method 400 may enable ( 413 ) a set of hotkeys.
- the enabler/disabler engine 144 may enable ( 413 ) the Group B hotkeys by modifying values in the table 157 and the summary status table 149 .
- operations corresponding to the hotkeys that are disabled ( 410 ) or enabled ( 413 ) may be different (e.g., OPERATION — 1A and OPERATION — 1B) but may be associated with a common hotkey (e.g., HOTKEY — 1).
- operations corresponding to the hotkeys that are disabled ( 410 ) or enabled ( 413 ) may be the same.
- system hotkeys such as media player control hotkeys, may be disabled ( 410 ) when an application is the foreground application, and enabled ( 413 ) when the application is not the foreground application.
- the method 400 may determine ( 416 ) whether to continue monitoring the system. In a manner similar to that described with reference to FIG. 3 , the method 400 may monitor the computing system 100 in response to specific events (e.g., activation or termination of an application; opening, closing or moving of a user interface window; receipt of input in the computing system; etc.). Or, the method 400 may periodically monitor the computing system 100 .
- specific events e.g., activation or termination of an application; opening, closing or moving of a user interface window; receipt of input in the computing system; etc.
- the method 400 may periodically monitor the computing system 100 .
- FIG. 5 is a block diagram of a computing device 500 that may be used in the operations described herein.
- the computing device 500 includes a processor 510 , a memory 520 , a storage device 530 and an input/output device 540 .
- Each of the components 510 , 520 , 530 and 540 are interconnected using a system bus 550 .
- the processor 510 is capable of processing instructions for execution within the computing device 500 .
- the processor 510 is a single-threaded processor.
- the processor 510 is a multi-threaded processor.
- the processor 510 is capable of processing instructions stored in the memory 520 or on the storage device 530 to display graphical information for a user interface on the input/output device 540 .
- the memory 520 stores information within the computing device 500 .
- the memory 520 is a computer-readable medium.
- the memory 520 is a volatile memory unit.
- the memory 520 is a non-volatile memory unit.
- the storage device 530 is capable of providing mass storage for the computing device 500 .
- the storage device 530 is a computer-readable medium.
- the storage device 530 may be a floppy disk device, a hard disk device, an optical disk device, a tape device, or a block of non-volatile memory.
- the input/output device 540 provides input/output operations for the computing device 500 .
- the input/output device 540 includes a keyboard component and/or pointing device component.
- the input/output device 540 includes a display unit for displaying graphical user interfaces.
- Apparatus may be implemented in a computer program product tangibly embodied in an information carrier, e.g., in a machine-readable storage device or in a propagated signal, for execution by a programmable processor; and actions of the method may be performed by a programmable processor executing a program of instructions to perform functions of the invention by operating on input data and generating output.
- Implementations may include one or more computer programs that are executable on a programmable system including at least one programmable processor coupled to receive data and instructions from, and to transmit data and instructions to, a data storage system, at least one input device, and at least one output device.
- a computer program is a set of instructions that may be used, directly or indirectly, in a computer to perform a certain activity or bring about a certain result.
- a computer program may be written in any form of programming language, including compiled or interpreted languages, and it may be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment.
- Suitable processors for the execution of a program of instructions include, by way of example, both general and special purpose microprocessors, and the sole processor or one of multiple processors of any kind of computer.
- a processor will receive instructions and data from a read-only memory or a random access memory or both.
- Elements of a computer may include a processor for executing instructions and one or more memories for storing instructions and data.
- a computer will also include, or be operatively coupled to communicate with, one or more mass storage devices for storing data files; such devices include magnetic disks, such as internal hard disks and removable disks; magneto-optical disks; and optical disks.
- Storage devices suitable for tangibly embodying computer program instructions and data include all forms of non-volatile memory, including by way of example semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks.
- semiconductor memory devices such as EPROM, EEPROM, and flash memory devices
- magnetic disks such as internal hard disks and removable disks
- magneto-optical disks and CD-ROM and DVD-ROM disks.
- the processor and the memory may be supplemented by, or incorporated in, ASICs (application-specific integrated circuits).
- ASICs application-specific integrated circuits
- a computing device may include a display device such as a CRT (cathode ray tube) or LCD (liquid crystal display) monitor for displaying information to the user and a keyboard and a pointing device such as a mouse or a trackball by which the user may provide input to the computer.
- a display device such as a CRT (cathode ray tube) or LCD (liquid crystal display) monitor for displaying information to the user and a keyboard and a pointing device such as a mouse or a trackball by which the user may provide input to the computer.
- Apparatus and methods disclosed herein may be implemented in a computing system that includes a back-end component, such as a data server; or that includes a middleware component, such as an application server or an Internet server; or that includes a front-end component, such as a client computer having a graphical user interface or an Internet browser, or any combination of them.
- the components of the system may be connected by any form or medium of digital data communication such as a communication network. Examples of communication networks include, e.g., a LAN, a WAN, and the computers and networks forming the Internet.
- the computing system may include clients and servers.
- a client and server are generally remote from each other and typically interact through a network, such as the described one.
- the relationship of client and server may arise by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
- the computing system may be embodied in a portable device, such as a handheld electronic device (e.g., a personal digital assistant) or a mobile communication device (e.g., a cell phone or smartphone).
- a portable device such as a handheld electronic device (e.g., a personal digital assistant) or a mobile communication device (e.g., a cell phone or smartphone).
- non-volatile memory such as, for example, flash memory, EEPROM or removable storage media may provide mass storage to the computing system.
- a mass storage device may be provided outside of the computing system, and data in the mass storage device may be accessible to the computing system via an interface, such as a wireless interface, a wired interface, or a card or device reader interface.
Abstract
A computer program product may include instructions that, when executed, cause a processor to perform operations that include monitoring an electronic device to determine whether the electronic device is in a specific state. The electronic device may define one or more hotkeys, and each hotkey may correspond to an input from one or more input components of the electronic device. If the electronic device is in the specific state, a rule associated with the specific state may be retrieved, and one or more hotkeys may be enabled or disabled based on the retrieved rule. In some implementations, enabling or disabling one or more hotkeys includes enabling or disabling one or more operations associated with corresponding one or more hotkeys.
Description
- This application claims the benefit under 35 U.S.C. §120(e) of U.S. patent application Ser. No. 11/327,839, titled “Enabling and Disabling Hotkeys,” filed Jan. 6, 2006, which is incorporated here by reference.
- This document generally relates to input and output systems.
- A user of an application program running on a computing device (e.g., a word processing program) may interact with the application program through one or more input devices, such as a keyboard or a pointing device. By entering specific input, the user may cause the application program (“application”) to perform specific functions, such as opening a document, receiving text input in the document, formatting the entered text, saving the document and exiting the application. For example, to save a document that is currently open, a user may employ a pointing device to open a drop-down menu in a user interface window associated with the application, then select a “save” function from the drop-down menu.
- Some applications may provide several methods of performing a given function. Some of the methods may be keyboard “shortcuts” that allow the user to perform the function by, for example, concurrently selecting two or more keys. For example, the user may be able to invoke the “save” function of an application by entering a combination of keys, such as “Command” and ‘S,’ or “CTRL” and ‘S.’ In addition to shortcuts within a specific application, a computing system may receive concurrent input from one or more input devices that correspond to “hotkeys” defined in the computing system. The hotkeys may cause the computing system to perform actions either inside or outside of the currently active application.
- Hotkeys may be used to control various physical aspects of a computing device or various aspects related to an operating system running on the computing device. For example, an input device, such as a keyboard, may include specialized keys or buttons that, for example, mute or adjust volume associated with an audio output device. As another example, a slider control on an expanded keyboard may allow a user to control magnification of a view of a window associated with an application. As another example, an expanded keyboard may provide a number of user-configurable buttons that may be associated with various system or application program operations (e.g., buttons that control display brightness; open or close a CD/DVD tray; or launch a particular program, such as an email client, etc.). As another example, a hotkey may be used to invoke or control an operating system function, such as, for example, to open a task management interface, to open or control a memory manager or monitor, to open or control a CPU performance monitor, to open a registry interface, etc.
- Application developers may enable or disable certain hotkeys during operation of an application (e.g., to improve an overall user experience of the application or to improve system stability). For example, a presentation application that uses a full display screen may be programmed to disable system hotkeys associated with, for example, closing the application. If an application that disables hotkeys crashes without properly restoring the hotkeys' previous state, a substantial loss of functionality may result. Similarly, if an application that enables specialized hotkeys, particularly hotkeys that may not be properly coded or configured, and the application crashes before properly disabling the specialized hotkeys, the computing system may be less stable or predictable.
- This document generally relates to methods, apparatus and computer program products for enabling or disabling hotkeys or operations associated with hotkeys. “Hotkey,” as used herein, may refer to a specific input or set of concurrent inputs from one or more input devices that, when enabled, may cause an operation to be performed either within a currently active application on a computing system, within another background application or process running on the computing system, or on the computing system itself (e.g., on physical computing system hardware or on an operating system or background processing running on the computing system); thus, as used herein, the term “hotkey” includes the concept of an application shortcut, and may correspond to input from any input device or combination of input devices (e.g., pointing device, touch screen, voice command processor, keyboard, etc.). Moreover, “hotkey” may refer both to the specific input or set of concurrent inputs, or to an operation associated with the specific input or set of concurrent inputs that is to be performed if the hotkey is enabled. In some implementations, system state for a computing system may be monitored, and hotkeys may be automatically enabled or disabled based on the system state. In some implementations, a user may manually disable hotkeys. Hotkeys may be grouped to facilitate concurrent processing of multiple hotkeys, and the hotkey groups may be nested or arranged in a hierarchy.
- This document hereby incorporates by reference application Ser. No. 11/020,875,entitled “Window Server Event Taps,” client reference P3581, which was filed on Dec. 22, 2004, by Michael James Paquette.
- In one general aspect, a computer-implemented method of controlling hotkeys may include associating, in a computing system that runs two or more application programs and that defines a set of hotkeys, the set of hotkeys with a first application program. System state of the computing system may be monitored to determine whether the first application is a foreground application, and if the first application is a foreground application, the set of hotkeys may be disabled. The computer-implemented method may further include enabling the set of hotkeys if the first application is not the foreground application.
- In some implementations, each hotkey may include a keyboard shortcut, and the keyboard shortcut may include concurrent input from two or more keyboard keys; in some implementations, each hotkey may include specific input from one or more input devices; in some implementations, each hotkey may include two or more inputs that are simultaneously active, where the inputs are provided by at least one of a keyboard, a mouse, a trackball, a stylus, a touch screen or a voice-command processor.
- In another general aspect, a computer-implemented method of enabling and disabling hotkeys may include determining whether a computing device is in a specific system state; retrieving a rule associated with the specific system state, if the computing device is in the specific system state; and enabling or disabling one or more operations associated with one or more hotkeys, based on the retrieved rule.
- In another general aspect, a computer-implemented method of processing a hotkey operation in a computing device may include receiving input corresponding to a hotkey from one or more input devices; determining whether a group comprising the hotkey is enabled; and if the group is enabled, initiating an operation associated with the hotkey. The computer-implemented method may further include determining a system state corresponding to the received input.
- In some implementations, initiating the operation includes retrieving a rule associated with the hotkey and the determined system state, and causing a processor to execute a set of instructions based on the retrieved rule. In some implementations, initiating the operation includes issuing an event to a processor. The event may include an interrupt or an exception.
- In another general aspect, a computer program product may include instructions that, when executed, cause a processor to perform operations that include receiving input in a computing system from one or more input devices; determining whether the received input corresponds to a defined and enabled hotkey; appropriately processing the received input, if the received input does not correspond to a defined and enabled hotkey; and if the received input corresponds to a defined and enabled hotkey, initiating an event associated with the defined hotkey.
- In some implementations, determining whether the received input corresponds to a defined and enabled hotkey includes comparing the received input to stored hotkey entries and determining if the received input corresponds to a specific entry. The computer program product may further cause a processor to determine whether the specific entry is enabled. In some implementations, initiating the event comprises identifying an operation associated with the defined and enabled hotkey and performing the operation. The operation may include at least one of issuing an interrupt to a processor, issuing an exception to a processor, executing specific instructions associated with the operation, setting or clearing a flag in the computing system, or reporting detection of the hotkey to a component of the computing system.
- In another general aspect, a computer program product may include instructions that, when executed, cause a processor to perform operations that include monitoring an electronic device to determine whether the electronic device is in a specific state. The electronic device may define one or more hotkeys, and each hotkey may correspond to an input from one or more input components of the electronic device. If the electronic device is in the specific state, a rule associated with the specific state may be retrieved, and one or more hotkeys may be enabled or disabled based on the retrieved rule. In some implementations, enabling or disabling one or more hotkeys includes enabling or disabling one or more operations associated with corresponding one or more hotkeys.
- In another general aspect, a system for managing hotkey events within an electronic device may include an input controller that receives input from one or more input components associated with an electronic device; a monitor that monitors a state of the electronic device; a hotkey manager that stores hotkey definitions for defined hotkeys, hotkey operations associated with the defined hotkeys and status for each hotkey event, where the status indicates whether a corresponding hotkey operation is enabled or disabled; and an enabler and disabler engine that modifies status of one or more hotkey operations based on the monitored state of the electronic device.
- In some implementations, the hotkey manager determines whether received input corresponds to a defined and enabled hotkey, forwards received input to an input processing component of the electronic device if the received input does not correspond to a defined and enabled hotkey, and causes an operation associated with the defined hotkey to be performed if the received input corresponds to a defined and enabled hotkey.
- In some implementations, state may include a state of one or more of an input, an output, an operating system, or an application or process. The state of an input may include a current input-component focus, or input that is currently being received by one or more input components. The state of an output may include output that is currently displayed in an output device. The state of the operating system may include current operating system processes that are running on the device or system. The state of an application or process may include a current mode of an application or process, or whether the application or process is a foreground application or process.
- Advantages of the systems and techniques described herein may include any or all of the following. Computing system stability may be improved; in particular, the effect on hotkey functionality of application crashes or application bugs may be mitigated. Hotkeys may be managed with little or no user interaction. An overall user experience of a computing system, and of the applications running on the computing system, may be enhanced. Security or usability of a computing system may be improved. Hotkeys may be managed in groups and in hierarchies.
- The general and specific aspects may be implemented using a system, a method, or a computer program, or any combination of systems, methods, and computer programs. The details of one or more embodiments are set forth in the accompanying drawings and the description below.
- These and other aspects will now be described in detail with reference to the following drawings.
-
FIG. 1A is a block diagram of a computing system in which hotkeys may be enabled or disabled. -
FIG. 1B illustrates several example system state rules that may be used to automatically enable or disable hotkeys or groups of hotkeys. -
FIG. 1C illustrates example entries in a table that may be used to manage hotkey groups. -
FIG. 1D illustrates example entries that may appear in a summary status table used to track parameters associated with hotkeys. -
FIG. 2 is a flow diagram illustrating a method that may be used to enable or disable hotkeys or groups of hotkeys. -
FIG. 3 is a flow diagram illustrating a method that may be used to process hotkeys. -
FIG. 4 is a flow diagram illustrating a method that may be used to enable and disable hotkeys based on whether an application program is a foreground application. -
FIG. 5 is a block diagram of a computing device that may be used in the operations described herein. - Like reference symbols in the various drawings indicate like elements.
- This document generally relates to methods, apparatus and computer program products for enabling or disabling hotkeys or operations associated with hotkeys. “Hotkey,” as used herein, may refer to a specific input or set of concurrent inputs from one or more input devices that, when enabled, may cause an operation to be performed either within a currently active application on a computing system, within another background application or process running on the computing system, or on the computing system itself (e.g., on physical computing system hardware or on an operating system or background processing running on the computing system); thus, as used herein, the term “hotkey” includes the concept of an application shortcut, and may correspond to input from any input device or combination of input devices (e.g., pointing device, touch screen, voice command processor, keyboard, etc.). Moreover, “hotkey” may refer both to the specific input or set of concurrent inputs, or to an operation associated with the specific input or set of concurrent inputs that is to be performed if the hotkey is enabled. In some implementations, system state for a computing system may be monitored, and hotkeys may be automatically enabled or disabled based on the system state. In some implementations, a user may manually disable hotkeys. Hotkeys may be grouped to facilitate concurrent processing of multiple hotkeys, and the hotkey groups may be nested or arranged in a hierarchy.
-
FIG. 1A is a block diagram of acomputing system 100 in which hotkeys may be enabled or disabled. As shown, thecomputing system 100 includes a computing device core 101 (e.g., processor, memory, storage devices—seeFIG. 5 ), which runs anoperating system 104 andvarious applications computing system 100, and with theapplications keyboard 112 and a pointing device 113 (e.g., a mouse, trackball or tablet and stylus), and through various output devices, such as adisplay screen 116. Aninput controller 117 and anoutput controller 120 couple thecomputing device core 101 to the input devices and output devices, respectively. - Various applications running within the
computing device core 101 may have corresponding windows or icons in thedisplay screen 116, through which a user may interact with the applications. For example,Application A 105 may display awindow 121 in thedisplay screen 116;Application B 108 may display awindow 124 in thedisplay screen 116; andApplication C 109 may display anicon 125 in thedisplay screen 116. - Some applications may run on the
computing device core 101 without displaying corresponding windows or icons in thedisplay screen 116. For example,various background processes 128 may run as part of theoperating system 104. A specialized background process, for example, an application/system monitor 129, may monitor the overall state of thecomputing device 100. For example, the application/system monitor 129 may track which applications are running and various information about those applications, as well as information about the general state of thecomputing device core 101. State of the computing device core 101, or of the computing device 100 in general, may include, for example, background processes 128 that are currently running; application programs 105, 108 or 109 that are currently running; operating states of running application programs; whether an application program or process is the foreground application or process; application programs 105 and 108 that have corresponding windows 121 and 124 currently displayed in the display screen 116; whether a window 121 or 124 is to be associated with a specific state or operation when it is in the foreground; whether a window 121 or 124 is to be associated with a specific state or operation when it is displayed either in the foreground or the background; whether a window, application or process is to be associated with a specific state or operation when it has the focus of an input device; whether a current user is to be associated with a state or set of states; whether a control panel 132 (described below) is currently displayed; whether the computing system 100 is currently receiving input from input devices; various implementation parameters of a hotkey manager 140 (described below); whether an application has unexpectedly terminated (e.g., “crashed”) and, if so, state information associated with the unexpected termination; or various parameters related to the operating system, such as operating system application or task information. - Background processes may provide windows, icons or control panels with which a user may organize, launch and control various applications. For example, the
computing device 100 may display a control panel 132 (e.g., a dashboard or a “dock”), from which users may quickly launch applications. In addition to displaying applications that may be launched, thecontrol panel 132 may display icons representing application programs that are currently active but that have windows in thedisplay screen 116 that are minimized, such as theicon 125 that representsApplication C 109. - Applications that run in the
computing device core 101 may have various states. For example, as described above, an application may be active (e.g., loaded into dynamic memory and possibly executing tasks) but the application may not have a corresponding window displayed on thescreen 116; instead, the application may be associated with a minimized icon, such as theicon 125. As another example, an application may be active, have a corresponding window in thedisplay screen 116, and may be in one of two states: the application may be a “foreground” application, or the application may be a “background” application. As another example, an application may have various operating states, such as an authentication state (e.g., in which a user may be required to enter a password), an input entry state, a processing state, etc.). - “Foreground application,” as used herein, may refer to an application that is currently configured to receive certain input, such as input from a keyboard. Such an application may be referred to as having the “keyboard focus” (or “focus” of other input devices) of the
computing system 100, meaning any keyboard input that is received is likely to be routed to that application. Moreover, a foreground application may be an application whose corresponding window is displayed on top (i.e., in the “foreground”) of other application windows. As shown,application A 105, with itscorresponding window 121, is the foreground application. - In contrast, “background application,” as used herein, may refer to an active application that has a corresponding window on the
screen 116 but that is not the foreground application. For example, as shown,Application B 108, with itscorresponding window 124, is a background application. Windows associated with background applications may be physically behind (i.e., in the background) a window associated with the foreground application. - Generally, a user may change the state of an application from background to foreground in one of a number of ways. In some implementations, a user may manipulate the
pointing device 113 to control the position of a cursor, orpointer 133, on thescreen 116 to be within a visible portion of a desired window. Once thepointer 133 is within the visible portion of the desired window, the user may “click” a button associated with thepointing device 113 to select a corresponding application to activate as the foreground application. For example, since thepointer 133 is shown as being within a visible portion of thewindow 124, additional input, such as a click from thepointing device 113, may activate thecorresponding application B 108 as the foreground application. In some implementations, an application may be activated as a foreground application through input from thekeyboard 112. For example, in many systems, the combination of an ALT key (or a CMD key) and a TAB key may cause the computing system to display awindow 134 havingvarious icons selector 139 may be advanced. When the user releases both the ALT and the TAB keys, the application corresponding to the current position of theselector 139 may become (or remain) the foreground application. - The combination of two discrete inputs, such as the combination of the ALT and TAB keys that is described above, may be defined as a hotkey. In many systems, hotkeys may be defined to allow a user to efficiently perform various tasks in the computing system. For example, as described above, the “ALT-TAB hotkey” may allow a user to navigate from a first application to a second application, thereby causing the second application to become the foreground application. As shown in
FIG. 1A , the twoshaded keys 136 may represent a particular hotkey (e.g., CMD-TAB). Other combinations of keys may be defined as other hotkeys. Some hotkeys may be associated with operating system tasks. For example, a hotkey may be used to invoke a memory management or reporting interface, to start or stop an operating system performance monitor, to open a registry interface, or to perform other tasks related to an application program, the operating system or the physical computing device. - As described above, the term “hotkey,” as used herein, may refer to specific input or concurrent input from one or more input devices. For example, a combination of input from the
keyboard 112 and input from thepointing device 113, such as thecombination 137 of the shaded key and the shaded button on the pointing device 113 (e.g., CTRL-click), may be associated with a hotkey. - A computing system in which hotkeys are defined, such as the
system 100, may employ ahotkey manager 140 to process hotkey input. As will be described with reference to various figures, thehotkey manager 140 may associate various hotkeys with various applications in thecomputing system 100. Thehotkey manager 140 may include anevent processor 141 that correlates an appropriate system operation with each hotkey. When hotkey input is detected, theevent processor 141 may cause a corresponding operation to be executed. For example, when theevent processor 141 detects the CMD-TAB hotkey 136, theevent processor 141 may cause an operation to be executed that changes a background application to a foreground application and vice versa. In some implementations, theevent processor 141 may issue instructions to a kernel 142 in thecomputing device core 101. In some implementations, theevent processor 141 may simply report detection of hotkey input to another computing system component, without directly causing the computing system to process the hotkey input. - As will be described in greater detail below, hotkeys may be processed in various ways. For example, hotkeys may be enabled or disabled. To enable or disable hotkeys, the
hotkey manager 140 may employ an enabler/disabler engine 144. Hotkeys may be grouped, and hotkeys within a group may be processed together. For example, a group of hotkeys may be collectively enabled or disabled. Hotkeys, or groups of hotkeys, may be configured in a hierarchical manner. For example, a first group of hotkeys and a second group of hotkeys may be organized within a third group; if the third group (top of the hierarchy) is disabled, all hotkeys within the first and second groups may be disabled; on the other hand, if the third group is enabled, the first and second group of hotkeys may be enabled or disabled independently of one another. To group hotkeys, thehotkey manager 140 may employ agroup manager 145. - Groups of hotkeys may also be automatically enabled or disabled. That is, the
computing device 100 may automatically enable or disable a group of hotkeys based on some aspect of the system state of thecomputing system 100. For example, in some implementations, thehotkey manager 140 may automatically enable or disable groups of hotkeys based on which application is the foreground application. To automatically enable or disable groups of hotkeys, thehotkey manager 140 may employ system state rules 148 in conjunction with the enabler/disabler engine 144. - To track overall processing of hotkeys, the
hotkey manager 140 may maintain a summary status table 149. In some implementations, the summary status table 149 may capture various information about hotkeys, such as hotkeys that are defined in thecomputing system 100, groups the hotkeys are in, the operations associated with the hotkeys, and the status of the hotkeys or of their corresponding operations (e.g., enabled or disabled). Upon receipt of hotkey input from, for example, theinput controller 117, thehotkey manager 140 may analyze the summary status table 149 to determine whether to launch an operation that is associated with the hotkey input. - The functional blocks in the
computing system 100 may be arranged differently than they are shown inFIG. 1A . For example, theinput controller 117 is shown as a distinct component, separate from thehotkey manager 140. However, thecomponents computing device core 101 may be arranged differently. In general, the precise design of thehotkey manager 140 or of theexample computing system 100 is not critical to this document and can take any suitable form. -
FIG. 1B illustrates several example system state rules 148 that may be used to automatically enable or disable hotkeys or groups of hotkeys. As shown, anexample rule 152 specifies that the “Group B” hotkeys should be enabled if Application B is the foreground application; if Application B is not the foreground application, then the Group B hotkeys are to be disabled. - As a second example,
rule 153 specifies that the “Group D” hotkeys are to be enabled if a particular system navigation element is displayed, and disabled if the system navigation element is not displayed. In some implementations, a system navigation element may include thecontrol panel 132; in such a case, Group D hotkeys would be enabled anytime thecontrol panel 132 is displayed on thescreen 116. In certain modes, such as a “presentation mode” or “full screen mode,” where one of the windows corresponding to an application program completely fills thescreen 116, the Group D hotkeys may be disabled (e.g., since the navigation element would not be present). Disabling hotkeys during a presentation mode may prevent inadvertent disruption of the presentation. - As a third example,
rule 156 specifies that “Group C” hotkeys are to be enabled when Application B has an open user interface window, and disabled when Application B does not have an open user interface window. Referring toFIG. 1A ,window 124 is “open,” even though it does not correspond to the foreground application. According to therule 156, Group C would be enabled, since Application B has an open window. In contrast,icon 125, corresponding toapplication C 109, is minimized and does not have an open window; if therule 156 were associated with Application C, rather than with Application B, then Group C hotkeys would be disabled. -
FIG. 1C illustrates example entries that may appear in a table 157 in thegroup manager 145. As shown, the table 157 lists eachgroup 160 of hotkeys, theindividual hotkeys 161 corresponding to a group, and a status of the group of hotkeys (e.g., enabled or disabled). As shown, a group may include a single hotkey (e.g., Group A), or a group may include multiple hotkeys (e.g., Group B). A hotkey may be part of more than one group (e.g., HOTKEY—1). In some implementations, a hotkey that appears in more than one group may be associated with multiple operations, depending on context. For example,HOTKEY —1 may be associated with one operation in the context of Group A, and another operation in the context of Group B. Hotkey groups may also include other groups of hotkeys (e.g., Group E). That is, as described above, hotkeys may be arranged hierarchically. Thestatus 164 of a highest-level group in the hierarchy may apply to each hotkey or group of hotkeys in lower levels of the hierarchy. -
FIG. 1D illustrates example entries that may appear in a summary status table 149. As shown, the summary status table 149 includes acolumn 165 of hotkeys and acolumn 168 of operations corresponding to each hotkey. Theoperations 168 may be events or operations that occur when thecomputing system 100 receives hotkey input, and the corresponding hotkey is enabled. - An operation may be a series of instructions that are executed by the kernel 142, or an operation may result in a change in state of some aspect of the
computing device 100. In some implementations, the operations may be “published,” or “pushed” to an application or a portion of thecomputing system 100. For example, the operation may cause an interrupt or an exception to be issued to the kernel 142. In some implementations, the operation may be “pulled” from kernel 142 or by a specific operation. For example, an operation may set or clear a flag associated with thecomputing system 100 or with a specific application, and a component of thecomputing system 100 or the specific application may periodically poll the flag to determine its state. In some implementations, the operation may simply report detection of hotkey input, or detection of hotkey input associated with an enabled hotkey; that is, in some implementations, thehotkey manager 141 may simply pass hotkey input to another device or computing system component, without directly performing a function or operation associated with the hotkey input. - The table 149 further includes a
column 169 of groups with which each hotkey may be associated. In some implementations, as described above, groups may be arranged in hierarchies (e.g., the hotkeys in Groups C and D may also be part of Group E). - The table 149 includes a column 172 of flags associated with each hotkey; individual flags may indicate whether a hotkey is enabled. For example, as shown,
HOTKEY —1 is enabled relative to Group B, butHOTKEY —1 is disabled relative to Group A. Whether a hotkey is enabled or disabled may be determined by several factors, including, for example, overall group parameters (seecolumn 164 inFIG. 1C ) and system state rules (see table 148 inFIG. 1B ). In particular, referring to therule 156 inFIG. 1B , Group C is shown as enabled, since Application B has an open user interface window (window 124 inFIG. 1A ); however, Group E, which includes Group C (see table 145 inFIG. 1C ) is disabled; therefore, hotkeys in Groups C, D and E are disabled because of the hierarchy, even though Group C hotkeys would otherwise be enabled. - In some implementations, a hotkey may be associated with a priority, as depicted by the priority column 173. A priority value may allow the
hotkey manager 140 to properly handle a hotkey that is common to two distinct groups or operations. For example, as shown,HOTKEY —1 is common to both Group A and Group B, and is associated with either OPERATION—1A or OPERATION—1B, depending on the group. If both Group A and Group B were enabled, thehotkey manager 140 may use the priority flag 173 to determine which operation—OPERATION—1A or OPERATION—1B—to perform. In some implementations, a hotkey may have a priority, even if the hotkey is only associated with a single operation. For example, HOTKEY—5 and HOTKEY—6 are shown as having a priority value of ‘1,’ even though each hotkey is only associated with a single operation. A priority value associated with a hotkey's definition that is not initially “overloaded” (e.g., assigned to two or more operations) may enable thehotkey manager 140 to preserve a priority associated with a specific operation, even if additional operations are subsequently assigned to the hotkey. - A hotkey may further be associated with a filter value, as depicted by the
filter column 176. A filter value may focus a hotkey's relevance to, for example, a particular function, application, operating system thread or process, or portion of thecomputing system 100. For example, OPERATION—1A, associated withHOTKEY —1, may only be relevant to system operations (e.g., operatingsystem background processes 128, rather than processes associated with specific applications). As another example, OPERATION—1B, also associated withHOTKEY —1, may only be relevant to application A. - In some implementations, hotkey input corresponding to enabled hotkeys may be pushed to or pulled from all corresponding applications, regardless of a priority value. For example, in some implementations, if both Group A and Group B were enabled, and the
computing system 100 receivedHOTKEY —1 input, the OPERATION—1A may be pushed to or pulled from the system, and OPERATION—1B may be pushed to or pulled from Application A—regardless of priority. In some implementations, only a single operation (or a number equal to less than the total number of enabled “subscribers”) may be pushed to or pulled from an application or system process, based on a priority 173 value. For example, in some implementations, if both Group A and Group B were enabled, and thecomputing system 100 receivedHOTKEY —1 input, only the OPERATION—1A may be pushed to or pulled from the system. - In some implementations—independent of a group priority 173, a
group 169 or a general flag 172—an individual hotkey may be manually enabled or disabled by user input. As shown, the table 149 includes a user-override column 177 that may cause one or more hotkeys to be enabled or disabled, independent of the status or group of which the hotkey is a member. For example,HOTKEY —3 is shown as disabled in the user-override column 177, even though Group B, of whichHOTKEY —3 is a member, is enabled. In some implementations, a user-override may only persist for a specific period of time. For example, thehotkey manager 140 may employ system state rules 148 and the enabler/disabler engine 144 to periodically reevaluate and possibly modify user-override values 177—as well as filter values 176, priority values 173,group assignments 169 and status flags 172. In this manner, thehotkey manager 140 may cause thecomputing system 100 to be more deterministic and resistant to application error or user-configuration error. - Various aspects of the
hotkey manager 141 may be user-configurable. For example, each of the system state rules 148, thehotkey group manager 145 and the hotkey status and operation table 149 may have a corresponding configuration window (not shown in the figures) through which a user may customize various aspects of thehotkey manager 140. As one example, a user may override individual hotkey states with a user-override value 177. As another example, a user may enter or modify system state rules 148 through a user interface associated with thehotkey manager 140. As another example, a user may assign or reassign hotkey group assignments and group states (e.g., the assignments and states that are shown in table 157 inFIG. 1C ) through a user interface associated with thehotkey manager 140. -
FIG. 2 is a flow diagram illustrating amethod 200 that may be used to enable or disable a hotkey or a group of hotkeys in a computing system. Using themethod 200, a computing system may automatically enable or disable hotkeys. - As shown, the
method 200 determines (202) whether to begin or continue monitoring thecomputing system 100, and based on the determination (202), themethod 200 monitors (205) system state of thecomputing system 100. In general, system state may refer to any aspect of the hardware, operating system or application program state of thecomputing system 100. For example, referring toFIG. 1A , the system state may includebackground processes 128 that are currently running;application programs application programs windows display screen 116; whether awindow window computing system 100 is currently receiving input from input devices; various implementation parameters of a hotkey manager 140 (described below); whether an application has unexpectedly terminated (e.g., “crashed”) and, if so, state information associated with the unexpected termination; or various parameters related to the operating system, such as operating system application or task information. - If the
method 200 detects (208) that the computing system is in a specific state, then a rule associated with that state may be retrieved (211). For example, the application/system monitor 129 may include various “trigger” states that, when detected, may cause thehotkey manager 140 to retrieve a rule from the system state rules 148 corresponding to the detected state. More particularly, the application/system monitor 129 may monitor (205) thecomputing system 100, detect (208) that a specific system navigation element (e.g., the control panel 132), or another element, is displayed on thedisplay screen 116, and retrieve (211) therule 153 associated with the detected system navigation input. - Based on the retrieved rule, the
method 200 may enable or disable (214) one or more hotkeys operations. For example, based on the retrievedrule 153, thehotkey manager 140 may enable the Group D hotkeys and their corresponding operations. To enable the Group D hotkeys, thehotkey manager 140 may employ the enabler/disabler engine 144 to update, if necessary, the group flags 164 in the table 157 (seeFIG. 1C ). Updates to the group flags 164 may affect other flags, such as the overall hotkey flags 172 (seeFIG. 1D ). In this example, the flags 172 are not affected by the enabler/disabler engine 144 update of theflag 164 associated with Group D, since a group higher in the hierarchy (Group E) is disabled. - By enabling or disabling hotkeys based on system state, the hotkey manager may provide the
computing system 100 with more stability and determinism. Moreover, thecomputing system 100 may be more secure and user-friendly. For example, if an application program enables or disables certain hotkeys, then crashes before restoring the hotkeys, performance or functionality of thecomputing system 100 may be adversely impacted. Similarly, performance or functionality of thecomputing system 100 may be adversely impacted if application program code that affects or implements hotkeys is corrupted or poorly written. By automatically enabling or disabling hotkeys, thehotkey manager 140 may mitigate impact on performance or functionality by restoring status of hotkeys following an application program crash or following evaluation of corrupted or poorly written programming code. - In some implementations, system state of the
computing system 100 may be monitored (205) periodically. For example, the application/system monitor 129 may be scheduled to run periodically with a specific period (e.g., the application/system monitor 129 may run every few seconds, every few minutes, etc.). The period may be user-configurable or may itself depend on system state. In some implementations, system state of thecomputing device 100 may be monitored (205) in response to certain events. For example, the application/system monitor 129 may run every time a new application is activated, an application terminates (e.g., naturally, or as a result of a “crash”); a window associated with an application is opened, moved or closed; or input is received in thecomputing system 100. -
FIG. 3 is a flow diagram illustrating amethod 300 that may be used to process hotkey input and other input. Using themethod 300, a computing system may perform an operation associated with a hotkey, according to status of the corresponding hotkey. - As shown, the
method 300 initially determines (301) whether to accept input. For example, referring toFIG. 1A , theinput controller 117 may enable or disable receipt of all input from one or more input devices. If themethod 300 is accepting input, then upon receiving (304) input, themethod 300 may determine (307) whether the input is a defined hotkey. For example, theinput controller 117 may receive discrete input from a single key on thekeyboard 112 or input corresponding to movement of thepointing device 113, and theinput controller 117 may determine that the received input does not correspond to a defined hotkey. More particularly, themethod 300 may compare the received input to entries in the summary and status table 149 to determine whether the received input corresponds to a specific entry. If not, theinput controller 117 may then process (310) the non-hotkey input accordingly, such as by forwarding the input to thecomputing device core 101 for further processing. - As another example, the
input controller 117 may receive concurrent multiple input corresponding to a hotkey, such as, for example ALT-TAB 136 input or a CTRL-click 137. Theinput controller 117 may identify such concurrent multiple input as a hotkey based on entries in the overall status table 149. For example, although thecolumn 165 inFIG. 1D displays hotkeys as “HOTKEY_N,” this label may represent actual input, such as an ALT-TAB 136 or a CTRL-click 137. Thus, the table 149 may inherently define the hotkeys and store definitions of the hotkeys. In the example above, a hotkey includes concurrent multiple input (e.g., two discrete but concurrent inputs), but in some implementations, a hotkey may be associated with a single discrete input. For example, a hotkey may be associated with input from a single key or button on thekeyboard 112, such as, for example, a multimedia “mute” button, or a view-magnification slider control. - In some implementations, the
method 300 may retrieve (313) system state information corresponding to the received hotkey. For example, upon determining (307) that particular received input is a hotkey, theinput controller 117 may cause thehotkey manager 140 to obtain system state from the application/system monitor 129. Relevant system state may include, for example, an application program that is currently a foreground application, or an application program that currently has a focus associated with thekeyboard 112 or with another input device. In some implementations, system state may be pertinent to “filtering” the relevance of the hotkey (see thefilter column 176 inFIG. 1D ). - The
method 300 may determine (316) whether the hotkey is enabled. If the hotkey is not enabled, themethod 300 may not take further action. If the hotkey is enabled, themethod 300 may issue (319) an event or otherwise initiate an operation associated with the received hotkey. For example, thehotkey manager 140 may determine (316) whether a received hotkey is enabled by analyzing the summary status table 149. In particular, theevent processor 141 may analyze the summary flag 172 associated with a hotkey, and may further analyze whether the summary flag 172 is overridden by a user-override flag 177. If the hotkey is enabled and not subject to a user-override, theevent processor 141 may cause acorresponding operation 168 to be performed. As described above, the operation may involve issuing an interrupt or exception to the kernel 142, executing certain instructions in the kernel 142, or setting or clearing a flag in thecomputing system 100 that may be polled by some other portion of thecomputing system 100 or by an application program running on thecomputing system 100. Moreover, the operation may initiate another action, such as reporting detection of hotkey input without directly processing the hotkey input. -
FIG. 4 is a flow diagram illustrating amethod 400 that may be used to enable and disable hotkeys based on whether an application program is a foreground application. Themethod 400 provides a specific example of thegeneral method 300 that may be used to process hotkeys. - As shown, the
method 400 associates (401) one or more sets of hotkeys with a first application. For example, associations may be made betweenHOTKEY —1, Group A and a system process; other associations may be made betweenHOTKEY —1, Group B and Application A. Referring toFIGS. 1A and 1D , afilter value 176 associating ahotkey 165 with an application or with a portion of thecomputing system 100 may be stored in the summary status table 149. In some implementations, the association may be made automatically, for example, by thehotkey manager 140, which may employ the system state rules 148. In some implementations, the association may be made by a user, employing a user interface corresponding to thehotkey manager 140. - The
method 400 monitors (404) system state of the computing system and determines (407) whether the first application is the foreground application. For example, referring toFIG. 1A , the application/system monitor 129 may monitor application state to determine (407) ifApplication A 105 is the foreground application. If the first application (e.g., Application A) is the foreground application, as shown inFIG. 1A , then themethod 400 may disable (410) a set of input device hotkeys. For example, the enabler/disabler engine 144 may disable (410) the Group A hotkeys by modifying values in the table 157 (seeFIG. 1C ) and the corresponding values in the summary status table 149 (seeFIG. 1D ). - If the method 408 determines (407) that the first application (e.g., Application A) is not the foreground application, the
method 400 may enable (413) a set of hotkeys. For example, the enabler/disabler engine 144 may enable (413) the Group B hotkeys by modifying values in the table 157 and the summary status table 149. In some implementations, as described above, operations corresponding to the hotkeys that are disabled (410) or enabled (413) may be different (e.g., OPERATION—1A and OPERATION—1B) but may be associated with a common hotkey (e.g., HOTKEY—1). In some implementations, operations corresponding to the hotkeys that are disabled (410) or enabled (413) may be the same. For example, system hotkeys, such as media player control hotkeys, may be disabled (410) when an application is the foreground application, and enabled (413) when the application is not the foreground application. - The
method 400 may determine (416) whether to continue monitoring the system. In a manner similar to that described with reference toFIG. 3 , themethod 400 may monitor thecomputing system 100 in response to specific events (e.g., activation or termination of an application; opening, closing or moving of a user interface window; receipt of input in the computing system; etc.). Or, themethod 400 may periodically monitor thecomputing system 100. -
FIG. 5 is a block diagram of acomputing device 500 that may be used in the operations described herein. Thecomputing device 500 includes aprocessor 510, amemory 520, astorage device 530 and an input/output device 540. Each of thecomponents system bus 550. - The
processor 510 is capable of processing instructions for execution within thecomputing device 500. In some implementations, theprocessor 510 is a single-threaded processor. In other implementations, theprocessor 510 is a multi-threaded processor. Theprocessor 510 is capable of processing instructions stored in thememory 520 or on thestorage device 530 to display graphical information for a user interface on the input/output device 540. - The
memory 520 stores information within thecomputing device 500. In some implementations, thememory 520 is a computer-readable medium. In some implementations, thememory 520 is a volatile memory unit. In some implementations, thememory 520 is a non-volatile memory unit. - The
storage device 530 is capable of providing mass storage for thecomputing device 500. In some implementations, thestorage device 530 is a computer-readable medium. In various other implementations, thestorage device 530 may be a floppy disk device, a hard disk device, an optical disk device, a tape device, or a block of non-volatile memory. - The input/
output device 540 provides input/output operations for thecomputing device 500. In some implementations, the input/output device 540 includes a keyboard component and/or pointing device component. In some implementations, the input/output device 540 includes a display unit for displaying graphical user interfaces. - The methods described herein may be implemented in digital electronic circuitry, or in computer hardware, firmware, software, or in combinations of them. Apparatus may be implemented in a computer program product tangibly embodied in an information carrier, e.g., in a machine-readable storage device or in a propagated signal, for execution by a programmable processor; and actions of the method may be performed by a programmable processor executing a program of instructions to perform functions of the invention by operating on input data and generating output. Implementations may include one or more computer programs that are executable on a programmable system including at least one programmable processor coupled to receive data and instructions from, and to transmit data and instructions to, a data storage system, at least one input device, and at least one output device. A computer program is a set of instructions that may be used, directly or indirectly, in a computer to perform a certain activity or bring about a certain result. A computer program may be written in any form of programming language, including compiled or interpreted languages, and it may be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment.
- Suitable processors for the execution of a program of instructions include, by way of example, both general and special purpose microprocessors, and the sole processor or one of multiple processors of any kind of computer. Generally, a processor will receive instructions and data from a read-only memory or a random access memory or both. Elements of a computer may include a processor for executing instructions and one or more memories for storing instructions and data. Generally, a computer will also include, or be operatively coupled to communicate with, one or more mass storage devices for storing data files; such devices include magnetic disks, such as internal hard disks and removable disks; magneto-optical disks; and optical disks. Storage devices suitable for tangibly embodying computer program instructions and data include all forms of non-volatile memory, including by way of example semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor and the memory may be supplemented by, or incorporated in, ASICs (application-specific integrated circuits).
- To provide for interaction with a user, a computing device may include a display device such as a CRT (cathode ray tube) or LCD (liquid crystal display) monitor for displaying information to the user and a keyboard and a pointing device such as a mouse or a trackball by which the user may provide input to the computer.
- Apparatus and methods disclosed herein may be implemented in a computing system that includes a back-end component, such as a data server; or that includes a middleware component, such as an application server or an Internet server; or that includes a front-end component, such as a client computer having a graphical user interface or an Internet browser, or any combination of them. The components of the system may be connected by any form or medium of digital data communication such as a communication network. Examples of communication networks include, e.g., a LAN, a WAN, and the computers and networks forming the Internet.
- The computing system may include clients and servers. A client and server are generally remote from each other and typically interact through a network, such as the described one. The relationship of client and server may arise by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
- The computing system may be embodied in a portable device, such as a handheld electronic device (e.g., a personal digital assistant) or a mobile communication device (e.g., a cell phone or smartphone). In some implementations, non-volatile memory, such as, for example, flash memory, EEPROM or removable storage media may provide mass storage to the computing system. In some implementations, a mass storage device may be provided outside of the computing system, and data in the mass storage device may be accessible to the computing system via an interface, such as a wireless interface, a wired interface, or a card or device reader interface.
- A number of implementations have been described. Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of this disclosure. Accordingly, other implementations are within the scope of the following claims.
Claims (20)
1. A computer-implemented method, comprising:
determining, from an operating system process that is independent of an application process, that a computing device is in a specific system state out of a plurality of possible system states, wherein each of the possible system states is associated with a respective rule, and wherein the determining is in response to an event comprising at least one of activating the application process, terminating the application process, or opening, moving, or closing a graphical user interface window associated with the application process;
in response to the determination, retrieving the rule associated with the specific system state, where the rule specifies one or more hotkeys corresponding to the application process that are to be enabled or disabled by the operating system process; and
enabling or disabling, from the operating system process, one or more of the one or more hotkeys corresponding to the application process, based on the retrieved rule.
2. The method of claim 1 , wherein enabling or disabling one or more hotkeys comprises enabling or disabling one or more operations associated with the one or more hotkeys.
3. The method of claim 1 , further comprising:
receiving first input from one or more input devices, the input corresponding to a first hotkey;
determining from the operating system process that the first hotkey is enabled; and
initiating a first operation associated with the first hotkey.
4. The method of claim 3 , wherein initiating the first operation comprises at least one of issuing an interrupt to a processor, issuing an exception to a processor, executing specific instructions associated with the first operation, modifying a flag in the computing system, or reporting detection of the hotkey to a component of the computing system.
5. The method of claim 3 , wherein initiating the first operation comprises:
retrieving a rule associated with the hotkey and the determined system state; and
causing a processor to execute a set of instructions based on the retrieved rule.
6. The method of claim 3 , further comprising, determining to accept input from the one or more input devices.
7. The method of claim 3 , wherein the first hotkey is associated with the first operation and a second operation, the method further comprising initiating the second operation.
8. The method of claim 3 , wherein the first hotkey is associated with the first operation and a second operation, and the first operation has a first priority for the first hotkey and the second operation has a second priority for the first hotkey, the method further comprising:
determining that the first priority is higher than the second priority; and
only initiating the first operation in response to the determination.
9. The method of claim 1 , further comprising:
receiving first input to an electronic device from one or more input devices;
determining whether the first input corresponds to a defined and enabled hotkey; and
forwarding the first input to an input processing component of the electronic device if the first input does not correspond to a defined and enabled hotkey, and causing an operation associated with the defined hotkey to be performed if the received input does correspond to a defined and enabled hotkey.
10. The method of claim 1 , wherein each hotkey comprises a keyboard shortcut, the keyboard shortcut comprising concurrent input from two or more keyboard keys.
11. The method of claim 1 , wherein each hotkey comprises specific input from one or more input devices.
12. The method of claim 1 , wherein the system state comprises a state of one or more of an input, an output, an operating system, or a process.
13. A computer program product, tangibly embodied in a storage device, the computer program product comprising instructions that, when executed, cause a processor to perform operations comprising:
determining, from an operating system process that is independent of an application process, that a computing device is in a specific system state out of a plurality of possible system states, wherein each of the possible system states is associated with a respective rule, and wherein the determining is in response to an event comprising at least one of activating the application process, terminating the application process, or opening, moving, or closing a graphical user interface window associated with the application process;
in response to the determination, retrieving the rule associated with the specific system state, where the rule specifies one or more hotkeys corresponding to the application process that are to be enabled or disabled by the operating system process; and
enabling or disabling, from the operating system process, one or more of the one or more hotkeys corresponding to the application process, based on the retrieved rule.
14. The computer program of claim 13 , wherein the operations further comprise:
receiving first input from one or more input devices;
determining whether the first input corresponds to a defined and enabled hotkey; and
causing an operation associated with the defined hotkey to be performed if the received input corresponds to a defined and enabled hotkey, and otherwise forwarding the first input to an input processing component.
15. A system, comprising:
one or more computers configured to perform operations comprising:
determining, from an operating system process that is independent of an application process, that a computing device is in a specific system state out of a plurality of possible system states, wherein each of the possible system states is associated with a respective rule, and wherein the determining is in response to an event comprising at least one of activating the application process, terminating the application process, or opening, moving, or closing a graphical user interface window associated with the application process;
in response to the determination, retrieving the rule associated with the specific system state, where the rule specifies one or more hotkeys corresponding to the application process that are to be enabled or disabled by the operating system process; and
enabling or disabling, from the operating system process, one or more of the one or more hotkeys corresponding to the application process, based on the retrieved rule.
16. The system of claim 15 , wherein the operations further comprise:
receiving first input from one or more input devices from which the one or more computers can accept input;
determining that the first input corresponds to a first hotkey, and determining that the first hotkey is enabled; and
initiating a first operation associated with the first hotkey.
17. The system of claim 16 , wherein determining that the first hotkey is enabled comprises determining, from the operating system process, that the first hotkey is enabled.
18. A system, comprising:
an electronic device having one or more input components;
an input controller that receives input from the one or more input components;
an application process executing on the electronic device, wherein the application process is associated with one or more hotkeys;
a monitor separate from the application process, wherein the monitor monitors a state of the electronic device in response to an event comprising at least one of activating the application process, terminating the application process, or opening, moving, or closing a graphical user interface window associated with the application process;
an enabler and disabler engine that enables or disables the one or more hotkeys corresponding to the application process according to a current state of the electronic device.
19. The system of claim 18 , further comprising a hotkey manager that stores hotkey definitions for defined hotkeys, hotkey operations associated with the defined hotkeys, and enablement data for each hotkey operation, wherein the enablement data indicates an enabled or disabled status of the sets of hotkeys based on the state of the electronic device.
20. The system of claim 19 , wherein the hotkey manager forwards received input to an input processing component of the electronic device if the received input does not correspond to an enabled hotkey, and wherein the hotkey manager causes an operation associated with the defined hotkey to be performed if the received input does correspond to an enabled hotkey.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/795,514 US20100287507A1 (en) | 2006-01-06 | 2010-06-07 | Enabling and Disabling Hotkeys |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/327,839 US7757185B2 (en) | 2006-01-06 | 2006-01-06 | Enabling and disabling hotkeys |
US12/795,514 US20100287507A1 (en) | 2006-01-06 | 2010-06-07 | Enabling and Disabling Hotkeys |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/327,839 Continuation US7757185B2 (en) | 2006-01-06 | 2006-01-06 | Enabling and disabling hotkeys |
Publications (1)
Publication Number | Publication Date |
---|---|
US20100287507A1 true US20100287507A1 (en) | 2010-11-11 |
Family
ID=38234183
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/327,839 Expired - Fee Related US7757185B2 (en) | 2006-01-06 | 2006-01-06 | Enabling and disabling hotkeys |
US12/795,514 Abandoned US20100287507A1 (en) | 2006-01-06 | 2010-06-07 | Enabling and Disabling Hotkeys |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/327,839 Expired - Fee Related US7757185B2 (en) | 2006-01-06 | 2006-01-06 | Enabling and disabling hotkeys |
Country Status (1)
Country | Link |
---|---|
US (2) | US7757185B2 (en) |
Cited By (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080022279A1 (en) * | 2006-07-24 | 2008-01-24 | Lg Electronics Inc. | Mobile communication terminal and method for controlling a background task |
US20100180229A1 (en) * | 2009-01-12 | 2010-07-15 | Samsung Electronics Co., Ltd. | Method for menu performance using shortcut key in potable terminal and apparatus thereof |
US20100185797A1 (en) * | 2009-01-19 | 2010-07-22 | Nuvoton Technology Corporation | Keyboard-mouse switch and switching method thereof |
US20130139085A1 (en) * | 2010-05-23 | 2013-05-30 | Kenichi Ichino | Operation Support Computer Program, Operation Support Computer System |
US20130326331A1 (en) * | 2012-06-05 | 2013-12-05 | International Business Machines Corporation | Receiver side indication of preview content for template emails |
US8838546B1 (en) | 2012-08-10 | 2014-09-16 | Google Inc. | Correcting accidental shortcut usage |
US20150128079A1 (en) * | 2013-11-05 | 2015-05-07 | Samsung Electronics Co., Ltd. | Method for executing function in response to touch input and electronic device implementing the same |
US9292156B2 (en) | 2012-01-09 | 2016-03-22 | International Business Machines Corporation | Enabling a user to invoke a function via a shortcut key in a multi-window computing environment |
CN106250131A (en) * | 2016-07-26 | 2016-12-21 | 北京小米移动软件有限公司 | Prompt operation screen method and device |
WO2021067015A1 (en) * | 2019-10-01 | 2021-04-08 | Microsoft Technology Licensing, Llc | Extensions to global keyboard shortcuts for computing devices having multiple display regions |
US11037063B2 (en) | 2017-08-18 | 2021-06-15 | Diveplane Corporation | Detecting and correcting anomalies in computer-based reasoning systems |
US11092962B1 (en) | 2017-11-20 | 2021-08-17 | Diveplane Corporation | Computer-based reasoning system for operational situation vehicle control |
US11176465B2 (en) | 2018-11-13 | 2021-11-16 | Diveplane Corporation | Explainable and automated decisions in computer-based reasoning systems |
US11385633B2 (en) | 2018-04-09 | 2022-07-12 | Diveplane Corporation | Model reduction and training efficiency in computer-based reasoning and artificial intelligence systems |
US11454939B2 (en) | 2018-04-09 | 2022-09-27 | Diveplane Corporation | Entropy-based techniques for creation of well-balanced computer based reasoning systems |
US11494669B2 (en) | 2018-10-30 | 2022-11-08 | Diveplane Corporation | Clustering, explainability, and automated decisions in computer-based reasoning systems |
US11625625B2 (en) | 2018-12-13 | 2023-04-11 | Diveplane Corporation | Synthetic data generation in computer-based reasoning systems |
US11640561B2 (en) | 2018-12-13 | 2023-05-02 | Diveplane Corporation | Dataset quality for synthetic data generation in computer-based reasoning systems |
US11657294B1 (en) | 2017-09-01 | 2023-05-23 | Diveplane Corporation | Evolutionary techniques for computer-based optimization and artificial intelligence systems |
US11669769B2 (en) | 2018-12-13 | 2023-06-06 | Diveplane Corporation | Conditioned synthetic data generation in computer-based reasoning systems |
US11676069B2 (en) | 2018-12-13 | 2023-06-13 | Diveplane Corporation | Synthetic data generation using anonymity preservation in computer-based reasoning systems |
US11727286B2 (en) | 2018-12-13 | 2023-08-15 | Diveplane Corporation | Identifier contribution allocation in synthetic data generation in computer-based reasoning systems |
US11763176B1 (en) | 2019-05-16 | 2023-09-19 | Diveplane Corporation | Search and query in computer-based reasoning systems |
US11823080B2 (en) | 2018-10-30 | 2023-11-21 | Diveplane Corporation | Clustering, explainability, and automated decisions in computer-based reasoning systems |
US11880775B1 (en) | 2018-06-05 | 2024-01-23 | Diveplane Corporation | Entropy-based techniques for improved automated selection in computer-based reasoning systems |
US11941542B2 (en) | 2017-11-20 | 2024-03-26 | Diveplane Corporation | Computer-based reasoning system for operational situation control of controllable systems |
Families Citing this family (65)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7757185B2 (en) * | 2006-01-06 | 2010-07-13 | Apple Inc. | Enabling and disabling hotkeys |
US8745526B2 (en) * | 2006-03-14 | 2014-06-03 | Blackberry Limited | Screen display in application switching |
US7673161B2 (en) * | 2006-03-28 | 2010-03-02 | Lenovo (Singapore) Pte. Ltd. | Apparatus, system, and method for selecting a waking process |
CA2573914A1 (en) * | 2007-01-12 | 2008-07-12 | Daniel D. Karmazyn | Controlling the operating states of a software application with a single keyboard button |
US7631124B2 (en) * | 2007-04-06 | 2009-12-08 | Microsoft Corporation | Application-specific mapping of input device elements |
US20090193339A1 (en) * | 2008-01-29 | 2009-07-30 | International Business Machines Corporation | Socially-authored context-initiated processes |
US20090241042A1 (en) * | 2008-03-18 | 2009-09-24 | Nordstrom Consulting, Inc. | Method and apparatus for controlling and operating computers used in vision screening and correction as well as other applications utilizing remote control or dual visual outputs |
US20090254634A1 (en) * | 2008-04-03 | 2009-10-08 | Mckinney Alan Scott | Method of Displaying Selected Data |
US8589541B2 (en) | 2009-01-28 | 2013-11-19 | Headwater Partners I Llc | Device-assisted services for protecting network capacity |
US20090313581A1 (en) * | 2008-06-11 | 2009-12-17 | Yahoo! Inc. | Non-Mouse Computer Input Method and Apparatus |
CN101661367A (en) * | 2008-08-25 | 2010-03-03 | 扬智科技股份有限公司 | Generation method of menu shortcut mode and user interface device |
TW201011594A (en) * | 2008-09-09 | 2010-03-16 | gui-lin Zhong | Method for defining hot keys of input apparatus |
US8698750B2 (en) * | 2008-09-18 | 2014-04-15 | Microsoft Corporation | Integrated haptic control apparatus and touch sensitive display |
US8427438B2 (en) * | 2009-03-26 | 2013-04-23 | Apple Inc. | Virtual input tools |
WO2010125229A1 (en) * | 2009-04-30 | 2010-11-04 | Nokia Corporation | Apparatus and method for handling tasks within a computing device |
CN101901101A (en) * | 2009-06-01 | 2010-12-01 | 鸿富锦精密工业(深圳)有限公司 | Electronic device and method for displaying shortcut keys |
US8698845B2 (en) | 2010-01-06 | 2014-04-15 | Apple Inc. | Device, method, and graphical user interface with interactive popup views |
TW201142657A (en) * | 2010-05-25 | 2011-12-01 | At Box Technology Inc | Method for setting and controlling hot key area of keyboard via KVM switch |
US9513801B2 (en) | 2010-04-07 | 2016-12-06 | Apple Inc. | Accessing electronic notifications and settings icons with gestures |
US20110252376A1 (en) | 2010-04-07 | 2011-10-13 | Imran Chaudhri | Device, Method, and Graphical User Interface for Managing Concurrently Open Software Applications |
US9823831B2 (en) | 2010-04-07 | 2017-11-21 | Apple Inc. | Device, method, and graphical user interface for managing concurrently open software applications |
US20110300901A1 (en) * | 2010-06-02 | 2011-12-08 | Microsoft Corporation | Intelligent Input Handling |
KR101701837B1 (en) * | 2010-07-05 | 2017-02-13 | 엘지전자 주식회사 | Mobile terminal and method for controlling thereof |
US9600153B2 (en) * | 2010-07-05 | 2017-03-21 | Lg Electronics Inc. | Mobile terminal for displaying a webpage and method of controlling the same |
KR101725550B1 (en) * | 2010-12-16 | 2017-04-10 | 삼성전자주식회사 | Portable terminal with optical touch pad and method for controlling data in the portable terminal |
US9244606B2 (en) | 2010-12-20 | 2016-01-26 | Apple Inc. | Device, method, and graphical user interface for navigation of concurrently open software applications |
US9178981B2 (en) * | 2010-12-22 | 2015-11-03 | Lg Electronics Inc. | Mobile terminal and method of sharing information therein |
US20120174030A1 (en) * | 2010-12-29 | 2012-07-05 | Motorola-Mobility, Inc. | Navigating among higher-level and lower-level windows on a computing device |
US20120284159A1 (en) * | 2011-05-07 | 2012-11-08 | Bionic Trader Systems, LLC | Financial trading system and method utilizing hotkey subscriptions |
US8224894B1 (en) * | 2011-05-09 | 2012-07-17 | Google Inc. | Zero-click sharing of application context across devices |
US8806369B2 (en) | 2011-08-26 | 2014-08-12 | Apple Inc. | Device, method, and graphical user interface for managing and interacting with concurrently open software applications |
US8463696B2 (en) * | 2011-09-08 | 2013-06-11 | Precision Trading Ip, Llc | System and method for managing executable functions within a trading system |
US20130066759A1 (en) * | 2011-09-08 | 2013-03-14 | Bionic Trader Systems, LLC | System and method for managing executable functions within a trading system |
CN103218212B (en) | 2012-01-19 | 2016-03-02 | 腾讯科技(深圳)有限公司 | The method and system of hot key is shared between a kind of many application examples |
US10055419B2 (en) * | 2012-02-03 | 2018-08-21 | Apple Inc. | User interface for accessing documents from a computing device |
WO2013169875A2 (en) | 2012-05-09 | 2013-11-14 | Yknots Industries Llc | Device, method, and graphical user interface for displaying content associated with a corresponding affordance |
WO2013169865A2 (en) | 2012-05-09 | 2013-11-14 | Yknots Industries Llc | Device, method, and graphical user interface for moving a user interface object based on an intensity of a press input |
DE112013002409T5 (en) | 2012-05-09 | 2015-02-26 | Apple Inc. | Apparatus, method and graphical user interface for displaying additional information in response to a user contact |
EP3185116B1 (en) | 2012-05-09 | 2019-09-11 | Apple Inc. | Device, method and graphical user interface for providing tactile feedback for operations performed in a user interface |
KR101823288B1 (en) | 2012-05-09 | 2018-01-29 | 애플 인크. | Device, method, and graphical user interface for transitioning between display states in response to gesture |
WO2013169854A2 (en) | 2012-05-09 | 2013-11-14 | Yknots Industries Llc | Device, method, and graphical user interface for providing feedback for changing activation states of a user interface object |
WO2013169843A1 (en) | 2012-05-09 | 2013-11-14 | Yknots Industries Llc | Device, method, and graphical user interface for manipulating framed graphical objects |
WO2013169845A1 (en) | 2012-05-09 | 2013-11-14 | Yknots Industries Llc | Device, method, and graphical user interface for scrolling nested regions |
WO2013169849A2 (en) | 2012-05-09 | 2013-11-14 | Industries Llc Yknots | Device, method, and graphical user interface for displaying user interface objects corresponding to an application |
WO2013169851A2 (en) | 2012-05-09 | 2013-11-14 | Yknots Industries Llc | Device, method, and graphical user interface for facilitating user interaction with controls in a user interface |
CN108052264B (en) | 2012-05-09 | 2021-04-27 | 苹果公司 | Device, method and graphical user interface for moving and placing user interface objects |
WO2013169842A2 (en) | 2012-05-09 | 2013-11-14 | Yknots Industries Llc | Device, method, and graphical user interface for selecting object within a group of objects |
WO2013169877A2 (en) | 2012-05-09 | 2013-11-14 | Yknots Industries Llc | Device, method, and graphical user interface for selecting user interface objects |
TWI486812B (en) * | 2012-08-16 | 2015-06-01 | Wistron Corp | Method for playing video and video playing electronic system |
EP3467634B1 (en) | 2012-12-29 | 2020-09-23 | Apple Inc. | Device, method, and graphical user interface for navigating user interface hierarchies |
EP2939098B1 (en) | 2012-12-29 | 2018-10-10 | Apple Inc. | Device, method, and graphical user interface for transitioning between touch input to display output relationships |
CN104903835B (en) | 2012-12-29 | 2018-05-04 | 苹果公司 | For abandoning equipment, method and the graphic user interface of generation tactile output for more contact gestures |
WO2014105277A2 (en) | 2012-12-29 | 2014-07-03 | Yknots Industries Llc | Device, method, and graphical user interface for moving a cursor according to a change in an appearance of a control icon with simulated three-dimensional characteristics |
KR102001332B1 (en) | 2012-12-29 | 2019-07-17 | 애플 인크. | Device, method, and graphical user interface for determining whether to scroll or select contents |
US9477404B2 (en) | 2013-03-15 | 2016-10-25 | Apple Inc. | Device, method, and graphical user interface for managing concurrently open software applications |
US9658740B2 (en) | 2013-03-15 | 2017-05-23 | Apple Inc. | Device, method, and graphical user interface for managing concurrently open software applications |
US10095396B2 (en) | 2015-03-08 | 2018-10-09 | Apple Inc. | Devices, methods, and graphical user interfaces for interacting with a control object while dragging another object |
US10048757B2 (en) | 2015-03-08 | 2018-08-14 | Apple Inc. | Devices and methods for controlling media presentation |
US9645732B2 (en) | 2015-03-08 | 2017-05-09 | Apple Inc. | Devices, methods, and graphical user interfaces for displaying and using menus |
US9785305B2 (en) | 2015-03-19 | 2017-10-10 | Apple Inc. | Touch input cursor manipulation |
US20170045981A1 (en) | 2015-08-10 | 2017-02-16 | Apple Inc. | Devices and Methods for Processing Touch Inputs Based on Their Intensities |
US9674426B2 (en) | 2015-06-07 | 2017-06-06 | Apple Inc. | Devices and methods for capturing and interacting with enhanced digital images |
US9860451B2 (en) | 2015-06-07 | 2018-01-02 | Apple Inc. | Devices and methods for capturing and interacting with enhanced digital images |
US9883319B2 (en) * | 2016-05-24 | 2018-01-30 | Paypal, Inc. | Mobile application configurations to enable data transfers |
US10637986B2 (en) | 2016-06-10 | 2020-04-28 | Apple Inc. | Displaying and updating a set of application views |
Citations (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5467433A (en) * | 1992-04-15 | 1995-11-14 | Monarch Marking Systems, Inc. | Label printing and data collection program generator |
US5525978A (en) * | 1994-02-28 | 1996-06-11 | Hewlett-Packard Company | Graphical key manager for computer |
US5721850A (en) * | 1993-01-15 | 1998-02-24 | Quotron Systems, Inc. | Method and means for navigating user interfaces which support a plurality of executing applications |
US5805167A (en) * | 1994-09-22 | 1998-09-08 | Van Cruyningen; Izak | Popup menus with directional gestures |
US5867729A (en) * | 1995-08-23 | 1999-02-02 | Toshiba America Information Systems, Inc. | System for reconfiguring a keyboard configuration in response to an event status information related to a computer's location determined by using triangulation technique |
US5872995A (en) * | 1995-07-26 | 1999-02-16 | Compaq Computer Corporation | System for causing system management interrupt to execute second program before use of a scancode by first program if said scancode comprises a hotkey |
US5973688A (en) * | 1997-10-31 | 1999-10-26 | May; Gregory J | Computing system having delayed keyboard shortcut hints |
US6005928A (en) * | 1997-04-15 | 1999-12-21 | Mci Communication Corporation | Method and system for automatic distribution addressing |
US6049834A (en) * | 1998-05-08 | 2000-04-11 | Cisco Technology, Inc. | Layer 3 switch unicast protocol |
US6057845A (en) * | 1997-11-14 | 2000-05-02 | Sensiva, Inc. | System, method, and apparatus for generation and recognizing universal commands |
US6114978A (en) * | 1998-01-14 | 2000-09-05 | Lucent Technologies Inc. | Method and apparatus for assignment of shortcut key combinations in a computer software application |
US6246405B1 (en) * | 1997-06-06 | 2001-06-12 | Mci Communications Corporation | Method and apparatus for managing a plurality of objects on a graphical user interface |
US20020115476A1 (en) * | 2001-02-16 | 2002-08-22 | Microsoft Corporation | Shortcut system for use in a mobile electronic device and method thereof |
US20020144153A1 (en) * | 2000-09-22 | 2002-10-03 | Levine Richard B. | Systems and methods for preventing unauthorized use of digital content |
US20020156870A1 (en) * | 2000-11-08 | 2002-10-24 | Equate Systems, Inc. | Method and apparatus for dynamically directing an application to a pre-defined target multimedia resource |
US20030067446A1 (en) * | 2001-09-07 | 2003-04-10 | Sony Corporation | Information processing apparatus and information processing method |
US6567075B1 (en) * | 1999-03-19 | 2003-05-20 | Avaya Technology Corp. | Feature access control in a display-based terminal environment |
US20030120997A1 (en) * | 2000-07-24 | 2003-06-26 | Fujitsu Limited | Key-input correcting device |
US20030159076A1 (en) * | 1996-07-19 | 2003-08-21 | Compaq Information Technologies Group, L.P. | Keyboard controller providing power management for a portable computer system |
US20030184592A1 (en) * | 2002-03-28 | 2003-10-02 | International Business Machines Corp. | Method and system for controlling an application displayed in an inactive window |
US20030217287A1 (en) * | 2002-05-16 | 2003-11-20 | Ilya Kruglenko | Secure desktop environment for unsophisticated computer users |
US20040001098A1 (en) * | 2002-06-28 | 2004-01-01 | Kabushiki Kaisha Toshiba | Information processing apparatus and input assisting method for use in the same |
US6711634B2 (en) * | 1999-12-23 | 2004-03-23 | Landesk Holdings, Inc. | System and method of transmitting keystroke information to a client terminal |
US6724405B2 (en) * | 1997-08-27 | 2004-04-20 | Microsoft Corp. | User friendly remote system interface |
US6738810B1 (en) * | 1999-11-03 | 2004-05-18 | D. Michael Corporation | Method and apparatus for encouraging timely payments associated with a computer system |
US20040104893A1 (en) * | 2002-07-10 | 2004-06-03 | Kuang-Yu Huang | Interactive keyboard |
US20040179017A1 (en) * | 2003-01-31 | 2004-09-16 | Nvidia Corporation | System and method for providing transparent windows of a display |
US20040242279A1 (en) * | 2003-05-28 | 2004-12-02 | Costanzo Rito Natale | Implementing direct telephone access on a multi-purpose wireless mobile electronic device |
US20040263480A1 (en) * | 2003-06-24 | 2004-12-30 | International Business Machines Corporation | Method and system for providing integrated hot key configuration |
US20050038982A1 (en) * | 2003-08-11 | 2005-02-17 | Lg Electronics Inc. | Convertible computer |
US20050052475A1 (en) * | 2003-08-18 | 2005-03-10 | International Business Machines Corporation | Method for improving the viewing of small icons and small text on high resolution displays |
US6871348B1 (en) * | 1999-09-15 | 2005-03-22 | Intel Corporation | Method and apparatus for integrating the user interfaces of multiple applications into one application |
US20050190971A1 (en) * | 2004-02-26 | 2005-09-01 | Brubacher-Cressman Dale K. | Handheld electronic device having improved help facility and associated method |
US6959422B2 (en) * | 2001-11-09 | 2005-10-25 | Corel Corporation | Shortcut key manager and method for managing shortcut key assignment |
US20060005142A1 (en) * | 2004-06-30 | 2006-01-05 | Karstens Christopher K | System and method for handling unexpected focus change messages in a computing device |
US20060038787A1 (en) * | 2004-08-18 | 2006-02-23 | Jia-Shiung Kuo | Processing system and method for detecting hotkey activation |
US20060129633A1 (en) * | 2004-12-14 | 2006-06-15 | International Business Machines Corporation | Mechanism to facilitate customization of real time messaging using mobile devices |
US20060161862A1 (en) * | 2005-01-20 | 2006-07-20 | Microsoft Corporation | Enabling users to create and use a directory of document links from within a file menu of an application |
US20060168376A1 (en) * | 2005-01-25 | 2006-07-27 | Oleg Ilyasov | Usage of keyboard driver in extensible firmware interface for adding new hot keys at firmware level |
US7099620B2 (en) * | 2000-09-22 | 2006-08-29 | Medical Council Of Canada | Method and apparatus for administering an internet based examination to remote sites |
US20060209035A1 (en) * | 2005-03-17 | 2006-09-21 | Jenkins Phillip D | Device independent specification of navigation shortcuts in an application |
US7134094B2 (en) * | 2005-01-14 | 2006-11-07 | Microsoft Corporation | Automatic assigning of shortcut keys |
US7161587B2 (en) * | 2003-08-14 | 2007-01-09 | International Business Machines Corporation | Method, apparatus and computer program product for providing keyboard assistance to a software application user |
US20070022282A1 (en) * | 2005-07-22 | 2007-01-25 | Wen-Hua Chang | Method of displaying foreground visual data in foreground and executing system booting in background for computer system |
US20070052868A1 (en) * | 2005-09-02 | 2007-03-08 | Charisma Communications, Inc. | Multimedia accessible universal input device |
US7215975B1 (en) * | 1999-10-08 | 2007-05-08 | Nokia Corporation | Portable device |
US20080068284A1 (en) * | 2004-10-27 | 2008-03-20 | Fujitsu Ten Limited | Display Device |
US7564445B2 (en) * | 2003-07-31 | 2009-07-21 | Microsoft Corporation | Context sensitive labels for a hardware input device |
US7644376B2 (en) * | 2003-10-23 | 2010-01-05 | Microsoft Corporation | Flexible architecture for notifying applications of state changes |
US7716158B2 (en) * | 2004-01-09 | 2010-05-11 | Microsoft Corporation | System and method for context sensitive searching |
US7757185B2 (en) * | 2006-01-06 | 2010-07-13 | Apple Inc. | Enabling and disabling hotkeys |
US7818755B1 (en) * | 2004-12-22 | 2010-10-19 | Apple Inc. | Window server event taps |
-
2006
- 2006-01-06 US US11/327,839 patent/US7757185B2/en not_active Expired - Fee Related
-
2010
- 2010-06-07 US US12/795,514 patent/US20100287507A1/en not_active Abandoned
Patent Citations (56)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5467433A (en) * | 1992-04-15 | 1995-11-14 | Monarch Marking Systems, Inc. | Label printing and data collection program generator |
US5721850A (en) * | 1993-01-15 | 1998-02-24 | Quotron Systems, Inc. | Method and means for navigating user interfaces which support a plurality of executing applications |
US6069628A (en) * | 1993-01-15 | 2000-05-30 | Reuters, Ltd. | Method and means for navigating user interfaces which support a plurality of executing applications |
US5525978A (en) * | 1994-02-28 | 1996-06-11 | Hewlett-Packard Company | Graphical key manager for computer |
US5805167A (en) * | 1994-09-22 | 1998-09-08 | Van Cruyningen; Izak | Popup menus with directional gestures |
US5872995A (en) * | 1995-07-26 | 1999-02-16 | Compaq Computer Corporation | System for causing system management interrupt to execute second program before use of a scancode by first program if said scancode comprises a hotkey |
US5867729A (en) * | 1995-08-23 | 1999-02-02 | Toshiba America Information Systems, Inc. | System for reconfiguring a keyboard configuration in response to an event status information related to a computer's location determined by using triangulation technique |
US20030159076A1 (en) * | 1996-07-19 | 2003-08-21 | Compaq Information Technologies Group, L.P. | Keyboard controller providing power management for a portable computer system |
US6005928A (en) * | 1997-04-15 | 1999-12-21 | Mci Communication Corporation | Method and system for automatic distribution addressing |
US6246405B1 (en) * | 1997-06-06 | 2001-06-12 | Mci Communications Corporation | Method and apparatus for managing a plurality of objects on a graphical user interface |
US6724405B2 (en) * | 1997-08-27 | 2004-04-20 | Microsoft Corp. | User friendly remote system interface |
US5973688A (en) * | 1997-10-31 | 1999-10-26 | May; Gregory J | Computing system having delayed keyboard shortcut hints |
US6057845A (en) * | 1997-11-14 | 2000-05-02 | Sensiva, Inc. | System, method, and apparatus for generation and recognizing universal commands |
US6114978A (en) * | 1998-01-14 | 2000-09-05 | Lucent Technologies Inc. | Method and apparatus for assignment of shortcut key combinations in a computer software application |
US6049834A (en) * | 1998-05-08 | 2000-04-11 | Cisco Technology, Inc. | Layer 3 switch unicast protocol |
US6567075B1 (en) * | 1999-03-19 | 2003-05-20 | Avaya Technology Corp. | Feature access control in a display-based terminal environment |
US6871348B1 (en) * | 1999-09-15 | 2005-03-22 | Intel Corporation | Method and apparatus for integrating the user interfaces of multiple applications into one application |
US7215975B1 (en) * | 1999-10-08 | 2007-05-08 | Nokia Corporation | Portable device |
US6738810B1 (en) * | 1999-11-03 | 2004-05-18 | D. Michael Corporation | Method and apparatus for encouraging timely payments associated with a computer system |
US6711634B2 (en) * | 1999-12-23 | 2004-03-23 | Landesk Holdings, Inc. | System and method of transmitting keystroke information to a client terminal |
US20030120997A1 (en) * | 2000-07-24 | 2003-06-26 | Fujitsu Limited | Key-input correcting device |
US20020144153A1 (en) * | 2000-09-22 | 2002-10-03 | Levine Richard B. | Systems and methods for preventing unauthorized use of digital content |
US7237123B2 (en) * | 2000-09-22 | 2007-06-26 | Ecd Systems, Inc. | Systems and methods for preventing unauthorized use of digital content |
US7099620B2 (en) * | 2000-09-22 | 2006-08-29 | Medical Council Of Canada | Method and apparatus for administering an internet based examination to remote sites |
US20020156870A1 (en) * | 2000-11-08 | 2002-10-24 | Equate Systems, Inc. | Method and apparatus for dynamically directing an application to a pre-defined target multimedia resource |
US20020115476A1 (en) * | 2001-02-16 | 2002-08-22 | Microsoft Corporation | Shortcut system for use in a mobile electronic device and method thereof |
US20030067446A1 (en) * | 2001-09-07 | 2003-04-10 | Sony Corporation | Information processing apparatus and information processing method |
US6959422B2 (en) * | 2001-11-09 | 2005-10-25 | Corel Corporation | Shortcut key manager and method for managing shortcut key assignment |
US20030184592A1 (en) * | 2002-03-28 | 2003-10-02 | International Business Machines Corp. | Method and system for controlling an application displayed in an inactive window |
US20030217287A1 (en) * | 2002-05-16 | 2003-11-20 | Ilya Kruglenko | Secure desktop environment for unsophisticated computer users |
US20040001098A1 (en) * | 2002-06-28 | 2004-01-01 | Kabushiki Kaisha Toshiba | Information processing apparatus and input assisting method for use in the same |
US6934778B2 (en) * | 2002-06-28 | 2005-08-23 | Kabushiki Kaisha Toshiba | Information processing apparatus and input assisting method for use in the same |
US20040104893A1 (en) * | 2002-07-10 | 2004-06-03 | Kuang-Yu Huang | Interactive keyboard |
US20040179017A1 (en) * | 2003-01-31 | 2004-09-16 | Nvidia Corporation | System and method for providing transparent windows of a display |
US20040242279A1 (en) * | 2003-05-28 | 2004-12-02 | Costanzo Rito Natale | Implementing direct telephone access on a multi-purpose wireless mobile electronic device |
US20040263480A1 (en) * | 2003-06-24 | 2004-12-30 | International Business Machines Corporation | Method and system for providing integrated hot key configuration |
US7564445B2 (en) * | 2003-07-31 | 2009-07-21 | Microsoft Corporation | Context sensitive labels for a hardware input device |
US20050038982A1 (en) * | 2003-08-11 | 2005-02-17 | Lg Electronics Inc. | Convertible computer |
US7161587B2 (en) * | 2003-08-14 | 2007-01-09 | International Business Machines Corporation | Method, apparatus and computer program product for providing keyboard assistance to a software application user |
US20050052475A1 (en) * | 2003-08-18 | 2005-03-10 | International Business Machines Corporation | Method for improving the viewing of small icons and small text on high resolution displays |
US7644376B2 (en) * | 2003-10-23 | 2010-01-05 | Microsoft Corporation | Flexible architecture for notifying applications of state changes |
US7716158B2 (en) * | 2004-01-09 | 2010-05-11 | Microsoft Corporation | System and method for context sensitive searching |
US20050190971A1 (en) * | 2004-02-26 | 2005-09-01 | Brubacher-Cressman Dale K. | Handheld electronic device having improved help facility and associated method |
US20060005142A1 (en) * | 2004-06-30 | 2006-01-05 | Karstens Christopher K | System and method for handling unexpected focus change messages in a computing device |
US20060038787A1 (en) * | 2004-08-18 | 2006-02-23 | Jia-Shiung Kuo | Processing system and method for detecting hotkey activation |
US20080068284A1 (en) * | 2004-10-27 | 2008-03-20 | Fujitsu Ten Limited | Display Device |
US20060129633A1 (en) * | 2004-12-14 | 2006-06-15 | International Business Machines Corporation | Mechanism to facilitate customization of real time messaging using mobile devices |
US7818755B1 (en) * | 2004-12-22 | 2010-10-19 | Apple Inc. | Window server event taps |
US7134094B2 (en) * | 2005-01-14 | 2006-11-07 | Microsoft Corporation | Automatic assigning of shortcut keys |
US20060161862A1 (en) * | 2005-01-20 | 2006-07-20 | Microsoft Corporation | Enabling users to create and use a directory of document links from within a file menu of an application |
US20060168376A1 (en) * | 2005-01-25 | 2006-07-27 | Oleg Ilyasov | Usage of keyboard driver in extensible firmware interface for adding new hot keys at firmware level |
US20060209035A1 (en) * | 2005-03-17 | 2006-09-21 | Jenkins Phillip D | Device independent specification of navigation shortcuts in an application |
US20070022282A1 (en) * | 2005-07-22 | 2007-01-25 | Wen-Hua Chang | Method of displaying foreground visual data in foreground and executing system booting in background for computer system |
US7464258B2 (en) * | 2005-07-22 | 2008-12-09 | Mitac Technology Corp. | Method of displaying foreground visual data in foreground and executing system booting in background for computer system |
US20070052868A1 (en) * | 2005-09-02 | 2007-03-08 | Charisma Communications, Inc. | Multimedia accessible universal input device |
US7757185B2 (en) * | 2006-01-06 | 2010-07-13 | Apple Inc. | Enabling and disabling hotkeys |
Cited By (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8856680B2 (en) * | 2006-07-24 | 2014-10-07 | Lg Electronics Inc. | Mobile communication terminal and method for controlling a background task |
US20080022279A1 (en) * | 2006-07-24 | 2008-01-24 | Lg Electronics Inc. | Mobile communication terminal and method for controlling a background task |
US20100180229A1 (en) * | 2009-01-12 | 2010-07-15 | Samsung Electronics Co., Ltd. | Method for menu performance using shortcut key in potable terminal and apparatus thereof |
US20100185797A1 (en) * | 2009-01-19 | 2010-07-22 | Nuvoton Technology Corporation | Keyboard-mouse switch and switching method thereof |
US20130139085A1 (en) * | 2010-05-23 | 2013-05-30 | Kenichi Ichino | Operation Support Computer Program, Operation Support Computer System |
US9292156B2 (en) | 2012-01-09 | 2016-03-22 | International Business Machines Corporation | Enabling a user to invoke a function via a shortcut key in a multi-window computing environment |
US20130326331A1 (en) * | 2012-06-05 | 2013-12-05 | International Business Machines Corporation | Receiver side indication of preview content for template emails |
US9299063B2 (en) * | 2012-06-05 | 2016-03-29 | International Business Machines Corporation | Receiver side indication of preview content for template emails |
US8838546B1 (en) | 2012-08-10 | 2014-09-16 | Google Inc. | Correcting accidental shortcut usage |
US20150128079A1 (en) * | 2013-11-05 | 2015-05-07 | Samsung Electronics Co., Ltd. | Method for executing function in response to touch input and electronic device implementing the same |
CN106250131A (en) * | 2016-07-26 | 2016-12-21 | 北京小米移动软件有限公司 | Prompt operation screen method and device |
US11037063B2 (en) | 2017-08-18 | 2021-06-15 | Diveplane Corporation | Detecting and correcting anomalies in computer-based reasoning systems |
US11829892B2 (en) | 2017-08-18 | 2023-11-28 | Diveplane Corporation | Detecting and correcting anomalies in computer-based reasoning systems |
US11748635B2 (en) | 2017-08-18 | 2023-09-05 | Diveplane Corporation | Detecting and correcting anomalies in computer-based reasoning systems |
US11657294B1 (en) | 2017-09-01 | 2023-05-23 | Diveplane Corporation | Evolutionary techniques for computer-based optimization and artificial intelligence systems |
US11941542B2 (en) | 2017-11-20 | 2024-03-26 | Diveplane Corporation | Computer-based reasoning system for operational situation control of controllable systems |
US11092962B1 (en) | 2017-11-20 | 2021-08-17 | Diveplane Corporation | Computer-based reasoning system for operational situation vehicle control |
US11385633B2 (en) | 2018-04-09 | 2022-07-12 | Diveplane Corporation | Model reduction and training efficiency in computer-based reasoning and artificial intelligence systems |
US11454939B2 (en) | 2018-04-09 | 2022-09-27 | Diveplane Corporation | Entropy-based techniques for creation of well-balanced computer based reasoning systems |
US11880775B1 (en) | 2018-06-05 | 2024-01-23 | Diveplane Corporation | Entropy-based techniques for improved automated selection in computer-based reasoning systems |
US11494669B2 (en) | 2018-10-30 | 2022-11-08 | Diveplane Corporation | Clustering, explainability, and automated decisions in computer-based reasoning systems |
US11823080B2 (en) | 2018-10-30 | 2023-11-21 | Diveplane Corporation | Clustering, explainability, and automated decisions in computer-based reasoning systems |
US11361231B2 (en) | 2018-11-13 | 2022-06-14 | Diveplane Corporation | Explainable and automated decisions in computer-based reasoning systems |
US11176465B2 (en) | 2018-11-13 | 2021-11-16 | Diveplane Corporation | Explainable and automated decisions in computer-based reasoning systems |
US11361232B2 (en) | 2018-11-13 | 2022-06-14 | Diveplane Corporation | Explainable and automated decisions in computer-based reasoning systems |
US11741382B1 (en) | 2018-11-13 | 2023-08-29 | Diveplane Corporation | Explainable and automated decisions in computer-based reasoning systems |
US11676069B2 (en) | 2018-12-13 | 2023-06-13 | Diveplane Corporation | Synthetic data generation using anonymity preservation in computer-based reasoning systems |
US11727286B2 (en) | 2018-12-13 | 2023-08-15 | Diveplane Corporation | Identifier contribution allocation in synthetic data generation in computer-based reasoning systems |
US11669769B2 (en) | 2018-12-13 | 2023-06-06 | Diveplane Corporation | Conditioned synthetic data generation in computer-based reasoning systems |
US11783211B2 (en) | 2018-12-13 | 2023-10-10 | Diveplane Corporation | Synthetic data generation in computer-based reasoning systems |
US11640561B2 (en) | 2018-12-13 | 2023-05-02 | Diveplane Corporation | Dataset quality for synthetic data generation in computer-based reasoning systems |
US11625625B2 (en) | 2018-12-13 | 2023-04-11 | Diveplane Corporation | Synthetic data generation in computer-based reasoning systems |
US11763176B1 (en) | 2019-05-16 | 2023-09-19 | Diveplane Corporation | Search and query in computer-based reasoning systems |
CN114503053A (en) * | 2019-10-01 | 2022-05-13 | 微软技术许可有限责任公司 | Extension of global keyboard shortcuts for computing devices with multiple display areas |
US11442621B2 (en) | 2019-10-01 | 2022-09-13 | Microsoft Technology Licensing, Llc | Extensions to global keyboard shortcuts for computing devices having multiple display regions |
WO2021067015A1 (en) * | 2019-10-01 | 2021-04-08 | Microsoft Technology Licensing, Llc | Extensions to global keyboard shortcuts for computing devices having multiple display regions |
Also Published As
Publication number | Publication date |
---|---|
US20070162875A1 (en) | 2007-07-12 |
US7757185B2 (en) | 2010-07-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7757185B2 (en) | Enabling and disabling hotkeys | |
US8140971B2 (en) | Dynamic and intelligent hover assistance | |
KR101475970B1 (en) | Selective enabling of multi-input controls | |
US7802203B2 (en) | Method for providing selectable alternate menu views | |
US9052894B2 (en) | API to replace a keyboard with custom controls | |
KR102023801B1 (en) | Systems and methods for displaying notifications received from multiple applications | |
US9310967B2 (en) | Border menu for context dependent actions within a graphical user interface | |
US7418670B2 (en) | Hierarchical in-place menus | |
US20160110230A1 (en) | System and Method for Issuing Commands to Applications Based on Contextual Information | |
US20110175826A1 (en) | Automatically Displaying and Hiding an On-screen Keyboard | |
US10936568B2 (en) | Moving nodes in a tree structure | |
US20140289641A1 (en) | Adaptive User Interface | |
US20140059485A1 (en) | Toggle gesture during drag gesture | |
US20110167375A1 (en) | Apparatus and Method for Conditionally Enabling or Disabling Soft Buttons | |
US20150347005A1 (en) | Key combinations toolbar | |
US20130036357A1 (en) | Systems and methods for automatically switching on and off a "scroll-on output" mode | |
US10754452B2 (en) | Unified input and invoke handling | |
KR20150053694A (en) | Method and system for activating application | |
JP2023542666A (en) | Operation method and device | |
US8694914B2 (en) | Method and apparatus to control the display of windows in a processing system | |
US9582133B2 (en) | File position shortcut and window arrangement | |
US9361013B2 (en) | Sticky functionality | |
US6489981B1 (en) | Method, article of manufacture and apparatus for processing screen pointers in a display | |
US7308654B2 (en) | Information processing apparatus, menu processing method and recording medium storing a menu processing program | |
US10712914B2 (en) | Method, apparatus and computer program product for user interface dynamic display based on time that a device has been in locked state |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |