• AVR Freaks

Helpful ReplyUSB HID - Implement "Consumer Device" to allow Volume Up/Down Control?

Page: 12 > Showing page 1 of 2
Author
NVergunst
Super Member
  • Total Posts : 388
  • Reward points : 0
  • Joined: 2007/02/11 19:58:16
  • Location: 0
  • Status: offline
2011/12/02 17:10:29 (permalink)
0

USB HID - Implement "Consumer Device" to allow Volume Up/Down Control?

I have a project that works perfectly using dummy characters ('a', 'b', and 'c') built upon the Microchip USB Keyboard example.

I now need to expand my project such that I can control "multimedia buttons" such as the volume up/down keys, mute and so forth as you would find on a standard USB keyboard nowadays.

I did find that for HID, it says:
 	0x80	Keyboard Volume Up 	0x81	Keyboard Volume Down 

But those do nothing when I substitute it for other keys like 0x04 ('A'), 0x05 ('B') and so on.

I did a little bit of research, and it appears I need to be a "consumer device" not just a generic keyboard for these buttons to work. I either need a composite HID device that does the normal keys and another that does the multimedia keys, or some sort of special HID-only combination I am unsure of. Top-something?

Can anyone point to a good resource or share any code that involves multimedia buttons? What sort of descriptors do I need? Any other big changes?

Thanks
#1
Pacer
Super Member
  • Total Posts : 1171
  • Reward points : 0
  • Joined: 2004/12/01 09:29:20
  • Status: offline
Re:USB HID - Implement "Consumer Device" to allow Volume Up/Down Control? 2011/12/04 09:17:23 (permalink)
0
Hi,
I tend to collect capture files of all sorts of things when testing our analysers, so I have a HID report descriptor of an Audio Headset here. It may give you a start. I suppose you have to combine it with the stuff you have already. Hope it helps.


Attached Image(s)

#2
NVergunst
Super Member
  • Total Posts : 388
  • Reward points : 0
  • Joined: 2007/02/11 19:58:16
  • Location: 0
  • Status: offline
Re:USB HID - Implement "Consumer Device" to allow Volume Up/Down Control? 2011/12/06 16:57:03 (permalink)
0
Thankyou for that. I will see what info I can gleam from it.

I am surprised nobody has attempted such a feat. :)
#3
NVergunst
Super Member
  • Total Posts : 388
  • Reward points : 0
  • Joined: 2007/02/11 19:58:16
  • Location: 0
  • Status: offline
Re:USB HID - Implement "Consumer Device" to allow Volume Up/Down Control? 2011/12/06 18:33:57 (permalink)
0
Well I can make it enumerate properly, but I get absolutely no response to any command when I try volume commands. I changed the descriptor such that the first bit of the first byte of the hid packet is incremental volume up, and I get no response.
#4
chinzei
Super Member
  • Total Posts : 2250
  • Reward points : 0
  • Joined: 2003/11/07 12:39:02
  • Location: Tokyo, Japan
  • Status: offline
Re:USB HID - Implement "Consumer Device" to allow Volume Up/Down Control? 2011/12/06 20:55:16 (permalink)
0

Your requirement is achieved fairly easily, using multi-TLC (Top-Level Collection).

1. Append a consumer control TLC for volume up/down to the keyboard report descriptor.
You'll find an example of TLC for volume up/down on this MS page
http://msdn.microsoft.com...hardware/gg462991.aspx

2. Add report IDs to both TLCs on the report descriptor.

3. Increase the report descriptor size (HID_RPT01_SIZE) on usb_config.h by the size of  the extra TLC and report IDs.

4. Increase the interrupt IN endpoint wMaxPacketSize by one for the report ID.

5. Modify Keyboard() on Keyboard.c.
- This routine always puts zero-filled packets to the interrupt IN endpoint. It may work, but it isn't the expected behavior of the USB HID spec. Detect the timing of key press or release by scanning the ports periodically. Just when press or release of any key is detected, put a keyboard packet to the interrupt IN endpoint, which lists up the key codes currently pressed. If no key is pressed by the release of the last key, put a zero-filled packet just once.

- For volume up/down, scan the ports and detect the timing of button press. At button press, put a volume packet to the interrupt IN endpoint.

The keyboard and volume report packets are preceded by their own report ID, respectively.


I believe many ones on this forum could give you this solution. But we are busy in these days at the end of year pink Each step of implementation is easy, but the mods grow up into a fair amount to explain fully in details.

