# Cypress USB Keyboard/Hub as remote control for MythTV [SOLV]

## mrknowitall

Hi Folks,

recently I purchased a MS-Tech MC-1200 case for my new HTPC. The case comes with a remote control. The remote seems to be some sort of keyboard, since it does not communicate over lirc.

This is the relevant output of lsusb:

```

us 002 Device 003: ID 04b4:0101 Cypress Semiconductor Corp. Keyboard/Hub

Device Descriptor:                                                       

  bLength                18                                              

  bDescriptorType         1                                              

  bcdUSB               1.10                                              

  bDeviceClass            0 (Defined at Interface level)                 

  bDeviceSubClass         0                                              

  bDeviceProtocol         0                                              

  bMaxPacketSize0         8                                              

  idVendor           0x04b4 Cypress Semiconductor Corp.                  

  idProduct          0x0101 Keyboard/Hub                                 

  bcdDevice            0.01                                              

  iManufacturer           1                                              

  iProduct                2 Cypress USB Keyboard / PS2 Mouse             

  iSerial                 0                                              

  bNumConfigurations      1                                              

  Configuration Descriptor:                                              

    bLength                 9                                            

    bDescriptorType         2                                            

    wTotalLength           59                                            

    bNumInterfaces          2                                            

    bConfigurationValue     1                                            

    iConfiguration          4 HID Keyboard / Mouse                       

    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                                          

        HID Device Descriptor:                                           

          bLength                 9                                      

          bDescriptorType        33                                      

          bcdHID               1.00                                      

          bCountryCode            0 Not supported                        

          bNumDescriptors         1                                      

          bDescriptorType        34 Report                               

          wDescriptorLength      63                                      

         Report Descriptors:                                             

           ** UNAVAILABLE **                                             

      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                                        

    Interface Descriptor:                                                

      bLength                 9                                          

      bDescriptorType         4                                          

      bInterfaceNumber        1                                          

      bAlternateSetting       0                                          

      bNumEndpoints           1                                          

      bInterfaceClass         3 Human Interface Device                   

      bInterfaceSubClass      1 Boot Interface Subclass                  

      bInterfaceProtocol      2 Mouse                                    

      iInterface              6 EP2 Interrupt                            

        HID Device Descriptor:                                           

          bLength                 9                                      

          bDescriptorType        33                                      

          bcdHID               1.00                                      

          bCountryCode            0 Not supported                        

          bNumDescriptors         1                                      

          bDescriptorType        34 Report                               

          wDescriptorLength     170                                      

         Report Descriptors:                                             

           ** UNAVAILABLE **                                             

      Endpoint Descriptor:                                               

        bLength                 7                                        

        bDescriptorType         5                                        

        bEndpointAddress     0x82  EP 2 IN                               

        bmAttributes            3                                        

          Transfer Type            Interrupt                             

          Synch Type               None                                  

          Usage Type               Data                                  

        wMaxPacketSize     0x0005  1x 5 bytes                            

        bInterval              10                                        

Device Status:     0x0000                                                

  (Bus Powered)

```

It works out of the box, but only 80%. I still miss the ESC key and so on. I do want to adjust it to my, respectively to mythtv's needs.

Any ideas how I can achieve that. I was thinking of formulating some hal policy... But I don't know where to start. How can I translate the keys pressed on the remote to the action I want?

(There is also a keyboard attached, which works fine and I don't want to mess it up...)

Google didn't help me much. Although I did a rather intense search.

I figured out I might use lirc with inputdevice, but if there is no need for lirc, I don't want to introduce it.

The other disturbing thing is, that the irda-receiver also responds to my hifi-remote. Which leads to going backward in a movie instead of turning down the volume...

So basically the question is. How can I make this remote, which seems to be some sort of keyboard/mouse to do what i want?

Many thanks in advance!

Alex

----------

## mrknowitall

I think I got it...

Since it is a keyboard, I simply have to figure out which button on the remote corresponds to which standard keyboard action. I made good progress with the xev-tool.

On the other hand, no need for rocket science, since you can use MythTV's keyboard configuration. The problem though is, that it also changes the standard behaviour of the regular keyboard. 

One death you have to die...

cheers!

Alex

----------

