Pourquoi la disposition du clavier international américain sur Debian est-elle différente?

11

Edit : J'ai réalisé que le "problème" n'était pas seulement dans Ubuntu mais dans Debian lui-même et Ubuntu vient d'en hériter, j'ai donc fait migrer cela depuis Ask Ubuntu


J'utilise Linux sous et hors tension depuis 10 ans, et plus récemment, j'ai passé plus de temps avec OSX.

Mais, je me souviens encore qu'au début, je choisirais la disposition du clavier international américain et qu'elle aurait exactement la même sortie que la disposition du clavier Windows (et plus récemment, la disposition internationale OSX US).

Cependant, il y a quelques années, lorsque j'ai installé Ubuntu, j'ai remarqué que la cédille n'était plus imprimée (ç ou Ç). Il s'agit d'une combinaison des touches suivantes: '+ c. Au lieu de cela, je reçois la lettre ć.

Quand cela a-t-il commencé à se produire et pourquoi la différence avec le comportement sur les autres OS? Ce qui me rend encore plus perplexe, c'est qu'il existe même une disposition de clavier "alternative internationale américaine", qui imprime exactement les mêmes touches! Alors, à quoi est-ce une alternative?

Cela a été signalé comme un bug dans Canonical (ne peut pas trouver le lien maintenant), mais la disposition du clavier n'a jamais changé comme prévu. Je connais les solutions pour le fixer à ce dont j'ai besoin, mais je voudrais simplement savoir pourquoi / quand il est devenu différent.

Pablo
la source
2
Vous pouvez entrer c-cedilla en utilisant AltGr+ ,. Mais quand / si / pourquoi cela a changé, je ne sais pas.
Mikel
Merci pour les commentaires. J'ai signalé la question afin qu'elle puisse être déplacée / fusionnée ici. Je crois toujours que c'est le bon endroit car le comportement semble avoir été hérité de Debian.
Pablo

Réponses:

17

Résumé

  1. Si vous utilisez Ubuntu, il a probablement changé vers 2005, lorsque le jeu de caractères par défaut est passé d'ISO 8859-1 à UTF-8.
  2. US Alternative International ajoute quelques clés mortes.

Les paramètres de clé morte dépendent de votre environnement local et de votre jeu de caractères.

Par exemple:

  • en_US.UTF-8 est défini dans /usr/share/X11/locale/en_US.UTF-8/Compose
  • ISO 8859-1 est défini dans /usr/share/X11/locale/iso8859-1/Compose

Si vous les regardez en utilisant grep, vous pouvez voir qu'il y a une différence:

$ 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

À savoir:

  • Encodage latin1: ', c=ç
  • Codage UTF-8: ', c=ć

Les journaux git (( en_US.UTF-8 ) ( iso8859-1 )) montrent qu'il en est ainsi depuis au moins 2004.


La différence entre US International et US Alternative International est définie dans /usr/share/X11/xkb/symbols/us.

À savoir, la disposition US Alternative International ajoute ces clés mortes AltGr supplémentaires:

  • dead_macron: sur AltGr-moins
  • dead_breve: sur AltGr-parenleft
  • dead_abovedot: sur AltGr-période
  • dead_abovering: sur AltGr-0
  • dead_doubleacute: sur AltGr-égal (car quotedbl est déjà utilisé)
  • dead_caron: sur AltGr-less (AltGr-shift-virgule)
  • dead_cedilla: sur AltGr-virgule
  • dead_ogonek: sur AltGr-semicolon
  • dead_belowdot: sur AltGr-underscore (AltGr-shift-moins)
  • dead_hook: sur AltGr-question
  • dead_horn: sur AltGr-plus (AltGr-shift-equal)
  • dead_diaeresis: sur AltGr-colon (Alt-shift-semicolon)

Par exemple:

  • US International: AltGr+ -=¥
  • US Alternative International: AltGr+ -, a=ā

UTF-8 est devenu l'encodage par défaut:

Mikel
la source
J'aimerais avoir plus d'un vote à donner pour cette réponse.
penguin359
Il convient de noter qu'il <dead_acute> <c>est remappé à ç(au lieu de ć) si votre paramètre régional est pt_BR. Voir:/usr/share/X11/locale/pt_BR.UTF-8/Compose
Denilson Sá Maia
4

