diff options
author | Thomas Adam <thomas@xteddy.org> | 2022-11-01 12:01:10 +0000 |
---|---|---|
committer | Thomas Adam <thomas@xteddy.org> | 2022-11-01 12:01:10 +0000 |
commit | 36896f6dd0d49d91bcc9c398c68a33818626532c (patch) | |
tree | 81d7d54d4e135093784aa1e6c857e04b35c7b141 | |
parent | 9dd1f442c5a7f1d8d480476f11bc62cceab2019a (diff) | |
parent | 2d08235987efa1e2f9c932c4a5c8a0200b4804c1 (diff) | |
download | rtmux-36896f6dd0d49d91bcc9c398c68a33818626532c.tar.gz rtmux-36896f6dd0d49d91bcc9c398c68a33818626532c.tar.bz2 rtmux-36896f6dd0d49d91bcc9c398c68a33818626532c.zip |
Merge branch 'obsd-master'
-rw-r--r-- | cmd-find.c | 10 | ||||
-rw-r--r-- | input-keys.c | 18 | ||||
-rw-r--r-- | key-string.c | 2 | ||||
-rw-r--r-- | tmux.h | 1 | ||||
-rw-r--r-- | tty-keys.c | 5 |
5 files changed, 30 insertions, 6 deletions
@@ -587,22 +587,22 @@ cmd_find_get_pane_with_window(struct cmd_find_state *fs, const char *pane) return (-1); return (0); } else if (strcmp(pane, "{up-of}") == 0) { - fs->wp = window_pane_find_up(fs->current->wp); + fs->wp = window_pane_find_up(fs->w->active); if (fs->wp == NULL) return (-1); return (0); } else if (strcmp(pane, "{down-of}") == 0) { - fs->wp = window_pane_find_down(fs->current->wp); + fs->wp = window_pane_find_down(fs->w->active); if (fs->wp == NULL) return (-1); return (0); } else if (strcmp(pane, "{left-of}") == 0) { - fs->wp = window_pane_find_left(fs->current->wp); + fs->wp = window_pane_find_left(fs->w->active); if (fs->wp == NULL) return (-1); return (0); } else if (strcmp(pane, "{right-of}") == 0) { - fs->wp = window_pane_find_right(fs->current->wp); + fs->wp = window_pane_find_right(fs->w->active); if (fs->wp == NULL) return (-1); return (0); @@ -614,7 +614,7 @@ cmd_find_get_pane_with_window(struct cmd_find_state *fs, const char *pane) n = strtonum(pane + 1, 1, INT_MAX, NULL); else n = 1; - wp = fs->current->wp; + wp = fs->w->active; if (pane[0] == '+') fs->wp = window_pane_next_by_number(fs->w, wp, n); else diff --git a/input-keys.c b/input-keys.c index ebf61333..aa508028 100644 --- a/input-keys.c +++ b/input-keys.c @@ -306,6 +306,20 @@ static struct input_key_entry input_key_defaults[] = { }, { .key = KEYC_DC|KEYC_BUILD_MODIFIERS, .data = "\033[3;_~" + }, + + /* Tab and modifiers. */ + { .key = '\011'|KEYC_CTRL, + .data = "\011" + }, + { .key = '\011'|KEYC_CTRL|KEYC_EXTENDED, + .data = "\033[9;5u" + }, + { .key = '\011'|KEYC_CTRL|KEYC_SHIFT, + .data = "\011" + }, + { .key = '\011'|KEYC_CTRL|KEYC_SHIFT|KEYC_EXTENDED, + .data = "\033[1;5Z" } }; static const key_code input_key_modifiers[] = { @@ -468,6 +482,8 @@ input_key(struct screen *s, struct bufferevent *bev, key_code key) key &= ~KEYC_KEYPAD; if (~s->mode & MODE_KCURSOR) key &= ~KEYC_CURSOR; + if (~s->mode & MODE_KEXTENDED) + key &= ~KEYC_EXTENDED; ike = input_key_get(key); if (ike == NULL && (key & KEYC_META) && (~key & KEYC_IMPLIED_META)) ike = input_key_get(key & ~KEYC_META); @@ -475,6 +491,8 @@ input_key(struct screen *s, struct bufferevent *bev, key_code key) ike = input_key_get(key & ~KEYC_CURSOR); if (ike == NULL && (key & KEYC_KEYPAD)) ike = input_key_get(key & ~KEYC_KEYPAD); + if (ike == NULL && (key & KEYC_EXTENDED)) + ike = input_key_get(key & ~KEYC_EXTENDED); if (ike != NULL) { log_debug("found key 0x%llx: \"%s\"", key, ike->data); if ((key & KEYC_META) && (~key & KEYC_IMPLIED_META)) diff --git a/key-string.c b/key-string.c index 0ca91306..086c3ac4 100644 --- a/key-string.c +++ b/key-string.c @@ -460,6 +460,8 @@ out: strlcat(out, "I", sizeof out); if (saved & KEYC_BUILD_MODIFIERS) strlcat(out, "B", sizeof out); + if (saved & KEYC_EXTENDED) + strlcat(out, "E", sizeof out); strlcat(out, "]", sizeof out); } return (out); @@ -138,6 +138,7 @@ struct winlink; #define KEYC_IMPLIED_META 0x08000000000000ULL #define KEYC_BUILD_MODIFIERS 0x10000000000000ULL #define KEYC_VI 0x20000000000000ULL +#define KEYC_EXTENDED 0x40000000000000ULL /* Masks for key bits. */ #define KEYC_MASK_MODIFIERS 0x00f00000000000ULL @@ -208,6 +208,9 @@ static const struct tty_default_key_raw tty_default_raw_keys[] = { /* Paste keys. */ { "\033[200~", KEYC_PASTE_START }, { "\033[201~", KEYC_PASTE_END }, + + /* Extended keys. */ + { "\033[1;5Z", '\011'|KEYC_CTRL|KEYC_SHIFT|KEYC_EXTENDED }, }; /* Default xterm keys. */ @@ -974,7 +977,7 @@ tty_keys_extended_key(struct tty *tty, const char *buf, size_t len, log_debug("%s: extended key %.*s is %llx (%s)", c->name, (int)*size, buf, nkey, key_string_lookup_key(nkey, 1)); } - *key = nkey; + *key = nkey|KEYC_EXTENDED; return (0); } |