Skip to content

Commit

Permalink
Make use of terminal application keys configurable
Browse files Browse the repository at this point in the history
adds a new setting term_appkey_mode which can enable or disable the use
of keyboard transmit (application keys) mode. Fixes irssi#430
  • Loading branch information
ailin-nemui committed Mar 22, 2016
1 parent b1ffd5f commit b9914ab
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 4 deletions.
2 changes: 2 additions & 0 deletions src/fe-text/gui-readline.c
Original file line number Diff line number Diff line change
Expand Up @@ -1060,6 +1060,7 @@ static void setup_changed(void)
paste_join_multiline = settings_get_bool("paste_join_multiline");
paste_use_bracketed_mode = settings_get_bool("paste_use_bracketed_mode");

term_set_appkey_mode(settings_get_bool("term_appkey_mode"));
/* Enable the bracketed paste mode on demand */
term_set_bracketed_paste_mode(paste_use_bracketed_mode);
}
Expand All @@ -1082,6 +1083,7 @@ void gui_readline_init(void)
g_get_current_time(&last_keypress);
input_listen_init(STDIN_FILENO);

settings_add_bool("lookandfeel", "term_appkey_mode", TRUE);
settings_add_str("history", "scroll_page_count", "/2");
settings_add_time("misc", "paste_detect_time", "5msecs");
settings_add_bool("misc", "paste_use_bracketed_mode", FALSE);
Expand Down
1 change: 1 addition & 0 deletions src/fe-text/term.h
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ void term_refresh(TERM_WINDOW *window);

void term_stop(void);

void term_set_appkey_mode(int enable);
void term_set_bracketed_paste_mode(int enable);

/* keyboard input handling */
Expand Down
23 changes: 19 additions & 4 deletions src/fe-text/terminfo-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -395,6 +395,12 @@ static void _ignore_parm(TERM_REC *term, int param)
{
}

static void terminfo_set_appkey_mode(TERM_REC *term, int set)
{
if (term->TI_smkx && term->TI_rmkx)
tput(tparm(set ? term->TI_smkx : term->TI_rmkx));
}

static void term_dec_set_bracketed_paste_mode(int enable)
{
if (enable)
Expand Down Expand Up @@ -543,8 +549,8 @@ void terminfo_cont(TERM_REC *term)
if (term->TI_smcup)
tput(tparm(term->TI_smcup));

if (term->TI_smkx)
tput(tparm(term->TI_smkx));
if (term->appkey_enabled)
terminfo_set_appkey_mode(term, TRUE);

if (term->bracketed_paste_enabled)
term_dec_set_bracketed_paste_mode(TRUE);
Expand All @@ -566,8 +572,8 @@ void terminfo_stop(TERM_REC *term)
if (term->TI_rmcup)
tput(tparm(term->TI_rmcup));

if (term->TI_rmkx)
tput(tparm(term->TI_rmkx));
if (term->appkey_enabled)
terminfo_set_appkey_mode(term, FALSE);

/* reset input settings */
terminfo_input_deinit(term);
Expand Down Expand Up @@ -695,6 +701,15 @@ static int term_setup(TERM_REC *term)
return 1;
}

void term_set_appkey_mode(int enable)
{
if (current_term->appkey_enabled == enable)
return;

current_term->appkey_enabled = enable;
terminfo_set_appkey_mode(current_term, enable);
}

void term_set_bracketed_paste_mode(int enable)
{
if (current_term->bracketed_paste_enabled == enable)
Expand Down
1 change: 1 addition & 0 deletions src/fe-text/terminfo-core.h
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ struct _TERM_REC {
const char *TI_rmkx;

/* Terminal mode states */
int appkey_enabled;
int bracketed_paste_enabled;
};

Expand Down

0 comments on commit b9914ab

Please sign in to comment.