четверг, 6 января 2011 г.

Ввод «типографских» символов с клавиатуры

На эту тему в интернетах написано немало. Я лишь хочу в этом посте собрать и обобщить некоторую часть информации, дабы рекомендовать друзьям – новичкам в Linux. Итак, этот пост для тех, кто работает с текстом в Linux, дабы они поняли свое счастье.

Вообще говоря, ввод каких бы то ни было символов с клавиатуры можно организовать разными путями, некоторые из которых (например, определение собственной раскладки) доступны и в оффтопичной системе от MS. Однако, удобных способов существенно меньше. Собственно, я буду говорить о двух, простых как в использовании, так и в настройке: «третий уровень» и Compose Key.


Содержание


Общие принципы

«Третий уровень»

Это как бы дополнительный [Shift] — добавочный ряд символов на клавишах: нажимаете назначенную для этого клавишу вместе с какой-то алфавитно-цифровой и получаете специальный символ. Руки очень быстро «запоминают» такое сочетание. Использовать не сложнее, чем [Shift] оригинальный, разве что у того клавиши широкие на большинстве клавиатур... При этом можно зажать и назначенную нами клавишу третьего уровня (в дальнейшем — [L3]) и [Shift], получив тем самым «четвертый уровень»... Но вряд ли это особо понадобится.

Пример: длинное тире («—») вводится как [L3] + [-].

Compose Key

Тут принцип другой — нажимаете (и отпускаете) назначенную для этого клавишу, затем нажимаете последовательно несколько (две–три обычно) алфавитно-цифровых клавиш, чтобы получить их «сочетание». Например, значок копирайта («©») можно ввести так: [Compose] → [o] → [c] (а можно — [Compose] → [c] → [o]). Здесь я стрелочками подчеркиваю, что клавиши нажимаются последовательно, а не одновременно. Кстати, сами стрелочки я ввожу посредством [Compose] → [-] → [>].

Эти два способа совершенно друг другу не мешают. Лично я их использую оба, применяя Compose Key для тех символов, которые отсутствуют в наборе «третьего уровня».


Настройка

KDE 4

У меня стоит версия KDE 4.5.4, в других версиях названия каких-то пунктов могут отличаться, но вряд ли существенно.

Итак, открываем «Параметры системы» и находим там раздел «Оборудование» → «Устройства ввода» → «Клавиатура». Открываем вкладку «Дополнительно». Если попалась непереведенная версия, по-английски это будет «System Settings» → «Hardware» → «Input Devices» → «Keyboard» → «Advanced». Там следует отметить (если еще не отмечена) галочку «Настроить параметры клавиатуры» («Configure keyboard options»), после чего станут доступны собственно настройки. Нам понадобятся следующие:

  • «Клавиша для выбора 3-го ряда» («Key to choose 3rd level») — нужно отметить один из вариантов. Лично я использую клавиши [Win] (те, на которых нарисован флажок MS), поскольку: а) их две, а мы помним, что настраиваем как бы дополнительный [Shift] — тоже парный; б) по-умолчанию никакой полезной нагрузки в Linux они не несут, соответственно, ничего нужного мы таким образом не испортим. В общем, мой выбор — «Любая клавиша Win» («Any Win key»).
  • «Разные параметры совместимости» → «Включить дополнительные типографские символы» («Miscellaneous compatibility options» → «Enable extra typographic characters»). Этим мы собственно «заполняем» подключенный предыдущим пунктом «третий уровень».
  • «Клавиша пробела используется для ввода символа неразрывного пробела» → «Символ неразрывного пробела в третьем ряду, символ тонкого неразрывного пробела в четвёртом ряду» («Using space key to input non-breakable space character» → «Non-breakable space character at third level, thin non-breakable space character at fourth level»). Пробел, на котором запрещен разрыв строки принято использовать, например, после инициалов, а также перед тире. Установка данной опции позволит вводить его быстро и логично. Что же до тонкого неразрывного пробела... Использовать его не обязательно, однако по-хорошему для инициалов должен использоваться именно он. Сравним: «Ф. М. Достоевский» и «Ф. М. Достоевский» (не говоря уж об кошмарном, но часто используемом, варианте «Ф.М. Достоевский»). Еще его можно использовать между запятой/точкой и тире. Правда, эффект сильно зависит от шрифта, причем в шрифте может вообще не оказаться такого символа и мы получим на его месте знак вопроса или квадратик... Хотя в последнее время все шрифты (с которыми мне доводилось иметь дело) содержат подобные символы.
  • «Положение клавиши Compose» («Compose key position»). Лично я в качестве [Compose] использую [Caps Lock], поскольку ее штатное действие приносит исключительно вред. Если же вы не можете от нее отказаться, можно выбрать столь же бесполезную (однако, безвредную) [Scroll Lock], хотя на мой взгляд, ее расположение не столь удобно.

