diff options
| author | Craig Jennings <c@cjennings.net> | 2026-09-22 13:50:04 -0400 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-09-22 13:50:04 -0400 |
| commit | 44a7e4284a7dbd660c978158ae8419ea61f4550c (patch) | |
| tree | 20f91dcaa9080ee71bef406215c1b51fc1224f4f /modules | |
| parent | 474a9bed31c583761e55b6072f07fcfd6d095471 (diff) | |
| download | dotemacs-44a7e4284a7dbd660c978158ae8419ea61f4550c.tar.gz dotemacs-44a7e4284a7dbd660c978158ae8419ea61f4550c.zip | |
fix(recording): drop the F9 and S-F9 recording chords
With Fn Lock on the Framework 13 the F-key row sends plain function keys, so a bare F9 press started a screen recording. I removed both chords rather than just F9. The module treated the pair as one feature, and a lone S-F9 audio chord on a live F-key row is one grazed key from an unwanted recording. The C-; r prefix is now the only way to reach the toggles.
The removal covers the global map and the four EAT keymaps that carried the chord so char mode couldn't swallow it. In a char-mode buffer F9 reaches the program under the cursor again. The tests pin that, with F8 as the control that the fixture is real.
Diffstat (limited to 'modules')
| -rw-r--r-- | modules/video-audio-recording.el | 41 |
1 files changed, 7 insertions, 34 deletions
diff --git a/modules/video-audio-recording.el b/modules/video-audio-recording.el index 65a8612f..8fd3d23b 100644 --- a/modules/video-audio-recording.el +++ b/modules/video-audio-recording.el @@ -300,40 +300,13 @@ Changes take effect on the next recording (not the current one)." (cj/register-prefix-map "r" cj/record-map) -;; Fast chords for the two toggles, alongside C-; r v and C-; r a. F9 is free: -;; ai-term vacated the F9 family when its swap moved to M-SPC, and -;; `test-ai-term-f9-family-removed-globally' keeps it vacated. Both commands -;; still take a prefix argument, so C-u F9 prompts for the recording location. -(keymap-global-set "<f9>" #'cj/video-recording-toggle) -(keymap-global-set "S-<f9>" #'cj/audio-recording-toggle) - -(defvar eat-mode-map) -(defvar eat-semi-char-mode-map) -(defvar eat-char-mode-map) -(defvar eat-eshell-char-mode-map) - -;; EAT builds each input mode's keymap from key categories, and which categories -;; a mode claims is what decides whether a chord reaches Emacs at all. -;; -;; Semi-char mode -- the default, and where every agent buffer sits -- is built -;; from :ascii, :arrow and :navigation. It never claims function keys, so F9 -;; already fell through to the global map. The semi-char entry below is -;; belt-and-braces rather than the fix, which is why it reads as redundant. -;; -;; Char mode is the one that swallows F9. It adds :function, binding f1 through -;; f63 to eat-self-input, and it is a minor mode, so its map outranks -;; eat-mode-map. Without an entry here the pair splits in the worst possible -;; way: :function claims only the unmodified keys, so S-F9 would toggle audio in -;; a char-mode buffer while F9 went to the program under the cursor. That is a -;; recording you believe you started and didn't. -;; -;; Claiming both costs a char-mode program the use of F9. I would rather pay -;; that than ship a toggle that works for audio and silently fails for video. -(with-eval-after-load 'eat - (dolist (map (list eat-semi-char-mode-map eat-mode-map - eat-char-mode-map eat-eshell-char-mode-map)) - (keymap-set map "<f9>" #'cj/video-recording-toggle) - (keymap-set map "S-<f9>" #'cj/audio-recording-toggle))) +;; The toggles live only under C-; r. They had a fast chord (F9 video, S-F9 +;; audio, claimed in every EAT map too) until 2026-09-22: with Fn Lock on the +;; Framework 13 the F-key row sends plain function keys, and a bare F9 press +;; started a screen recording. Both chords went together, because a lone S-F9 +;; on a live F-key row is one fat-finger from an unwanted audio recording. +;; Both commands still take a prefix argument, so C-u C-; r v prompts for the +;; recording location. (with-eval-after-load 'which-key (which-key-add-key-based-replacements |
