Das Problem "<totakut> ist undefiniert" tritt auf, wenn griechischer Stress eingegeben wird (')


11

Ich habe angefangen, Emacs zu verwenden und habe einen Text auf Griechisch geschrieben. Das Problem ist, dass die Belastung einiger Buchstaben (ό, ύ, ί, ύ) nicht funktioniert!

Es wird normalerweise durch Drücken von ;(ich meine durch Drücken der Taste neben L) und dann des Buchstabens eingefügt, auf den eingefügt wird. Das ist Standard für eine griechische Tastatur. Wenn ich auf drücke ;, heißt es:

<dead-acute> is undefined. 

C-h c ; sagt das Gleiche.

Was kann ich tun, um diesen Schlüssel verwenden zu können?

Es funktioniert in anderen Anwendungen, z. B. einem Browser. Ich benutze Ubuntu 14.04 und habe das emacsPaket installiert (Emacs 24.3.1).


Ich bin selbst auf dieses Problem gestoßen, kann mich aber nicht erinnern, was die Ursache war. Stellen Sie sicher, dass Ihr Betriebssystem kein anderes Tastaturlayout für Emacs verwendet. Einige Betriebssysteme können anwendungsspezifische Tastaturlayouts haben. Obwohl diese Taste überall funktioniert, kann das Problem im System liegen. Wenn das nicht der Fall ist, wird hier sicher jemand Ihre Antwort haben. :-)
Malabarba

(Ich bin mir nicht sicher, ob dies hilft.) Ich habe dieses Problem abhängig von meinem Tastatur-Eingabemodus. Meine Standard-Tastatureingabe verwendet 'tote Tasten', damit ich â © çéñtß; aber ich möchte manchmal (alt) Griechisch in Emacs eingeben greek-ibycus4, und die beiden Systeme kollidieren. Ich umgehe dieses Problem, indem ich meine allgemeine Eingabe in ein nicht totes Tastenlayout ändere (z. B. mit setxkbmap -layout us). dann wechsle ich in Emacs den Modus; dann wechsle ich zurück zur ucsEingabemethode für Emacs und renne setxkbmap -layout us -variant intl, um meine toten Schlüssel zurückzubekommen. ... Nicht ideal!! Aber ich brauche auch nicht sehr oft Griechisch.
Jon

Vielen Dank für Ihre Kommentare, aber das Problem ist, dass Stress auf Griechisch grundlegend ist. Fast jedes Wort braucht Stress und es funktioniert offensichtlich überall anders, also weiß ich nicht, was ich tun soll.
Adam

@Adam - Ich hätte auch fragen sollen: Was ist dein Standard-Tastaturlayout für Ubuntu? Offensichtlich schreiben Sie gerade kein Griechisch, daher besteht möglicherweise eine Nichtübereinstimmung zwischen Ihrem vom Betriebssystem definierten Tastaturlayout und Ihrer Eingabemethode in Emacs. Damit ich in Emacs griechische Akzente und Atemzüge schreiben kann , muss ich zuerst meine "Ubuntu-Tastatur" auf ein allgemeineres QWERTZ-Layout umstellen. Vielleicht haben Sie eine ähnliche Art von Zusammenstoß. Druckt von einem Terminal aus setxkbmap -querydie Betriebssystemtastatur. oder du kannst in die unity-control-panelich denke schauen .
Jon

@jon Es heißt Regeln: evdev, Modell pc105, Layout uns, und beim Schreiben von Griechisch sagt Layout: gr, uns.
Adam

Antworten:


6

Versuchen Sie (require 'iso-transl), Ihrer .emacsDatei etwas hinzuzufügen .


1
Das war das erste, was ich versucht habe und es funktioniert nicht.
Adam

Oh, tut mir leid ... Ich hatte ein ähnliches Problem wie Sie und das Hinzufügen dieser Zeile hat das Problem für mich behoben.
Arthur Azevedo De Amorim

Ja, ich weiß, dass dies eine gängige Lösung ist!
Adam

5

Nach ausgiebiger Suche und Experimenten habe ich einen Weg gefunden, den Stress erfolgreich zu nutzen. Es muss auch beachtet werden, dass dies nicht der beste Weg ist (technisch löst es das Problem nicht, aber Sie bekommen, was Sie wollen). Ich habe den folgenden Schlüsselbindungsbefehl für jeden Buchstaben verwendet, der eine Betonung verwendet:

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

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

etc...

Es genügt zu sagen, dass wenn jemand einen besseren Weg findet, er ihn gerne mit uns teilen kann, da dies offensichtlich nur ein Kompromiss ist.


1

Überschreiben Sie die Sprachumschaltung des Betriebssystems und verwenden Sie MULE.

Drücken Sie in Emacs C-\. Es wird nach einer Eingabemethode gefragt.

Geben Sie ein greekund wechseln Sie dann die Sprache mit C-\.


0

Wenn Ihr Betriebssystem oder die Emacs-Schnittstelle dazu irgendwie tote Schlüssel als solche übergibt, anstatt sie zu verarbeiten, können Sie die toten Schlüsselkombinationen in Emacs selbst übersetzen. Verwenden Sie dazu input-decode-map: Auf diese Weise wird die Tastenfolge tatsächlich in einen einzigen Tastendruck übersetzt, und die Befehlsschleife sieht a self-insert-command. Dies ist dem Binden des Schlüssels an ein Makro in der globalen Zuordnung vorzuziehen, da dadurch Mechanismen zerstört werden, die darauf beruhen, dass die Texteingabe selbst eingefügt wird, z. B. das Rückgängigmachen von Gruppen.

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

Sie können eine Schleife wie folgt schreiben:

(mapc (lambda (string)
        (define-key input-decode-map (vector dead-acute (aref string 0)) (aref string 1)))
      '("οό" "υύ" "ιί"))
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.