Wie wechsle ich das Tastaturlayout für verschiedene Sprachen?

10

F: Wie wechsle ich zwischen Eingabemethoden für verschiedene Sprachen, wenn ich ein nicht standardmäßiges Tastaturlayout verwende?

Ich muss Text in zwei verschiedenen Sprachen bearbeiten. Ich möchte meine Tastenkombinationen in beiden Sprachen verwenden können, außer natürlich beim Einfügen von Text in den Puffer. Es sieht so aus, als ob ich in der Lage sein sollte toggle-input-method( C-\) und die alternative Sprache auszuwählen.

So weit, fast so gut.

Hier ist das Problem: Ich verwende das englische Dvorak-Layout, das ich auf Betriebssystemebene festgelegt habe (dh mit setxkbmap). Wenn ich toggle-input-method, würde der Text, den ich einfüge, korrekt sein, wenn ich ein QWERTZ-Layout hätte (der Standard in den USA), aber als Kauderwelsch herauskommt, weil ich auf Dvorak bin. (FWIW, wenn ich mein Layout auf Standard US umstelle, funktioniert es einwandfrei.)

Also: Wie informiere ich Emacs, dass ich Dvorak verwende, damit toggle-input-methodFreunde meine Tastendrücke in die richtigen Zeichen in der anderen Sprache übersetzen?

Dan
quelle
schwedisch-postfix und andere kompositorische Eingabemethoden funktionieren für mich. Mit welchen Methoden haben Sie Probleme?
Shapr
@shapr: Ich wechsle zwischen Englisch und Arabisch. Das Problem scheint zu sein, dass ich ein Dvorak-Layout auf Betriebssystemebene verwende, da das Umschalten einwandfrei funktioniert, wenn ich das US-Standardlayout auf Betriebssystemebene verwende.
Dan

Antworten:

7

Es gibt eine Methode zum Ändern der physischen Layoutdefinition für die Eingabemethode durch Festlegen quail-keyboard-layout-type. Aber es sieht so aus, als ob Dvorak quail-keyboard-layout-alistin meinem Emacs 24.4 nicht zu den möglichen Kandidaten gehört .

Sie können entweder ein neues physisches Tastaturlayout definieren, indem Sie sich die Definition von quail-keyboard-layout-alistin quail.elansehen, oder eine neue Eingabemethode erstellen, indem Sie die entsprechenden arabischen Tasten für das Dvorak-Layout definieren.

Ich bin im ersten nicht erfahren, aber ich kann bezeugen, dass der zweite Ansatz einfacher ist als Sie denken. (Ich musste zusätzlich zu Farsi eine osmanisch-türkische Eingabemethode erstellen.) Kopieren Sie arabic.el(die sich in meinem Debian-System unter befindet /usr/share/emacs/24.4/lisp/leim/quail/arabic.el.gz) zu Ihnen nach Hause site-lispund ändern Sie die Schlüssel nach Ihren Wünschen. Vergessen Sie auch nicht, die Namen der Eingabemethoden usw. zu ändern. Sie haben gerade eine neue dvorak-arabische Eingabemethode erstellt.

Ich kann die Antwort mit weiteren Details aktualisieren, wenn etwas komplex erscheint.

Emre Sahin
quelle
Vielen Dank! Das hat mich auf den richtigen Weg gebracht. Ich werde eine zusätzliche Antwort veröffentlichen, in der dargelegt wird, wie ich in der ...-alistVersion dorthin gekommen bin .
Dan
Bitte. Möglicherweise möchten Sie Ihr Update an die quail-. *-alistEmacs-Entwicklung senden . Ich bin sicher, dass es andere Dvorak-Benutzer gibt, die davon profitieren werden.
Emre Sahin
7

@EmreSahin hat mich auf den richtigen Weg gebracht, um diese Frage zu beantworten. Deshalb lege ich ein paar Details dar, falls sich jemand anders jemals selbst mit einem solchen Problem befassen muss.

Wie Emre betont, müssen wir ein Dvorak-Layout hinzufügen quail-keyboard-layout-alist. Es stellt sich heraus, dass die quailBibliothek im Handbuch , in dem zwei verwandte Funktionen bei der Weitergabe an einen Knoten erwähnt werden, nicht gut dokumentiert ist .

Doch nach Anhörung diese Hilfe Faden und vor allem die EmacsWiki Seite auf Russisch mit Dvorak (aus dem diese Antwort Krippen), habe ich denke , ich habe es herausgefunden .

Die Dokumentzeichenfolge für die Variable quail-keyboard-layoutbeschreibt, was wir eingeben müssen quail-keyboard-layout-alist. Es ist eine lange Zeichenfolge, die 6 Zeilen mit jeweils 15 Schlüsseln entspricht. Jede Zeile entspricht den nicht verschobenen und verschobenen Werten jeder Taste für insgesamt 30 Zeichen pro Zeile. In Bezug auf den folgenden Punkt bin ich mir weniger sicher, aber es scheint, dass für die sogenannten "Semi-Standard" -Tastaturen mit 4 Tastenreihen die erste und die sechste Reihe jeweils 30 Leerzeichen sein sollten.

Die große Enthüllung:

(require 'quail)

(add-to-list 'quail-keyboard-layout-alist
             `("dvorak" . ,(concat "                              "
                                   "  1!2@3#4$5%6^7&8*9(0)[{]}`~  "
                                   "  '\",<.>pPyYfFgGcCrRlL/?=+    "
                                   "  aAoOeEuUiIdDhHtTnNsS-_\\|    "
                                   "  ;:qQjJkKxXbBmMwWvVzZ        "
                                   "                              ")))

(quail-set-keyboard-layout "dvorak")
Dan
quelle