Podczas wpisywania greckiego stresu pojawia się problem „<dead-acute> jest niezdefiniowany”

11

Zacząłem używać Emacsa i napisałem tekst po grecku. Problem polega na tym, że nacisk na niektóre litery (ό, ύ, ί, ύ) nie działa!

Zazwyczaj jest wstawiany przez naciśnięcie ;(mam na myśli naciśnięcie klawisza obok L), a następnie litery, na której zostanie wstawiony. To standard dla greckiej klawiatury. Kiedy naciskam ;, mówi:

<dead-acute> is undefined. 

C-h c ; mówi to samo.

Co mogę zrobić, aby móc korzystać z tego klucza?

Działa w innych aplikacjach, takich jak przeglądarka. Używam Ubuntu 14.04 i zainstalowałem jego emacspakiet (Emacs 24.3.1).

Adam
źródło
Sam już zetknąłem się z tym problemem, ale nie pamiętam, co było przyczyną. Upewnij się, że twój system operacyjny nie używa innego układu klawiatury dla Emacsa. Niektóre systemy operacyjne mogą mieć układy klawiatury specyficzne dla aplikacji, więc nawet jeśli ten klawisz działa wszędzie, problem może być w systemie. Jeśli to nie to, jestem pewien, że ktoś znajdzie tu odpowiedź. :-)
Malabarba
(Nie jestem pewien, czy to pomaga.) Mam ten problem w zależności od trybu wprowadzania danych z klawiatury systemu operacyjnego. Domyślna klawiatura korzysta z „martwych klawiszy”, dzięki czemu mogę dodać „© çéñtß; ale czasami chcę wprowadzić (starożytny) język grecki w Emacsie greek-ibycus4, a oba systemy się zderzają. Rozwiązuję ten problem, zmieniając moje ogólne dane wejściowe na nie-martwy układ klawiszy (używając np. setxkbmap -layout us); potem przełączam tryby w Emacsie; potem przełączam się z powrotem na ucsmetodę wprowadzania Emacsa i biegnę, setxkbmap -layout us -variant intlby odzyskać moje martwe klucze. ... Nieidealny!! Ale ja też nie potrzebuję greckiego bardzo często.
jon
Dziękuję za komentarze, ale problem polega na tym, że w języku greckim stresy są podstawowe. Prawie każde słowo wymaga stresu i oczywiście działa wszędzie, więc nie wiem, co robić.
Adam
@Adam - powinienem również zapytać: jaki jest domyślny układ klawiatury dla Ubuntu? Oczywiście nie piszesz teraz po grecku, więc może istnieć rozbieżność między układem klawiatury zdefiniowanym w systemie operacyjnym a metodą wprowadzania w Emacsie. Aby napisać greckie akcenty i oddechy w Emacsie , muszę najpierw zmienić „klawiaturę Ubuntu” na bardziej ogólny układ QWERTY. Być może masz podobne starcie. Z terminala setxkbmap -querywydrukuje klawiaturę systemu operacyjnego; lub możesz zajrzeć w unity-control-panelmyślę.
jon
@jon Mówi reguły: evdev, model pc105, układ nas, a pisząc po grecku mówi układ: gr, us.
Adam

Odpowiedzi:

6

Spróbuj dodać (require 'iso-transl)do swojego .emacspliku.

Arthur Azevedo De Amorim
źródło
1
To była pierwsza rzecz, której spróbowałem i to nie działa.
Adam,
Och, przepraszam za to ... Miałem problem podobny do twojego i dodanie tej linii naprawiło mnie.
Arthur Azevedo De Amorim
Tak, wiem, że to powszechne rozwiązanie!
Adam,
5

Po intensywnych poszukiwaniach i eksperymentach znalazłem sposób na sukces przy użyciu stresu. Należy również zauważyć, że nie jest to najlepszy sposób (technicznie nie rozwiązuje problemu, ale dostajesz to, czego chcesz). Użyłem następującego polecenia wiązania klawisza dla każdej litery, która używa stresu:

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

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

itp...

Wystarczy powiedzieć, że jeśli ktoś znajdzie lepszy sposób, zapraszamy do podzielenia się nim z nami, ponieważ jest to oczywiście tylko kompromis.

Adam
źródło
1

Zastąp przełączanie języka systemu operacyjnego i użyj MULE.

W programie Emacs naciśnij C-\. Pyta o metodę wprowadzania.

Wpisz, greeka następnie przełącz języki za pomocą C-\.

philnik
źródło
0

Jeśli twój system operacyjny lub interfejs Emacsa przekazuje martwe klucze jako takie zamiast ich przetwarzania, możesz przetłumaczyć kombinacje martwych kluczy w samym Emacsie. Użyj input-decode-mapdo tego: w ten sposób sekwencja klawiszy jest faktycznie tłumaczona na pojedyncze naciśnięcie klawisza, a pętla poleceń widzi znak self-insert-command. Jest to lepsze niż przypisanie klucza do makra na mapie globalnej, ponieważ łamie to mechanizmy polegające na samodzielnym wstawianiu tekstu, takie jak cofanie grup.

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

Możesz napisać taką pętlę:

(mapc (lambda (string)
        (define-key input-decode-map (vector dead-acute (aref string 0)) (aref string 1)))
      '("οό" "υύ" "ιί"))
Gilles „SO- przestań być zły”
źródło