View Single Post
Posts: 18 | Thanked: 38 times | Joined on Jan 2012
#358
Originally Posted by jschan View Post
So using evtest and xinput, I've been able to verify that all the keys are making it to my n900 and confirmed that the default keycode mappings should be valid. However, for some reason, the mappings aren't working. Only the following keys are working:
- all letters
- space
- tab
- backsapce
- enter
- comma
- period
- shift (though not at the same time as i press another key)
- esc
- directional keys
- f keys

Numbers, most special characters, and most special keys (such as capslock, ctrl, alt, etc) aren't working though events are sent in. Any idea what could be wrong? I've tried different mappings, but I can't get any of these other keys to work. Has anyone else experienced similar issues and/or know how to get numeric keys and special keys working?
I have the same problem and I found where it is. Unfortunately it took much time, so the only excuse for me is that now I know a little bit more of Xorg internals.

There's a function IsPointerDevice in Xorg code. If the device has "valuator" and buttons, it is treated as pointer device (= mouse). I don't know exactly what the valuator is, but sure in our case combo keyboard is treated as pointer device. Then if keyboard events are coming from pointer dev, they are processed on behalf of some other keyboard.

So xkb config assigned to a combo keyboard is not used, modifiers are not working, and so on.

I hacked evdev_drv.so to skip pointer device configuration, and the keyboard part started to work properly. Now I'm looking for a way to clone the input device so touchpad and keyboard parts would act separately.

Presence of extra capablities in lshal output may be a sign of the problem, but it's not exact as the evdev_drv detects input capabilities on it's own.
 

The Following 4 Users Say Thank You to kirillkk For This Useful Post: