Algumas chaves são inválidas no emacs ao usar o teclado alemão

5

Quando estou usando o emacs 23.3 no KDE, não consigo inserir ^ , ´ e ~ do meu teclado alemão. Se eu pressionar essas teclas, o emacs diz que <dead-circumflex> , <dead-acute> e <dead-tilde> estão indefinidos.

Eu posso inserir ^ , ´ e ~ em outros aplicativos (por exemplo, Konsole, Kwrite e firefox), e também posso colar essas letras no emacs.

Eu tentei digitar Cx ret C- \ latin-1 -postfix , mas não há mudança.

Alguém poderia me dizer como resolver esse problema?

    
por H. Shindoh 02.01.2012 / 21:19

2 respostas

4

Não sei o que está causando esse problema ou como corrigir isso, mas posso oferecer uma solução alternativa para a maioria das finalidades.

Normalmente, as chaves inativas são processadas em uma camada de entrada muito baixa, nem mesmo visíveis no Lisp. Mas você pode fazer o processamento no Lisp.

Se você quiser que as chaves funcionem como chaves inativas:

Já existe um mecanismo limitado para chaves inativas no Lisp, projetado para conjuntos de caracteres de 8 bits em máquinas que não possuem nenhuma maneira de inserir caracteres não-ASCII. Se você digitar C-x 8 seguido de um acento e uma letra, a letra acentuada correspondente será inserida, graças ao iso-transl library . Nós podemos copiar esse mecanismo. Coloque isso no seu .emacs :

(define-key key-translation-map [dead-grave] (lookup-key key-translation-map "\C-x8'"))
(define-key key-translation-map [dead-acute] (lookup-key key-translation-map "\C-x8'"))
(define-key key-translation-map [dead-circumflex] (lookup-key key-translation-map "\C-x8^"))
(define-key key-translation-map [dead-diaeresis] (lookup-key key-translation-map "\C-x8\""))
(define-key key-translation-map [dead-tilde] (lookup-key key-translation-map "\C-x8~"))
(define-key isearch-mode-map [dead-grave] nil)
(define-key isearch-mode-map [dead-acute] nil)
(define-key isearch-mode-map [dead-circumflex] nil)
(define-key isearch-mode-map [dead-diaeresis] nil)
(define-key isearch-mode-map [dead-tilde] nil)

O mapa key-translation-map reescreve sequências de teclas à medida que são inseridas, então isso fará dead ' a equivalente a à para a maioria das finalidades. Definir explicitamente as entradas em isearch-mode-map a nil é necessário porque, do contrário, pressionar uma tecla morta sairia da pesquisa antes que a tradução pudesse ser acionada.

Se você quiser que os caracteres de acentuação sejam inseridos imediatamente

(define-key key-translation-map [dead-grave] "'")
(define-key key-translation-map [dead-acute] "'")
(define-key key-translation-map [dead-circumflex] "^")
(define-key key-translation-map [dead-diaeresis] "\"")
(define-key key-translation-map [dead-tilde] "~")
    
por 03.01.2012 / 02:11
5

tente adicionar (require 'iso-transl) no seu arquivo .emacs .
Veja também:

por 26.08.2013 / 10:31