On Thu, 16 Dec 2004 the mental interface of Mich Lanners told: > On 16 Dec, this message from Michael Schmitz echoed through cyberspace: > >> > We'd need to see the adb devices: line from dmesg as well, that's > >> > showing the default handler IDs IIRC. My keyboard is also detected > >> > with 2 c4, and reported as ISO / swapping keys. That's 2.6.9-rc4 > >> > FWIW. > >> > >> grmmmmlllll... > >> $ dmesg | grep -i adb > >> > >> adb: starting probe task... > >> adb devices: [2]: 2 c3 [3]: 3 1 [7]: 7 1f > >> > >> So what to do now? > > > > Hack the kernel to handle the c3 as ISO as well. Maybe add a kernel > > option to swap keys on top of that. > > > > It would be interesting to figure out what made your keyboard think > > it's ANSI now. Maybe reset the OF parameters, > > I think I remember that my TiBook detected it's keyboard once as ANSI as > well. I think that was after I played around with the PMU hardware (had > the box completely in pieces). > > For an unknown reason, ir worked agan later. Don't know what I did, but > doing a thorough OF reset (cmd-opt-P-R multiple times in a row) should > be a first thing to try.
OF reset didn't help. The attached patch (2.6.20-rc3) did the job, but its unsatisfiedly for me not to know why the hardware blobbed :( Ciao Elimar -- On the keyboard of life you have always to keep a finger at the escape key;-)
--- a/drivers/macintosh/adbhid.c 2004-12-16 19:40:55.492674906 +0100 +++ b/drivers/macintosh/adbhid.c 2004-12-16 19:42:25.805362699 +0100 @@ -245,7 +245,7 @@ /* Kind of keyboard, see Apple technote 1152 */ #define ADB_KEYBOARD_UNKNOWN 0 -#define ADB_KEYBOARD_ANSI 0x0100 +#define ADB_KEYBOARD_ISO 0x0100 #define ADB_KEYBOARD_ISO 0x0200 #define ADB_KEYBOARD_JIS 0x0300 @@ -716,8 +716,11 @@ case 0x01: case 0x02: case 0x03: case 0x06: case 0x08: case 0x0C: case 0x10: case 0x18: case 0x1B: case 0x1C: case 0xC0: case 0xC3: case 0xC6: - printk("ANSI.\n"); - adbhid[id]->input.id.version = ADB_KEYBOARD_ANSI; + printk("ISO, swapping keys, hacked.\n"); + adbhid[id]->input.id.version = ADB_KEYBOARD_ISO; + i = adbhid[id]->keycode[10]; + adbhid[id]->keycode[10] = adbhid[id]->keycode[50]; + adbhid[id]->keycode[50] = i; break; case 0x04: case 0x05: case 0x07: case 0x09: case 0x0D:
signature.asc
Description: Digital signature