Моя пользовательская раскладка клавиатуры XKB перестала работать после перезагрузки.

Вопрос или проблема

Итак, несколько недель назад я настроил свою индивидуальную раскладку клавиатуры XKB на Ubuntu. Я следовал инструкциям здесь: https://who-t.blogspot.com/2020/09/user-specific-xkb-configuration-putting.html и скачал скрипт по ссылке: https://gitlab.freedesktop.org/whot/xkblayout После запуска скрипта (я не помню конкретные параметры, которые использовал, и сколько было сгенерировано автоматически, но я покажу вам результаты через минуту) и редактирования файлов ~/.config/xkb/symbols/us (и возможно, ~/.config/xkb/rules/evdev.xml, не помню, редактировал ли я его вручную или это сделал скрипт), моя кастомная раскладка клавиатуры “English – Interna-Tina-l (AltGr dead keys)” вдруг появилась в приложении Настройки (при выборе новой раскладки клавиатуры через Настройки -> Клавиатура -> раздел “Источник ввода” -> кнопка “Добавить источник ввода”; моя новая раскладка была в списке вариантов при выборе “English (United States)”). Я выбрал раскладку, и вдруг она заработала, и я с удовольствием начал печатать с помощью своих пользовательских клавиш. (Я также установил “Клавишу альтернативных символов” в настройках клавиатуры на “Левый Super”. Я считал, что так будет логичнее, чем жестко задавать это в моей раскладке.)

Затем, два дня назад, моя система упала. Я не уверен, почему, и не думаю, что это важно (просто скажу, что я пытался скопировать и вставить что-то в Emacs, ожидая нормального поведения, но вместо этого мой компьютер полностью завис, и так как казалось, что он немного перегревается, я решил, что единственный выход – это Alt+PrtSc+REISUO и выключить его на некоторое время, чтобы он остыл), но суть в том, что мне пришлось его выключить и потом включить снова. Затем, к моему ужасу, после входа в Ubuntu я обнаружил, что моя кастомная раскладка клавиатуры больше не работает! Вдруг она использовала раскладку “English (intl., with AltGr dead keys)”, от которой моя раскладка наследуется (но вносит значительные изменения, настолько, что попытки печатать на этой раскладке, или любой другой, не моей, сводят с ума).

Самое удивительное было то, что, если я заходил в настройки клавиатуры, она все еще показывала, что я использую мою кастомную раскладку! Я попытался добавить “English (intl., with AltGr dead keys)” как второй источник ввода, чтобы я мог переключаться между двумя раскладками (супер+пробел) и, надеюсь, обновить представление системы о том, какую раскладку я использую. Но, если я переключусь на эту раскладку и вернусь к своей, я все равно печатаю так, как будто использую ту другую раскладку!

Также может быть важно то, что если я попытаюсь использовать setxkbmap -query, чтобы узнать, какую раскладку я сейчас использую согласно setxkbmap, он говорит следующее, даже если я определенно использую свою кастомную раскладку согласно настройкам клавиатуры и индикатору панели задач:

rules:      evdev
model:      pc105
layout:     us
variant:    altgr-intl

(“altgr-intl” относится к раскладке “English (intl., with AltGr dead keys)”, как вы могли догадаться.)

(Также, что, вероятно, является важным, то, что опция “Клавиша альтернативных символов” все еще установлена на “Левый Super” в настройках клавиатуры, но Левый Super больше не функционирует как “Клавиша альтернативных символов”; вместо этого для этого подходит Правый Alt (AltGr), что является стандартом для раскладки “English (intl., with AltGr dead keys)”/”altgr-intl”.)

Также, если я попробую использовать setxkbmap -variant tina, что, я думаю, это как я должен указать setxkbmap выбрать мою пользовательскую версию, он просто говорит Error loading new keyboard description и выходит. Хмм.

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