You are expected, not just waiting for any reply, but stepping forward to your goal.

Tsuneo
post edited by chinzei - 2011/12/06 21:00:49
#5
samwane
New Member
  • Total Posts : 25
  • Reward points : 0
  • Joined: 2006/10/16 07:15:22
  • Location: 0
  • Status: offline
Re:USB HID - Implement "Consumer Device" to allow Volume Up/Down Control? 2012/04/26 13:34:01 (permalink)
0
Did you manage to implement this into code? I have the same problem, using the HID Keyboard demo I'm trying to send 'volume' controls by modifying this code.
Is my code too simple? I'm trying to send a volume command thus:
         hid_report_in[0] = 0x0C;
         hid_report_in[1] = 0xE9;
         hid_report_in[2] = 0;
         hid_report_in[3] = 0;
         hid_report_in[4] = 0;
         hid_report_in[5] = 0;
         hid_report_in[6] = 0;
         hid_report_in[7] = 0;
            //Send the 8 byte packet over USB to the host.
            lastINTransmission = HIDTxPacket(HID_EP, (BYTE*)hid_report_in, 0x08);

Any help appreciated,
Thanks,
Sam
#6
chinzei
Super Member
  • Total Posts : 2250
  • Reward points : 0
  • Joined: 2003/11/07 12:39:02
  • Location: Tokyo, Japan
  • Status: offline
Re:USB HID - Implement "Consumer Device" to allow Volume Up/Down Control? 2012/04/26 22:06:31 (permalink)
0

Is my code too simple?

Maybe, you interpret this HID usage as key code.
Volume UP : UsagePage (0x0C), Usage (0xE9)

Your misunderstanding is twofold
a) HID keyboard
I gave a brief explanation of HID keyboard implementation, here.
http://www.cygnal.org/ubb/Forum9/HTML/001381.html

b) HID Consumer Device
Volume UP is put by a Consumer Device, which is a separated HID device from keyboard.
To combine Consumer device with keyboard on a single USB chip,
- Two Top-Level Collections (described in above post)
or
- Composite device
is required.

Follow the steps on above post. If you can't imagine how you give code for a step, tell it to us here.

Tsuneo
#7
yts
Super Member
  • Total Posts : 601
  • Reward points : 0
  • Joined: 2005/09/06 17:45:30
  • Status: offline
Re:USB HID - Implement "Consumer Device" to allow Volume Up/Down Control? 2012/05/02 18:29:30 (permalink)
+2 (1)
Multiple Top-Level Collection devise (keyboard + multimedia buttons) for PIC18F4550 working with a 20MHz external clock. The firmware is constructed on the base of “USB Device - HID - Keyboard- C18 - PICDEM FSUSB.mcw (Microchip Solutions v2012-04-03)”.

Pin assignment: #33 for ‘a’-key, #34 for ‘A’-key, #35 for volume down, and #36 for volume up.
When you connect one of these pins to GND, the corresponding action takes place.

1.    Keyboard: Report ID=1:

2.    Multimedia buttons: Report ID=2 :
bit format: 7 reserved, 6 vol down, 5 vol up, 4 mute, 3 play/pause, 2 stop, 1 prev track, 0 next track
For example, 0x40 for volume down and 0x20 for volume up.

Main changes in “USB Device - HID - Keyboard- C18 - PICDEM FSUSB.mcw (Microchip Solutions v2012-04-03)”:

1.    Usb_descripters.c
 a.    DESC_CONFIG_WORD (104) //216th line from the top
 b.    DESC_CONFIG_WORD (9) //223rd line from the top
 c.    DESC_CONFIG_WORD (1) //231st line from the top
 d.    HID REPORT DESCRIPTOR //starting at 257th line from the top

2.    usb_config.h
 a.    #define HID_INT_IN_EP_SIZE      9
 b.    #define HID_RPT01_SIZE          104

3.   MultiKey.c (original name was Keyboard.c)
 See the codes in it (indicated by "//YTS").

post edited by yts - 2012/05/03 16:29:17
#8
samwane
New Member
  • Total Posts : 25
  • Reward points : 0
  • Joined: 2006/10/16 07:15:22
  • Location: 0
  • Status: offline
