Есть ли режим просмотра потери нажатия клавиш в реальном времени?

17

C-h lпоказывает буфер помощи потери, который показывает недавние нажатия клавиш. Нажатие gпоявляется, чтобы восстановить его, вызывая его обновление. К сожалению, включение auto-revert-modeне приводит к постоянному обновлению.

Было бы хорошо, если бы я мог открыть другое окно или рамку и просто отобразить потери в режиме реального времени, чтобы показать зрителям, что я печатаю. Это также может быть использовано для сопряжения в сеансе tmux / tmate. Некоторые из видео онлайн имеют что-то вроде этого, но они выглядят как внешние приложения и зависят от ОС.

Есть ли хороший способ показать нажатия клавиш в реальном времени, как они происходят из Emacs?

dgtized
источник

Ответы:

19

Обращаясь к последнему вопросу в вашем посте: вы можете получить автоматически обновляемый журнал команд и нажатий клавиш, используя https://github.com/lewang/command-log-mode, который также доступен на MELPA - по умолчанию он показывает только нетривиальные команды (поэтому нет команд для самостоятельной вставки или перемещения курсора). Это выглядит так:

введите описание изображения здесь

Joost Diepenmaat
источник
9

Да. Есть пакет mwe-log-commands, который называется MELPA .

Просто запустите, M-x mwe:log-keyboard-commandsчтобы начать запись, затем M-x mwe:open-command-log-bufferоткройте буфер, который показывает набранные команды в режиме реального времени.

command-log-mode - более новая и более активно поддерживаемая ветвь mwe-log-commands, поэтому она может быть предпочтительнее в наши дни.

sanityinc
источник
7

Вы можете использовать post-command-hook для обновления буфера потерь. Следующий фрагмент делает это за вас (на локальной основе буфера), но предполагает, что вы переименовали буфер потерь в «Потери» (так что вы можете открыть другие справочные буферы).

(defun update-lossage-buffer ()
  "Update the \"Lossage\" buffer.
For this to work, visit the lossage buffer, and call
M-x rename-buffer Lossage RET"
  (save-excursion
    (let ((b (get-buffer "Lossage")))
      (when (buffer-live-p b)
        (with-current-buffer b
          (revert-buffer nil 'noconfirm))))))
(add-hook 'post-command-hook #'update-lossage-buffer nil 'local)
Malabarba
источник
3

Буфер справки о потерях не связан с файлом на диске. Следовательно, режим автоматического возврата не работает. Может использоваться альтернатива псевдо-реального времени, (open-dribble-file "FILE")которая записывает все нажатия клавиш в FILE. Использование auto-revert-tail-modeв буфере FILE может отражать нажатия клавиш.

Другой способ - посоветовать self-insert-command(и некоторые префиксные ключи) эхо-запрос к буферу.

Vamsi
источник