LINUX.ORG.RU

Кастомная раскладка. Индикация

 , , ,


0

1

Краткая предыстория: нужно вводить массу специальных символов на русской и наглийской раскладке. Поглядел значит я на устройство самых популярных «typewriter» расскладок, и пришел к выводу что ни одна из них меня не устраивает.

В итоге сделал пару своих — дефолтную нерусскую, русскую и «hidden» цифровой ряд, с одинаковыми символами на всех слоях, который инклюдится в обе вышеупомянутые. Русская раскладка сделал как вариант нерусской, напихал тегов countryList и languageList, но что-то не вижу чтобы они работали.

Всё было бы замечательно, если бы не одно «но» — индикация страны/языка в виджете для трея Plasma 6. Они всегда одни и теже: название файла в котором расскладки описаны (hg) и соответствующая пиктограмма страны (hg.png) Приходится для индикации использовать capslock-индикацию (бесит) и всплывающее уведомление (раздражает).

Вопрос: можно ли добавить им каких-то тегов в evdev.xml, чтобы раскладки подвязались к соотвествующим странам?

Перенос раскладок по файлам ru и us вызывает занятный баг — после добавления любой из них в список действующих, виджет крашится, а единственной присутствующей в DE раскладкой становится дефолтный enUS.

Еще вопрос: на просторах интернета не единожды встречалось мнение что раскладки и правила можно совать в юзерский ~/{.xkb, .config, .local}, но у меня оно так и не заработало.

Текущий evdev.xml:

    <layout>
      <configItem>
        <name>hg</name>
        <shortDescription>eng</shortDescription>
        <description>English (HG-Colemak)</description>
        <countryList>
          <iso3166Id>US</iso3166Id>
        </countryList>
        <languageList>
          <iso639Id>eng</iso639Id>
        </languageList>
      </configItem>
      <variantList>
        <variant>
          <configItem>
            <name>rus</name>
            <description>Russian (HG-ЙЦУКЕН)</description>
            <countryList>
              <iso3166Id>RU</iso3166Id>
            </countryList>
            <languageList>
              <iso639Id>rus</iso639Id>
            </languageList>
          </configItem>
        </variant>
      </variantList>
    </layout>

★★

Последнее исправление: hargard (всего исправлений: 1)

Во-первых: у меня Гном.

Русская раскладка сделал как вариант нерусской, напихал тегов countryList и languageList, но что-то не вижу чтобы они работали.

Лог офф/лог он делал? Гном на лету изменения в evdev.xml не подхватывает, надо гном перезапускать. Возможно, что в плазме так же.

Вопрос: можно ли добавить им каких-то тегов в evdev.xml, чтобы раскладки подвязались к соотвествующим странам?

Не вполне понял вопрос. Что значит подвязка раскладки к стране?

У мну в Гноме всё работает:

<layout><configItem><name>ru-tm-en</name><shortDescription>En</shortDescription><description>English (typewriter, modern)</description><languageList><iso639Id>eng</iso639Id></languageList></configItem></layout><layout><configItem><name>ru-tm-ru</name><shortDescription>Ru</shortDescription><description>Russian (typewriter, modern)</description><languageList><iso639Id>rus</iso639Id></languageList></configItem></layout>

Отформатировано в одну строку потому что добавлялось не ручками, а скриптом через xmlstarlet. Раскладки отображаются гномовским штатным индикатором как En и Ru (т. е. гномовский индикатор использует shortDescription).

Еще вопрос: на просторах интернета не единожды встречалось мнение что раскладки и правила можно совать в юзерский ~/{.xkb, .config, .local}, но у меня оно так и не заработало.

Я не пробовал делать юзерские раскладки. Мои раскладки лежат в файлах ru-tm-ru и ru-tm-en в /usr/share/X11/xkb/symbols, чтобы не редактировать оригинальные ru и en. Один хрен надо делать rpm, так как evdev.xml затирается при обновлении пакета xkeyboard-config. Rpm решает проблему с помощью триггера: как только кто-то затирает evdev.xml, мой rpm тут же патчит его.

debugger ★★★★★
()
Последнее исправление: debugger (всего исправлений: 1)
Ответ на: комментарий от debugger

Лог офф/лог он делал?

Да, конечно. Иногда даже перезагружался. Логаута впрочем достаточно.

Что значит подвязка раскладки к стране? У мну в Гноме всё работает

А вот виджет Plasma теги игнорирует, и смотрит только на имя файла в xkb/symbols:

https://i.imgur.com/WPR1JkA.png

ведь чтобы тоже

не редактировать оригинальные ru и en

Я описываю расскладки в файле /usr/share/X11/xkb/symbol/hg

Мне кажется, перенос раскладок в ru/us файлы, живущие в директории xxxx_vndr мог бы помочь избавиться от этого бага (и избежать конфликтов при обновлении), но заставить ее работать таким образом у меня не удалось.

hargard ★★
() автор топика
Ответ на: комментарий от hargard

А вот виджет Plasma теги игнорирует, и смотрит только на имя файла в xkb/symbols…

Тогда у тебя три выхода:

  1. Хакнуть виджет плазмы.
  2. Перейти на Гном.
  3. Использовать включатель клавиатурных раскладок вместо переключателя.

В третьем случае тебе будет всё равно какой у раскладки индикатор.

debugger ★★★★★
()
Ответ на: комментарий от debugger

Взломал систему: подсунул ru и us файлы в ~/.config/xkb/symbols, туда же забросил зачищенный evdev.xml, в котором удалены все layouts кроме моих.

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

Бонусом — то, что при обновлении ничего делать не нужно.

Так определенно комфортней. https://i.imgur.com/Ek1nRGG.png

hargard ★★
() автор топика