A verdadeira questão é: você pode fazer as coisas que deseja fazer com essas chaves?
Eles são sempre as mesmas chaves depois de reiniciar ou relogar? Você pode configurá-los como atalhos (com e sem modificadores)? Se o XKB vê a chave como XF86Launch1 ou XF86Launch5 é menos importante que:
- é consistentemente essa chave?
- você pode dizer SoftwareX para fazer FunctionY quando essa tecla é pressionada? (inicie seu media player, maximize a janela atual ou qualquer outra função que você queira que a tecla execute)
É um erro?
-
Talvez. Certamente não está carregando os símbolos
inet(microsoft4000)
(essa é a seçãomicrosoft4000
de/usr/share/X11/xkb/symbols/inet
que você cita). Parece que isso pode ser incluído na definição do modelo ou como uma opção separada, mas não há uma regra para isso (em/usr/share/X11/xkb/rules/evdev*
). Mudar para o modelomicrosoft7000
pode se aproximar do que você espera. -
... mas provavelmente não. A definição exata dessas chaves realmente não importa - contanto que elas sejam definidas como algo reconhecível e exclusivo umas das outras, o XKB fez o seu trabalho. Para esse fim, suas chaves parecem estar funcionando bem. Eu suspeito que a data dos símbolos
inet(microsoft4000)
de 2006-ish , mas foram substituídos mais tarde porinet(evdev)
seção.
Você está vendo XF86Launch5 e assim por diante, porque a seção inet(evdev)
define essas chaves:
// Evdev Standardized Keycodes
partial alphanumeric_keys
xkb_symbols "evdev" {
...
key <FK14> { [ XF86Launch5 ] };
key <FK15> { [ XF86Launch6 ] };
key <FK16> { [ XF86Launch7 ] };
key <FK17> { [ XF86Launch8 ] };
key <FK18> { [ XF86Launch9 ] };
};
... e /usr/share/X11/xkb/keycodes/evdev
confirma que são traduzidos como códigos de tecla 192-196
:
default xkb_keycodes "evdev" {
...
<FK14> = 192;
<FK15> = 193;
<FK16> = 194;
<FK17> = 195;
<FK18> = 196;
...
Vamos carregar mesmo assim!
Primeiro, diga às configurações do GNOME para deixar o teclado em paz:
gsettings set org.gnome.settings-daemon.plugins.keyboard active false
# change false to true to reenable
Em seguida, execute isso para testes:
setxkbmap -print |
sed -e '/xkb_symbols/s/"[[:space:]]/+inet(microsoft4000)&/' |
xkbcomp - $DISPLAY
Esse canal despeja seu setxkbmap -print
output, o sed
adiciona a definição inet(microsoft4000)
à linha de símbolos:
xkb_symbols { include "pc+us+inet(evdev)+capslock(escape)+inet(microsoft4000)" };
... que é então canalizado para xkbcomp
para compilação e instalação no Xserver. Agora xev
deve mostrar as chaves XF86Launch1-5
.
Se isso funcionar, você pode fazer uma mudança permanente de duas maneiras.
-
Você pode deixar o
gsettings
desativado e adicionar osetxkbmap ... | sed ... | xkbcomp ...
pipeline a um script$HOME/.xprofile
que será executado no login. (Como alternativa, redirecione a saída do sed para$HOME/.config/my-xkb-map
e você só precisará do comandoxkbcomp
no login.) -
Você pode editar
/usr/share/X11/xkb/rules/evdev*
para adicionar o arquivo de símbolos como uma opção oficial.evdev
é a conversão de opção para arquivo;evdev.lst
lista uma descrição para cada opção;evdev.xml
é uma versão XML das descrições. Eu acredito que você precisa acertar emevdev.xml
para ferramentas GUI para mostrar a nova opção, mas apenasevdev.lst
é necessário parasetxkbmap
entender. As alterações nesses arquivos de sistema podem ser substituídas por atualizações futuras, portanto, faça backups ou um scriptsed
oupatch
para adicioná-los novamente quando necessário.
XKB é ótimo! Vamos fazer com que essas chaves façam outra coisa completamente diferente!
Whoa lá, vaqueiro. Você certamente pode criar sua própria personalização , se desejar. Copie essa cláusula inet(microsoft4000)
symbol para outro arquivo e defina essas chaves como quiser. F13 XF86AudioMicMute ?
Veja os recursos no final da resposta do superusuário para mais rabbitholes XKB.