Adaptaciones ] [ Debian para PowerPC ] [ Instalación ] [ Documentación ] [ Desarrollo ]

Aviso de códigos de teclas (keycodes) de PowerPC Linux

Si está corriendo un núcleo construído antes de abril de 2001, y está considerando actualizarse a woody, una actualización del núcleo o un cambio de mapa de teclado (keymap), es esencial que evite cambiar los códigos de teclas de Debian para PowerPC en woody.

Esto es lo que ocurrió: para poner a powerpc en principal y eliminar conflictos presentes y futuros, el paquete console-data para woody se cambió para que presentara los mapas de teclado de linux para la instalación en lugar de mapas de teclado ADB (que se usaban por ser la norma en núcleos powerpc). Debian no soporta oficialmente mapas de teclado ADB.

El núcleo del sistema de instalación se cambió para que siguiera esta pauta, así que los nuevos núcleos de instalación usan códigos de teclas de linux, no ADB. Esto es un cambio permanente: un núcleo compilado sin soporte para códigos de teclas ADB no puede usar mapas de teclado ADB. Los códigos de teclas de linux son una característica de la "Nueva capa de entrada" que se fijó para llegar a ser el estándar de todos los dispositivos de entrada de todas las arquitecturas durante el ciclo de versión post-2.4.

Si le gustaría permanecer con los códigos de teclas ADB, y el núcleo que quiere usar ha sido compilado con CONFIG_MAC_ADBKEYCODES=n, puede recompilarlo con CONFIG_MAC_ADBKEYCODES=y y continuar usando un mapa de teclado ADB.

Los mapas de teclado de mac/apple para códigos de teclas ADB frente a los códigos de teclas de linux son muy diferentes. Por esto debe estar preparado. Si no coordina sus instrucciones de arranque, su núcleo y su mapa de teclado, puede teclear "root" en el prompt de entrada y ver en su lugar "sswj". Una circunstacia desconcertante.

Planificación preliminar

Una situación muy común para que ocurra esto es actualizar de potato a woody. En ese caso, se ha incorporado un diálogo especial si se actualiza console-data. Se comprueba si se actualiza el núcleo que está corriendo y si está corriendo un núcleo ADB, se le avisa sobre la situación y se le pide que haga una elección.

Ya que lo sabe todo sobre esta tarea, le será fácil elegir. Ponga un nuevo mapa de teclado al arrancar, luego tras la actualización completa (antes de reiniciar), modifique su configuración de arranque (quik.conf ó yaboot.conf) para añadir una líneas como la siguiente a la sección de imagen del núcleo que va a arrancar:

append="keyboard_sends_linux_keycodes=1"

Si ya tiene una línea append=, añada los nuevos términos dentro de las comillas como

append="video=ofonly keyboard_sends_linux_keycodes=1"

No olvide lanzar quik o ybin tras completar la edición, para guardar los cambios en la configuración a los archivos del cargador de arranque real.

Otro ejemplo donde puede resurgir este tema es al actualizar X de 4.0.x a 4.1.x con un núcleo con códigos de teclas ADB. Su XF86Config-4 probablemente tenga XkbModel puesto a "macintosh", pero el significado de esto cambió para que un teclado macintosh y se asume que usa los nuevos códigos de teclas de Linux. Si sigue usando códigos de tecla ADB, necesitará cambiar XkbModel a "macintosh_old".

Instalaciones nuevas de woody

Para una nueva instalación de woody, tendrá un mapa de teclado y un núcleo con códigos de teclas linux instalados para usted. Así que si ambos -mapa y núcleo- conciden, no tendrá ningún problema. A no ser que ...

A no ser que cambie el núcleo tras la inslación y lo vuelva un núcleo ADB. Entonces tendrá el mismo problema, pero al revés. A no ser que ...

A no ser que cambie manualmente el mapa de teclado, seleccionándolo de /usr/share/keymaps/mac. Todos estos son mapas de teclado ADB, y no coincidirán con sus códigos de teclas de linux.

No me ocurre ahora, pero ... ¿y si lo hace algún día?

Así que, ¿cómo actuar si teclea root y ve sswj? O en caso inverso, si teclea (tab)ssw y ve root?

La gente de Linux odia dar al interruptor de sus computadoras. Y siempre que lo hace hay algo de corrupción del sistema de ficheros, que se puede o no reparar correctamente. Así que aquí tiene algunas sugerencias para que el sistema se apague correctamente si le ocurre esto.

Si tiene instalado ssh en su sistema y puede conectar desde otro ordenador, puede corregir temporalmente el problema remotamente. Ingrese en la cuenta de root, y ejecute lo siguiente:

cd /proc/sys/dev/mac_hid/
echo 0 > keyboard_lock_keycodes
echo 1 > keyboard_sends_linux_keycodes

Su teclado responderá normalmente hasta que reinicie. Use esta oportunidad para sincronizar su mapa de teclado, núcleo y cargador de arranque.

