Existe alguma maneira, através de algum comando que possa ser invocado pelo teclado, de fazer o Emacs pensar que eu cliquei em um ponto específico (para que ele faça o que faria se eu clicasse lá, por exemplo, siga o link ou abra um menu )? Ou que passei o mouse no ponto (para que a dica da ferramenta seja exibida)?
[Motivação: alguns modos decoram o buffer, transformando algum texto em links e assim por diante. Talvez eu saiba como fazer algo com o mouse (por exemplo, clique nele), mas não o atalho / comando de teclado equivalente a ser chamado. É claro que eu deveria ler a documentação do modo e aprendê-lo, mas achei uma pergunta interessante.]
key-bindings
mouse
ShreevatsaR
fonte
fonte
Respostas:
Muitas vezes, navegar para um local e pressionar alguma tecla terá o mesmo efeito que clicar nesse local. Não existe um mecanismo interno que garanta isso, é apenas que os modos geralmente são escritos dessa maneira.
Você pode gerar eventos de mouse ( clique , duplo / triplo /… clique , botão para baixo / para cima , arraste , movimento ). Todos os eventos do mouse têm a forma em
(TYPE POSITION . EXTRA-DATA)
que TYPE é um símbolo que codifica o botão do mouse, a natureza da ação (clique, arraste etc.) e os modificadores. TYPE émouse-movement
para um evento de movimento. Chameposn-at-point
para gerar a POSITION para a localização do ponto no buffer atual.Aqui está um código de prova de conceito que simula um clique do mouse na posição do cursor quando você pressiona
f11
seguido de um dígito. Modificadores são levados em consideração.Simular a pairar parece mais difícil.
fonte
C-c C-, RET
sim, mas eu teve que procurar a documentação do modo para isso).f11 1
não faz isso (ele imprime algo no minibuffer, mas não é o equivalente a um clique do mouse no link), emboraf11 3
pareça equivalente<mouse-3>
e assim por diante.down-mouse-1
e nãomouse-1
? Como posso descobrir em qual mapa de teclas uma chave está vinculada? pode ajudar a investigar isso.