Dont request release events for most kittens

They are not needed and there is always a small risk that a release
event could be delivered after the kitten has stopped reading from the
tty, thereby leaking into the environment.
This commit is contained in:
Kovid Goyal
2023-03-17 10:50:10 +05:30
parent de74b93b16
commit 509a45b579
4 changed files with 23 additions and 20 deletions

View File

@@ -151,6 +151,15 @@ func FullKeyboardProtocol(self *Loop) {
self.terminal_options.kitty_keyboard_mode = 0b11111
}
func (self *Loop) FullKeyboardProtocolWithoutReleaseEvents() *Loop {
self.terminal_options.kitty_keyboard_mode = 0b11101
return self
}
func FullKeyboardProtocolWithoutReleaseEvents(self *Loop) {
self.terminal_options.kitty_keyboard_mode = 0b11101
}
func (self *Loop) MouseTrackingMode(mt MouseTracking) *Loop {
self.terminal_options.mouse_tracking = mt
return self

View File

@@ -24,7 +24,7 @@ func new_loop() *Loop {
l := Loop{controlling_term: nil, timers_temp: make([]*timer, 4)}
l.terminal_options.alternate_screen = true
l.terminal_options.restore_colors = true
l.terminal_options.kitty_keyboard_mode = 0b11111
l.terminal_options.kitty_keyboard_mode = 0b11101 // full protocol without release and repeat events
l.escape_code_parser.HandleCSI = l.handle_csi
l.escape_code_parser.HandleOSC = l.handle_osc
l.escape_code_parser.HandleDCS = l.handle_dcs

View File

@@ -21,7 +21,7 @@ func (self *KilledBySignal) Error() string { return self.Msg }
var Canceled = errors.New("Canceled by user")
func ReadPassword(prompt string, kill_if_signaled bool) (password string, err error) {
lp, err := loop.New(loop.NoAlternateScreen, loop.NoRestoreColors)
lp, err := loop.New(loop.NoAlternateScreen, loop.NoRestoreColors, loop.FullKeyboardProtocol)
shadow := ""
if err != nil {
return