Чому міжнародна розкладка клавіатури США на Debian відрізняється?


11

Редагувати : Я зрозумів, що "проблема" була не тільки в Ubuntu, але і в Debian, і Ubuntu просто успадкував її, тому я міг перенести з Ask Ubuntu


Я використовую Linux і вимикаю 10 років, а останнім часом я більше часу проводив з OSX.

Але я все ще пам’ятаю, що на початку я вибрав би міжнародну розкладку клавіатури США, і вона мала б точно такий же вихід, як і розкладка клавіатури Windows (і останнім часом - міжнародна розкладка OSX в США).

Однак кілька років тому, коли я встановив Ubuntu, я помітив, що цеділа більше не друкується (ç або Ç). Це комбінація наступних клавіш: '+ c. Натомість те, що я отримую, це письмо ć.

Коли це почало відбуватися, і чому відмінність поведінки на інших ОС? Що мене ще більше спантеличує, це навіть те, що існує навіть "американська міжнародна альтернатива", розкладка клавіатури, яка друкує абсолютно ті самі клавіші! Отже, що це альтернатива?

Про це повідомлялося як про помилку до Canonical (зараз не можна знайти посилання), але розкладка клавіатури ніколи не змінилася на те, що я очікував. Я знаю обхідні шляхи, щоб зафіксувати це, що мені потрібно, але я просто хотів би знати, чому / коли це стало іншим.


2
Ви можете ввести c-cedilla за допомогою AltGr+ ,. Але коли / чи / чому це змінилося, я не знаю.
Мікель

Дякуємо за коментарі. Я позначив це питання, щоб його можна було перемістити / об'єднати тут. Я все ще вважаю, що це правильне місце, оскільки поведінка, здається, була успадкована від Debian.
Пабло

Відповіді:


17

Підсумок

  1. Якщо ви використовуєте Ubuntu, він, ймовірно, змінився близько 2005 року, коли набір символів за замовчуванням змінився з ISO 8859-1 на UTF-8.
  2. Американський Альтернативний Інтернаціонал додає кілька мертвих ключів.

Налаштування мертвої клавіші залежать від вашої мови та набору символів.

Наприклад:

  • en_US.UTF-8 визначено в /usr/share/X11/locale/en_US.UTF-8/Compose
  • ISO 8859-1 визначено в /usr/share/X11/locale/iso8859-1/Compose

Якщо ви заглянете в них за допомогою grep, ви можете побачити, що є різниця:

$ 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

А саме:

  • Latin1 кодування: ', c=ç
  • UTF-8 кодування: ', c=ć

Журнали git (( en_US.UTF-8 ) ( iso8859-1 )) показують, що так було принаймні з 2004 року.


Різниця між US International та US Alternative International визначена в /usr/share/X11/xkb/symbols/us.

А саме, американський варіант Alternative International додає ці додаткові мертві ключі AltGr:

  • dead_macron: на AltGr-мінус
  • dead_breve: на AltGr-parenleft
  • dead_abovedot: на період AltGr
  • dead_abovering: на AltGr-0
  • dead_doubleacute: на AltGr-рівний (як цитується вже використовується)
  • dead_caron: на AltGr-менше (AltGr-shift-кома)
  • dead_cedilla: на AltGr-кома
  • dead_ogonek: на AltGr-крапці з комою
  • dead_belowdot: на AltGr-підкреслення (AltGr-shift-мінус)
  • dead_hook: на питання AltGr
  • dead_horn: на AltGr-plus (AltGr-shift-рівний)
  • dead_diaeresis: на AltGr-двокрапці (Alt-shift-крапка з комою)

Наприклад:

  • США Міжнародний: AltGr+ -=¥
  • Американський альтернативний міжнародний: AltGr+ -, a=ā

UTF-8 став кодуванням за замовчуванням:


Я б хотів, щоб за цю відповідь було надано більше одного голосу.
penguin359

Варто зауважити, що <dead_acute> <c>перестановлено на ç(замість ć), якщо ваш локальний код - pt_BR. Дивіться:/usr/share/X11/locale/pt_BR.UTF-8/Compose
Denilson Sá Maia

