Como posso criar um arquivo XKB personalizado complicado para o Sway?

Como posso criar um arquivo XKB personalizado complicado para o Sway?

O Sway usa o Wayland, portanto, qualquer arquivo XKB será analisado pelo Sway, não pelo X.

  • Quero adicionar uma camada no teclado (provavelmente usando Hyper)
  • Quero embaralhar algumas teclas modificadoras

Eu olhei em muitos sites, mas ainda não sei como fazer isso. Existem tantas partes no XKB, e não tenho certeza do que vai para onde. Quero um arquivo (ou arquivos) de exemplo e uma explicação.

Responder1

Digamos que seu arquivo de configuração xkb seja denominado custom-xkb e esteja armazenado no formato ~/.config. Então você inclui isso no seu arquivo de configuração do sway:

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

Você provavelmente já conhece essa parte – a parte difícil é criar o custom-xkbarquivo. Não sou especialista, mas eis o que eu faria:

  1. Eu faria uma pesquisa na web por "especificação xkb", e isso traz para você todos os tipos de informações, desde a Wikipedia até a x.orgespecificação completa. Você provavelmente já possui uma coleção de recursos como esses.
  2. Então eu encontraria no meu sistema os arquivos de configuração padrão do teclado, talvez em \etc\X11\xdg\ou algo assim (talvez você precise dar uma olhada: na minha distribuição estranha, o caminho é /nix/store/n1mlvwrkdlm77b4ai9s26kwji89jjb65-xkeyboard-config-2.27/share/X11/xkb/).
  3. Nesse caminho, procuraria dois subdiretórios: symbolse types. O primeiro é onde estão os mapas-chave para todos os idiomas diferentes e, dentro de cada arquivo, as variações do mapa-chave para esse idioma. O segundo subdiretório é onde as chaves virtuais são definidas (como Mod1, Control, etc.).
  4. Então eu copiaria o conteúdo desses arquivos para o meu ~/.config/xkb/custom-xkbe experimentaria diferentes edições para ver o que acontece. E procuro tirar minhas dúvidas utilizando os recursos da internet que recolhi. Se algo catastrófico acontecesse, eu apertaria Control+Alt+F1, faria um login nox, comentaria a linha xkb_file ~/.config/xkb/custom-xkbe reiniciaria o servidor X...
  5. Eu não alteraria o conteúdo dos subdiretórios rules, geometrye keycodes. Mas você precisa dar uma olhada nisso também.

Na verdade, não fiz nada disso, mas talvez funcione. Acho que olhar os arquivos de configuração reais ajuda a descobrir o que os tutoriais e guias estão realmente dizendo...

Boa sorte

Responder2

XKB é realmente uma fera complicada. (Pelo menos na minha experiência. Parece ter algumas decisões de design estranhas que atribuo ao fato de seu primeiro lançamento ter sido em 1996 e também não ser a melhor documentação na minha opinião.)

Consegui chegar a algum nível de compreensão experimentando muitas configurações diferentes e decidi por um subconjunto de funcionalidades cujo comportamento posso adivinhar com segurança e criar layouts confortavelmente, ao mesmo tempo que tenho flexibilidade suficiente para expressar o que gostaria de alcançar.

Escrever um tutorial abrangente sobre o que aprendi levaria um pouco de tempo, mas o que você pode fazer é dar uma olhada nos meus arquivos de configuração, que espero que sejam mais digeríveis do que ler os layouts padrão.

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

(Eles estão incluídos na minha configuração do Swayaqui.)

Recomendo particularmente o Lenovo-L13.xkbarquivo, que criei para meu laptop, pois possui múltiplas camadas. (Eu até transformei minha barra de espaço em um modificador enquanto mantinha pressionadaevdoublebind.) O layout do Vortex Core também é bom, mas esse não é o quadro completo, já que o teclado em si também é programável.

Se você precisar de algo que não pode ser encontrado aqui, como a resposta anterior já mencionou, o lugar para começar é procurar nos arquivos integrados. Você pode ter uma ideia de quais deles são utilizados em seu teclado usando setxkbmap -print. A partir de então você pode consultar as definições importadas onde quer que seus xkbarquivos estejam localizados. (A menos que você esteja usando o NixOS, provavelmente está em algum lugar razoável, como /usr/share/X11/xkbno Arch.)

informação relacionada