summaryrefslogtreecommitdiff
path: root/src/options.go
diff options
context:
space:
mode:
authorMassimo Mund <masmu@users.noreply.github.com>2025-09-05 07:56:51 +0200
committerGitHub <noreply@github.com>2025-09-05 14:56:51 +0900
commit9ed971cc90c9d65def3c52178578e43f29b68f9f (patch)
tree3a25368d44d6091c83e21623b313886bdfa1700b /src/options.go
parent129cb230781d0258cd837486e436ba9ad471bc89 (diff)
downloadfzf-9ed971cc90c9d65def3c52178578e43f29b68f9f.tar.gz
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.
Diffstat (limited to 'src/options.go')
-rw-r--r--src/options.go106
1 files changed, 104 insertions, 2 deletions
diff --git a/src/options.go b/src/options.go
index e15d43d6..f8cb578f 100644
--- a/src/options.go
+++ b/src/options.go
@@ -974,8 +974,6 @@ func parseKeyChords(str string, message string) (map[tui.Event]string, []tui.Eve
add(tui.Backspace)
case "ctrl-space":
add(tui.CtrlSpace)
- case "ctrl-delete":
- add(tui.CtrlDelete)
case "ctrl-^", "ctrl-6":
add(tui.CtrlCaret)
case "ctrl-/", "ctrl-_":
@@ -1022,6 +1020,10 @@ func parseKeyChords(str string, message string) (map[tui.Event]string, []tui.Eve
list = append(list, evt)
case "alt-bs", "alt-bspace", "alt-backspace":
add(tui.AltBackspace)
+ case "ctrl-bs", "ctrl-bspace", "ctrl-backspace":
+ add(tui.CtrlBackspace)
+ case "ctrl-alt-bs", "ctrl-alt-bspace", "ctrl-alt-backspace":
+ add(tui.CtrlAltBackspace)
case "alt-up":
add(tui.AltUp)
case "alt-down":
@@ -1030,6 +1032,16 @@ func parseKeyChords(str string, message string) (map[tui.Event]string, []tui.Eve
add(tui.AltLeft)
case "alt-right":
add(tui.AltRight)
+ case "alt-home":
+ add(tui.AltHome)
+ case "alt-end":
+ add(tui.AltEnd)
+ case "alt-delete":
+ add(tui.AltDelete)
+ case "alt-page-up":
+ add(tui.AltPageUp)
+ case "alt-page-down":
+ add(tui.AltPageDown)
case "tab":
add(tui.Tab)
case "btab", "shift-tab":
@@ -1056,6 +1068,88 @@ func parseKeyChords(str string, message string) (map[tui.Event]string, []tui.Eve
add(tui.AltShiftLeft)
case "alt-shift-right", "shift-alt-right":
add(tui.AltShiftRight)
+ case "alt-shift-home", "shift-alt-home":
+ add(tui.AltShiftHome)
+ case "alt-shift-end", "shift-alt-end":
+ add(tui.AltShiftEnd)
+ case "alt-shift-delete", "shift-alt-delete":
+ add(tui.AltShiftDelete)
+ case "alt-shift-page-up", "shift-alt-page-up":
+ add(tui.AltShiftPageUp)
+ case "alt-shift-page-down", "shift-alt-page-down":
+ add(tui.AltShiftPageDown)
+ case "ctrl-up":
+ add(tui.CtrlUp)
+ case "ctrl-down":
+ add(tui.CtrlDown)
+ case "ctrl-right":
+ add(tui.CtrlRight)
+ case "ctrl-left":
+ add(tui.CtrlLeft)
+ case "ctrl-home":
+ add(tui.CtrlHome)
+ case "ctrl-end":
+ add(tui.CtrlEnd)
+ case "ctrl-delete":
+ add(tui.CtrlDelete)
+ case "ctrl-page-up":
+ add(tui.CtrlPageUp)
+ case "ctrl-page-down":
+ add(tui.CtrlPageDown)
+ case "ctrl-alt-up", "alt-ctrl-up":
+ add(tui.CtrlAltUp)
+ case "ctrl-alt-down", "alt-ctrl-down":
+ add(tui.CtrlAltDown)
+ case "ctrl-alt-right", "alt-ctrl-right":
+ add(tui.CtrlAltRight)
+ case "ctrl-alt-left", "alt-ctrl-left":
+ add(tui.CtrlAltLeft)
+ case "ctrl-alt-home", "alt-ctrl-home":
+ add(tui.CtrlAltHome)
+ case "ctrl-alt-end", "alt-ctrl-end":
+ add(tui.CtrlAltEnd)
+ case "ctrl-alt-delete", "alt-ctrl-delete":
+ add(tui.CtrlAltDelete)
+ case "ctrl-alt-page-up", "alt-ctrl-page-up":
+ add(tui.CtrlAltPageUp)
+ case "ctrl-alt-page-down", "alt-ctrl-page-down":
+ add(tui.CtrlAltPageDown)
+ case "ctrl-shift-up", "shift-ctrl-up":
+ add(tui.CtrlShiftUp)
+ case "ctrl-shift-down", "shift-ctrl-down":
+ add(tui.CtrlShiftDown)
+ case "ctrl-shift-right", "shift-ctrl-right":
+ add(tui.CtrlShiftRight)
+ case "ctrl-shift-left", "shift-ctrl-left":
+ add(tui.CtrlShiftLeft)
+ case "ctrl-shift-home", "shift-ctrl-home":
+ add(tui.CtrlShiftHome)
+ case "ctrl-shift-end", "shift-ctrl-end":
+ add(tui.CtrlShiftEnd)
+ case "ctrl-shift-delete", "shift-ctrl-delete":
+ add(tui.CtrlShiftDelete)
+ case "ctrl-shift-page-up", "shift-ctrl-page-up":
+ add(tui.CtrlShiftPageUp)
+ case "ctrl-shift-page-down", "shift-ctrl-page-down":
+ add(tui.CtrlShiftPageDown)
+ case "ctrl-alt-shift-up":
+ add(tui.CtrlAltShiftUp)
+ case "ctrl-alt-shift-down":
+ add(tui.CtrlAltShiftDown)
+ case "ctrl-alt-shift-right":
+ add(tui.CtrlAltShiftRight)
+ case "ctrl-alt-shift-left":
+ add(tui.CtrlAltShiftLeft)
+ case "ctrl-alt-shift-home":
+ add(tui.CtrlAltShiftHome)
+ case "ctrl-alt-shift-end":
+ add(tui.CtrlAltShiftEnd)
+ case "ctrl-alt-shift-delete":
+ add(tui.CtrlAltShiftDelete)
+ case "ctrl-alt-shift-page-up":
+ add(tui.CtrlAltShiftPageUp)
+ case "ctrl-alt-shift-page-down":
+ add(tui.CtrlAltShiftPageDown)
case "shift-up":
add(tui.ShiftUp)
case "shift-down":
@@ -1064,8 +1158,16 @@ func parseKeyChords(str string, message string) (map[tui.Event]string, []tui.Eve
add(tui.ShiftLeft)
case "shift-right":
add(tui.ShiftRight)
+ case "shift-home":
+ add(tui.ShiftHome)
+ case "shift-end":
+ add(tui.ShiftEnd)
case "shift-delete":
add(tui.ShiftDelete)
+ case "shift-page-up":
+ add(tui.ShiftPageUp)
+ case "shift-page-down":
+ add(tui.ShiftPageDown)
case "left-click":
add(tui.LeftClick)
case "right-click":