[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: keyboard confusion



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:

Attachment: signature.asc
Description: Digital signature


Reply to: