Usando o Autohotkey para o Emacs

1

Estou usando o emacs no Cygwin e usei o Autohotkey para mapear novamente a tecla 'Alt' do lado esquerdo e a tecla 'Windows' do lado esquerdo para ser (esquerda) Ctrl e (esquerda) Alt respectivamente.

Isto significa que uma sequência do emacs como Ctrl-x Ctrl-c é feita com o polegar esquerdo pressionando a tecla "Alt" para produzir o Ctrl . Ok.

Tudo parece bem, exceto que eu não consigo fazer o M-SPC funcionar, então minha pergunta é pedir ajuda sobre isso.

Aqui está o script Autohotkey que estou usando (a propósito, é apenas para preenchimento teórico que eu mapeio a tecla Ctrl do lado esquerdo para ser o botão esquerdo do Windows - nunca o pressionei quando uso o emacs):

#IfWinActive ahk_class mintty
LWin::LAlt
LAlt::LCtrl
LCtrl::LWin

Para ser claro, quando digo 'tudo está bem', quero dizer que dentro do emacs eu uso o recurso 'describe key sequence' ( Ch então k ) e então experimente a combinação de teclas que quero. Por exemplo, todos eles mostram a documentação do emacs para a sequência que eu esperava:

  • A chave denominada 'Alt' + g reporta a documentação do emacs para C-g . Bom .
  • A chave denominada 'Alt' + SPACE reporta a documentação de C-@ , que o emacs diz que também está mapeada para C-SPC , o que parece correto. Bom .
  • A chave identificada como 'MSWin Symbol' + x relata a documentação para M-x . Bom .
  • A chave denominada 'MSWin Symbol' + tecla rotulada 'Alt' + k relata a documentação para C-M-k . Bom .

Mas:

  • A chave chamada 'MSWin Symbol' + ESPAÇO mostra o menu 'clique com o botão direito' para a janela do cygwin em vez de me levar à documentação de M-SPC . Ruim .
  • A propósito, eu posso obter a documentação para M-SPC , em vez disso, fazendo ESC seguido por SPACE .

Deixe-me adicionar outro ponto que surgiu no processo de reagir aos comentários sobre essa questão:

  • A chave com o rótulo 'MSWin Symbol' + tecla 'Alt' + SPACE leva-me à documentação de C-@ , então suspeito que esteja sendo entendido pelo emacs como C-SPC em vez de como CM-SPC como eu pensei que meu script Autohotkey iria mapeá-lo. Ruim .

Alguma idéia do porque o Autohotkey não fará o M-SPC como eu esperaria, ou porque o CM-SPC é entendido pelo emacs como C-SPC (eu suspeito)?

Obrigado

    
por Robert 09.04.2013 / 12:52

2 respostas

1

Alt + Space é um atalho padrão do Windows para mostrar o menu da janela, que você também pode obter clicando com o botão esquerdo do mouse no ícone da janela ou clicando com o botão direito do mouse na barra de título.

Você pode desabilitar esse atalho na página Keys das opções do terminal Cygwin (junto com o atalho Alt + Enter para tela cheia, para o qual Alt + F11 pode ser usado).

    
por 09.04.2013 / 16:04
1

Aqui estão as respostas para o seu problema:

Emite um remaping ctrl para alt e alt para ctrl para o Emacs

E uma discussão de por que isso acontece

Além do script que pode ser encontrado após o primeiro link, você pode adicionar este código para trabalhar com todos os layouts de teclado possíveis.

#IfWinNotActive, ahk_group HaveEmacsHotkeys
#InputLevel 1
; Aditionally remaps Window keys and AppsKey
*RWin::
    SetKeyDelay, -1
    Send, {Blind}{Alt DownTemp}
    return 
*RWin up::
    SetKeyDelay, -1
    Send, {Blind}{Alt Up}
    return

*LWin::
    SetKeyDelay, -1
    Send, {Blind}{Alt DownTemp}
    return 
*LWin up::
    SetKeyDelay, -1
    Send, {Blind}{Alt Up}
    return

*AppsKey::
    SetKeyDelay, -1
    Send, {Blind}{Alt DownTemp}
    return 
*AppsKey up::
    SetKeyDelay, -1
    Send, {Blind}{Alt Up}
#IfWinActive
    
por 13.02.2015 / 15:10