(Помните, что закомментированные строки в середине – это части, которые раньше были в моей раскладке клавиатуры, но по какой-то причине их больше нет; я включаю их только для полноты картины, так как хотя я не могу представить, почему закомментированные строки могут вызывать проблемы, я не знаю, что действительно их вызывает.)

~/.config/xkb/symbols/us:

// $XKeyboardConfig$

partial alphanumeric_keys modifier_keys
xkb_symbols "tina" {
    name[Group1]= "English - Interna-Tina-l (AltGr dead keys)";

    include "us(altgr-intl)"
    
//    include "level3(ralt_alt)"
//    include "level3(win_switch)"
//    key <CAPS> {
//      type[Group1]="ONE_LEVEL",
//      symbols[Group1] = [ ISO_Level5_Shift ]
//      };
//    modifier_map Mod3   { ISO_Level5_Shift };
    
//    key.type[Group1]="EIGHT_LEVEL"

    key <TLDE> { [       grave,  asciitilde, dead_abovedot,  dead_tilde ] };
    key <CAPS> { [   parenleft, ISO_Next_Group, Greek_lambda, Greek_phi ] };
    key <BKSL> { [  parenright,         bar,     backslash,   brokenbar ] };
    key  <TAB> { [        Tab, ISO_Left_Tab, XF86BackForward,   notsign ] };

    key <AE01> { [           1,      exclam,   onesuperior,       U203C ] };
    key <AE04> { [           4,      dollar,          cent,    sterling ] };
    key <AE05> { [       5,     percent,      EuroSign,         yen ] };
    key <AE06> { [           6, asciicircum, onequarter,dead_circumflex ] };
    key <AE07> { [       7,   ampersand,       onehalf,   dead_horn ] };
    key <AE08> { [           8,    asterisk, threequarters, dead_ogonek ] };
    key <AE09> { [       9,   parenleft,   bracketleft,   braceleft ] };
    key <AE10> { [       0,  parenright,  bracketright,  braceright ] };
    key <AE11> { [   minus,  underscore,        emdash,      endash ] };

    key <AB03> { [       c,           C,      ccedilla,    Ccedilla ] };
    key <AB04> { [       v,           V,     copyright,  registered ] };
    key <AC04> { [       f,           F,         U017f,       U2122 ] };
    key <AC10> { [ leftsinglequotemark,  leftdoublequotemark, dead_grave, degree ] };
    key <AC11> { [rightsinglequotemark, rightdoublequotemark, dead_acute, dead_diaeresis ] };
    
    key <AB08> { [      comma,     less,        dead_ogonek,     dead_caron ] };
    key <AB09> { [     period,  greater,           ellipsis,  dead_abovedot ] };
    key <AD11> { [  semicolon,    colon, enfilledcircbullet, guillemotright ] };
    key <AD12> { [ apostrophe, quotedbl,   enopencircbullet,  guillemotleft ] };
    
    key <I151> { [ Menu ] };

};

~/.config/rules/evdev:

// сгенерировано по шаблонам xkblayout

// Примечание: в файле правил не требуются записи для пользовательской раскладки

// Подключите системный файл 'evdev'
! include %S/evdev

~/.config/rules/evdev.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xkbConfigRegistry SYSTEM "xkb.dtd">
<!-- сгенерировано xkblayout -->
<xkbConfigRegistry version="1.1">

  <layoutList>
    <layout>
      <configItem>
        <name>us</name>
        <!-- Индикатор клавиатуры для английских раскладок -->
        <shortDescription>en</shortDescription>
        <description>English (US)</description>
        <countryList>
          <iso3166Id>US</iso3166Id>
        </countryList>
        <languageList>
          <iso639Id>eng</iso639Id>
        </languageList>
      </configItem>

      <variantList>
        <variant>
          <configItem>
            <name>tina</name>
            <shortDescription>tina</shortDescription>
            <description>English - Interna-Tina-l (AltGr dead keys)</description>
          </configItem>
        </variant>
      </variantList>

    </layout>
  </layoutList>

</xkbConfigRegistry>

