Bug 7734 - Microsoft Natural Ergonomic Keyboard 4000 has unsupported keys
Summary: Microsoft Natural Ergonomic Keyboard 4000 has unsupported keys
Status: CLOSED CODE_FIX
Alias: None
Product: Drivers
Classification: Unclassified
Component: Input Devices (show other bugs)
Hardware: i386 Linux
: P2 normal
Assignee: Jiri Kosina
URL:
Keywords:
: 8119 (view as bug list)
Depends on:
Blocks:
 
Reported: 2006-12-22 07:39 UTC by Matthew Schultz
Modified: 2008-03-06 07:39 UTC (History)
2 users (show)

See Also:
Kernel Version: 2.6.24.2
Subsystem:
Regression: ---
Bisected commit-id:


Attachments
Debug output of spell, zoom+ and zoom- on 2.6.25-rc2 (3.02 KB, text/plain)
2008-02-20 07:21 UTC, Matthew Schultz
Details
evtest output of ergo 4000 (46.39 KB, text/plain)
2008-02-20 14:46 UTC, Matthew Schultz
Details
evtest for dead keys in xev (7.50 KB, text/plain)
2008-02-20 14:57 UTC, Matthew Schultz
Details

Description Matthew Schultz 2006-12-22 07:39:35 UTC
Distribution: Gentoo
Hardware Environment: AMD64
Software Environment: AMD64
Problem Description:  Is there any chance the kernel can support the Microsoft
Ergonomic Keyboard 4000?  There are buttons on the keyboard that xev doesn't
recognize and in this case requires a kernel patch.  The details are documented
here: 

http://gentoo-wiki.com/HOWTO_Microsoft_Natural_Ergonomic_Keyboard_4000#Device_Interface

Steps to reproduce: 

1. Press a key on the keyboard that the kernel doesn't recognize like the zoom
up or zoom down button.
2. Keycode is not output.
Comment 1 Dmitry Torokhov 2007-04-30 09:22:14 UTC
*** Bug 8119 has been marked as a duplicate of this bug. ***
Comment 2 Dmitry Torokhov 2007-04-30 09:23:11 UTC
Li Yu is reworkging his patches to support HID bus abstraction...
Comment 3 Nicolas Mailhot 2007-05-11 10:06:03 UTC
Li Yu's latest post is there
http://marc.info/?l=linux-usb-devel&m=117679024529591 but it seems no one is
reviewing it :(
Comment 4 Nicolas Mailhot 2007-06-05 11:45:37 UTC
Is it still being worked on?
Comment 5 Nicolas Mailhot 2007-06-10 14:09:13 UTC
with 2.6.22-rc3.cfs15 and xorg told to use the evdev drivers many keys work with
xev, but some don't and others share the same keycode (parenleft and parenright
are both 248)

so there's still a lot of problems kernel-side

