Remapear Controle + Espaço para se comportar como Return (tecla enter), compatível com vim

2

Como posso mapear Control_L + Space para retornar?

preferencialmente para ser feito com xmodmap.

Eu tentei procurar algumas respostas, mas sem sucesso.

Minha solução atual é:  ~ / .Xmodmap keycode 65 = space Return space keycode 37 = Control_L Mode_switch Control_L

~ / .vimrc: inoremap <C-@> <CR> cnoremap <C-@> <CR> nnoremap <C-@> <CR>

alguma solução para mudança ctrl + espaço para se comportar como retorno (a.k.a A tecla 'Enter') para todo o sistema?

    
por Kexin Lu 23.10.2015 / 19:46

2 respostas

2

Eu fiz mais algumas pesquisas e tentei várias soluções diferentes, finalmente resolvi com uma solução que não resulta em nenhum atraso ou inconsistência. A solução abaixo não funciona apenas para terminal, mas também para outras aplicações.

Ferramentas que usei:

xdotool , xbindkeys

(1) instale xdotool e xbindkeys :

$ sudo apt-get update
$ sudo apt-get install xdotool
$ sudo apt-get install xbindkeys

(2) crie o arquivo de configuração xbindkey:

$ xbindkeys -d > ~/.xbindkeysrc

(3) remapear Ctrl-Espaço em xbindkeysrc

"xset r off; xdotool keyup --window 0 space key --clearmodifiers --window 0 KP_Enter; xset r on"
   m:0x14 + c:65
   Control+Mod2 + space

(4) Matar xbindkeys atuais

Não sei por que isso é necessário, mas o xbindkeysrc de origem não substitui a configuração atual. Assim, você tem que matar xbindkeys

$ killall xbindkeys
$ xbindkeys -f ~/.xbindkeysrc

Tudo pronto.

Bônus

mapear ctrl + ~ para ser /

"xset r off; xdotool keyup --window 0 grave key --clearmodifiers --window 0 slash; xset r on"
   m:0x14 + c:49
   Control+Mod2 + grave

Felicidades!

    
por 04.08.2016 / 18:51
0

xmodmap não o levará ao seu objetivo. O mais próximo em seu repertório é este parágrafo (reformatado para mostrar os pontos):

keycode NUMBER = KEYSYMNAME ...
A lista de keysyms é atribuída ao keycode indicado (que pode ser especificado em decimal, hex ou octal e pode ser determinado executando o xev programa). Até oito keyyms podem ser anexados a uma chave, no entanto, os quatro últimos não são usados em nenhuma implementação importante do servidor X.

  • O primeiro keysym é usado quando nenhuma tecla modificadora é pressionada em conjunto com essa chave,
  • o segundo com Shift ,
  • o terceiro quando a tecla Mode_switch é usada com essa chave e
  • o quarto quando as chaves Mode_switch e Shift são usadas.

Ou seja, você pode usar o xmodmap para associar alguma chave existente ao modificador de turno. No entanto, você quer que a chave existente seja controle espaço que não corresponde a uma chave que você provavelmente encontrará em seu teclado - nem existe um keysym para ele. Em vez disso, você pode usar o controle espaço na ocasião para gerar um ASCII NUL, mas é tão raramente usado que não há uma chave padrão no teclado para isso.

No entanto - ambos xterm e urxvt podem ser configurados, separadamente e com métodos diferentes para distinguir controle deslocamento espaço . Com xterm , esse seria o recurso translations , enquanto urxvt tem um recurso keysym.sym .

Se você estiver usando xmodmap , provavelmente está usando xterm ou rxvt (talvez urxvt ). Com outros terminais, as pessoas tendem a entrar no xkb morass . Mas, revisando a documentação, parece ter a mesma limitação que xmodmap (essencialmente mais da mesma coisa, nenhuma capacidade genuinamente nova nesta área).

    
por 24.10.2015 / 02:49

Tags