Чем отличается международная раскладка клавиатуры США в Debian?


11

Редактировать : я понял, что «проблема» была не только в Ubuntu, но и в самом Debian, и Ubuntu просто унаследовал его, поэтому я перенес это из Ask Ubuntu


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

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

Однако несколько лет назад, когда я установил Ubuntu, я заметил, что cedilla больше не печатается (ç или Ç). Это комбинация следующих клавиш: '+ 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.

А именно, раскладка US Alternative International добавляет эти дополнительные мертвые клавиши AltGr:

  • dead_macron: на AltGr-минус
  • dead_breve: на AltGr-паренлефт
  • dead_abovedot: на AltGr-периоде
  • dead_abovering: на AltGr-0
  • dead_doubleacute: по AltGr-равно (так как quotedbl уже используется)
  • dead_caron: на AltGr-менее (AltGr-shift-запятая)
  • dead_cedilla: на запятой AltGr
  • dead_ogonek: на AltGr-точка с запятой
  • dead_belowdot: на AltGr-подчеркивание (AltGr-shift-minus)
  • dead_hook: по AltGr-вопросу
  • dead_horn: на AltGr-plus (AltGr-shift-equal)
  • dead_diaeresis: на AltGr-двоеточии (Alt-shift-точка с запятой)

Например:

  • Международный США: AltGr+ -=¥
  • Альтернативный Интернационал США: AltGr+ -, a=ā

UTF-8 стала кодировкой по умолчанию:

  • Red Hat 8.0 "Психея", выпущенный 30 сентября 2002 ссылка
  • Ubuntu 5,04 «Седой», опубликованном 8 апреля 2005 ссылка
  • Debian 4.0 «etch», выпущенный как «стабильный» 8 апреля 2007 г., ссылка 1 ссылка 2

Я хотел бы иметь более одного голоса, чтобы дать за этот ответ.
penguin359

Стоит отметить, что <dead_acute> <c>переназначается ç(вместо ć), если ваша локаль pt_BR. Смотрите:/usr/share/X11/locale/pt_BR.UTF-8/Compose
Денилсон Са Майя

4

Дополняя ответ Vítor Souza

Использование американской международной раскладки клавиатуры с OS Language на английском языке и красивым cedilla .

Для того, чтобы английский язык ç/Çработал красиво ( 'c-> cedilla), нет необходимости изменять файлы композиции. Что нужно сделать, это установить LC_CTYPEс локалью, содержащей это определение:

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

Например, pt_BR.UTF-8 (бразильский португальский / португальский Бразилия).

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

ОП не спрашивала, как это исправить, но почему так было в первую очередь. В противном случае я бы проголосовал за это.
стружка

@strugge, ты прав. Тем не менее, сиквелы делают это и относительно OP, Mikel ответил на это приятно.
Гейслан Г. Бем

Если кто-то посчитает этот ответ полезным, пожалуйста, установите его.
Гейслан Г. Бем

3

От http://disi.unitn.it/~vitorsouza/linux/ubuntu-linux-10-10-maverick-meerkat/ и http://disi.unitn.it/~vitorsouza/linux/ubuntu-linux-10- 04-lucid-lynx / :

Проблема с Cedilla:

Какой-то приятель решил, что ударение 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 после: 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/Compose и измените все экземпляры ć с помощью ç, а все экземпляры Ć с помощью Ç.

Возможно, вам придется время от времени повторять одну или обе операции, когда вы обновляете свою систему, и она возвращает файлы конфигурации к их исходному содержимому.


Чтобы менеджер пакетов не наступил на ваши изменения, вы можете запустить (с правами 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.