Итого — нам понадобилось поставить четыре галочки.

Gnome

В Gnome есть (должен быть) подобный модуль центра управления для настройки клавиатуры. Ввиду эстетического неприятия, сейчас Gnome на моем компьютере отсутствует, а ставить его только ради того, чтобы посмотреть, как там настраивается раскладка клавиатуры — это уж слишком. Ищите по ключевым словам «третий уровень», «типографские символы» и «Compose Key»...

Xfce и все-все-все...

Почему «и все-все-все...»? Потому что Xfce не умеет настраивать подобные средства — его возможности настройки клавиатуры сильно ограничены... Поэтому сейчас мы рассмотрим универсальный для всех иксов способ настройки — через конфиги. Способ именно что универсальный — у меня и KDE работает с заданными таким образом системными настройками, однако для его использования нужно иметь доступ от root'а, да и конфиги править — это вам не галочки мышкой щелкать — это гораздо проще.

Тут есть только одна загвоздка — расположение нужных настроек зависит от версии сервера иксов...

Как это выглядит у меня: отдельный файл /etc/X11/xorg.conf.d/20-keyboard.conf содержит следующее:

Section "InputClass"
    Identifier "Keyboard Defaults"
    MatchIsKeyboard "yes"
    Option      "XkbLayout" "us,ru"
    Option      "XkbOptions" "grp:alt_shift_toggle,grp_led:scroll,compose:caps,lv3:win_switch,nbsp:level3n,misc:typo"
EndSection

Эту секцию можно и просто вписать в файл /etc/X11/xorg.conf. Однако есть вероятность того, что это не сработает — на старых версиях Xorg, насколько я помню, устройства по классам не фильтровались... В общем, если не получилось так, то нужно отыскать в /etc/X11/xorg.conf строку Option "XkbOptions" и изменить ее значение на вышеуказанное. Если же xorg-server работает с клавиатурой через HAL, то ему следует скормить файл /etc/hal/fdi/policy/10-x11-input.fdi, о котором я уже писал когда-то, добавив туда «lv3:win_switch,nbsp:level3n,misc:typo» в опции.

Кроме указания всех этих опций так или иначе в параметрах X-сервера, придется их еще и активировать программой setxkbmap (без каких-либо ключей или параметров). В Xfce ее просто нужно задать в автозапуск.


Использование

Собственно, как этим пользоваться, я написал в самом начале. Ниже подробности — как ввести наиболее часто нужные символы.

«Третий уровень»

 Клавиши  Символ 
