Home computer systems are increasingly becoming an integral component for the playback of audio and/or video content in a home theater, stereo, or multimedia environment. For example, a personal computer can be utilized for the playback of movies stored on DVDs, video files, music stored on CDs, music files, and the like. In connection with such media content, the computer system should allow the user to control the playback of the content, much like a standalone DVD player or CD player.
One playback control solution utilizes a remote control device as typically provided with televisions, VCRs, DVD players, CD players, stereo receivers, and the like. This solution results in additional cost to the user, and may be undesirable to users seeking to reduce the number of remote controls and clutter in the computing and/or home theater environment. A more computer-centric solution utilizes an onscreen user interface that can be manipulated by the user in a familiar manner using a mouse, a keyboard, a touchpad, or other control device. Most users are familiar with such control devices in the context of routine computer operation. Reliance on a keyboard interface, however, can be problematic in a home theater environment because it can be difficult to see the keyboard in low light conditions. Moreover, the keyboard may be tethered to the computer system, thus requiring the user to be in close proximity to the computer system. In addition, certain keystroke sequences, such as “Control-P” for play, may not make sense in foreign languages. Likewise, the problem with using a conventional mouse in a home theater environment is that the mouse may be tethered to the computer system. Furthermore, conventional mice and other pointing devices require onscreen controls with which to interact, where such onscreen controls tend to overlap the view of the content window displayed on the computer monitor. In addition, a non-wireless mouse also requires a flat surface to support its movement.
One conventional computer mouse design utilizes additional mouse buttons that have designated functions that are specific to the media player application. For example, such a mouse might include a devoted play button, a devoted fast forward button, and a devoted rewind button in addition to the standard two-button or the standard four-button configuration. This type of hardware solution results in added expense to the user. Another computer mouse design includes a physical switch that selects either a mouse mode or a media mode. When the media mode is selected, the mouse generates media control signals (rather than standard mouse control signals) for transmission to the computer system. This hardware solution also results in added expense to the user.
Technologies and techniques described herein relate to controlling the operation of a media player application by mapping pointing device messages to media player control functions. Techniques described herein may be performed in conjunction with the manipulation of a computer pointing device, such as a mouse, and such techniques can be supported with a general purpose and standard mouse, i.e., a conventional two-button or four-button mouse without any special modifications. In one embodiment, the technologies and techniques repurpose a pointing device when a media player application is placed into a full screen mode, such that standard pointing device messages are converted to control features of the media player application.
A more complete understanding of example embodiments may be derived by referring to the detailed description and claims when considered in conjunction with the following figures, wherein like reference numbers refer to similar elements throughout the figures.
The following detailed description is merely illustrative in nature and is not intended to limit the embodiments or the application and uses of such embodiments. Example embodiments may be described herein in terms of functional and/or logical block components and various processing steps. It should be appreciated that such block components may be realized by any number of hardware, software, and/or firmware components configured to perform the specified functions. For example, an embodiment may employ various integrated circuit components, e.g., memory elements, digital signal processing elements, logic elements, look-up tables, or the like, which may carry out a variety of functions under the control of one or more microprocessors or other control devices. In addition, those skilled in the art will appreciate that embodiments may be practiced in conjunction with any number of data transmission protocols and that the system described herein is merely one example embodiment.
For the sake of brevity, conventional techniques related to computer devices, media player applications, signal processing, data transmission, signaling, computer operating systems, network control, and other functional aspects of the systems (and the individual operating components of the systems) may not be described in detail herein. Furthermore, the connecting lines shown in the various figures contained herein are intended to represent example functional relationships and/or physical couplings between the various elements. It should be noted that many alternative or additional functional relationships or physical connections may be present in an example embodiment.
The following description may refer to elements or nodes or features being “connected” or “coupled” together. As used herein, unless expressly stated otherwise, “connected” means that one element/node/feature is directly joined to (or directly communicates with) another element/node/feature, and not necessarily mechanically. Likewise, unless expressly stated otherwise, “coupled” means that one element/node/feature is directly or indirectly joined to (or directly or indirectly communicates with) another element/node/feature, and not necessarily mechanically. Thus, although the figures may depict example arrangements of elements, additional intervening elements, devices, features, or components may be present in an example embodiment (assuming that the functionality of the system is not adversely affected).
Briefly, an example embodiment is directed to a method by which a media player application may remap the button configuration for a pointing device, such as a mouse, in response to a change in the operating mode of the media player application. In order to selectively control application behavior, the media player application monitors its application state and responds to certain state changes by capturing mouse input information from the operating system and remapping it in accordance with a mapping table (which may be user-configurable) maintained by the media player application. Media specific control functions may be temporarily mapped to standard mouse buttons and the mouse can be automatically repurposed for use in controlling media playback when the media player application enters full screen mode or in response to other operating conditions or characteristics as described in more detail below.
Computer system 100 and certain aspects of the example embodiments may be described in the general context of computer-executable instructions, such as program modules, executed by one or more computers or other devices. Generally, program modules include routines, programs, objects, components, data structures, and/or other elements that perform particular tasks or implement particular abstract data types. Typically, the functionality of the program modules may be combined or distributed as desired in various embodiments.
Computer system 100 typically includes at least some form of computer readable media. Computer readable media can be any available media that can be accessed by computer system 100 and/or by applications executed by computer system 100. By way of example, and not limitation, computer readable media may comprise computer storage media and communication media. Computer storage media includes volatile, nonvolatile, removable, and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can accessed by computer system 100. Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of the any of the above should also be included within the scope of computer readable media.
Referring again to
Computer system 100 may also contain communications connection(s) 112 that allow the system to communicate with other devices. Communications connection(s) 112 may be associated with the handling of communication media as defined above.
Computer system 100 may also include or communicate with input device(s) 114 such as a keyboard, mouse or other pointing device, pen, voice input device, touch input device, etc. In the example embodiment described below, input device(s) includes a standard pointing device (e.g., a mouse) that generates standard pointing device messages for processing by computer system 100 in connection with a media player control mode. Although the example embodiment described herein utilizes a mouse device, embodiments can be equivalently configured to support a trackball device, a joystick device, a touchpad device, or any type of general purpose pointing device. Computer system 100 may also include or communicate with output device(s) 116 such as a display, speakers, printer, or the like. All of these devices are well know in the art and need not be discussed at length here.
As depicted in
Briefly, mouse message mapping logic 202 receives standard mouse messages from general purpose mouse device 206, and maps the standard mouse messages to corresponding media player control instructions. The converted media player control instructions can then be utilized as prompts for media player control function logic 204, which in turn carries out the corresponding media player control functions (e.g., play, stop, menu, rewind, or the like). Notably, in this example embodiment media player application 200 contains the intelligence and processing logic for interpreting the standard mouse messages and for converting the standard mouse messages into corresponding media player control functions. The processing of standard mouse messages in this manner is described in more detail below.
In example embodiments, the conversion of standard mouse messages into instructions specific to a media player application occurs when the media player application is in a full screen mode. In this regard,
In alternate embodiments, the computer system or the media player application 302 repurposes the general purpose pointing device as a remote controller for media player application 302 in response to certain operating conditions or status. For example, such repurposing may occur whenever the pointing device cursor is focused on the window corresponding to media player application 302. As another example, such repurposing may occur whenever the window corresponding to media player application 302 is displayed as the “top” window. As yet another example, such repurposing may occur whenever the window corresponding to media player application 302 is displayed at or above a predetermined window size, area, or dimension.
In this example, media player functions 402 may include, without limitation: a fast forward function 408; a mute function 410; a next item/chapter function 412; a play/pause function 414; a previous item/chapter function 416; an exit full screen function 418; a rewind function 420; a menu function 422; a stop function 424; a volume adjust down function 426; a volume adjust up function 428; a caption on/off function 430; a close application function 432; and an eject disk function 434. Each of these functions may be mapped to a different standard mouse message (if supported), such that the media player application can distinguish the different mouse messages for purposes of function mapping. For example, the mute function 410 may be mapped to the standard mouse message corresponding to a roller ball click, and such functionality may be supported by both the 2-button roller mouse 404 and the 4-button roller mouse 406. As another example, the play/pause function 414 may be mapped to the standard mouse message corresponding to a left button click, and such functionality may be supported by both the 2-button roller mouse 404 and the 4-button roller mouse 406. In this example, however, the previous item/chapter function 416 is not supported by the 2-button roller mouse 404; the previous item/chapter function 416 may be mapped to the standard mouse message corresponding to a back thumb button click for the 4-button roller mouse 406. In this regard, the media player application will never receive a “back thumb button click” message from a 2-button roller mouse because such devices do not include a back thumb button.
In one embodiment, the mapping of media player functions is written into the media player application itself and such mapping is not accessible to the user. In alternate embodiments, the mapping of media player control functions is user-configurable. For example, the user of the media player application may be able to customize the mapping of media player functions via a “preferences” or “options” menu in the media player application.
Media player mouse control process 500 may be performed by a media player application, by the operating system, and/or by any application or control of the host system. In this example, process 500 assumes that the media player application is running, whether or not any media is actually being played. Process 500 may begin by mapping media player control functions for the media player application to standard mouse messages (task 502). Task 502 may correspond to the maintenance of a mapping table, feature, or structure as described above in connection with
In response to a full screen request, media player mouse control process 500 may cause the media player application to enter the full screen mode (task 508), as described above in connection with
In this example, media player mouse control process 500 eventually receives at least one standard mouse message in response to user interaction with a general purpose mouse device (task 514). As explained above, standard mouse messages are generated in response to common mouse actions including, without limitation: left button click; right button click; left button double click; right button double click; roller ball click; roller ball scroll up/down; front thumb button click; back thumb button click; holding down front thumb button; and holding down back thumb button. In response to a standard mouse message, process 500 may check whether that standard mouse message is mapped to a media player control function or instruction (query task 516). If not, then process 500 may disregard the message or handle it according to standard mouse operation (task 506). If, however, the standard mouse message is mapped to a corresponding media player control function or instruction, then process 500 may proceed to a task 518.
In this example embodiment, media player mouse control process 500 may determine a media player control function corresponding to the standard mouse message (task 518). In practice, process 500 may cause the media player application to perform a table lookup procedure or to otherwise consult mapping assignments to resolve the particular media player function corresponding to the standard mouse message. Moreover, process 500 may convert the standard mouse message into a corresponding media player control instruction (or instructions) configured to control the operation of the media player application (task 520). In connection with task 520, process 500 may identify the desired media player function (e.g., mute, rewind, stop, volume adjust, etc.) and generate suitably configured control instructions that prompt the media player application to actually carry out the desired function. Consequently, process 500 may execute the designated media player control function (task 522) to control a corresponding feature of the media player application.
In practice, media player mouse control process 500 may continue indefinitely to facilitate operation in the media player mouse control mode. In this example, process 500 may monitor for an exit full screen request (query task 524), which may be initiated by the user, initiated automatically at the end of audio/video playback, or the like. Referring to
In response to the exit full screen request, media player mouse control process 500 may also disable the media player mouse control mode (task 528) such that standard mouse operation is re-established (task 506). In example embodiments, disabling of the media player mouse control mode occurs automatically in response to an exit full screen request, thus immediately releasing mouse capture for the media player application and returning mouse control to other applications that might be running on the computer system.
While at least one example embodiment has been presented in the foregoing detailed description, it should be appreciated that a vast number of variations exist. It should also be appreciated that the example embodiment or embodiments described herein are not intended to limit the scope, applicability, or configuration of the technology in any way. Rather, the foregoing detailed description will provide those skilled in the art with a convenient road map for implementing the described embodiment or embodiments. It should be understood that various changes can be made in the function and arrangement of elements without departing from the scope defined by the claims, which includes known equivalents and foreseeable equivalents at the time of filing this patent application.