Re:USB HID - Implement "Consumer Device" to allow Volume Up/Down Control? 2012/11/11 15:36:31 (permalink)
0
yts, you rock!! I try to follow the theory, but you can't beat a good bit of example code that fully works. Now I can really move on with the project.
THANK YOU SO MUCH!!!!!!!!!
#9
pflieger
New Member
  • Total Posts : 26
  • Reward points : 0
  • Joined: 2012/12/03 22:24:27
  • Location: Fort Wayne, IN
  • Status: offline
Re:USB HID - Implement "Consumer Device" to allow Volume Up/Down Control? 2012/12/03 22:33:35 (permalink)
0
I should have looked here first...oh well.
 
I actually got this working last night. Smile
 
I modified keyboard.c to only send three byte reports, sending codes for vol+/-:
void Keyboard(void)
{
    //Check if the IN endpoint is not busy, and if it isn't check if we want to send
    //keystroke data to the host.
    if(!HIDTxHandleBusy(lastINTransmission))
    {
        if(Switch2IsPressed())
        {
            hid_report_in[0] = 0x01;
            hid_report_in[1] = 0xE9;
            hid_report_in[2] = 0x00;
        }
        else if(Switch3IsPressed())
        {
            hid_report_in[0] = 0x01;
            hid_report_in[1] = 0xEA;
            hid_report_in[2] = 0x00;
        }
        else
        {
            hid_report_in[0] = 0;
            hid_report_in[1] = 0;
            hid_report_in[2] = 0;
        }
           //Send the 3 byte packet over USB to the host.
           lastINTransmission = HIDTxPacket(HID_EP, (BYTE*)hid_report_in, 0x03);
    }
    return;       
}//end keyboard()
 
But, the real trick was getting the report descriptor right, so see attached. One stupid thing: the size of the report descriptor was hard coded in the configuration descriptor!
 
Hope this helps the next guy trying to do this.
 
 
#10
DarioG
Allmächtig.
  • Total Posts : 54081
  • Reward points : 0
  • Joined: 2006/02/25 08:58:22
  • Location: Oesterreich
  • Status: offline
Re:USB HID - Implement "Consumer Device" to allow Volume Up/Down Control? 2012/12/04 03:38:11 (permalink)
0
Thanks. Been struggling with a 1 HID keyboard + 1 HID generic device over the latest days... it was ok for XP but not for 7.
After some checks with the (crappy - crashing every other run!) USBCV20 ... now it's ok. Yes, the issues is with hard-coding offsets and counting bytes...

GENOVA :D :D ! GODO
#11
DarioG
Allmächtig.
  • Total Posts : 54081
  • Reward points : 0
  • Joined: 2006/02/25 08:58:22
  • Location: Oesterreich
  • Status: offline
Re:USB HID - Implement "Consumer Device" to allow Volume Up/Down Control? 2012/12/04 04:09:12 (permalink)
0
in here previous and new descriptors...
http://www.microchip.com/...spx?m=573792&high=

GENOVA :D :D ! GODO
#12
pflieger
New Member
  • Total Posts : 26
  • Reward points : 0
  • Joined: 2012/12/03 22:24:27
  • Location: Fort Wayne, IN
  • Status: offline
Re:USB HID - Implement "Consumer Device" to allow Volume Up/Down Control? 2012/12/05 20:25:09 (permalink)
0
One thing I don't like about this code is that it continually sends reports as fast as it can. This is highly inefficient.
 
I modified Keyboard() to do this:
 

    if(!HIDTxHandleBusy(lastINTransmission))
    {
        switch(getInput())
        {
            case INPUT_NONE:
                // if we don't send this, the vol +/- will continue to roll on and on...
                hid_report_in[0] = 0x00;
                hid_report_in[1] = 0x00;
                hid_report_in[2] = 0x00;
                lastINTransmission = HIDTxPacket(HID_EP, (BYTE*)hid_report_in, 0x03);
                break;
            case INPUT_VOLUME_UP:
                hid_report_in[0] = 0x01;
                hid_report_in[1] = 0xE9;
                hid_report_in[2] = 0x00;
                lastINTransmission = HIDTxPacket(HID_EP, (BYTE*)hid_report_in, 0x03);
                break;
            case INPUT_VOLUME_DOWN:
                hid_report_in[0] = 0x01;
                hid_report_in[1] = 0xEA;
                hid_report_in[2] = 0x00;
                lastINTransmission = HIDTxPacket(HID_EP, (BYTE*)hid_report_in, 0x03);
                break;
            case INPUT_VOLUME_MUTE:
                hid_report_in[0] = 0x01;
                hid_report_in[1] = 0xE2;
                hid_report_in[2] = 0x00;
                lastINTransmission = HIDTxPacket(HID_EP, (BYTE*)hid_report_in, 0x03);
                break;
            default:
                // no need to send anything.
                break;
        }
    }

 
