From 9ed971cc90c9d65def3c52178578e43f29b68f9f Mon Sep 17 00:00:00 2001 From: Massimo Mund Date: Fri, 5 Sep 2025 07:56:51 +0200 Subject: Add keybindings for CTRL, ALT, SHIFT + UP, DOWN, RIGHT, LEFT, HOME, END, BACKSPACE, DELETE & more (#3996) * Added tests for `LightRenderer` * Added common SHIFT, ALT and ALT+SHIFT key sequences * Added common CTRL key sequences * Added common CTRL+ALT, CTRL+SHIFT, CTRL+ALT+SHIFT key sequences * Added proper xterm META modifier handling according to https://github.com/joejulian/xterm/blob/defc6dd5684a12dc8e56cb6973ef973e7a32caa3/input.c#L357-L375 * Fix `ctrl-backspace` and `ctrl-alt-backspace` * Fix broken tcell tests on windows by swallowing Resize events * Added tests for FullscreenRenderer * Removed own fork of tcell and updated tcell to 2.9.0 tcell 2.9.0 is needed for `Ctrl-Alt-*` and `Ctrl-Alt-Shift-*` shortcuts in Windows * Replace conditional checks with switch statements to improve readability * Replace long conditionals with constant slices to improve readability * Bind `ctrl-bspace` (`ctrl-h`) to `backward-delete-char` by default Since we now distinguish between Backspace and Ctrl-Backspace, Ctrl-Backspace should trigger the same action as Backspace by default. In that way nothing changes for the user but you can bind other actions to Ctrl-Backspace when desired. --- man/man1/fzf.1 | 112 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 109 insertions(+), 3 deletions(-) (limited to 'man/man1') diff --git a/man/man1/fzf.1 b/man/man1/fzf.1 index 67fc1684..e8d33642 100644 --- a/man/man1/fzf.1 +++ b/man/man1/fzf.1 @@ -1473,12 +1473,22 @@ e.g. .br \fIalt\-right\fR .br -\fIalt\-enter\fR +\fIalt\-home\fR .br -\fIalt\-space\fR +\fIalt\-end\fR .br \fIalt\-backspace\fR (\fIalt\-bspace\fR \fIalt\-bs\fR) .br +\fIalt\-delete\fR +.br +\fIalt\-page\-up\fR +.br +\fIalt\-page\-down\fR +.br +\fIalt\-enter\fR +.br +\fIalt\-space\fR +.br \fItab\fR .br \fIshift\-tab\fR (\fIbtab\fR) @@ -1505,6 +1515,26 @@ e.g. .br \fIpage\-down\fR (\fIpgdn\fR) .br +\fIctrl\-up\fR +.br +\fIctrl\-down\fR +.br +\fIctrl\-left\fR +.br +\fIctrl\-right\fR +.br +\fIctrl\-home\fR +.br +\fIctrl\-end\fR +.br +\fIctrl\-backspace\fR (\fIctrl\-bspace\fR \fIctrl\-bs\fR) +.br +\fIctrl\-delete\fR +.br +\fIctrl\-page\-up\fR +.br +\fIctrl\-page\-down\fR +.br \fIshift\-up\fR .br \fIshift\-down\fR @@ -1513,8 +1543,16 @@ e.g. .br \fIshift\-right\fR .br +\fIshift\-home\fR +.br +\fIshift\-end\fR +.br \fIshift\-delete\fR .br +\fIshift\-page\-up\fR +.br +\fIshift\-page\-down\fR +.br \fIalt\-shift\-up\fR .br \fIalt\-shift\-down\fR @@ -1523,6 +1561,72 @@ e.g. .br \fIalt\-shift\-right\fR .br +\fIalt\-shift\-home\fR +.br +\fIalt\-shift\-end\fR +.br +\fIalt\-shift\-delete\fR +.br +\fIalt\-shift\-page\-up\fR +.br +\fIalt\-shift\-page\-down\fR +.br +\fIctrl\-alt\-up\fR +.br +\fIctrl\-alt\-down\fR +.br +\fIctrl\-alt\-left\fR +.br +\fIctrl\-alt\-right\fR +.br +\fIctrl\-alt\-home\fR +.br +\fIctrl\-alt\-end\fR +.br +\fIctrl\-alt\-backspace\fR (\fIctrl\-alt\-bspace\fR \fIctrl\-alt\-bs\fR) +.br +\fIctrl\-alt\-delete\fR +.br +\fIctrl\-alt\-page\-up\fR +.br +\fIctrl\-alt\-page\-down\fR +.br +\fIctrl\-shift\-up\fR +.br +\fIctrl\-shift\-down\fR +.br +\fIctrl\-shift\-left\fR +.br +\fIctrl\-shift\-right\fR +.br +\fIctrl\-shift\-home\fR +.br +\fIctrl\-shift\-end\fR +.br +\fIctrl\-shift\-delete\fR +.br +\fIctrl\-shift\-page\-up\fR +.br +\fIctrl\-shift\-page\-down\fR +.br +\fIctrl\-alt\-shift\-up\fR +.br +\fIctrl\-alt\-shift\-down\fR +.br +\fIctrl\-alt\-shift\-left\fR +.br +\fIctrl\-alt\-shift\-right\fR +.br +\fIctrl\-alt\-shift\-home\fR +.br +\fIctrl\-alt\-shift\-end\fR +.br +\fIctrl\-alt\-shift\-delete\fR +.br +\fIctrl\-alt\-shift\-page\-up\fR +.br +\fIctrl\-alt\-shift\-page\-down\fR +.br \fIleft\-click\fR .br \fIright\-click\fR @@ -1547,6 +1651,8 @@ e.g. .br or any single character +Note that some terminal emulators may not support \fIctrl-*\fR bindings. + .SS AVAILABLE EVENTS: \fIstart\fR .RS @@ -1699,7 +1805,7 @@ A key or an event can be bound to one or more of the following actions. \fBaccept\-non\-empty\fR (same as \fBaccept\fR except that it prevents fzf from exiting without selection) \fBaccept\-or\-print\-query\fR (same as \fBaccept\fR except that it prints the query when there's no match) \fBbackward\-char\fR \fIctrl\-b left\fR - \fBbackward\-delete\-char\fR \fIctrl\-h bspace\fR + \fBbackward\-delete\-char\fR \fIctrl\-h ctrl\-bspace bspace\fR \fBbackward\-delete\-char/eof\fR (same as \fBbackward\-delete\-char\fR except aborts fzf if query is empty) \fBbackward\-kill\-word\fR \fIalt\-bs\fR \fBbackward\-word\fR \fIalt\-b shift\-left\fR -- cgit v1.2.3