]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
HID: wiimote: fix nunchuck button parser
authorDavid Herrmann <dh.herrmann@gmail.com>
Mon, 18 Feb 2013 00:47:15 +0000 (01:47 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 28 Feb 2013 13:38:40 +0000 (05:38 -0800)
commit 89bdd0c6f38ccf0de43d5a36ede384a730f3394e upstream.

The buttons of the Wii Remote Nunchuck extension are actually active low.
Fix the parser to forward the inverted values. The comment in the function
always said "0 == pressed" but the implementation was wrong from the
beginning.

Reported-by: Victor Quicksilver <victor.quicksilver@gmail.com>
Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/hid/hid-wiimote-ext.c

index 38ae87772e96d18144a5b2e256192fd67b4bde55..0472191d4a7272dff8ea9709aef2e7814dd6be2a 100644 (file)
@@ -403,14 +403,14 @@ static void handler_nunchuck(struct wiimote_ext *ext, const __u8 *payload)
 
        if (ext->motionp) {
                input_report_key(ext->input,
-                       wiiext_keymap[WIIEXT_KEY_Z], !!(payload[5] & 0x04));
+                       wiiext_keymap[WIIEXT_KEY_Z], !(payload[5] & 0x04));
                input_report_key(ext->input,
-                       wiiext_keymap[WIIEXT_KEY_C], !!(payload[5] & 0x08));
+                       wiiext_keymap[WIIEXT_KEY_C], !(payload[5] & 0x08));
        } else {
                input_report_key(ext->input,
-                       wiiext_keymap[WIIEXT_KEY_Z], !!(payload[5] & 0x01));
+                       wiiext_keymap[WIIEXT_KEY_Z], !(payload[5] & 0x01));
                input_report_key(ext->input,
-                       wiiext_keymap[WIIEXT_KEY_C], !!(payload[5] & 0x02));
+                       wiiext_keymap[WIIEXT_KEY_C], !(payload[5] & 0x02));
        }
 
        input_sync(ext->input);