Perché il layout di tastiera internazionale degli Stati Uniti su Debian è diverso?


11

Modifica : mi sono reso conto che il "problema" non era solo in Ubuntu ma in Debian stesso e Ubuntu l'aveva appena ereditato, quindi ho fatto migrare questo da Ask Ubuntu


Uso Linux da 10 anni, e più recentemente ho trascorso più tempo con OSX.

Ma ricordo ancora che all'inizio avrei scelto il layout di tastiera internazionale degli Stati Uniti e avrebbe esattamente lo stesso output del layout di tastiera di Windows (e, più recentemente, il layout internazionale degli Stati Uniti di OSX).

Tuttavia, alcuni anni fa, quando ho installato Ubuntu, ho notato che la cedilla non era più stampata (ç o Ç). Questa è una combinazione dei seguenti tasti: '+ c. Invece, quello che ottengo è la lettera ć.

Quando ha iniziato a verificarsi e perché la differenza nel comportamento sugli altri sistemi operativi? Ciò che mi fa ancora più imbarazzare è che esiste persino un layout di tastiera "US International alternative", che stampa esattamente gli stessi tasti! Quindi, qual è la sua alternativa?

Questo è stato segnalato come un bug a Canonical (non riesco a trovare il link ora), ma il layout della tastiera non è mai tornato a quello che mi aspettavo. Conosco le soluzioni alternative per risolvere ciò di cui ho bisogno, ma vorrei solo sapere perché / quando è diventato diverso.


2
Puoi inserire c-cedilla usando AltGr+ ,. Ma quando / se / perché è cambiato, non lo so.
Mikel,

Grazie per i commenti Ho contrassegnato la domanda in modo che possa essere spostata / unita qui. Credo ancora che qui sia il posto giusto in quanto il comportamento sembra essere stato ereditato da Debian.
Pablo,

Risposte:


17

Sommario

  1. Se stai usando Ubuntu, probabilmente è cambiato intorno al 2005, quando il set di caratteri predefinito è cambiato da ISO 8859-1 a UTF-8.
  2. US Alternative International aggiunge alcune chiavi morte.

Le impostazioni della chiave morta dipendono dalla locale e dal set di caratteri.

Per esempio:

  • en_US.UTF-8 è definito in /usr/share/X11/locale/en_US.UTF-8/Compose
  • ISO 8859-1 è definito in /usr/share/X11/locale/iso8859-1/Compose

Se li guardi usando grep, puoi vedere che c'è una differenza:

$ 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

Vale a dire:

  • Codifica latin1: ', c=ç
  • UTF-8 encoding: ', c=ć

I log git (( en_US.UTF-8 ) ( iso8859-1 )) mostrano che è stato così almeno dal 2004.


La differenza tra US International e US Alternative International è definita in /usr/share/X11/xkb/symbols/us.

Vale a dire, il layout internazionale alternativo degli Stati Uniti aggiunge queste chiavi morte AltGr extra:

  • dead_macron: su AltGr-meno
  • dead_breve: su AltGr-parenleft
  • dead_abovedot: sul periodo AltGr
  • dead_abovering: su AltGr-0
  • dead_doubleacute: su AltGr-equal (poiché quotedbl è già utilizzato)
  • dead_caron: su AltGr-less (AltGr-shift-virgola)
  • dead_cedilla: su AltGr-virgola
  • dead_ogonek: su AltGr-punto e virgola
  • dead_belowdot: su AltGr-underscore (AltGr-shift-meno)
  • dead_hook: su AltGr-question
  • dead_horn: su AltGr-plus (AltGr-shift-equal)
  • dead_diaeresis: su AltGr-colon (Alt-shift-punto e virgola)

Per esempio:

  • Internazionale USA: AltGr+ -=¥
  • Alternativa internazionale USA: AltGr+ -, a=ā

UTF-8 è diventata la codifica predefinita:


