Alexander Juling schrieb:
Charles Lepple schrieb:
On Sep 16, 2009, at 4:42 AM, Alexander Juling wrote:

Unfortunately I got stuck now with a major problem. The keyboard is not in a standard keyboard body, so the labeling of the keys differs from a standard one. This won't be a problem unless three of the keys return the same result for the interrupt read function. Is there any way to differ the three key from each other? Unfortunately I cannot figure out, which keys they are originally.

Is it possible that you need to send some additional information to put the keyboard into a different mode?

I don't know much about it, but HID keyboards have a "boot protocol mode" which is supposed to be a simplified version of the HID protocol.

What does 'lsusb -v' say for this keyboard?


I just need to know, which key is pressed and additional would send some information to the keyboard that will enable the caps-lock light or the num-lock light, but that seems to be another topic (even though it would be nice to receive an answer if you know it right now). The important part is, that three of the keys send back the same information back as it seems.

I'm right now not at the office to send the lsusb -v, will do it tomorrow

I haven't done the hid_set_input_report(...) command before doing hid_interrupt read. Could that be the problem? This is what I've done (left out all the initialization and error receiving):

#define EP_HID_IN 0x81
#define PACKET_INT_LEN 10
char answer[PACKET_INT_LEN];
ret = hid_interrupt_read(hid, EP_HID_IN, answer, PACKET_INT_LEN, timeout);
printf("Returned: %d,%d,%d,%d,%d,%d,%d,%d.\n", answer[0], answer[1], answer[2], .... , answer[7]);


Here ist the lsubs -v output.

Bus 001 Device 005: ID 07c0:0138 Code Mercenaries Hard- und Software GmbH
Device Descriptor:
 bLength                18
 bDescriptorType         1
 bcdUSB               1.10
 bDeviceClass            0 (Defined at Interface level)
 bDeviceSubClass         0
 bDeviceProtocol         0
 bMaxPacketSize0         8
 idVendor           0x07c0 Code Mercenaries Hard- und Software GmbH
 idProduct          0x0138
 bcdDevice           10.98
 iManufacturer           1 Code Mercenaries
 iProduct                2 TEKWorx Limited interfaceIT CDU
 iSerial                 0
 bNumConfigurations      1
 Configuration Descriptor:
   bLength                 9
   bDescriptorType         2
   wTotalLength           34
   bNumInterfaces          1
   bConfigurationValue     1
   iConfiguration          4 HID Keyboard
   bmAttributes         0xa0
     (Bus Powered)
     Remote Wakeup
   MaxPower              100mA
   Interface Descriptor:
     bLength                 9
     bDescriptorType         4
     bInterfaceNumber        0
     bAlternateSetting       0
     bNumEndpoints           1
     bInterfaceClass         3 Human Interface Device
     bInterfaceSubClass      1 Boot Interface Subclass
     bInterfaceProtocol      1 Keyboard
     iInterface              5 EP1 Int
       HID Device Descriptor:
         bLength                 9
         bDescriptorType        33
         bcdHID               1.10
         bCountryCode            0 Not supported
         bNumDescriptors         1
         bDescriptorType        34 Report
         wDescriptorLength      80
         Report Descriptor: (length is 80)
           Item(Global): Usage Page, data= [ 0x01 ] 1
                           Generic Desktop Controls
           Item(Local ): Usage, data= [ 0x06 ] 6
                           Keyboard
           Item(Main  ): Collection, data= [ 0x01 ] 1
                           Application
           Item(Global): Usage Page, data= [ 0x07 ] 7
                           Keyboard
           Item(Local ): Usage Minimum, data= [ 0xe0 ] 224
                           Control Left
           Item(Local ): Usage Maximum, data= [ 0xe7 ] 231
                           GUI Right
           Item(Global): Logical Minimum, data= [ 0x00 ] 0
           Item(Global): Logical Maximum, data= [ 0x01 ] 1
           Item(Global): Report Size, data= [ 0x01 ] 1
           Item(Global): Report Count, data= [ 0x08 ] 8
           Item(Main  ): Input, data= [ 0x02 ] 2
                           Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
           Item(Global): Report Size, data= [ 0x08 ] 8
           Item(Global): Report Count, data= [ 0x01 ] 1
          Item(Main  ): Input, data= [ 0x01 ] 1
                           Constant Array Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
           Item(Global): Report Count, data= [ 0x05 ] 5
           Item(Global): Report Size, data= [ 0x01 ] 1
           Item(Global): Usage Page, data= [ 0x08 ] 8
                           LEDs
           Item(Local ): Usage Minimum, data= [ 0x01 ] 1
                           NumLock
           Item(Local ): Usage Maximum, data= [ 0x05 ] 5
                           Kana
           Item(Main  ): Output, data= [ 0x02 ] 2
                           Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
           Item(Global): Report Count, data= [ 0x01 ] 1
           Item(Global): Report Size, data= [ 0x03 ] 3
           Item(Main  ): Output, data= [ 0x01 ] 1
                           Constant Array Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
           Item(Global): Report Count, data= [ 0x06 ] 6
           Item(Global): Report Size, data= [ 0x08 ] 8
           Item(Global): Logical Minimum, data= [ 0x00 ] 0
           Item(Global): Logical Maximum, data= [ 0xa4 0x00 ] 164
           Item(Global): Usage Page, data= [ 0x07 ] 7
                           Keyboard
           Item(Local ): Usage Minimum, data= [ 0x00 ] 0
                           No Event
           Item(Local ): Usage Maximum, data= [ 0xa4 ] 164
                           ExSel
           Item(Main  ): Input, data= [ 0x00 ] 0
                           Data Array Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
           Item(Global): Usage Page, data= [ 0x07 ] 7
                           Keyboard
           Item(Local ): Usage Minimum, data= [ 0x00 ] 0
                           No Event
           Item(Local ): Usage Maximum, data= [ 0xff ] 255
                           (null)
           Item(Global): Logical Minimum, data= [ 0x00 ] 0
           Item(Global): Logical Maximum, data= [ 0x7f ] 127
           Item(Global): Report Count, data= [ 0x06 ] 6
           Item(Global): Report Size, data= [ 0x08 ] 8
           Item(Main  ): Feature, data= [ 0x00 ] 0
                           Data Array Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
           Item(Main  ): End Collection, data=none
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x81  EP 1 IN
       bmAttributes            3
         Transfer Type            Interrupt
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0008  1x 8 bytes
       bInterval              10
Device Status:     0x0002
 (Bus Powered)
 Remote Wakeup Enabled


_______________________________________________
libhid-discuss mailing list
[email protected]
http://lists.alioth.debian.org/mailman/listinfo/libhid-discuss
http://libhid.alioth.debian.org/




_______________________________________________
libhid-discuss mailing list
[email protected]
http://lists.alioth.debian.org/mailman/listinfo/libhid-discuss
http://libhid.alioth.debian.org/

Reply via email to