This non-provisional application claims benefit of Canadian Application 2,573,914 which was filed on Jan. 12, 2007.
The invention relates generally to computing devices, and more specifically, to system and method for controlling the operating states of an application.
a-d depict simulated screen shots of Windows XP™. Applications that are compliant with the Windows XP™ operating system have certain operating states in common, namely, a non-operative state, a foreground state, a background state, and a minimized state. In a non-operative state, an application typically resides in a storage device, such as a hard disc drive, and has not been launched. In a foreground state, as exemplified in
Various user actions place a software application in its different operating states. When the user launches the application, as by clicking on an application icon, the operating system activates the application and places it in its foreground state. Launching another application, clicking in a window associated with another application, or clicking on the name of another application in the tool bar 13 incidentally places the application in its background state. When in the background state, clicking in the application window or clicking on the representation 12 of the application in the tool bar 13 brings the application to its foreground state. In the foreground state, clicking on a minimize button 16 associated with the application window 10 places the application in its minimized state. Thereafter clicking on the application's name 12 in the tool bar 13 returns the application to its foreground state. Clicking on an X-button 17 associated with the application window 10 will cause the application to return to its inoperative foreground state although some applications may remain referenced in the XP tray 14 (unless specific steps are taken to quit) in which case clicking on the icon representing an application in the XP system tray (such as the icon 15) brings the application to the foreground.
There are shortcomings associated with such operation, which include time delays occasioned by manipulating a mouse and incidental diversion of a user's attention from work in progress. To avoid the delay and distraction occasioned by use of a mouse, many computer users prefer to use what are referred to as “keyboard equivalents” or “short cuts.” Keyboard equivalents often involve pressing an alphanumeric key contemporaneously with one or more modifiers keys, such as command, control, shift and alt/option keys, to invoke a desired menu command or to mimic the effect of clicking on a button. It is also known practice to associate application commands with a set of function keys so that clicking each function key triggers a different operation. A shortcoming associated with keyboard equivalents is the need to memorize what key has been assigned to what function.
To facilitate use of keyboard equivalents, the Windows XP™ operating system has a “hotkeys” feature that permits a user to associate different software commands with key combinations specifically selected by the user and therefore easier to remember. The Skype application, for example, is compliant with this aspect of the Windows XP™ operating system, and a user is allowed to select keyboard equivalents to trigger several basic functions including answering a call, ignoring a call and rejecting a call. Although this approach is welcome, it is problematic, as a user remains obliged to learn and distinguish keyboard equivalents for several software applications.
It is also known in the design of keyboards to provide a button and supporting software dedicated to the launching of a particular software application from an inoperative state. This avoids the need to search the desktop or directories to find and then click an application icon. Extending such practices to provide multiple buttons dedicated to invoking various functions for a particular software application is also know. However this approach requires individual buttons for the various functions, which increases the size and complexity of the keyboard. As keyboard manufacturers are already constrained to limit the size of keyboards, especially for laptop computers or hand-held electronic devices this approach is impractical.
In accordance with an aspect of the present disclosure there is provided a method of controlling a current operating state of an application. The method comprising the steps of receiving an input event associated with the application, determining the current operating state of the application associated with the received input event, determining a successor state of the application based on the determined operating state and changing the current operating state of the application to the determined successor state.
In accordance with a further aspect of the present disclosure there is provided a computer program product for controlling a current operating state of an application. The computer program product comprising a computer readable medium embodying program code means for implementing a method comprising the steps of receiving an input event associated with the application, determining the current operating state of the application associated with the received input event, determining a successor state of the application based on the determined operating state, and changing the current operating state of the application to the determined successor state.
In accordance with a further aspect of the present disclosure there is provided a keyboard for communicating with a computing device, the keyboard comprising a button adapted to send an input event to the computing device for changing a current operating state of an application to a successor state of the application, the current operating state of the application and the successor state of the application selected from a plurality of possible operating states.
In accordance with a further aspect of the present disclosure there is provided a system for controlling a current operating state of an application, the system comprising a computing device and a keyboard. The computing device comprising a memory for storing instructions, a processor for executing the stored instructions, the executed instructions implementing an input component for receiving an input event associated with the application, a current operating state determination component for determining the current operating state of the application associated with the received input event, a successor state determination component for determining a successor state of the application based on the determined operating state and an operating state changing component for changing the current operating state of the application to the determined successor state. The keyboard device being coupled to the computing device. The keyboard device comprising a button adapted to send the input event associated with the application to the input component of the computing device.
The system and method for controlling the operating states of an application will be described with reference to drawings in which:
a-1d are diagrammatic screen images stripped of detail and showing basic interface features characteristic of operating states;
a depicts in a block diagram, exemplary components of a system for controlling a current operating state of an application;
b depicts in a block diagram, exemplary logical components of a computing device for controlling a current operating state of an application;
The system and method for controlling a current operating state of an application will be described with reference to the Windows XP™ operating system of Microsoft Inc. and to a now popular software application identified with the trademark Skype™ that enables telephone communication using a voice-over-internet protocol (“VOIP”). It should be understood, however, that the present system and method of controlling the current operating state of an application has application to other operating systems, such as the Apple Macintosh™ operating system, that have a graphic user interface comprising windows and menus and that permit use of a mouse to select commands found in menus or to trigger execution of procedures or scripts associated with buttons, and to computing devices that have applications.
a depicts in a block diagram exemplary components of a system 10 for controlling a current operating state of an application. The system comprises a computing device 20. The computing device 20 is connected to a monitor 21 and a keyboard device 22 as further described herein.
b depicts in a block diagram, exemplary logical components of a computing device 20 for controlling a current operating state of an application. The computing device 20 comprises an input component 205 for receiving an input event associated with the application, a current operating state determination component 210 for determining the current operating state of the application associated with the received input event, a successor state determination component 215 for determining a successor state of the application based on the determined operating state and an operating state changing component 220 for changing the current operating state of the application to the determined successor state.
Referring to
The overall operation occasioned with each such state transition is identified in
The AP 44I may be used to determine the application-specific state of the Skype™ application, which may be used in determining the current operating state in stead of, or in addition to, the operating system application states. The API 44 can be queried to identify various conditions, for example, whether the Skype™ application is currently idle, whether the user has specified a telephone number that is to be dialed, whether there is currently an incoming call, whether the Skype™ application 25 is currently handling a call, and whether a second, incoming call is detected during handling of a current call. Similarly, state transitions in the Skype™ application 25 are triggered through the API 44, changing the current operating state of the Skype™ application.
At least one advantage achieved is that the Skype™ application 25 can be stepped through its various operating states, accepting, rejecting, and handling calls, by simply pressing the assigned button 28. The user is not obliged to learn various key equivalents but progresses naturally between states by operating a single button 28. Furthermore, only a single button on the keyboard is required to achieve the changing of the operating states of the application, which may reduce the size of the keyboard.
If the Skype™ application 25 is in its calling state S7 when the input event is received indicating that the button 28 is pressed, the keyboard program 24 instructs the Skype™ application 25 via the API 44 to change its current operating state to its idle state, incidentally canceling the outgoing call, as at step 52.
If the Skype™ application 25 is in its first call-handling state when the input event is received indicating that the button 28 is pressed, the keyboard program 24 uses the API 44 to determine if there is an incoming call from a second person P2 (step 53). If so, the keyboard program 24 checks whether the input event is received indicating that the user is holding the button 28 down (step 54), and if so, instructs the Skype™ application 25 via its interface to reject the call (step 55). Otherwise, the program places the Skype™ application 25 via its API 44 into its second call-handling state (step 56), incidentally placing the first person P1 on hold and enabling a conversation with the second person P2. Otherwise, with no incoming call, the keyboard program 24 assumes the user wishes to end the current conversation with the person P1, and changes the current operating state of the Skype™ application 25 to the determined successor state which is the idle state S6 as at step 57.
If the Skype™ application 25 is in its second call-handling state with a first person P1 on hold when the input event is received indicating the button 28 is pressed, the keyboard program 24 assumes that the user wishes to end his conversation with person P2. It then instructs the Skype™ application 25 via the API 44 to return to its first calling state (step 58), incidentally terminating the call with the person P2 and once again enabling conversation with the person P1.
As described above the current operating state and the successor state of an application (whether the other Windows™ application or the Skype™ application) may be selected from a possible set of operating states. The possible operating states may include operating system application states and/or application-specific states.
A transition T19 from the first call-handling state S8 to the second background state S11 occurs when the Skype™ application 25 is placed in the background by user actions that bring another application to the foreground. A transition T20 from the second background state S11 back to the first call-handling state S8 is caused by tapping the assigned button 28 but also occurs automatically when the Skype™ application 25 responds to an incoming call from a second person P2 while a first person P1 is on hold. A transition T21 from the second call-handling state S9 to the third background state S12 occurs when user action brings another application to the foreground, and a transition T22 from the third background state S13 back to the second call-handling state S9 is caused by tapping the assigned button 28. In the third background state S12, a user can terminate a conversation with a second person P2 by pressing and holding the assigned button 28, which causes a transition T23 to the first calling-handling state S8 where the user can once again converse with a first person P1 who has been on hold.
The Skype™ application 25 makes a transition T24 from its first call-handling state S8 to its third minimized state S10 in response to clicking on a minimize button in the application window. Once in the third minimized state S10, the Skype™ application 25 makes a transition T25 back to its first call-handling state S8 in response to the user tapping the assigned button 28 or automatically in response to detection of an incoming call from a second person P2. In the third minimized state, the user can press and hold the assigned button 28 to end a telephone conversation with a first person P1 in which case the Skype™ application 25 makes a transition T26 back to the idle state S6.
The system and method for controlling a current operating state of an application has particular application to applications running on operating systems that provide operating system application states to applications, such as for example a calculator, web browser, email program etc. The operating system application states may include, for example, non-operative, foreground, background and minimized states of operation corresponding to those described above with reference to the Window XP™ operating system. To that end, data may be stored, for example to identify the foreground state of an application as the successor state to each of the non-operative state, background and minimized states. One minimized state may be identified as the successor state of the foreground state, which then allows toggling of the application between foreground and minimized states with repeated pressing of the assigned button.
The system and method for controlling a current operating state of an application also has particular application to applications that have different operating states, for example, communication software applications adapted to implement VOIP telephone communication, such as the Skype™ software application discussed above. Such software may have operating system application states as mentioned above but will also have application-specific states associated with, for example, telecommunication functions. The application-specific states may include an idle state in which the software application is executing but not engaged in handling of a telephone call; a calling state in which the software application dials a specified telephone number and attempts to complete a telephone connection; a first call-handling state in which the software application enables a telephone conversation with a first person, and a second call-handling state in which the software places the first person on hold and enables a telephone conversation with a second person who happens to call. In such a context, the data to be stored may identify the calling state as a successor to the idle state if the assigned button is pressed while a telephone number for an outgoing telephone call is specified. The first call-handling state may be identified as a successor to the idle state if the button is pressed during an incoming call, and the idle state may be identified as a successor to both call-handling states. More specifically, the idle state is identified as the successor to the first call-handling state if the assigned button is pressed while there is no incoming call; the second call-handling state is identified as a successor to the first call-handling state if the assigned button is pressed in response to a second person making an incoming call; and the first call-handling state may be identified as a successor to the second call-handling state. The advantage obtained is that the user can step the application through various operating states, handling incoming and outgoing telephone calls, with just a single button.
Although the system and methods have been described in detail with reference to a computing device and keyboard, it is understood that the system and methods may be advantageously used in other devices, such as for example, a cell phone, a personal digital assistant (PDA), a smart phone, etc. For example, a cell phone may utilize the system and methods described herein to replace multiple buttons used for initiating a call and ending a call with a single button that determines the operating state of the cell phone determines a possible successor state to place the phone in depending on at least the determined operating state, and then places the cell phone in the determined possible successor state.
The system and methods according to the present patent disclosure may be implemented by any hardware, software or a combination of hardware and software having the above described functions. The software code, either in its entirety or a part thereof, may be stored in a computer-readable memory. Further, a computer data signal representing the software code which may be embedded in a carrier wave may be transmitted via a communication network. Such a computer-readable memory and a computer data signal are also within the scope of the present patent disclosure, as well as the hardware, software and the combination thereof.
While particular embodiments of the present patent disclosure have been shown and described, changes and modifications may be made to such embodiments without departing from the true scope of the patent disclosure.
Number | Date | Country | Kind |
---|---|---|---|
2,573,914 | Jan 2007 | CA | national |