diff --git a/CHANGELOG.md b/CHANGELOG.md index f01548e5..a890e244 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -95,6 +95,9 @@ * Ignore auto-detected URLs that overlap with OSC-8 URLs. * Default value for the `notify` option to use `-a ${app-id} -i ${app-id} ...` instead of `-a foot -i foot ...`. +* `scrollback-*`+`pipe-scrollback` key bindings are now passed through + to the client application when the alt screen is active + (https://codeberg.org/dnkl/foot/issues/573). ### Deprecated diff --git a/input.c b/input.c index 96c41a15..707c23f1 100644 --- a/input.c +++ b/input.c @@ -88,28 +88,46 @@ execute_binding(struct seat *seat, struct terminal *term, return true; case BIND_ACTION_SCROLLBACK_UP_PAGE: - cmd_scrollback_up(term, term->rows); - return true; + if (term->grid == &term->normal) { + cmd_scrollback_up(term, term->rows); + return true; + } + break; case BIND_ACTION_SCROLLBACK_UP_HALF_PAGE: - cmd_scrollback_up(term, max(term->rows / 2, 1)); - return true; + if (term->grid == &term->normal) { + cmd_scrollback_up(term, max(term->rows / 2, 1)); + return true; + } + break; case BIND_ACTION_SCROLLBACK_UP_LINE: - cmd_scrollback_up(term, 1); - return true; + if (term->grid == &term->normal) { + cmd_scrollback_up(term, 1); + return true; + } + break; case BIND_ACTION_SCROLLBACK_DOWN_PAGE: - cmd_scrollback_down(term, term->rows); - return true; + if (term->grid == &term->normal) { + cmd_scrollback_down(term, term->rows); + return true; + } + break; case BIND_ACTION_SCROLLBACK_DOWN_HALF_PAGE: - cmd_scrollback_down(term, max(term->rows / 2, 1)); - return true; + if (term->grid == &term->normal) { + cmd_scrollback_down(term, max(term->rows / 2, 1)); + return true; + } + break; case BIND_ACTION_SCROLLBACK_DOWN_LINE: - cmd_scrollback_down(term, 1); - return true; + if (term->grid == &term->normal) { + cmd_scrollback_down(term, 1); + return true; + } + break; case BIND_ACTION_CLIPBOARD_COPY: selection_to_clipboard(seat, term, serial); @@ -165,6 +183,9 @@ execute_binding(struct seat *seat, struct terminal *term, return true; case BIND_ACTION_PIPE_SCROLLBACK: + if (term->grid == &term->alt) + break; + /* FALLTHROUGH */ case BIND_ACTION_PIPE_VIEW: case BIND_ACTION_PIPE_SELECTED: { if (pipe_argv == NULL)