Поведение Caps Lock в Sway / Wayland

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

Под X я могу настроить Caps Lock как Esc при кратком нажатии и как Ctrl при удерживании с помощью:

setxkbmap -option 'caps:ctrl_modifier'
xcape -e 'Caps_Lock=Escape' -t 100

Как можно воспроизвести это поведение на Sway / Wayland?

Добавьте следующее в конфигурацию sway:

input "type:keyboard" {
    xkb_options caps:ctrl_modifier
}

Источник: https://github.com/swaywm/sway/wiki#keyboard-layout

ОБНОВЛЕНИЕ: автор спрашивает “Caps Lock — это Escape, но Control при удержании”. Оказывается, есть простая программа, которая делает именно это на уровне libevdev (поэтому работает с любым сервером отображения, в том числе Wayland, и вышеуказанная конфигурация sway не нужна).

Связанная тема обсуждения: https://github.com/swaywm/sway/issues/719

Демон переназначения клавиш, такой как keyd (есть и другие), будет решением, не зависящим от X/Wayland. У них есть пример того, что вам нужно, прямо в начале их быстрого старта:

https://github.com/rvaiya/keyd?tab=readme-ov-file#quickstart

[ids]

*

[main]

# Преобразовывает Caps Lock в Escape при нажатии и в Control при удержании.
capslock = overload(control, esc)

Другие подобные утилиты, которые могут это сделать, перечислены здесь:

https://wiki.archlinux.org/title/Input_remap_utilities

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

Для решения задачи настройки поведения клавиши Caps Lock, чтобы она работала как клавиша Escape при быстром нажатии и как клавиша Control при удержании, необходимо перейти от устаревших решений на основе Xorg, таких как использование setxkbmap и xcape, к более современным инструментам, которые совместимы с Wayland и в частности Sway. Ниже приведу разбор решения с подробностями.

Теория

При использовании Xorg (который Sway не поддерживает напрямую) ранее упоминаемая комбинация setxkbmap и xcape позволяла достаточно гибко управлять поведением клавиш. Это возможно благодаря т.н. "xkb options", которые позволяют переопределять стандартное поведение клавиш. Однако, в среде Wayland и, в частности, в менеджере окон Sway, поддержка подобных утилит отсутствует, что требует поиска альтернативных решений, работающих независимо от Xorg.

Пример

  1. Использование Sway конфигурации:
    Sway предлагает возможность задавать раскладку клавиатуры и модификаторы напрямую в своем конфигурационном файле. Пример соответствующей настройки в конфигурации Sway:

    input "type:keyboard" {
       xkb_options caps:ctrl_modifier
    }

    Эта настройка позволяет настроить Caps Lock как модификатор Control. Однако, она не решает проблему короткого нажатия для выполнения Escape.

  2. Программа caps2esc:
    Для решения задачи требуется комбинированное поведение клавиши. На помощь приходит программа caps2esc, которая работает на уровне libevdev. Данная утилита обеспечивает необходимую функциональность и совместима с различными серверными окружениями, включая Wayland.

  3. Использование keyd:
    В более универсальном подходе можно использовать утилиты для ремаппинга клавиш, работающие независимо от графического окружения. Пример такой утилиты – keyd:

    [ids]
    
    *
    
    [main]
    
    # Maps capslock to escape when pressed and control when held.
    capslock = overload(control, esc)

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

Применение

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

  1. Установка выбранного инструмента:
    Для установки caps2esc или keyd обычно достаточно воспользоваться пакетным менеджером вашей дистрибуции Linux. Например, в системах на базе Arch Linux можно использовать pacman.

  2. Конфигурация:
    Создайте (или модифицируйте) соответствующий конфигурационный файл. В случае Sway, это файл ~/.config/sway/config. Если вы выбрали keyd, отредактируйте keyd.conf согласно документации.

  3. Запуск программы:
    Удостоверьтесь, что программа или служба запускается при старте системы. Это можно сделать, добавив нужную строку в скрипты автозагрузки или в конфигурации сервиса systemd, если программа предоставляет такой метод запуска.

  4. Тестирование работы:
    Протестируйте поведение клавиши Caps Lock – она должна вести себя как Escape при быстром нажатии и как Control при удержании. При необходимости, отладьте конфигурацию в соответствии с личными предпочтениями.

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

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

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