Como você deseja remapear as chaves para todos os aplicativos, a melhor opção é usar o xmodmap. É flexível e muito poderoso, mas envolve digitar alguns comandos em um terminal.
Etapa 0 - A abordagem
O servidor X gerencia o teclado e todos os eventos principais e converte isso em códigos de chave para todos os aplicativos.
A abordagem seria mapear uma tecla modificadora (como tecla Alt Super ou Direita Alt) como a tecla "switch de modo" e dizer ao servidor X para gerar códigos diferentes, dependendo de uma tecla ser pressionada com a tecla Mode pressionada ou não.
Por padrão, não há chave de chave de modo definida e todas as teclas são configuradas para gerar o mesmo código quando pressionadas com ou sem chave de modo. Isso é bom, pois isso significa que, exceto pelas chaves substituídas explicitamente, nenhuma outra chave se comportará de maneira diferente ou precisará de configuração adicional.
No entanto, eu gostaria que você considerasse o uso da tecla Alt Alt como chave de modo, especialmente se você também estiver usando o compiz, já que alguns plug-ins do compiz mapeiam atalhos de super tecla (por exemplo, seletor de janelas, alternador etc.). Se você não está interessado em controlar o compiz pelo teclado, o Super está ótimo.
Para o xmodmap, as super chaves são identificadas como Super_L ou Super_R. Você precisa escolher um para usar como a tecla do interruptor de modo. Como alternativa, a tecla alt correta é Alt_R. Você pode confirmar isso executando o xev e pressionando as teclas necessárias no teclado. Veja esta postagem para as etapas.
Etapa 1 - Configurando o Mapa Modificador
Abra um terminal ( Applications -> Accesories -> Terminal
) e execute o seguinte comando para criar um arquivo com as combinações de teclas atuais . Vamos usar isso como ponto de partida.
xmodmap -pke > curkeys.map
xmodmap -pm >> curkeys.map
Abra isso no seu editor de texto favorito. gedit curkeys.map &
abre no gedit. No final do arquivo, você verá algumas linhas como esta:
keycode 253 =
keycode 254 =
keycode 255 =
xmodmap: up to 4 keys per modifier, (keycodes in parentheses):
shift Shift_L (0x32), Shift_R (0x3e)
lock Caps_Lock (0x42)
control Control_L (0x25), Control_R (0x69)
mod1 Alt_L (0x40), Alt_R (0x6c), Meta_L (0xcd)
mod2 Num_Lock (0x4d)
mod3
mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce), Hyper_L (0xcf)
mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb)
Exclua a linha começando com "xmodmap: até 4 ..."
Edite o mapa modificador para que fique assim. Coloque a palavra "adicionar" no início de cada linha e insira "=" após o nome do modificador. Em seguida, remova os códigos entre parênteses e vírgulas. Observe também que mudei Mode_switch
de uma mod5
linha para mod3
outra desde que ela estava vazia. A tabela modificada deve se parecer com isso - o conteúdo real variará ligeiramente no seu caso daqueles abaixo (depende do layout do teclado).
add shift = Shift_L Shift_R
add lock = Caps_Lock
add control = Control_L Control_R
add mod1 = Alt_L Meta_L Alt_R
add mod2 = Num_Lock
add mod3 = Mode_switch
add mod4 = Super_L Super_R Super_L Hyper_L
add mod5 = ISO_Level3_Shift
Remapear a chave de chave de modo físico. Adicione uma linha como esta no final (substitua Super_L por Super_R ou Alt_R, se necessário).
keysym Super_L = Mode_switch
Remova o nome da chave (Super_L) de qualquer definição de modificador. Para Super_L, isso significa removê-lo da linha mod4.
add mod4 = Super_R Hyper_L
Agora, a tecla "Super" direita ainda atuará como uma super chave normal, enquanto a tecla esquerda terá propriedades especiais.
Agora precisamos remapear as teclas para produzir códigos diferentes, pressionados enquanto pressionamos Super_L ou não. Cada linha em nosso arquivo que começa com keycode
especifica 4 academias de teclas para cada tecla a ser gerada com base no pressionamento das teclas Mod1 (shift shift) e Mode. ( Link )
!...........................................................................
! Key Base Shift Mode Mode+Shift
!---------------------------------------------------------------------------
keycode 13 = 4 dollar 4 quotedbl
keycode 14 = 5 percent 5 colon
keycode 15 = 6 asciicircum 6 comma
keycode 16 = 7 ampersand 7 period
...
keycode 45 = k K k K
Se queremos que a tecla Super_L + k gere uma tecla "+", precisamos modificá-la para ler
keycode 45 = k K plus plus
O plus final também mapeia Shift + Super_L + k para plus, mas isso pode ser mapeado para outra coisa. Para cada chave, há exatamente 1 linha para modificar. Edite mais linhas para remapear mais chaves - deixe as 2 primeiras entradas intactas para manter o comportamento normal de pressionamento de tecla.
Salve o arquivo e saia do editor.
Instale o mapa de teclas executando os seguintes comandos em um terminal. O primeiro o configura para esta sessão, o segundo o torna permanente para futuras sessões.
xmodmap curkeys.map
cp curkeys.map ~/.Xmodmap
Você pode testar isso imediatamente pressionando as teclas modificadas (Super_L + k, por exemplo).
Etapa 3 - Adicionando / revisando o mapa
Uma vez instalado o mapa modificado, é fácil adicionar novas chaves.
Use xev para encontrar os códigos e academias de chaves
teste-o executando este comando para mapear a chave:
xmodmap -e "keycode <code> = <base> <shift> <new-mapping> <new-shift-mapping>"
Substitua os itens entre colchetes angulares (como <code>
<base>
etc) pelos valores apropriados.
Faça backup do curkeys.map
arquivo.
- Abra
curkeys.map
e edite a linha do código-chave correspondente.
Reaplique com os comandos abaixo (o primeiro não é necessário se você executou a etapa 2)
xmodmap curkeys.map
cp curkeys.map ~/.Xmodmap
Nota: 1 : modificações feitas nos atalhos de teclado (por exemplo,System -> Preferences -> Keyboard Shortcuts
) afetam o mapa do modificador e geralmente serão perdidas no próximo login. Então, por favor, evite isso.
Nota: 2 : Às vezes, recebo mensagens de erro como essa ao usar este método. Não sei o que isso significa, no entanto, geralmente são inofensivos.
X Error of failed request: BadValue (integer parameter out of range for operation)
Major opcode of failed request: 118 (X_SetModifierMapping)
Value in failed request: 0x17
Serial number of failed request: 263
Current serial number in output stream: 263
Ajuda detalhada para xmodmap está disponível aqui .