mirror of
https://github.com/tmux/tmux.git
synced 2026-10-15 07:44:24 +00:00
Detection, done like sync:
- ESC[?u goes to every VT100-like terminal at attach, whatever the options. - A reply turns on a new kittykeys terminal feature. Users can force it on or off with terminal-features kittykeys, including kittykeys@ to turn it off. - Changing extended-keys now takes effect immediately for attached clients (options.c). Use, per client, when extended-keys is on: Kitty for clients that have kittykeys, modifyOtherKeys for clients with extkeys, VT10x otherwise. Pane side: - Applications can request either protocol; Kitty wins if one asks for both. - Each application gets what it asked for, whichever client typed the key. - ESC[?u is answered truthfully. - The per-client gate is gone. window.c and popup.c are simply master's versions again. extended-keys always is back to its master meaning, forcing modifyOtherKeys mode 1 only. Forcing Kitty on every program would have sent bash ESC[97;5u for Ctrl-A. extended-keys-format kitty is still accepted, but now behaves the same as csi-u.
This commit is contained in:
11
window.c
11
window.c
@@ -2033,8 +2033,7 @@ window_pane_copy_paste(struct window_pane *wp, char *buf, size_t len)
|
||||
}
|
||||
|
||||
static void
|
||||
window_pane_copy_key(struct window_pane *wp, key_code key,
|
||||
int extended_encoding)
|
||||
window_pane_copy_key(struct window_pane *wp, key_code key)
|
||||
{
|
||||
struct window_pane *loop;
|
||||
|
||||
@@ -2045,7 +2044,7 @@ window_pane_copy_key(struct window_pane *wp, key_code key,
|
||||
(~loop->flags & PANE_INPUTOFF) &&
|
||||
window_pane_is_visible(loop) &&
|
||||
options_get_number(loop->options, "synchronize-panes"))
|
||||
input_key_pane(loop, key, NULL, extended_encoding);
|
||||
input_key_pane(loop, key, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2073,7 +2072,6 @@ window_pane_key(struct window_pane *wp, struct client *c, struct session *s,
|
||||
struct winlink *wl, key_code key, struct mouse_event *m)
|
||||
{
|
||||
struct window_mode_entry *wme;
|
||||
int extended_encoding;
|
||||
|
||||
if (KEYC_IS_MOUSE(key) && m == NULL)
|
||||
return (-1);
|
||||
@@ -2096,14 +2094,13 @@ window_pane_key(struct window_pane *wp, struct client *c, struct session *s,
|
||||
if (wp->fd == -1 || wp->flags & PANE_INPUTOFF)
|
||||
return (0);
|
||||
|
||||
extended_encoding = input_key_client_supports_extended(c, key);
|
||||
if (input_key_pane(wp, key, m, extended_encoding) != 0)
|
||||
if (input_key_pane(wp, key, m) != 0)
|
||||
return (-1);
|
||||
|
||||
if (KEYC_IS_MOUSE(key))
|
||||
return (0);
|
||||
if (options_get_number(wp->options, "synchronize-panes"))
|
||||
window_pane_copy_key(wp, key, extended_encoding);
|
||||
window_pane_copy_key(wp, key);
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user