O problema "<morto morto> é indefinido" aparecendo ao digitar o estresse grego (')

11

Comecei a usar o Emacs e escrevi um texto em grego. O problema é que o estresse usado em algumas letras (ό, ύ, ί, ύ) não funciona!

Geralmente é inserido pressionando o ;(quero dizer pressionando a tecla ao lado de L) e, em seguida, a letra na qual será inserida. Isso é padrão para um teclado grego. Quando pressiono o botão ;diz:

<dead-acute> is undefined. 

C-h c ; diz a mesma coisa.

O que posso fazer para poder usar essa chave?

Funciona em outros aplicativos, como um navegador. Eu uso o Ubuntu 14.04 e instalei seu emacspacote (Emacs 24.3.1).

Adão
fonte
Eu já encontrei esse problema antes, mas não me lembro qual foi a causa. Verifique se o sistema operacional não está usando um layout de teclado diferente para o Emacs. Alguns sistemas operacionais podem ter layouts de teclado específicos para aplicativos, mesmo que essa tecla funcione em qualquer outro lugar, o problema pode estar no sistema. Caso contrário, tenho certeza de que alguém terá sua resposta aqui. :-)
Malabarba 24/10
(Não tenho certeza se isso ajuda.) Tenho esse problema dependendo do modo de entrada do teclado do SO. Minha entrada de teclado padrão usa 'teclas mortas' para que eu possa adicionar um número; mas às vezes eu quero inserir grego (antigo) no Emacs usando greek-ibycus4, e os dois sistemas se chocam. Eu resolvo esse problema alterando minha entrada geral para um layout de chave não morta (usando, por exemplo, setxkbmap -layout us); então eu alterno os modos no Emacs; então volto para o ucsmétodo de entrada do Emacs e corro setxkbmap -layout us -variant intlpara recuperar minhas chaves mortas. ... Não é ideal!! Mas também não preciso muito de grego.
jon
Obrigado por seus comentários, mas o problema é que o estresse é básico em grego. Quase toda palavra precisa de estresse e obviamente está funcionando em qualquer outro lugar, então não sei o que fazer.
Adam
@ Adam - Eu também deveria ter perguntado: qual é o seu layout de teclado padrão para o Ubuntu? Obviamente, você não está escrevendo grego agora, portanto, pode haver uma incompatibilidade entre o layout do teclado definido pelo SO e o método de entrada no Emacs. Para escrever sotaques e respirações gregas no Emacs , preciso primeiro mudar meu "teclado Ubuntu" para um layout QWERTY mais genérico. Talvez você tenha um choque semelhante. A partir de um terminal, setxkbmap -queryimprimirá o teclado do SO; ou você pode olhar no que unity-control-paneleu penso.
jon
@ Jon Diz as regras: evdev, modelo pc105, faça o layout de nós e, ao escrever grego, leia o layout: gr, us.
Adam

Respostas:

6

Tente adicionar (require 'iso-transl)ao seu .emacsarquivo.

Arthur Azevedo De Amorim
fonte
1
Essa foi a primeira coisa que tentei e não funciona.
Adam
Oh, desculpe por isso ... Eu tive um problema semelhante ao seu e, ao adicionar essa linha, a correção foi para mim.
Arthur Azevedo De Amorim
Sim, eu sei que esta é uma solução comum!
Adam
5

Após extensa pesquisa e experimentação, encontrei uma maneira de obter sucesso usando o estresse. Além disso, deve-se notar que essa não é a melhor maneira (tecnicamente, isso não resolve o problema, mas você consegue o que deseja). Usei o seguinte comando de ligação de teclas para todas as letras que usam estresse:

(global-set-key (kbd "<dead-acute> α") "ά")

(global-set-key (kbd "<dead-acute> ε") "έ")

etc ...

Basta dizer que, se alguém encontrar uma maneira melhor, pode compartilhá-la conosco, pois isso é obviamente apenas um compromisso.

Adão
fonte
1

Substitua a troca de idioma do sistema operacional e use MULE.

No Emacs, pressione C-\. Ele pede um método de entrada.

Digite greeke depois alterne os idiomas com C-\.

philnik
fonte
0

Se o seu sistema operacional ou a interface do Emacs passar de alguma forma chaves mortas, como tal, em vez de processá-las, você poderá traduzir as combinações de chaves mortas no próprio Emacs. Use input-decode-mappara isso: dessa maneira, a sequência de teclas é realmente convertida em um único pressionamento de tecla e o loop de comando vê a self-insert-command. É preferível vincular a chave a uma macro no mapa global, pois isso quebra os mecanismos que dependem da inserção de texto de inserção automática, como desfazer grupos.

(define-key input-decode-map [dead-acute ?ο] ?ό)

Você pode escrever um loop como este:

(mapc (lambda (string)
        (define-key input-decode-map (vector dead-acute (aref string 0)) (aref string 1)))
      '("οό" "υύ" "ιί"))
Gilles 'SO- parar de ser mau'
fonte