В Linux нет хорошего решения для переназначения клавиш. Для достижения удовлетворительных результатов необходимо использовать набор инструментов (например, xcape, xmodmap), причем конечный результат часто привязан к определенной среде (X11). keyd пытается решить эту проблему, предоставляя гибкий общесистемный демон, который переназначает ключи, используя примитивы ввода уровня ядра (evdev, uinput).
Формат конфигурации претерпел несколько итераций с момента первого выпуска. Тем, кто переносит свои конфигурации из v1, лучше перечитать справочную страницу.
См. также: журнал изменений.
keyd имеет несколько уникальных функций, многие из которых традиционно встречаются только в специальных прошивках клавиатуры, таких как QMK, а некоторые являются уникальными для keyd.
Некоторые из наиболее интересных включают в себя:
C-1
, не нарушая семантику модификатора.Примечание: master служит веткой разработки, между выпусками могут иногда возникать сбои. Релизы помечены тегами и должны считаться стабильными.
git clone https://github.com/rvaiya/keyd
cd keyd
make && sudo make install
sudo systemctl enable keyd && sudo systemctl start keyd
Установите и запустите keyd (например, sudo systemctl enable keyd
)
Поместите следующее в /etc/keyd/default.conf
:
[ids]
*
[main]
# Maps capslock to escape when pressed and control when held.
capslock = overload(control, esc)
# Remaps the escape key to capslock
esc = capslock
Имена ключей можно получить с помощью команды keyd monitor
. Обратите внимание, что пока keyd работает, вывод этой команды будет соответствовать выводу keyd. Исходные события ввода можно увидеть, сначала остановив keyd, а затем выполнив команду. Дополнительную информацию смотрите на странице руководства.
Запустите sudo keyd reload
, чтобы перезагрузить набор конфигурации.
Более подробное описание смотрите на странице руководства ( man keyd
).
Ошибки конфигурации появятся в выводе журнала, и к ним можно получить доступ обычным способом с помощью диспетчера служб вашей системы (например, sudo journalctl -eu keyd
).
Примечание . Из-за неправильного файла конфигурации можно сделать вашу машину непригодной для использования. Если вы окажетесь в таком положении, специальная последовательность клавиш backspace+escape+enter
должна привести к завершению работы keyd.
Некоторые мыши (например, Logitech MX Master) способны генерировать ключи и, следовательно, сопоставляются с подстановочным идентификатором. Возможно, потребуется внести их в черный список.
Добавьте себя в группу keyd:
usermod -aG keyd <user>
Заполните ~/.config/keyd/app.conf
:
НАПРИМЕР
[alacritty]
alt.] = macro(C-g n)
alt.[ = macro(C-g p)
[chromium]
alt.[ = C-S-tab
alt.] = macro(C-tab)
Бегать:
keyd-application-mapper
Вероятно, вы захотите поместить keyd-application-mapper -d
где-нибудь в логику инициализации вашего сервера отображения (например, ~/.xinitrc), если только вы не используете Gnome.
Дополнительную информацию смотрите на странице руководства.
Добавлена экспериментальная поддержка одноплатных компьютеров (SBC) через USB-гаджет благодаря Георгию Чавчанидзе.
Подробности смотрите на usb-gadget.md.
Также существуют сторонние пакеты для некоторых дистрибутивов. Если вы хотите добавить свой в список, пожалуйста, подайте PR. Они любезно поддерживаются членами сообщества, за них не несётся никакой личной ответственности.
keyd, поддерживаемый @jirutka.
Пакет Arch Linux, поддерживаемый упаковщиками Arch.
Экспериментальные пакеты keyd
и keyd-application-mapper
можно найти в артефактах сборки CI работающего репозитория пакетов Debian:
Любому разработчику Debian, желающему просмотреть работу по дебианизации и спонсировать ее загрузку, рекомендуется связаться с @rhansen (см. также ошибку Debian ITP).
Пакет COPR поддерживается @alternateved.
пакет opensuse, поддерживаемый @bubbleguuum.
Простая установка с помощью sudo zypper in keyd
.
Экспериментальные пакеты keyd
и keyd-application-mapper
можно найти в архиве ppa:keyd-team/ppa
.
Если вы хотите помочь поддерживать этот PPA, свяжитесь с @rhansen.
[ids]
*
[main]
leftshift = oneshot(shift)
capslock = overload(symbols, esc)
[symbols]
d = ~
f = /
...
Многие пользователи, вероятно, не захотят в полной мере использовать преимущества keyd. Для тех, кто ищет простого улучшения качества жизни, я могу порекомендовать следующую конфигурацию:
[ids]
*
[main]
shift = oneshot(shift)
meta = oneshot(meta)
control = oneshot(control)
leftalt = oneshot(alt)
rightalt = oneshot(altgr)
capslock = overload(control, esc)
insert = S-insert
Это перегружает клавишу Capslock, чтобы она могла функционировать как в качестве escape (при нажатии), так и в качестве управления (при удерживании), а все модификаторы переназначаются на клавиши «oneshot». Таким образом, чтобы создать букву A, теперь вы можете просто нажать Shift, а затем A, вместо того, чтобы удерживать ее. Наконец, он переназначает вставку на S-вставку (вставка на X11).
xmodmap и его друзья — это инструменты уровня сервера отображения с ограниченной функциональностью. keyd — это решение системного уровня, которое реализует расширенные функции, такие как наложение слоев и модификаторы oneshot. Хотя некоторые инструменты X предлагают аналогичную функциональность, я не знаю ничего более гибкого, чем keyd.
keyd был написан несколько лет назад, чтобы я мог легко экспериментировать с различными раскладками в моей растущей коллекции клавиатур. В то время Kmonad не существовало, и специальная прошивка клавиатуры, такая как QMK (которая вдохновила Keyd), была единственным способом получить сопоставимые функции. Я узнал о kmonad после публикации keyd. Хотя Kmonad — хороший проект со схожими целями, он использует другой подход и другую философию дизайна.
Примечательно, что keyd был полностью написан на C с учетом производительности и простоты и, вероятно, никогда не будет таким же настраиваемым, как kmonad (который расширяется в Haskell). При этом он предоставляет (по мнению автора) наиболее ценные функции менее чем в 2000 строк C, обеспечивая при этом простой формат конфигурации, не зависящий от языка.
Если вы чувствуете, что чего-то не хватает или обнаружили ошибку, вы можете сообщить о проблеме на github. keyd имеет минималистскую (но разумную) философию дизайна, которая намеренно опускает некоторые функции (например, выполнение произвольных исполняемых файлов от имени пользователя root). Вещи, которые уже существуют в специальных прошивках клавиатуры, например QMK, являются хорошими кандидатами на включение.
См. ВКЛАД. IRC-канал: #keyd на oftc