• Andrei Warkentin's avatar
    KDB: Fix usability issues relating to the 'enter' key. · 8f30d411
    Andrei Warkentin authored
    This fixes the following problems:
    1) Typematic-repeat of 'enter' gives warning message
       and leaks make/break if KDB exits. Repeats
       look something like 0x1c 0x1c .... 0x9c
    2) Use of 'keypad enter' gives warning message and
       leaks the ENTER break/make code out if KDB exits.
       KP ENTER repeats look someting like 0xe0 0x1c
       0xe0 0x1c ... 0xe0 0x9c.
    3) Lag on the order of seconds between "break" and "make" when
       expecting the enter "break" code. Seen under virtualized
       environments such as VMware ESX.
    
    The existing special enter handler tries to glob the enter break code,
    but this fails if the other (KP) enter was used, or if there was a key
    repeat. It also fails if you mashed some keys along with enter, and
    you ended up with a non-enter make or non-enter break code coming
    after the enter make code. So first, we modify the handler to handle
    these cases. But performing these actions on every enter is annoying
    since now you can't hold ENTER down to scroll <more>d messages in
    KDB. Since this special behaviour is only necessary to handle the
    exiting KDB ('g' + ENTER) without leaking scancodes to the OS.  This
    cleanup needs to get executed anytime the kdb_main loop exits.
    
    Tested on QEMU. Set a bp on atkbd.c to verify no scan code was leaked.
    
    Cc: Andrei Warkentin <andreiw@vmware.com>
    [jason.wessel@windriver.com: move cleanup calls to kdb_main.c]
    Signed-off-by: default avatarAndrei Warkentin <andrey.warkentin@gmail.com>
    Signed-off-by: default avatarJason Wessel <jason.wessel@windriver.com>
    8f30d411
kdb_main.c 69.7 KB