From 09fd7f0294f975f53f72bc3551099f968341419e Mon Sep 17 00:00:00 2001 From: Igor Soarez Date: Mon, 5 Oct 2026 16:20:06 +0300 Subject: Caps Lock no longer types into Neovim Caps Lock sends F20, and the terminal passes it on as well as Wispr Flow seeing it. tmux reads it as S-F10 and hands the pane ESC[21;2~, which Neovim decodes as and, with nothing mapped to it, types out as text -- once per repeat while the key is held. Dropped in both places, each enough alone: Neovim maps and to nothing, terminal mode included so a :terminal does not pass it to its shell, and tmux binds S-F10 to an empty command, which also swallows a real Shift+F10 that nothing here uses. The empty binding loads on tmux 3.5a and 3.4. From change request cee596. --- config/tmux.conf | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'config/tmux.conf') diff --git a/config/tmux.conf b/config/tmux.conf index 913a968..ceb59e6 100644 --- a/config/tmux.conf +++ b/config/tmux.conf @@ -155,6 +155,12 @@ set -g allow-passthrough on # See: https://github.com/ghostty-org/ghostty/issues/7997 set -g extended-keys off +# Caps Lock is F20 (hammerspoon). What reaches tmux for it is read as S-F10 and +# passed on as ESC[21;2~, which Neovim takes for F22 and types out as text. Wispr +# Flow reads the key before the terminal does, so nothing here needs it: drop it. +# This also drops a real Shift+F10. +bind-key -n S-F10 {} + # Machine-local overrides, where a machine has any: ~/.tmux.conf.local, a real # file in no repo, like ~/.localprofile for the shell. Not under ~/.config/tmux, # which is a link into this repo. Last, so it wins over everything above, -- cgit v1.2.3