Confira este howto . Ele diz que loadkeys
entende os keyyms como SShift, SCtrl, SAlt
como equivalentes fixos que você pode colocar no mapa de teclas do console.
Esta página do archlinux mostra o que você deve fazer. Basicamente, crie um pequeno arquivo de keymaps substituindo as chaves para shift e assim por diante pelo equivalente persistente. A seguir, você pode fornecer o conjunto necessário de códigos de teclas:
dumpkeys |
awk 'NR==1{print}
$4~"Shift|Control|Alt"{printf "%s %s %s S%s\n",$1,$2,$3,$4}'
Exemplo de saída:
keymaps 0-255
keycode 29 = SControl
keycode 42 = SShift
keycode 54 = SShift
keycode 56 = SAlt
keycode 97 = SControl
keycode 100 = SAlt
keycode 125 = SAlt
keycode 126 = SAlt
Coloque esses dados em um arquivo stickyKeys
e carregue-os
sudo loadkeys stickyKeys
A página archlinux fornece uma unidade systemd adequada para carregar isso na inicialização. Em caso de problemas, você pode usar showkey
para mostrar a você cada código de acesso enquanto digita as chaves.
Eu não tentei isso, mas quando você constrói o kernel, um mapa de teclado padrão é compilado. Você pode substituir este mapa de teclado pelo seu desejado. Se olharmos para os drivers / tty / vt / Makefile , vemos uma regra para defkeymap.o
$(obj)/defkeymap.o: $(obj)/defkeymap.c
mas no diretório não há defkeymap.c
. No entanto, existe o arquivo defkeymap.c_shipped
e parece que o KBuild removerá o _shipped
sufixo para a compilação.
Mais tarde no Makefile, há um comentário e uma regra opcional:
# Uncomment if you're changing the keymap and have an appropriate
# loadkeys version for the map. By default, we'll use the shipped
# versions.
# GENERATE_KEYMAP := 1
ifdef GENERATE_KEYMAP
$(obj)/defkeymap.c: $(obj)/%.c: $(src)/%.map
loadkeys --mktable $< > $@
endif
Assim, podemos ver como criar nosso próprio arquivo defkeymap.c
a partir do mapa de teclado atual executando
dumpkeys | loadkeys --mktable >defkeymap.c
Remova o arquivo enviado e tente construir o kernel. Usar dumpkeys
fornece uma tabela muito maior que a padrão, embora eu não saiba por quê. Você pode preferir encontrar a fonte para o seu mapa de teclado atual, como /usr/lib/kbd/keymaps/xkb/gb-intl.map.gz
ou similar, descomprimido, edite isso com suas alterações fixas e forneça esse arquivo para loadkeys --mktable
.
Observe que, uma vez que você inicializou, este keymap embutido provavelmente será substituído no início por qualquer mecanismo que seu sistema operacional use para definir algum mapa de teclado padrão configurado.