Warum unterscheidet sich das internationale Tastaturlayout der USA bei Debian?

11

Bearbeiten : Ich erkannte, dass das "Problem" nicht nur in Ubuntu, sondern auch in Debian selbst lag und Ubuntu es gerade geerbt hatte, also ließ ich dieses von Ask Ubuntu migrieren


Ich benutze Linux seit 10 Jahren immer wieder und habe in letzter Zeit mehr Zeit mit OSX verbracht.

Aber ich erinnere mich noch daran, dass ich am Anfang das internationale Tastaturlayout der USA gewählt habe und es genau die gleiche Ausgabe wie das Windows-Tastaturlayout (und zuletzt das internationale OSX-Layout der USA) haben würde.

Als ich jedoch vor einigen Jahren Ubuntu installierte, bemerkte ich, dass die Cedilla nicht mehr gedruckt wurde (ç oder Ç). Dies ist eine Kombination der folgenden Tasten: '+ c. Stattdessen bekomme ich den Brief ć.

Wann hat es angefangen und warum der Unterschied zum Verhalten auf den anderen Betriebssystemen? Was mich noch mehr verwundert, ist, dass es sogar ein "US International Alternative" -Tastaturlayout gibt, das genau die gleichen Tasten druckt! Also, wozu ist es eine Alternative?

Dies wurde als Fehler bei Canonical gemeldet (der Link kann jetzt nicht gefunden werden), aber das Tastaturlayout hat sich nie wieder auf das geändert, was ich erwartet hatte. Ich kenne die Problemumgehungen, um das Problem zu beheben, aber ich möchte nur wissen, warum / wann es anders geworden ist.

Pablo
quelle
1
Sie können c-cedilla mit AltGr+ eingeben ,. Aber wann / ob / warum es sich geändert hat, weiß ich nicht.
Mikel
Danke für die Kommentare. Ich habe die Frage markiert, damit sie hier verschoben / zusammengeführt werden kann. Ich glaube immer noch, dass hier der richtige Ort ist, da das Verhalten von Debian geerbt worden zu sein scheint.
Pablo

Antworten:

16

Zusammenfassung

  1. Wenn Sie Ubuntu verwenden, hat sich dies wahrscheinlich um 2005 geändert, als der Standardzeichensatz von ISO 8859-1 auf UTF-8 geändert wurde.
  2. US Alternative International fügt einige tote Schlüssel hinzu.

Die Einstellungen für die toten Schlüssel hängen von Ihrem Gebietsschema und Ihrem Zeichensatz ab.

Beispielsweise:

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

Wenn Sie sie mit verwenden grep, können Sie sehen, dass es einen Unterschied gibt:

$ 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

Nämlich:

  • Latin1-Codierung : ', c=ç
  • UTF-8-Codierung : ', c=ć

Die Git-Protokolle (( en_US.UTF-8 ) ( iso8859-1 )) zeigen, dass dies seit mindestens 2004 so ist.


Der Unterschied zwischen US International und US Alternative International ist in definiert /usr/share/X11/xkb/symbols/us.

Das Layout von US Alternative International fügt nämlich diese zusätzlichen toten AltGr-Schlüssel hinzu:

  • dead_macron: auf AltGr-Minus
  • dead_breve: auf AltGr-parenleft
  • dead_abovedot: auf AltGr-Periode
  • dead_abovering: auf AltGr-0
  • dead_doubleacute: auf AltGr-gleich (wie zitiertbl bereits verwendet wird)
  • dead_caron: auf AltGr-less (AltGr-Shift-Komma)
  • dead_cedilla: auf AltGr-Komma
  • dead_ogonek: auf AltGr-Semikolon
  • dead_belowdot: auf AltGr-Unterstrich (AltGr-Shift-Minus)
  • dead_hook: auf AltGr-Frage
  • dead_horn: auf AltGr-plus (AltGr-Shift-gleich)
  • dead_diaeresis: auf AltGr-Doppelpunkt (Alt-Shift-Semikolon)

Beispielsweise:

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

UTF-8 wurde zur Standardcodierung:

  • Red Hat 8.0 "Psyche", veröffentlicht am 30. September 2002 als Referenz
  • Ubuntu 5.04 "hoary", veröffentlicht am 8. April 2005 Referenz
  • Debian 4.0 "Etch", veröffentlicht als "Stable" 8. April 2007 Referenz 1 Referenz 2
Mikel
quelle
Ich wünschte, ich hätte mehr als eine Stimme für diese Antwort.
Pinguin359
Es ist erwähnenswert, dass <dead_acute> <c>dies ç(anstelle von ć) neu zugeordnet wird, wenn Ihr Gebietsschema pt_BR ist. Siehe:/usr/share/X11/locale/pt_BR.UTF-8/Compose
Denilson Sá Maia
4

