Remapeando caps-lock para escape e menu para compor, no console linux

9

Ao executar o XI, use um .xmodmaprc para remapear determinadas chaves da seguinte maneira:

! 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 Compor. Para que eu possa me acostumar com isso. A configuração da tecla Menu como Compor não é tão fácil, pois há vários códigos de chave atribuídos a nulo e nenhum candidato óbvio para um nome alternativo para o Menu.

Também percebi que as próprias ligações de composição são muito mais limitadas do que estou acostumado com o X, e que a maioria dos caracteres especiais que uso com frequência não está lá. Talvez haja um utilitário que traduza ligações de composição de sintaxe X em algo que loadkeyspossa ler?

intuído
fonte
1
Tradicionalmente: com loadkeys. Acho que hoje em dia você pode fazer o console Linux ler a configuração do X, mas não sei como isso funciona.
Gilles 'SO- stop be evil'

Respostas:

8

Você precisará editar o mapa de teclas do console. No meu console, mapeei Escape para Caps Lock e Caps Lock para Escape. Aqui está como isso funciona.

  1. Primeiro você precisa encontrar o seu mapa de teclas. 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. Mude os mapeamentos no arquivo ao seu gosto, por exemplo, para os keycode 58 = Caps_Lockquais mudei keycode 58 = Escape.
  5. Gzip o arquivo e carregá-lo: 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 sejam sempre carregados na inicialização, caso contrário, você precisará carregar seu mapa de teclas manualmente o loadkeystempo todo. Como você faz isso depende de qual distribuição você está usando.

Cedric
fonte
1
O passo gunzip não é realmente necessário aqui - na maioria das versões vimvocê deve apenas ser capaz devim us-nocaps.map.gz
glittershark
3

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

O arquivo do teclado descreve as propriedades do teclado. É lido por setupcon(1)para configurar o teclado no console. Nos sistemas Debian, o layout padrão do teclado é descrito /etc/default/keyboarde compartilhado entre o X e o console. (teclado do homem)

Em /etc/default/keyboardconjunto XKBOPTIONS="caps:escape"e faça:

~$ sudo setupcon

A descrição de todos os modelos, layouts, variantes e opções de /usr/share/X11/xkb/rules/xorg.lstteclado disponíveis está disponível em . "(Teclado manual)

Ingo
fonte
1

Com alguma ajuda do Cedric, eu descobri que o Ubuntu não instalou os mapas de teclado onde $ man loadkeysdiz que eles deveriam estar ( /usr/share/keymaps). Esta é uma instalação totalmente nova, talvez seja necessário instalar um pacote para obter mapas de teclas diferentes daquele que eu selecionei durante a instalação.

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

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

Embora eu esteja um pouco confuso sobre o motivo pelo qual o sistema Cedric usa Caps_Lockpara caps lock e para uso em minas CtrlL_Lock, ele está funcionando independentemente.

intuído
fonte
Isso é interessante, eu não sabia lá onde havia diferenças nas distribuições com esses mapas-chave. Pessoalmente, eu uso o Gentoo, os mapas principais são do pacote sys-apps / kbd-1.15.
Cedric
2
A partir do Ubuntu 10.04, os mapas principais estão no console-datapacote. Eles não estão instalados por padrão. Você pode descobrir em que pacote instala os arquivos /usr/share/keymapsexecutando apt-file search /usr/share/keymaps.
Gilles 'SO- stop be evil'