¿Por qué la distribución de teclado internacional de EE. UU. En Debian es diferente?

11

Editar : me di cuenta de que el "problema" no solo estaba en Ubuntu, sino también en Debian y Ubuntu simplemente lo heredó, así que hice migrar esto de Ask Ubuntu


He estado usando Linux por intervalos durante 10 años, y más recientemente he pasado más tiempo con OSX.

Pero, todavía recuerdo que al principio elegiría la distribución del teclado internacional de EE. UU. Y tendría exactamente la misma salida que la distribución del teclado de Windows (y más recientemente, la distribución internacional OSX de EE. UU.).

Sin embargo, hace unos años, cuando instalé Ubuntu, noté que la cedilla ya no se imprimía (ç o Ç). Esta es una combinación de las siguientes teclas: '+ c. En cambio, lo que obtengo es la letra ć.

¿Cuándo comenzó a suceder y por qué la diferencia con el comportamiento en los otros sistemas operativos? Lo que me desconcierta aún más es que incluso hay una distribución de teclado "alternativa internacional de EE. UU.", Que imprime exactamente las mismas teclas. Entonces, ¿a qué es alternativa?

Esto se ha informado como un error de nuevo a Canonical (no puedo encontrar el enlace ahora), pero la distribución del teclado nunca ha cambiado a lo que esperaba. Conozco las soluciones para solucionarlo con lo que necesito, pero me gustaría saber por qué / cuándo se ha vuelto diferente.

Pablo
fuente
2
Puede ingresar c-cedilla usando AltGr+ ,. Pero cuándo / si / por qué cambió, no lo sé.
Mikel
Gracias por los comentarios. He marcado la pregunta para que pueda moverse / fusionarse aquí. Todavía creo que este es el lugar correcto, ya que el comportamiento parece haber sido heredado de Debian.
Pablo

Respuestas:

17

Resumen

  1. Si está utilizando Ubuntu, probablemente cambió alrededor de 2005, cuando el conjunto de caracteres predeterminado cambió de ISO 8859-1 a UTF-8.
  2. US Alternative International agrega algunas claves muertas.

La configuración de las teclas muertas depende de su configuración regional y juego de caracteres.

Por ejemplo:

  • en_US.UTF-8 se define en /usr/share/X11/locale/en_US.UTF-8/Compose
  • ISO 8859-1 se define en /usr/share/X11/locale/iso8859-1/Compose

Si los miras usando grep, puedes ver que hay una diferencia:

$ grep '<dead_acute> <c>' /usr/share/X11/locale/en_US.UTF-8/Compose 
<dead_acute> <c>                    : "ć"   U0107 # LATIN SMALL LETTER C WITH ACUTE

$ grep '<dead_acute> <c>' /usr/share/X11/locale/iso8859-1/Compose
<dead_acute> <c>            : "\347"    ccedilla

A saber:

  • Codificación Latin1: ', c=ç
  • Codificación UTF-8: ', c=ć

Los registros de git (( en_US.UTF-8 ) ( iso8859-1 )) muestran que ha sido así desde al menos 2004.


La diferencia entre US International y US Alternative International se define en /usr/share/X11/xkb/symbols/us.

A saber, el diseño internacional alternativo de EE. UU. Agrega estas teclas muertas AltGr adicionales:

  • dead_macron: en AltGr-minus
  • dead_breve: en AltGr-parenleft
  • dead_abovedot: en AltGr-period
  • dead_abovering: en AltGr-0
  • dead_doubleacute: en AltGr-equal (como ya se usa quotedbl)
  • dead_caron: en AltGr-less (AltGr-shift-comma)
  • dead_cedilla: en AltGr-coma
  • dead_ogonek: en punto y coma AltGr
  • dead_belowdot: en AltGr-subrayado (AltGr-shift-minus)
  • dead_hook: en la pregunta AltGr
  • dead_horn: en AltGr-plus (AltGr-shift-equal)
  • dead_diaeresis: en AltGr-colon (Alt-shift-punto y coma)

Por ejemplo:

  • Internacional de EE. UU .: AltGr+ -=¥
  • Internacional Alternativa de EE. UU .: AltGr+ -, a=ā

UTF-8 se convirtió en la codificación predeterminada:

Mikel
fuente
Desearía tener más de un voto para dar esta respuesta.
penguin359
Vale la pena señalar que <dead_acute> <c>se reasigna a ç(en lugar de ć) si su configuración regional es pt_BR. Ver:/usr/share/X11/locale/pt_BR.UTF-8/Compose
Denilson Sá Maia
4

Complementando la respuesta de Vítor Souza

Usar un diseño de teclado internacional de EE. UU. Con idioma del sistema operativo en inglés y tener una hermosa cedilla .

