Thread (94 messages) 94 messages, 6 authors, 2011-02-02

Re: 2.6.36/2.6.37: broken compatibility with userspace input-utils ?

From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date: 2011-01-25 05:31:27
Also in: linux-media, lkml

On Tue, Jan 25, 2011 at 12:07:29AM -0500, Mark Lord wrote:
On 11-01-25 12:04 AM, Mark Lord wrote:
quoted
On 11-01-24 11:55 PM, Dmitry Torokhov wrote:
quoted
On Mon, Jan 24, 2011 at 11:37:06PM -0500, Mark Lord wrote:
..
quoted
quoted
This results in (map->size==10) for 2.6.36+ (wrong),
and a much larger map->size for 2.6.35 and earlier.

So perhaps EVIOCGKEYCODE has changed?
So the utility expects that all devices have flat scancode space and
driver might have changed so it does not recognize scancode 10 as valid
scancode anymore.

The options are:

1. Convert to EVIOCGKEYCODE2
2. Ignore errors from EVIOCGKEYCODE and go through all 65536 iterations.
or 3. Revert/fix the in-kernel regression.

The EVIOCGKEYCODE ioctl is supposed to return KEY_RESERVED for unmapped
(but value) keycodes, and only return -EINVAL when the keycode itself
is out of range.

That's how it worked in all kernels prior to 2.6.36,
and now it is broken.  It now returns -EINVAL for any unmapped keycode,
even though keycodes higher than that still have mappings.

This is a bug, a regression, and breaks userspace.
I haven't identified *where* in the kernel the breakage happened,
though.. that code confuses me.  :)
Note that this device DOES have "flat scancode space",
and the kernel is now incorrectly signalling an error (-EINVAL)
in response to a perfectly valid query of a VALID (and mappable)
keycode on the remote control

The code really is a valid button, it just doesn't have a default mapping
set by the kernel (I can set a mapping for that code from userspace and it works).
OK, in this case let's ping Mauro - I think he done the adjustments to
IR keymap hanlding.

Thanks.

-- 
Dmitry
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help