Remapeando o caps-lock para escapar, e o menu para compor, no console do linux

7

Quando rodando o X, eu uso um .xmodmaprc para remapear certas chaves:

! Make it so that both Caps Lock and Escape do Escape
clear Lock
keysym Caps_Lock = Escape
! Remap the menu key as Compose
keysym Menu = Multi_key

Como posso realizar as mesmas coisas no console?

atualizar

Além da solução parcial dada na minha resposta, aprendi que o console mapeia CTRL- . para Compose. Então eu posso ser capaz de me acostumar com isso. A configuração da tecla Menu como Compose não é tão fácil, pois há uma tonelada de códigos de tecla atribuídos a nul e nenhum candidato óbvio para um nome alternativo para Menu.

Eu também percebi que as próprias composições são muito mais limitadas do que as que eu estou acostumado com o X, e que a maioria dos caracteres especiais que eu uso freqüentemente não estão lá. Talvez haja um utilitário que irá traduzir as ligações de composição da sintaxe X para algo que loadkeys possa ler?

    
por intuited 19.02.2011 / 14:35

3 respostas

8

Você terá que editar seu mapa de teclado do console. No meu console, mapeei Escape para Caps Lock e Caps Lock para Escape. Veja como funciona.

  1. Primeiro, você precisa encontrar seu mapa de teclado. Eu uso o layout padrão dos EUA. No meu sistema, ele está localizado em /usr/share/keymaps/i386/qwerty/us.map.gz .
  2. Faça uma cópia do arquivo com um novo nome, por exemplo, us-nocaps.map.gz .
  3. Descompacte o arquivo e abra-o em um editor de texto: gunzip us-nocaps.map.gz && vim us-nocaps.map
  4. Altere os mapeamentos no arquivo ao seu gosto, por exemplo, eu tive keycode 58 = Caps_Lock , que mudei para keycode 58 = Escape .
  5. Gzip o arquivo e carregue-o: gzip us-nocaps.map && loadkeys us-nocaps .

Mais uma coisa: você provavelmente terá que configurar sua distribuição de alguma forma para garantir que os novos mapas de teclado sempre sejam carregados na inicialização, caso contrário você terá que carregar seu mapa de teclado manualmente com loadkeys o tempo todo. Como você faz isso depende de qual distribuição você está usando.

    
por 19.02.2011 / 17:33
2

Para distribuições Debian mais recentes, você não precisa mais de tudo isso.

The keyboard file describes the properties of the keyboard. It is read by setupcon(1) in order to configure the keyboard on the console. In Debian systems the default keyboard layout is described in /etc/default/keyboard and it is shared between X and the console. (man keyboard)

Em /etc/default/keyboard set XKBOPTIONS="caps:escape" , faça:

~$ sudo setupcon

Description of all available keyboard models, layouts, variants and options is available in /usr/share/X11/xkb/rules/xorg.lst." (man keyboard)

    
por 23.07.2017 / 21:14
1

Com alguma ajuda do Cedric, descobri que o Ubuntu não instalou os mapas de teclado em que $ man loadkeys diz que eles deveriam ser ( /usr/share/keymaps ). Esta é uma instalação totalmente nova, então talvez eu precise instalar um pacote para obter mapas de teclado além daquele selecionado durante a instalação.

Em vez de perseguir esse ângulo, e em um esforço para tornar a solução um pouco mais robusta e conveniente, estou fazendo isso:

    $ sudo dumpkeys | sed 's/CtrlL_Lock/Escape/' | sudo loadkeys

Embora eu esteja um pouco confuso sobre por que o sistema de Cedric usa Caps_Lock para caps lock e o meu usa CtrlL_Lock , ele está funcionando independentemente.

    
por 19.02.2011 / 20:44