Commit 8a4fbe65 for guacamole.apache.org
commit 8a4fbe65a00016bd2469b0153179c9d21398b8a0
Merge: 0e55d414 325a6dfe
Author: Virtually Nick <vnick@apache.org>
Date: Thu Aug 6 14:49:37 2026 -0400
Merge patch branch changes to main.
diff --cc src/terminal/terminal.c
index 8aef2e23,3628e4f5..acaf4e42
--- a/src/terminal/terminal.c
+++ b/src/terminal/terminal.c
@@@ -1889,27 -1898,25 +1922,30 @@@ static int __guac_terminal_send_key(gua
return 0;
}
+ /* Up */
+ if (keysym == GUAC_TERMINAL_KEY_UP || keysym == GUAC_TERMINAL_KEY_KP_UP) {
+ guac_terminal_scroll_display_up(term, 1);
+ return 0;
+ }
+
+ /* Down */
+ if (keysym == GUAC_TERMINAL_KEY_DOWN || keysym == GUAC_TERMINAL_KEY_KP_DOWN) {
+ guac_terminal_scroll_display_down(term, 1);
+ return 0;
+ }
+
}
- /* Reset scroll */
- if (term->scroll_offset != 0)
+ /* Reset scroll, unless the pressed key produces no output (ie: is purely
+ * a modifier or lock key) */
+ if (term->scroll_offset != 0 && !__guac_terminal_is_modifier_keysym(keysym)
+ && !__guac_terminal_is_lock_keysym(keysym)) {
guac_terminal_scroll_display_down(term, term->scroll_offset);
+ }
- /*
- * Modified arrows, function keys, and cursor editing keys encode Alt
- * and Meta directly in CSI (below). For all other keys, Alt/Meta are
- * represented by prefixing ESC.
- */
- if ((term->mod_alt || term->mod_meta)
- && !__guac_terminal_is_arrow_keysym(keysym)
- && !__guac_terminal_is_function_keysym(keysym)
- && !__guac_terminal_is_editing_keysym(keysym))
- guac_terminal_send_string(term, "\x1B");
+ /* If alt being held, also send escape character */
+ if (term->mod_alt)
+ guac_terminal_send_string(term, GUAC_TERMINAL_ASCII_ESCAPE);
/* Translate Ctrl+letter to control code */
if (term->mod_ctrl) {