Add rxvt-unicode-sgr; proper mouse reporting

This commit is contained in:
Von Random 2017-11-21 19:46:08 +03:00
parent 6b4a64a07a
commit d1022352c0
5 changed files with 208 additions and 0 deletions

91
rxvt-unicode-sgr/PKGBUILD Normal file
View file

@ -0,0 +1,91 @@
# $Id$
# Maintainer: Sébastien Luttringer
# Contributor: Angel Velasquez <angvp@archlinux.org>
# Contributor: tobias <tobias@archlinux.org>
# Contributor: dibblethewrecker dibblethewrecker.at.jiwe.dot.org
pkgbase=rxvt-unicode
pkgname=('rxvt-unicode-sgr' 'rxvt-unicode-terminfo')
pkgver=9.22
pkgrel=2
arch=('i686' 'x86_64')
url='http://software.schmorp.de/pkg/rxvt-unicode.html'
license=('GPL')
makedepends=('libxft' 'perl' 'startup-notification')
source=(
"http://dist.schmorp.de/rxvt-unicode/$pkgname-$pkgver.tar.bz2"
'urxvt.desktop'
'urxvtc.desktop'
'urxvt-tabbed.desktop'
'urxvt-sgr.patch'
)
md5sums=('93782dec27494eb079467dacf6e48185'
'fec94dc986fa37ec380079d81de3e0b2'
'fac55f0a8404c86dad3e702146762332'
'8a5599197568c63720e282b9722a7990'
'f8325b0a33999db4d5d1eeac4f320156')
build() {
cd $pkgname-$pkgver
patch -p0 < ../urxvt-sgr.patch
# we disable smart-resize (FS#34807)
# do not specify --with-terminfo (FS#46424)
./configure \
--prefix=/usr \
--enable-256-color \
--enable-combining \
--enable-fading \
--enable-font-styles \
--enable-iso14755 \
--enable-keepscrolling \
--enable-lastlog \
--enable-mousewheel \
--enable-next-scroll \
--enable-perl \
--enable-pointer-blank \
--enable-rxvt-scroll \
--enable-selectionscrolling \
--enable-slipwheeling \
--disable-smart-resize \
--enable-startup-notification \
--enable-transparency \
--enable-unicode3 \
--enable-utmp \
--enable-wtmp \
--enable-xft \
--enable-xim \
--enable-xterm-scroll \
--disable-pixbuf \
--disable-frills
make
}
package_rxvt-unicode() {
pkgdesc='A unicode enabled rxvt-clone terminal emulator (urxvt)'
provides='rxvt-unicode'
conflicts='rxvt-unicode'
depends=('rxvt-unicode-terminfo' 'libxft' 'perl' 'startup-notification')
optdepends=('gtk2-perl: to use the urxvt-tabbed')
# install freedesktop menu
for _f in urxvt urxvtc urxvt-tabbed; do
install -Dm644 $_f.desktop "$pkgdir/usr/share/applications/$_f.desktop"
done
cd $pkgname-$pkgver
# workaround terminfo installation
export TERMINFO="$srcdir/terminfo"
install -d "$TERMINFO"
make DESTDIR="$pkgdir" install
# install the tabbing wrapper ( requires gtk2-perl! )
sed -i 's/\"rxvt\"/"urxvt"/' doc/rxvt-tabbed
install -Dm 755 doc/rxvt-tabbed "$pkgdir/usr/bin/urxvt-tabbed"
}
package_rxvt-unicode-terminfo() {
pkgdesc='Terminfo files for urxvt'
conflict=('rxvt-unicode<=9.18-6')
install -dm 755 "$pkgdir/usr/share/"
mv terminfo "$pkgdir/usr/share/"
}
# vim:set ts=2 sw=2 et:

View file

