Verwenden von Funktionstasten als "klebrige" Modifizierertasten

10

Gibt es eine Möglichkeit, eine Funktionstaste (wie <f8>) als eine Art Super-Key-Down-Ereignis zu verwenden und dann den nächsten Tastendruck (z. B. s) als zu interpretieren s-s? Mit anderen Worten, dies ähnelt den Sticky-Modifier-Tasten, jedoch nur für Emacs, nicht für das Betriebssystem selbst.

Ich kenne den Key-Chord-Modus und die Tatsache, dass Sie Tastenkombinationen wie diese verwenden können (global-set-key (kbd "<f8> b t") 'undo), um Tastaturkürzel zu speichern. Aber ich möchte etwas, das mit meinen vorhandenen Bindungen an den Superschlüssel funktioniert und nicht erfordert, dass ich in Zukunft alles zweimal binde (dh eine Bindung für den Superschlüssel und eine für die Funktionstaste).

Var87
quelle

Antworten:

14

Wenn Ihr Workflow ist:

  1. Drücken und Loslassen F8
  2. Drücken und loslassen s, damit die Bindung für ausgelöst wirds-s
  3. Unabhängig davon, welche Taste Sie anschließend drücken, wird der sModifikator nur verwendet, wenn Sie F8erneut drücken

dann existiert diese Funktion in Emacs selbst . Es ist C-x @ sstandardmäßig gebunden (eindeutig nur für den gelegentlichen Gebrauch vorgesehen). Der Befehl ist event-apply-super-modifier(ähnliche Funktionen existieren control, shift, meta, altund hyper). Die Standardbindungen befinden sich in function-key-map, was durch Bindungen in den globalen oder lokalen Keymaps überschrieben wird. Sie können key-translation-mapstattdessen verwenden, wenn der Apply-Modifikator Vorrang haben soll.

(define-key function-key-map [f8] 'event-apply-super-modifier)
Gilles 'SO - hör auf böse zu sein'
quelle
Weitere Gründe, Emacs zu lieben!
A. Blizzard