Estou tentando remapear a tecla Scroll Lock para que ela produza o código de acesso de qualquer uma das teclas do Windows.
Primeiro de tudo, despejo o mapa de teclado atual:
xkbcomp $DISPLAY original-dump
Em seguida, encontre os códigos das chaves nas quais estou interessado:
cat original-dump | grep SCLK
<SCLK> = 78;
cat original-dump | grep LWIN
<LWIN> = 133;
Agora imprimo os nomes dos componentes em um arquivo:
setxkbmap -print > original-components
Edite o arquivo para adicionar minha modificação de código-chave:
xkb_keymap {
xkb_keycodes {
include "evdev+aliases(qwerty)"
// Remap Scroll-lock to the keycode of LWIN(133)
<SCLK> = 133;
};
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+us+inet(evdev)" };
xkb_geometry { include "pc(pc105)" };
};
Salve o arquivo acima como componentes modificados e execute:
xkbcomp modified-components $DISPLAY
Despejar novamente:
xkbcomp $DISPLAY original-dump
Verifique os códigos-chave:
cat another-dump | grep SCLK
<SCLK> = 133;
Até aí tudo bem, mas quando executo xev
, o código da tecla Scroll Lock ainda está78.
Se eu correr:
xmodmap -e "keycode 78 = Super_L"
xevainda me mostra78, mas pelo menos os atalhos que criei no XFCE para LWIN e RWIN funcionam.
Gostaria de saber o que estou fazendo de erradoxkb. Obrigado.
Responder1
Tentei a seguinte nova abordagem (com sucesso)
Criou um novo arquivo nomeado sclkfile
no /usr/share/X11/xkb/symbols/
diretório e adicionou o seguinte conteúdo:
// Make the Scroll Lock key a left Super.
xkb_symbols "sclk_super" {
replace key <SCLK> { [ Super_L ] };
modifier_map Mod4 { <SCLK> };
};
Adicionada a nova regra em /usr/share/X11/xkb/rules/evdev
:
sclkoption:sclk_super = +sclkfile(sclk_super)
E descrições da regra em /usr/share/X11/xkb/rules/evdev.lst
:
! option
sclkoption Scroll Lock behaviour
sclkoption:sclk_super Scroll Lock is Super
Aqui também /usr/share/X11/xkb/rules/evdev.xml
:
<configItem>
<name>sclkoption</name>
<description>Scroll Lock behaviour</description>
</configItem>
<option>
<configItem>
<name>sclkoption:sclk_super</name>
<description>Scroll Lock is Super</description>
</configItem>
</option>
Finalmente execute:
$ setxkbmap -option sclkoption:sclk_super
Sem erros e quando imprimo os componentes do meu layout:
$ setxkbmap -print
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+us+inet(evdev)+sclkfile(sclk_super)" };
xkb_geometry { include "pc(pc105)" };
};
A nova regra está aí.
Agora, se eu executar xev
:
keycode 78 (keysym 0xffeb, Super_R)
O código-chave ainda é 78, mas o símbolo da chave é Super_R.Sucesso.