O Linux carece de uma boa solução de remapeamento de chaves. Para obter resultados satisfatórios, é necessário empregar uma variedade de ferramentas (por exemplo, xcape, xmodmap), sendo o resultado final muitas vezes vinculado a um ambiente específico (X11). keyd tenta resolver esse problema fornecendo um daemon flexível para todo o sistema que remapeia chaves usando primitivas de entrada em nível de kernel (evdev, uinput).
O formato de configuração passou por diversas iterações desde o primeiro lançamento. Para aqueles que estão migrando suas configurações da v1, é melhor reler a página de manual.
Veja também: changelog.
keyd possui vários recursos exclusivos, muitos dos quais tradicionalmente encontrados apenas em firmware de teclado personalizado, como QMK, bem como alguns que são exclusivos do keyd.
Alguns dos mais interessantes incluem:
C-1
sem quebrar a semântica do modificador.Nota: master serve como branch de desenvolvimento, ocasionalmente algumas coisas podem quebrar entre os lançamentos. As versões são marcadas e devem ser consideradas estáveis.
git clone https://github.com/rvaiya/keyd
cd keyd
make && sudo make install
sudo systemctl enable keyd && sudo systemctl start keyd
Instale e inicie o keyd (por exemplo, sudo systemctl enable keyd
)
Coloque o seguinte em /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
Os nomes das chaves podem ser obtidos usando o comando keyd monitor
. Observe que enquanto o keyd estiver em execução, a saída deste comando corresponderá à saída do keyd. Os eventos de entrada originais podem ser vistos primeiro parando o keyd e depois executando o comando. Veja a página de manual para mais detalhes.
Execute sudo keyd reload
para recarregar o conjunto de configurações.
Consulte a página de manual ( man keyd
) para uma descrição mais abrangente.
Erros de configuração aparecerão na saída do log e podem ser acessados da maneira usual usando o gerenciador de serviços do seu sistema (por exemplo, sudo journalctl -eu keyd
).
Nota : É possível inutilizar sua máquina com um arquivo de configuração incorreto. Se você se encontrar nesta posição, a sequência de teclas especial backspace+escape+enter
deve fazer com que a tecla seja encerrada.
Alguns mouses (por exemplo, o Logitech MX Master) são capazes de emitir chaves e, consequentemente, são correspondidos pelo ID curinga. Pode ser necessário colocá-los explicitamente na lista negra.
Adicione-se ao grupo codificado:
usermod -aG keyd <user>
Preencha ~/.config/keyd/app.conf
:
POR EXEMPLO
[alacritty]
alt.] = macro(C-g n)
alt.[ = macro(C-g p)
[chromium]
alt.[ = C-S-tab
alt.] = macro(C-tab)
Correr:
keyd-application-mapper
Você provavelmente desejará colocar keyd-application-mapper -d
em algum lugar na lógica de inicialização do servidor de exibição (por exemplo, ~/.xinitrc), a menos que esteja executando o Gnome.
Veja a página de manual para mais detalhes.
Suporte experimental para computadores de placa única (SBCs) via usb-gadget foi adicionado como cortesia de Giorgi Chavchanidze.
Consulte usb-gadget.md para obter detalhes.
Também existem pacotes de terceiros para algumas distribuições. Se você deseja adicionar o seu à lista, envie um PR. Estes são gentilmente mantidos pelos membros da comunidade, nenhuma responsabilidade pessoal é assumida por eles.
pacote com chave mantido por @jirutka.
Pacote Arch Linux mantido por empacotadores Arch.
Pacotes experimentais keyd
e keyd-application-mapper
podem ser encontrados nos artefatos de construção de CI do repositório de pacotes Debian em andamento:
Qualquer desenvolvedor Debian que esteja disposto a revisar o esforço de debianização e patrocinar seu upload é encorajado a entrar em contato com @rhansen (veja também o bug do Debian ITP).
Pacote COPR mantido por @alternateved.
Pacote opensuse mantido por @bubbleguuum.
Fácil instalação com sudo zypper in keyd
.
Pacotes experimentais keyd
e keyd-application-mapper
podem ser encontrados no arquivo ppa:keyd-team/ppa
.
Se você deseja ajudar a manter este PPA, entre em contato com @rhansen.
[ids]
*
[main]
leftshift = oneshot(shift)
capslock = overload(symbols, esc)
[symbols]
d = ~
f = /
...
Muitos usuários provavelmente não estarão interessados em aproveitar ao máximo o keyd. Para quem busca melhorias simples na qualidade de vida, posso recomendar a seguinte configuração:
[ids]
*
[main]
shift = oneshot(shift)
meta = oneshot(meta)
control = oneshot(control)
leftalt = oneshot(alt)
rightalt = oneshot(altgr)
capslock = overload(control, esc)
insert = S-insert
Isso sobrecarrega a tecla capslock para funcionar como escape (quando tocada) e controle (quando pressionada) e remapeia todos os modificadores para teclas 'oneshot'. Assim, para produzir a letra A, agora você pode simplesmente tocar em shift e depois em a, em vez de mantê-la pressionada. Finalmente, ele remapeia a inserção para a inserção S (cola no X11).
xmodmap e amigos são ferramentas de nível de servidor de exibição com funcionalidade limitada. keyd é uma solução de nível de sistema que implementa recursos avançados como camadas e modificadores oneshot. Embora algumas ferramentas X ofereçam funcionalidades semelhantes, não conheço nada que seja tão flexível quanto digitado.
keyd foi escrito há vários anos para me permitir experimentar facilmente diferentes layouts em minha crescente coleção de teclados. Na época, o kmonad não existia e firmware de teclado personalizado como o QMK (que inspirou o keyd) era a única maneira de obter recursos comparáveis. Tomei conhecimento do kmonad depois de publicar o keyd. Embora kmonad seja um excelente projeto com objetivos semelhantes, ele adota uma abordagem diferente e tem uma filosofia de design diferente.
Notavelmente, keyd foi escrito inteiramente em C com desempenho e simplicidade em mente e provavelmente nunca será tão configurável quanto kmonad (que é extensível em Haskell). Dito isto, ele fornece (na opinião do autor) os recursos mais valiosos em menos de 2.000 linhas de C, ao mesmo tempo que fornece um formato de configuração independente de linguagem simples.
Se você sentir que algo está faltando ou encontrar um bug, sinta-se à vontade para registrar um problema no github. keyd tem uma filosofia de design minimalista (mas sensata) que omite intencionalmente certos recursos (por exemplo, executar executáveis arbitrários como root). Coisas que já existem em firmware de teclado personalizado como QMK são bons candidatos para inclusão.
Consulte CONTRIBUINDO. Canal IRC: #keyd no oftc