Wie werden Emacs-Tastenkombinationen beim Ändern des Tastaturlayouts beibehalten?

7

Stellen Sie sich vor, Sie ändern Ihr Tastaturlayout. Sie müssen Zeit damit verbringen, Ihre Muskeln zu trainieren, um die Tasten zu finden, die Sie eingeben möchten. Dies ist bereits schwierig genug.

Sie müssen aber auch Zeit damit verbringen, Ihre Muskeln zu trainieren, um die Tasten zu finden, die Sie als Teil von Verknüpfungen eingeben möchten, was lächerlich ist (Sie haben diese Tasten normalerweise ausgewählt, weil sie leicht zu erreichen sind, nicht wegen ihres Buchstabens *).

Gibt es eine Möglichkeit, diese Tastendefinitionen nicht zu verschieben, wenn Sie Ihr Tastaturlayout ändern?

Wenn ich zum Beispiel in azerty bin und QWERTY lernen möchte, hätte ich gerne eine beginning-of-lineNeuzuordnung von C-azu vorgenommen C-q, damit es dort bleibt, wo es sich auf meiner Tastatur befindet (erste Taste rechts von TAB).

So wie ich es verstehe, wird es teilweise durch Eingabemethoden implementiert, aber es geht umgekehrt: Es ändert die Art und Weise, wie Emacs Eingabezeichen für Text interpretiert. Es funktioniert jedoch nicht, wenn Sie beispielsweise Ihr Tastaturlayout systemweit ändern möchten.

Ich verstehe, dass es viele Möglichkeiten gibt, Tastenkombinationen zu definieren, aber ich würde zum Beispiel eine Lösung für akzeptabel halten, die sich um alle Tastenkombinationen kümmert, die mit der kbdFunktion aus menschlichen Zeichenfolgen konvertiert wurden .


*. Dies gilt nicht für bestimmte Schlüssel, die seltener verwendet werden. In der C-cKarte der meisten Hauptmodi werden beispielsweise Schlüsselnamen verwendet, die leicht zu merken und nicht leicht zu erreichen sind. Als Bonusfrage wäre es schön, einige Tastenkombinationen beizubehalten (neu zuzuordnen, damit sich der physische Schlüssel nicht bewegt) und einige andere zu verschieben (nicht neu zuzuordnen, der dem Schlüssel zugeordnete Buchstabe ändert sich nicht). Der Benutzer kann die eine oder andere Option auswählen, indem er zwei verschiedene Funktionen verwendet, anstatt kbdseine Tastenkombinationen zu definieren.

T. Verron
quelle
1
Wenn Sie in Emacs eine Lösung finden, die ein bestimmtes Tastaturlayout erkennt, können Sie diese anhand dieser Erkennung programmgesteuert neu zuordnen. Es gibt eine verwandte Frage ohne richtige Antwort mit dem Titel Emacs, die das Tastaturlayout bestimmt : stackoverflow.com/questions/7813648/…
lawlist
@lawlist Ich hatte nicht das Szenario "häufig wechseln" im Sinn, zumindest nicht häufig genug, dass es nicht zumutbar ist, eine Option in der Init-Datei jedes Mal zu ändern. Sicher, die automatische Erkennung wäre noch besser, aber wenn Sie eine Lösung haben, bei der der Benutzer Emacs über seine Keymaps informieren muss, würde ich sie gerne akzeptieren.
T. Verron
@ T.Verron bin mir ziemlich sicher, dass die Antwort ist, dass Sie nicht können, mit einfachen GNU-Emacs. Sie können ein Emacs-Tastenkombinationspaket verwenden, das unabhängig vom aktuellen Tastaturlayout dieselbe Verknüpfungsposition verwendet. (Ergoemacs-Modus macht das, aber es ist nicht das GNU Emacs Standard-Keyding) Ich denke, der Böse-Modus könnte auch. Grundsätzlich muss das Schlüsselbindungspaket eine Ebene bereitstellen.
Xah Lee

Antworten:

1

Soweit ich Ihre Frage verstehe, key-translation-mapscheint dies eine gute Lösung für Ihr Problem zu sein. Wenn Sie sich beispielsweise C-qwie C-ain Ihrem Beispiel verhalten möchten, definieren Sie Folgendes:

  (define-key key-translation-map (kbd "C-q") (kbd "C-a"))
Clemera
quelle