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

Bug#239035: mac/ADB keymaps inappropriate for powerpc



On Tue, Mar 23, 2004 at 10:07:17AM +0000, Alastair McKinstry wrote:
> Looking at your patch, you removed mac_kbd.c from powerpc.
> I'd prefer to do the following: check in mac-kbd.c:
> 
>      fd = open("/proc/sys/dev/mac_hid/keyboard_sends_linux_keycodes", O_RDONLY);
> 
>         if ((fd < 0) || (read(fd,&c, 1) != 1)) {
>                 di_info ("Failed to open /proc/sys/dev/mac_hid/keyboard_sends_linux_keycodes;
> Assuming not adb");
>                 k->present = FALSE;
>                 return keyboards;
>         }
>         close(fd);
>         if (c != '0') {
>                 di_info ("Sending linux keycodes ; not using ADB keymaps\n");
> 
>                 k->present = FALSE;
>                 return keyboards;
>         }
>                                                                            
>                                            
> 
> 
> This allows kbd-chooser to be used on a running system 
> as well as in d-i. Can you please verify this would work
> as planned on powerpc?

This approach *looks* correct to me, but I don't have a kernel with ADB
keycodes enabled, so I don't actually have a
keyboard_sends_linux_keycodes file in /proc.

However, it will clearly work in the powerpc d-i environment (er, famous
last words ...) because those kernels don't have ADB keycode support
either so kbd-chooser will take the first branch above.

> On review, it was a mistake to couple "architecture"
> (AT / USB / etc.) to keymap choice in d-i.

Yeah, I was thinking the same thing myself ...

> However fixing that  now in sarge would be too much breakage, so I am
> including your patch; and doing the following:
> 
> - Read the USB vendor code from /proc/bus/usb/devices ; 
> if the keyboard vendor != Apple, don't use the "USB" (Mac USB)
> keymaps. 
> - If in kbd-chooser.c we find no keyboards, and we're not using a
> serial console, use AT keymaps.

Sounds reasonable to me.

> Any comments ? Do you know of a way to detect ADB keyboards
> on 2.4 / 2.6 kernels?

  $ grep 'Name="ADB keyboard"' /proc/bus/input/devices
  N: Name="ADB keyboard"

That's one way on 2.6; I can't check 2.4 at the moment, though.

-- 
Colin Watson                                  [cjwatson@flatline.org.uk]



Reply to: