mirror of
https://github.com/junegunn/fzf.git
synced 2025-12-18 10:25:58 +08:00
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 defc6dd568/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.
This commit is contained in:
106
src/options.go
106
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":
|
||||
|
||||
Reference in New Issue
Block a user