Note that volume up and down are "retriggerable", meaning after the host receives a report listing them as active, it will repeat the action until it receives a report listing them as inactive. I believe MUTE as requires going inactive before another function can activate.
 
This code (and the descriptor I uploaded earlier) is based on the HID Usage Tables - hut1_11.pdf from usb.org.
#13
DarioG
Allmächtig.
  • Total Posts : 54081
  • Reward points : 0
  • Joined: 2006/02/25 08:58:22
  • Location: Oesterreich
  • Status: offline
Re:USB HID - Implement "Consumer Device" to allow Volume Up/Down Control? 2012/12/06 02:05:05 (permalink)
0
You probably know that for "standard" keys you have to send "idle" packets at a host-set rate, with the latest 8bytes packet. Not sure about multimedia now...

GENOVA :D :D ! GODO
#14
samwane
New Member
  • Total Posts : 25
  • Reward points : 0
  • Joined: 2006/10/16 07:15:22
  • Location: 0
  • Status: offline
Re:USB HID - Implement "Consumer Device" to allow Volume Up/Down Control? 2013/01/09 15:41:36 (permalink)
0
Hi again,
I've had great success with getting the vol+- etc working thanks to (yts):
2.    Multimedia buttons: Report ID=2 :
bit format: 7 reserved, 6 vol down, 5 vol up, 4 mute, 3 play/pause, 2 stop, 1 prev track, 0 next track
For example, 0x40 for volume down and 0x20 for volume up.
I'm now trying to get the Calculator and WWW key working. My question is, how does vol +- etc which is HID Scan Code Translation 00E9, 00E8, relate to bit 6 and bit 5?
Calculator is HID Scan Code Translation 0192, but I can't seem to relate this code to the USB HID table that 'yts' has written.
Thanks again


#15
yts
Super Member
  • Total Posts : 601
  • Reward points : 0
  • Joined: 2005/09/06 17:45:30
  • Status: offline
Re:USB HID - Implement "Consumer Device" to allow Volume Up/Down Control? 2013/01/10 17:20:57 (permalink)
0
Please see usb_descriptors.c that is in MultiKey.zip and find the following codes;

    0x05, 0x0C, /*        Usage Page (Consumer Devices)        */
    0x09, 0x01, /*        Usage (Consumer Control)            */
    0xA1, 0x01, /*        Collection (Application)            */
    0x85, 0x02,    /*        Report ID=2                            */
    0x05, 0x0C, /*        Usage Page (Consumer Devices)        */
    0x15, 0x00, /*        Logical Minimum (0)                    */
    0x25, 0x01, /*        Logical Maximum (1)                    */
    0x75, 0x01, /*        Report Size (1)                        */
    0x95, 0x07, /*        Report Count (7)                    */
    0x09, 0xB5, /*        Usage (Scan Next Track)                */ bit 0
    0x09, 0xB6, /*        Usage (Scan Previous Track)            */ bit 1
    0x09, 0xB7, /*        Usage (Stop)                        */ bit 2
    0x09, 0xCD, /*        Usage (Play / Pause)                */ bit 3
    0x09, 0xE2, /*        Usage (Mute)                        */ bit 4
    0x09, 0xE9, /*        Usage (Volume Up)                    */ bit 5 (0xE9)
    0x09, 0xEA, /*        Usage (Volume Down)                    */ bit 6 (0xEA)
    0x81, 0x02, /*        Input (Data, Variable, Absolute)    */
    0x95, 0x01, /*        Report Count (1)                    */ bit 7
    0x81, 0x01, /*        Input (Constant)                    */
    0xC0}        /*        End Collection                        */


In the case that scan code is one byte, begin with 0x09:
0x09, 0xE9, /*        Usage (Volume Down)    */

In the case that scan codes are two bytes, begin with 0x0A:
0x0A, 0x92, 0x01, /*      Usage (Calculator)    */
Here, the byte order is little endian.