Para tener el idioma inglés con un ç/Çtrabajo hermoso ( 'c-> cedilla) no es necesario cambiar los archivos de composición. Lo que hay que hacer es configurar LC_CTYPEcon una configuración regional que contiene esta definición:

<dead_acute> <c>            : "\347"    ccedilla.

Como pt_BR.UTF-8 (Portugués brasileño / Português Brasileiro).

X mapa del teclado:

# setxkbmap -layout us -variant intl

/etc/locale.conf

# nano /etc/locale.conf
LANG=en_US.UTF-8
LANGUAGE="en_US"
LC_CTYPE=pt_BR.UTF-8

Actualizar configuración regional

# source /etc/profile

Y para tty:

Establezca el mapa de teclas correcto, la fuente y el mapa de fuentes, por ejemplo.

# nano /etc/vconsole.conf
KEYMAP=us-acentos
FONT=ter-114n
FONT_MAP=8859-1
Geyslan G. Bem
fuente
OP no preguntaba cómo solucionarlo, sino por qué era así en primer lugar. De lo contrario, votaría esto.
Strugee
@strugge, tienes razón. Sin embargo, las secuelas lo están haciendo y en relación con OP, Mikel respondió muy bien.
Geyslan G. Bem
Si alguien considera útil esta respuesta, configúrela.
Geyslan G. Bem
2

De http://disi.unitn.it/~vitorsouza/linux/ubuntu-linux-10-10-maverick-meerkat/ y http://disi.unitn.it/~vitorsouza/linux/ubuntu-linux-10- 04-lúcido-lince / :

Problema con cedilla:

Un buen tipo decidió que una c acentuada (“ć”) es más importante que la c con una cedilla (“ç”), por lo que el comportamiento predeterminado para presionar '+ c en teclados internacionales con teclas muertas ahora es “ć”. Como soy brasileño y no rumano o algo así, eso definitivamente me molesta. '+ c solía mostrar "ç" una vez.

Para solucionarlo, edite como root el archivo /usr/lib/gtk-2.0/2.10.0/gtk.immodules , encuentre esta línea:

"cedilla" "Cedilla" "gtk20" "/usr/share/locale" "az:ca:co:fr:gv:oc:pt:sq:tr:wa"

Y agregue: en after: wa, así se ve así:

"cedilla" "Cedilla" "gtk20" "/usr/share/locale" "az:ca:co:fr:gv:oc:pt:sq:tr:wa:en"

Editar para Ubuntu 12.10 ( fuente ):

El archivo gtk.immodules a editar se encuentra en:

/usr/lib/x86_64-linux-gnu/gtk-2.0/2.10.0/gtk.immodules o /usr/lib/i386-linux-gnu/gtk-2.0/2.10.0/gtk.immodules


Editar para Debian Wheezy (y probablemente otras cosas de gtk 3)

El archivo que necesita ser editado es ahora

/usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules.cache

Las gtk20líneas están ahora, gtk30pero agregarlas :enal final es lo mismo.


Para arreglarlo también para aplicaciones que no sean GTK, edite como root el archivo /usr/share/X11/locale/en_US.UTF-8/Compose y cambie todas las instancias de ć con ç, y todas las instancias de Ć con Ç.

Es posible que deba repetir una o ambas operaciones de vez en cuando, cuando actualice su sistema y los archivos de configuración vuelvan a su contenido original.

Comunidad
fuente
Para evitar que el administrador de paquetes pise sus cambios, puede ejecutar (como root) dpkg-divert /usr/lib/gtk-2.0/2.10.0/gtk.immodules. El sistema de paquetes escribirá en su gtk.immodules.distriblugar. Para deshacer esto, agregue la --removebandera al mismo comando y copie el archivo .distrib sobre el original. Para obtener más información, man dpkg-divert.
Jander
en ubuntu 12.10, el archivo tiene una ubicación diferente: /usr/lib/x86_64-linux-gnu/gtk-2.0/2.10.0/gtk.immodules, o /usr/lib/i386-linux-gnu/gtk-2.0/ 2.10.0 / gtk.immodules
0

Esto viene como un complemento a la respuesta de Vítor Souza .

En Xfce Quantal (Xubuntu 12.10, Mint 14 Xfce) no se pudo resolver esto por los métodos ya mencionados (ver más abajo). Lo que funcionó fue instalar el ibuspaquete y sus dependencias.

( Fuente - más exactamente aquí .)


La solución anterior no funcionó para mí: en Ubuntu 12.10, el archivo gtk.immodulestiene una ubicación diferente:

/usr/lib/x86_64-linux-gnu/gtk-2.0/2.10.0/gtk.immodules

o

/usr/lib/i386-linux-gnu/gtk-2.0/2.10.0/gtk.immodules

(Mi fuente para esto aquí .)

Comunidad
fuente