¿Cómo definir una clave de redacción en la terminal (sin entorno de escritorio)?

17

Me gustaría definir una composeclave en mi sistema (Debian Sid "Wheezy"). No tengo Xorg (y no quiero ningún entorno de escritorio). Solo en terminal.

Me gustaría configurarlo en mi Alt-Grtecla (derecha Alt). Lo he intentado durante un tiempo, pero no puedo entender cómo configurarlo.

He estado investigando y encontré algunas instrucciones:

  • $ showkeyme da el código Alt-Grclave de mi clave (# 100)

  • $ dumpkeysy $ dumpkeys --compose-onlygenerar "el contenido actual del controlador del teclado", en el formato especificado por keymaps, de acuerdo con la manpágina

  • $ loadkeys cargar una tabla de traducción de teclado

Estoy seguro de que no es tan difícil, pero extraño cómo lidiar con eso ...

cedbeu
fuente
Hm, no estoy siguiendo al 100%, ¿qué te gustaría que hiciera el Alt-Gr cuando lo golpeas?
Emanuel Berg
Me gustaría que fuera la clave de redacción . En realidad, solo me gustaría definir una clave de composición en alguna parte, y como estoy acostumbrado a tenerla en mi Alt-Gr, me gustaría definirla allí. Es muy fácil configurarlo con una GUI , pero debería poder definirlo en modo de consola pura ya que no tengo instalado un sistema X (no es una opción). Simplemente no puedo entender cómo.
cedbeu

Respuestas:

10

En los sistemas Debian y Ubuntu más nuevos, la configuración del teclado se coloca /etc/default/keyboardy comparte entre X y la consola. Solo corre

sudo dpkg-reconfigure keyboard-configuration

y seleccione Compose key: Right Alt (AltGr)en la pantalla apropiada.

También puede poner XKBOPTIONS=compose:ralten /etc/default/keyboardy correr

sudo dpkg-reconfigure console-setup

Los sistemas más antiguos tienen una clave de composición en la consola de forma predeterminada. En el usdiseño, presionar ambas Alt teclas juntas actúa como Compose. 1

Por ejemplo: Alt+ AltGr, ", A=> Ä

Si prefiere AltGrsolo ser Compose, necesita cambiar

alt keycode 100 = Compose

en su mapa de teclado activo para

keycode 100 = Compose

La forma más fácil de hacer esto es realizar los cambios anteriores /lib/kbd/keymaps/i386/include/linux-with-alt-and-altgr.inc.

Una mejor manera es crear un nuevo archivo llamado /lib/kbd/keymaps/i386/include/altgr-is-compose.inccon la línea anterior, crear un nuevo mapa de teclas que lo incluya y establecerlo en su mapa de teclas predeterminado.

  1. PrtScnTambién actúa como Composepor defecto.
Mikel
fuente
No voy a hacer que esto funcione. El dpkg-reconfigureasistente realmente pregunta sobre una clave de redacción, pero dice que no funciona en "modo Unicode" (?). Además, cuando no está en ese modo, dice que Control + período funciona como una clave de redacción. Pero tampoco estoy haciendo que eso funcione.
Emanuel Berg
Creo que se refiere a ese mensaje de advertencia unicode_start. Para mí, todavía funciona, siempre que corra setupconcomo dpkg-reconfiguredice.
Mikel
Cuando ejecuto setupconen mi terminal X ( urxvt), dice "No estamos en la consola, la consola queda sin configurar". Además, se showkeyqueja "No se pudo obtener un descriptor de archivo para la consola". En tty, ambos funcionan pero showkeydicen (lo primero) que "el modo kb era UNICODE", por lo que quizás esa sea la razón por la que no funciona. Pero, el período Control + funciona tty. OK, tiene sentido ahora.
Emanuel Berg
¿Tu pregunta dice que no tienes X? Debe ejecutar setupconen la consola virtual de Linux, por ejemplo, Ctrl + Alt + F1.
Mikel
1
Parece console-setupque no admite muchas secuencias de composición por defecto. Puedes correr dumpkeys --compose-onlypara ver cuáles. Debería poder modificar el console-setupguión de inicio para agregar reglas de redacción adicionales donde se ejecuta loadkeys.
Mikel
2

"componer" en la consola permite escribir dos caracteres pero generar un tercero.

El problema es que las definiciones de composición usan bytes , tanto como las dos entradas (es decir, no se puede definir la composición en términos de teclas mecanografiadas sino solo en términos de símbolos mecanografiados) y para la salida.

para que funcione en UTF-8, que es multibyte (1 a 4 bytes, al menos) requeriría grandes cambios en la forma en que se maneja la entrada de la consola, y reemplaza la matriz de caracteres simple actualmente utilizada por algo más complejo. Parece que no hay planes para hacerlo (el consenso entre los desarrolladores de kernel es que la consola debería seguir siendo una consola, algo simple, solo utilizada para el último recurso; si realmente necesita unicode, entonces probablemente también necesite bidi, modelado, etc.) es mejor ejecutar un terminal gráfico (un xterm de pantalla completa en X11; pero hay otras posibilidades).

Entonces, de hecho, no funciona, y no funcionará, con caracteres multibyte en la consola. PERO, todavía funciona si restringe las definiciones de redacción a ASCII simple.

Y también descubrí que también funciona si la salida está en iso-8859-1 (que corresponde a valores unicode de hasta 0x00ff); para eso puedes poner un guión de inicio en una línea:

    loadkeys / somepath / somefile

y coloque en ese archivo las definiciones de composición que desee (tenga cuidado de guardar el archivo en la codificación ISO-8859-1; y use caracteres más grandes que 0x7f como salida solamente) la sintaxis de dicho archivo es muy simple, líneas como esta:

    componer 'somechar' 'somotherchar' a 'salida deseada'

p.ej:

    componer 'a' 'a' a 'å'
    componer 'a' 'e' a 'æ'

el apóstrofe tiene que ser escapado.

el efecto de las claves diacríticas muertas también se definen en ese archivo; para dead_acute + a define una línea como:

    componer '\' '' a 'a' á '

dead_grave usa backtick (`), dead_diaeresis usa doublequote ("), dead_circumflex usa circumflex (^) y dead_tilde usa tilde (~).

Pablo Saratxaga
fuente
Gracias, puse a trabajar. Sólo, que tenía que cambiar compose 'a' 'a' to 'å'en compose 'o' 'a' to U+00E5, de lo contrario loadkeysse quejó de un error de sintaxis.
Emanuel Berg
cuando usaste 'å', ¿escribiste el archivo en iso-8859-1 (no utf-8)?
Pablo Saratxaga
No lo sé. ¿Cómo verifico eso?
Emanuel Berg
probar si un archivo está en utf-8: iconv -f utf-8 -t utf-8 filename si no hay errores, está en utf-8
Pablo Saratxaga
Eso parece afectar el archivo, pero no, echo $?al menos no hay errores y no hay salida stderr. Además, fileme dice que es UTF-8, por lo que tiene sentido.
Emanuel Berg