Опять о раскладке Бирмана, да и переключении раскладок вообще в грядущей 8.10

    Disclaimer


    Всё нижеописанное относится к Ubuntu 8.10 (interpid), хотя скорее всего затронет и будущие стабильные версии.

    Обратите внимимание, что некоторые описанные ниже шаги могут привести к непредсказуемым :) последствиям.

    Предистория


    Некоторое время назад o4kapuk описывал в статье И снова о раскладке Бирмана как «Добиться поддержки „типографической” функциональности средствами, максимально приближенными к штатным.»

    У меня, как дома, так и на работе это решение приводило к следующим проблемам:
    1. После перезагрузки раскладка не переключалась. Эту проблему каждый раз приходилось решать вызывая апплет конфигурации и изменение какого-нибудь параметра в «Дополнительных параметрах».
    2. После некоторых обновлений раскладка ломалась совсем. Приходилось переустанавливать нужные файлы
    3. После обновления на 8.10 метод перестал работать окончательно.


    Кто виноват, и что делать?


    Шаг 1

    Начну с того, что с некоторого времени вариант winkeys стал «вариантом по умолчанию» и в файле
    /etc/X11/xkb в раскладке ru не упоминается. Не смотря на это повторим 3-ий шаг из упомянутой статьи: добавим вариант winkeys_typo:

          <layout>
          <configItem>
            <name>ru</name>
            <shortDescription>Rus</shortDescription>
            <description>Russia</description>
          </configItem>
          <variantList>
            <variant>
              <configItem>
                <name>winkeys_typo</name>
                <description>Winkeys + Typography</description>
              </configItem>
            </variant>
            <variant>
    


    Шаг 2

    И вот тут нас ждёт сюрприз: теперь файл /etc/X11/xkb/symbols/ru не является наиболее подходящим местом для добавления варианта winkeys_typo. Откроем файл /usr/share/X11/xkb/symbols/ru и добавим в него уже привычный код:
    partial alphanumeric_keys
    xkb_symbols "winkeys_typo" {
    include "ru(winkeys)"
    
    name[Group1]= "Russia — Typography";
    
    key.type[group1]="FOUR_LEVEL";
    
    key <TLDE> { [ Cyrillic_io, Cyrillic_YO, acute, approxeq ] };
    key <AE01> { [ 1, exclam, onesuperior, onesuperior ] };
    key <AE02> { [ 2, quotedbl, twosuperior, twosuperior ] };
    key <AE03> { [ 3, numerosign, threesuperior, threesuperior ] };
    key <AE04> { [ 4, semicolon, section, section ] };
    key <AE05> { [ 5, percent, 0x01002030, 0x01002030 ] };
    key <AE11> { [ minus, underscore, emdash, hyphen ] };
    key <AE12> { [ equal, plus, notequal, plusminus ] };
    key <AD01> { [Cyrillic_shorti, Cyrillic_SHORTI, q, onequarter ] };
    key <AD03> { [ Cyrillic_u, Cyrillic_U, EuroSign, oneeighth ] };
    key <AD04> { [ Cyrillic_ka, Cyrillic_KA, registered, R ] };
    key <AD05> { [ Cyrillic_ie, Cyrillic_IE, trademark, onethird ] };
    key <AD09> { [ Cyrillic_shcha, Cyrillic_SHCHA, masculine, O ] };
    key <AC01> { [ Cyrillic_ef, Cyrillic_EF, approxeq, A ] };
    key <AC02> { [ Cyrillic_yeru, Cyrillic_YERU, section, S ] };
    key <AC03> { [ Cyrillic_ve, Cyrillic_VE, degree, D ] };
    key <AC04> { [ Cyrillic_a, Cyrillic_A, sterling, F ] };
    key <AC06> { [ Cyrillic_er, Cyrillic_ER, h, onehalf ] };
    key <AC07> { [ Cyrillic_o, Cyrillic_O, doublelowquotemark, J ] };
    key <AC08> { [ Cyrillic_el, Cyrillic_EL, leftdoublequotemark, leftsinglequotemark ] };
    key <AC09> { [ Cyrillic_de, Cyrillic_DE, rightdoublequotemark, rightsinglequotemark ] };
    key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE, leftsinglequotemark, seconds ] };
    key <AC11> { [ Cyrillic_e, Cyrillic_E, rightsinglequotemark, minutes ] };
    key <AB02> { [ Cyrillic_che, Cyrillic_CHE, multiply, 0x010022C5 ] };
    key <AB03> { [ Cyrillic_es, Cyrillic_ES, copyright, copyright ] };
    key <AB08> { [ Cyrillic_be, Cyrillic_BE, guillemotleft, doublelowquotemark ] };
    key <AB09> { [ Cyrillic_yu, Cyrillic_YU, guillemotright, rightdoublequotemark ] };
    key <AB10> { [ period, comma, ellipsis, comma ] };
    key <SPCE> { [ space, space, nobreakspace, nobreakspace ] };
    
    include "level3(ralt_switch)"
    };
    

    Шаг 3

    Раскладка появилась в списке и всё заработало? Чтож, вам повезло… а мне вот повезло не очень: раскладки в списке не оказалось.
    В поисках решения, я наткнулся на вот такое обсуждение.
    Попробовав разные варианты я остановился на следующем:

    Шаг 3.1

    Редактируем файл /etc/default/console-setup:

    XKBMODEL="logimel"
    XKBLAYOUT="us,ru"
    XKBVARIANT=",winkeys_typo"
    


    Обратите внимание на XKBMODEL=«logimel» — это модель вашей клавиатуры, у меня не работали некоторые дополнительные клавиши, пока я не остановился на этой. Кстати, возможно, понять какая у вас, вам поможет файл /usr/share/X11/xkb/rules/base.lst

    Шаг 3.2

    sudo dpkg-reconfigure console-setup :)
    Тут можно просто понажимать enter, но в случае, если он не нажмётся — нажмите сначала tab :)
    В результате получите кучу сообщений вида «WARNING: Undefined kernel key code for xxx» — не обращайте внимания. В конце должно быть сообщение «[ OK ] update-initramfs: Generating /boot/initrd.img-2.6.27-3-generic»

    Шаг 4

    А теперь решим старую проблему неработоспособности переключения при перезагрузке — для этого очистим файл конфигурации клавиатуры гнома: sudo gedit ~/.gconf/desktop/gnome/peripherals/keyboard/kbd/%gconf.xml -> ctrl+a -> ctrl+s :)

    Шаг 5

    Да, как это не ужасно звучит — перезагрузимся и всё должно работать. Если нет… проверяем всё ещё раз.

    Заключение и предложение



    Минусами данного метода, как и предыдущего, являются проблемы с совместимостью с будущими версиями ubuntu, однако лучше потратить час-другой на решение этих проблем и получить прекрасно работающую типографскую раскладку, чем наблюдать то, что сделал Хабр с кавычками тут.

    С другой стороны, почему бы не включить данный вариант в базовую поставку? Это я обращаюсь к разработчикам, которым не составит труда внести изменения в дистрибутив.
    Поделиться публикацией
    Похожие публикации
    Реклама помогает поддерживать и развивать наши сервисы

    Подробнее
    Реклама
    Комментарии 12
    • +2
      Тьфу, зараза! Только вчера эту типографскую раскладку настроил как надо (плюс допилил немного под себя). А в Интрепиде, выходит, придется всё заново ковырять. Блин!
      • 0
        Ковырять придётся не только это… например дрова на видео. Но в целом, мне нравится как развивается дистрибутив. Раньше при любой более менее сильной и продолжительной нагрузке на видеокарту, особенно с драйвером ati, система либо зависала насмерть, либо падали X. Сейчас с драйвером radeon можно даже в Alien Arena побегать.

        Кстати, «допилы под себя» настоятельно рекомендую сохранить в надёжное место, мало ли что произойдёт при обновлении.
      • 0
        Печально, что мне придеться снова доставать напильник… может, не апгрейдиться ((
        • 0
          пока, наверное, не стоит.
        • 0
          Раскладка Бирмана удобна, но некоторые неудобства доставляет даже в Windows. Хотя пользы от нее все равно больше :)
          • +2
            а не проще ли вам написать разработчикам проекта xkb и пропросить включись свою раскладку? с украинской так и сделали, теперь никакие обновления не страшны ;)
            • +1
              Линукс действительно позволяет провернуть и напелить что угодно, но почему порой всё это через такие дебри :(
            • 0
              Ну вот, сегодня после обновления 8.04 снова все полетело.

              Такое ощущение, что XKB разрабатывают демократы и республиканцы. Ну ничего, скоро все утрясется… :-)
              • +1
                Не работает чего-то :(
                Сделал все пунктам, но в $ sudo dpkg-reconfigure console-setup нет выбора раскладки Russian -> Russia — Typography.
                Добавил в В /usr/share/X11/xkb/rules/base.lst
                winkeys_typo ru: Russia — Typography
                опыта общения с убунту мало, но сделал предположение, что из обновленного файла /usr/share/X11/xkb/rules/base.xml не считывается новый вариант
                winkeys_typo
                Winkeys + Typography
                • 0
                  Благодаря автору топика все-таки разобрались. Точнее сделали, а разобраться тут можно с трудом. По инструкции приведенной в топике удалил ~/.gconf/desktop/gnome/peripherals/keyboard/kbd/%gconf.xml и перезагрузился. ПРимечательно что с первого раза не получилось. Зато получилось со второго! Спасибо автору! — большое лично спасибо за продолжение моей «типографской жизни» и под Убунтой ;)
                • НЛО прилетело и опубликовало эту надпись здесь

                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.