Ergänzende Antwort von Vítor Souza

Verwendung eines internationalen US-Tastaturlayouts mit OS Language in Englisch und einer schönen Cedilla .

Damit die englische Sprache gut ç/Çfunktioniert ( 'c-> cedilla), müssen die Erstellungsdateien nicht geändert werden. Was man tun muss, ist das LC_CTYPEmit einem Gebietsschema festzulegen, das diese Definition enthält:

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

Wie pt_BR.UTF-8 (brasilianisches Portugiesisch / Português Brasileiro).

X Tastaturbelegung:

# 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

Gebietsschema aktualisieren

# source /etc/profile

Und für tty:

Stellen Sie die richtige Keymap, Schriftart und Schriftartenzuordnung ein, z.

# nano /etc/vconsole.conf
KEYMAP=us-acentos
FONT=ter-114n
FONT_MAP=8859-1
Geyslan G. Bem
quelle
OP fragte nicht, wie es behoben werden sollte, sondern warum es überhaupt so war. Sonst würde ich das positiv bewerten.
strugee
@strugge, du hast recht. Wie auch immer die Fortsetzungen es tun und relativ zu OP hat Mikel es gut beantwortet.
Geyslan G. Bem
Wenn jemand diese Antwort für hilfreich hält, stellen Sie sie bitte ein.
Geyslan G. Bem
2

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

Problem mit Cedilla:

Ein netter Kerl entschied, dass ein akzentuiertes c („ć“) wichtiger ist als das c mit einer Cedilla („ç“). Daher ist das Standardverhalten für das Drücken von '+ c in internationalen Tastaturen mit toten Tasten jetzt „ć“. Da ich Brasilianer und kein Rumäne oder so bin, stört mich das definitiv. '+ c wurde verwendet, um einmal "ç" auszugeben.

Um dies zu beheben, bearbeiten Sie die Datei /usr/lib/gtk-2.0/2.10.0/gtk.immodules als root. Suchen Sie diese Zeile:

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

Und füge hinzu: en after: wa, also sieht es so aus:

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

Bearbeiten für Ubuntu 12.10 ( Quelle ):

Die zu bearbeitende Datei gtk.immodules befindet sich unter:

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


Bearbeiten für Debian Wheezy (und wahrscheinlich andere GTK 3 Sachen)

Die Datei, die bearbeitet werden muss, ist jetzt

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

Die gtk20in den Zeilen sind jetzt, gtk30aber das Hinzufügen der :enam Ende ist genauso.


Um dies auch für Nicht-GTK-Anwendungen zu beheben, bearbeiten Sie die Datei /usr/share/X11/locale/en_US.UTF-8/Compose als Root und ändern Sie alle Instanzen von ć mit ç und alle Instanzen von Ć mit Ç.

Möglicherweise müssen Sie von Zeit zu Zeit einen oder beide Vorgänge wiederholen, wenn Sie Ihr System aktualisieren und die Konfigurationsdateien auf ihren ursprünglichen Inhalt zurücksetzen.

Gemeinschaft
quelle
Um zu verhindern, dass der Paketmanager auf Ihre Änderungen zugreift, können Sie (als Root) ausführen dpkg-divert /usr/lib/gtk-2.0/2.10.0/gtk.immodules. Das Paketsystem schreibt dann gtk.immodules.distribstattdessen auf. Um dies rückgängig zu machen, fügen Sie das --removeFlag demselben Befehl hinzu und kopieren Sie die .distrib-Datei über das Original. Für weitere Informationen , man dpkg-divert.
Jander
In Ubuntu 12.10 hat die Datei einen anderen Speicherort: /usr/lib/x86_64-linux-gnu/gtk-2.0/2.10.0/gtk.immodules oder /usr/lib/i386-linux-gnu/gtk-2.0/ 2.10.0 / gtk.immodules
0

Dies ist eine Ergänzung zu Vítor Souzas Antwort .

In Xfce Quantal (Xubuntu 12.10, Mint 14 Xfce) konnte dies mit den bereits erwähnten Methoden nicht gelöst werden (siehe unten). Was funktionierte, war die Installation des ibusPakets und seiner Abhängigkeiten.

( Quelle - genauer hier .)


Die ältere Lösung hat bei mir nicht funktioniert: In Ubuntu 12.10 hat die Datei gtk.immoduleseinen anderen Speicherort:

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

oder

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

(Meine Quelle dafür hier .)

Gemeinschaft
quelle