Dlaczego amerykański układ klawiatury na Debianie jest inny?

11

Edycja : Zdałem sobie sprawę, że „problem” dotyczył nie tylko Ubuntu, ale samego Debiana i Ubuntu właśnie go odziedziczył, więc migrowałem z Ask Ubuntu


Używam Linuksa z przerwami od 10 lat, a ostatnio spędziłem więcej czasu z OSX.

Ale wciąż pamiętam, że na początku wybrałem układ klawiatury międzynarodowej w USA i miałby dokładnie taki sam wynik, jak układ klawiatury systemu Windows (a ostatnio układ międzynarodowy OSX w USA).

Jednak kilka lat temu, kiedy instalowałem Ubuntu, zauważyłem, że cedilla nie jest już drukowana (ç lub Ç). Jest to kombinacja następujących klawiszy: „+ c. Zamiast tego dostaję literę ć.

Kiedy to się zaczęło i dlaczego różnica w zachowaniu w innych systemach operacyjnych? Jeszcze bardziej mnie zastanawia to, że istnieje nawet układ klawiatury „US International Alternative”, który drukuje dokładnie te same klawisze! Czym więc jest alternatywa?

Zostało to zgłoszone jako błąd z powrotem do Canonical (nie można teraz znaleźć łącza), ale układ klawiatury nigdy nie zmienił się z powrotem na oczekiwany. Znam obejścia, aby naprawić to, czego potrzebuję, ale chciałbym tylko wiedzieć, dlaczego / kiedy stało się inaczej.

Pablo
źródło
2
Możesz wprowadzić c-cedilla za pomocą AltGr+ ,. Ale kiedy / czy / dlaczego to się zmieniło, nie wiem.
Mikel
Dziękuję za komentarze. Oflagowałem pytanie, aby można je było przenieść / scalić tutaj. Nadal uważam, że tutaj jest właściwe miejsce, ponieważ zachowanie wydaje się odziedziczone po Debianie.
Pablo

Odpowiedzi:

17

streszczenie

  1. Jeśli używasz Ubuntu, prawdopodobnie zmieniło się to około 2005 roku, kiedy domyślny zestaw znaków zmienił się z ISO 8859-1 na UTF-8.
  2. US Alternative International dodaje martwe klucze.

Ustawienia martwego klucza zależą od ustawień regionalnych i zestawu znaków.

Na przykład:

  • en_US.UTF-8 jest zdefiniowany w /usr/share/X11/locale/en_US.UTF-8/Compose
  • ISO 8859-1 jest zdefiniowany w /usr/share/X11/locale/iso8859-1/Compose

Jeśli spojrzysz na nie za pomocą grep, zobaczysz różnicę:

$ 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

Mianowicie:

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

Dzienniki git (( en_US.UTF-8 ) ( iso8859-1 )) pokazują, że tak było od co najmniej 2004 roku.


Różnica między US International a US Alternative International jest zdefiniowana w /usr/share/X11/xkb/symbols/us.

Mianowicie układ US Alternative International dodaje te dodatkowe martwe klawisze AltGr:

  • dead_macron: na AltGr-minus
  • dead_breve: na AltGr-parenleft
  • dead_abovedot: na AltGr-period
  • dead_abovering: na AltGr-0
  • dead_doubleacute: na AltGr-równe (ponieważ quotedbl jest już używany)
  • dead_caron: na AltGr-less (AltGr-shift-przecinek)
  • dead_cedilla: na AltGr-przecinek
  • dead_ogonek: na AltGr-średnik
  • dead_belowdot: on AltGr-underscore (AltGr-shift-minus)
  • dead_hook: na pytanie AltGr
  • dead_horn: na AltGr-plus (AltGr-shift-równy)
  • dead_diaeresis: na AltGr-dwukropek (Alt-shift-średnik)

Na przykład:

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

UTF-8 stał się domyślnym kodowaniem:

Mikel
źródło
Chciałbym mieć więcej niż jeden głos na tę odpowiedź.
penguin359
Warto zauważyć, że <dead_acute> <c>jest mapowany ç(zamiast ć), jeśli twoje ustawienia regionalne to pt_BR. Zobacz:/usr/share/X11/locale/pt_BR.UTF-8/Compose
Denilson Sá Maia
4

