Como trocar programaticamente as teclas caps lock e esc?

17

Eu sou um usuário pesado do Vim e uma das primeiras coisas que faço quando começo a trabalhar em uma instalação limpa do Ubuntu é trocar as teclas caps lock e esc para reduzir os movimentos das mãos sobre o teclado.

Até agora eu tenho feito isso através da caixa de diálogo de configuração do teclado, mas agora estou escrevendo um conjunto de scripts que definirá o Ubuntu do jeito que eu gosto e não consegui encontrar um script ou maneira programável de alterar este item de configuração.

Eu não estou procurando por opções que troquem as chaves em qualquer outro nível além do gnome, então o que eu estou procurando é uma maneira de fazer o script dessa mudança e fazer com que apareça na configuração do teclado que eu usei, Eu decido reverter manualmente no futuro.

    
por Jacobo de Vera 19.04.2011 / 10:04

1 resposta

22

Você pode fazer isso por meio da GUI, abra o painel de controle Keyboard Preferences (em System -> Preferences ) e selecione a guia Layout . Clique no botão Options... para abrir a caixa de diálogo de opções de layout. Expanda a seção Caps Lock key behaviour e selecione Swap ESC and Caps Lock .

Existem algumas maneiras de escrever esse tipo de coisa.

Diretamente via Xkb

Podemos fazer a alteração diretamente com o seguinte:

setxkbmap -option caps:swapescape

Você pode desativar todas as opções de layout atuais (o que retornará o caps lock ao seu comportamento padrão) com:

setxkbmap -option ''

Via GConf

O painel de controle de preferências do teclado armazena sua configuração via gconf , com o layout realmente sendo aplicado por gnome-settings-daemon . Portanto, você pode fazer com que gnome-settings-daemon ajuste o layout atualizando o gconf você mesmo.

A configuração relevante neste caso parece ser /desktop/gnome/peripherals/keyboard/kbd/options . Então você pode definir a opção com:

gconftool-2 --set /desktop/gnome/peripherals/keyboard/kbd/options \
    --type list --list-type string \
    '[caps<tab>caps:swapescape]'

Acima, <tab> deve ser um caractere de tabulação literal em vez de espaços. Você pode desativar o comportamento novamente definindo a chave do gconf para uma lista vazia.

    
por James Henstridge 19.04.2011 / 10:36