59 lines
1.3 KiB
Go
59 lines
1.3 KiB
Go
package harness
|
|
|
|
import "fmt"
|
|
|
|
func EncodeChord(name string) ([]byte, error) {
|
|
switch name {
|
|
case "ctrl-k":
|
|
return []byte{0x0b}, nil
|
|
case "ctrl-k-kitty":
|
|
return []byte("\x1b[107;5u"), nil
|
|
case "ctrl-k-xterm":
|
|
return []byte("\x1b[27;5;107~"), nil
|
|
case "enter":
|
|
return []byte{'\r'}, nil
|
|
case "escape":
|
|
return []byte{0x1b}, nil
|
|
case "backspace":
|
|
return []byte{0x7f}, nil
|
|
case "up":
|
|
return []byte("\x1b[A"), nil
|
|
case "down":
|
|
return []byte("\x1b[B"), nil
|
|
case "left":
|
|
return []byte("\x1b[D"), nil
|
|
case "right":
|
|
return []byte("\x1b[C"), nil
|
|
case "ctrl-n":
|
|
return []byte{0x0e}, nil
|
|
case "ctrl-p":
|
|
return []byte{0x10}, nil
|
|
case "ctrl-u":
|
|
return []byte{0x15}, nil
|
|
case "ctrl-a":
|
|
return []byte{0x01}, nil
|
|
case "ctrl-d":
|
|
return []byte{0x04}, nil
|
|
case "ctrl-s":
|
|
return []byte{0x13}, nil
|
|
case "ctrl-w":
|
|
return []byte{0x17}, nil
|
|
case "ctrl-r":
|
|
return []byte{0x12}, nil
|
|
case "ctrl-b":
|
|
return []byte{0x02}, nil
|
|
case "tab":
|
|
return []byte{'\t'}, nil
|
|
case "space":
|
|
return []byte{' '}, nil
|
|
case "wheel-up":
|
|
// SGR-encoded scroll-wheel up at row/col 1,1. patterm enables
|
|
// 1006 mouse mode while a scratchpad is focused, so this is the
|
|
// form the host terminal would deliver.
|
|
return []byte("\x1b[<64;1;1M"), nil
|
|
case "wheel-down":
|
|
return []byte("\x1b[<65;1;1M"), nil
|
|
}
|
|
return nil, fmt.Errorf("unknown chord %q", name)
|
|
}
|