linux-input.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Problem with Genius Ergomedia 700
@ 2008-01-18  9:28 Alex Torkhov
  2008-01-18 11:09 ` Jiri Kosina
  0 siblings, 1 reply; 5+ messages in thread
From: Alex Torkhov @ 2008-01-18  9:28 UTC (permalink / raw)
  To: linux-input

[-- Attachment #1: Type: text/plain, Size: 845 bytes --]

Hello.

I have Genius Ergomedia 700 USB keyboard but not all "multimedia" keys 
are working.
In manual it's written that "My document/My picture/My music/Scrolling 
buttons/Left and right scrolling functions/Zoom in/Zoom 
out/Messenger/Messenger status/Webcam/Audio 1-3/Word/Excel/Powerpoint do 
not function unless driver has been installed". And exactly those keys 
do not working while other multimedia keys are working fine.

What can be done to enable those additional multimedia keys?

When plugging it in it appears as 2 input devices:
input: KYE 4D device Ergomedia as /class/input/input1
input: USB HID v1.10 Keyboard [KYE 4D device Ergomedia] on 
usb-0000:00:1d.1-1
input: KYE 4D device Ergomedia as /class/input/input2
input: USB HID v1.10 Device [KYE 4D device Ergomedia] on usb-0000:00:1d.1-1

lsusb -v output in attachment.

Alex.

[-- Attachment #2: Ergomedia700_lsusb --]
[-- Type: text/plain, Size: 8329 bytes --]


Bus 003 Device 002: ID 05d5:8001 Super Gate Technology Co., Ltd 
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0         8
  idVendor           0x05d5 Super Gate Technology Co., Ltd
  idProduct          0x8001 
  bcdDevice            1.00
  iManufacturer           1 KYE 4D device
  iProduct                2 Ergomedia
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           59
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          2 Ergomedia
    bmAttributes         0xa0
      Remote Wakeup
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Devices
      bInterfaceSubClass      1 Boot Interface Subclass
      bInterfaceProtocol      1 Keyboard
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.10
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      65
          Report Descriptor: (length is 65)
            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 Count, data= [ 0x08 ] 8
            Item(Global): Report Size, data= [ 0x01 ] 1
            Item(Main  ): Input, data= [ 0x02 ] 2
                            Data Variable Absolute No_Wrap Linear
                            Preferred_State No_Null_Position Non_Volatile Bitfield
            Item(Global): Report Count, data= [ 0x08 ] 8
            Item(Global): Report Size, 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): Usage Page, data= [ 0x08 ] 8
                            LEDs
            Item(Local ): Usage Minimum, data= [ 0x01 ] 1
                            NumLock
            Item(Local ): Usage Maximum, data= [ 0x03 ] 3
                            Scroll Lock
            Item(Global): Report Count, data= [ 0x03 ] 3
            Item(Global): Report Size, data= [ 0x01 ] 1
            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= [ 0x05 ] 5
            Item(Main  ): Output, data= [ 0x01 ] 1
                            Constant 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 0x00 ] 255
                            (null)
            Item(Global): Logical Minimum, data= [ 0x00 ] 0
            Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
            Item(Global): Report Count, data= [ 0x06 ] 6
            Item(Global): Report Size, data= [ 0x08 ] 8
            Item(Main  ): Input, 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
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Devices
      bInterfaceSubClass      1 Boot Interface Subclass
      bInterfaceProtocol      2 Mouse
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.10
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      50
          Report Descriptor: (length is 50)
            Item(Global): Usage Page, data= [ 0x0c ] 12
                            Consumer
            Item(Local ): Usage, data= [ 0x01 ] 1
                            Consumer Control
            Item(Main  ): Collection, data= [ 0x01 ] 1
                            Application
            Item(Global): Report ID, data= [ 0x01 ] 1
            Item(Local ): Usage Minimum, data= [ 0x00 ] 0
                            Unassigned
            Item(Local ): Usage Maximum, data= [ 0xf0 0x02 ] 752
                            (null)
            Item(Global): Logical Minimum, data= [ 0x00 ] 0
            Item(Global): Logical Maximum, data= [ 0xf0 0x02 ] 752
            Item(Global): Report Count, data= [ 0x01 ] 1
            Item(Global): Report Size, data= [ 0x10 ] 16
            Item(Main  ): Input, data= [ 0x00 ] 0
                            Data Array Absolute No_Wrap Linear
                            Preferred_State No_Null_Position Non_Volatile Bitfield
            Item(Main  ): End Collection, data=none
            Item(Global): Usage Page, data= [ 0x01 ] 1
                            Generic Desktop Controls
            Item(Local ): Usage, data= [ 0x80 ] 128
                            System Control
            Item(Main  ): Collection, data= [ 0x01 ] 1
                            Application
            Item(Global): Report ID, data= [ 0x02 ] 2
            Item(Local ): Usage Minimum, data= [ 0x81 ] 129
                            System Power Down
            Item(Local ): Usage Maximum, data= [ 0x83 ] 131
                            System Wake Up
            Item(Global): Logical Maximum, data= [ 0x01 ] 1
            Item(Global): Report Size, data= [ 0x01 ] 1
            Item(Global): Report Count, data= [ 0x03 ] 3
            Item(Main  ): Input, data= [ 0x02 ] 2
                            Data Variable Absolute No_Wrap Linear
                            Preferred_State No_Null_Position Non_Volatile Bitfield
            Item(Global): Report Count, data= [ 0x05 ] 5
            Item(Main  ): Input, data= [ 0x01 ] 1
                            Constant 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     0x82  EP 2 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval              10

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Problem with Genius Ergomedia 700
  2008-01-18  9:28 Problem with Genius Ergomedia 700 Alex Torkhov
@ 2008-01-18 11:09 ` Jiri Kosina
  2008-01-18 14:22   ` Alex Torkhov
  0 siblings, 1 reply; 5+ messages in thread
From: Jiri Kosina @ 2008-01-18 11:09 UTC (permalink / raw)
  To: Alex Torkhov; +Cc: linux-input

On Fri, 18 Jan 2008, Alex Torkhov wrote:

> I have Genius Ergomedia 700 USB keyboard but not all "multimedia" keys 
> are working. In manual it's written that "My document/My picture/My 
> music/Scrolling buttons/Left and right scrolling functions/Zoom in/Zoom 
> out/Messenger/Messenger status/Webcam/Audio 1-3/Word/Excel/Powerpoint do 
> not function unless driver has been installed". And exactly those keys 
> do not working while other multimedia keys are working fine.
> What can be done to enable those additional multimedia keys?

Hi Alex,

please compile your kernel with CONFIG_HID_DEBUG, modprobe the hid module 
with 'debug=1' parameter, and send me the dmesg output that appears when 
you connect the keyboard, and also when you press the individual buttons. 
Please annotate the output (i.e. "this happened when I pressed the XYZ 
key").

Thanks,

-- 
Jiri Kosina

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Problem with Genius Ergomedia 700
  2008-01-18 11:09 ` Jiri Kosina
