Como remapear a tecla caps lock?

69

No passado, eu costumava usar xmodmappara impedir o Caps Lockfuncionamento do botão e, em seguida, dizia ao Launchy para manipular a tecla pressionada. Parece que não consigo mais fazer isso.

Qual é a melhor maneira de desativar Caps Locko comportamento normal e fazê-lo fazer outra coisa?

Mehrdad
fonte
11
Para o Ubuntu 14.04, consulte askubuntu.com/q/444714/25388
Léo Léopold Hertz,

Respostas:

71

De howtogeek.com, que tem uma boa resposta para qualquer sistema operacional.

Para Linux (incluindo Ubuntu):

setxkbmap -option <OPTION>

Onde <OPTION>pode estar, por exemplo:

  • caps:none - Desativa Caps Lock.
  • caps:super- Caps Lock se torna um Super adicional (também conhecido como tecla Win).
  • caps:ctrl_modifier- Caps Lock se torna um Ctrl adicional .
  • caps:numlock- Caps Lock se torna um Num Lock adicional .
  • caps:escape- Caps Lock se torna um escape adicional .
  • caps:backspace- Caps Lock se torna um Backspace adicional .
  • caps:swapescape - Caps Lock se torna Escape e Escape se torna Caps Lock

Nota: O Xmodmap foi descontinuado em favor do setxkbmap.

Wernight
fonte
3
te amo cara, obrigado, ele funciona para ubutnu 14.10
Andrzej Rehmann
2
funciona no ubuntu 15.10 também! obrigado!
Donatello
6
agradável e simples, funciona em 16.04
chepyle
4
Para restaurar quaisquer setxkbmapalterações (ou seja, se você precisar da tecla Caps de volta ao seu local original), basta executar o seguinte:setxkbmap -option
landroni
11
Se você reformulou a tecla Capslock para retroceder e agora se pergunta por que ela não exclui palavras se você a mantiver pressionada, é porque precisa usar um comando extra. Depois setxkbmap -option caps:backspaceentre xset r 66e voilá.
Gabriel
19

Você pode desativá-lo acessando o teclado-> Layouts-> opções-> comportamento do caps lock e escolha "desativar o caps lock".


Editar :

Não sei por que parece inconveniente com outras teclas do teclado.

Mas o Launchy funciona bem comigo depois de tentar com CTRL+ Super+ Space.

insira a descrição da imagem aqui

E você precisa fazer uma lista branca launchydos ícones da bandeja. Consulte Como faço para acessar e permitir que mais ícones estejam na bandeja do sistema? . Também é necessário adicioná-lo aos aplicativos de inicialização, pois não funcionará quando não for aberto.


Afinal, como alternativa ao Launcy, tente o Synapse para sua melhor integração com o gnome e a unidade.

Vida binária
fonte
Esta opção não parece estar disponível para mim no Ubuntu 15.04.
MichielB
19

No Ubuntu 11.10 - 13.04

  1. Abra o aplicativo Layout do teclado e clique no botão "Opções".
  2. Uma lista de opções de religação será exibida. Selecione "Comportamento das teclas Caps Lock".
  3. Selecione sua opção preferida de redirecionamento Caps Lock.

Captura de tela das opções disponíveis

Jjed
fonte
11
@JacobJohanEdwards Nota para si mesmo, verifique se xmodmap -e 'clear Lock' -e 'keycode 0x42 = Escape'ainda funciona.
Jjed
Para usuários do vim, o 'Practical Vim' recomenda mapear o caps lock para ctrl no nível do sistema. Layout do teclado> Opções> Posição da tecla Ctrl> Caps Lock enquanto Ctrl faz o truque.
rpattabi
12
Essas configurações não existem mais na 13.10. Instale gnome-tweak-tool, você terá configurações semelhantes em "Digitação".
PCWorld
Isso não está funcionando para mim no Ubuntu 12.10. Mexer com essas configurações no centro de controle do gnome não parece ter nenhum efeito.
Andrew Wagner
4
Por que eles removeram essas opções do 14.04?
Léo Léopold Hertz
16

Isso é basicamente uma modificação da resposta fornecida em https://askubuntu.com/a/223674/22073 .

Você também pode modificar o comportamento do Caps Lock usando um XKBOption. Essas mudanças são até propagadas para os consoles virtuais (/ dev / tty [1-6] ou Ctrl-Alt-F [1-6]).

