Как создать сложный пользовательский файл XKB для Sway?

Как создать сложный пользовательский файл XKB для Sway?

Sway использует Wayland, поэтому любые файлы XKB будут обрабатываться Sway, а не X.

  • Я хочу добавить слой на клавиатуру (вероятно, с помощью Hyper)
  • Я хочу перетасовать некоторые клавиши-модификаторы

Я просмотрел много сайтов, но я все еще не знаю, как это сделать. В XKB так много частей, и я не уверен, что куда идет. Мне нужен пример файла (или файлов) и объяснение.

решение1

Допустим, ваш файл конфигурации xkb называется custom-xkb и хранится в ~/.config. Затем вы включаете это в свой файл конфигурации sway:

input "type:keyboard" {           # or input <identifier> 
  xkb_file ~/.config/xkb/custom-xkb
}

Вы, вероятно, уже знаете эту часть — самая сложная часть — создание файла custom-xkb. Я не специалист, но вот что я бы сделал:

  1. Я бы сделал поиск в Интернете по запросу "xkb specification", и это принесет вам всевозможную информацию, от википедии до x.orgполной спецификации. У вас, вероятно, уже есть коллекция таких ресурсов.
  2. Затем я бы нашел в своей системе файлы конфигурации клавиатуры по умолчанию, может быть, в \etc\X11\xdg\или где-то еще (вам, возможно, придется немного поискать: в моем странном дистрибутиве путь такой /nix/store/n1mlvwrkdlm77b4ai9s26kwji89jjb65-xkeyboard-config-2.27/share/X11/xkb/).
  3. В этом пути я бы искал два подкаталога: symbolsи types. В первом находятся раскладки клавиш для всех различных языков, а в каждом файле — вариации раскладок клавиш для этого языка. Во втором подкаталоге определяются виртуальные клавиши (например, Mod1, Control и т. д.).
  4. Затем я скопировал бы содержимое этих файлов в свой ~/.config/xkb/custom-xkbи поэкспериментировал бы с различными правками, чтобы посмотреть, что получится. И попытался бы развеять свои сомнения, используя собранные мной интернет-ресурсы. Если бы случилось что-то катастрофическое, я бы нажал Control+Alt+F1, затем выполнил бы вход в систему nox, закомментировал бы строку xkb_file ~/.config/xkb/custom-xkbи перезапустил X-сервер...
  5. Я бы не стал вмешиваться в содержимое подкаталогов rules, geometryи keycodes. Но вам нужно взглянуть и на них тоже.

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

удачи Гуку

решение2

XKB — действительно сложный зверь. (По крайней мере, по моему опыту. Кажется, в нем есть некоторые странные дизайнерские решения, которые я отношу к тому факту, что его первый релиз был еще в 1996 году, а также, на мой взгляд, не самая лучшая документация.)

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

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

https://github.com/Isti115/dotfiles/tree/master/.config/xkb

(Они включены в мою конфигурацию Sway)здесь.)

Я особенно рекомендуюLenovo-L13.xkb файл, который я создал для своего ноутбука, так как он имеет несколько слоев. (Я даже превратил пробел в модификатор, удерживая его сevdoublebind.) Раскладка Vortex Core также хороша, но это не полная картина, поскольку сама клавиатура также программируема.

Если вам нужно что-то, чего здесь нет, как уже упоминалось в предыдущем ответе, то начать нужно со встроенных файлов. Вы можете получить представление о том, какие из них используются для вашей клавиатуры, используя setxkbmap -print. С этого момента вы можете искать импортированные определения в любом месте, где xkbнаходятся ваши файлы. (Если вы не используете NixOS, то, вероятно, они находятся в каком-то разумном месте, например, /usr/share/X11/xkbв Arch.)

Связанный контент