4

Доповнення відповіді Вітора Суза

Використання міжнародної розкладки клавіатури США з мовою ОС англійською мовою та прекрасною седіллою .

Щоб мати англійську мову з ç/Çпрекрасною роботою ( 'c-> cedilla), не потрібно змінювати файли композиції. Що потрібно зробити, це встановити LC_CTYPEлокаль, що містить це визначення:

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

Як pt_BR.UTF-8 (бразильський португальський / Português Brasileiro).

Карта клавіатури 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

Оновити локаль

# source /etc/profile

А для tty:

Встановіть правильну карту клавіш, шрифт та карту шрифту, наприклад.

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

ОП не запитували, як це виправити, але чому це було саме так. Інакше я б підтримав це.
strugee

@strugge, ти маєш рацію. Однак продовження роблять це і щодо ОП, Мікель відповів на це чудово.
Гейслан Г. Бем

Якщо хтось вважає цю відповідь корисною, встановіть її.
Гейслан Г. Бем

3

З http://disi.unitn.it/~vitorsouza/linux/ubuntu-linux-10-10-maverick-meerkat/ та http://disi.unitn.it/~vitorsouza/linux/ubuntu-linux-10- 04-люцид-рись / :

Проблема з цеділлою:

Якийсь приємний хлопець вирішив, що наголос c ("ć") є більш важливим, ніж c з cedilla ("ç"), тому поведінка за замовчуванням для натискання "+ c на міжнародних клавіатурах з" мертвими клавішами "зараз" ć ". Оскільки я бразильський, а не румунський чи щось таке, то це, безумовно, мене турбує. '+ c використовується для виведення "ç" один раз.

Щоб виправити це, відредагуйте як root файл /usr/lib/gtk-2.0/2.10.0/gtk.immodules , знайдіть цей рядок:

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

І додайте: en after: wa, так це виглядає приблизно так:

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

Редагування для Ubuntu 12.10 ( джерело ):

Файл gtk.immodules, який потрібно редагувати, знаходиться за адресою:

/usr/lib/x86_64-linux-gnu/gtk-2.0/2.10.0/gtk.immodules або /usr/lib/i386-linux-gnu/gtk-2.0/2.10.0/gtk.immodules


Редагувати для Debian Wheezy (і, напевно, інших речей gtk 3)

Файл, який потрібно відредагувати, зараз

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

У gtk20рядках тепер, gtk30але додавання :enв кінцевому підсумку точно так само.


Щоб виправити це також для програм, що не є GTK, відредагуйте як root файл /usr/share/X11/locale/en_US.UTF-8/Складіть і змініть всі екземпляри ć з ç, а також усі екземпляри Ć з Ç.

Можливо, вам доведеться час від часу повторювати одну або обидві операції, коли ви оновлюєте систему, і вона поверне файли конфігурації до їх початкового вмісту.


Щоб менеджер пакунків не заходив на зміни, ви можете запустити (як root) dpkg-divert /usr/lib/gtk-2.0/2.10.0/gtk.immodules. Потім пакетна система запише до gtk.immodules.distribцього. Щоб скасувати це, додайте --removeпрапор до тієї самої команди та скопіюйте файл .distrib над оригіналом. Для отримання додаткової інформації man dpkg-divert.
Джандер

в ubuntu 12.10 файл має інше розташування: /usr/lib/x86_64-linux-gnu/gtk-2.0/2.10.0/gtk.immodules або /usr/lib/i386-linux-gnu/gtk-2.0/ 2.10.0 / gtk.immodules

0

Це є доповненням до відповіді Вітора Соузи .

У Xfce Quantal (Xubuntu 12.10, Mint 14 Xfce) не вдалося вирішити це методами, які вже були згадані (див. Нижче). Те, що працювало, було встановлення ibusпакету та його залежностей.

( Джерело - більш точно тут .)


Старіше рішення не працювало для мене: у Ubuntu 12.10 файл gtk.immodulesмає інше розташування:

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

або

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

(Моє джерело для цього тут .)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.