Vorrei avere più di un voto da dare per questa risposta.
penguin359,

Vale la pena notare che <dead_acute> <c>viene rimappato a ç(anziché ć) se la tua locale è pt_BR. Vedi:/usr/share/X11/locale/pt_BR.UTF-8/Compose
Denilson Sá Maia,

4

Risposta complementare di Vítor Souza

Utilizzando un layout di tastiera internazionale degli Stati Uniti con la lingua del sistema operativo in inglese e una bellissima cedilla .

Affinché la lingua inglese funzioni ç/Çperfettamente ( 'c-> cedilla) non è necessario per modificare i file di composizione. Quello che si deve fare è impostare LC_CTYPEcon un'impostazione internazionale che contenga questa definizione:

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

Come pt_BR.UTF-8 (portoghese brasiliano / portoghese Brasile).

Mappa tastiera 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

Aggiorna impostazioni internazionali

# source /etc/profile

E per tty:

Imposta la mappa dei tasti, il carattere e la mappa dei caratteri giusti, ad es.

# nano /etc/vconsole.conf
KEYMAP=us-acentos
FONT=ter-114n
FONT_MAP=8859-1

OP non stava chiedendo come risolverlo, ma perché era così in primo luogo. Altrimenti voterei questo.
Strugee,

@strugge, hai ragione. Comunque i sequel lo stiano facendo e relativamente all'OP, Mikel ha risposto bene.
Geyslan G. Bem,

Se qualcuno ritiene utile questa risposta, impostala.
Geyslan G. Bem,

2

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

Problema con la cedilla:

Qualcuno simpatico ha deciso che un accentato c (“ć”) è più importante della c con una cedilla (“ç”), quindi il comportamento predefinito per premere '+ c in tastiere internazionali con tasti morti è ora “ć”. Dato che sono brasiliano e non rumeno o qualcosa del genere, questo mi disturba sicuramente. '+ c usato per produrre “ç” una volta.

Per risolverlo, modifica come root il file /usr/lib/gtk-2.0/2.10.0/gtk.immodules , trova questa riga:

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

E aggiungi: en after: wa, quindi è così:

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

Modifica per Ubuntu 12.10 ( fonte ):

il file gtk.immodules da modificare si trova in:

/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


Modifica per Debian Wheezy (e probabilmente altre cose GTK 3)

Il file che deve essere modificato è ora

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

Le gtk20linee in sono ora, gtk30ma l'aggiunta :endi alla fine è la stessa.


Per risolverlo anche per applicazioni non GTK, modifica come root il file /usr/share/X11/locale/en_US.UTF-8/Componi e modifica tutte le istanze di ć con ç e tutte le istanze di Ć con Ç.

Potrebbe essere necessario ripetere una o entrambe le operazioni di volta in volta, quando si aggiorna il sistema e riporta i file di configurazione al loro contenuto originale.


Per evitare che il gestore pacchetti acceda alle modifiche, è possibile eseguire (come root) dpkg-divert /usr/lib/gtk-2.0/2.10.0/gtk.immodules. gtk.immodules.distribInvece il sistema di pacchetti scriverà invece. Per annullare ciò, aggiungi il --removeflag allo stesso comando e copia il file .distrib sull'originale. Per ulteriori informazioni, man dpkg-divert.
Jander,

in Ubuntu 12.10, il file ha una posizione diversa: /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

Questo è un complemento alla risposta di Vítor Souza .

In Xfce Quantal (Xubuntu 12.10, Mint 14 Xfce) non è stato possibile risolverlo con i metodi già menzionati (vedi sotto). Ciò che ha funzionato è stato l'installazione del ibuspacchetto e delle sue dipendenze.

( Fonte - più esattamente qui .)


La soluzione precedente non ha funzionato per me: in Ubuntu 12.10, il file gtk.immodulesha una posizione diversa:

/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

(La mia fonte per questo qui .)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.