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).

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)

Weitere Gründe, Emacs zu lieben!
A. Blizzard
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.