Проблема трех раскладок в Linux

    Имея одновременно три раскладки (английскую, русскую, украинскую) всегда в них путался, так как отличить их не глядя на индикатор не просто, а при потребности украинской раскладки, добавлять её и убирать каждый раз неудобно. Решается очень просто, расширением русской раскладки четырьмя дополнительными украинскими буквами (є, ї, і, ґ) и апострофом (’). Способ не претендует на уникальность, но здесь никто вроде бы еще не описывал. Для начала в настройках раскладки нужно выбрать клавишу для выбора клавиш третьего уровня:

    Конфиги раскладок (в ubuntu, в других дистрибутивах путь может отличаться) лежат в /usr/share/X11/xkb/symbols/, в файлах ru, ua, us,
    в них описаны соответствия клавиш символам. Состоит из секций которые друг друга наследуют, секция common базовая, так что при изменении в ней, изменятся и все дочерние. Например описание буквы «э»:

    key <AC11> { [ Cyrillic_e, Cyrillic_E ] };

    В квадратных скобках первый параметр отвечает за сам символ, второй за символ + shift, третий за клавиша третьего уровня + символ, четвертый за клавиша третьего уровня + shift + символ. В данном случае есть только два параметра отвечающие за «э» и «Э», если написать что-то вроде:

    key <AC11> { [ Cyrillic_e, Cyrillic_E, Ukrainian_ie, Ukrainian_IE] };

    то получим «э», «Э» и с Alt-ом "є" и "Є".

    Немного покопавшись в украинской раскладке находим 5 нужных знаков и редактируем русскую раскладку
    sudo vim /usr/share/X11/xkb/symbols/ru
    а именно в секции:

    key <AD12> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN, Ukrainian_yi, Ukrainian_YI ] };
    key <AC02> { [ Cyrillic_yeru, Cyrillic_YERU, Ukrainian_i, Ukrainian_I ] };
    key <AC11> { [ Cyrillic_e, Cyrillic_E, Ukrainian_ie, Ukrainian_IE ] };
    key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE, Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] };
    key <TLDE> { [ Cyrillic_io, Cyrillic_IO, apostrophe ] };

    Теперь для использования украинских букв достаточно при нажатом правом Alt-е нажать соответствующую клавишу:
    і = Alt + ы
    ї = Alt + ъ
    ` = Alt + ё
    є = Alt + э

    На всякий случай мой /usr/share/X11/xkb/symbols/ru.

    «Данный материал написан для «Первого конкурса русскоязычных статей для ОС Ubuntu 2011 года» (konkurs.ubuntu.ru)».
    Share post

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 91

      +4
      Спасибо. Подходит. А то этот украинский язык постоянно мешается а нужен редко. И постоянно добавлять/убивать раскладку тоже не классно.
        +1
        Уши идеи этой статьи растут из besisland.livejournal.com/179057.html
          +2
          Скорее эти уши растут из одной головы
            +1
            Забавно получилось.
          +1
          А как на счет переключения языка при наборе в офисе? Он же тогда орфографию не переключает и нужно ручками будет править!
            0
            Пишите правильно, и ничего не нужно будет править.
              0
              Совет дельный, но тогда зачем компьютер, если можно писать каллиграфическим почерком красиво и без ошибок сразу на бумаге и складывать все по папкам в ящики стола или запечатывать в конверты для отправки и класть в лоток «исходящие», а также вести карточки каталога и журналы входящих/исходящих? Все будет просто и понятно.
                0
                Понимаете ли, всё дело в том, что вам приходится выбирать. Или-или. Или не полениться и просмотреть, есть ли ошибки в написанном тексте (ведь спеллчекер выделит текст с украинскими буквами как ошибочный в любом случае), и исправить их, или доверить это дело спеллчекеру, но гладить мозг переключением раскладок. Се ля ви!

                Между прочим, я считаю, что исправить опечатку, о которой доложил спеллчекер руками^W клавиатурой легче, чем мышью. Но на вкус и цвет, как говорится, товарищей нет.

                P.S. А насчёт бумаги скажу вот что. Когда на первое место выходит вопрос защиты информации, всё происходит именно так, как вы сказали: её записывают каллиграфическим почерком на бумаге, складывают в конверты, запечатывают, подписывают и отправляют на хранение. И все довольны.
          0
          Очень неудобно набирать с альтом, особенно если нужно написать больше нескольких предложений. Не знаю можно ли так в Ubuntu, но в Windows делал так: добавлялем две русские раскладки, вторую модифицируем под украинскую. В результате по alt+shift переключались англ. и рус., а чтобы писать на украинском, нужно было включить русскую раскладку и нажать ctrl+shift.
          В Mac OS такой проблемы нет — система переключается только между двумя последними раскладками, остальные доступны, если подержать горячие клавиши.
            0
            К тому же в Mac OS изначально доступно большее количество символов посредством сочетания нажатия клавиши Option + нужную клавишу.
            0
            А где посмотреть список всех этих «Cyrillic_hardsign» и т.д.?
              0
              Честно говоря догадывался по написанию
                +3
                в /usr/share/X11/locale/en_US.UTF-8/Compose
                  0
                  О, спасибо.
                    0
                    О, спасибо.
                      0
                      Кстати, в том же файле описаны встроенные последовательности клавиш для украинских букв:

                      : "ѓ"
                      : "ѓ"
                      : "ѓ"

                      Правда, с набором dead keys и Compose (Multi_key) в раскладках, отличных от en_US, есть проблемы.
                        +1
                        Блин… я имел в виду

                        dead_acute + Cyrillic_ghe: "ѓ"
                        Multi_key + acute + Cyrillic_ghe: "ѓ"
                        Multi_key + apostrophe + Cyrillic_ghe: "ѓ"
                    0
                    Для тех, кто использует русскую и украинскую раскладки метод вполне подходит.

                    Я в свое время столкнулся с необходимостью работы с 4 разными раскладками в Ubuntu. Выражаясь дипломатичным языком, не с первого раза, но получилось все настроить. В современных версиях настраивать смену раскладок и методы ввода для восточных языков стало гораздо проще, но, к сожалению, в этом направлении еще не все возможные улучшения реализованы.
                      0
                      У меня в Ubuntu переключение настроено так: клавиша Win — En, клавиша Menu — Ru. О преимуществах такого способа уже писали на Хабре. В данной ситуации можно найти ещё одну кнопку для украинской.
                        0
                        Найти-то можно (lwin + rwin + menu например), но к сожалению такую комбинацию включений (три включателя, причем все три — метаклавиши) построить можно только написав свой нетривиальный кусок раскладки.
                        Или с того момента, как я это пробовал что-то поменялось?
                          +1
                          Ещё caps остался =)
                            +1
                            caps выполняет почетную функцию второго левого контрола :)
                              +1
                              Я не спорю, просто интересуюсь.
                              Зачем?
                          +1
                          +1. С осени почти так, только win у меня для более вкусных целей. scrollled + menu. Никакого украинского, але, якщо потрiбно могу заюзати англiйску лiтеру `i`
                            +1
                            А як щодо ї, є та ґ?
                              +1
                              та навiщо вони потрiбнi :D.

                              Шутки-шутками, а с украинскими документами (во всяких офисах и прочем) не работаю, так что обхожусь :)
                          +1
                          Использую три раскладки (En-Ru-Uk) как в винде (работа), так и в Убунте (дома) и не парюсь. Видимо, привычка выработалась в голове держать активную раскладку. Но если кому-то так удобнее, то пуркуа бы и не па? Есть же многие, кто на «Двораке» печатает :)
                            +2
                            В винде можно чудесным образом настроить нужные раскладки на комбинации Ctrl+Shift+1/2/3 и т.д. а по альтшифт и контролшифт вообще выключить переключалку, поскольку выбешивает при каждом использовании хоткеев в том же фотошопе что меняется раскладка.
                              0
                              Чудесным образом не ощущаю в этом потребности ;)
                                0
                                Ну вопрос удобства и привычки… Я нажимаю нужныые кнопки и на 100% уверен какая раскладка у меня включена. Вы помните все раскладки во всех программах?..
                            +2
                            есть наоборот, уже готовая украинская раскладка с русскими ы, э, ъ, ё, которые находятся на 3 уровне.
                              0
                              Это украинская раскладка по-умолчанию в Ubuntu (там есть разные украинские раскладки), если я не ошибаюсь. Называется Ukrainian unicode. Как настроил не нарадуюсь никак. Там ещё и белорусские буквы есть, то есть, получается украинско-русско-белорусская раскладка. Кроме того, можно по-человечски вводить различные сиволы, типа: «», —, ₴, ≠,±, ©, ™, • и т.д.
                              Вот эту ссылку про неё уже неоднократно тут приводили: dict.linux.org.ua/other/ua_layout_uni.html
                                0
                                Если бы по дефолту присутствовала раскладка, где русские буквы — главные, то было бы совсем хорошо.
                                  0
                                  А где найти этот Ukrainian unicode? Подскажите пожалуйста, я уж обыскался…

                                  OS: ubuntu 11.04
                                    0
                                    Вы говорите «по-умолчанию»… Пробую набирать ы, э, ъ через кнопку для 3 уровня, но не могу добиться украинских букв…
                                      0
                                      Через правый Alt набирается. :)
                                        0
                                        Спасибо! Помогло! Я кнопкой для 3 уровня сделал Caps Lock, так оно почему-то не работало. Теперь все отлично!
                                          0
                                          Я советую на кнопку Caps lock вешать переключение раскладки. Получается очень удобно. При этом функция переключения на Caps lock должна перенестись на Shift+Caps lock. Попробуйте, может и вам понравится. :)
                                            0
                                            Функцию капслока можно просто забыть, она не нужна в 99.9% случаев.
                                              0
                                              Конечно. Поэтому и вешаю туда переключение раскладки. :) И другим советую.
                                              0
                                              Ага, уже повешал! Попробую. Shift+Caps lock не работает, но не беда. И так не использую: все что надо в верхнем регистре (целые слова и т. д.) с Shift'ом набираю — привык уже.
                                                0
                                                Да, достаточно удобно с теми настройками которые советал. Немного непривычно, но клас!

                                                Отдельное спасибо за Shift + Caps Lock. Где-то нечаянно нажал и включился Caps Lock и вспомнил что вы говорили об этом.

                                                Спасибо!
                                      0
                                      Зачем править руками конфиги, если всё можно сделать из оболочки?
                                      softwaremaniacs.org/blog/2010/10/29/ubuntu-typography-keyboard/
                                        0
                                        Это я к тому, что я ничего руками не правил, а работает у меня именно так как описано.
                                          0
                                          Т.е. «ы» без альта набирается?
                                            0
                                            А, прошу прощения, у меня всё с точностью до наоборот — украинская по-умолчанию, русские буквы — через третий уровень.
                                        –31
                                        Красноглазые яйцеголовы, не легче уже поставить нормальную систему и не париться с написанием костылей под недосистему
                                          +14
                                          Под Windows это сложнее сделать
                                            0
                                            не сложнее
                                            примерно также правится раскладка и вуаля
                                            естесно с использование проги редактора раскладок — в винде файл бинарный.
                                            в свое время иименно через AltGr и делал русско-украинскую
                                              +1
                                              Компилировать раскладку проще, да.
                                            +9
                                            А что имеется в виду «нормальная» система? А то у меня возникает чувство, что Вы имели в виду «перпендикулярная», так как информативности не видно ни капельки.
                                              –11
                                              Красноглазым никогда не понять что такое нормальная система, так как у них никогда такой не будет. Ваш удел сидеть за линуксоподобным говном написанным на коленке в вонючем подвале. Может пора одуматься уже и перейти на виндовс, в котором никогда не возникнет надобности выдумывать всякую фигню чтобы тройной раскладкой пользоваться удобно было. Хотя у красноглазых — это норма когда что то не работает или работает коряво и нужно писать и писать очередные костыли чтобы хоть как то придать куску какашки хоть какое то удобство в использовании. Пока пользователи виндовса гуляют и развлекаются, линуксятники пересобирают ядро и пишут гигабайты поноса.
                                                +8
                                                Ты бы хоть троллил как-то поизящней. А то в которой теме подряд практически одна и та же копипаста.
                                                  +5
                                                  Согласен, нужно к комиентам не один "±" давать, а раздельно: техника, артистизм, сложность элемента :)
                                            +2
                                            Тоже самое только наоборот — через альт набираются русские:
                                            Цитата из dict.linux.org.ua/other/ua_layout_uni.html:
                                            Інструкція по встановленню для X.org:

                                            Розкладку Ukrainian Unicode включено в сучасних версіях X.org, тому все що треба — це її увімкнути:
                                            Вибрати розкладку ua і варіант unicode
                                            Вибрати клавішу перемикання третього рівня (напр., командою setxkbmap us,ua -variant ,unicode -option lv3:ralt_switch або в налаштування перемикача).
                                            Тепер символи третього рівня можна набирати натиснувши і утримуючи праву клавішу Alt, напр., символ гривні можна ввести за допомогою RAlt+4
                                              +3
                                              Тоже раньше пользовался Английской + Украинской (unicode),
                                              но на практике, чаще пишу на русском, поэтому постоянно держать правый альт не очень удобно.

                                              Редактировать /usr/share/X11/xkb/symbols/ua тоже не хотелось.

                                              Выбрал для себя более простой вариант: поменять в украинской раскладке буквы так, чтоб с правым альтом набирались і,є,ї, а в обычном режиме — соответсвующие русские буквы.

                                              Для этого достаточно добавить в ~/.Xmodmap такое:

                                              keycode 35 = bracketright braceright Cyrillic_hardsign Cyrillic_HARDSIGN Ukrainian_yi Ukrainian_YI
                                              keycode 39 = s S Cyrillic_yeru Cyrillic_YERU Ukrainian_i Ukrainian_I
                                              keycode 48 = apostrophe quotedbl Cyrillic_e Cyrillic_E Ukrainian_ie Ukrainian_IE

                                              и потом сделать xmodmap ~/.Xmodmap
                                              После ребута должно само подхватиться
                                                0
                                                наверное самый разумный способ.
                                                А если честно, я бы признал еще «ua unicode-ru» какой-нить. Идея здравая с раскладкой unicode, вот только я тоже в 99% случаев использую русскую и английскую расскладки. Украинская нужна очень редко. Удалять-добавлять гемор, 3 расскладки — не вариант. Редактировать сисетмные файлы — тоже не вариант.
                                                Интересно, реально ли пропихнуть такую расскладку в стандартный набор иксов?
                                                0
                                                Поддерживаю.
                                              –1
                                              У меня:
                                              Win — first layout
                                              Shift-Win — last layout
                                              Menu — next
                                              Shift-Menu — prev
                                                0
                                                Ох как спасибо, сейчас буду пробовать как оно по юзабильности.
                                                  –1
                                                  У меня в KDE alt+space. Универсально.
                                                    0
                                                    оно подойдет для всех линуксов, или если версия или система другая то ничего не получится (как всегда)
                                                      0
                                                      Где-то здесь был вопросительный знак или это всё же утверждение?
                                                        0
                                                        Если это вопрос, то да, +- для всех. Может отличаться путь к файлам маппинга раскладок.
                                                        –2
                                                        А что в линуксе нету нормального спеллчекера?
                                                          0
                                                          Извините, при чём тут спеллчекер?
                                                            –1
                                                            Grammar nazi негодуют, вот при чем.
                                                          –1
                                                          Когда в вашем линуксе научатся текст вмешать в окно без горизонтальных прокруток?
                                                            +2
                                                            Зато любое окно можно масштабировать, а это, имхо, важнее, чем наличие скролла.
                                                              +1
                                                              о чем вы?
                                                                +1
                                                                На картинке видно.
                                                              +1
                                                              Отличная идея! :)
                                                              Как раз искала что-то такое для сербского. Использовать сербскую раскладку неудобно — слишком отличается от русской, а учить пока смысла не вижу. Поэтому 6 сербских букв (љ, њ, џ, ђ, ћ, ј) просто валялись в «Кассе символов» — ужасно неудобно было их вставлять. А теперь проблема решена. Спасибо.
                                                                +1
                                                                Вот такое я писал:
                                                                habrahabr.ru/blogs/linux/95845/
                                                                • UFO just landed and posted this here
                                                                    0
                                                                    Конфигурацию xkbmap очень легко менять из скриптов.
                                                                    В моем случае это переключение между с dvorak на qwerty и обратно для предоставления доступа к терминалу смертным.

                                                                    $ cat dvorak
                                                                    #!/bin/sh
                                                                    setxkbmap us,ru dvorak-de,winkeys-ua grp:caps_toggle

                                                                    $ cat qwerty
                                                                    #!/bin/sh
                                                                    setxkbmap us,ru ,winkeys-ua grp:caps_toggle

                                                                    Скрипты вызываются любым удобным способом. В моем случае они лежат в ~/.wmii/
                                                                    Результат — переключение между кирилицей и латиницей по Caps Lock, между dvorak и qwerty — `win+a dv` и `win+a qw` соответственно. Упомянутые выше dvorak-de и winkeys-ua расшарены gist.github.com/650839

                                                                    Для ввода китайского и японского посмотрите на SCIM и Anthy.
                                                                    +1
                                                                    А может быть кто-нибудь знает Mac-оподобный способ выбора двух «активных» раскладок из нескольких, чтобы можно было переключаться между ними, а при необходимости выбрать другие?

                                                                    Метод, приведенный автором, идеален для языков со схожей литерацией, таких как русский-украинский или английский-эсперанто, но не подходит, например, если у вас в системе стоят русский, английский и иврит.
                                                                      0
                                                                      Так ведь Mac по умолчанию использует переключение только между двумя раскладками?!
                                                                        0
                                                                        И снова setxkbmap спешит на помощь!
                                                                        Активные раскладки это функция от аргумента и состояния иксов.

                                                                        $ cat switch
                                                                        #!/bin/sh
                                                                        setxkbmap `getxkbcurrent` $1

                                                                        Так что создаем несколько скриптов вроде

                                                                        $ cat ru
                                                                        #!/bin/sh
                                                                        switch ru

                                                                        или указываем раскладки в менюшке.
                                                                          0
                                                                          А теперь самое интересное — команды getxkbcurrent не существует. Ближайший ее аналог — members.dslextreme.com/users/jbromley/files/ruby-xkb.tar.bz2
                                                                          Нас интересует только получение текущей группы и символов (setxkbmap -print иногда выдает неверные данные оО).

                                                                          $ ./getxkbgroupsymbols
                                                                          1
                                                                          pc+us(dvorak-de)+ru(winkeys-ua):2+inet(evdev)+capslock(grouplock)

                                                                          Теперь подменяем интересующую часть, например первый параметр на «us»

                                                                          $ echo «pc+us(dvorak-de)+ru(winkeys-ua):2+inet(evdev)+capslock(grouplock)» | sed 's/+[^+]*/+us/'
                                                                          pc+us+ru(winkeys-ua):2+inet(evdev)+capslock(grouplock)

                                                                          И отправляем строку обратно

                                                                          $ setxkbmap -symbol 'pc+us+ru(winkeys):2+inet(evdev)+capslock(grouplock)'
                                                                        0
                                                                        Черт, хочу переключалку как в Маке. Чтоб просто переключала между англ/рус языками, а когда нужен третий (украинский) — потрудиться и выбрать мышкой его. После этого переключался будет между англ/укр. Как-то ну совсем удобно и доступно любой домохозяйке.
                                                                          +2
                                                                          Очень хотел переключение раскладок по Caps Lock на маке. Не бывает, по крайней мере без покупки пары приложений.
                                                                          Даже для windows решение есть.
                                                                            +1
                                                                            Да, капслок — это мегаудобно. Жаль, что когда-нибудь какие-нибудь дизайнеры подумают: «о нет, на моем маке не нужен капслок» и уберут его на какую-нибудь включалку iВиджетов, а за ними весь мир побежит делать так же. И останемся без этой прекрасной клавиши (гуглоноутбук, вроде, так и сделал).

                                                                            А когда я впервые попробовал капс как переключалку первая мысль была: «черт, почему здесь всё еще написано Caps Lock а не RU<-->EN (ну или Lang)?»
                                                                              0
                                                                              в самом деле, удобно. но функциональность CapsLock иногда нужна. можно-ли повесить её на другое сочетание клавиш (например, одновременное нажатие левого и правого Shift)?
                                                                                0
                                                                                shift+capslock чем не устроил?
                                                                              0
                                                                              Можно маковским пунто-свитчером, отключив в нем все остальное. Извращение, конечно…
                                                                            0
                                                                            Рекомендую посмотреть ibus.
                                                                              0
                                                                              стандартная иксовая украинская раскладка имеет в себе не только украинские буквы, но и русские и белорусские, и в довесок еще кучу типографских и других спецсимволов. легким движением руки эта раскладка превращается в русскую(украинские буквы через альт, русские — без), с сохранением остальных вкусностей. пользуюсь такой уже долгое время.
                                                                                +3
                                                                                можно движение руки в студию?
                                                                                0
                                                                                Конечно же, никто не описывал!
                                                                                  0
                                                                                  И всё же переключение на нужную раскладку намного удобнее, нежели циклическое переключение по раскладкам. Индикатор становится вообще не нужным. В моём случае это CapsLock — english, Shift+CapsLock — русский, Ctrl+CapsLock — українська. Правда делается это небольшим напильничком. Да, сначала неудобно, а потом понимаешь всю прелесть данного метода. Настолько привык, что даже для Windows написал программку, которая обеспечивает аналогичную функциональность.

                                                                                  Only users with full accounts can post comments. Log in, please.