• Bart Massey's avatar
    [PATCH] USB HID/HIDBP, INPUT DRIVERS: fix various usb/input/hid-input.c bugs... · a82e49b8
    Bart Massey authored
    [PATCH] USB HID/HIDBP, INPUT DRIVERS: fix various usb/input/hid-input.c bugs that make Apple Mighty Mouse work poorly
    
    Transposed lines of code in drivers/usb/input/hid-input.c causes the
    capability bits for a new HID device to be set before quirks are applied
    at configuration time.  When an HID event is then sent up to the input
    layer, it may then be discarded as irrelevant because the wrong
    capability bit is set.
    
    Further, the quirks for the Apple Mighty Mouse are not quite right: the
    horizontal scrolling needs its axis reversed, and the left and center
    buttons are transposed.  Also, the mouse is labeled in the kernel with
    its earlier name (I think) of Apple PowerMouse.
    
    Steps to reproduce problem: Plug in an Apple Mighty Mouse.  Note that
    horizontal scrolling doesn't work at all, and in fact doesn't generate
    any input events on /dev/input/eventN.  Note also that pushing the
    middle button performs the right button action, and vice versa.  Once
    you have the horizontal scrolling working, note that it is backward WRT
    both to vertical scrolling and to common sense.
    
    This patch maybe should be broken up, as it does address two problems.
    The transposed code in hidinput_configure_usage() probably creates bugs
    beyond just the Mighty Mouse.  The rest of the patch renames POWERMOUSE
    to MIGHTYMOUSE everywhere (which I *believe* is correct), fixes the
    MIGHTYMOUSE quirk to swap the center and right mouse buttons, and adds a
    new quirk HID_QUIRK_INVERT_HWHEEL also assigned to the MIGHTYMOUSE with
    code in hidinput_hid_event() to implement it.
    Signed-off-by: default avatarBart Massey <bart@cs.pdx.edu>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    a82e49b8
hid-core.c 59.9 KB