Uzupełnienie odpowiedzi Vítora Souzy

Używanie amerykańskiego układu klawiatury z językiem systemu operacyjnego w języku angielskim i posiadanie pięknej cedilli .

Aby język angielski ç/Çdziałał pięknie ( 'c-> cedilla), nie trzeba zmieniać plików tworzenia. To, co musisz zrobić, to ustawić LC_CTYPEza pomocą ustawień regionalnych zawierających tę definicję:

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

Jak pt_BR.UTF-8 (portugalski brazylijski / portugalski Brasileiro).

Mapa klawiatury 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

Zaktualizuj ustawienia regionalne

# source /etc/profile

A dla tty:

Ustaw odpowiednią mapę klawiszy, czcionkę i mapę czcionek, np.

# nano /etc/vconsole.conf
KEYMAP=us-acentos
FONT=ter-114n
FONT_MAP=8859-1
Geyslan G. Bem
źródło
OP nie pytał, jak to naprawić, ale dlaczego tak było. W przeciwnym razie głosowałbym za tym.
strugee
@strugge, masz rację. Jakkolwiek kontynuują to sequele i w stosunku do OP, Mikel odpowiedział na nie ładnie.
Geyslan G. Bem
Jeśli ktokolwiek uzna tę odpowiedź za pomocną, proszę ją ustawić.
Geyslan G. Bem,
3

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

Problem z cedillą:

Jakiś sympatyczny człowiek zdecydował, że akcentowane c („ć”) jest ważniejsze niż c z cedillą („ç”), więc domyślnym zachowaniem dla naciśnięcia „+ c na klawiaturze międzynarodowej za pomocą martwych klawiszy jest teraz„ ć ”. Ponieważ jestem Brazylijczykiem, a nie Rumunią, czy coś takiego, to zdecydowanie mnie niepokoi. „+ c kiedyś dawał sygnał wyjściowy„ ç ”.

Aby to naprawić, edytuj jako root plik /usr/lib/gtk-2.0/2.10.0/gtk.immodules , znajdź tę linię:

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

I dodaj: en after: wa, więc wygląda to tak:

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

Edycja dla Ubuntu 12.10 ( źródło ):

plik gtk.immodules do edycji znajduje się w:

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


Edycja dla Debian Wheezy (i prawdopodobnie innych rzeczy GTK 3)

Plik, który należy edytować, jest teraz

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

W gtk20wierszach są teraz, gtk30ale dodanie :enna końcu jest dokładnie takie samo.


Aby to naprawić również dla aplikacji innych niż GTK, edytuj jako root plik /usr/share/X11/locale/en_US.UTF-8/ Skomponuj i zmień wszystkie instancje ć z ç oraz wszystkie instancje Ć z Ç.

Konieczne może być powtarzanie jednej lub obu operacji od czasu do czasu po uaktualnieniu systemu i przywrócenie pierwotnej zawartości plików konfiguracyjnych.

Społeczność
źródło
Aby powstrzymać menedżera pakietów przed wprowadzaniem zmian, możesz uruchomić (jako root) dpkg-divert /usr/lib/gtk-2.0/2.10.0/gtk.immodules. gtk.immodules.distribZamiast tego system pakietów napisze do . Aby to cofnąć, dodaj --removeflagę do tego samego polecenia i skopiuj plik .distrib na oryginał. Aby uzyskać więcej informacji, man dpkg-divert.
Jander
w Ubuntu 12.10 plik ma inną lokalizację: /usr/lib/x86_64-linux-gnu/gtk-2.0/2.10.0/gtk.immodules lub /usr/lib/i386-linux-gnu/gtk-2.0/ 2.10.0 / gtk.immodules
0

Jest to uzupełnienie odpowiedzi Vítora Souzy .

W Xfce Quantal (Xubuntu 12.10, Mint 14 Xfce) nie można tego rozwiązać metodami już wymienionymi (patrz poniżej). Udało się zainstalować ibuspakiet i jego zależności.

( Źródło - dokładniej tutaj .)


Starsze rozwiązanie nie działało dla mnie: w Ubuntu 12.10 plik gtk.immodulesma inną lokalizację:

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

lub

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

(Moje źródło tego tutaj .)

Społeczność
źródło