Example:

    0x05, 0x0C, /*        Usage Page (Consumer Devices)        */
    0x09, 0x01, /*        Usage (Consumer Control)            */
    0xA1, 0x01, /*        Collection (Application)            */
    0x85, 0x02,    /*        Report ID=2                            */
    0x05, 0x0C, /*        Usage Page (Consumer Devices)        */
    0x15, 0x00, /*        Logical Minimum (0)                    */
    0x25, 0x01, /*        Logical Maximum (1)                    */
    0x75, 0x01, /*        Report Size (1)                        */
    0x95, 0x07, /*        Report Count (7)                    */
    0x09, 0xB5, /*        Usage (Scan Next Track)                */ bit 0
    0x09, 0xB6, /*        Usage (Scan Previous Track)            */ bit 1
    0x09, 0xB7, /*        Usage (Stop)                        */ bit 2
    0x09, 0xCD, /*        Usage (Play / Pause)                */ bit 3
    0x09, 0xE2, /*        Usage (Mute)                        */ bit 4
    0x09, 0xE9, /*        Usage (Volume Up)                    */ bit 5
    0x09, 0xEA, /*        Usage (Volume Down)                    */ bit 6
    0x0A, 0x92, 0x01, /*      Usage (Calculator)               * /bit 7 (0x0192)
    0x81, 0x02, /*        Input (Data, Variable, Absolute)    */
    0xC0}        /*        End Collection                        */


bit 7 corresponds to Calculator.
#16
samwane
New Member
  • Total Posts : 25
  • Reward points : 0
  • Joined: 2006/10/16 07:15:22
  • Location: 0
  • Status: offline
Re:USB HID - Implement "Consumer Device" to allow Volume Up/Down Control? 2013/01/15 16:54:23 (permalink)
0
Hi, thank you yts for the Calculator code, it is useful and I hope to implement it soon.
Just to try to understand how the bits relate to the codes though,
I see 0x09 0xE9 is volume up, but how does this relate to bit 5?
0x09 = 0b00001001, 0xE9=0b11101001
How does 0x09, 0xEA relate to bit 6, when 0xEA = 0b11101010 ?
Or, is it the location after 'Report Count'? In that case, can we only control 8 items (bits 0-7), or can 'Report Count' be 0x95, 0x08 and then use a bit 9?
Thanks again,
Sam
#17
yts
Super Member
  • Total Posts : 601
  • Reward points : 0
  • Joined: 2005/09/06 17:45:30
  • Status: offline
Re:USB HID - Implement "Consumer Device" to allow Volume Up/Down Control? 2013/01/17 17:52:48 (permalink)
0
Hi samwane

