Abstract:
A method, computer program product, and system are disclosed. The method including the steps of presenting a virtual representation of an environment, receiving a first input from a first user input device, the first user input device including a motion sensor and a plurality of buttons, receiving a second input from a second user input device, the second user input device including a motion sensor and a plurality of buttons, updating the virtual representation of the environment corresponding to the first input and the second input, wherein the updating generates a modified virtual representation of the environment and presenting the modified virtual representation of the environment.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
       [0001]    The present application claims priority to U.S. provisional application 61/642,706 filed on May 4, 2012 entitled System and Method for Computer Control, the contents of which are hereby incorporated by reference herein in their entirety. 
     
    
     FIELD OF THE INVENTION 
       [0002]    The present disclosure relates to systems and methods for controlling a computer. More particularly, the present disclosure relates to devices for use with a computer and methods to control a virtual environment. Still more particularly, the present disclosure relates to a system of computer mice for controlling a computer environment including control of camera direction, character motion, and character actions. 
       BACKGROUND 
       [0003]    Virtual environments have existed since the inception of the digital age. The first virtual environments generally consisted of text-based representations of an environment. Examples of these types of virtual environments include MUDs (multi-user dungeons), and text-based video games. As computers have become more sophisticated, so too have the virtual environments. For example, instead of providing textual representations of environments, these newer virtual environments may include graphics to represent objects within the environment. 
         [0004]    To control various aspects of these representations, typical virtual environments allow a user to control the actions of something with the virtual representation. For example, in some implementations, the user controls an avatar representing an in-game character within the environment that is virtually represented. In such implementations, the user may use a keyboard to control the position of the avatar, the orientation of the camera (e.g., pan up, pan down, pan left, and pan right), and the zoom level of the camera, to name a few examples. In addition, according to particular implementations, the keyboard may be used to execute predefined actions (e.g., the numbers 1-10 corresponding to predefined actions 1-10 on an action bar). Moreover, a mouse or other pointing device can be used to click those actions on the action bar, orient the camera, and change the zoom level of the camera, to name a few examples according to particular implementations. 
       SUMMARY 
       [0005]    In general, one aspect of the subject matter described in this specification can be embodied in methods that include the actions of presenting a virtual representation of an environment, receiving a first input from a first user input device, the first user input device including a motion sensor and a plurality of buttons, receiving a second input from a second user input device, the second user input device including a motion sensor and a plurality of buttons, updating the virtual representation of the environment corresponding to the first input and the second input, wherein the updating generates a modified virtual representation of the environment and includes moving the position of a camera within the video game environment an amount corresponding to motion-sensor information included in the first input, moving the position of a character within the video game environment an amount corresponding to button-press information included in the first input, and executing an action by the character corresponding to both motion-sensor information and button-press information included in the second input, presenting the modified virtual representation of the environment. 
         [0006]    Another aspect of the subject matter described in this specification can be embodied in a computer program product, tangibly encoded on a computer-readable medium, operable to cause a computer processor to perform actions including presenting a virtual representation of the environment, receiving a first input from a first user input device, the first user input device including a motion sensor and a plurality of buttons, receiving a second input from a second user input device, the second user input device including a motion sensor and a plurality of buttons, updating the virtual representation of the environment corresponding to the first input and the second input, wherein the updating generates a modified virtual representation of the environment and includes moving the position of a camera within the virtual representation of the environment an amount corresponding to motion-sensor information included in the first input, moving the position of a character within the virtual representation of the environment an amount corresponding to button-press information included in the first input, and executing an action by the character corresponding to both motion-sensor information and button-press information included in the second input, and presenting the modified virtual representation of the environment. 
         [0007]    Another aspect of the subject matter described in this specification can be embodied in a system including a computer processor, a first user input device, the first user input device including a motion sensor and a plurality of buttons, a second user input device, the second user input device including a motion sensor and a plurality of buttons, and computer-readable media with a computer program product tangibly encoded thereon, operable to cause a computer processor to perform operations including, presenting a virtual representation of the environment, receiving a first input from a first user input device, the first user input device including a motion sensor and a plurality of buttons, receiving a second input from a second user input device, the second user input device including a motion sensor and a plurality of buttons, updating the virtual representation of the environment corresponding to the first input and the second input, wherein the updating generates a modified virtual representation of the environment and includes moving the position of a camera within the virtual representation of the environment an amount corresponding to motion-sensor information included in the first input, moving the position of a character within the virtual representation of the environment an amount corresponding to button-press information included in the first input, and executing an action by the character corresponding to both motion-sensor information and button-press information included in the second input, and presenting the modified virtual representation of the environment. 
         [0008]    These and other embodiments can each optionally include one or more of the following features. The action can be selected from one of attacking another character in the virtual representation of the environment and blocking an attack from another character in the virtual representation of the environment. Attacking can include utilizing the received motion-sensor information corresponding to one of the four cardinal directions, one of the four ordinal directions, and movement ending in substantially the middle of the virtual representation and the received button-press information corresponding to a first button press. Blocking can include utilizing the received motion-sensor information corresponding to one of the four cardinal directions, one of the four ordinal directions, and the absence of motion and the received button-press information corresponding to a second button press. The first user input device can include an optical-motion sensor. The second user input device can include an optical-motion sensor. The first user input device can include four buttons, the buttons corresponding to moving the character forward, backward, left, and right within the game environment. The second user input device can include two buttons, the buttons corresponding to an attach action and a block action within the game environment. 
         [0009]    The details of one or more embodiments of the subject matter described in this specification are set forth in the accompanying drawings and the description below. Other features, aspects, and advantages of the subject matter will become apparent from the description, the drawings, and the claims. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0010]      FIG. 1  shows a system for computer control, according to some embodiments. 
           [0011]      FIG. 2A  shows a top view of an input device of the system of  FIG. 1 , according to one embodiment. 
           [0012]      FIG. 2B  shows a perspective view of an input device of the system of  FIG. 1 , according to one embodiment. 
           [0013]      FIG. 2C  shows a front view of an input device of the system of  FIG. 1 , according to one embodiment. 
           [0014]      FIG. 2D  shows a side view of an input device of the system of  FIG. 1 , according to one embodiment. 
           [0015]      FIG. 3  shows a virtual representation of an environment and corresponding degrees of motion available to a user of the system of  FIG. 1 , according to some embodiments. 
           [0016]      FIG. 4  shows a flowchart of operations, performable by the system of  FIG. 1 , for modifying a virtual representation of an environment, according to some embodiments. 
           [0017]      FIG. 5  shows an input device for use with the system of  FIG. 1 , according to some embodiments. 
       
    
    
       [0018]    Like reference numbers and designations in the various drawings indicate like elements. 
       DETAILED DESCRIPTION 
       [0019]    The present disclosure, in some embodiments, relates to a computer system particularly adapted to provide advanced motion, viewing, and action control in a virtual environment. That is, in some embodiments, multiple mice may be provided each having a motion sensor and a plurality of buttons. In some uses of the system, for example in the context of a virtual world type game, one of the motion sensors on one of the mice may be used to control the camera direction or viewing direction of a user&#39;s character and the buttons on the mouse may be used to control the motion of the character, for example. As such, the additional mouse may be freed up, when compared to more conventional systems, to allow for a wider range of activities with multiple degrees of freedom/motion. As such, while historically, characters in these types of games were required to look in the direction the character was moving or pointing, the present system allows for a character to look in directions that differ from the direction the character is moving or the direction the character&#39;s body is pointed. Still further, the additional degrees of freedom provided by the additional mouse may allow for more calculated refined interaction between characters such as in combat games involving attacking and blocking, for example. These refined interactions allow for the skill level of the player to be better represented when two player-controlled characters engage each other within the video game environment. 
         [0020]      FIG. 1  shows an example system  100 . The system  100  includes a processor  110 , a display device  120 , computer-readable storage media  130 , a first input device  140 , and a second input device  150 . The system  100  may be used to present a virtual representation of an environment. For example, the system  100  can present a virtual representation corresponding to a video game program product that is tangibly embodied on the computer-readable media  130 . In other implementations, the system  100  can present a virtual representation corresponding to a real-world physical environment, such as a room in a house or an outdoor space. As such, the virtual representation can be purely virtual (e.g., rendering a scene based on three-dimensional computer-generated geometry stored on the computer-readable media  130 ), it can be a virtual representation of an actual physical area (e.g., presenting streaming video or one or more images captured by an image capture device, such as a video camera), or it can be a form of altered reality (e.g., rendering objects based on three-dimensional computer-generated geometry stored on the computer-readable media  130  as an overlay on top of streaming video or one or more images captured by an image capture device, such as a video camera). 
         [0021]    The first input device  140  and the second input device  150  may be used to allow a user of the system  100  to manipulate aspects of both the virtual representation and the environment which is presented, according to particular implementations. In some implementations, the first user input device  140  may be used to manipulate the position of the camera within the environment. For example, the first user input device  140  may include a motion-sensor that can capture movement exerted by the user on the first user input device  140  which can be received as motion-sensor information by the processor  110  that may be executing a program product (e.g., a video game) tangibly embodied on the computer-readable storage media  130 . 
         [0022]    Once received, the computer processor  110  can process this communication and perform a number of operations causing the camera within the program product to change orientation (e.g., pan to the left, pan to the right, pan up, pan down, and combinations of these) within the virtual representation corresponding to the received motion-sensor information. As such, moving the first user input device  140  may cause the portion of the environment presented as the virtual representation to change, allowing the user of the system  100  to view other aspects of the environment. That is, moving the first user input device  140  may cause the system  100  to create a modified virtual representation and present the modified representation to the user where the before and after representations include differing views of the virtual environment. 
         [0023]    In addition, the first user input device  140  may also be used to manipulate the position of an avatar (e.g., a character) corresponding to the position of the user within the environment. For example, the first user input device  140  may include a plurality of buttons. In some implementations, these buttons may be configured to correspond to forward, back, left, and right movements of the avatar within the environment. As such, if the user presses one of these buttons, button-press information is received by the processor executing the program product. The computer processor may process this communication and perform a number of operations to cause the avatar to move within the environment corresponding to button-press information provided by the first user input device  140  and may cause the portion of the environment presented as the virtual representation to change. That is, pressing buttons included on the first user input device  140  may cause the system  100  to create a modified virtual representation and present the modified representation to the user, where the before and after representations include differing positions of the character in the virtual environment. 
         [0024]    The second user input device  150  can be used to cause the avatar within the environment to perform an action. For example, the second user input device  150  may include a motion-sensor that can capture movement exerted by the user on the second user input device  150  which can be received as motion-sensor information by the processor  110  executing a program product (e.g., a video game) tangibly embodied on the computer-readable storage media  130 . Similarly the second user input device  150  may include a plurality of buttons that can be pressed which can be received by the program product as button-press information. The computer processor  110  may use both the motion-sensor information and the button-press information to cause the avatar to perform an action according to the received information. For example, once received, the processor  110  can process this communication and perform a number of operations causing the avatar to perform the desired action. In general, different combinations of motions and button presses may operate to cause the avatar to perform different actions within the environment. 
         [0025]    For example, in one implementation, consider two players: A and B whom are facing each other in a video game environment. If player A moves their respective second user input device  150  in a generally up and left direction while pressing a first button on their respective second user input device  150  this combination of actions (i.e., moving the second user input device  150  and pressing the first button on the second user input device) may cause an avatar in a Japanese-style sword fighting game to perform an attack against player B&#39;s avatar within the environment. In the provided example, the sword of player A&#39;s avatar traces a substantially similar path in performing the attack (i.e., up and left) from player A&#39;s perspective, but would correspond to an attack moving up and to the right from player B&#39;s perspective. That is, in some implementations, player A&#39;s movements are mirrored when viewed by player B and vice versa. To illustrate another interaction within the virtual representation, according to a particular embodiment, if player A performs an attack against player B by moving their respective second user input device  150  in a generally down and to the right direction while pressing the first button, player B may block the attack by moving their respective second user input device  150  to the upper left and pressing the second button on their respective second user input device  150 . 
         [0026]    Likewise, if the virtual representation depicts an actual physical area, the first input device  140  can be used to manipulate the position of the camera within the environment, the position of an avatar corresponding to the position of the user within the environment, and the user input device  150  can be used to cause the avatar within the environment to perform an action. 
         [0027]    In some implementations, the processor  110  may be a programmable processor including processors manufactured by INTEL (of Santa Clara, Calif.) or AMD (of Sunnyvale, Calif.). Other processors may also be provided. The processor  110  may be configured to perform various operations, including but not limited to input-output (I/O) operations, display operations, mathematical operations, and other computer logic based operations. The processor may be in data communication with each of the input devices  140 ,  150  and may also be in data communication with each of the computer-readable storage media  130  and the display device  120 . 
         [0028]    In some implementations, the display device may be cathode ray tube (CRT) device, a liquid crystal display (LCD) device, a plasma display device, or a touch-sensitive display device. Still other display devices may be provided. In some embodiments, the display device may be a common computer monitor or it may be a more portable device such as a laptop screen or a handheld device. Still other types of display devices may be provided. 
         [0029]    In some implementations, the computer-readable storage media  130  may include optical media, such as compact disks (CDs), digital video disks (DVDs), or other optical media. In other implementations, the computer-readable storage media  130  may be a magnetic drive, such as a magnetic hard disk. In still other implementations, the computer-readable storage media  130  may be a solid-state drive, such as a flash drive, read-only memory (ROM), or random access memory (RAM). Still other types of computer-readable storage media may be provided. In some implementations, the first user input device  140  may include an optical motion sensor, such as a light emitting diode (LED) received by a complementary metal-dioxide sensor (CMOS) to determine changes in position based on differences in the images captured by the CMOS. In other implementations, the first user device  140  may include a physical sensor such as a trackball (on top or on bottom of the first user input device  140 ) that translates the physical motion of the trackball into a change of position of the mouse. Still other motion sensing systems or devices may be provided. In addition, the first user input device  140  may be in wired or wireless communication with the processor, according to particular implementations. 
         [0030]    In some implementations, the second user input device  150  may include an optical motion sensor, such as a light emitting diode (LED) received by a complementary metal-dioxide sensor (CMOS) to determine changes in position based on differences in the images captured by the CMOS. In other implementations, the second user device  150  may include a physical sensor such as a trackball (on top or on bottom of the second user input device  150 ) that translates the physical motion of the trackball into a change of position of the mouse. Still other motion sensing systems or devices may be provided. In addition, the second user input device  150  can be in wired or wireless communication with the processor, according to particular implementations. 
         [0031]    In some implementations, the system  100  may also include a network card. The network card may allow the system  100  to access a network (e.g., a local area network (LAN), or a wide area network (WAN)) and communicate with other systems that include a program product substantially similar to ones described herein. For example, a plurality of systems  100  can include computer-readable storage media  130  that have video game program products encoded thereon. These video game program products can communicate with each other vis-à-vis their respective network cards and the network to which they are apart to allow one user of the system  100  to play the video game program product in either cooperative or competitive modes interactively with the other users having access to their own systems  100 . In still other implementations, an Internet or other network-based system may be provided where the program product is stored on computer-readable storage media of a remote computer accessible via a network interface such as a web page, for example. In this context, one or more users may access the program product via the web page and may interact with the program product alone or together with others that similarly access the program product. Still other arrangements of systems and interactions between users may be provided. 
         [0032]      FIGS. 2A-2D  show four views of an example first input device  140 . The first input device  140  may include device buttons  210   a - 210   b,  a scroll wheel  220 , four top buttons  230   a - 230   d,  a pair of right-wing buttons  240   a - 240   b,  a pair of right-body buttons  250   a - 250   b,  a pair of left-body buttons  260   a - 260   b,  and a pair of left-wing buttons  270   a - 270   b.    
         [0033]    The two device buttons  210   a - 210   b  may operate similar to left and right mouse buttons, respectively, in a comparable two-button mouse. In an example, the left mouse button  210   a  may act as a left mouse button in a two-button mouse: a single-click may cause the object under the cursor to become active, and two clicks in quick succession may cause the object under the cursor to execute an operation. In an example, the right device button  210   b  may act as a right mouse button in a two-button mouse: a single-click may cause a menu to display on the screen or perform some other operation. In some implementations, pressing both left and right device buttons  210   a  and  210   b,  respectively, may act as a third mouse button. In other implementations, device buttons&#39;  210   a - 210   b  functionality may be set by the operating system of the computer, may be set by the application in use, or may be user-configurable, to name a few examples. In some embodiments, for example, the device buttons  210   a - 210   b  may be configured opposite a comparable two-button mouse such that when used with a left hand as would be the case in  FIG. 1 , the buttons functions correspond to the fingers a user would use to actuate them. As such, the left mouse button on the input device  140 , which may be depressed by the forefinger of the user&#39;s left hand may function similar to the right mouse button on the input device  150 , which may be depressed by the forefinger of the user&#39;s right hand. Still other functional configurations may be provided. 
         [0034]    The scroll wheel  220  may be used to cause the display to move a direction indicated by the spinning or tilting of the wheel. In an example, spinning the scroll wheel may cause the display to move up or down. In another example, the scroll wheel may be tilted to the right or left, and the wheel may be spun up or down. In yet another example, the scroll wheel may operate as a third mouse button. 
         [0035]    The four top buttons  230   a - 230   d  may be be programmed to perform various functions. For example, in some implementations, the programmable buttons  230   a - 230   d  can be programmed to operate similar to the arrow keys on a QWERTY keyboard. In some embodiments, as shown in  FIG. 2A , the buttons  230   a - 230   d  may be arranged in an inverted T-shape similar to an arrow key arrangement on a keyboard. The functionality of the buttons  230   a - 230   d  may be set by the operating system of the computer, the application in use, or by the user, to name a few examples. 
         [0036]    In addition, the pair of right-wing buttons  240   a - 240   b,  the pair of right-body buttons  250   a - 250   b,  the pair of left-body buttons  260   a - 260   b,  and the pair of left-wing buttons  270   a - 270   b  operate as additional conventional keyboard keys. In some implementations, these buttons may be configured to mirror functionality of specific keys on a keyboard. For example, any of buttons  240   a - 240   b,    250   a - 250   b,    260   a - 260   b,  and  270   a - 270   b  may be configured to mirror the functionality of the right shift key on a keyboard. Thus when a user presses the configured button it is as if the user used a keyboard to press the right shift key on the keyboard. The buttons  240   a - 240   b,    250   a - 250   b,    260   a - 260   b,  and  270   a - 270   b  may be configured by the user, by a particular computer application, or may be predefined by ROM included in the second user input device  150 , to name a few examples. Also, in some implementations, the buttons  240   a - 240   b,    250   a - 250   b,    260   a - 260   b,  and  270   a - 270   b  may be used to begin execution of a predetermined sequence of keystrokes or mouse button clicks, as if they were being performed on a keyboard or mouse, respectively (i.e., the buttons  240   a - 240   b,    250   a - 250   b,    260   a - 260   b,  and  270   a - 270   b  can perform a macro). For example, any of the buttons  240   a - 240   b,    250   a - 250   b,    260   a - 260   b,  and  270   a - 270   b  may be configured to execute an input corresponding to the keystrokes “/taunt” to execute a taunting type animation against the target. Accordingly, the first user input device  140  may act as a traditional mouse or a combination of a keyboard and mouse. 
         [0037]      FIG. 3  shows an example implementation of a combat system for a virtual representation  300  of an environment. Here, the environment is a video game, although it should be understood that manipulations described herein of the first user input device  140  and the second user input device  150  can be used to achieve other actions for video games or other actions for different environments, such as in non-virtual spaces (e.g., as a way to control a robot in a hazardous environment) or different actions in virtual spaces (e.g., a robotic war game environment, a three-dimensional space environment, a first person shooter environment, or other game environments according to different implementations). In the particular illustration, the virtual representation  300  is presented from a first-person perspective. That is, the camera is oriented such that the virtual representation  300  is presented through the eyes of the particular user. For example, the warrior  figure 315  is that of another in-game avatar and not the user of the system  100  viewing the virtual representation  300 . In other implementations, the warrior  figure 315  may be the in-game avatar of the user of system  100  viewing the virtual representation  300 . For example, over-the-shoulder camera positions, isometric camera positions, and top-down camera positions may also be used to alter the vantage point by which the virtual representation is presented. 
         [0038]    The virtual representation  300  depicted is a samurai-style video game environment. That is, the player takes on the role of a samurai and engages other samurai warriors. The other samurai warriors can be either computer-controlled or human-controlled samurai warriors. For example, the virtual representation  300  can be configured to access a network (e.g., a LAN or a WAN) to communicate with other systems  100  to provide interactive game-play between one or more human players. 
         [0039]    As described above, the first user input device  140  can be used to manipulate both the camera position of a camera within the virtual represent  300  of an environment and the position of the user&#39;s avatar samurai warrior within the virtual representation  300  of an environment. Additionally, the second user input device  150  can be used to perform a plurality of actions. In the illustrative virtual representation  300  of a samurai-style video game environment, the user can select between attack actions and block actions. In some implementations, an icon such as a cursor icon (not shown) is presented within the virtual representation  300  showing the relative position of the second user input device  150  as it relates to the virtual representation  300 . 
         [0040]    The following example involves two players: A and B. In the provided example, players A and B are facing each other, although it should be understood that depending on the relative position between players A and B, the attack actions and corresponding blocking actions may be different. For example, if player A is partially flanking player B, player B would perform a different movement using their respective second user input device  150  to block an attack, where the attack is being initiated by player A using a substantially similar motion (to that of the motion made when the players are facing each other) of player A&#39;s second user input device  150 . 
         [0041]    To perform an attack, player A can move their respective second user input device  150  in a cardinal direction (where the cardinal directions of N, S, E, and W are represented by the compass rose  310 ), or an ordinal direction (again where the ordinal directions of NE, SE, NW, and SW are in reference to the compass rose  310 ) to perform various slashes, chops, and thrusts. For example, if the player A moves the second input device  150  from the center of the screen (represented by the dashed circle surrounding the warrior  figure 315 ) to the northeastern portion of the screen and presses a first button on the second input device  150 , the attack performed is an upward right-side slash (from the perspective of player A), and an upward left-side slash from the perspective of player B. As another example, if the user does not move the second user input device  150  and presses the first button on the second input device  150 , the attack performed is a thrust (i.e., a straight ahead arm motion for example). 
         [0042]    In addition to performing attacks, the user can manipulate the second user input device  150  to perform a blocking action. For example, consider the attack described above where player A performs an upward right-hand slash by moving the mouse in a generally northeastern direction. This would cause the user&#39;s avatar to execute an attack starting toward the bottom left (in relation to player A&#39;s in-game avatar), and moving toward the upper right. Player B, however, would witness an attack being made starting at the bottom right of their virtual representation  300  and moving toward the upper left of their virtual representation. In response, player B can move their respective second user input device  150  such that the cursor representing the relative location of the second user input device  150  is in the southeastern (i.e., bottom right) portion of the virtual representation  300  and press a second button on the second user input device  150  to block the incoming attack. That is, moving the second user input device to the southeastern portion of the virtual representation  300  is effective at blocking attacks made by player A who moved their respective second user input device  150  in a generally northeastern direction. Similarly, if player A moves the cursor into substantially the middle portion of their respective virtual representation  300  and presses the first button of their respective second user input device to perform a thrust attack, player B can counter the thrust by moving and their respective second user input device  150  into substantially the middle portion of their respective virtual representation  300  and pressing the second button of their respective second user input device  150  to block player A&#39;s thrust. 
         [0043]    In this manner, the video game program product described may have a high degree of skill that appeals to more accomplished video game players (e.g., those that play video games competitively and those that may spend a number of hours daily playing video games). Users may both manipulate the camera and the position of the character within the virtual environment  300  using the first user input device  140 , but users may also perform attacks using nine-degrees of motion (the four ordinal and the four cardinal directions, and placing the cursor in substantially the middle portion of the virtual environment  300 ) and quickly react to attacks directed at the user by executing the corresponding block that can effectively block the attack aimed at the user&#39;s in-game avatar (examples of which have been described above). 
         [0044]    That is, instead of haphazardly using input devices to perform in-game actions, users achieve in-game success using controlled movements that can be countered by specific other similarly controlled movements. So instead of allowing the position of the character and camera orientation dictate the attack or block to be performed, player A&#39;s attacks and blocks can be performed irrespective of the position of the in-game avatar or the orientation of the camera within the environment being virtual represented. Likewise, player B can perform attack and block actions independently of the position their in-game avatar and the orientation of the camera within the environment being virtually represented. This increases the skill-level required because players utilizing the control scheme described herein are generally responsible for how the actions are to be performed as well as the character position, and the camera orientation. Contrast this with traditional control schemes where users are responsible only for the position of the character and the orientation of the camera with the environment presented by the virtual representation  300 . 
         [0045]      FIG. 4  is a flow chart illustrating an example method  400 . For illustrative purposes, the method  400  is described as being performed by system  100 , although it should be understood that other systems can be configured to execute method  400 . Also, for convenience  FIG. 4  is described in reference to a video game program product, but can be performed with implementation other program products that provide virtual representations of environments. In operation  410 , the system  100  may present a virtual representation of an environment. For example, in reference to  FIGS. 1 and 3 , the system  100  may present virtual representation  300  on display device  120 . 
         [0046]    In operation  420 , the system  100  may receive input from a first user input device. For example, in reference to  FIGS. 1 and 2 , the system  100  can receive motion-sensor input from the first user input device  140  corresponding to movement of the first user input device  140  by the user. Also, in reference to  FIGS. 1 and 2 , the system  100  can also receive button-press information corresponding to the user pressing any of the buttons  210   a - 210   b,    220 ,  230   a - 230   d,    240   a - 240   b,    250   a - 250   b,    260   a - 260   b,    270   a - 270   b  alone or in combination, to name another example. 
         [0047]    In operation  430 , the system  100  may receive input from a second user input device. For example, in reference to  FIG. 1 , the system  100  can receive both motion-sensor information and button-press information from the second user input device  150 . In some implementations, the motion-sensor information may correspond to movement of the second user input device  150  by the user and the button-press information may correspond to pressing a first button or a second button on the second user input device  150 . 
         [0048]    In operation  440 , the system  100  may modify the virtual representation of the environment corresponding to the first input and the second input. For example, the system  100  can perform one or more of operations  450 - 470  (described in more detail below) to generate a modified representation of the video game environment  300  corresponding to some combination of camera movements, character movements, and character actions corresponding to information received by the system  100  from the first user input device  140  and second user input device  150 . 
         [0049]    In operation  450 , the system  100  may move a position of a camera corresponding to motion-sensor information from the first input. For example, an in-game camera can pan to the left, pan to the right, pan up, pan down, and combinations of these within the virtual representation an amount corresponding to the received motion-sensor information. As such, in some implementations, panning the camera a particular amount corresponding to received motion-sensor information from the first input device  140  modifies the virtual representation in that a different portion of the environment is presented and virtually represented because the position of the in-game camera presents a different perspective of the environment. 
         [0050]    In operation  460 , the system  100  may move a position of a character within the virtual representation corresponding to button-press information from the first input. For example, in reference to  FIGS. 1-3 , the user&#39;s in-game avatar can be moved by a user pressing the buttons  230   a - 230   d  on the first user input device  140  corresponding to forward, right, back, and left movements respectively and causing button-press information to be received by the system  100 . In response, the system  100  performs operations causing the character&#39;s avatar to move within the virtual representation  300 . As such, in some implementations, moving the user&#39;s in-game avatar corresponding to received button-press information from the first input device  140  modifies the virtual representation in that a different portion of the environment is presented and virtually represented because the position of the user&#39;s in-game avatar changes. 
         [0051]    In operation  470 , the system  100  executes an action by a character corresponding to both motion-sensor information and button-press information from the second input. For example, in reference to  FIGS. 1-3 , the user of the system  100  can perform an attack against the samurai warrior  315  by a combination of moving the second user input device  150  and pressing a first button on the second user input device, causing motion-sensor information and button-press information to be received by the system  100 . In response, the system  100  performs an attack corresponding to the combined motion-sensor information and button-press information. For example moving the second user input device  150  into substantially the center of the virtual representation  300  and pressing a left mouse button on the second user input device  150  causes the user&#39;s in-game avatar to perform a thrust attack. 
         [0052]    As another example, the user of the system  100  can block an attack from the samurai warrior  315  by a combination of moving the second user input device  150  and pressing a second button on the second user input device, causing motion-sensor information and button-press information to be received by the system  100 . In response, the system  100  performs a block corresponding to the combined motion-sensor information and button-press information. For example moving the second user input device  150  into substantially the center of the virtual representation  300  and pressing a right mouse button on the second user input device  150  causes the user&#39;s in-game avatar to perform a block effective at blocking the samurai warrior&#39;s  315  thrust attack. 
         [0053]    In some implementations, performing an action by the user&#39;s in-game avatar modifies the virtual representation in that the actions can cause a change to the virtually represented environment. For example, if an attack action is successful, the target of the attack may be harmed in some way that is virtually represented (e.g., the samurai warrior  315  may be killed and removed from the virtual representation  300  of the video game environment). Likewise, the virtual representation  300  changes to present that the action. For example, the virtual representation  300  may change to represent a combination of a sword swing corresponding to an attack action performed by the samurai warrior  315  and a sword swing corresponding to a block action performed by the user of system  100 . 
         [0054]    In operation  480 , the system  100  presents a modified virtual representation of the environment. For example, the system  100  can present a modified virtual representation corresponding to one or more of operations  450 - 470  on the display device  120 . 
         [0055]    It will be appreciated that while the operations  410 - 480  are shown in a flow chart and have been described in order, some or all of the operations may be performed in other orders or may be omitted. Still further, while the configuration of the input devices  140  and  150  has been described such that the input device  140  provides camera control and motion control and the input device  150  provides action control, other configurations of the input devices may be provided and adapted for the particular environment being navigated or viewed. Suitable configurations may be selected to optimize the availability of the several analog and digital input options. 
         [0056]      FIG. 5  shows an input device  540  for use with the system of  FIG. 1 . The input device  540  may be similar to the device  140  in some respects and different than device  140  in other respects. The device  540  may include device buttons  510   a - 510   b,  and four top buttons  530   a - 530   d.    
         [0057]    The two device buttons  510   a - 510   b  may operate similar to left and right mouse buttons, respectively, in a comparable two-button mouse. In an example, the left mouse button  510   a  may act as a left mouse button in a two-button mouse: a single-click may cause the object under the cursor to become active, and two clicks in quick succession may cause the object under the cursor to execute an operation. In an example, the right device button  510   b  may act as a right mouse button in a two-button mouse: a single-click may cause a menu to display on the screen or perform some other operation. In some implementations, pressing both left and right device buttons  510   a  and  510   b,  respectively, may act as a third mouse button. In other implementations, device buttons&#39;  510   a - 510   b  functionality may be set by the operating system of the computer, may be set by the application in use, or may be user-configurable, to name a few examples. In some embodiments, for example, the device buttons  510   a - 510   b  may be configured opposite a comparable two-button mouse such that when used with a left hand as would be the case in  FIG. 1 , the buttons functions correspond to the fingers a user would use to actuate them. As such, the left mouse button on the input device  540 , which may be depressed by the forefinger of the user&#39;s left hand may function similar to the right mouse button on the input device  150 , which may be depressed by the forefinger of the user&#39;s right hand. Still other functional configurations may be provided. 
         [0058]    The four top buttons  530   a - 530   d  may be programmed to perform various functions. For example, in some implementations, the programmable buttons  530   a - 530   d  can be programmed to operate similar to the arrow keys on a QWERTY keyboard. In some embodiments, as shown in  FIG. 5 , the buttons  530   a - 530   d  may be arranged in an inverted T-shape similar to an arrow key arrangement on a keyboard. The functionality of the buttons  530   a - 530   d  may be set by the operating system of the computer, the application in use, or by the user, to name a few examples. 
         [0059]    In comparison to  FIG. 2 , notably missing from the particular embodiment depicted in  FIG. 5  is a scroll wheel  220 , a pair of right-wing buttons  240   a - 240   b,  a pair of right-body buttons  250   a - 250   b,  a pair of left-body buttons  260   a - 260   b,  and a pair of left-wing buttons  270   a - 270   b.  While this particular embodiment does not include these features, it will be appreciated that some or all of these features may be selectively included in a manner similar to that show with respect to the device  140 . As such, a large range of solutions may be provided and designed by selectively including some portion or all of the identified buttons and associated functionality. 
         [0060]    It is to be appreciated that the present input device  540  may be used with the system in lieu of input device  140  and device  540  may perform many of the same functions of device  140  described above with respect to  FIGS. 1-4 . In still other embodiments, a combination of devices  140  and  540  may be used. A suitable input device  140  and/or  540  may be selected for use based on the scenario, game, or computer software that is being implemented on the system. 
         [0061]    Thus, particular embodiments of the subject matter have been described. Other embodiments are with the scope of the following claims.