[maemo-developers] Modifier key doesn't produce events in X server - how to modify mapping?
From: Matthew Exon 20173196 at exon.nameDate: Sun Feb 10 21:05:09 EET 2008
- Previous message: regarding help in mission control
- Next message: regarding telepathy-inspector on maemo
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Hi, I'm only trying to do one simple thing here: I have a ThinkOutside Stowaway bluetooth keyboard (German layout), and I'd like to use it with my N810. But I'm having real trouble. My problem is that there is one key that never generates events in the X server (as far as I can see in xev). This is a green "Function" key which provides access to most of the interesting symbols. As an easier warmup problem, I managed to get the keyboard working on my normal desktop machine running Debian Etch. I made an xkb file to describe all the bindings, including making my green function key an "alt-greek" key. This works fine. If I look in xev, I can see something like this when I press it: KeyPress event, serial 25, synthetic NO, window 0x1e00001, root 0x4c, subw 0x0, time 75918074, (3,25), root:(81,129), state 0x0, keycode 207 (keysym 0xfe03, ISO_Level3_Shift), same_screen YES, XKeysymToKeycode returns keycode: 113 XLookupString gives 0 bytes: XmbLookupString gives 0 bytes: XFilterEvent returns: False Before I made my new bindings, it looked like this on the desktop: KeyPress event, serial 28, synthetic NO, window 0x3c00001, root 0x4c, subw 0x0, time 4200899662, (111,93), root:(189,197), state 0x10, keycode 207 (keysym 0x0, NoSymbol), same_screen YES, XLookupString gives 0 bytes: XmbLookupString gives 0 bytes: XFilterEvent returns: False But on the N810, with or without my bindings, I get nothing at all when I press this key (the others are all fine). It's the number "207" that interests me here. Using hcidump on the desktop, I can see the hex scancode 0x73 being sent over the bluetooth interface. From watching other characters, I know that these are USB HID scancodes. Something, somewhere, is translating 0x73 to 207 on my desktop machine and turning it into an X event. I'm pretty sure it's nothing to do with xkb, because the event turns up in xev regardless of whether the active xkb mapping knows anything about it. So my question is, what is that thing? It must be broken on the N810. I got pretty excited when I found evdev_key.c, and saw a big hard-coded table that had a "NoSymbol" in the 0x73 position where my modifier key should be. But then I found a whole bunch of different C files with similar hard-coded tables, and came to the conclusion that these were all doing the same job as xkb, and xkb was probably overriding them. After all, when I had no mapping for that key, I got "NoSymbol" in my xev output, which is the worst those tables can do. On the N810, I don't even get that. So the problem must lie before it gets to those tables. I do notice that the N810 uses the evdev keycodes file, whereas the desktop appears to use xfree86. There's no 207 in the evdev file. And while I do have an evdev package installed on the desktop, the keyboard appears to use the "kbd" driver rather than the "evdev" driver, so it fits if evdev doesn't know about the key where kbd does. So I tried simply adding it to the evdev keycodes file. But that didn't work, presumably because the file reflects some table compiled into the server elsewhere. I looked through files that seemed to have something to do with evdev or key or kbd, but nothing seemed to translate an 0x73 to a 207 (although plenty translated 0x73 to NoSymbol). I'm now very confused, so I'd be grateful if anyone could put me straight! Thanks, Mat
- Previous message: regarding help in mission control
- Next message: regarding telepathy-inspector on maemo
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]