@ -0,0 +1,90 @@
--- src/command.C 2014-12-13 13:22:09.000000000 +0100
+++ src/command.C 2016-01-13 04:50:39.161862513 +0100
@@ -1280,6 +1280,8 @@
int x, y;
int code = 32;
+ if (priv_modes & PrivMode_ExtMouseSgr) code = 0;
+
x = Pixel2Col (ev.x) + 1;
y = Pixel2Row (ev.y) + 1;
@@ -1293,11 +1295,18 @@
code += 32;
}
- if (MEvent.button == AnyButton)
+ if (!(priv_modes & PrivMode_ExtMouseSgr) && MEvent.button == AnyButton)
button_number = 3;
else
{
- button_number = MEvent.button - Button1;
+ if (ev.type == MotionNotify) {
+ if (ev.state & Button1Mask) button_number = 0;
+ else if (ev.state & Button2Mask) button_number = 1;
+ else if (ev.state & Button3Mask) button_number = 2;
+ else return;
+ } else {
+ button_number = ev.button - Button1;
+ }
/* add 0x3D for wheel events, like xterm does */
if (button_number >= 3)
button_number += 64 - 3;
@@ -1347,16 +1356,22 @@
#endif
#if ENABLE_FRILLS
+ if (priv_modes & PrivMode_ExtMouseSgr)
+ tt_printf ("\033[<%d;%d;%d%c",
+ code + button_number + key_state,
+ x,
+ y,
+ (ev.type == ButtonRelease ? 'm' : 'M'));
- if (priv_modes & PrivMode_ExtMouseRight)
+ else if (priv_modes & PrivMode_ExtMouseRight)
tt_printf ("\033[%d;%d;%dM",
code + button_number + key_state,
x,
y);
else if (priv_modes & PrivMode_ExtModeMouse)
tt_printf ("\033[M%c%lc%lc",
code + button_number + key_state,
wint_t (32 + x),
wint_t (32 + y));
else
#endif
tt_printf ("\033[M%c%c%c",
@@ -2908,7 +2913,7 @@
scr_soft_reset ();
static const int pm_h[] = { 7, 25 };
- static const int pm_l[] = { 1, 3, 4, 5, 6, 9, 66, 1000, 1001, 1005, 1015, 1049 };
+ static const int pm_l[] = { 1, 3, 4, 5, 6, 9, 66, 1000, 1001, 1002, 1003, 1005, 1006, 1015, 1049 };
process_terminal_mode ('h', 0, ecb_array_length (pm_h), pm_h);
process_terminal_mode ('l', 0, ecb_array_length (pm_l), pm_l);
@@ -3713,13 +3718,14 @@
{ 1002, PrivMode_MouseBtnEvent },
{ 1003, PrivMode_MouseAnyEvent },
#if ENABLE_FRILLS
{ 1005, PrivMode_ExtModeMouse },
+ { 1006, PrivMode_ExtMouseSgr },
#endif
{ 1010, PrivMode_TtyOutputInh }, // rxvt extension
{ 1011, PrivMode_Keypress }, // rxvt extension
#if ENABLE_FRILLS
{ 1015, PrivMode_ExtMouseRight }, // urxvt extension of 1005
#endif
// 1035 enable modifiers for alt, numlock NYI
// 1036 send ESC for meta keys NYI
// 1037 send DEL for keypad delete NYI
--- src/rxvt.h 2014-12-17 16:33:08.000000000 +0100
+++ src/rxvt.h 2016-01-13 03:42:31.508911380 +0100
@@ -644,6 +644,7 @@
#define PrivMode_ExtModeMouse (1UL<<23) // xterm pseudo-utf-8 hack
#define PrivMode_ExtMouseRight (1UL<<24) // xterm pseudo-utf-8, but works in non-utf-8-locales
#define PrivMode_BlinkingCursor (1UL<<25)
+#define PrivMode_ExtMouseSgr (1UL<<26) // sgr mouse extension
#define PrivMode_mouse_report (PrivMode_MouseX10|PrivMode_MouseX11|PrivMode_MouseBtnEvent|PrivMode_MouseAnyEvent)

View file

@ -0,0 +1,9 @@
[Desktop Entry]
Version=1.0
Name=urxvt (tabbed)
Comment=An unicode capable and tabbed rxvt clone
Exec=urxvt-tabbed
Icon=utilities-terminal
Terminal=false
Type=Application
Categories=System;TerminalEmulator;

View file

@ -0,0 +1,9 @@
[Desktop Entry]
Version=1.0
Name=urxvt
Comment=An unicode capable rxvt clone
Exec=urxvt
Icon=utilities-terminal
Terminal=false
Type=Application
Categories=System;TerminalEmulator;

View file

@ -0,0 +1,9 @@
[Desktop Entry]
Version=1.0
Name=urxvt (client)
Comment=An unicode capable rxvt clone client for urxvtd
Exec=urxvtc
Icon=utilities-terminal
Terminal=false
Type=Application
Categories=System;TerminalEmulator;