Como trocar programaticamente as teclas caps lock e esc?

18

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, 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 o Ubuntu da maneira que eu gosto e não consegui encontrar uma maneira programável ou com script para alterar esse item de configuração.

Não estou procurando opções que troquem as teclas em nenhum outro nível que não o próprio gnome; portanto, o que estou procurando é uma maneira de criar um script dessa alteração e que ela apareça na configuração do teclado que eu costumava usar, caso eu decida reverta-o manualmente no futuro.

Jacobo de Vera
fonte
boa ideia! Reclamo-me o tempo todo de mover minha mão para o Esc enquanto trabalhava no Vim, mas agora esta é a solução! obrigado, bro ;-)
sazonal
11
Tenha cuidado, porém, uma vez que você se acostumar a tê-los trocado, ele fica estranho quando você tem que trabalhar no teclado de ninguém :)
Jacobo de Vera
2
Outra opção é Ctrl-C em vez de Esc. (Funciona em todos os teclados.
Eric Wilson
@FarmBoy, awesome! Eu não conhecia aquele!
21411 Jacobo de Vera

Respostas:

22

Você pode fazer isso através da GUI, abra o Keyboard Preferencespainel de controle (em System -> Preferences) e selecione a Layoutguia. Clique no Options...botão para abrir a caixa de diálogo de opções de layout. Expanda a Caps Lock key behaviourseção 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 (que retornarão 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 gnome-settings-daemonajustar 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, e não espaços. Você pode desativar o comportamento novamente definindo a chave gconf como uma lista vazia.

James Henstridge
fonte
A opção gconf é exatamente o que eu estava procurando, no entanto, sua configuração foi transformar o caps lock em uma chave de escape e a chave de escape em uma tecla tab. Mudei a configuração manualmente novamente e dei uma olhada no valor no gconf-editor, na verdade era [caps<tab>caps:swapescape]. Tudo funciona agora, estou aceitando sua resposta e sugiro que você a edite para alterar o valor para referência futura. Obrigado.
Jacobo de Vera
@ Jacobo No futuro, você pode sugerir a edição - basta clicar no botão editar abaixo da resposta. Sua alteração será rapidamente aprovada por alguém. Fiz a edição para você (verifique se está correto). Enfim, boa resposta @ James! +1
Stefano Palazzo
11
@ Stefano, obrigado, eu não tinha notado a opção de edição.
21411 Jacobo de Vera
Existe uma maneira de fazer isso funcionar no GDM na tela de login?
Lindhe