Compléter la réponse de Vítor Souza

Utiliser une disposition de clavier internationale américaine avec OS Language en anglais et avoir une belle cédille .

Pour que l'anglais ç/Çfonctionne parfaitement ( 'c-> cedilla), il n'est pas nécessaire de modifier les fichiers de composition. Ce que l'on doit faire est de définir le LC_CTYPEavec une locale qui contient cette définition:

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

Comme pt_BR.UTF-8 (portugais brésilien / Português Brasileiro).

Carte du clavier X:

# 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

Mettre à jour les paramètres régionaux

# source /etc/profile

Et pour tty:

Définissez le clavier, la police et la carte de police appropriés, par exemple.

# nano /etc/vconsole.conf
KEYMAP=us-acentos
FONT=ter-114n
FONT_MAP=8859-1
Geyslan G. Bem
la source
OP ne demandait pas comment le réparer mais pourquoi il en était ainsi en premier lieu. Sinon, je voterais pour cela.
strugee
@strugge, vous avez raison. Cependant, les suites le font et par rapport à OP, Mikel y a bien répondu.
Geyslan G. Bem
Si quelqu'un considère cette réponse utile, veuillez la définir.
Geyslan G. Bem
3

Depuis http://disi.unitn.it/~vitorsouza/linux/ubuntu-linux-10-10-maverick-meerkat/ et http://disi.unitn.it/~vitorsouza/linux/ubuntu-linux-10- 04-lucid-lynx / :

Problème avec la cédille:

Un bon gars a décidé qu'un c accentué ("ć") est plus important que le c avec une cédille ("ç"), donc le comportement par défaut pour appuyer sur '+ c dans les claviers internationaux avec touches mortes est maintenant "ć". Étant donné que je suis brésilien et non roumain ou quelque chose, cela me dérange définitivement. '+ c utilisé pour sortir “ç” une fois.

Pour le corriger, éditez en root le fichier /usr/lib/gtk-2.0/2.10.0/gtk.immodules , trouvez cette ligne:

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

Et ajoutez: en après: wa, cela ressemble à ceci:

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

Modifier pour Ubuntu 12.10 ( source ):

le fichier gtk.immodules à éditer se trouve à:

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


Modifier pour Debian Wheezy (et probablement d'autres trucs gtk 3)

Le fichier qui doit être modifié est maintenant

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

Le gtk20dans les lignes est maintenant, gtk30mais l'ajout :enà la fin est tout de même.


Pour le corriger également pour les applications non GTK, éditez en tant que root le fichier /usr/share/X11/locale/en_US.UTF-8/Compose et changez toutes les instances de ć avec ç, et toutes les instances de Ć avec Ç.

Vous devrez peut-être répéter une ou les deux opérations de temps en temps, lorsque vous mettez à niveau votre système et qu'il ramène les fichiers de configuration à leur contenu d'origine.

Communauté
la source
Pour empêcher le gestionnaire de packages de suivre vos modifications, vous pouvez exécuter (en tant que root) dpkg-divert /usr/lib/gtk-2.0/2.10.0/gtk.immodules. Le système de package écrira alors à la gtk.immodules.distribplace. Pour annuler cela, ajoutez l' --removeindicateur à la même commande et copiez le fichier .distrib sur l'original. Pour plus d' informations, man dpkg-divert.
Jander
dans ubuntu 12.10, le fichier a un emplacement différent: /usr/lib/x86_64-linux-gnu/gtk-2.0/2.10.0/gtk.immodules ou /usr/lib/i386-linux-gnu/gtk-2.0/ 2.10.0 / gtk.immodules
0

Cela vient en complément de la réponse de Vítor Souza .

Dans Xfce Quantal (Xubuntu 12.10, Mint 14 Xfce) ne pouvait pas résoudre ce problème par les méthodes déjà mentionnées (voir ci-dessous). Ce qui a fonctionné a été d'installer le ibuspaquet et ses dépendances.

( Source - plus exactement ici .)


L'ancienne solution ne fonctionnait pas pour moi: dans Ubuntu 12.10, le fichier gtk.immodulesa un emplacement différent:

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

ou

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

(Ma source ici .)

Communauté
la source