From owner-freebsd-hackers@FreeBSD.ORG Tue Feb 10 16:03:11 2004 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 8ECC916A4D2 for ; Tue, 10 Feb 2004 16:03:11 -0800 (PST) Received: from web40303.mail.yahoo.com (web40303.mail.yahoo.com [66.218.78.82]) by mx1.FreeBSD.org (Postfix) with SMTP id 5DEA643D2F for ; Tue, 10 Feb 2004 16:03:11 -0800 (PST) (envelope-from m_evmenkin@yahoo.com) Message-ID: <20040211000310.60099.qmail@web40303.mail.yahoo.com> Received: from [66.35.239.94] by web40303.mail.yahoo.com via HTTP; Tue, 10 Feb 2004 16:03:10 PST Date: Tue, 10 Feb 2004 16:03:10 -0800 (PST) From: Maksim Yevmenkin To: hackers@freebsd.org, current@freebsd.org MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="0-1120976778-1076457790=:59133" cc: imp@freebsd.org Subject: [PATCH] libusbhid(3) X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Feb 2004 00:03:11 -0000 --0-1120976778-1076457790=:59133 Content-Type: text/plain; charset=us-ascii Content-Id: Content-Disposition: inline Dear Hackers, does anyone objects to the attached libusbhid(3) patch? unpatched library gives me wrong HID page/usage values when i try to parse HID descriptor from Microsoft Bluetooth keyboard. please see attached patched.txt and unpatched.txt outputs. thanks, max __________________________________ Do you Yahoo!? Yahoo! Finance: Get your refund fast by filing online. http://taxes.yahoo.com/filing.html --0-1120976778-1076457790=:59133 Content-Type: text/plain; name="libusbhid.patch.txt" Content-Description: libusbhid.patch.txt Content-Disposition: inline; filename="libusbhid.patch.txt" Index: parse.c =================================================================== RCS file: /home/ncvs/src/lib/libusbhid/parse.c,v retrieving revision 1.9 diff -u -r1.9 parse.c --- parse.c 28 Jan 2004 00:05:22 -0000 1.9 +++ parse.c 10 Feb 2004 23:51:27 -0000 @@ -213,12 +213,11 @@ dval = 0; break; case 1: - dval = (int8_t)*data++; + dval = *data++; break; case 2: dval = *data++; dval |= *data++ << 8; - dval = (int16_t)dval; break; case 4: dval = *data++; Index: usbhid.h =================================================================== RCS file: /home/ncvs/src/lib/libusbhid/usbhid.h,v retrieving revision 1.9 diff -u -r1.9 usbhid.h --- usbhid.h 9 Apr 2003 01:52:48 -0000 1.9 +++ usbhid.h 10 Feb 2004 23:51:27 -0000 @@ -45,7 +45,7 @@ typedef struct hid_item { /* Global */ - int _usage_page; + unsigned int _usage_page; int logical_minimum; int logical_maximum; int physical_minimum; --0-1120976778-1076457790=:59133 Content-Type: text/plain; name="patched.txt" Content-Description: patched.txt Content-Disposition: inline; filename="patched.txt" Collection page=Generic_Desktop usage=Keyboard Output id=1 size=1 count=1 page=LEDs usage=Num_Lock Variable, logical range 0..1 Output id=1 size=1 count=1 page=LEDs usage=Caps_Lock Variable, logical range 0..1 Output id=1 size=1 count=1 page=LEDs usage=Scroll_Lock Variable, logical range 0..1 Output id=1 size=1 count=1 page=LEDs usage=Generic_Indicator Variable, logical range 0..1 Output id=1 size=1 count=4 page=0x0000 usage=0x0000 Const, logical range 0..1 Input id=1 size=1 count=1 page=Keyboard usage=Keyboard_LeftControl Variable, logical range 0..1 Input id=1 size=1 count=1 page=Keyboard usage=Keyboard_LeftShift Variable, logical range 0..1 Input id=1 size=1 count=1 page=Keyboard usage=Keyboard_LeftAlt Variable, logical range 0..1 Input id=1 size=1 count=1 page=Keyboard usage=Keyboard_Left_GUI Variable, logical range 0..1 Input id=1 size=1 count=1 page=Keyboard usage=Keyboard_RightControl Variable, logical range 0..1 Input id=1 size=1 count=1 page=Keyboard usage=Keyboard_RightShift Variable, logical range 0..1 Input id=1 size=1 count=1 page=Keyboard usage=Keyboard_RightAlt Variable, logical range 0..1 Input id=1 size=1 count=1 page=Keyboard usage=Keyboard_Right_GUI Variable, logical range 0..1 Input id=1 size=8 count=1 page=0x0000 usage=0x0000 Const, logical range 0..1 Input id=1 size=8 count=6 page=Keyboard usage=Reserved_(no_event_indicated), logical range 0..255 End collection Collection page=Consumer usage=Consumer_Control Input id=2 size=1 count=1 page=Consumer usage=Mute Variable, logical range 0..1 Input id=2 size=1 count=1 page=Consumer usage=Stop Variable, logical range 0..1 Input id=2 size=1 count=1 page=Consumer usage=0x00cd Variable, logical range 0..1 Input id=2 size=1 count=1 page=Consumer usage=Volume_Down Variable, logical range 0..1 Input id=2 size=1 count=1 page=Consumer usage=Volume_Up Variable, logical range 0..1 Input id=2 size=1 count=1 page=Consumer usage=Scan_Previous_Track Variable, logical range 0..1 Input id=2 size=1 count=1 page=Consumer usage=Scan_Next_Track Variable, logical range 0..1 Input id=2 size=1 count=1 page=Consumer usage=AL_Consumer_Control_Configuration Variable, logical range 0..1 Input id=2 size=1 count=1 page=Consumer usage=AC_Undo Variable, logical range 0..1 Input id=2 size=1 count=1 page=Consumer usage=0x0279 Variable, logical range 0..1 Input id=2 size=1 count=1 page=Consumer usage=0x01ab Variable, logical range 0..1 Input id=2 size=1 count=1 page=Consumer usage=AC_Print Variable, logical range 0..1 Input id=2 size=1 count=1 page=Consumer usage=AC_Open Variable, logical range 0..1 Input id=2 size=1 count=1 page=Consumer usage=AC_Close Variable, logical range 0..1 Input id=2 size=1 count=1 page=Consumer usage=AC_Save Variable, logical range 0..1 Input id=2 size=1 count=1 page=Consumer usage=AC_New Variable, logical range 0..1 Input id=2 size=1 count=1 page=Consumer usage=AL_Calculator Variable, logical range 0..1 Input id=2 size=1 count=1 page=Consumer usage=AL_Logoff Variable, logical range 0..1 Input id=2 size=1 count=1 page=Consumer usage=Help Variable, logical range 0..1 Input id=2 size=1 count=1 page=Consumer usage=AC_Home Variable, logical range 0..1 Input id=2 size=1 count=1 page=Consumer usage=0x0289 Variable, logical range 0..1 Input id=2 size=1 count=1 page=Consumer usage=0x028b Variable, logical range 0..1 Input id=2 size=1 count=1 page=Consumer usage=0x028c Variable, logical range 0..1 Input id=2 size=1 count=1 page=Consumer usage=AL_Email_Reader Variable, logical range 0..1 Input id=2 size=1 count=1 page=Consumer usage=AL_Network_Chat Variable, logical range 0..1 Input id=2 size=1 count=1 page=Consumer usage=0x01a7 Variable, logical range 0..1 Input id=2 size=1 count=1 page=Consumer usage=0x01b6 Variable, logical range 0..1 Input id=2 size=1 count=1 page=Consumer usage=0x01b7 Variable, logical range 0..1 Input id=2 size=1 count=4 page=0x0000 usage=0x0000 Const, logical range 0..1 Input id=2 size=8 count=1 page=Microsoft usage=0xff02 Variable, logical range 0..255 End collection Collection page=Generic_Desktop usage=System_Control Input id=3 size=1 count=1 page=Generic_Desktop usage=System_Power_Down Variable, logical range 0..1 Input id=3 size=1 count=1 page=Generic_Desktop usage=System_Sleep Variable, logical range 0..1 Input id=3 size=1 count=1 page=Generic_Desktop usage=System_Wake_Up Variable, logical range 0..1 Input id=3 size=1 count=5 page=0x0000 usage=0x0000 Const, logical range 0..1 End collection Collection page=Consumer usage=Consumer_Control Collection page=Generic_Desktop usage=Keyboard Input id=4 size=2 count=1 page=Microsoft usage=0xfe01 Variable, logical range 0..3 Input id=4 size=6 count=1 page=0x0000 usage=0x0000 Const, logical range 0..3 End collection End collection Collection page=Consumer usage=Consumer_Control Collection page=Generic_Desktop usage=Keyboard Input id=5 size=1 count=1 page=Microsoft usage=0xfe03 Variable, logical range 0..1 Input id=5 size=1 count=1 page=Microsoft usage=0xfe04 Variable, logical range 0..1 Input id=5 size=1 count=6 page=0x0000 usage=0x0000 Const, logical range 0..1 End collection End collection Collection page=Consumer usage=Consumer_Control Input id=255 size=2 count=1 page=0x0006 usage=0x0024 Variable, logical range 0..1 Input id=255 size=6 count=1 page=0x0000 usage=0x0000 Const, logical range 0..1 End collection --0-1120976778-1076457790=:59133 Content-Type: text/plain; name="unpatched.txt" Content-Description: unpatched.txt Content-Disposition: inline; filename="unpatched.txt" Collection page=Generic_Desktop usage=Keyboard Output id=1 size=1 count=1 page=LEDs usage=Num_Lock Variable, logical range 0..1 Output id=1 size=1 count=1 page=LEDs usage=Caps_Lock Variable, logical range 0..1 Output id=1 size=1 count=1 page=LEDs usage=Scroll_Lock Variable, logical range 0..1 Output id=1 size=1 count=1 page=LEDs usage=Generic_Indicator Variable, logical range 0..1 Output id=1 size=1 count=4 page=0x0000 usage=0x0000 Const, logical range 0..1 Input id=1 size=1 count=1 page=0xffff usage=0xffe0 Variable, logical range 0..1 Input id=1 size=1 count=1 page=0xffff usage=0xffe1 Variable, logical range 0..1 Input id=1 size=1 count=1 page=0xffff usage=0xffe2 Variable, logical range 0..1 Input id=1 size=1 count=1 page=0xffff usage=0xffe3 Variable, logical range 0..1 Input id=1 size=1 count=1 page=0xffff usage=0xffe4 Variable, logical range 0..1 Input id=1 size=1 count=1 page=0xffff usage=0xffe5 Variable, logical range 0..1 Input id=1 size=1 count=1 page=0xffff usage=0xffe6 Variable, logical range 0..1 Input id=1 size=1 count=1 page=0xffff usage=0xffe7 Variable, logical range 0..1 Input id=1 size=8 count=1 page=0x0000 usage=0x0000 Const, logical range 0..1 Input id=1 size=8 count=6 page=Keyboard usage=Reserved_(no_event_indicated), logical range 0..255 End collection Collection page=Consumer usage=Consumer_Control Input id=2 size=1 count=1 page=0xffff usage=0xffe2 Variable, logical range 0..1 Input id=2 size=1 count=1 page=0xffff usage=0xffb7 Variable, logical range 0..1 Input id=2 size=1 count=1 page=0xffff usage=0xffcd Variable, logical range 0..1 Input id=2 size=1 count=1 page=0xffff usage=0xffea Variable, logical range 0..1 Input id=2 size=1 count=1 page=0xffff usage=0xffe9 Variable, logical range 0..1 Input id=2 size=1 count=1 page=0xffff usage=0xffb6 Variable, logical range 0..1 Input id=2 size=1 count=1 page=0xffff usage=0xffb5 Variable, logical range 0..1 Input id=2 size=1 count=1 page=Consumer usage=AL_Consumer_Control_Configuration Variable, logical range 0..1 Input id=2 size=1 count=1 page=Consumer usage=AC_Undo Variable, logical range 0..1 Input id=2 size=1 count=1 page=Consumer usage=0x0279 Variable, logical range 0..1 Input id=2 size=1 count=1 page=Consumer usage=0x01ab Variable, logical range 0..1 Input id=2 size=1 count=1 page=Consumer usage=AC_Print Variable, logical range 0..1 Input id=2 size=1 count=1 page=Consumer usage=AC_Open Variable, logical range 0..1 Input id=2 size=1 count=1 page=Consumer usage=AC_Close Variable, logical range 0..1 Input id=2 size=1 count=1 page=Consumer usage=AC_Save Variable, logical range 0..1 Input id=2 size=1 count=1 page=Consumer usage=AC_New Variable, logical range 0..1 Input id=2 size=1 count=1 page=Consumer usage=AL_Calculator Variable, logical range 0..1 Input id=2 size=1 count=1 page=Consumer usage=AL_Logoff Variable, logical range 0..1 Input id=2 size=1 count=1 page=0xffff usage=0xff95 Variable, logical range 0..1 Input id=2 size=1 count=1 page=Consumer usage=AC_Home Variable, logical range 0..1 Input id=2 size=1 count=1 page=Consumer usage=0x0289 Variable, logical range 0..1 Input id=2 size=1 count=1 page=Consumer usage=0x028b Variable, logical range 0..1 Input id=2 size=1 count=1 page=Consumer usage=0x028c Variable, logical range 0..1 Input id=2 size=1 count=1 page=Consumer usage=AL_Email_Reader Variable, logical range 0..1 Input id=2 size=1 count=1 page=Consumer usage=AL_Network_Chat Variable, logical range 0..1 Input id=2 size=1 count=1 page=Consumer usage=0x01a7 Variable, logical range 0..1 Input id=2 size=1 count=1 page=Consumer usage=0x01b6 Variable, logical range 0..1 Input id=2 size=1 count=1 page=Consumer usage=0x01b7 Variable, logical range 0..1 Input id=2 size=1 count=4 page=0x0000 usage=0x0000 Const, logical range 0..1 Input id=2 size=8 count=1 page=0xffff usage=0xff02 Variable, logical range 0..255 End collection Collection page=0xffff usage=0xff80 Input id=3 size=1 count=1 page=0xffff usage=0xff81 Variable, logical range 0..1 Input id=3 size=1 count=1 page=0xffff usage=0xff82 Variable, logical range 0..1 Input id=3 size=1 count=1 page=0xffff usage=0xff83 Variable, logical range 0..1 Input id=3 size=1 count=5 page=0x0000 usage=0x0000 Const, logical range 0..1 End collection Collection page=Consumer usage=Consumer_Control Collection page=Generic_Desktop usage=Keyboard Input id=4 size=2 count=1 page=0xffff usage=0xfe01 Variable, logical range 0..3 Input id=4 size=6 count=1 page=0x0000 usage=0x0000 Const, logical range 0..3 End collection End collection Collection page=Consumer usage=Consumer_Control Collection page=Generic_Desktop usage=Keyboard Input id=5 size=1 count=1 page=0xffff usage=0xfe03 Variable, logical range 0..1 Input id=5 size=1 count=1 page=0xffff usage=0xfe04 Variable, logical range 0..1 Input id=5 size=1 count=6 page=0x0000 usage=0x0000 Const, logical range 0..1 End collection End collection Collection page=Consumer usage=Consumer_Control Input id=255 size=2 count=1 page=0x0006 usage=0x0024 Variable, logical range 0..1 Input id=255 size=6 count=1 page=0x0000 usage=0x0000 Const, logical range 0..1 End collection --0-1120976778-1076457790=:59133--