Также скрипт xkblayout сгенерировал несколько пустых папок: ~/.config/xkb/compat, ~/.config/xkb/keycodes/ и ~/.config/xkb/types.

Я использую Ubuntu 24.04 на Thinkpad P53 Workstation. Не думаю, что какие-либо обновления пакетов вызвали это; на самом деле, ни Обновление ПО, ни менеджер пакетов Synaptic (после выбора “Перезагрузить” и “Отметить все обновления”) не показали никаких обновляемых пакетов в течение нескольких недель, что кажется мне странным, но это уже совсем другой вопрос. (Возможно, 24.04 уже стала достаточно стабильной, чтобы не нуждаться в постоянных обновлениях?)

Ответ или решение

Если ваша кастомная XKB раскладка клавиатуры перестала работать после перезагрузки Ubuntu, есть несколько шагов, которые можно предпринять для выяснения и решения проблемы. Давайте рассмотрим возможные причины и решения, основываясь на предоставленной информации.

Фон проблемы

Вы ранее успешно настроили кастомную раскладку клавиатуры "English – Interna-Tina-l (AltGr dead keys)" на Ubuntu, следуя инструкциям из блога и используя скрипт xkblayout. Однако после недавнего инцидента с заморозкой системы и перезагрузки раскладка прекратила функционировать, как ожидалось.

Возможные причины и их проверка

  1. Кэширование инициализации системы:

    • Иногда кастомные настройки могут не применяться после перезагрузки из-за кэширования настроек по умолчанию. Убедитесь, что ваши конфигурационные файлы (например, ~/.config/xkb/symbols/us) на месте и не были изменены.
  2. Конфликт с системными настройками:

    • Проверьте, не изменились ли системные настройки клавиатуры, особенно параметры в разделе "Input Sources". Убедитесь, что изначально была выбрана правильная раскладка.
  3. Неверное имя варианта:

    • Команда setxkbmap -variant tina не работает, выдает ошибку. Это может указывать на ошибку в конфигурации или неправильно настроенный вариант. Проверьте синтаксис файла ~/.config/rules/evdev.xml и убедитесь, что значения совпадают с теми, которые вы пытаетесь применить.

Решение

  1. Повторная инициализация XKB:

    • Перепроверьте все файлы конфигурации, чтобы убедиться, что они содержат правильные данные для вашей кастомной раскладки.
    • Примените вашу раскладку, используя через терминал setxkbmap, чтобы убедиться, что она загружается:
      setxkbmap -layout us -variant tina
  2. Обновление кэшей Gnome:

    • Иногда Gnome может кэшировать унаследованные настройки. Попробуйте очистить настройки Gnome, чтобы убедиться, что загружаются актуальные параметры:
      dconf reset -f /org/gnome/desktop/input-sources/
  3. Альтернативная проверка:

    • Запустите тестовое окружение Xorg для проверки кастомной раскладки без системных влияний:
      startx /usr/bin/xterm -- :1
    • Если проблема сохраняется, это может свидетельствовать о необходимости проверки более глубоких системных настройках.
  4. Логи и отладка:

    • Включите отладку XKB для получения более детальной информации. Проверьте логи Xorg.0.log на предмет ошибок, связанных с загрузкой XKB.
  5. Проверка обновлений:

    • Хотя вы уверены, что обновления не влияли, проверка доступных исправлений и обновлений может все же помочь. Попробуйте следующее:
      sudo apt update
      sudo apt upgrade

Заключение

Проблемы с кастомными раскладками XKB могут возникать из-за множества факторов – от изменений в конфигурационных файлах до системных сбоев. Следуя вышеописанным шагам, вы, скорее всего, сможете восстановить работоспособность вашей раскладки. Если проблема сохраняется, стоит рассмотреть возможность создания нового профиля пользователя для проверки, не является ли вопрос специфичным для вашего текущего профиля.

Оцените материал
Добавить комментарий

Капча загружается...