Skip to content

Commit

Permalink
Ignore internal function keys if they have not got an entry in the key
Browse files Browse the repository at this point in the history
table.
  • Loading branch information
nicm committed Aug 23, 2024
1 parent 6e9a914 commit 08be883
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 5 deletions.
12 changes: 9 additions & 3 deletions input-keys.c
Original file line number Diff line number Diff line change
Expand Up @@ -499,9 +499,8 @@ input_key_vt10x(struct bufferevent *bev, key_code key)
return (0);
}

onlykey = key & KEYC_MASK_KEY;

/* Prevent TAB and RET from being swallowed by C0 remapping logic. */
onlykey = key & KEYC_MASK_KEY;
if (onlykey == '\r' || onlykey == '\t')
key &= ~KEYC_CTRL;

Expand Down Expand Up @@ -594,7 +593,7 @@ input_key(struct screen *s, struct bufferevent *bev, key_code key)

/* Is this backtab? */
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. */
key = '\011' | (key & ~KEYC_MASK_KEY) | KEYC_SHIFT;
} else {
Expand Down Expand Up @@ -651,6 +650,13 @@ input_key(struct screen *s, struct bufferevent *bev, key_code key)
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
* depending on the client mode.
Expand Down
2 changes: 1 addition & 1 deletion key-string.c
Original file line number Diff line number Diff line change
Expand Up @@ -410,7 +410,7 @@ key_string_lookup_key(key_code key, int with_flags)
s = "MouseMoveBorder";
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));
strlcat(out, tmp, sizeof out);
goto out;
Expand Down
3 changes: 2 additions & 1 deletion tmux.h
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,7 @@ struct winlink;
*/
#define KEYC_BASE 0x0000000010e000ULL
#define KEYC_USER 0x0000000010f000ULL
#define KEYC_USER_END (KEYC_USER + KEYC_NUSER)

/* Key modifier bits. */
#define KEYC_META 0x00100000000000ULL
Expand Down Expand Up @@ -159,7 +160,7 @@ struct winlink;
(((key) & KEYC_MASK_KEY) < KEYC_BASE || \
((key) & KEYC_MASK_KEY) >= KEYC_BASE_END) && \
(((key) & KEYC_MASK_KEY) < KEYC_USER || \
((key) & KEYC_MASK_KEY) >= KEYC_USER + KEYC_NUSER))
((key) & KEYC_MASK_KEY) >= KEYC_USER_END))

/* Multiple click timeout. */
#define KEYC_CLICK_TIMEOUT 300
Expand Down

0 comments on commit 08be883

Please sign in to comment.