Skip to content

Commit

Permalink
feat: add kitty keyboard set flags sequence
Browse files Browse the repository at this point in the history
  • Loading branch information
aymanbagabas committed Aug 13, 2024
1 parent 7451802 commit a29dab6
Showing 1 changed file with 41 additions and 0 deletions.
41 changes: 41 additions & 0 deletions ansi/kitty.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,47 @@ const (
// See: https://sw.kovidgoyal.net/kitty/keyboard-protocol/
const RequestKittyKeyboard = "\x1b[?u"

// KittyKeyboard returns a sequence to request keyboard enhancements from the terminal.
// The flags argument is a bitmask of the Kitty keyboard protocol flags. While
// mode specifies how the flags should be interpreted.
//
// Possible values for flags mask:
//
// 0: Disable all features
// 1: Disambiguate escape codes
// 2: Report event types
// 4: Report alternate keys
// 8: Report all keys as escape codes
// 16: Report associated text
//
// Possible values for mode:
//
// 1: Set given flags and unset all others
// 2: Set given flags and keep existing flags unchanged
// 3: Unset given flags and keep existing flags unchanged
//
// See https://sw.kovidgoyal.net/kitty/keyboard-protocol/#progressive-enhancement
func KittyKeyboard(flags, mode int) string {
return "\x1b[=" + strconv.Itoa(flags) + ";" + strconv.Itoa(mode) + "u"
}

// SetKittyKeyboard returns a sequence to set the terminal Kitty keyboard
// enhancement flags.
//
// Possible values for flags mask:
//
// 0: Disable all features
// 1: Disambiguate escape codes
// 2: Report event types
// 4: Report alternate keys
// 8: Report all keys as escape codes
// 16: Report associated text
//
// This is equivalent to KittyKeyboard(flags, 1).
func SetKittyKeyboard(flags int) string {
return KittyKeyboard(flags, 1)
}

// PushKittyKeyboard returns a sequence to push the given flags to the terminal
// Kitty Keyboard stack.
//
Expand Down

0 comments on commit a29dab6

Please sign in to comment.