I took a mistake in the EXAMPLE (post #16).
0x95, 0x07, /*        Report Count (7)                    */
should be
0x95, 0x08, /*        Report Count (8)                    */

>Or, is it the location after 'Report Count'?
Yes.
For example, you may try to change
    0x09, 0xE9, /*        Usage (Volume Up)                    */ bit 5
    0x09, 0xEA, /*        Usage (Volume Down)                    */ bit 6
to
    0x09, 0xEA, /*        Usage (Volume Down)                    */ bit 5
    0x09, 0xE9, /*        Usage (Volume Up)                    */ bit 6
.
>In that case, can we only control 8 items (bits 0-7)
You can control more than 8 items.

See an attached firmware for PIC18F4550.
Pin assignment: #33 for ‘a’-key, #34 for ‘A’-key, #35 for WWW Home, and #36 for Calculator.
When you connect one of these pins to GND, the corresponding action takes place.

1.    Keyboard: Report ID=1:

2.    Multimedia buttons: Report ID=2 :
First Byte:
bit format: 7 WWW Home, 6 vol down, 5 vol up, 4 mute, 3 play/pause, 2 stop, 1 prev track, 0 next track
Second Byte:
bit format: 7 -2 reserved, 1 Calculator, 0 My Computer

For example, 0x80 0x00 for WWW Home and 0x00 0x02 for Calculator.
post edited by yts - 2013/01/17 18:06:40
#18
samwane
New Member
  • Total Posts : 25
  • Reward points : 0
  • Joined: 2006/10/16 07:15:22
  • Location: 0
  • Status: offline
Re:USB HID - Implement "Consumer Device" to allow Volume Up/Down Control? 2013/01/30 16:27:43 (permalink)
0
Thank you once again yts,
I can now get the calculator to show and can use the extended number of bits (>8)
For clarity, I've shown some examples and placed notes of the two file that need to be altered to show the number of bytes in 'hid_rpt01'. I hope this is of use to others.
 
Example hid values:
//Scan next track
hid_report_in[0]=2;  //Report ID=2
hid_report_in[1]=0b00000001;
hid_report_in[2]=0b00000000;
//Vol up
hid_report_in[0]=2;  //Report ID=2
hid_report_in[1]=0b00100000;
hid_report_in[2]=0b00000000;
//My Computer
hid_report_in[0]=2;  //Report ID=2
hid_report_in[1]=0b00000000;
hid_report_in[2]=0b00000001;
//Calculator
hid_report_in[0]=2;  //Report ID=2
hid_report_in[1]=0b00000000;
hid_report_in[2]=0b00000010;
 
Sample changed code in variable 'hid_rpt01' in file usb_descriptors.c
 0x95, 0x0a, /*  Report Count (16)     */
 0x09, 0xB5, /*  Usage (Scan Next Track)   bit 0 */
 0x09, 0xB6, /*  Usage (Scan Previous Track)  bit 1 */
 0x09, 0xB7, /*  Usage (Stop)     bit 2 */
 0x09, 0xCD, /*  Usage (Play / Pause)   bit 3 */
 0x09, 0xE2, /*  Usage (Mute)     bit 4 */
 0x09, 0xE9, /*  Usage (Volume Up)    bit 5  */
 0x09, 0xEA, /*  Usage (Volume Down)    bit 6 */
    0x0A, 0x23, 0x02, /*      Usage (WWW Home)          bit 7    */
    0x0A, 0x94, 0x01, /*      Usage (My Computer)       bit 0    */
    0x0A, 0x92, 0x01, /*      Usage (Calculator)        bit 1    */
    0x0A, 0x2a, 0x02, /*      Usage (WWW fav)           bit 2    */
    0x0A, 0x21, 0x02, /*      Usage (WWW search)        bit 3    */
    0x0A, 0x26, 0x02, /*      Usage (WWW stop)          bit 4    */
    0x0A, 0x24, 0x02, /*      Usage (WWW back)          bit 5    */
    0x0A, 0x83, 0x01, /*      Usage (Media sel)         bit 6    */
    0x0A, 0x8a, 0x01, /*      Usage (Mail)              bit 7  */
 0x81, 0x02, /*  Input (Data, Variable, Absolute) */
 0x95, 0x06, /*  Report Count (1) (6?)     */
 0x81, 0x01, /*  Input (Constant)     */
 0xC0}  /*  End Collection     131 */
};
//Now the total number of bytes has increased from 104 to 131.
 
Also changed is this definition in the same file:
 DESC_CONFIG_WORD(131),   //sizeof(hid_rpt01), increased from 104 to 131   // Size of the report descriptor
 
And this in file:usb_config.h
#define HID_RPT01_SIZE          131
  
post edited by samwane - 2013/01/30 17:28:51
#19
Ash.S
New Member
  • Total Posts : 2
  • Reward points : 0
  • Joined: 2015/03/26 00:55:21
  • Location: 0
  • Status: offline
Re: USB HID - Implement "Consumer Device" to allow Volume Up/Down Control? 2015/03/26 01:03:44 (permalink)
0
Hi,
I went through all of your post on this topic, thanks for explaining well.
 
Actually I want to use the Consumer control (volume up) through Key press, but Its not working. I am trying it on iOS7.0 version.  I am a newbie related to HID, Please help me to solve this issue. I tried different sets of Report descriptors, but still the same issue.
 
I am following this...
 
0x05, 0x0C, // Usage Pg (Consumer Devices)
0x09, 0xE9, // Usage (Volume Up)
0xA1, 0x01, // (MAIN) COLLECTION
0x85, 0x01, // Report ID (1)
0x19, 0x00, // (LOCAL) USAGE_MINIMUM
0x2A, 0x9C, 0x02, // (LOCAL) USAGE_MAXIMUM
0x15, 0x00, // (GLOBAL) LOGICAL_MINIMUM
0x26, 0x9C, 0x02, // (GLOBAL) LOGICAL_MAXIMUM
0x75, 0x01, // Report Size (1)
0x95, 0x01, // Report Count(1)
0x81, 0x00, // Input (Data, Ary, Abs)
0xC0 , // End Collection
 
Please help.
 
Thanks n Regards,
/Ash
#20
Page: 12 > Showing page 1 of 2
Jump to:
© 2019 APG vNext Commercial Version 4.5