Die Tastenkombination C-c
ist nicht bequem, um das von mir verwendete Tastaturlayout einzugeben, und ich versuche, es global zu ändern. Das Ziel ist es, jedes Vorkommen von C-c
durch eine andere Bindung zu ersetzen <apps> d
, so dass das Senden einer Nachricht in Gnus <apps> d <apps> d
, das Kompilieren in auxtex dasselbe wäre und der Benutzerpräfixschlüssel C-c
auch immer wäre <apps> d
. Die Taste <apps>
befindet sich <f19>
auf meiner Tastatur.
Beim Lesen des Handbuchs scheint es, dass ich verwenden muss key-translation map
. Es funktioniert gut mit der Übersetzung von <f19>
nach<apps>
(define-key key-translation-map (kbd "<f19>") (kbd "<apps>"))
(global-set-key (kbd "<apps> s") 'save-buffer)
Leider funktioniert es nicht, wenn ich das machen möchte C-c
.
(define-key key-translation-map (kbd "<apps> d") (kbd "C-c"))
Wenn ich versuche, es zu benutzen, bekomme ich
<apps> d is undefined
und wenn ich es nachschlage ( C-h k
), sehe ich
<apps> d (translated from <f19> d) is undefined
Gibt es eine Möglichkeit, diese Arbeit zu machen?
input-decode-map
) hat dies in ihrer Dokumentation: "Die Ereignisse, die von Bindungen in" input-decode-map "stammen, werden selbst nicht in" input-decode-map "nachgeschlagen." Was Sinn macht, wenn Sie darüber nachdenken: Dies wäre ein Weg, um unendliche Übersetzungen zu verhindern.Antworten:
Das Problem bei Ihrem Versuch ist, dass es sich
apps
um eine Übersetzung überkey-translation-map
handelt und diese Ausgabe nichtkey-translation-map
rekursiv durchsucht wird . Wenn Sieapps
ganz weglassen undf19
direkt damit arbeiten, funktioniert es.Wenn Sie den
apps
Alias verwenden möchten , können Sie die Tatsache nutzen, dass es zwei ähnliche Übersetzungskarten gibt:input-decode-map
undkey-translation-map
. Verwenden Sieinput-decode-map
diese Option, um virtuelle Funktionstasten zu deklarieren, die den von Ihrer Tastatur gesendeten Tastenfolgen entsprechen, z. B. der Übersetzung vonf19
nachapps
. Verwenden Siekey-translation-map
diese Option , um eine interne Übersetzung in Emacs zu erstellen, z . B. vonapps d
bisC-c
.quelle
local-function-key-map
und es funktioniert auch. Gibt es einen Grund, einen über den anderen zu verwenden?local-function-key-map
ist, dasslocal-function-key-map
mit einer globalen oder lokalen Bindung für überschrieben werden kannapps d
. Was man sich vorstellen kann, könnte eher eine Funktion als ein Fehler sein.