From 5cbf59c5eb7491113ed1a43f54c3c7f702db2130 Mon Sep 17 00:00:00 2001 From: lyz Date: Fri, 25 Oct 2013 09:40:22 +0800 Subject: [PATCH] gadget hid: fix moust button bug --- drivers/usb/gadget/f_hid_rk.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/drivers/usb/gadget/f_hid_rk.c b/drivers/usb/gadget/f_hid_rk.c index 1b20c29e8e2d..618e22860405 100755 --- a/drivers/usb/gadget/f_hid_rk.c +++ b/drivers/usb/gadget/f_hid_rk.c @@ -537,7 +537,10 @@ EXPORT_SYMBOL(f_hid_kbd_translate_report); struct mouse_report { u8 id:8; - u8 button:8; + bool button_l:1; + bool button_r:1; + bool button_m:1; + u8 reserved:5; signed x :12; signed y :12; s8 wheel:8; @@ -558,9 +561,16 @@ void f_hid_mouse_translate_report(struct hid_report *report, u8 *data) field = report->field[i]; for(j=0; jreport_count; j++) { - if((field->usage[j].type == EV_KEY) && (field->usage[j].code == BTN_MOUSE)) + if((field->usage[j].type == EV_KEY) && (field->usage[j].code == BTN_LEFT)) if(field->value[j]) - m.button |= 1 << j; + m.button_l = 1; + if((field->usage[j].type == EV_KEY) && (field->usage[j].code == BTN_RIGHT)) + if(field->value[j]) + m.button_r = 1; + if((field->usage[j].type == EV_KEY) && (field->usage[j].code == BTN_MIDDLE)) + if(field->value[j]) + m.button_m = 1; + if((field->usage[j].type == EV_REL) && (field->usage[j].code == REL_X)) m.x = field->value[j]; if((field->usage[j].type == EV_REL) && (field->usage[j].code == REL_Y)) -- 2.34.1