[L3] + [1] ¹
[L3] + [2] ²
[L3] + [3] ³
[L3] + [5] ‰ (промилле)
[L3] + [8] •
[L3] + [-] — (длинное тире)
[L3] + [=] ≠
[L3] + [e] €
[L3] + [r] ®
[L3] + [t] ™
[L3] + [y] ¥
[L3] + [p] ´
[L3] + [a] ́
[L3] + [s] §
[L3] + [d] °
[L3] + [f] £
[L3] + [j] „
[L3] + [k] “ (русская закрывающая, она же — английская открывающая...)
[L3] + [l] ” (английская закрывающая)
[L3] + [;] ‘
[L3] + [']
[L3] + [x] ×
[L3] + [c] ©
[L3] + [.] («б») «
[L3] + [.] («ю») »
[L3] + [/]
[L3] + [Shift] + [2] ½
[L3] + [Shift] + [3]
[L3] + [Shift] + [4] ¼
[L3] + [Shift] + [8]
[L3] + [Shift] + [=] ­±
[L3] + [Shift] + [p] ˝
[L3] + [Shift] + [d] ÷
[L3] + [Shift] + [j]
[L3] + [Shift] + [k]
[L3] + [Shift] + [l]
[L3] + [Shift] + [;]
[L3] + [Shift] + [x]
[L3] + [Shift] + [c] ¢

Compose Key

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

Клавиши Символ
[Compose] → [-] → [-] → [.]– (среднее тире)
[Compose] → [-] → [>]
[Compose] → [<] → [-]
[Compose] → [^] → [1]¹ (верхний индекс — работает для всех цифр, скобок, плюса, минуса и равно)
[Compose] → [_] → [1]₁ (нижний индекс — аналогично)
[Compose] → [(] → [1] → [)]① (для всех цифр)
[Compose] → ["] → [a]ä (для всех гласных латиницы)
[Compose] → ['] → [a]á (аналогично предыдущему)
[Compose] → [s] → [s]ß
[Compose] → [#] → [b]
[Compose] → [#] → [f]
[Compose] → [#] → [#]
[Compose] → [P] → [P]
[Compose] → [a] → [e]æ (для заглавных тож)
[Compose] → [:] → [)]
[Compose] → [:] → [(]
[Compose] → [<] → [3]
[Compose] → [N] → [o]
[Compose] → [o] → [x]¤
[Compose] → [s] → [m]
[Compose] → [<] → [=]
[Compose] → [>] → [=]
[Compose] → [:] → [-]÷
[Compose] → [?] → [?]¿
[Compose] → [!] → [!]¡
[Compose] → [?] → [!]

Подытожим

Возможно, в последовательном изложении все это выглядит несколько громоздко. Однако, пользоваться — легко и удобно — скажем, нормальные «типографские» кавычки ставятся с теми же усилиями ([L3] + [,]), что и "программистские" ([Shift] + [2]), а выглядят в тексте значительно уместней.

Перечень символов, приведенный в этом посте далеко не полный. Во-первых, полный спискок текущих комбинаций для Compose Key можно посмотреть в файле /usr/share/X11/locale/en_US.UTF-8/Compose. Во-вторых, и Compose и «третий уровень» настраивается на любые символы в принципе, однако этот вопрос уже выходит за рамки данного поста, равно как и прочие способы ввода символов, такие как определение собственной раскладки, ввод по номерам Unicode и т.д...

14 комментариев:

  1. Хм, почему-то у меня в /usr/share/X11/xkb/rules есть только списки раскладок и возможных параметров для XkbOptions, а level3-таблицы найти нигде не могу.

    ОтветитьУдалить
  2. Да, моя ошибка. Сейчас исправлю.

    ОтветитьУдалить
  3. Спасибо. Отличная статья!

    ОтветитьУдалить
  4. Всегда пожалуйста, спасибо за отзыв.

    ОтветитьУдалить
  5. Анонимный5 марта 2012 г., 0:17

    Просто чудесная статья, а главное единственная для пользователей XUBUNTU с оболочкой ХFCE, и других, других, других... Спасибо!

    ОтветитьУдалить
  6. Второй раз уже статьёй пользуюсь. Первый раз поставил - понравилось так, что без 3l и композита теперь жить не могу. А тут вот железо подохло, система вся по новой. Полез в тырнет посмотреть, как настроить заново - а там ничего нового, опять эта статья самая адекватная. Спасибо большое ☺

    ОтветитьУдалить
  7. Напишите, пожалуйста, как прописать что-либо в автозапуск для xfce. Также, хотелось бы видеть, как прописать клавишу Alt-Gr для выбора 3-го уровня.

    ОтветитьУдалить
  8. здравствуйте
    подскажите, пожалуйста, как включить типографику в xfce 4.10 (xubuntu 12.10).
    файлов /etc/X11/xorg.conf.d/20-keyboard.conf или /etc/X11/xorg.conf нет, и их создание ничего не дает.

    ОтветитьУдалить
    Ответы
    1. Каталог /etc/hal/fdi/ есть? Если есть:
      «Если же xorg-server работает с клавиатурой через HAL, то ему следует скормить файл /etc/hal/fdi/policy/10-x11-input.fdi, о котором я уже писал когда-то, добавив туда «lv3:win_switch,nbsp:level3n,misc:typo» в опции»

      Удалить
  9. каталога /etc/hal/fdi/ тоже нет

    ОтветитьУдалить