Por exemplo, para desativar o Caps Lock, você teria o seguinte em /etc/default/keyboard:

# Check /usr/share/doc/keyboard-configuration/README.Debian for
# documentation on what to do after having modified this file.

# The following variables describe your keyboard and can have the same
# values as the XkbModel, XkbLayout, XkbVariant and XkbOptions options
# in /etc/X11/xorg.conf.

XKBMODEL="pc105"
XKBLAYOUT="us"
XKBVARIANT=""
XKBOPTIONS="caps:none"

# If you don't want to use the XKB layout on the console, you can
# specify an alternative keymap.  Make sure it will be accessible
# before /usr is mounted.
# KMAP=/etc/console-setup/defkeymap.kmap.gz

Então você executaria:

sudo dpkg-reconfigure keyboard-configuration

Para uma lista completa das personalizações do XKBOPTIONS, dê uma olhada /usr/share/X11/xkb/rules/base.lst. Aqui está a lista completa da minha máquina Ubuntu 13.10: http://sprunge.us/cUZO

Mais informações podem ser encontradas no wiki do ArchLinux: https://wiki.archlinux.org/index.php/Keyboard_Configuration_in_Xorg

Ehtesh Choudhury
fonte
Perfeito, estou usando XKBOPTIONS="ctrl:swapcaps"para trocar o Ctrl esquerdo por Caps.
Márcio
Ele funciona no 16.04 no X e nos consoles virtuais.
jfs
11

Para remapear o caps_lock inútil em um turno básico, faça

xmodmap -e "keycode 66 = Shift_L"
jobwat
fonte
Isso não persiste após a reinicialização.
Czarek Tomczak 16/10
3
Para persistir após a reinicialização, faça: Ubuntu Dash Home> Aplicativos de Inicialização> Adicionar> Digite o comando acima.
Czarek Tomczak
7

O método a seguir usa a combinação do Compiz para iniciar um aplicativo quando uma tecla é pressionada.

Em suma -

  1. altere o comportamento da tecla Caps Lock para imitar outra tecla.
  2. Configure o compiz para escutar a chave recém-imitada e executar um script personalizado.

Alterar a tecla caps lock

Altere também o comportamento da tecla Caps Lock, você pode usar xmodmapo seguinte:

  • crie um arquivo, por exemplo, "capslock"
  • copie e cole o seguinte no arquivo
keycode 66 = cent
clear Lock
add Control = cent
  • agora execute o xmodmap para reconhecer sua alteração:

xmodmap capslock

Para executar permanentemente, adicione este comando aos aplicativos de inicialização.

Pressionar Caps Lock agora simula pressionar uma tecla "cent" - observe que essa não é uma tecla que realmente existe no meu teclado.

Você pode obter uma lista dos nomes do KeySym aqui .

Configurar o Compiz

Inicie o Gerenciador de configurações CompizConfig

Na seção geral, verifique se "Comandos" está ativado e configure um comando conforme mostrado:

insira a descrição da imagem aqui

Nota: ative a ligação de teclas e use a "combinação de teclas de agarrar" para reconhecer sua tecla "cent". Infelizmente, você não pode fazer com que o compiz reconheça a própria chave de travamento de boné.

insira a descrição da imagem aqui

Obviamente - mude "firefox" para qualquer comando que você usa para iniciar "launchy"

Agora, quando você pressionar a tecla Caps Lock, o compiz reconhecerá a tecla "cent" mapeada e executará o comando - nesse caso, o firefox - no seu caso "launchy".