I'd have actually submitted a patch to xkeyboard-config supporting this device
otherwise :(
Comment 6 Matthew Schultz 2008-02-15 07:48:48 UTC
Looks like support has improved as of 2.6.24.2.  Most keys are now supported except for the zoom up and down key and spell key (according to xev output).  The spell key (also F10) is accessible if the function lock key is off.  Is anyone working on support for these keys?
Comment 7 Nicolas Mailhot 2008-02-15 09:30:16 UTC
I think ergo 4000 and 6000 support was merged early in the 2.6.25 cycle. Please test. Evdev is unfortunately broken in Fedora-devel right now, so I can't :(
Comment 8 Jiri Kosina 2008-02-18 13:23:04 UTC
Please verify with the latest kernel, I should have added support for all keys on 4000 and 6000 already.

If latest kernel doesn't work, please send me HID debugging output of pressing the non-working keys (compile the kernel with CONFIG_HID_DEBUG and modprobe hid module with 'debug=1' parameter).
Comment 9 Matthew Schultz 2008-02-20 07:21:28 UTC
Created attachment 14915 [details]
Debug output of spell, zoom+ and zoom- on 2.6.25-rc2

Here's the debug output for the last three non-functioning keys for the Ergonomic  Keyboard 4000.
Comment 10 Jiri Kosina 2008-02-20 14:18:23 UTC
Could you please show output of evtest for these keys? The appropriate code is in kernel already (these keys even don't violate the HUT, so they don't require any special handling).
Comment 11 Matthew Schultz 2008-02-20 14:37:41 UTC
I'm not familiar with the evtest program.  Where can I get it and what do I need to type to show the output you need?

I typed showkey -k and I do get keycode outputs for zoom+ (418), zoom- (419) and spell (432) but as I said, they don't show up in xev.
Comment 12 Matthew Schultz 2008-02-20 14:42:20 UTC
I found evtest:


./evtest /dev/input/event3
Input driver version is 1.0.0
Input device ID: bus 0x11 vendor 0x1 product 0x1 version 0xab41
Input device name: "AT Translated Set 2 keyboard"
Supported events:
  Event type 0 (Sync)
  Event type 1 (Key)
    Event code 1 (Esc)
    Event code 2 (1)
    Event code 3 (2)
    Event code 4 (3)
    Event code 5 (4)
    Event code 6 (5)
    Event code 7 (6)
    Event code 8 (7)
    Event code 9 (8)
    Event code 10 (9)
    Event code 11 (0)
    Event code 12 (Minus)
    Event code 13 (Equal)
    Event code 14 (Backspace)
    Event code 15 (Tab)
    Event code 16 (Q)
    Event code 17 (W)
    Event code 18 (E)
    Event code 19 (R)
    Event code 20 (T)
    Event code 21 (Y)
    Event code 22 (U)
    Event code 23 (I)
    Event code 24 (O)
    Event code 25 (P)
    Event code 26 (LeftBrace)
    Event code 27 (RightBrace)
    Event code 28 (Enter)
    Event code 29 (LeftControl)
    Event code 30 (A)
    Event code 31 (S)
    Event code 32 (D)
    Event code 33 (F)
    Event code 34 (G)
    Event code 35 (H)
    Event code 36 (J)
    Event code 37 (K)
    Event code 38 (L)
    Event code 39 (Semicolon)
    Event code 40 (Apostrophe)
    Event code 41 (Grave)
    Event code 42 (LeftShift)
    Event code 43 (BackSlash)
    Event code 44 (Z)
    Event code 45 (X)
    Event code 46 (C)
    Event code 47 (V)
    Event code 48 (B)
    Event code 49 (N)
    Event code 50 (M)
    Event code 51 (Comma)
    Event code 52 (Dot)
    Event code 53 (Slash)
    Event code 54 (RightShift)
    Event code 55 (KPAsterisk)
    Event code 56 (LeftAlt)
    Event code 57 (Space)
    Event code 58 (CapsLock)
    Event code 59 (F1)
    Event code 60 (F2)
    Event code 61 (F3)
    Event code 62 (F4)
    Event code 63 (F5)
    Event code 64 (F6)
    Event code 65 (F7)
    Event code 66 (F8)
    Event code 67 (F9)
    Event code 68 (F10)
    Event code 69 (NumLock)
    Event code 70 (ScrollLock)
    Event code 71 (KP7)
    Event code 72 (KP8)
    Event code 73 (KP9)
    Event code 74 (KPMinus)
    Event code 75 (KP4)
    Event code 76 (KP5)
    Event code 77 (KP6)
    Event code 78 (KPPlus)
    Event code 79 (KP1)
    Event code 80 (KP2)
    Event code 81 (KP3)
    Event code 82 (KP0)
    Event code 83 (KPDot)
    Event code 85 (Zenkaku/Hankaku)
    Event code 86 (102nd)
    Event code 87 (F11)
    Event code 88 (F12)
    Event code 89 (RO)
    Event code 90 (Katakana)
    Event code 91 (HIRAGANA)
    Event code 92 (Henkan)
    Event code 93 (Katakana/Hiragana)
    Event code 94 (Muhenkan)
    Event code 95 (KPJpComma)
    Event code 96 (KPEnter)
    Event code 97 (RightCtrl)
    Event code 98 (KPSlash)
    Event code 99 (SysRq)
    Event code 100 (RightAlt)
    Event code 102 (Home)
    Event code 103 (Up)
    Event code 104 (PageUp)
    Event code 105 (Left)
    Event code 106 (Right)
    Event code 107 (End)
    Event code 108 (Down)
    Event code 109 (PageDown)
    Event code 110 (Insert)
    Event code 111 (Delete)
    Event code 112 (Macro)
    Event code 113 (Mute)
    Event code 114 (VolumeDown)
    Event code 115 (VolumeUp)
    Event code 116 (Power)
    Event code 117 (KPEqual)
    Event code 118 (KPPlusMinus)
    Event code 119 (Pause)
    Event code 121 (KPComma)
    Event code 122 (Hanguel)
    Event code 123 (Hanja)
    Event code 124 (Yen)
    Event code 125 (LeftMeta)
    Event code 126 (RightMeta)
    Event code 127 (Compose)
    Event code 128 (Stop)
    Event code 140 (Calc)
    Event code 142 (Sleep)
    Event code 143 (WakeUp)
    Event code 155 (Mail)
    Event code 156 (Bookmarks)
    Event code 157 (Computer)
    Event code 158 (Back)
    Event code 159 (Forward)
    Event code 163 (NextSong)
    Event code 164 (PlayPause)
    Event code 165 (PreviousSong)
    Event code 166 (StopCD)
    Event code 172 (HomePage)
    Event code 173 (Refresh)
    Event code 183 (F13)
    Event code 184 (F14)
    Event code 185 (F15)
    Event code 217 (Search)
    Event code 226 (Media)
  Event type 4 (Misc)
    Event code 4 (ScanCode)
  Event type 17 (LED)
    Event code 0 (NumLock)
    Event code 1 (CapsLock)
    Event code 2 (ScrollLock)
  Event type 20 (Repeat)
Testing ... (interrupt to exit)
Comment 13 Matthew Schultz 2008-02-20 14:46:45 UTC
Created attachment 14918 [details]
evtest output of ergo 4000

Disregard the last posting about evtest.  Here's the right keyboard test.
Comment 14 Matthew Schultz 2008-02-20 14:57:50 UTC
Created attachment 14919 [details]
evtest for dead keys in xev

Ok I think I understand this program now.  Here's a test of the zoom+, zoom- and spell key.  It detects the keys with this program.  Why doesn't xev recognize them though?  I'm using xev-1.0.2.
Comment 15 Nicolas Mailhot 2008-03-05 12:27:25 UTC
Ok, since auto-input landed in rawhide I can test again
xorg-x11-server-common-1.4.99.900-0.28.20080304.fc9.x86_64
kernel-2.6.25-0.90.rc3.git5.fc9.x86_64

I confirm everything but zoom+, zoom- and spell key works

That's strange as  zoom+, zoom- was one part of the keyboard that used to work with the xorg and kernel versions of mid 2007
Comment 16 Jiri Kosina 2008-03-05 13:16:56 UTC
(In reply to comment #15)
> Ok, since auto-input landed in rawhide I can test again
> xorg-x11-server-common-1.4.99.900-0.28.20080304.fc9.x86_64
> kernel-2.6.25-0.90.rc3.git5.fc9.x86_64
> 
> I confirm everything but zoom+, zoom- and spell key works
> 
> That's strange as  zoom+, zoom- was one part of the keyboard that used to
> work
> with the xorg and kernel versions of mid 2007

Can you verify with evtest whether the zoom+, zoom- and spell key produce input events? If they do, then it is xorg configuration issue.

Thanks.
Comment 17 Nicolas Mailhot 2008-03-05 13:51:10 UTC

    The keys seem to work in evtest. So my system behaves exactly like Matthew's.

    Input driver version is 1.0.0
    Input device ID: bus 0x3 vendor 0x45e product 0xdb version 0x111
    Input device name: "Microsoft Natural<AE> Ergonomic Keyboard 4000"
    Supported events:
      Event type 0 (Sync)
      Event type 1 (Key)
        Event code 1 (Esc)
        Event code 2 (1)

    ...

    Testing ... (interrupt to exit)
    Event: time 1204752977.963717, type 4 (Misc), code 4 (ScanCode), value c022d
    Event: time 1204752977.963743, type 1 (Key), code 418 (?), value 1
    Event: time 1204752977.963786, -------------- Report Sync ------------
    Event: time 1204752978.131706, type 4 (Misc), code 4 (ScanCode), value c022d
    Event: time 1204752978.131729, type 1 (Key), code 418 (?), value 0
    Event: time 1204752978.131772, -------------- Report Sync ------------
    Event: time 1204752978.827687, type 4 (Misc), code 4 (ScanCode), value c022e
    Event: time 1204752978.827715, type 1 (Key), code 419 (?), value 1
    Event: time 1204752978.827756, -------------- Report Sync ------------
    Event: time 1204752978.979660, type 4 (Misc), code 4 (ScanCode), value c022e
    Event: time 1204752978.979679, type 1 (Key), code 419 (?), value 0

    I don't understand how this can be an xorg configuration issue when xorg input config is reduced to "use evdev" nowadays.

    (also could you please push evtest to a common linux util package like
    util-linux-ng so users to not have to fish it from cvs?)
Comment 18 Nicolas Mailhot 2008-03-06 02:46:06 UTC
Anyway seems the kernel part has indeed been fixed, so someone empowered can close this bug

Follow-up there:
http://bugs.freedesktop.org/show_bug.cgi?id=11227
Comment 19 Nicolas Mailhot 2008-03-06 07:09:59 UTC
actually I'm not so sure it works

When I try to define other symbol levels on xkeyboard-config for kpequal, parenleft and parneright I get very inconsistent behaviour. altgr+parenleft behaves at altgr+parenright should, sometimes a key combo only works after several tries, etc. So the support seems flacky
Comment 20 Jiri Kosina 2008-03-06 07:39:11 UTC
(In reply to comment #19)
> actually I'm not so sure it works
> 
> When I try to define other symbol levels on xkeyboard-config for kpequal,
> parenleft and parneright I get very inconsistent behaviour. altgr+parenleft
> behaves at altgr+parenright should, sometimes a key combo only works after
> several tries, etc. So the support seems flacky

Are you able to see the flaky behavior on evtest output?
Comment 21 Jiri Kosina 2008-03-06 07:39:42 UTC
(In reply to comment #17)
>     (also could you please push evtest to a common linux util package like
>     util-linux-ng so users to not have to fish it from cvs?)

It should be included in input-utils package on any reasonable distro, I'd guess.

Note You need to log in before you can comment on or make changes to this bug.