Package: libvte9 Version: 1:0.28.2-5 Severity: normal Tags: patch Dear Maintainer,
When in the alternate buffer, scrolling is not possible (and is disabled, in fact). But the Shift+Up and Shift+Down key presses, which usually scroll the screen up and down by a single line, are still stolen by libvte. This deprives applications that use the alternate buffer of them. By way of an example, you can use C-S-up and C-S-down in emacs to select blocks of text (just as C-up and C-down are bound to move to previous/next paragraph). This is no longer possible in any terminal that uses libvte9, such as xfce4-terminal. Since the alternate buffer doesn't provide scrolling anyway, it would seem reasonable to pass these key presses to the terminal in this case. This behaviour can be seen demonstrated by mintty (a Windows-based terminal emulator) and works very nicely. It works so nicely, in fact, that it wasn't until I realised I couldn't use C-S-up/down in emacs at home that I realised I had been using these key presses at work for different purposes in the normal/alternate buffers! The accompanying patch causes libvte9 not to process the Shift+Up/Down key presses when the alternate screen is being used. -- System Information: Debian Release: jessie/sid APT prefers unstable APT policy: (500, 'unstable'), (1, 'experimental') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 3.11-2-amd64 (SMP w/4 CPU cores) Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Versions of packages libvte9 depends on: ii libatk1.0-0 2.10.0-2 ii libc6 2.17-96 ii libcairo2 1.12.16-2 ii libfontconfig1 2.11.0-1 ii libfreetype6 2.4.9-1.1 ii libgdk-pixbuf2.0-0 2.28.2-1 ii libglib2.0-0 2.36.4-1 ii libgtk2.0-0 2.24.22-1 ii libncurses5 5.9+20130608-1 ii libpango-1.0-0 1.36.0-1 ii libpangocairo-1.0-0 1.36.0-1 ii libpangoft2-1.0-0 1.36.0-1 ii libtinfo5 5.9+20130608-1 ii libvte-common 1:0.28.2-5 ii libx11-6 2:1.6.2-1 ii libxext6 2:1.3.2-1 libvte9 recommends no packages. libvte9 suggests no packages. -- no debconf information
--- vte-0.28.2.old/src/vte.c 2013-11-25 22:58:04.000000000 +0000 +++ vte-0.28.2.new/src/vte.c 2013-11-25 23:31:33.828377940 +0000 @@ -5408,8 +5408,11 @@ /* Keypad/motion keys. */ case GDK_KEY (KP_Up): case GDK_KEY (Up): + /* only steal key press when not in alternate screen, + * which can't scroll */ if (modifiers & GDK_CONTROL_MASK - && modifiers & GDK_SHIFT_MASK) { + && modifiers & GDK_SHIFT_MASK + && terminal->pvt->screen != &terminal->pvt->alternate_screen) { vte_terminal_scroll_lines(terminal, -1); scrolled = TRUE; handled = TRUE; @@ -5418,8 +5421,11 @@ break; case GDK_KEY (KP_Down): case GDK_KEY (Down): + /* only steal key press when not in alternate screen, + * which can't scroll */ if (modifiers & GDK_CONTROL_MASK - && modifiers & GDK_SHIFT_MASK) { + && modifiers & GDK_SHIFT_MASK + && terminal->pvt->screen != &terminal->pvt->alternate_screen) { vte_terminal_scroll_lines(terminal, 1); scrolled = TRUE; handled = TRUE;