liberdade de expressão
fonte
Após alguns minutos, as configurações retornam - e novamente o Caps Lock tem um comportamento normal.
Vitaly Zdanevich
5
  1. Use o comando xev. Quando você pressionar enter, o xev será iniciado. O xev leva todas as informações de entrada e informações sobre a chave para a linha de comando. Eu recomendo colocar o mouse sobre a tecla exit da janela do xev, pressionar caps lock (ou qualquer outra tecla que você queira descobrir) e sair imediatamente do xev. As linhas relevantes no meu sistema, para caps lock, são algo como:

    KeyPress event, serial 36, synthetic NO, window 0x4400001,
        root 0x27a, subw 0x0, time 19164277, (16,-9), root:(1156,46),
        state 0x2, keycode 66 (keysym 0xffe5, Caps_Lock), same_screen YES,
        XLookupString gives 0 bytes: 
        XmbLookupString gives 0 bytes: 
        XFilterEvent returns: False
    
    KeyRelease event, serial 36, synthetic NO, window 0x4400001,
        root 0x27a, subw 0x0, time 19164397, (16,-9), root:(1156,46),
        state 0x2, keycode 66 (keysym 0xffe5, Caps_Lock), same_screen YES,
        XLookupString gives 0 bytes: 
        XFilterEvent returns: False
    

    Observe keycode(66) e keysym(0xffe5).

    Agora, você também pode obter dados para outra chave - uma que você realmente não usa e que, no contexto em que deseja usar o botão caps lock, não faz nada. Portanto, se você quiser que o caps lock ative a caixa de pesquisa do Unity (como o super costuma fazer), talvez use `, por exemplo. Na minha máquina:

    keycode 49 (keysym 0x60, grave)
    
  2. Ligue a função da nova tecla ao botão Caps Lock, usando xmodmap. Tenho certeza que você deseja usar um comando como:

    xmodmap -e "keycode 66=0x60"
    

    Agora, se você pressionar o botão de bloqueio de maiúsculas e minúsculas em uma caixa de texto, o caractere grave (`) aparecerá. Mas se você mapear uma tecla de atalho, ela fará outra coisa. Se você quiser usá-lo em uma caixa de texto, talvez substitua caps lock por shift esquerdo ou f10 ou qualquer outra coisa que não pareça interferir no comando que você deseja usar.

  3. Teste-o para garantir que o comando que eu dei funcione da maneira que você deseja.

  4. Vá para aplicativos de inicialização e adicione esse comando aos aplicativos de inicialização. Dessa forma, a tecla mudará corretamente toda vez que você iniciar.

  5. Dança.

(grite para a empresa) Alterar teclas de atalho (hardware para software)

Além disso, para obter mais ajuda no xmodmap:

http://www.xfree86.org/4.2.0/xmodmap.1.html

http://www.in-ulm.de/~mascheck/X11/xmodmap.html

Daniel
fonte
5

Ubuntu 16.04

setxkbmap -option <OPTION> da resposta de Wernight pareceu funcionar imediatamente para mim.

No entanto, ele desapareceria na reinicialização. Para resolver isso, adicionei aos meus aplicativos de inicialização

  1. Pesquise e execute Startup Applications>> Clique em Adicionar
  2. Coloque /usr/bin/setxkbmap -option <OPTION>como o comando (Nota: o caminho completo é importante)

Substitua <OPTION>por algo como caps:escape(eu o uso para vi)

fundo

Acabei de atualizar de 15.10 para 16.04 e o que quer que eu tenha usado para mapear isso antes de parar de funcionar.

Anthony Astige
fonte
2

A opção que eu achei melhor para mim (em qualquer wm / de compatível com X) é adicionar

Option "XkbOptions" "caps:swapescape"

dentro de

Section "InputClass"
    Identifier "system-keyboard"
    MatchIsKeyboard "on"
    Option "XkbLayout" "US"
    Option "XkbOptions" "caps:swapescape" # << is what you want
EndSection

bloqueie o arquivo /etc/X11/xorg.conf.d/00-keyboard.conf (crie se necessário).

Roman Riesen
fonte
1

Embora a opção xmodmap funcionasse, eu queria encontrar uma opção que use a GUI. Está disponível para mim (usando o Ubuntu 15.10):

  • instale o gnome-tweak-tool
  • vá para 'tipo'
  • em "Comportamento da tecla Caps Lock", escolha "Caps lock is disabled"
MichielB
fonte
-1

A solução mais robusta é comprar um teclado que permita remapear as teclas do firmware, ou seja, um teclado programável e profissional.

Eles geralmente custam cerca de 200 dólares e também possuem chaves mecânicas de alto grau. Eles são caros, mas são a única maneira de evitar lutar com isso a cada nova máquina em que você se senta, e cada vez que os desenvolvedores fazem mudanças na infraestrutura do sistema operacional tão fundamentais quanto o mapa do teclado.

Andrew Wagner
fonte
11
Isso não ajuda com um laptop.
21415 wallyk