Si su sistema tiene una compinación de teclas usadas para reiniciar o un comando para apagar, puede intentar usar las tablas de abajo para hacerse una idea de qué combinación puede utilizar. En PowerPC, una tecla combo común es Control-Shift-Suprimir. Con un mapa de teclado ADB cargado, interpretado como códigos de teclas linux, esto sería Control-F6-F12. Con un mapa de códigos de teclas linux cargado, interpretado por un núcleo mapeado a ADB, necesitará Shift-AltGr-Igual. Buena suerte.

Mi teclado no tiene una tecla Suprimir, así que cuando tengo un mapa de códigos de teclas cargado en un núcleo configurado para ADB, y quiero saber cómo entrar como root ( 2==3 seguido por F5 ). Para mi contraseña de root, usé la tabla inferior. Para reiniciar escribí ( 21 tecla-tab==3 seguido por F5 ). También puede usar halt ( p]j3 seguido por F5 ).

Algunos caracteres no se pueden escribir en un mapa de teclado incorrecto. Éstos están vacíos o no se indican en las tablas.

Mapa de teclado de códigos de teclas linux cargado, núcleo configurado para ADB

 

Si quiere:    a b   c d e f g h i j      k l m n     o p q r s t u v w
pulse:        ] TAB m u 1 [ i p 5 Return l j ` Space = 9 y 2 o 3 6 . t

              x y z 0 1 2 3 4 5 6 7 8 9 *   /  [ ] ,         = - ` \ ;
              n 4 / b d f h g z x c v   Alt F7 7 - Backspace w q ; , '

              Control Shift     Enter Tab Backspace Fwd-Del Space
              F6      Ctrl or \ F5, 8 r   e         F12     CapsLock

              Home   NumLock   Clear  AltGr =(numkpd) Escape F11 F12
              Clear  +(numkpd) F6-6   Shift Fwd-Del   s      kp-5 kp-6

              F1         F2          F3         F4       F7   F9
              Left-Arrow Right-Arrow Down-Arrow Up-Arrow kp-. kp-*

              Left-Arrow Right-Arrow Up-Arrow Down-Arrow
              F13                    F11

Núcleo configurado para códigos de teclas linux, mapa de teclado ADB cargado

Si quiere:    a b c d e         f g h i j k l m n o p q r   s   t u v w
pulse:        0 7 1 Backspace 2 4 3 g l ' k c x s h - Tab Esc w d 8 =

              x y z 0       1 2 3 4 5 6 7 8      9 * /  [ ] , = - ` ;
              6 q 5 Control e r t y i u [ Return p   z  f a \ o ] m `

              Control Shift Return Tab Backspace Fwd-Del   \     Space
              Shift   AltGr j      b   ,         =(numkpd) Shift n

              Clear  AltGr    =(numkpd) CapsLock Escape Alt
              Home   CapsLock Fwd-Del   Space    /       kp-*

              F1 F2 F3 F4 F5    F6   F7 F8 F9 F0 F11 F12
                          Enter Ctrl /               Fwd-Del

              Left-Arrow Right-Arrow Up-Arrow Down-Arrow
              F1         F2          F4       F3

Cómo conocer su estado actual

Los mapas de teclado no tienen comentarios, así que si quiere saber qué mapa de teclado está activo, puede mirar a hurtadillas el código de la tecla 1 con la línea

zgrep 'keycode *1 =' /etc/console/boottime.kmap.gz
Si el código de la tecla 1 = Escape, es el mapa de teclas de linux (actualmente i386). Si el código de la tecla 1 = s, entonces es ADB (salvo para ADB dvorak, donde el código de la tecla 1 = o).

Los archivos config-XXXXX en /boot le mostrarán si el núcleo desde el que está arrancando está compilado con código de teclas ADB o no. Para averiguarlo, use

grep MAC_ADB /boot/*

Debería obtener una lista de los archivos de configuración para los núcleos desde los que puede arrancar. Si hay una entrada como

/boot/config-2.4.12-powerpc:CONFIG_MAC_ADBKEYCODES=y

entonces su núcleo está compilado con soporte de códigos ADB. Si la última letra es n, entonces es un núcleo con códigos de teclas linux.

Cómo arreglarlo

Una vez que tiene abajo su sistema erróneo, aún necesita arreglarlo. ¿Cómo puede decir lo que necesita? Puede tener que usar su disco de rescate o arrancar desde otra partición para reparar las cosas.

Si su problema es que un núcleo compilado con ADB intenta usar un mapa de teclado de códigos linux, simplemente añada

keyboard_sends_linux_keycodes=1

en el prompt boot: tras teclear la etiqueta de su imagen del núcleo. Esto sólo es una reparación para un arranque. Sin embargo, necesita que estos cambios sean permanentes. Para ello, edite su archivo de configuración del arranque y guárdelo para que lo reconozca el cargador de arranque.

Si su problema es a la inversa (núcleo con códigos de teclas linux intentando usar un mapa de teclado ADB), necesitará sobreescribir el mapa de teclado ADB. Puede copiar en cualquier mapa de teclado de la carpeta /usr/share/keymaps/i386, donde hay muchos donde elegir. Por ejemplo

cd /usr/share/keymaps/i386/qwerty/
cp mac-usb-us.kmap.gz /etc/console/boottime.kmap.gz