Merge branch 'obsd-master'

This commit is contained in:
Thomas Adam 2024-08-23 16:01:10 +01:00
commit 34807388b0
3 changed files with 12 additions and 5 deletions

View File

@ -498,9 +498,8 @@ input_key_vt10x(struct bufferevent *bev, key_code key)
return (0); return (0);
} }
onlykey = key & KEYC_MASK_KEY;
/* Prevent TAB and RET from being swallowed by C0 remapping logic. */ /* Prevent TAB and RET from being swallowed by C0 remapping logic. */
onlykey = key & KEYC_MASK_KEY;
if (onlykey == '\r' || onlykey == '\t') if (onlykey == '\r' || onlykey == '\t')
key &= ~KEYC_CTRL; key &= ~KEYC_CTRL;
@ -593,7 +592,7 @@ input_key(struct screen *s, struct bufferevent *bev, key_code key)
/* Is this backtab? */ /* Is this backtab? */
if ((key & KEYC_MASK_KEY) == KEYC_BTAB) { if ((key & KEYC_MASK_KEY) == KEYC_BTAB) {
if (s->mode & EXTENDED_KEY_MODES) { if ((s->mode & EXTENDED_KEY_MODES) != 0) {
/* When in xterm extended mode, remap into S-Tab. */ /* When in xterm extended mode, remap into S-Tab. */
key = '\011' | (key & ~KEYC_MASK_KEY) | KEYC_SHIFT; key = '\011' | (key & ~KEYC_MASK_KEY) | KEYC_SHIFT;
} else { } else {
@ -650,6 +649,13 @@ input_key(struct screen *s, struct bufferevent *bev, key_code key)
return (0); return (0);
} }
/* Ignore internal function key codes. */
if ((key >= KEYC_BASE && key < KEYC_BASE_END) ||
(key >= KEYC_USER && key < KEYC_USER_END)) {
log_debug("%s: ignoring key 0x%llx", __func__, key);
return (0);
}
/* /*
* No builtin key sequence; construct an extended key sequence * No builtin key sequence; construct an extended key sequence
* depending on the client mode. * depending on the client mode.

View File

@ -410,7 +410,7 @@ key_string_lookup_key(key_code key, int with_flags)
s = "MouseMoveBorder"; s = "MouseMoveBorder";
goto append; goto append;
} }
if (key >= KEYC_USER && key < KEYC_USER + KEYC_NUSER) { if (key >= KEYC_USER && key < KEYC_USER_END) {
snprintf(tmp, sizeof tmp, "User%u", (u_int)(key - KEYC_USER)); snprintf(tmp, sizeof tmp, "User%u", (u_int)(key - KEYC_USER));
strlcat(out, tmp, sizeof out); strlcat(out, tmp, sizeof out);
goto out; goto out;

3
tmux.h
View File

@ -134,6 +134,7 @@ struct winlink;
*/ */
#define KEYC_BASE 0x0000000010e000ULL #define KEYC_BASE 0x0000000010e000ULL
#define KEYC_USER 0x0000000010f000ULL #define KEYC_USER 0x0000000010f000ULL
#define KEYC_USER_END (KEYC_USER + KEYC_NUSER)
/* Key modifier bits. */ /* Key modifier bits. */
#define KEYC_META 0x00100000000000ULL #define KEYC_META 0x00100000000000ULL
@ -168,7 +169,7 @@ struct winlink;
(((key) & KEYC_MASK_KEY) < KEYC_BASE || \ (((key) & KEYC_MASK_KEY) < KEYC_BASE || \
((key) & KEYC_MASK_KEY) >= KEYC_BASE_END) && \ ((key) & KEYC_MASK_KEY) >= KEYC_BASE_END) && \
(((key) & KEYC_MASK_KEY) < KEYC_USER || \ (((key) & KEYC_MASK_KEY) < KEYC_USER || \
((key) & KEYC_MASK_KEY) >= KEYC_USER + KEYC_NUSER)) ((key) & KEYC_MASK_KEY) >= KEYC_USER_END))
/* Multiple click timeout. */ /* Multiple click timeout. */
#define KEYC_CLICK_TIMEOUT 300 #define KEYC_CLICK_TIMEOUT 300