mirror of
https://github.com/tmux/tmux.git
synced 2025-01-14 20:58:53 +00:00
Apply the xterm key flag when needed for send-keys, fixes problem
reported by Franky Spamschleuder.
This commit is contained in:
parent
1e376be13d
commit
a00b0d13ed
@ -64,6 +64,8 @@ cmd_send_keys_inject(struct client *c, struct cmdq_item *item, key_code key)
|
|||||||
struct key_binding *bd, bd_find;
|
struct key_binding *bd, bd_find;
|
||||||
|
|
||||||
if (wp->mode == NULL || wp->mode->key_table == NULL) {
|
if (wp->mode == NULL || wp->mode->key_table == NULL) {
|
||||||
|
if (options_get_number(wp->window->options, "xterm-keys"))
|
||||||
|
key |= KEYC_XTERM;
|
||||||
window_pane_key(wp, NULL, s, key, NULL);
|
window_pane_key(wp, NULL, s, key, NULL);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -177,7 +177,7 @@ input_key(struct window_pane *wp, key_code key, struct mouse_event *m)
|
|||||||
* If this is a normal 7-bit key, just send it, with a leading escape
|
* If this is a normal 7-bit key, just send it, with a leading escape
|
||||||
* if necessary. If it is a UTF-8 key, split it and send it.
|
* if necessary. If it is a UTF-8 key, split it and send it.
|
||||||
*/
|
*/
|
||||||
justkey = (key & ~KEYC_ESCAPE);
|
justkey = (key & ~(KEYC_XTERM|KEYC_ESCAPE));
|
||||||
if (justkey <= 0x7f) {
|
if (justkey <= 0x7f) {
|
||||||
if (key & KEYC_ESCAPE)
|
if (key & KEYC_ESCAPE)
|
||||||
bufferevent_write(wp->event, "\033", 1);
|
bufferevent_write(wp->event, "\033", 1);
|
||||||
|
4
tmux.h
4
tmux.h
@ -94,8 +94,8 @@ struct tmuxproc;
|
|||||||
|
|
||||||
/* Key modifier bits. */
|
/* Key modifier bits. */
|
||||||
#define KEYC_ESCAPE 0x200000000000ULL
|
#define KEYC_ESCAPE 0x200000000000ULL
|
||||||
#define KEYC_CTRL 0x400000000000ULL
|
#define KEYC_CTRL 0x400000000000ULL
|
||||||
#define KEYC_SHIFT 0x800000000000ULL
|
#define KEYC_SHIFT 0x800000000000ULL
|
||||||
#define KEYC_XTERM 0x1000000000000ULL
|
#define KEYC_XTERM 0x1000000000000ULL
|
||||||
|
|
||||||
/* Mask to obtain key w/o modifiers. */
|
/* Mask to obtain key w/o modifiers. */
|
||||||
|
2
window.c
2
window.c
@ -1226,7 +1226,7 @@ window_pane_key(struct window_pane *wp, struct client *c, struct session *s,
|
|||||||
if (wp->mode != NULL) {
|
if (wp->mode != NULL) {
|
||||||
wp->modelast = time(NULL);
|
wp->modelast = time(NULL);
|
||||||
if (wp->mode->key != NULL)
|
if (wp->mode->key != NULL)
|
||||||
wp->mode->key(wp, c, s, key, m);
|
wp->mode->key(wp, c, s, (key & ~KEYC_XTERM), m);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user