Как установить разные раскладки для 2 клавиатур в Wayland

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

Как подключить две физические клавиатуры к нашему компьютеру и установить для каждой из них разные раскладки?

Принятый ответ на этот вопрос, заданный 11 лет назад, видимо, не работает для Wayland.

Когда я выполняю xinput -list | grep key, я получаю следующий вывод с предупреждением. Также не отображаются две подключенные физические клавиатуры.

WARNING: running xinput against an Xwayland server. See the xinput man page for details.
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ xwayland-keyboard:17                      id=9    [slave  keyboard (3)]

Выполнение команды sudo libinput.list-devices на самом деле отображает клавиатуры


Device:           Dell KB216 Wired Keyboard
Kernel:           /dev/input/event16
Group:            5
Seat:             seat0, default
Capabilities:     keyboard 
Tap-to-click:     n/a
Tap-and-drag:     n/a
Tap drag lock:    n/a
Left-handed:      n/a
Nat.scrolling:    n/a
Middle emulation: n/a
Calibration:      n/a
Scroll methods:   none
Click methods:    none
Disable-w-typing: n/a
Accel profiles:   n/a
Rotation:         n/a

Device:           AT Translated Set 2 keyboard
Kernel:           /dev/input/event3
Group:            10
Seat:             seat0, default
Capabilities:     keyboard 
Tap-to-click:     n/a
Tap-and-drag:     n/a
Tap drag lock:    n/a
Left-handed:      n/a
Nat.scrolling:    n/a
Middle emulation: n/a
Calibration:      n/a
Scroll methods:   none
Click methods:    none
Disable-w-typing: n/a
Accel profiles:   n/a
Rotation:         n/a

Как мне настроить, чтобы AT Translated Set 2 keyboard имела финскую раскладку, а Dell KB216 Wired Keyboard имела американскую раскладку? Я использую Ubuntu 24.10.

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

Настройка разных раскладок для двух клавиатур в среде Wayland — это нетривиальная задача, связанная с основными изменениями в управлении вводом в системе. В отличие от Xorg, где подобная задача могла быть решена с помощью утилит вроде setxkbmap и xinput, Wayland работает с вводом несколько иным образом. Давайте разберемся, как можно добиться желаемого поведения с учетом контекста, который вы предоставили.

Теория

Wayland — это протокол для композитных серверов, который был разработан как альтернатива X11 для обеспечения более производительной и безопасной графической подсистемы. В отличие от X11, Wayland не имеет собственного концепта глобального серверного процесса ввода, а ввод обрабатывается проще и непосредственно: каждый клиент (приложение) взаимодействует с аппаратными элементами ввода через средства конкретного композитного сервера (например, Mutter для GNOME, KWin для KDE и др.).

В этом случае, libinput выступает как интерфейс между ядром Linux и сервером Wayland, обрабатывая все аппаратные события ввода. Для различных устройств ввода libinput обеспечивает взаимодействие с помощьюорганизации событий в поток, но без возможности прямого управления раскладками клавиатуры. Это значит, что ключевой роль здесь играет композитный сервер, который управляет поведением и настройками устройств ввода.

Пример

Рассмотрим, как это может быть реализовано в различных композитных серверах:

  1. GNOME (Mutter): GNOME на Wayland по умолчанию не поддерживает возможность настройки разных раскладок для разных клавиатур. Однако существует возможность использовать расширение GNOME или специальное конфигурационное решение, которое позволит изменить поведение в соответствии с вашими нуждами.

  2. KDE (Plasma/KWin): В KDE имеются более гибкие настройки для вывода, и теоретически возможно использование скриптов или даже написание плазмоидов для обработки таких ситуаций.

  3. Другие: Например, Sway — это композитный сервер Wayland, в чем-то схожий с i3. Sway допускает более сложные настройки через конфигурационные файлы, и с ним можно добиться более гибкого управления устройствами ввода.

Применение

Шаги для реализации на GNOME:

  1. Установка и настройка окружения:

    • Убедитесь, что все системные пакеты актуальны и GNOME используется в режиме Wayland.
  2. Конфигурация libinput:

    • Загрузите список устройств, используя sudo libinput list-devices, чтобы убедиться в правильной идентификации ваших клавиатур.
    • Поскольку libinput не управляет непосредственно раскладками, этот шаг лишь подтвердит правильность идентификации оборудования.
  3. Использование GNOME Extensions:

    • Попробуйте установить расширение, такое как "Keyboard Layout Per App", если оно доступно для вашей версии GNOME. Это позволит вам настроить разные раскладки для разных приложений, что может быть альтернативным решением.
  4. Поиск специализированных решений:

    • Наиболее специализированное решение может потребовать создания пользовательского демона или использования скриптов на уровне сессии, которые будут переключать раскладки в зависимости от активного устройства. Вы можете исследовать доступные решения в сообществе или обратиться к документации разработчиков GNOME.
  5. Написание собственного скрипта:

    • В качестве глубокого решения вы можете написать пользовательский скрипт на Python или Bash, использующий интерфейсы DBus и libinput для прослушивания событий ввода и изменения раскладок на лету. Это сложный путь, так как потребуется хорошее понимание системных вызовов и внутреннего устройства композитного сервера.

Шаги для реализации на Sway:

  1. Установка Sway:

    • Если на вашем Ubuntu 24.10 установлен другой композитный сервер, установите Sway, чтобы воспользоваться его расширенными возможностями настройки устройств ввода.
  2. Конфигурационный файл Sway:

    • Откройте или создайте конфигурационный файл ~/.config/sway/config.
    • Добавьте настройки для ваших клавиатур. Например:

      input "3:1:Dell_KB216_Wired_Keyboard" {
      xkb_layout "us"
      }
      
      input "1:1:AT_Translated_Set_2_keyboard" {
      xkb_layout "fi"
      }
    • Здесь 3:1:Dell_KB216_Wired_Keyboard и 1:1:AT_Translated_Set_2_keyboard — идентификаторы устройств, которые можно получить с помощью swaymsg -t get_inputs.
  3. Перезапуск Sway:

    • После внесения изменений, перезапустите Sway с новой конфигурацией.

Таким образом, настройка разных раскладок для двух физически подключенных клавиатур под Wayland зависит от возможностей композитного сервера, где наибольшая гибкость наблюдается у таких регулируемых серверов, как Sway. Воспользовавшись вышеописанными методами, вы сможете настроить системы ввода под ваши нужды в рамках текущих возможностей Wayland.

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

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