@ 2008-01-18 14:22   ` Alex Torkhov
       [not found]     ` <479203AA.7010607@gmail.com>
  0 siblings, 1 reply; 5+ messages in thread
From: Alex Torkhov @ 2008-01-18 14:22 UTC (permalink / raw)
  To: Jiri Kosina; +Cc: linux-input

[-- Attachment #1: Type: text/plain, Size: 1140 bytes --]

Jiri Kosina wrote:
> On Fri, 18 Jan 2008, Alex Torkhov wrote:
>> I have Genius Ergomedia 700 USB keyboard but not all "multimedia" keys 
>> are working. In manual it's written that "My document/My picture/My 
>> music/Scrolling buttons/Left and right scrolling functions/Zoom in/Zoom 
>> out/Messenger/Messenger status/Webcam/Audio 1-3/Word/Excel/Powerpoint do 
>> not function unless driver has been installed". And exactly those keys 
>> do not working while other multimedia keys are working fine.
>> What can be done to enable those additional multimedia keys?
> 
> please compile your kernel with CONFIG_HID_DEBUG, modprobe the hid module 
> with 'debug=1' parameter, and send me the dmesg output that appears when 
> you connect the keyboard, and also when you press the individual buttons. 
> Please annotate the output (i.e. "this happened when I pressed the XYZ 
> key").

Here is debug output with my comments in attachment. I was gathering it 
with hid.debug=1 kernel param and also with setting 
/sys/module/hid/parameters/debug because my hid module is compiled into 
kernel but it's the same as you suggested, I think.

Alex.

[-- Attachment #2: Ergomedia700_hiddebug.gz --]
[-- Type: application/x-gzip, Size: 8937 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Problem with Genius Ergomedia 700
       [not found]           ` <Pine.LNX.4.64.0802191359390.30955@jikos.suse.cz>
@ 2008-07-21 13:51             ` Alexey Torkhov
  2008-07-22 13:30               ` Jiri Kosina
  0 siblings, 1 reply; 5+ messages in thread
From: Alexey Torkhov @ 2008-07-21 13:51 UTC (permalink / raw)
  To: Jiri Kosina, linux-input

Hi.

Sorry, I forgot about this as I don't have access to that keyboard
anymore. What's the status of this patch? If it's still not applied
then, I think, it will work and could be merged.

Alex.

Jiri Kosina wrote:
> On Wed, 13 Feb 2008, Alexey Torkhov wrote:
> 
>>>   as a key to input.h right now, sorry; if you have any idea for
>>>   alternatives that it would make sense to map them, please let me know
>> It could be mapped to AL Logon/Logoff (19D) - if I remember, it doesn't
>> written what it should logon or logoff - user session or any other thing like
>> IM client.
> 
> Could you please try the patch below and report back whether it makes all 
> the buttons behave correctly? If so, I'd ask Dmitry for ACK with respect 
> to adding new KEY_ definitions.
> 
> diff --git a/drivers/hid/hid-input-quirks.c b/drivers/hid/hid-input-quirks.c
> index a870ba5..1db3a36 100644
> --- a/drivers/hid/hid-input-quirks.c
> +++ b/drivers/hid/hid-input-quirks.c
> @@ -276,6 +276,24 @@ static int quirk_btc_8193(struct hid_usage *usage, struct input_dev *input,
>  	return 1;
>  }
>  
> +static int quirk_genius_ergomedia_700(struct hid_usage *usage, struct input_dev *input,
> +			      unsigned long **bit, int *max)
> +{
> +	if ((usage->hid & HID_USAGE_PAGE) != HID_UP_CONSUMER)
> +		return 0;
> +
> +	switch (usage->hid & HID_USAGE) {
> +		case 0x029d: map_key_clear(KEY_PROG1);		break;
> +		case 0x029e: map_key_clear(KEY_PROG2);		break;
> +		case 0x029f: map_key_clear(KEY_PROG3);		break;
> +		case 0x02a1: map_key_clear(KEY_LOGON_LOGOFF);	break;
> +		case 0x02a2: map_key_clear(KEY_CAMERA);		break;
> +		case 0x02a3: map_key_clear(KEY_DOCUMENTS);	break;
> +		case 0x02a4: map_key_clear(KEY_AUDIO);		break;
> +		case 0x02a5: map_key_clear(KEY_PRESENTATION);	break;
> +
> +}
> +
>  #define VENDOR_ID_BELKIN			0x1020
>  #define DEVICE_ID_BELKIN_WIRELESS_KEYBOARD	0x0006
>  
> @@ -306,6 +324,9 @@ static int quirk_btc_8193(struct hid_usage *usage, struct input_dev *input,
>  #define VENDOR_ID_PETALYNX			0x18b1
>  #define DEVICE_ID_PETALYNX_MAXTER_REMOTE	0x0037
>  
> +#define VENDOR_ID_SUPERGATE			0x05d5
> +#define DEVICE_ID_GENIUS_ERGOMEDIA_700		0x8001
> +
>  static const struct hid_input_blacklist {
>  	__u16 idVendor;
>  	__u16 idProduct;
> @@ -332,7 +353,9 @@ static const struct hid_input_blacklist {
>  	{ VENDOR_ID_MONTEREY, DEVICE_ID_GENIUS_KB29E, quirk_cherry_genius_29e },
>  
>  	{ VENDOR_ID_PETALYNX, DEVICE_ID_PETALYNX_MAXTER_REMOTE, quirk_petalynx_remote },
> -	
> +
> +	{ VENDOR_ID_SUPERGATE, DEVICE_ID_GENIUS_ERGOMEDIA_700, quirk_genius_ergomedia_700 },
> +
>  	{ 0, 0, 0 }
>  };
>  
> diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c
> index 5325d98..ef4e472 100644
> --- a/drivers/hid/hid-input.c
> +++ b/drivers/hid/hid-input.c
> @@ -635,8 +635,11 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel
>  				case 0x192: map_key_clear(KEY_CALC);		break;
>  				case 0x194: map_key_clear(KEY_FILE);		break;
>  				case 0x196: map_key_clear(KEY_WWW);		break;
> +				case 0x19b: map_key_clear(KEY_LOGON);		break;
>  				case 0x19c: map_key_clear(KEY_LOGOFF);		break;
> +				case 0x19d: map_key_clear(KEY_LOGON_LOGOFF);	break;
>  				case 0x19e: map_key_clear(KEY_COFFEE);		break;
> +				case 0x1a2: map_key_clear(KEY_TASKSELECT);	break;
>  				case 0x1a6: map_key_clear(KEY_HELP);		break;
>  				case 0x1a7: map_key_clear(KEY_DOCUMENTS);	break;
>  				case 0x1ab: map_key_clear(KEY_SPELLCHECK);	break;
> diff --git a/include/linux/input.h b/include/linux/input.h
> index 1bdc39a..cc322a5 100644
> --- a/include/linux/input.h
> +++ b/include/linux/input.h
> @@ -536,6 +536,9 @@ struct input_absinfo {
>  #define KEY_FRAMEFORWARD	0x1b5
>  
>  #define KEY_CONTEXT_MENU	0x1b6	/* GenDesc - system context menu */
> +#define KEY_TASKSELECT		0x1b7	/* Consumer - AL select task */
> +#define KEY_LOGON_LOGOFF	0x1b8	/* Consumer - AL Logon/Logoff */
> +#define KEY_LOGON		0x1b9	/* Consumer - AL Logon */
>  
>  #define KEY_DEL_EOL		0x1c0
>  #define KEY_DEL_EOS		0x1c1
> 




^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Problem with Genius Ergomedia 700
  2008-07-21 13:51             ` Alexey Torkhov
@ 2008-07-22 13:30               ` Jiri Kosina
  0 siblings, 0 replies; 5+ messages in thread
From: Jiri Kosina @ 2008-07-22 13:30 UTC (permalink / raw)
  To: Alexey Torkhov; +Cc: linux-input

On Mon, 21 Jul 2008, Alexey Torkhov wrote:

> Sorry, I forgot about this as I don't have access to that keyboard 
> anymore. What's the status of this patch? If it's still not applied 
> then, I think, it will work and could be merged.

Hi Alex,

it is not applied, I always prefer to have the code tested by someone who 
actually owns the hardware, before just "blindly" merging it.

-- 
Jiri Kosina
SUSE Labs

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2008-07-22 13:30 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-01-18  9:28 Problem with Genius Ergomedia 700 Alex Torkhov
2008-01-18 11:09 ` Jiri Kosina
2008-01-18 14:22   ` Alex Torkhov
     [not found]     ` <479203AA.7010607@gmail.com>
     [not found]       ` <Pine.LNX.4.64.0802112232360.7699@twin.jikos.cz>
     [not found]         ` <47B35742.7010305@gmail.com>
     [not found]           ` <Pine.LNX.4.64.0802191359390.30955@jikos.suse.cz>
2008-07-21 13:51             ` Alexey Torkhov
2008-07-22 13:30               ` Jiri Kosina

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).