Abstract:
A method for reducing the erroneous display of multiple keystrokes on a target computer, that occur when depressing a key a single time on a Universal Serial Bus (USB) based keyboard from a remote computer. The invention eliminates the time lapse between the key press and key released events to produce single keystrokes on the target computer, instead of erroneous multiple keystrokes.

Description:
FIELD OF THE INVENTION 
     The present invention relates to a method for reducing multiple keystroke entries that are erroneously displayed on a target device when depressing a key a single time on a Universal Serial Bus (USB) based keyboard that is virtually connected to the target device. 
     INTRODUCTION 
     KVM (keyboard, video, and mouse) systems that provide remote access to so-called target computers are well known. In such systems, one or more so-called KVM switches, are used to selectively connect remote (client) computers to the keyboard, video and mouse ports of target computers. In this manner, a remote computer can access and control operation of a target computer. 
     A connection between a client and a KVM switch may be via direct connection (e.g., CAT-5 cable), or it may be over network such as an Ethernet-based network or a TCP/IP network or the like. 
       FIG. 1   a  shows an exemplary architecture of a system/framework  100 . As illustrated, a client (computer)  102  can connect to a target (computer/server)  104  via a KVM/VM device (appliance)  106  and an optional connection device such as a RIP (Rack Interface Pod)  108 . An exemplary RIP is described in U.S. patent application Ser. No. 09/951,774, filed Sep. 14, 2001, titled “Passive Video Multiplexing Method And Apparatus,” the entire contents of which are incorporated herein by reference. The client  102  connects to the KVM device  106  via a network  110  such as, e.g., a TCP/IP network. 
     Those skilled in the art will realize, upon reading this description, that while only one client and one target are shown in  FIG. 1   a,  a typical framework  100  according to embodiments of the present invention may include a number of clients, targets and appliances, connected in various ways. 
     As is also well known in the art, the Universal Serial Bus (“USB”) protocol has timing requirements and constraints that impose limits on the distance between USB devices and processors connected thereto. Aspects of USB communication transactions are described in U.S. patent application Ser. No. 11/294,563, filed Dec. 6, 2005, titled “Universal Serial Bus (USB) Extension,” the entire contents of which are incorporated herein by reference. 
     Because USB keyboard processing in remote systems is similarly affected by the timing requirements and constraints mentioned above, sometimes problems occur when entries are made using a USB connected keyboard from a remote computer. Sometimes when a single keystroke is entered by the user at a remote computer, multiple keystrokes of the same character are displayed on the target computer. The problem occurs because USB keyboard processing in the target is time-based, and anything that disturbs the expected timing can cause the identified problem. For example, network delays may cause keystroke events sent to the target from the remote computer to not arrive in a timely manner. If they do not, then multiple keystrokes on the target may occur, even though the user intended only a single keystroke to occur. 
     Other attempts at solving the identified multiple keystroke problem have involved changing keyboard settings on the target computer so that the typematic delay time is set to a large value, and the keyboard repeat rate is set to a low value. This solution is only effective when the operating system (OS) is running on the target. When the target computer is in a state where the OS is not running, for example during boot-up, OS install, or BIOS configuration, the typematic settings are not effective, and the multiple keystroke problem can occur on a regular basis. 
     SUMMARY OF THE INVENTION 
     Circuitry may be embedded in a RIP or embedded in a server that eliminates the time lapse between a key pressed event and a key released event by not acting on the key pressed event until the circuitry knows what the next event is. The next event could be either another key press or a key release. If the next event is a key release, then the circuitry first processes the key pressed event and then the key released event. If the next event is a key press, then the circuitry processes the pending key press event and marks the current event as the pending key event. Thus, the key press and key release events are processed in a timely manner that, for single keystrokes, eliminating possible delays that occurred in transmitting the events from the remote console to the KVM solution. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The invention is better understood by reading the following detailed description with reference to the accompanying drawings in which: 
         FIG. 1   a  shows a known environment using a KVM appliance;  FIG. 1   b,  and  1   c  show the architecture of a system/framework according to described embodiments; and 
         FIG. 2  shows a flowchart describing the processing of keystroke events. 
     
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     Referring to  FIG. 1   b,  the target computer  104  connects to the KVM/VM appliance  106 , either directly, or using a RIP  108 . In the case when a RIP  108  is used, the RIP cables are preferably connected to a USB port of the target, and so the RIP and target communicate using the USB protocol, preferably USB 2.0. The target computer  104  may connect directly to the KVM/VM appliance  106 , in which case the target and appliance communicate using the USB protocol via a connection to a USB port of the target. In those cases, where no separate RIP is used, necessary functionality of the RIP may be incorporated into the KVM/VM appliance  106 . Finally, the target computer/server  104  may be any computer, including, without limitation, a server in a server rack or a blade-based server, and it may run any operating system (OS). 
     The invention reduces the multiple keystroke problem by eliminating the time lapse between the keystroke pressed event and the keystroke released event, for single keystrokes. The invention also has the added advantage of being effective regardless of whether the OS on the target is running or not. It also eliminates the need for user intervention in changing the keyboard settings on the target. 
     The invention employs circuitry that may be embedded in the RIP, or embedded in a server  142 , such as a blade-based server, located at the target computer  104 .  FIG. 1   b  is an exemplary depiction of the circuitry  122  being embedded in the RIP  108 .  FIG. 1   c  is an exemplary depiction of the circuitry being embedded in a server  142 , such as a blade-based server, located at the target computer  104 . The invention eliminates the time lapse between the key pressed event and the key released event by not acting on the key pressed event until it knows what the next event is. The next event could be either another key press, or a key release. In order to accomplish this, the circuitry in the KVM solution (either in a RIP or embedded in a server, such as a blade-based server) delays processing of the key pressed event until it receives another event. If the next event is a key release, then the circuitry first processes the key pressed event and then the key released event. If the next event is a key press, then the circuitry processes the pending key press event and marks the current event as the pending key event. In this way the key press and key release events are processed in a timely manner that, for single keystrokes, eliminates possible delays that occurred in transmitting the events from the remote console to the KVM solution. 
       FIG. 2  is one embodiment of the steps described above in a flowchart format. First, the initial state  202  of the circuitry is such that there are no key press events pending. Once the circuitry receives a key event  204  the circuitry determines whether or not a key is pressed  206 . If the answer is no, the circuitry sends the USB driver a Pending Key Press command  208 , and then sends the USB driver a Key Released command  210 . The circuitry then resorts to its initial status  212  and waits for the next received key event. 
     On the other hand, if the circuitry determines that a key is pressed  206 , then the circuitry determines  214  if the key pressed is the initial pressing of a key, or if it is a pending key. If the circuitry determines that there is a pending key press then the circuitry sends the USB driver a Pending Key Press command  216 , (for that prior key press), and then marks the current key press event as a new key press event  218 . Should the circuitry determine  214  that there are no pending key press events, the circuitry marks the current key press event as a new key press event  220 . Thus, by eliminating the time lapse between key pressed and key released events, the present invention processes key strokes in a manner that eliminates delay in the target computer and reduces the erroneous output of multiple key strokes. 
     In an alternate embodiment of the invention, should a user hold down a key for a prolonged period of time, the invention allows the USB protocol to issue commands enabling the processing of the key on a continuous basis until the user releases the key, whereupon a Key Released command is issued. 
     In yet another embodiment, modifier keys (such as the Alt key, Shift key, and Ctrl key, etc.) are unaffected by the present invention and are processed normally. This addresses the need to correctly process mouse clicks with modifier keys (e.g., shift-click or ctrl-click events). 
     While the invention has been described in connection with what is presently considered to be the preferred embodiment, it is to be understood that the invention is not to be limited to the disclosed embodiment, but on the contrary, is intended to cover various modifications and equivalent arrangements included within the spirit and scope of the appended claims.